func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   void maxtt(T& t1, T t2) {     t1 = max(t1, t2);   }   template <typename T>   void mintt(T& t1, T t2) {     t1 = min(t1, t2);   }   bool debug = 0;   int n, m, k;   string direc =  URDL ;   const long long MOD2 = (long long)1000000007 * (long long)1000000007;   long long ln, lk, lm;   void etp(bool f = 0) {     puts(f ?  YES  :  NO );     exit(0);   }   void addmod(int& x, int y, int mod = 1000000007) {     x += y;     if (x >= mod) x -= mod;     if (x < 0) x += mod;     assert(x >= 0 && x < mod);   }   void et(int x = -1) {     printf( %d n , x);     exit(0);   }   long long fastPow(long long x, long long y, int mod = 1000000007) {     long long ans = 1;     while (y > 0) {       if (y & 1) ans = (x * ans) % mod;       x = x * x % mod;       y >>= 1;     }     return ans;   }   long long gcd1(long long x, long long y) { return y ? gcd1(y, x % y) : x; }   int p[1000035], q[1000035];   void fmain(int tid) {     scanf( %d%lld , &n, &lk);     for (int(i) = 1; (i) <= (int)(n); (i)++) {       p[i] = q[i] = i;     }     long long mi = (long long)(n + 1) * n / 2;     int hf = n / 2;     long long mx = (long long)(n - hf + 1 + n) * hf;     if (n & 1) mx += n / 2 + 1;     if (lk < mi) et();     mintt(lk, mx);     long long tar = lk - mi;     for (int(i) = 1; (i) <= (int)(hf); (i)++) {       int bg = n + 1 - i;       if (bg - i <= tar) {         swap(q[i], q[bg]);         tar -= bg - i;       } else {         swap(q[i], q[i + tar]);         break;       }     }     printf( %lld n , lk);     for (int(i) = 1; (i) <= (int)(n); (i)++) printf( %d  , p[i]);     puts(  );     for (int(i) = 1; (i) <= (int)(n); (i)++) printf( %d  , q[i]);     puts(  );   }   int main() {     int t = 1;     for (int(i) = 1; (i) <= (int)(t); (i)++) {       fmain(i);     }     return 0;   }   