1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//PiOtR - Piotr Obst 1 LO Chełm
#include <iostream>
typedef long long LL;
LL sum=0,inw=0,k;
bool stop=false,timeout=false;

void print(LL *v, LL n) {
    if (v != 0) {
        LL b=0;
        for(LL c=0; c<n-1; c++) {
            for(LL a=c+1; a<n; a++) {
                if(v[c]>v[a])
                    b++;
            }
        }
        if(b==inw)
            k--;
        if(!k) {
            std::cout<<"TAK\n";
            for (LL i = 0; i < n; i++)
                std::cout<<v[i]<<" ";
            stop=true;
        }
    }
}


void swap(LL *v, LL i, LL j) {
    LL t;
    t = v[i];
    v[i] = v[j];
    v[j] = t;
}


void rotateLeft(LL *v, LL start, LL n) {
    LL tmp = v[start];
    for (LL i = start; i < n-1; i++) {
        v[i] = v[i+1];
    }
    v[n-1] = tmp;
}


void permute(LL *v, LL start, LL n) {
    if(stop)
        return;
    print(v, n);
    if (start < n) {
        LL i, j;
        for (i = n-2; i >= start; i--) {
            for (j = i + 1; j < n; j++) {
                swap(v, i, j);
                permute(v, i+1, n);
            }
            rotateLeft(v, i, n);
        }
    }
}


int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    LL N;
    std::cin>>N;
    std::cin>>k;

    double a=N*((N-1)/4.0);
    if(((LL)a)!=a) {
        std::cout<<"NIE";
        return 0;
    }

    inw=(LL)a;

    LL *v = new LL[N];

    for (LL i = 0; i < N; i++) {
        v[i] = i+1;
    }
    permute(v, 0, N);
    delete [] v;
    if(k)
        std::cout<<"NIE";

    return 0;
}