1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 #define MAXN 100010 6 #define MAXM 20 7 char s[MAXN]; 8 int wa[MAXN],wb[MAXN],wv[MAXN],ws[MAXN]; 9 int sa[MAXN],height[MAXN],rk[MAXN]; 10 int st[MAXM][MAXN],log2[MAXN]; 11 inline bool cmp(int *r,int a,int b,int L) 12 { 13 return r[a]==r[b]&&r[a+L]==r[b+L]; 14 } 15 void SA(int n,int m) 16 { 17 int i,j,p,*x=wa,*y=wb,*t; 18 for(i=0;i<m;i++) 19 ws[i]=0; 20 for(i=0;i<n;i++) 21 ws[x[i]=s[i]]++; 22 for(i=1;i<m;i++) 23 ws[i]+=ws[i-1]; 24 for(i=n-1;i>=0;i--) 25 sa[--ws[x[i]]]=i; 26 for(j=p=1;p<n;j<<=1,m=p) 27 { 28 for(p=0,i=n-j;i<n;i++) 29 y[p++]=i; 30 for(i=0;i<n;i++) 31 { 32 if(sa[i]>=j) 33 y[p++]=sa[i]-j; 34 } 35 for(i=0;i<m;i++) 36 ws[i]=0; 37 for(i=0;i<n;i++) 38 ws[wv[i]=x[y[i]]]++; 39 for(i=1;i<m;i++) 40 ws[i]+=ws[i-1]; 41 for(i=n-1;i>=0;i--) 42 sa[--ws[wv[i]]]=y[i]; 43 for(t=x,x=y,y=t,x[sa[0]]=0,p=i=1;i<n;i++) 44 x[sa[i]]=cmp(y,sa[i-1],sa[i],j)?p-1:p++; 45 } 46 } 47 void Height(int n) 48 { 49 int i,j,k; 50 for(i=1;i<=n;i++) 51 rk[sa[i]]=i; 52 for(i=k=0;i<n;height[rk[i++]]=k) 53 for(k?k--:0,j=sa[rk[i]-1];s[i+k]==s[j+k];k++); 54 } 55 void Init() 56 { 57 int i,k; 58 log2[1]=0; 59 for(i=k=2;i<MAXN;i++) 60 { 61 if(i>=(1<<k)) 62 k++; 63 log2[i]=k-1; 64 } 65 } 66 void ST(int n) 67 { 68 int i,j; 69 for(i=1;i<=n;i++) 70 st[0][i]=height[i]; 71 for(j=1;(1<<j)<=n;j++) 72 { 73 for(i=1;i+(1<<j)<=n+1;i++) 74 st[j][i]=min(st[j-1][i],st[j-1][i+(1<<(j-1))]); 75 } 76 } 77 int LCP(int i,int j) 78 { 79 i=rk[i]; 80 j=rk[j]; 81 if(i>j) 82 swap(i,j); 83 i++; 84 int k=log2[j-i+1]; 85 return min(st[k][i],st[k][j-(1<<k)+1]); 86 } 87 void DoIt(int n,int k) 88 { 89 int i,j,t; 90 for(i=1;i<=n;i++) 91 { 92 if(i+k-1>n) 93 break; 94 t=LCP(sa[i],sa[i+k-1]); 95 if(t>height[i]&&(i+k>n||i+k<=n&&t>height[i+k])) 96 { 97 for(j=sa[i];j<t+sa[i];j++) 98 putchar(s[j]); 99 putchar('\n'); 100 return; 101 } 102 } 103 puts("impossible"); 104 } 105 int main() 106 { 107 int k,n,i; 108 Init(); 109 while(~scanf("%d %s",&k,s)) 110 { 111 n=strlen(s); 112 SA(n+1,'z'+1); 113 Height(n); 114 ST(n); 115 DoIt(n,k); 116 } 117 return 0; 118 }