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
#if defined(EMBE_DEBUG) && !defined(NDEBUG)
#include "embe-debug.hpp"
#else
#define LOG_INDENT(...) do {} while (false)
#define LOG(...) do {} while (false)
#define DUMP(...) do {} while (false)
#endif

#include <optional>
#include <vector>
#include <iostream>
using namespace std;

namespace {

optional<vector<int>> solve(int n, vector<int> const& max_sums)
{
  for (int a = 1; a <= n; ++a) {
    for (int b = a; a + b <= n; ++b) {
      if (max_sums[a] + max_sums[b] < max_sums[a + b]) return {};
    }
  }
  vector<int> res;
  res.reserve(n);
  for (int l = 1; l <= n; ++l) {
    res.emplace_back(max_sums[l] - max_sums[l - 1]);
  }
  return res;
}

}

int main()
{
  iostream::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  cin >> n;
  vector<int> max_sums(n + 1);
  for (int l = 1; l <= n; ++l) {
    cin >> max_sums[l];
  }

  auto res = solve(n, max_sums);
  if (!res) {
    cout << "NIE\n";
  } else {
    cout << "TAK\n";
    cout << res->size() << '\n';
    bool first = true;
    for (auto const& x: *res) {
      if (first) first = false;
      else cout << ' ';
      cout << x;
    }
    cout << endl;
  }

  return 0;
}