func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<pair<int, int> > v, a;   vector<pair<double, int> > ans;   int n, sum, del, sx, sy, x, y, Nx, Ny;   set<int> u;   int cmp(pair<int, int> a, pair<int, int> b) {     return ((a.first) * (a.first)) + ((a.second) * (a.second)) <            ((b.first) * (b.first)) + ((b.second) * (b.second));   }   int main() {     v.clear();     u.clear();     for (int i = 0; i <= 200; i++)       for (int j = i; j <= 200; j++)         if (i + j)           if (!u.count(((i) * (i)) + ((j) * (j))))             v.push_back(make_pair(i, j)), u.insert(((i) * (i)) + ((j) * (j)));     sort(v.begin(), v.end(), cmp);     cin >> n;     sum = 0;     for (int i = 0; i < n; i++) sum += (v[i].first + v[i].second) & 1;     a.clear();     del = n;     if (sum & 1) {       sum += (v[n].first + v[n].second) & 1;       for (int i = n - 1; i >= 0; i--)         if (!((sum - ((v[i].first + v[i].second) & 1)) & 1)) {           del = i;           break;         }     }     for (int i = 0; i <= n; i++)       if (del != i) a.push_back(v[i]);     sx = sy = 0;     for (int i = n - 1; i >= 0; i--) {       x = a[i].first, y = a[i].second;       for (int s = 0; s < 8; s++) {         Nx = x, Ny = y;         if (s & 1) swap(Nx, Ny);         if (s & 2) Nx *= -1;         if (s & 4) Ny *= -1;         if (((sx + a[i].first) * (sx + a[i].first)) +                 ((sy + a[i].second) * (sy + a[i].second)) >             ((sx + Nx) * (sx + Nx)) + ((sy + Ny) * (sy + Ny)))           a[i] = make_pair(Nx, Ny);       }       sx += a[i].first, sy += a[i].second;     }     for (int i = 0; i < n; i++)       ans.push_back(make_pair(atan2(a[i].second, a[i].first), i));     sort(ans.begin(), ans.end());     cout <<  YES  << endl;     sx = 0, sy = 0;     for (int i = 0; i < n; i++) {       cout << sx <<     << sy << endl;       int id = ans[i].second;       sx += a[id].first, sy += a[id].second;     }     return 0;   }   