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
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#include<bits/stdc++.h>
using namespace std;
int tab[1000000];
int maxsuf[1000000];
int minpref[1000000];
struct para{
    int val;
    int i;
};
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie();
    cout.tie();
    int n,k,i;
    cin>>n>>k;
    for(i=0;i<n;i++){
        cin>>tab[i];
    }
    if(k==2){
        minpref[0]=tab[0];
        maxsuf[n-1]=tab[n-1];
        for(i=1;i<n;i++)
            minpref[i]=min(minpref[i-1],tab[i]);
        for(int i=n-2;i>=0;i--)
            maxsuf[i]=max(maxsuf[i+1],tab[i]);
        //cout<<"\n";
        for(i=0;i<n-1;i++){
            //cout<<minpref[i]<<" "<<maxsuf[i+1]<<"\n";
            if(minpref[i]>=maxsuf[i+1]){
                cout<<"TAK\n"<<i+1<<"\n";
                return 0;
            }
        }
        cout<<"NIE\n";
        return 0;
    }
    para maxx;
    para minx;
    if(k==3){
        maxx.i=0;
        maxx.val=tab[0];
        minx.i=0;
        minx.val=tab[0];
        for(i=1;i<n;i++){
            if(tab[i]>=maxx.val){
                if(tab[i]!=maxx.val)
                    maxx.i=i;
                maxx.val=tab[i];
                
            }
            if(tab[i]<=minx.val){
                minx.val=tab[i];
                minx.i=i;
            }

        }
        //cout<<minx.val<<" "<<minx.i<<"    "<<maxx.val<<" "<<maxx.i<<"\n";

        if(maxx.i!=n-1)
        {
            cout<<"TAK\n"<<maxx.i+(maxx.i==0)<<" "<<maxx.i+1+(maxx.i==0)<<"\n";
            return 0;
        }
        if(minx.i!=0){
            cout<<"TAK\n"<<minx.i-(minx.i==n-1)<<" "<<minx.i-(minx.i==n-1)<<"\n";
            return 0;
        }
        cout<<"NIE\n";
        return 0;
    }
    for(i=0;i<n-1;i++){
        if(tab[i]>=tab[i+1]){
            maxx.i=i;
            break;
        }
        if(i==n-2){
            cout<<"NIE\n";
            return 0;
        }
    }
    cout<<"TAK\n";
    bool xd=0;
    i=1;
    if(maxx.i==0){
        cout<<1<<" "<<2<<" ";
        k-=2;
        xd=1;
        i+=2;
    }
    for(;i<n-1;i++){
        if(maxx.i==i){
            cout<<i<<" "<<i+1<<" ";
            k-=2;
            if(maxx.i!=n-2){
                k--;
                cout<<i+2<<" ";
            }
            xd=1;
            i+=2;
            continue;
        }
        if((xd)&&(k>1)||(k>3+(maxx.i!=n-2))){
            k--;
            cout<<i<<" ";
        }
    }

}