malteklaes/cpp-code-code_search_net-style huggingface dataset:
#include <bits/stdc++.h>   using namespace std;   long long n, m, ps[69][69];   bitset<69> a[69];   long long sm(long long y1, long long x1, long long y2, long long x2) {     return max(ps[y2][x2] - ps[y1 - 1][x2] - ps[y2][x1 - 1] + ps[y1 - 1][x1 - 1],                0ll);   }   int main() {     long long t, rr, i, j;     string s;     bool bad;     scanf( %lld , &t);     for (rr = 0; rr < t; rr++) {       scanf( %lld%lld , &n, &m);       for (i = 1; i <= n; i++) {         cin >> s;         for (j = 1; j <= m; j++) {           a[i][j] = s[j - 1] ==  A ;           ps[i][j] = ps[i - 1][j] + ps[i][j - 1] - ps[i - 1][j - 1] + a[i][j];         }       }       bad = 1;       for (i = 2; i < n; i++) {         if (sm(i, 1, i, m) == m) {           bad = 0;         }       }       for (i = 2; i < m; i++) {         if (sm(1, i, n, i) == n) {           bad = 0;         }       }       if (sm(1, 1, n, m) == n * m) {         printf( 0 n );       } else if (sm(1, 1, 1, m) == m || sm(1, 1, n, 1) == n ||                  sm(n, 1, n, m) == m || sm(1, m, n, m) == n) {         printf( 1 n );       } else if (a[1][1] || a[1][m] || a[n][1] || a[n][m] || !bad) {         printf( 2 n );       } else if (sm(1, 2, 1, m - 1) > 0 || sm(2, 1, n - 1, 1) > 0 ||                  sm(n, 2, n, m - 1) > 0 || sm(2, m, n - 1, m) > 0) {         printf( 3 n );       } else if (sm(1, 1, n, m)) {         printf( 4 n );       } else {         printf( MORTAL n );       }     }   }
#include <bits/stdc++.h>   using namespace std;   const int INF = 0x3f3f3f3f;   const long long LINF = 0x3f3f3f3f3f3f3f3f;   const int MOD = (int)1e9 + 7;   const int N = (int)1e6 + 7;   int n, k;   int a[N], bit[N];   map<int, int> cnt[11];   long long dp[N][11];   void Init() {     for (int i = (1); i < (11); ++i) cnt[i].clear();     for (int i = (0); i < (n); ++i) scanf( %d , a + i);     for (int i = (0); i < (n); ++i) {       int x = a[i];       bit[i] = 0;       while (x) {         bit[i]++;         x /= 10;       }     }   }   int Solve() {     for (int i = (0); i < (n); ++i) {       cnt[bit[i]][a[i] % k]++;       dp[i][0] = a[i] % k;       for (int j = (1); j < (11); ++j) dp[i][j] = dp[i][j - 1] * 10 % k;     }     long long ans = 0;     for (int i = (0); i < (n); ++i) {       for (int j = (1); j < (11); ++j) {         if (bit[i] == j && (dp[i][j] + a[i]) % k == 0) --ans;         int t = k - dp[i][j] != k ? k - dp[i][j] : 0;         if (cnt[j].count(t)) ans += cnt[j][t];       }     }     return !printf( %lld n , ans);   }   int main() {     while (~scanf( %d%d , &n, &k)) {       Init();       Solve();     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     int a, b, c;     cin >> a >> b >> c;     c *= 2;     int d = a / c;     if (d > 1) d -= 1;     int e = b / c;     if (e > 1) e -= 1;     int res = d * e;     if (!res % 2)       cout <<  Second n ;     else       cout <<  First n ;   }
#include <bits/stdc++.h>   using namespace std;   const int maxn = 55;   const int M = 1000000007;   int n, p, c[maxn];   long long ans = 0, pw[maxn], od[maxn], ev[maxn], f[maxn][maxn][maxn][maxn];   void init() {     f[0][0][0][0] = 1;     pw[0] = 1;     for (int i = 1; i < maxn; i++) pw[i] = pw[i - 1] * 2 % M;     ev[0] = 1, od[0] = 0;     for (int i = 1; i < maxn; i++) ev[i] = od[i] = pw[i - 1];   }   void find_ans(int ob, int eb, int ow, int ew, int col, long long &ret) {     if (col != 0 && ew != 0)       (ret += f[ob][eb][ow][ew - 1] * pw[ow + ew - 1 + eb] % M * od[ob] % M) %= M;     if (col != 0 && ow != 0)       (ret += f[ob][eb][ow - 1][ew] * pw[ow + ew - 1 + eb] % M * ev[ob] % M) %= M;     if (col != 1 && eb != 0)       (ret += f[ob][eb - 1][ow][ew] * pw[ob + eb - 1 + ew] % M * od[ow] % M) %= M;     if (col != 1 && ob != 0)       (ret += f[ob - 1][eb][ow][ew] * pw[ob - 1 + eb + ew] % M * ev[ow] % M) %= M;     return;   }   int main() {     init();     scanf( %d%d , &n, &p);     for (int i = 1; i <= n; i++) scanf( %d , c + i);     for (int i = 1; i <= n; i++)       for (int ob = 0; ob <= i; ob++)         for (int eb = 0; ob + eb <= i; eb++)           for (int ow = 0; ob + eb + ow <= i; ow++) {             int ew = i - ob - eb - ow;             find_ans(ob, eb, ow, ew, c[i], f[ob][eb][ow][ew]);             if (i == n && ((ob + ow) & 1) == p) (ans += f[ob][eb][ow][ew]) %= M;           }     printf( %I64d , ans);     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     int n, k;     cin >> n >> k;     int arr[n];     int count = 0;     for (int i = 0; i < n; i++) {       cin >> arr[i];     }     for (int i = 0; i < n; i++) {       int x = 5 - arr[i];       if (x >= k) {         count++;       }     }     cout << count / 3 << endl;     return 0;   }
#include <bits/stdc++.h>   #pragma comment(linker,  /STACK:64000000 )   using namespace std;   const int MAXN = -1;   const int MOD = 1;   int main() {     int n;     while (cin >> n) {       string s;       cin >> s;       vector<int> d(n);       for (int i = 0; i < n; i++) cin >> d[i];       int cur = 0;       vector<int> used(n, 0);       while (1) {         if (cur < 0 || cur >= n) {           cout <<  FINITE  << endl;           break;         }         if (used[cur]) {           cout <<  INFINITE  << endl;           break;         }         used[cur] = 1;         if (s[cur] ==  > )           cur += d[cur];         else           cur -= d[cur];       }     }     return 0;   }
#include <bits/stdc++.h>   const long long inf = 1000000000ll;   const long long inf64 = inf * inf;   const long long base = inf + 7;   const long long MOD = inf + 9;   const double pi = acos(-1.0);   using namespace std;   bool solve() {     int n, q;     scanf( %d %d , &n, &q);     vector<long long> a(2 * n + 1);     for (int i(1); i <= n; i++) scanf( %I64d , &a[i]), a[i + n] = a[i];     vector<int> from(2 * n + 1), dp(2 * n + 1), last(2 * n + 1), used(2 * n + 1);     vector<long long> sum(2 * n + 1, 0);     for (int i(1); i <= 2 * n; i++) sum[i] = sum[i - 1] + a[i];     for (int i(0); i < q; i++) {       long long b;       scanf( %I64d , &b);       int j = -1;       for (int z(1); z <= n; z++) {         from[z] = dp[z] = used[z] = last[z] = 0;         if (sum[z] > b) {           if (j == -1) j = 1;           while (sum[z] - sum[j - 1] > b) j++;           from[z] = j - 1;         }         dp[z] = dp[from[z]] + 1;         if (from[z]) {           last[z] = last[from[z]];         } else           last[z] = z;       }       int ans = n + 1;       long long S = 0;       for (int z(n); z >= 1; z--) {         if (S > b) break;         int tmp = dp[z];         if (sum[last[z]] + S > b) tmp++;         ans = min(ans, tmp);         S += a[z];       }       printf( %d n , ans);     }     return true;   }   int main() {     solve();     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   const long long inf = 1e18;   vector<long long> factorial;   void fill_factorial(long long n) {     factorial.resize(n + 1);     factorial[0] = 1;     for (long long i = 1; i <= n; i++)       factorial[i] = (factorial[i - 1] * i) % mod;   }   long long gcd(long long a, long long b, long long& x, long long& y) {     if (b == 0) {       x = 1;       y = 0;       return a;     }     long long x1, y1;     long long d = gcd(b, a % b, x1, y1);     x = y1;     y = x1 - y1 * (a / b);     return d;   }   long long binpow(long long a, long long b) {     a %= mod;     long long res = 1;     while (b > 0) {       if (b & 1) res = res * a % mod;       a = a * a % mod;       b >>= 1;     }     return res;   }   long long inv(long long a) {     long long x, y;     long long g = gcd(a, mod, x, y);     x = (x % mod + mod) % mod;     return x;   }   long long CC(long long n, long long k) {     return factorial[n] * inv(factorial[k]) % mod * inv(factorial[n - k]) % mod;   }   void solve() {     long long n;     cin >> n;     long long a[n + 1];     for (long long i = 1; i <= n; ++i) cin >> a[i];     long long h = 0;     queue<pair<long long, long long>> q;     q.push(make_pair(1, 0));     long long j = 2;     long long ans = 0;     while (true) {       long long val = q.front().first, t = q.front().second;       ans = max(ans, t);       q.pop();       q.push(make_pair(a[j], t + 1));       j++;       while (j <= n && a[j] > a[j - 1]) {         if (j > n) break;         q.push(make_pair(a[j], t + 1));         j++;       }       if (j > n) break;     }     while (!q.empty()) {       ans = max(ans, q.front().second);       q.pop();     }     cout << ans <<   n ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     ;     long long no_of_test_cases;     cin >> no_of_test_cases;     while (no_of_test_cases--) {       solve();     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     char s[1100000];     scanf( %s , s);     int l = strlen(s);     int ans = 0;     int m = 0;     int p = 0;     while (s[p] ==  F ) p++;     for (int i = p; i < l; i++) {       if (s[i] ==  M ) {         m++;       }       if (s[i] ==  F ) {         ans = max(ans + 1, m);       }     }     cout << ans << endl;     return 0;   }
#include <bits/stdc++.h>   long long int dx[] = {-2, -2, -1, 1, 2, 2, 1, -1};   long long int dy[] = {-1, 1, 2, 2, 1, -1, -2, -2};   using namespace std;   bool comp(long long int x, long long int y) { return abs(x) > abs(y); }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long int te = 1;     cin >> te;     while (te--) {       long long int n;       cin >> n;       long long int arr[n];       long long int mxi = -INT_MAX;       for (long long int i = 0; i < n; i++) cin >> arr[i], mxi = max(mxi, arr[i]);       sort(arr, arr + n, comp);       if (mxi < 0) {         cout << arr[n - 1] * arr[n - 2] * arr[n - 3] * arr[n - 4] * arr[n - 5]              <<   n ;         continue;       }       long long int ans = arr[0] * arr[1] * arr[2] * arr[3] * arr[4];       if (ans < 0) {         for (long long int i = 5; i < n; i++) {           for (long long int j = 0; j < 5; j++) {             long long int tmp = arr[i];             for (long long int k = 0; k < 5; k++) {               if (k != j) tmp *= arr[k];             }             ans = max(ans, tmp);           }         }       }       cout << ans << endl;     }   }
#include <bits/stdc++.h>   using namespace std;   int Gcd(int x, int y) {     while (x > 0 && y > 0) {       if (x > y) {         x = x % y;       } else {         y = y % x;       }     }     return x + y;   }   int Sign(int x) { return (x > 0) ? 1 : -1; }   int Abs(int x) { return (x > 0) ? x : -x; }   void ReduceFraction(int& x, int& y) {     if (x == 0) {       y = 1;     } else if (y == 0) {       x = 1;     } else {       int sgn = Sign(x) * Sign(y);       x = Abs(x);       y = Abs(y);       int g = Gcd(x, y);       x /= g;       y /= g;       x *= sgn;     }   }   struct Vector {     Vector(int vx, int vy) {       ReduceFraction(vx, vy);       x = vx;       y = vy;     }     int x;     int y;     bool operator==(const Vector& other) const {       return (x == other.x) && (y == other.y);     }   };   struct Line {     Line(int x0, int y0, int x1, int y1) : a(x1 - x0, y1 - y0) {       if (a.y != 0) {         u = a.y * x0 - a.x * y0;         v = a.y;         ReduceFraction(u, v);       } else {         u = y0;         v = 10001;       }     }     int u;     int v;     Vector a;     bool operator==(const Line& other) const {       return (u == other.u) && (v == other.v) && (a == other.a);     }   };   struct VectorHasher {     size_t operator()(Vector v) const {       const size_t coef = 39916801;       const hash<int> int_hasher;       return coef * int_hasher(v.x) + int_hasher(v.y);     }   };   struct LineHasher {     size_t operator()(const Line& l) const {       const size_t coef = 514229;       const hash<int> int_hasher;       const VectorHasher vector_hasher;       return coef * coef * int_hasher(l.u) + coef * int_hasher(l.v) +              vector_hasher(l.a);     }   };   long long Cn2(long long n) { return n * (n - 1) / 2; }   int main() {     int n;     cin >> n;     vector<pair<int, int>> pts(n);     for (int i = 0; i < n; ++i) {       cin >> pts[i].first >> pts[i].second;     }     unordered_map<Vector, unordered_set<Line, LineHasher>, VectorHasher> store;     for (int i = 0; i + 1 < n; ++i) {       for (int j = i + 1; j < n; ++j) {         Line new_line(pts[i].first, pts[i].second, pts[j].first, pts[j].second);         store[new_line.a].insert(new_line);       }     }     long long result = 0;     long long count = 0;     for (const auto& p : store) {       result -= Cn2(p.second.size());       count += p.second.size();     }     cout << result + Cn2(count);     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int ans, n, m, f1[1000005], vis[1000005], vis1[1000005], num, g1[1000005], k;   long long f[1000005], g[1000005];   struct he {     int d, s, t, c;   } a[1000005];   bool cmp(he a, he b) { return a.d < b.d; }   int main() {     scanf( %d%d%d , &n, &m, &k);     for (int i = 1; i <= m; i++) {       scanf( %d%d%d%d , &a[i].d, &a[i].s, &a[i].t, &a[i].c);     }     sort(a + 1, a + 1 + m, cmp);     for (int i = 1; i <= m; i++) {       f[i] = f[i - 1];       if (a[i].t == 0) {         if (!vis[a[i].s]) {           vis[a[i].s] = a[i].c;           num++;           f[i] += (long long)a[i].c;         } else {           if (a[i].c < vis[a[i].s]) {             f[i] = f[i] - (long long)vis[a[i].s] + (long long)a[i].c;             vis[a[i].s] = a[i].c;           }         }       }       f1[i] = num;     }     num = 0;     for (int i = m; i >= 1; i--) {       g[i] = g[i + 1];       if (a[i].s == 0) {         if (!vis1[a[i].t]) {           vis1[a[i].t] = a[i].c;           num++;           g[i] += (long long)a[i].c;         } else {           if (a[i].c < vis1[a[i].t]) {             g[i] = g[i] - (long long)vis1[a[i].t] + (long long)a[i].c;             vis1[a[i].t] = a[i].c;           }         }       }       g1[i] = num;     }     int pos1 = 1;     int pos2 = m;     while ((a[pos1].t != 0 || f1[pos1] != n) && pos1 <= m) pos1++;     if (pos1 > m) {       printf( -1 n );       return 0;     }     while ((a[pos2].s != 0 || a[pos2].d - a[pos1].d > k || g1[pos2] != n) &&            pos2 >= 0)       pos2--;     if (pos2 == 0) {       printf( -1 n );       return 0;     }     while ((a[pos2].d - a[pos1].d <= k || a[pos2].s != 0) && pos2 <= m) pos2++;     if (g1[pos2] != n || pos2 > m) {       printf( -1 n );       return 0;     }     pos1 = pos2;     while (pos1 >= 1 && (a[pos1].t != 0 || a[pos2].d - a[pos1].d <= k)) pos1--;     long long ans = (long long)1e16;     while (pos2 <= m && pos1 <= m) {       ans = min(ans, f[pos1] + g[pos2]);       pos1++;       while ((a[pos1].t != 0 || f1[pos1] != n) && pos1 <= m) pos1++;       while ((a[pos2].s != 0 || a[pos2].d - a[pos1].d <= k || g1[pos2] != n) &&              pos2 <= m)         pos2++;     }     printf( %I64d n , ans);   }
#include <bits/stdc++.h>   using namespace std;   int n, k;   bool check(int x) {     int s[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};     int t;     while (x > 0) {       t = x % 10;       if (t <= k) s[t]++;       x /= 10;     }     for (int i = 0; i <= k; i++) {       if (s[i] == 0) return false;     }     return true;   }   int main() {     cin >> n >> k;     int res = 0;     int t;     for (int i = 0; i < n; i++) {       cin >> t;       if (check(t)) res++;     }     cout << res;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int n, m, k, x[100005], pn, st;   pair<int, pair<int, int> > p[100005];   priority_queue<pair<int, pair<int, int> > > q, qq;   int main() {     scanf( %d%d , &n, &m);     for (int a = (1); a <= (n); a++)       for (int b = (1); b <= (m); b++)         p[pn++] = make_pair(a + b, make_pair(a, b));     sort(p, p + pn);     scanf( %d , &k);     for (int a = (0); a < (k); a++) scanf( %d , x + a);     sort(x, x + k);     for (int a = (0); a < (k); a++) {       while (st < pn && p[st].first <= x[a]) {         q.push(make_pair(p[st].second.first + m + 1 - p[st].second.second,                          p[st].second));         st++;       }       if (q.empty()) {         printf( NO n );         return 0;       }       q.pop();     }     while (!q.empty()) {       qq.push(q.top());       q.pop();     }     while (st < pn) {       qq.push(make_pair(p[st].second.first + m + 1 - p[st].second.second,                         p[st].second));       st++;     }     scanf( %d , &k);     for (int a = (0); a < (k); a++) scanf( %d , x + a);     sort(x, x + k, greater<int>());     for (int a = (0); a < (k); a++) {       if (qq.top().first > x[a]) {         printf( NO n );         return 0;       }       qq.pop();     }     printf( YES n );     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 1;   int n, sa[N], sb[N], a1[N], b1[N], suma, sumb, q[N];   struct nd {     int w, id;   } a[N], b[N];   bool cmp(nd a, nd b) { return a.w > b.w; }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; ++i)       scanf( %d , &a[i].w), a[i].id = i, a1[i] = a[i].w, suma += a[i].w;     for (int i = 1; i <= n; ++i)       scanf( %d , &b[i].w), b[i].id = i, b1[i] = b[i].w, sumb += b[i].w;     sort(a + 1, a + n + 1, cmp);     q[++q[0]] = a[1].id;     for (int i = 2; i < n; i += 2) {       if (b1[a[i].id] > b1[a[i + 1].id])         q[++q[0]] = a[i].id;       else         q[++q[0]] = a[i + 1].id;     }     if (n % 2 == 0) q[++q[0]] = a[n].id;     cout << n / 2 + 1 << endl;     for (int i = 1; i <= q[0]; ++i) cout << q[i] <<    ;   }
#include <bits/stdc++.h>   using namespace std;   const int N = 5;   const int M = 1e7 + 1;   const long long INF = 1LL << 61;   long long a[N], t[N], cost[N];   inline long long bs(long long bytes, long long maxt) {     long long res = -1;     if (t[0] <= t[2]) {       if ((t[0] * bytes) <= maxt) {         res = 0;       }       return res;     }     if (bytes <= 0) {       return 0;     }     int l = 0;     int r = M;     while (l <= r) {       int mid = l + (r - l) / 2;       long long b_left = bytes - mid * a[2];       long long t_left = maxt - mid * a[2] * t[2];       if (b_left < 0) {         if (llabs(b_left) < a[2]) {           t_left += (b_left * (-t[2]));           b_left = 0;         } else {           r = mid - 1;           continue;         }       }       t_left -= (b_left * t[0]);       if (t_left >= 0) {         res = mid;         r = mid - 1;       } else {         l = mid + 1;       }     }     return res;   }   int main() {     ios_base::sync_with_stdio(false);     long long size, maxt;     cin >> size >> maxt;     cin >> t[0];     for (int i = int(1); i < int(3); i++) {       cin >> a[i] >> t[i] >> cost[i];     }     if (t[2] < t[1]) {       swap(a[1], a[2]);       swap(t[1], t[2]);       swap(cost[1], cost[2]);     }     long long ans = INF;     for (int i = int(0); i < int(M); i++) {       long long money = i * cost[1];       long long bytes = size - i * a[1];       long long tt = maxt - (i * a[1] * t[1]);       if (bytes > 0) {         long long use2 = bs(bytes, tt);         money += (use2 * cost[2]);         if (use2 >= 0) {           ans = min(ans, money);         }       } else if (bytes < 0) {         tt += (bytes * (-t[1]));       }       if (bytes <= 0 and tt >= 0) {         ans = min(ans, money);       }     }     if (ans >= INF) {       ans = -1;     }     cout << ans <<   n ;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   double round(double x) { return ((long long)(x * 1e8 + 0.5)) / 1e8; }   double x[5], y[5], r[5];   set<pair<double, double> > c[5];   set<pair<double, double> > u;   void intersection(int i, int j) {     double d =         sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));     if ((d <= r[i] + r[j] && d >= abs(r[i] - r[j]))) {     } else {       return;     }     double a, h, x1, y1, x2, y2, _x, _y;     a = (r[i] * r[i] - r[j] * r[j] + d * d) / (2 * d);     h = sqrt(r[i] * r[i] - a * a);     _x = x[i] + a * (x[j] - x[i]) / d;     _y = y[i] + a * (y[j] - y[i]) / d;     x1 = _x + h * (y[j] - y[i]) / d;     y1 = _y - h * (x[j] - x[i]) / d;     x2 = _x - h * (y[j] - y[i]) / d;     y2 = _y + h * (x[j] - x[i]) / d;     x1 = round(x1);     x2 = round(x2);     y1 = round(y1);     y2 = round(y2);     c[i].insert({x1, y1});     c[i].insert({x2, y2});     c[j].insert({x2, y2});     c[j].insert({x1, y1});     u.insert({x1, y1});     u.insert({x2, y2});   }   int main() {     std::ios::sync_with_stdio(false);     cin.tie(NULL);     int n;     cin >> n;     for (int i = 0; i < n; i++) {       cin >> x[i] >> y[i] >> r[i];     }     if (n == 1) {       cout << 2 << endl;       return 0;     } else if (n == 2) {       intersection(0, 1);       if (u.size() == 2) {         cout << 4 << endl;       } else         cout << 3 << endl;       return 0;     }     for (int i = 0; i < n; i++) {       for (int j = i + 1; j < n; j++) {         intersection(i, j);       }     }     int v = u.size();     if (v == 0) {       cout << 4 << endl;       return 0;     }     int cc = 0;     int e = 0;     for (int i = 0; i < n; i++) {       e += c[i].size();       if (c[i].size() == 0) {         cc++;       }     }     int f = e - v + 2 + cc;     cout << f << endl;   }
#include <bits/stdc++.h>   const int INF = 1000000;   using namespace std;   int main() {     int a, b, m;     vector<int> r(1);     scanf( %d %d %d %d , &a, &b, &m, &r[0]);     for (int i = 1; i < 2 * m + 2; i++) {       r.push_back((a * r[i - 1] + b) % m);     }     vector<int> ans(2 * m + 2, INF);     int res = 1;     for (int i = 1; i < m + 1; i++) {       for (int t = 1; t < m + 1; t++)         if (r[i] == r[i + t]) {           ans[i] = min(t, ans[i - 1]);           res = ans[i];           cout << res;           return 0;         }     }     cout << res;     return 0;   }