malteklaes/cpp-code-code_search_net-style huggingface dataset:
#include <bits/stdc++.h>   using namespace std;   const int MAXN = 200 * 1000 + 5;   pair<long long int, long long int> b[MAXN];   long long int dp[MAXN];   long long int rem[MAXN];   inline pair<long long int, long long int> cst(int x, int y) {     long long int tt = ((b[x].first - rem[y] + b[y].second - 1) / b[y].second);     return make_pair(tt + dp[y], rem[y] + tt * b[y].second - b[x].first);   }   bool cmp(const pair<long long int, long long int>& x,            const pair<long long int, long long int>& y) {     if (x.first != y.first) return x.first < y.first;     return x.second > y.second;   }   inline bool isBet(int i, int j, int k) { return !cmp(cst(i, k), cst(i, j)); }   int main() {     ios::sync_with_stdio(false);     int n;     long long int s;     cin >> n >> s;     for (int i = 0; i < n; i++) cin >> b[i].second >> b[i].first;     b[n].first = s;     sort(b, b + n, cmp);     assert(!b[0].first);     deque<pair<int, int> > cands;     cands.push_back(make_pair(0, 1));     long long int ans = cst(n, 0).first;     long long int lst = b[0].second;     for (int i = 1; i < n; i++) {       if (b[i].second <= lst) continue;       while (cands.size() > 1 && isBet(i, cands[1].first, cands[0].first))         cands.pop_front();       pair<long long int, long long int> tmp = cst(i, cands[0].first);       dp[i] = tmp.first;       rem[i] = tmp.second;       ans = min(ans, cst(n, i).first);       while (cands.size() && isBet(cands.back().second, i, cands.back().first))         cands.pop_back();       if (cands.size()) {         int d = cands.back().second, u = n - 1;         while (d < u - 1) {           int mid = (d + u) / 2;           if (isBet(mid, i, cands.back().first))             u = mid;           else             d = mid;         }         if (isBet(u, i, cands.back().first)) cands.push_back(make_pair(i, u));       }       lst = b[i].second;     }     cout << ans << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     double ans = 0;     long long m, r, i;     cin >> m >> r;     if (m == 1) {       cout << 2 * r;       return 0;     }     for (i = 1; i <= m; i++) {       if ((i == 1) || (i == m))         ans += (4 + sqrt(2.) + 2 * (m - 2) * sqrt(2.) + (m - 2) * (m - 1));       else         ans += (6 + 2 * sqrt(2.) + (m - 3) * 2 * sqrt(2.) + (i - 2) * (i - 1) +                 (m - i - 1) * (m - i));     }     printf( %.10lf n , ans * r / m / m);     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int x[1001], y[1001], a[1001], b[1001];   map<pair<int, int>, int> freq;   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     int n;     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> x[i] >> y[i];     }     for (int j = 1; j <= n; j++) {       cin >> a[j] >> b[j];     }     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         freq[{x[i] + a[j], y[i] + b[j]}]++;       }     }     for (auto p : freq) {       if (p.second == n) {         cout << p.first.first <<     << p.first.second << endl;         return 0;       }     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     long long i, j, n, m, k, a, b;     long long x[3], y[3];     for (i = 0; i < 3; i++) cin >> x[i] >> y[i];     cout << 3 << endl;     for (i = 0; i < 3; i++)       cout << (x[i] + x[(i + 1) % 3]) - x[(i + 2) % 3] <<                << (y[i] + y[(i + 1) % 3]) - y[(i + 2) % 3] << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   using ll = long long;   using vi = vector<int>;   using vvi = vector<vi>;   using pii = pair<int, int>;   constexpr auto MOD = 1000000007LL;   constexpr auto LINF = (1LL << 60);   constexpr auto INF = 2147483647LL;   constexpr auto PI = 3.1415926535897932384626433;   constexpr auto EPS = 1E-9;   template <typename T1, typename T2>   ostream &operator<<(ostream &out, const pair<T1, T2> p) {     out << p.first <<     << p.second;     return out;   }   template <typename T1, typename T2>   istream &operator>>(istream &in, pair<T1, T2> &p) {     in >> p.first >> p.second;     return in;   }   template <typename T>   istream &operator>>(istream &in, vector<T> &v) {     for (auto &x : v) in >> x;     return in;   }   template <typename T>   ostream &operator<<(ostream &out, vector<T> v) {     for (int i = 0; i < v.size(); i++)       out << v[i] << (i + 1 == v.size() ?   n  :    );     out.flush();     return out;   }   int n, k, a[2][300010];   int tail[2], nxttail[2];   int main() {     ios_base::sync_with_stdio(false);     cin >> n >> k;     for (int i = 0; i < n; i++) cin >> a[0][i];     for (int i = 0; i < n; i++) cin >> a[1][i];     if (k == 1) {       int tail = 3;       for (int i = 0; i < n; i++) {         if (abs(a[0][i] - a[1][i]) > 1) {           cout <<  NO  << endl;           return 0;         }         if (a[0][i] > a[1][i]) {           if ((tail & 2) == 0) {             cout <<  NO  << endl;             return 0;           }           tail = 1;         } else if (a[1][i] > a[0][i]) {           if ((tail & 1) == 0) {             cout <<  NO  << endl;             return 0;           }           tail = 2;         } else           ;       }       cout <<  YES  << endl;       return 0;     }     for (int i = 0; i < n; i++) {       nxttail[0] = nxttail[1] = INF;       for (int t = 0; t < 2; t++) {         if (tail[t] > k) continue;         if (a[t][i] >= a[t ^ 1][i]) {           int groups = 1 + (a[t][i] - (k - tail[t]) + k - 1) / k;           if (a[t ^ 1][i] < groups - 1)             continue;           else if (a[t ^ 1][i] == groups - 1) {             nxttail[t] = min(nxttail[t], (a[t][i] - (k - tail[t]) - 1) % k + 1);           } else if (a[t ^ 1][i] > groups - 1) {             nxttail[t ^ 1] = nxttail[t] = 1;           }         } else {           int groups = (a[t ^ 1][i] + k - 1) / k;           if (a[t][i] < groups - 1)             continue;           else if (a[t][i] == groups - 1) {             nxttail[t ^ 1] = min(nxttail[t ^ 1], (a[t ^ 1][i] - 1) % k + 1);           } else if (a[t][i] > groups - 1) {             nxttail[t] = nxttail[t ^ 1] = 1;           }         }       }       tail[0] = nxttail[0];       tail[1] = nxttail[1];     }     cout << (min(tail[0], tail[1]) <= k ?  YES  :  NO ) << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int d[1000005];   bool vis[1000005];   vector<pair<int, int> > G[1000005];   void dfs(int u) {     for (pair<int, int> x : G[u])       if (!vis[x.first]) {         vis[x.first] = 1;         dfs(x.second);       }   }   int main() {     int n, m;     scanf( %d%d , &n, &m);     long long ans = 0;     int tmp;     for (int i = 0; i < m; i++) {       int x, y;       scanf( %d%d , &x, &y);       tmp = x;       if (x == y)         ans++;       else         d[x]++, d[y]++;       G[x].push_back(make_pair(i, y));       G[y].push_back(make_pair(i, x));     }     dfs(tmp);     bool test = 1;     for (int i = 0; i < m; i++)       if (!vis[i]) {         test = 0;         break;       }     if (test) {       ans = ans * (m - 1) - ans * (ans - 1) / 2;       for (int i = 1; i <= n; i++) ans += (long long)d[i] * (d[i] - 1) / 2;       printf( %I64d n , ans);     } else       puts( 0 );     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     int i, t, count;     long long x, N;     scanf( %d n , &t);     while (t--) {       scanf( %lld n , &N);       count = 0;       for (i = 1; i < 10; i++) {         x = i;         while (x <= N) {           count++;           x *= 10;           x += i;         }       }       printf( %d n , count);     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int Maxn = 20;   const int Maxmask = (1 << 16);   int out[Maxn][Maxn];   bool making[Maxn][Maxmask];   int n;   int s;   int a[Maxn * Maxn];   int mod;   void input() {     cin >> n;     for (int i = 0; i < n * n; i++) {       cin >> a[i];       s += a[i];     }     s /= n;   }   void place() {     for (int i = 0; i < n * n; i++) out[i / n][i % n] = a[i];   }   bool is_true() {     int t;     for (int i = 0; i < n; i++) {       t = 0;       for (int j = 0; j < n; j++) t += out[i][j];       if (t != s) return false;       t = 0;       for (int j = 0; j < n; j++) t += out[j][i];       if (t != s) return false;     }     t = 0;     for (int i = 0; i < n; i++) t += out[i][i];     if (t != s) return false;     t = 0;     for (int i = 0; i < n; i++) t += out[i][n - i - 1];     if (t != s) return false;     return true;   }   bool found() {     int b[] = {2, 7, 6, 9, 5, 1, 4, 3, 8};     for (int i = 0; i < n * n; i++)       if (a[i] != b[i]) return false;     return true;   }   void calc_3() {     sort(a, a + n * n);     while (1) {       place();       if (is_true()) break;       next_permutation(a, a + (n * n));     }   }   void output() {     cout << s <<   n ;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) cout << out[i][j] <<    ;       cout <<   n ;     }   }   int main() {     input();     calc_3();     output();     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const long long N = 1e6 + 1;   void solve() {     long long n, i = 0, k;     cin >> n;     long long a[1000], m[1000];     m[0] = 1;     a[0] = 1;     while (m[i] < n) {       a[i + 1] = 2 * a[i];       m[i + 1] = 2 * a[i + 1] - 1;       i++;     }     k = i;     if (n >= m[k - 1] + a[k - 1])       a[k] = n - m[k - 1];     else {       if (n == a[k - 1] + 1) {         for (i = 1; i <= k; i++) a[i] = a[i - 1];       } else {         while (1) {           a[k - 1] = (n - m[k - 2]) / 2;           m[k - 1] = a[k - 1] + m[k - 2];           if (n >= a[k - 1] + m[k - 1]) {             a[k] = n - m[k - 1];             break;           }         }       }     }     cout << k <<   n ;     for (i = 1; i <= k; i++) {       cout << a[i] - a[i - 1] <<    ;     }     cout <<   n ;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long t, p;     cin >> t;     for (p = 1; p <= t; p++) {       solve();     }   }
#include <bits/stdc++.h>   using namespace std;   int aa(int n) {     int a = 0;     for (int i = 2; i <= n - 1; i++)       if (n % i == 0) {         a = 1;         break;       } else         a = 0;     return a;   }   int main() {     int n;     cin >> n;     for (int i = 1; i <= n; i++) {       if (aa(i) == 1 && aa(n - i) == 1) {         cout << i <<     << n - i << endl;         break;       }     }   }
#include <bits/stdc++.h>   using namespace std;   void blowback() {     long long i, j, l, k, n, m, x, y, r, ans = 0, sum = 10e17;     string s;     long long a, b, c, d;     cin >> a >> b >> c >> d;     if (a > (b * c)) {       cout <<  -1 n ;       return;     }     k = (2 * a - b * d) / (2 * b * d);     l = k + 1;     k = min(k, c / d);     l = min(l, c / d);     ans = (a * (k + 1)) - ((k * (k + 1)) * b * d) / 2;     k = l;     sum = (a * (k + 1)) - ((k * (k + 1)) * b * d) / 2;     cout << max({ans, sum, a}) <<   n ;   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long int t = 1;     cin >> t;     while (t--) {       blowback();     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int INF = numeric_limits<int>::max();   const long long LLINF = numeric_limits<long long>::max();   const unsigned long long ULLINF = numeric_limits<unsigned long long>::max();   long long f[1010][1010];   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     int n;     cin >> n;     for (int i = 0; i < n; i++) {       long long x, y;       cin >> x >> y;       x--, y--;       f[y][x]++;     }     long long ans = 0;     for (int i = 0; i < 1000; i++) {       long long cur = 0;       for (int j = 0; j + i < 1000; j++) {         cur += f[j][i + j];       }       ans += (cur - 1) * cur / 2ll;       cur = 0;       if (i > 0) {         for (int j = 0; j + i < 1000; j++) {           cur += f[i + j][j];         }         ans += (cur - 1) * cur / 2ll;       }     }     for (int i = 0; i < 1000; i++) {       long long cur = 0;       for (int j = 0; j <= i; j++) {         cur += f[j][i - j];       }       ans += (cur - 1) * cur / 2ll;       cur = 0;       if (i > 0) {         for (int j = 0; j + i < 1000; j++) {           cur += f[i + j][1000 - j - 1];         }         ans += (cur - 1) * cur / 2ll;       }     }     cout << ans;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int dx[] = {0, 0, 1, -1, 1, -1, 1, -1};   int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};   long long gcd(long long first, long long second) {     return !second ? first : gcd(second, first % second);   }   long long lcm(long long first, long long second) {     return (first / gcd(first, second)) * second;   }   void PLAY() {     cout << fixed << setprecision(15);     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);   }   const int MAX = 6e5;   long long n, r, k;   long long archers[MAX], dist[MAX];   bool valid(long long val) {     memset(dist, 0, sizeof dist);     long long tmp = 0, cursum = k;     for (int i = 1; i <= n; ++i) {       long long cur = val - archers[i] - tmp;       if (cur < 0) {         tmp += dist[i];         continue;       }       if (cur > cursum) return false;       cursum -= cur;       tmp += cur;       long long idx = min(i + 2 * r, n);       dist[idx] -= cur;       tmp += dist[i];     }     return true;   }   int main() {     PLAY();     cin >> n >> r >> k;     for (int i = 1; i <= n; i++) {       cin >> archers[i];       long long x = max(i - r, 1LL);       long long y = min(i + r, n) + 1;       dist[x] += archers[i];       dist[y] -= archers[i];     }     for (int i = 1; i <= n; i++) archers[i] = archers[i - 1] + dist[i];     long long lo = *min_element(archers + 1, archers + n + 1);     long long hi = lo + k + 1, res = lo;     while (lo <= hi) {       long long mid = (lo + hi) / 2;       if (valid(mid)) {         res = mid;         lo = mid + 1;       } else         hi = mid - 1;     }     cout << res << endl;     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int INF = 1e9;   const int MODV = 1e9 + 7;   int b[1001];   int ans[1005];   vector<pair<int, int> > sorted;   vector<pair<int, int> > unsorted;   void make_ans(int n) {     for (auto it : sorted) {       int x = it.first;       int y = it.second;       for (int i = x; i < y; i++) b[i] = 0;     }     ans[1] = 100000;     for (int i = 2; i <= n; i++) ans[i] = ans[i - 1] + b[i - 1];   }   int non_decreasing(int x, int y) {     for (int i = x + 1; i <= y; i++) {       if (ans[i - 1] > ans[i]) return 0;     }     return 1;   }   int check() {     for (auto it : unsorted) {       if (non_decreasing(it.first, it.second)) return 0;     }     return 1;   }   int main() {     int n, m;     scanf( %d %d , &n, &m);     while (m--) {       int t, x, y;       scanf( %d %d %d , &t, &x, &y);       if (t)         sorted.push_back({x, y});       else         unsorted.push_back({x, y});     }     sort(sorted.begin(), sorted.end());     memset(b, -1, sizeof(b));     make_ans(n);     if (check()) {       printf( YES n );       for (int i = 1; i <= n; i++) printf( %d  , ans[i]);       printf(  n );     } else       printf( NO n );     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int main() {     int q;     cin >> q;     while (q--) {       int n, rec = 0;       long long int k;       cin >> n >> k;       char str[1000005];       cin >> str;       for (int h = 0; h < n; h++, rec++) {         int pos = h;         for (int i = h; i < n; i++) {           if (str[i] ==  0 ) {             pos = i;             break;           }         }         h = pos;         if (k - pos - rec >= 0) {           char temp = str[pos];           str[pos] = str[rec];           str[rec] = temp;           k -= (pos - rec);         } else if (k > 0) {           while (pos > 0 && str[pos - 1] ==  1  && k > 0) {             char temp = str[pos];             str[pos] = str[pos - 1];             str[pos - 1] = temp;             pos--;             k--;           }         }       }       cout << str << endl;     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   const int M = 200005;   set<int> nex[M];   int path[M];   int sh[M];   vector<int> edge[M];   int main() {     int n, m;     scanf( %d%d , &n, &m);     for (int i = 0; i < m; i++) {       int from, to;       scanf( %d%d , &from, &to);       edge[to].push_back(from);     }     for (int i = 1; i <= n; i++) {       sh[i] = -1;     }     int k;     scanf( %d , &k);     for (int i = 1; i <= k; i++) {       int p;       scanf( %d , &p);       path[i] = p;     }     queue<int> q;     q.push(path[k]);     sh[path[k]] = 0;     int count = 1;     while (!q.empty()) {       int len = q.size();       for (int i = 0; i < len; i++) {         int x = q.front();         q.pop();         for (int v : edge[x]) {           if (sh[v] == -1) {             q.push(v);             sh[v] = count;             nex[v].insert(x);           } else if (sh[v] == count) {             nex[v].insert(x);           }         }       }       count++;     }     int mi = 0, ma = 0;     for (int i = 1; i < k; i++) {       if (nex[path[i]].find(path[i + 1]) == nex[path[i]].end()) {         mi++;         ma++;       } else if (nex[path[i]].size() > 1) {         ma++;       }     }     printf( %d %d n , mi, ma);   }
#include <bits/stdc++.h>   using namespace std;   int bit[210000], n;   void upd(int i) {     while (i <= n) bit[i] += 1, i += i & (-i);   }   void dec(int i) {     while (i <= n) bit[i] -= 1, i += i & (-i);   }   int cal(int i) {     int ret = 0;     while (i > 0) ret += bit[i], i -= i & (-i);     return ret;   }   int solve(int x) {     int l = 1, r = n + 1;     while (l < r) {       int mid = (l + r) >> 1, tx = cal(mid);       if (tx < x)         l = mid + 1;       else         r = mid;     }     return l;   }   int a[210000], b[210000], c[210000], va[210000], vb[210000], vc[210000];   int main() {     while (cin >> n) {       for (int i = 0; i < n; ++i) {         scanf( %d , a + i);         a[i]++;       }       for (int i = 0; i < n; ++i) {         scanf( %d , b + i);         b[i]++;       }       memset(bit, 0, sizeof(bit));       for (int i = n - 1; i >= 0; --i) {         va[i] = cal(a[i]);         upd(a[i]);       }       memset(bit, 0, sizeof(bit));       for (int i = n - 1; i >= 0; --i) {         vb[i] = cal(b[i]);         upd(b[i]);       }       reverse(va, va + n);       reverse(vb, vb + n);       memset(vc, 0, sizeof(vc));       int carry = 0;       for (int i = 1; i < n; ++i) {         vc[i] = (carry + va[i] + vb[i]) % (i + 1);         carry = (carry + va[i] + vb[i]) / (i + 1);       }       reverse(vc, vc + n);       memset(bit, 0, sizeof(bit));       for (int i = 1; i <= n; ++i) {         upd(i);       }       for (int i = 0; i < n; ++i) {         c[i] = solve(vc[i] + 1);         dec(c[i]);       }       for (int i = 0; i < n; ++i) {         if (i) printf(   );         printf( %d , c[i] - 1);       }       puts(  );       return 0;     }   }
#pragma GCC optimize( O2 )      #include<bits/stdc++.h>   #define ll long long   //#define int long long   #define fi first   #define se second   #define mpa make_pair   #define eb emplace_back   #define all(x) (x).begin(), (x).end()   #define rall(x) (x).rbegin(), (x).rend()   using namespace std;   mt19937 gen(time(0));      signed main() {       ios_base::sync_with_stdio(false);       cin.tie(0);       cout.tie(0);          int n, q;       cin >> n >> q;       vector<int> a(n);       vector<int> c(n + 1);       int k = 800;       int K = (n + k - 1) / k * 2;       for (int i = 0; i < n; ++i) {           cin >> a[i];           ++c[a[i]];       }       vector<int> d;       for (int i = 0; i <= n; ++i) if (c[i] >= K) d.eb(i);       vector<vector<int>> psum(d.size(), vector<int>(n + 1, 0));       for (int i = 0; i < (int)(d.size()); ++i) {           for (int j = 1; j <= n; ++j) {               psum[i][j] = psum[i][j - 1] + (a[j - 1] == d[i]);           }       }       vector<int> temp(n + 1);       for (int z = 0; z < q; ++z) {           int l, r;           cin >> l >> r;           int mx = 0;           if (r - l + 1 < k) {               for (int j = l - 1; j < r; ++j) {                   ++temp[a[j]];                   mx = max(mx, temp[a[j]]);               }               for (int j = l - 1; j < r; ++j) --temp[a[j]];           } else {               for (int j = 0; j < (int)(d.size()); ++j) {                   int cnt = psum[j][r] - psum[j][l - 1];                   mx = max(mx, cnt);               }           }           int len = (r - l + 1);           int L = 0, R = mx;           while (L != R) {               int M = (L + R) / 2;               if ((len - M + 1) / 2 >= mx - M) {                   R = M;               } else {                   L = M + 1;               }           }           cout << R + 1 <<   n ;       }   }   /*      */
#include <bits/stdc++.h>   using namespace std;   template <class T>   ostream& operator<<(ostream& os, vector<T> V) {     for (auto v : V) os << v <<    ;     return cout <<   ;   }   template <class T>   ostream& operator<<(ostream& os, set<T> S) {     for (auto s : S) os << s <<    ;     return cout <<   ;   }   template <class L, class R>   ostream& operator<<(ostream& os, pair<L, R> P) {     return os << P.first <<     << P.second;   }   const long long mod = 1;   long long inv(long long i) {     if (i == 1) return 1;     return (mod - ((mod / i) * inv(mod % i)) % mod) % mod;   }   long long gcd(long long a, long long b) {     if (a == 0) return b;     return gcd(b, b % a);   }   int main() {     int r, h;     cin >> r >> h;     int ans = 2 * (h / r);     if ((double)(h - (ans / 2) * r) / (double)r >= sqrt(3) / 2) {       ans += 3;     } else if (2 * (h - (ans / 2) * r) >= r) {       ans += 2;     } else       ans++;     cout << ans;   }
#include <bits/stdc++.h>   using namespace std;   int t;   double pi = acos(-1.0);   double d, h, v, e;   int main() {     scanf( %lf%lf%lf%lf , &d, &h, &v, &e);     double r = d / 2;     if (pi * r * r * e > v)       cout <<  NO  << endl;     else {       double s = (pi * r * r * h) / (v - pi * r * r * e);       cout <<  YES  << endl;       printf( %.12f n , s);     }     return 0;   }
#include <bits/stdc++.h>   using namespace std;   int ans[5001][5001];   int main() {     memset((ans), 0, sizeof(ans));     int n, m, l, r;     char s[5001];     cin >> n >> m;     for (int i = 1; i <= n; i++) {       l = r = 0;       scanf( %s , s);       for (int j = 0; j < m; j++) {         if (s[j] ==  0 ) {           l = j + 1;         } else           ans[l][j]++;       }     }     int maxi = -1, x, y;     for (int i = 2; i < m; i++) {       for (int j = 1; j <= i; j++) {         ans[j][i] += ans[j - 1][i];       }     }     for (int i = 0; i <= m; i++)       for (int j = i; j < m; j++) maxi = max((j - i + 1) * ans[i][j], maxi);     cout << maxi << endl;     return 0;   }