// luogu-judger-enable-o2 #include #include #include #include #include #include #include int CacheSize=10;//try to use the cache struct BigInt { bool f; std::vector num; static const int base=100000000; BigInt() { f=0; num.push_back(0); } void format() { while(num.size()>1&&num[num.size()-1]==0) num.erase(num.end()-1); if(num.size()==1&&num[0]==0) f=0; } //Input and Output char* c_str() { char *p; p=new char[num.size()*8+16]; memset(p,0,sizeof(p)); if(f) sprintf(p,"-"); sprintf(p,"%s%d",p,num[num.size()-1]); for(int i=num.size()-2;i>=0;i--) sprintf(p,"%s%08d",p,num[i]); return p; } BigInt operator=(int v) { f=0; if(v<0) { f=1; v=-v; } std::queue q; if(v==0) q.push(0); else while(v>0) { q.push(v%base); v/=base; } num.resize(q.size()); for(int i=0;q.size()>0;i++) { num[i]=q.front(); q.pop(); } return *this; } BigInt operator+(BigInt& b) { format(); b.format(); BigInt c; int t=0,t2=std::max(num.size(),b.num.size())+1; c.num.resize(t2); memset(&c.num[0],0,t2*4); for(int i=0;i0) { t+=c.num[k]; c.num[k++]=t%base; t/=base; } } c.f=(f!=b.f); c.format(); return c; } }; using namespace std; int main() { BigInt res,t,t2; t=1; int n; scanf("%d",&n); for(int i=1;i<=n;i++) { t2=i; t=t*t2; res=res+t; } printf("%s\n",res.c_str()); return 0; }