#include <bits/stdc++.h>
using namespace std;
set<string> an;
string ans;
bool check(string &s, int pos, int n)
{
string ns;
for (int i = 0; i < n; i++) {
if (i != pos) ns += s[i];
}
//cout << ns << '\n';
bool c = true;
for (int i = 0; i < n / 2; i++) {
if (ns[i] != ns[i + n / 2]) c = false;
}
if (c) {
string t;
for (int i = 0; i < n / 2; i++) {
t += ns[i];
}
ans = t;
}
return c;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
string s;
cin >> s;
if (!(n & 1)) {
cout << "NOT POSSIBLE";
return 0;
}
// int sl = n / 2;
// int ct = 0;
// for (int i = 0; i < n; i++) {
// if (check(s, i, n)) an.insert(ans);
// }
vector<int> suf(n / 2 + 2, 1);
for (int i = n / 2; i >= 0; i--) {
//cout << s[i] << ' ' << s[i + n / 2] << '\n';
if (s[i] != s[i + n / 2]) suf[i] = 0;
if (!suf[i + 1]) suf[i] = 0;
}
string ans;
string r;
for (int j = n / 2 + 1; j < n; j++) r += s[j];
for (int i = 0; i <= n / 2; i++) {
//cout << s[i] << ' ' << suf[i + 1] << '\n';
if (suf[i + 1]) {
an.insert(r);
break;
}
if (s[i] != s[i + n / 2 + 1]) break;
ans += s[i];
}
reverse(s.begin(), s.end());
vector<int> suf2(n / 2 + 2, 1);
for (int i = n / 2; i >= 0; i--) {
//cout << s[i] << ' ' << s[i + n / 2] << '\n';
if (s[i] != s[i + n / 2]) suf2[i] = 0;
if (!suf2[i + 1]) suf2[i] = 0;
}
string r2;
string ans2;
for (int j = n - 1; j >= n / 2 + 1; j--) r2 += s[j];
for (int i = 0; i <= n / 2; i++) {
//cout << s[i] << ' ' << suf[i + 1] << '\n';
if (suf2[i + 1]) {
an.insert(r2);
break;
}
if (s[i] != s[i + n / 2 + 1]) break;
ans2 += s[i];
}
if (an.size() >= 2) cout << "NOT UNIQUE";
else if (an.size() == 0) cout << "NOT POSSIBLE";
else cout << *an.begin();
return 0;
}
/*
7
ABCAXBC
1..|1..
abcdefg
ABXCABC
0123456
vector<int> suf(n / 2 + 1, true);
for (int i = n / 2; i >= 0; i--) {
if (suf[i] != suf[i + n / 2]) suf[i] = false;
suf[i] |= suf[i + 1];
}
*/