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
// Daniel Grzegorzewski
// while (clock()<=69*CLOCKS_PER_SEC)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx,avx2,fma")

#define MP make_pair
#define PB push_back
#define ST first
#define ND second

using namespace __gnu_pbds;
using namespace std;

template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

//X.find_by_order(k); - zwraca iterator na k-ty element (numeracja od zerowego)
//X.order_of_key(k); - zwraca liczbę elementów ostro mniejszych niż k

typedef pair<int, int> PII;
typedef vector<int> VI;
typedef vector<PII> VII;
typedef long long LL;

void init_ios() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
}

auto random_address = [] { char *p = new char; delete p; return uint64_t(p); };
 
const uint64_t SEED = chrono::steady_clock::now().time_since_epoch().count() * (random_address() | 1);
mt19937_64 rng(SEED);

const int N = 5*(int)1e5 + 3;

int n, k, id, a[N];
int prmn[N], sfmx[N];

int main() {
  init_ios();
  cin >> n >> k;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
    prmn[i] = a[i];
    if (i > 1)
      prmn[i] = min(prmn[i], prmn[i-1]);
    if (i > 1 && a[i-1] >= a[i])
      id = i;
  }
  for (int i = n; i >= 1; --i) {
    sfmx[i] = a[i];
    if (i < n)
      sfmx[i] = max(sfmx[i], sfmx[i+1]);
  }
  if (id == 0) {
    cout<<"NIE\n";
    return 0;
  }
  if (k >= 4) {
    cout<<"TAK\n";
    set<int> ids{id-1, id};
    if (id > 2)
      ids.insert(id-2);
    for (int i = 1; (int)ids.size() < k-1; ++i)
      ids.insert(i);
    for (int x: ids)
      cout<<x<<" ";
    cout<<"\n";
    return 0;
  }
  if (k == 2) {
    for (int i = 1; i < n; ++i)
      if (prmn[i] >= sfmx[i+1]) {
        cout<<"TAK\n"<<i<<"\n";
        return 0;
      }
    cout<<"NIE\n";
    return 0;
  }
  for (int i = 1; i < n; ++i)
    if (a[i] == sfmx[1]) {
      set<int> ids;
      ids.insert(i);
      if (i > 1)
        ids.insert(i-1);
      else
        ids.insert(i+1);
      cout<<"TAK\n";
      for (int x: ids)
        cout<<x<<" ";
      cout<<"\n";
      return 0;
    }
  for (int i = 2; i < n; ++i)
    if (prmn[i] == a[i]) {
      cout<<"TAK\n"<<i-1<<" "<<i<<"\n";
      return 0;
    }
  cout<<"NIE\n";
}