#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; #define FOR(k,a,b) for(int k(a); k < (b); ++k) #define FORD(k,a,b) for(int k(b-1); k >= (a); --k) #define REP(k,a) for(int k=0; k < (a); ++k) #define ABS(a) ((a)>0?(a):-(a)) const int MM = 1e7+1; int divi[MM]; LL res[MM]; inline LL getRes(int a) { if(res[a]==-1) { int tmp = a ; while(tmp%divi[a]==0) { tmp/=divi[a]; } if(tmp == 1) { return res[a]=getRes(a/divi[a])*divi[a]*divi[a]-divi[a]+1; } else { return res[a]=getRes(tmp)*getRes(a/tmp); } } return res[a]; } int main(int argc, char** argv) { memset(divi,0,sizeof divi); memset(res,-1,sizeof res); res[1]=1; FOR(i,2,MM) { if(!divi[i]) { divi[i]=i; int j=2*i; while(j