#include "Gaoj.h"
#include "prime.h"
//高精类缺省构造函数把对象初始为0,所以total为0
/*
 *res是存i^(2的乘方数)的结果
 *ans是高精度数的数组存储i^m的结果
 *total存储最终的结果
 */
int w,wei;

int main(){
    mynumtotal,res,ans[10000];
    int m,n,d,p;
    cin>>m>>n>>w;
    if(w%4==0)wei=w/4;
    else wei=w/4+1;
    for(inti=2;i<=n;++i){           //据说++i比i++快
        if(prime[i]!=0){            //判断素数 
            res=i;                  //res初始为i^1,不知道什么方法能快一些
            ans[i]=1;               //ans[i]初始为1
            p=m;                    //每次循环开始前复位
            while(p>0){
                while(p%2==0){
                    res*=res;       //如果该2进制位为0则res=res^2,而不必把res乘到结果里 
                    p/=2;
                }
                ans[i]*=res;        //将res乘到ans[i]里
                res*=res;           //res=res^2
                p/=2;
            }
        }else{                                               
            d=2;
            while(i%d!=0) d=prime[d];  //找i的最小素因数
            ans[i]=ans[d]*ans[i/d];       //根据 若a*b=c  则  c^m=a^m *b^m
        }
        total+=ans[i];              //累加结果
    }
    ++total;                       //total加一 
    cout<<total<<endl; 
    system("PAUSE");
    return 0;
}