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
110
111
112
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>


using namespace std;

int main() {
  int n, k;
  vector<long long> a;
  vector<long long> prefix_min, prefix_max, suffix_min, suffix_max;

  scanf("%d %d", &n, &k);
  a.resize(n);
  prefix_min.resize(n + 1);
  // prefix_max.resize(n);
  // suffix_min.resize(n);
  suffix_max.resize(n + 1);

  for (int i=0; i<n; i++) {
    scanf("%d", &a[i]);
  }

  prefix_min[0] = 1e9 + 1;
  suffix_max[suffix_max.size() - 1] = -1e9 - 1;

  for (int i=1; i<=n; i++) {
    prefix_min[i] = min(prefix_min[i-1], a[i - 1]);
    // prefix_max[i] = max(prefix_max[i-1], a[i]);
  }

  for (int i=suffix_max.size() - 2; i>=0; i--) {
    // suffix_min[i] = min(suffix_max[i+1], a[i]);
    suffix_max[i] = max(suffix_max[i+1], a[i]);
  }

  // for (int i=0; i<prefix_min.size(); i++) {
  //   printf("%d ", prefix_min[i]);
  // }

  // printf("\n");

  // for (int i=0; i<suffix_max.size(); i++) {
  //   printf("%d ", suffix_max[i]);
  // }

  // printf("\n");
  set<int> result;
  // int result = -1;

  if (k == 2) {
    // 5 2 1 2 3 1 1
    // 5 2 5 4 3 2 1
    // 2 2 2 1
    // 2 2 1 2
    // 5 2 1 2 3 4 5

    for (int i=1; i<n; i++) {
      if (prefix_min[i] >= suffix_max[i]) {
        result.insert(i);
        break;
      }
    }
  } else if (k == 3) {
    // 5 3 1 2 3 1 2

    for (int i=1; i<n - 1; i++) {
      if (prefix_min[i] >= a[i] || suffix_max[i + 1] <= a[i]) {
        result.insert(i);
        result.insert(i + 1);
        break;
      }
    }
  } else {
    // 5 4 1 2 3 4 1
    // 4 4 1 2 3 4

    for (int i=1; i<a.size(); i++) {
      if (a[i-1] >= a[i]) {
        result.insert(i - 1);
        result.insert(i);
        result.insert(i + 1);
        break;
      }
    }
  }


  if (result.empty()) {
    puts("NIE");
  } else {
    result.erase(0);
    result.erase(a.size());

    for (int i=1; result.size() < k - 1; i++) {
      result.insert(i);
    }

    // assert(result.size() == k - 1);

    puts("TAK");
  }

  for (auto itr: result) {
    // assert(itr >= 1);
    // assert(itr < n);
    printf("%d ", itr);
  }

  return 0;
}