func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 105;   int zy[N][N * N / 2];   bool dp[N][N * N / 2];   deque<int> ans;   void dfs(int n, int k) {     if (n == 1) {       ans.push_back(1);       return;     } else {       if (zy[n][k] > 0) {         dfs(n - zy[n][k] + 1, k - zy[n][k]);         int sz = ans.size();         ans.push_front(zy[n][k] / 2 + sz);         if (zy[n][k] & 1) {           for (int i = (int)1; i <= (int)zy[n][k] / 2 - 2; ++i) {             ans.push_back(sz + zy[n][k] / 2 + i);             ans.push_back(sz + i);           }           ans.push_back(sz + zy[n][k] - 1);           ans.push_back(sz + zy[n][k] / 2 - 1);           ans.push_back(sz + zy[n][k] - 2);         } else {           for (int i = (int)1; i <= (int)zy[n][k] / 2 - 1; ++i) {             ans.push_back(sz + zy[n][k] / 2 + i);             ans.push_back(sz + i);           }         }       } else {         dfs(n + zy[n][k] + 1, k + zy[n][k] * (1 - zy[n][k]) / 2 + 1);         int sz = ans.size();         if (ans.front() > ans.back()) {           for (int i = (int)1; i <= (int)-zy[n][k] - 1; ++i)             ans.push_back(sz + i);         } else {           for (int i = (int)1; i <= (int)-zy[n][k] - 1; ++i)             ans.push_front(sz + i);         }       }     }   }   int main() {     dp[1][1] = 1;     for (int i = (int)2; i <= (int)100; ++i) {       for (int j = (int)i + 1; j <= (int)i * (i + 1) / 2; ++j) {         for (int k = (int)i; k >= (int)2; --k) {           if (k * (k + 1) / 2 <= j &&               dp[i - (k - 1)][j - (k * (k + 1) / 2 - 1)]) {             dp[i][j] = 1;             zy[i][j] = -k;             break;           }           if (k >= 4 && dp[i - k + 1][j - k]) {             dp[i][j] = 1;             zy[i][j] = k;             break;           }         }       }     }     int q, n, k;     cin >> q;     while (q--) {       cin >> n >> k;       if (!dp[n][k]) {         puts( NO );       } else {         dfs(n, k);         puts( YES );         while (ans.size()) {           cout << ans.front() <<    ;           ans.pop_front();         }         cout << endl;       }     }     return 0;   }   