malteklaes/cpp-code-code_search_net-style huggingface dataset:
#include <bits/stdc++.h>   using namespace std;   int ans[2010][2], n;   bool vis[510][510];   bool query(int x1, int y1, int x2, int y2) {     printf( ? %d %d %d %d n , x1, y1, x2, y2);     fflush(stdout);     char ch[5];     scanf( %s , ch);     if (ch[0] ==  Y )       return 1;     else       return 0;   }   void out() {     int x = 1, y = 1;     printf( !  );     while ((x != n) || (y != n)) {       if ((x != n) && (vis[x + 1][y])) {         printf( D );         x++;       } else {         printf( R );         y++;       }     }     printf(  n );     fflush(stdout);   }   int main() {     int now = 1;     scanf( %d , &n);     int x = 1, y = 1;     memset(vis, 0, sizeof(vis));     vis[0][0] = 1;     vis[n][n] = 1;     ans[1][0] = 1;     ans[1][1] = 1;     while (x + y <= n) {       bool flag = query(x + 1, y, n, n);       if (flag) {         x++;         vis[x][y] = 1;       } else {         y++;         vis[x][y] = 1;       }       now++;       ans[now][0] = x;       ans[now][1] = y;     }     x = n;     y = n;     now--;     while (x + y > n + 1) {       if (query(ans[now][0], ans[now][1], x, y - 1))         y--;       else         x--;       vis[x][y] = 1;       now--;     }     out();     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     int n, k;     scanf( %d%d , &n, &k);     int width = 2 * k + 1;     if (width >= n) {       printf( 1 n );       printf( %d , n / 2 + n % 2);       return 0;     }     if (n % width == 0) {       printf( %d n , n / width);       for (int out = k + 1; out <= n; out += width) {         printf( %d  , out);       }       return 0;     }     vector<int> v;     for (int i = 1, rest; i <= k; ++i) {       rest = n - i - k;       if (rest % width > k || rest % width == 0) {         for (int out = i; out <= n; out += width) {           v.push_back(out);         }         break;       }     }     printf( %d n , v.size());     for (int i = 0; i < v.size(); ++i) {       printf( %d  , v[i]);     }   }
#include <bits/stdc++.h>   using namespace std;   int n, k;   long long m, f[1005][105][2];   long long dfs(int Index, int y, int now, int flag) {     if (Index > n) return (flag == 0);     if (f[Index][y][flag] != -1) return f[Index][y][flag];     int st = Index == n ? 1 : 0, y1;     long long res = 0;     for (int i = st; i <= 9; i++) {       y1 = (y + now * i % k) % k;       res =           (res + dfs(Index + 1, y1, now * 10 % k, (flag && (y1 != 0 || !i)))) % m;     }     f[Index][y][flag] = res;     return res;   }   int main() {     scanf( %d %d %lld , &n, &k, &m);     memset(f, -1, sizeof f);     printf( %lld n , dfs(1, 0, 1, 1));     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int arr[100001];   int a, b, n, best;   int main() {     bool dima = true;     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       scanf( %d%d , &a, &b);       arr[a] = b;     }     for (int i = 0; i < 100001; ++i) {       if (arr[i] > 0)         if (arr[i] > best)           best = arr[i];         else {           dima = false;           break;         }     }     if (dima)       printf( Poor Alex );     else       printf( Happy Alex );   }
#include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;   struct P {     long long x, y;     P() {}     P(long long x, long long y) : x(x), y(y) {}     P rotate() { return P(-y, x); }     P operator-(const P& rhs) const { return P(x - rhs.x, y - rhs.y); }     long long operator*(const P& rhs) const { return x * rhs.x + y * rhs.y; }     bool operator==(const P& rhs) const { return x == rhs.x && y == rhs.y; }   };   bool judge(P& u, P& v) {     if (v == P(0, 0)) return u == P(0, 0);     long long w = v.x * v.x + v.y * v.y;     return u * v % w == 0 && u * v.rotate() % w == 0;   }   P a, b, c;   int main() {     ios_base::sync_with_stdio(0);     while (cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y) {       bool ok = false;       for (int i = 0; i < 4; ++i) {         P d = b - a;         if (judge(d, c)) {           ok = true;           break;         }         a = a.rotate();       }       cout << (ok ?  YES  :  NO ) <<   n ;     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int gcd(int x, int y) {     if (y == 0) return x;     return gcd(y, x % y);   }   int lcm(int x, int y) { return x * y / gcd(x, y); }   long long int gcd(long long int x, long long int y) {     if (y == 0) return x;     return gcd(y, x % y);   }   long long int lcm(long long int x, long long int y) {     return x * y / gcd(x, y);   }   void swap(long long int& x, long long int& y) {     long long int temp = x;     x = y;     y = temp;   }   long long int binpow(long long int a, long long int b) {     long long int res = 1;     while (b > 0) {       if (b & 1) res = res * a;       a = a * a;       b >>= 1;     }     return res;   }   long long int binpowM(long long int a, long long int b) {     a %= 100000007;     long long int res = 1;     while (b > 0) {       if (b & 1) res = res * a % 100000007;       a = a * a % 100000007;       b >>= 1;     }     return res;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     cout << fixed;     int n, ans = 0, k;     cin >> n;     vector<int> a(3);     for (int i = 0; i < 3; i++) {       cin >> a[i];     }     sort(a.begin(), a.end(), greater<int>());     int i = 0, j, l = n / a[1], m = n / a[0];     while (i <= m) {       j = 0;       while (j <= l) {         k = n - i * a[0] - j * a[1];         if (k % a[2] == 0) {           ans = max(i + j + k / a[2], ans);         }         j++;       }       i++;     }     cout << ans << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int MAXN = 100000 + 10;   long long A, B, N;   long long l, t, m;   int main() {     cin >> A >> B >> N;     for (int i = 1; i <= N; i++) {       cin >> l >> t >> m;       if (t < A + (l - 1) * B) {         cout << -1 << endl;         continue;       }       long long L = 1, R = 10000000, M;       while (L <= R) {         M = (L + R) / 2;         if ((2 * A + (l + M - 2) * B) * (M - l + 1) > t * m * 2)           R = M - 1;         else           L = M + 1;       }       cout << min(R, (t - A + B) / B) << endl;     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int MAX = 305;   bool u[301][301][30][8];   int a[500][500], t[40], n;   int dx[8] = {-1, -1, 0, 1, 1, 1, 0, -1};   int dy[8] = {0, 1, 1, 1, 0, -1, -1, -1};   void dfs(int x, int y, int z, int w) {     if (z >= n) return;     if (u[x][y][z][w]) return;     u[x][y][z][w] = true;     for (int i = 1; i <= t[z]; i++) {       x += dx[w];       y += dy[w];       a[x][y]++;     }     dfs(x, y, z + 1, (w + 1) % 8);     dfs(x, y, z + 1, (w + 7) % 8);   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) {       scanf( %d , &t[i]);     }     dfs(150, 150, 0, 0);     int ans = 0;     for (int i = 0; i <= 301; i++) {       for (int j = 0; j <= 301; j++) {         if (a[i][j]) ans++;       }     }     printf( %d n , ans);   }
#include <bits/stdc++.h>   using namespace std;   const int N = 265000;   int n, q, a[N];   double s;   int main() {     scanf( %d%d , &n, &q);     for (int i = (0); i <= (int)(1 << n) - 1; i++) scanf( %d , &a[i]), s += a[i];     printf( %.10lf n , 1.0 * s / (1 << n));     for (int i = (1); i <= (int)q; i++) {       int x, y;       scanf( %d%d , &x, &y);       s += y - a[x];       a[x] = y;       printf( %.10lf n , 1.0 * s / (1 << n));     }   }
#include <bits/stdc++.h>   using namespace std;   int n, p, q, r, now;   int a[500050], b[500050], c[500050], id[500050], mxx[500050], mxy[500050];   long long ans;   struct seg {     int mark[500050 << 2], mx[500050 << 2], mn[500050 << 2];     long long sum[500050 << 2];     void push_up(int id) {       sum[id] = sum[id << 1] + sum[id << 1 | 1];       mx[id] = max(mx[id << 1], mx[id << 1 | 1]);       mn[id] = min(mn[id << 1], mn[id << 1 | 1]);     }     void make_con(int l, int r, int id, int val) {       mark[id] = val;       sum[id] = 1ll * val * (r - l + 1);       mx[id] = mn[id] = val;     }     void push_down(int l, int r, int id) {       if (mark[id]) {         int m = l + r >> 1;         make_con(l, m, id << 1, mark[id]);         make_con(m + 1, r, id << 1 | 1, mark[id]);         mark[id] = 0;       }     }     void modify(int L, int R, int val, int l, int r, int id) {       if (r < L || R < l) return;       if (L <= l && r <= R) {         make_con(l, r, id, val);         return;       }       push_down(l, r, id);       int m = l + r >> 1;       modify(L, R, val, l, m, id << 1);       modify(L, R, val, m + 1, r, id << 1 | 1);       push_up(id);     }     long long sumquery(int L, int R, int l, int r, int id) {       if (r < L || R < l) return 0;       if (L <= l && r <= R) {         return sum[id];       }       push_down(l, r, id);       int m = l + r >> 1;       return sumquery(L, R, l, m, id << 1) +              sumquery(L, R, m + 1, r, id << 1 | 1);     }     int lquery(int val, int l, int r, int id) {       if (l == r) return l;       push_down(l, r, id);       int m = l + r >> 1;       if (mn[id << 1] < val) return lquery(val, l, m, id << 1);       return lquery(val, m + 1, r, id << 1 | 1);     }     int rquery(int val, int l, int r, int id) {       if (l == r) return l;       push_down(l, r, id);       int m = l + r >> 1;       if (mx[id << 1 | 1] >= val) return rquery(val, m + 1, r, id << 1 | 1);       return rquery(val, l, m, id << 1);     }   } ST;   bool cmp(int x, int y) { return a[x] < a[y]; }   void modify(int x, int y) {     if (ST.mn[1] >= y) return;     int l = ST.lquery(y, 1, q, 1);     if (l <= x) ST.modify(l, x, y, 1, q, 1);   }   long long query(int x, int y) {     long long rtn = 1ll * (q - x + 1) * (r - y + 1);     if (ST.mx[1] < y) return rtn;     int r = ST.rquery(y, 1, q, 1);     if (x <= r) rtn -= ST.sumquery(x, r, 1, q, 1) - 1ll * (r - x + 1) * (y - 1);     return rtn;   }   int main() {     scanf( %d %d %d %d , &n, &p, &q, &r);     for (int i = 0; i < n; i++) {       scanf( %d %d %d , &a[i], &b[i], &c[i]);       id[i] = i;     }     sort(id, id + n, cmp);     mxx[n] = mxy[n] = 1;     for (int i = n - 1; i >= 0; i--) {       mxx[i] = max(mxx[i + 1], b[id[i]] + 1);       mxy[i] = max(mxy[i + 1], c[id[i]] + 1);     }     for (int i = 1; i <= p; i++) {       while (now < n && a[id[now]] < i) modify(b[id[now]], c[id[now]]), now++;       ans += query(mxx[now], mxy[now]);     }     printf( %I64d n , ans);   }
#include <bits/stdc++.h>   using namespace std;   int n;   int info[200005], sz[200005], Prev[200005 << 1], to[200005 << 1],       cst[200005 << 1], cnt_e;   void Node(int u, int v, int c) {     Prev[++cnt_e] = info[u], info[u] = cnt_e, to[cnt_e] = v, cst[cnt_e] = c;   }   long long G, B;   void dfs(int u, int ff) {     sz[u] = 1;     for (int i = info[u], v; i; i = Prev[i])       if ((v = to[i]) != ff) {         dfs(v, u), sz[u] += sz[v];         G += (sz[v] & 1) * cst[i], B += 1ll * cst[i] * min(sz[v], 2 * n - sz[v]);       }   }   int main() {     int T;     scanf( %d , &T);     for (; T--;) {       scanf( %d , &n);       for (int i = 1, u, v, c; i < 2 * n; i++)         scanf( %d%d%d , &u, &v, &c), Node(u, v, c), Node(v, u, c);       B = G = 0, dfs(1, 0);       for (int i = 1; i <= 2 * n; i++) info[i] = 0;       cnt_e = 0;       printf( %lld %lld n , G, B);     }   }
#include <bits/stdc++.h>   using namespace std;   signed main() {     long long n, k;     scanf( %lld%lld , &n, &k);     long long coin = 0, sum = 0;     for (long long i = 1; i <= k; i++) {       long long a, b;       scanf( %lld%lld , &a, &b);       sum = (sum + a * b) % n;       coin += b;     }     if (coin > n) {       printf( -1 );       return 0;     }     if (coin < n) {       printf( 1 );       return 0;     }     if (sum == n * (n + 1) / 2 % n) {       printf( 1 );       return 0;     }     printf( -1 );     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int mod = 1000000009, N = 4005;   int cal[N][N], fac[N];   inline int add(int a, int b) {     if (a < 0) a += mod;     if (b < 0) b += mod;     int ret = a + b;     if (ret >= mod)       return ret %= mod;     else       return ret;   }   inline int mul(int a, int b) {     if (a < 0) a += mod;     if (b < 0) b += mod;     long long ret = (long long)a * b;     if (ret >= mod)       return ret % mod;     else       return ret;   }   int main() {     memset(cal, 0, sizeof(cal));     cal[0][0] = 1;     fac[0] = 1;     for (int i = 1; i < N; i++) {       fac[i] = mul(fac[i - 1], i);       cal[i][0] = cal[i][i] = 1;       for (int j = 1; j < i; j++) {         cal[i][j] = add(cal[i - 1][j], cal[i - 1][j - 1]);       }     }     int n, a, b, ans = 0;     scanf( %d%d%d , &n, &a, &b);     for (int i = 1; i < n - 1; i++) {       for (int j = i + 2; j <= n; j++) {         int cntb = j - i - 1, cnta = n - cntb;         if (cntb > b) break;         if (cnta > a) continue;         ans = add(ans, mul(mul(cal[a - 1][cnta - 1], fac[a]),                            mul(cal[b - 1][cntb - 1], fac[b])));       }     }     printf( %d n , ans);     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int mx = 5005;   int type[mx], dp[mx];   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int n, m;     cin >> n >> m;     for (int i = 1; i <= n; i++) {       double x;       cin >> type[i] >> x;     }     for (int i = 1; i <= n; i++) {       int j = type[i];       for (int k = j; k >= 1; k--) dp[j] = max(dp[j], 1 + dp[k]);     }     int ret = 0;     for (int i = 1; i <= n; i++) ret = max(ret, dp[i]);     cout << n - ret << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   using ll = long long;   using ull = unsigned long long;   using ld = long double;   using pii = pair<int, int>;   using pll = pair<ll, ll>;   using pci = pair<char, int>;   using vi = vector<int>;   using vll = vector<ll>;   using vpii = vector<pii>;   const ll infll = 1e18 + 3;   const int maxn = 1e6 + 77;   const int nmax = 1e6 + 77;   const ll basell = 1e18 + 3;   const int mod = 1e9 + 7;   const ld eps = 1e-7;   const int inf = 1009000999;   const int nv = 100505;   const int baseint = 1000200013;   const ld PI = acos(-1.0);   inline bool EQ(ld a, ld b) { return fabs(a - b) < 1e-9; }   struct lis {     int x, y, z;   };   vector<lis> ans;   int vis[2 * nv];   int used[2 * nv];   vi g[2 * nv];   int h[2 * nv];   void dfs(int v, int p) {     vis[v] = 1;     vector<int> q;     for (int u : g[v]) {       if (u == p) continue;       if (!vis[u]) {         h[u] = h[v] + 1;         dfs(u, v);         if (!used[u]) q.push_back(u);       } else {         if (h[u] > h[v]) q.push_back(u);       }     }     for (int i = 0; i + 1 < ((int)(q).size()); i += 2) {       ans.push_back({q[i], v, q[i + 1]});     }     if (((int)(q).size()) % 2 == 1 && p != -1) {       ans.push_back({q.back(), v, p});       used[v] = 1;     }   }   int inline solve() {     ios::sync_with_stdio(NULL), cin.tie(NULL), cout.tie(NULL);     ;     int n, m;     cin >> n >> m;     for (int i = 0; i < m; ++i) {       int a, b;       cin >> a >> b;       g[a - 1].push_back(b - 1);       g[b - 1].push_back(a - 1);     }     for (int i = 0; i < n; ++i) {       if (!vis[i]) dfs(i, -1);     }     cout << ((int)(ans).size()) <<   n ;     for (lis u : ans) cout << u.x + 1 <<     << u.y + 1 <<     << u.z + 1 <<   n ;     return 0;   }   int32_t main() {     solve();     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int n;   string s;   vector<string> text;   vector<int> lens;   bool check(int w) {     int c = 0, lines = 1;     for (int i = 0; i < (int)(lens).size(); i++) {       if (lens[i] > w) return false;       if (c + lens[i] > w) {         lines++;         i--;         c = 0;       } else         c += lens[i];     }     return lines <= n;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cin >> n;     while (cin >> s) text.push_back(s);     int c;     for (int i = 0; i < (int)(text).size(); i++) {       c = 0;       for (int j = 0; j < (int)(text[i]).size(); j++) {         c++;         if (text[i][j] ==     || text[i][j] ==  - ) {           lens.push_back(c);           c = 0;         }       }       if (c) {         if (i != (int)(text).size() - 1)           lens.push_back(c + 1);         else           lens.push_back(c);       }     }     int s = 0, e = 1e9, mid;     while (e - s > 1) {       mid = (s + e) >> 1;       if (check(mid))         e = mid;       else         s = mid;     }     cout << e <<   n ;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   long long ans = 0;   int n;   long long a[200200];   long long mn = 21000000000;   int main() {     cin >> n;     for (int i = 0; i < n; i++) {       cin >> a[i];       mn = min(mn, a[i]);     }     int id;     for (int i = n - 1; i >= 0; i--) {       if (a[i] == mn) {         id = i;         break;       }     }     for (int i = 0; i < n; i++) {       ans += mn;       a[i] -= mn;     }     long long s = 0, c = -1;     for (int i = (id + 1) % n; i != id; i = (i + 1) % n) {       if (a[i] == 0) {         c = max(c, s);         s = 0LL;         a[i]--;       } else {         s++;       }     }     c = max(c, s);     cout << ans + c << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int v[200003],mMst[200003],mMdr[200003],Mmst[200003],Mmdr[200003];   int aib[200003];   int lsb (int x)   {       return x&-x;   }   void reset ()   {       for(int i=1;i<=200000;++i)           aib[i]=0;   }   void upd (int pz, int val)   {       for(int i=pz;i<=200000;i+=lsb(i))           aib[i]+=val;   }   int query (int pz)   {       int rz=0;       for(int i=pz;i>0;i-=lsb(i))           rz+=aib[i];       return rz;   }   int main()   {       ios_base::sync_with_stdio(false);       #ifdef HOME       ifstream cin( date.in );       ofstream cout( date.out );       #endif // HOME       long long t,a,k,x,b,i,n,j;       cin>>n;       for(i=1;i<=n;++i)           cin>>v[i];       /// <= - > la st:       for(i=1;i<=n;++i)       {           mMst[i]=query(v[i]);           upd(v[i],2);           int pz=0;           int pas=(1<<17);           while(pas)           {               if(pz+pas<=200000 && aib[pz+pas]==0)                   pz+=pas;               pas>>=1;           }           upd(pz+1,-1);       }       reset();       for(i=n;i>=1;--i)       {           mMdr[i]=query(v[i]);           upd(v[i],2);           int pz=0;           int pas=(1<<17);           while(pas)           {               if(pz+pas<=200000 && aib[pz+pas]==0)                   pz+=pas;               pas>>=1;           }           upd(pz+1,-1);       }       reset();       for(i=1;i<=n;++i)           v[i]=n+1-v[i];       for(i=1;i<=n;++i)       {           Mmst[i]=query(v[i]);           upd(v[i],2);           int pz=0;           int pas=(1<<17);           while(pas)           {               if(pz+pas<=200000 && aib[pz+pas]==0)                   pz+=pas;               pas>>=1;           }           upd(pz+1,-1);       }       reset();       for(i=n;i>=1;--i)       {           Mmdr[i]=query(v[i]);           upd(v[i],2);           int pz=0;           int pas=(1<<17);           while(pas)           {               if(pz+pas<=200000 && aib[pz+pas]==0)                   pz+=pas;               pas>>=1;           }           upd(pz+1,-1);       }       for(i=1;i<=n;++i)       {           int a=mMst[i]+mMdr[i];           int rz=a/2;           a=Mmst[i]+Mmdr[i];           rz=max(rz,(a+1)/2);           cout<<rz<<   ;       }       return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int N = 131072 | 5, mod = 998244353;   int add(int x, int y) { return (x += y) >= mod ? x - mod : x; }   void ADD(int &x, int y) { (x += y) >= mod ? x -= mod : 0; }   int qpow(int a, int b) {     int ans = 1;     for (; b >= 1; b >>= 1, a = (long long)a * a % mod)       if (b & 1) ans = (long long)ans * a % mod;     return ans;   }   int rev[N], W[N];   int getn(int len) {     int n = 1;     while (n < len) n <<= 1;     return n;   }   void prework(int n) {     for (int i = 1; i < n; i <<= 1) {       W[i] = 1;       int w = qpow(3, (mod - 1) / (i << 1));       for (int j = 1; j < i; j++) W[i + j] = (long long)W[i + j - 1] * w % mod;     }   }   void NTT(vector<int> &a, int n, int op) {     a.resize(n);     for (int i = 1; i < n; i++)       if (i < (rev[i] = (rev[i >> 1] >> 1) | (i & 1 ? n >> 1 : 0)))         swap(a[i], a[rev[i]]);     for (int i = 1; i < n; i <<= 1) {       for (int j = 0; j < n; j += i << 1) {         for (int k = 0; k < i; k++) {           int q = (long long)W[i + k] * a[j + k + i] % mod;           a[j + k + i] = add(a[j + k], mod - q);           ADD(a[j + k], q);         }       }     }     if (op == 1) return;     reverse(a.begin() + 1, a.end());     int inv = mod - (mod - 1) / n;     for (int i = 0; i <= n - 1; ++i) a[i] = (long long)a[i] * inv % mod;   }   vector<int> operator*(vector<int> a, vector<int> b) {     int t = a.size() + b.size() - 1, n = getn(t);     NTT(a, n, 1);     NTT(b, n, 1);     for (int i = 0; i <= n - 1; ++i) a[i] = (long long)a[i] * b[i] % mod;     NTT(a, n, -1);     a.resize(t);     return a;   }   vector<int> fix(vector<int> a, int n) {     a.resize(n);     return a;   }   vector<int> Inv(vector<int> a) {     int sz = a.size();     vector<int> c(1, qpow(a[0], mod - 2)), t;     for (int i = 1; i < sz; i <<= 1) {       NTT(t = fix(a, i << 1), i << 2, 1);       NTT(c, i << 2, 1);       for (int j = 0; j < (i << 2); j++)         c[j] = (2 * c[j] - (long long)t[j] * c[j] % mod * c[j] % mod + mod) % mod;       NTT(c, i << 2, -1);       c.resize(i << 1);     }     c.resize(sz);     return c;   }   int main() {     int n;     scanf( %d , &n);     const int m = max(n + 1, 32);     vector<int> a = {0,         0,   0,  24,  4,        144, mod - 4, 348,                      mod - 128, 240, 28, 188, mod - 68, 16,  0,       4};     vector<int> b = {1,        0,       mod - 4, mod - 8, 1,        mod - 16,                      10,       mod - 4, 12,      48,      mod - 26, 44,                      mod - 15, 16,      4,       4,       1};     a.resize(m);     b.resize(m);     prework(2 * m);     a = a * Inv(b);     printf( %d n , a[n]);     return 0;   }