#include <iostream> #include <iomanip> using namespace std; struct LL { int num[50]; int len; }; LL count[51][51]; LL total[51]; LL operator+(const LL& a, const LL& b) { LL c; int Len = a.len>b.len?a.len:b.len; int jin = 0; for(int i=0;i<Len;i++) { c.num[i] = jin; jin = 0; if(i<a.len) c.num[i] += a.num[i]; if(i<b.len) c.num[i] += b.num[i]; jin = c.num[i]/1000000; c.num[i]%=1000000; } c.len = Len; if(jin) { c.num[Len] = jin; c.len++; } return c; } LL operator*(const LL& a, int num) { LL c; int Len = a.len; int jin = 0; for(int i=0;i<Len;i++) { c.num[i] = jin; jin = 0; c.num[i]+=a.num[i]*num; jin = c.num[i]/1000000; c.num[i]%=1000000; } c.len = Len; if(jin) { c.num[Len] = jin; c.len++; } return c; } ostream& operator<<(ostream& out, const LL& a) { out << a.num[a.len-1]; for(int i=a.len-2;i>=0;i--) { out << setfill('0') << setw(6) << a.num[i]; } return out; } int main() { count[1][0].num[0] = 1; count[1][0].len = 1; total[1].num[0] = 1; total[1].len = 1; for(int i=2;i<51;i++) { total[i] = count[i][0] = count[i-1][0] * i; for(int j=1;j<i;j++) { count[i][j] = (count[i-1][j-1]+count[i-1][j]) * (i-j); total[i]=total[i]+count[i][j]; } } int P; cin >> P; while(P--) { int k; cin >> k; cout << total[k] << endl; } }