样例过,WA on # 4~7、12~17、19、52、63
%:include<bits/stdc++.h>
//#define int long long
#define qwert std::cout<<"\n"
#define asdf std::cout<<" ";
inline int read()<%
int s=0;
int w=1;
char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())
if(ch=='-')
w=-1;
for(;ch>='0' and ch<='9';ch=getchar())
s=s*10+ch-'0';
return s*w;
%>
void write(int x)<%
if(x<0)<%
putchar('-');
x=-x;
%>
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
%>
int n,m;
bool flag1,flag2;
std::string s;
std::string op1,op2;
int point;
int main(){
n=read();
if(!(n&1)){
puts("NOT POSSIBLE");
exit(0);
}
std::cin>>s;
bool flag=false;
for(int i=1;i<n;i++)
if(s[i]!=s[i-1]){
flag=true;
break;
}
m=(n>>1);
if(!flag){
for(int i=0;i<m;i++)
putchar(s[i]);
exit(0);
}
for(int i=0;i<=m;i++)
op1+=s[i];
for(int i=m;i<n&&point<m;i++)
if(s[i]==op1[point])
point++;
if(point==m)
flag1=true;
for(int i=n-m;i<=n;i++)
op2+=s[i];
point=0;
for(int i=0;i<n-m&&point<m;i++)
if(s[i]==op2[point])
point++;
if(point==m)
flag2=true;
{
if(!flag1&&!flag2)
puts("NOT POSSIBLE");
else if(flag1&&flag2&&op1!=op2)
puts("NOT UNIQUE");
else if(flag1)
std::cout<<op1;
else
std::cout<<op2;
}
return 0;
}