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
#include <bits/stdc++.h>


using namespace std;

void recur(vector<pair<int, int>> &wagi, vector<int> &pref, vector<bool> &czy, int i, int ile, int n){
	 if (i == n-1) return;
	 pref[i] = pref[max(i-1, 0)] + wagi[i].first;
	 if (wagi[i].first + ile > wagi[i+1].first) {
		 recur(wagi, pref, czy, i+1,  pref[i], n);
		 czy[wagi[i].second] = czy[wagi[i+1].second];
	 }
	 if (wagi[i].first == wagi[i+1].first && ile == 0)
	 {
		 recur(wagi, pref, czy, i + 1, 0, n);
		  czy[wagi[i].second] = czy[wagi[i+1].second];
	  }
	 else recur(wagi, pref, czy, i+1, pref[i], n);
	}


int main(){
	int n;
	cin >> n;
	vector<pair<int, int>> wagi;
	int x = 0;
	int pop = 3;
	bool czy = false;
	for (int i = 0; i < n; i++){
		cin >> x;
		if (i && x != pop) czy = true;
		wagi.push_back(make_pair(x, i));
		pop = x;
	}
	sort(wagi.begin(), wagi.end());
	vector<int> pref(n, 0);
	vector<bool> cczy(n);
	cczy[wagi[n-1].second] = czy;
	recur(wagi, pref, cczy, 0, 0, n);
	for (int i = 0; i < n; i++){
		if (cczy[i]) cout << "T";
		else cout << "N";
	}
	return 0;
}