func_code_string: #include <bits/stdc++.h>   using namespace std;   const pair<int, int> DD[] = {{1, 0},  {1, 1},   {0, 1},  {-1, 1},                                {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};   template <class T>   T smin(T &a, T b) {     if (a > b) a = b;     return a;   }   template <class T>   T smax(T &a, T b) {     if (a < b) a = b;     return a;   }   int main(void) {     srand(time(0));     cout << fixed << setprecision(7);     cerr << fixed << setprecision(7);     int n;     cin >> n;     if ((n % 4) == 2 || (n % 4) == 3) return puts( NO ) * 0;     puts( YES );     auto go = [&](int a, int b) {       cout << min(a, b) <<     << max(a, b) <<   n ;     };     for (int i = 1; i + 3 <= n; i += 4) {       if (n % 4)         go(i, n), go(i, i + 1), go(i + 1, n), go(n, i + 2), go(i + 2, i + 3),             go(i + 3, n);       else         go(i, i + 1), go(i + 2, i + 3);       go(i + 1, i + 2);       go(i, i + 3);       go(i, i + 2);       go(i + 1, i + 3);     }     vector<pair<int, int> > v;     v.push_back(make_pair(3, 2));     v.push_back(make_pair(2, 2));     v.push_back(make_pair(3, 1));     v.push_back(make_pair(0, 1));     v.push_back(make_pair(1, 3));     v.push_back(make_pair(2, 3));     v.push_back(make_pair(1, 2));     v.push_back(make_pair(1, 1));     v.push_back(make_pair(3, 0));     v.push_back(make_pair(3, 3));     v.push_back(make_pair(0, 2));     v.push_back(make_pair(0, 3));     v.push_back(make_pair(2, 0));     v.push_back(make_pair(2, 1));     v.push_back(make_pair(1, 0));     v.push_back(make_pair(0, 0));     for (int i = 1; i + 3 <= n; i += 4)       for (int j = i + 4; j + 3 <= n; j += 4)         for (auto it : v) go(i + it.first, j + it.second);     cerr <<  Time elapsed :  << clock() * 1000.0 / CLOCKS_PER_SEC <<   ms           <<   n ;     return 0;   }   