semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void main()
{char a[501],x,y,z,h;int n,c[501],i,m,r,max,j,t,b[501];
scanf("%d",&n);
	  scanf("%s",a);
m=strlen(a);

for(r=0;r<m;r++)
b[r]=0;

    if(n==2)
		{
		for(i=0;i<m-1;i++)
		{
			x=a[i];y=a[i+1];c[i]=0;
		for(j=0;j<m-1;j++)
			if(a[j]==x && a[j+1]==y) {c[i]++;b[j]=i;}
		}
		}
   else if(n==3)
	   {
	   for(i=0;i<m-2;i++)
	   {
			x=a[i];y=a[i+1];z=a[i+2];c[i]=0;
		for(j=0;j<m-1;j++)
			if(a[j]==x && a[j+1]==y && a[j+2]==z) {c[i]++;b[j]=i;}
	   }
		}
   else if(n==4)
	   {
	   for(i=0;i<m-2;i++)
	   {
			x=a[i];y=a[i+1];z=a[i+2];h=a[i+3];c[i]=0;
		for(j=0;j<m-1;j++)
			if(a[j]==a[i] && a[j+1]==a[i+1] && a[j+2]==a[i+2] && a[j+3]==a[i+3]) {c[i]++;b[j]=i;}
	   }
		}


max=0;

    if(n==2)
        {for(i=0;i<m-1;i++)
			if(c[i]>max) {max=c[i];t=i;}
			if(max==1) printf("NO");
			else
			{
			printf("%d\n",c[t]);
			for(i=0;i<m-1;i++)
				if(c[i]==max && b[i]!=0)
				{
					printf("%c%c\n",a[i],a[i+1]);
					for(r=i+1;r<m;r++)
						if(b[r]==b[i]) b[r]=0;
				}
			}
			
		}
	else if(n==3)
        {for(i=0;i<m-2;i++)
			if(c[i]>max) {max=c[i];t=i;}
			if(max==1) printf("NO");
			else
			{
			printf("%d\n",c[t]);

			for(i=0;i<m-2;i++)
				if(c[i]==max && b[i]!=0)
				{
					printf("%c%c%c\n",a[i],a[i+1],a[i+2]);
				    for(r=i+1;r<m;r++)
						if(b[r]==b[i]) b[r]=0;
				}
			}
				
		}
      else if(n==4)
		  {for(i=0;i<m-3;i++)
			if(c[i]>max) {max=c[i];t=i;}
			if(max==1) printf("NO");
			else
			{
			printf("%d\n",c[t]);
			for(i=0;i<m-3;i++)
				if(c[i]==max && b[i]!=0)
				{
					printf("%c%c%c%c\n",a[i],a[i+1],a[i+2],a[i+3]);
					for(r=i+1;r<m;r++)
						if(b[r]==b[i]) b[r]=0;
				}
			}
			
		  }


}
int main ( )
{
	char a[501] ;
	char *p ;
	p = a ;
	int i=0,j,k ;
	int n ;
	int sum = 0 ;
	int s[501] = {0} ;
	cin >> n ;
	cin.get( ) ;

	while(1)
	{
		*(p+i)=cin.get();
		if(*(p+i)=='\n')
			break;
		i++;
	}
	cout << endl ;
	sum = i ;
	char f[501][5] ;
	char (*q)[5] ;
	q = f ;
	int g[501] = {0} ;
	for( i = 0 ; i <= sum - n ; i++ ) 
	{
		for( j = i,k=0 ; j <= n-1+i,k<=n-1 ; j++,k++ )
		{
			*(*(q+i)+k) = *(p+j) ;	
		}
	}
	int flag[501] = {0} ;
	k = 0 ;
	int t ;

	for( i = 0 ; i <= sum - n ; i++ )
	{
		if(flag[i]==1)
		{
			k--;
			continue ;
		}
		for( j = i ; j <= sum - n ; j++ )
		{
						for( t = 0 ; t <= n - 1 ; t++ )
			{
			   if(*(*(q+i)+t)!=*(*(q+j)+t))
			   {
			       break;
			   }
			}
			if(t==n)
			{
			g[i]++;
			flag[j]=1;
			}

		}
		k++ ;
	}
	int l = 0 ;
	for( i = 0 ; i <= sum - n ; i++ )
	{
		l = max(g[i],l) ;
	}
	if(l>=2)
	{
		cout << l << endl ;
		for( i = 0 ; i <= sum - n ; i++ )
		{
			if(g[i]==l)
			{
				for( t = 0 ; t <= n - 1 ; t++ )
				{
					cout <<*(*(q+i)+t) ;
				}
				cout << endl ;
			}
		}
	}
	else
		cout << "NO" << endl ;
	return 0 ;
}
int main()
{
	char a[500],b[501][6]={0};
	int n,i,j,k,l,m,x,y,z;
	scanf("%d",&n);
	scanf("%s",a);
	k=strlen(a);
	l=1;
	for(i=0;i<n;i++) b[0][i]=a[i];
	b[0][4]=1;
	b[0][5]=0;
	for(i=1;i<=k-n;i++)
	{
		y=0;
		for(j=0;j<l;j++)
		{
			x=0;
			for(m=0;m<n;m++)
			{
				if(a[i+m]!=b[j][m]) x++;
			}
			if(x==0) {b[j][4]++;y++;}
		}
		if(y==0) 
		{
			for(m=0;m<n;m++) b[l][m]=a[i+m];
			b[l][4]=1;
			b[l][5]=l;
			l++;
		}
	}
	for(i=0;i<l-1;i++)
	{
		for(j=i+1;j<l;j++)
		{
			if(b[j][4]>b[i][4]) 
			{
				for(z=0;z<6;z++)
				{b[500][z]=b[j][z];b[j][z]=b[i][z];b[i][z]=b[500][z];}
			}
		}
	}
	if(b[0][4]==1) printf("NO");
	else
	{
	printf("%d",b[0][4]);
	z=1;
	for(i=1;i<l;i++)
	{
		if(b[i][4]==b[i-1][4]) z++;
		else break;
	}
	for(i=0;i<z-1;i++)
	{
		for(j=i+1;j<z;j++)
		{
			if(b[j][5]<b[i][5]) 
			{
				for(k=0;k<6;k++)
				{b[500][k]=b[j][k];b[j][k]=b[i][k];b[i][k]=b[500][k];}
			}
		}
	}
	for(i=0;i<z;i++) 
	{
		printf("\n");
		for(j=0;j<n;j++) printf("%c",b[i][j]); 
	}
	}
	return 0;
}
int main()
{
 char a[501],b[501][5];
 int c[501];
 int n,i,l,j,p,k;
 scanf("%d\n",&n);
 gets(a);
 l=strlen(a);
 for(i=0;i<l;i++)
  c[i]=1;
 for(i=0;i<l;i++)
 {
  for(j=0;j<n;j++)
  {
   b[i][j]=a[i+j];
  }
  b[i][j]='\0';
  for(p=0;p<i&&strcmp(b[p],b[i])!=0;p++) {}
  if(p<i) c[p]++;
 }
 k=c[0];
 for(i=0;i<l;i++)
 {
  if(c[i]>k) k=c[i];
 }
 if(k==1) printf("NO");
 
 else
 {printf("%d\n",k);
 for(i=0;i<l;i++)
 {
  if(c[i]==k)
  {printf("%s\n",b[i]);}
 }}
 return 0;
}
int main()
{
char BeatFCbarcelona[500]={'\0'};
char substr[500][500]={'\0'};
int halamadrid[500]={0};
int k=0;
int store[500][3]={'\0'};
int i,j;
int n;
int len;
int max=0;
scanf("%d",&n);
scanf("%s",BeatFCbarcelona);
len=strlen(BeatFCbarcelona);
for(i=0;i<len-n+1;i++)
{
for(j=0;j<n;j++)
substr[i][j]=BeatFCbarcelona[i+j];
}
for(i=0;i<len-n+1;i++)
{
for(j=0;j<len-n+1;j++)
{
if(strcmp(substr[i],substr[j])==0)
halamadrid[i]++;
}
}
for(i=0;i<len-n+1;i++)
{
if(halamadrid[i]>max)
max=halamadrid[i];
}
if(max>1)
{
printf("%d\n",max);
for(i=0;i<len-n+1;i++)
{
if(halamadrid[i]==max)
{
strcpy(store[i],substr[i]);
for(j=0;j<i;j++)
{
if(strcmp(store[j],substr[i])==0)
k++;
}
if(k==0)
printf("%s\n",substr[i]);
}
k=0;
}
}
else printf("NO\n");
return 0;
}
void main(){
	char a[500];
	int n,max=0;
	scanf("%d",&n);
	scanf("%s",a);
	int i,j,k,l,x;
	l=strlen(a);
	int c[500];
	c[0]=1;
	for(i=1;i<=l-n;i++)
	{
		for(j=0;j<i;j++)
		{
			for(k=0;k<n;k++)
			{
				if(a[i+k]!=a[j+k])
				{
					break;
				}
			}
			if(k==n) 
				{
					c[j]++;
					c[i]=0;
					break;
				}
		}
		if(j==i) c[i]=1;
	}
	for(i=0;i<=l-n;i++)
	{
		if(max<c[i]) 
		{
			max=c[i];
		}
	}
	if(max>1)
	{
	printf("%d\n",max);
	for(i=0;i<=l-n;i++)
	{
		if(c[i]==max)
		{
			for(j=i;j<i+n;j++)
			{
				printf("%c",a[j]);
			}
			printf("\n");
		}
	}
	}
	else printf("NO");
	scanf("\n");
}
int main()
{
	char a[501]={0};
	int m=0;
	scanf("%d",&m);
	scanf("%s",a);
	char b[strlen(a)-m+1][m];
	int c[499]={0};
	int d[strlen(a)-m+1];
	for(int i=0;i<strlen(a)-m+1;i++)
	    {
		for(int j=0;j<m;j++)
		    b[i][j]=a[i+j];	
		}	
    for(int i=0;i<strlen(a)-m;i++)
	    {
		for(int j=i+1;j<strlen(a)-m+1;j++)
		    {
			for(int k=0;k<m;k++)
			    {
				if(b[i][k]!=b[j][k])
				   break;
				else
				   if(k==m-1)
				     c[i]++;	
				}	
			}
		    	
		}
		int max;
		max=c[0];
	for(int i=1;i<strlen(a)-m+1;i++)
	    {
		if (c[i]>max)
		    max=c[i];	
		}
		int count=0;
	for(int i=0;i<strlen(a)-m+1;i++)
	    {
		if(c[i]==max)
		   {
		    d[count]=i;
			count++;		
		   }	
		}
	if(max==0)
	   printf("NO");
	else
	{
	printf("%d\n",max+1);
	for(int i=0;i<count;i++)
	    {
		int p=d[i];
		for(int j=0;j<m;j++)
		    printf("%c",b[p][j]);
		printf("\n");	
		}
    }
}
main()
{
	char w[1000];
	char sub[1000][50];
	int s[1000]={0};
	int k,t,n=0,m=0,i,j;
	scanf("%d",&n);getchar();
	gets(w);
	
	t=strlen(w);
	
	for(i=0;i<=t-n;i++)
	{
		for(j=0;j<n;j++)
		sub[i][j]=w[i+j];
	sub[i][n]='\0';
	
	}
	for(i=0;i<=t-n;i++)
	{for(j=i;j<=t-n;j++)
			if(strcmp(sub[i],sub[j])==0)
				s[i]++;
			
	}
	for(i=0;i<t-n;i++)
		if(s[i]>m)m=s[i];
if(m==1)printf("NO\n");
else{
		printf("%d\n",m);
for(i=0;i<=t-n;i++)

if(s[i]==m)
printf("%s\n",sub[i]);
}


}
void main()
{
	char s[N],a[N-2][6],t[6];
	int n,i,j,k,l,b[N-2];
	scanf("%d%s",&n,s);
	l=strlen(s);
	for(i=0;i<l;i++)
		b[i]=0;
	strncpy(a[0],s,n);
	t[n]=a[0][n]=0;
	b[0]++;
	for(i=1;i<=l-n;i++)
	{
		strncpy(t,s+i,n);
		for(j=0;b[j]!=0;j++)
		{
			if(strcmp(a[j],t)==0)
			{
				b[j]++;
				break;
			}
		}
		if(b[j]==0)
		{
			strcpy(a[j],t);
			b[j]++;
		}
	}
	for(k=i=0;b[i]!=0;i++)
		if(b[i]>k)
			k=b[i];
	if(k==1)
		printf("NO\n");
	else
	{
		printf("%d\n",k);
		for(i=0;b[i]!=0;i++)
			if(b[i]==k)
				printf("%s\n",a[i]);
	}
}
main()
{   int n,i,j,k,l,len,max[501],da;
    char s[501],a[501][6];
    scanf("%d\n",&n);
     gets(s);
      for(i=0;i<501;i++)
     max[i]=1;
     len=strlen(s);j=0;k=0;
    while(j<=len-n)
    {  i=0;
       while(i<n)
      { a[j][i]=s[k];k++;i++; } 
       j++;k=j;    }
      for(i=1;i<=len-n;i++)
      if(strcmp(a[0],a[i])==0)
      max[0]++;
      for(l=1;l<=len-n;l++)
     { for(i=l+1;i<=len-n;i++)
      if(strcmp(a[l],a[i])==0)
      max[l]++;}
        da=max[0];
        for(j=1;j<=len-n;j++)
        if(max[j]>da)
          da=max[j];
            if(da<=1)printf("NO");
            else{   printf("%d\n",da);
        for(j=0;j<=len-n+1;j++)
        {        if(max[j]==da)
         puts(a[j]);}
                }
}
int main()
{
	int a[500]={0},n,l,i,j,max=0;
	char s[501];
	scanf("%d\n",&n);
	gets(s);
	char b[501][5]={0};
	l=strlen(s);
	for(i=0;i<=l-n;i++)
	{
		for(j=0;j<n;j++)
		{
		b[i][j]=s[i+j];
	    }
	}
	for(i=0;i<=l-n;i++)
	{
		for(j=i+1;j<=l-n;j++)
		{
			if(strcmp(b[i],b[j])==0) a[i]++;
		}
		if(a[i]>max) max=a[i];
	}
	if(max==0) printf("NO"); 
	else 
	{
		 printf("%d\n",max+1);
	     for(i=0;i<=l-n;i++)
	     if(a[i]==max)  printf("%s\n",b[i]);
	}
}
int main()
{
	int n,i,j,k,a[500]={0},max,len,m;  //a????
	char s[502],c[500][10],b[10]; //c????n?????
	scanf("%d",&n);
	scanf("%s",s);
	len=strlen(s);
	for(i=0;i<n;i++)
		c[1][i]=s[i];
	c[1][n]='\0';
	a[1]=1;
	j=1;
	for(i=1;i<len-n+1;i++)
	{
		for(k=0;k<n;k++)
			b[k]=s[i+k];
		b[n]='\0';
		for(m=1;m<j+1;m++)
		{
			if(strcmp(b,c[m])==0)
			break;
		}
		if(m==j+1)
		{
			j++;
			strcpy(c[j],b);
			a[j]=1;
		}
		else
			a[m]++;
	}
    max=1;
	for(i=1;i<500;i++)
	{
		if(max<a[i])
		{
			max=a[i];
		}
	}
	if(max==1)
	{
		printf("NO\n");
		return 0;
	}
	printf("%d\n",max);
	for(i=1;i<500;i++)
	{
		if(a[i]==max)
		printf("%s\n",c[i]);
	}
	return 0;
}
int main()
{
	int n,i,j,k,p,l,temp,sum[600],real[600],realreal[600][3];
	char s[600],a[600][6]={'\0'},b[600][6]={'\0'};
	scanf("%d",&n);
	scanf("%s",s);
	l=strlen(s);
	for(i=0;i<=599;i++)
		sum[i]=1;
	for(i=0;i<=l-n;i++)
		for(j=0;j<=n-1;j++)
			a[i][j]=s[i+j];
	for(i=1;i<=l-n;i++)
	{
		for(j=0;j<=i-1;j++)
		{
				if(strcmp(a[i],a[j])==0)
					sum[i]++;
		}
	}
	k=0;
	real[0]=sum[l-n];
	for(i=0;i<=n-1;i++)
		b[0][i]=a[l-n][i];
	for(i=l-n-1;i>=0;i--)
	{
		for(j=l-n;j>=i+1;j--)
		{
			if(strcmp(a[i],a[j])==0)
				break;
		}
		if(j==i)
		{
			k++;
			real[k]=sum[i];
			for(p=0;p<=n-1;p++)
				b[k][p]=a[i][p];
		}
	}
	for(i=0;i<=k;i++)
	{
		realreal[i][0]=real[i];
		realreal[i][1]=i;
	}
	if(k==0)
	{
		printf("%d\n",l-n+1);
		for(i=0;i<=n-1;i++)
			printf("%c",a[0][i]);
			printf("\n");
	}
	else
	{
	for(i=0;i<=k-1;i++)
	{
		for(j=i+1;j<=k;j++)
		{
			if(realreal[i][0]<realreal[j][0])
			{
				temp=realreal[i][0];
				realreal[i][0]=realreal[j][0];
				realreal[j][0]=temp;
				temp=realreal[i][1];
				realreal[i][1]=realreal[j][1];
				realreal[j][1]=temp;
			}
		}
	}
	if(realreal[0][0]==1)
		printf("NO");
	else
	{
		for(i=1;i<=k;i++)
		{
			if(realreal[i][0]!=realreal[0][0])
				break;
		}
		printf("%d\n",realreal[0][0]);
		for(p=0;p<=i-1;p++)
		{
			for(j=0;j<=l-n;j++)
			{
				if(strcmp(b[realreal[p][1]],a[j])==0)
				{
					realreal[p][2]=j;
					break;
				}
			}
		}
		if(i>=2)
		{
		for(p=0;p<=i-2;p++)
		{
			for(j=p+1;j<=i-1;j++)
			{
				if(realreal[p][2]>realreal[j][2])
				{	
					temp=realreal[p][2];
					realreal[p][2]=realreal[j][2];
					realreal[j][2]=temp;
					temp=realreal[p][1];
					realreal[p][1]=realreal[j][1];
					realreal[j][1]=temp;
				}
			}
		}
		}
		for(p=0;p<=i-1;p++)
		{
			for(j=0;j<=n-1;j++)
				printf("%c",a[realreal[p][2]][j]);
				printf("\n");
		}
	}
	}
    return 0;
}
//********************************
//*????3.cpp   **
//*?????? 1300012966 **
//*???2013.12.12  **
//*???n-gram????   **
//********************************
int main()
{
	int n, k, i, j, l, t, most = 1, a[501] = { 0 }, num = 0, b[501];
	char s[501], *p;
	cin >> n;
	cin >> s;
	p = s;
	l = strlen(s);
	for (i = 0; i < l - n; i++)
	{
		if (a[i] == 0)
		{
			t = 1;
			for (j = i + 1; j <= l - n; j++)
			{
				if (a[j] == 0)
				{
					k = 0;
					while ((*(p + j + k) ==*(p + i + k)) && (k < n))
					{
						k++;
					}
					if (k == n)
					{
						t++;
						a[j] = 1;
					}
				}
			}
			if (t > most)
			{
				most = t;
				num = 1;
				b[1] = i;
			}
			else
			{
				if (t == most)
				{
					num++;
					b[num] = i;
				}
			}
		}
	}
	if (most == 1)
	{
		cout << "NO";
	}
	else
	{
		cout << most << endl;
		for (i = 1; i <= num; i++)
		{
			for (j = 0; j < n; j++)
			{
				cout << *(p + b[i] + j);
			}
			cout << endl;
		}
	}
	return 0;
}
void main()
{
   int n,total;
   char in[550];
   char sp[510][500];
   scanf("%d%s",&n,in);
    int i,j,k;
	total=strlen(in)-n+1;
	for(i=0;i<total;i++)
	{
		for(k=0;k<n;k++){sp[i][k]=in[i+k];}
		sp[i][k]=0;
	}
	
	int flag[510]={0},count[510]={0};
   for(i=0;i<total;i++)
   {
      for(j=i;j<total;j++)
		  if(flag[j]==0)
		  {
            if(strcmp(sp[i],sp[j])==0)
			{ 
		       flag[j]=1;count[i]++;
			} 
		  }
   }
   int max;
   max=count[0];
   for(i=0;i<total;i++)
   {
     if(count[i]>max)max=count[i];
   }
   if(max!=1)
   {
   printf("%d\n",max);
   for(i=0;i<total;i++)
   {
     if(count[i]==max)printf("%s\n",sp[i]);
   }
   }
   else printf("NO\n");
}
int main()
{
	int n,l,i,j,k,p,q,d,a[501]={0};
	char s[501]={0};
	scanf("%d\n",&n);
	gets(s);
	l=strlen(s);
	p=0;
	d=1;
	for(i=0;i<l;i=i+1)
		for(j=i+1;j<l;j=j+1)
		{
			q=0;
			for(k=0;k<n;k=k+1)
			{
				if (s[i+k]!=s[j+k])  
				{
					q=1;
					break;
				}
			}
			if (q==0) a[i]=a[i]+1;
			if (a[i]>p) 
			{
				p=a[i];
				d=1;
			}
			else if (a[i]==p)
				d=d+1;
		}
		if (p==0) printf("NO");
		else
		{
			printf("%d\n",p+1);
			for (i=0;i<l;i=i+1)
			{
				if (a[i]==p)
				{
					for(k=0;k<n;k=k+1) printf("%c",s[i+k]);
					d=d-1;
					if(d) printf("\n");
				}
			}
		}
}
int main()
{
	char word[600];
	char gram[600][10] , temp[600][10];
	int cnt[600];
	int count=0;
	int i , j , n  , len , max = 1;
	cin >> n;
	cin.get();
	cin.getline(word,600);
	len = strlen(word);
	for(i = 0 ; i < 600 ; i++)
		cnt[i] = 0;
	for(i = 0 ; i <  len - n + 1 ; i++)
	{
		for(j = i ; j <= i + n - 1 ; j++)
		{
			gram[i][count] = word[j];
			count++;
		}
		gram[i][count] = '\0';
		count = 0;
	}
	for(i = 0 ; i < len - n + 1 ; i++)
		strcpy(temp[i],gram[i]);
	for(i = 0 ; i < len - n + 1 ; i++)
		for(j = 0 ; j < len - n + 1 ; j++)
		{
			if(strcmp(gram[i],temp[j]) == 0)
				cnt[i]++;
		}
	for(i = 0 ; i < len - n + 1 ; i++)
	{
		if(cnt[i] > max)
			max = cnt[i];
	}
	if(max > 1)
	{
		cout << max << endl;
		for(i = 0 ; i < len - n + 1 ; i++)
		{
			if(cnt[i] == max && i == 0)
				cout << gram[i] << endl;
			if(cnt[i] == max && i > 0)
			{
				for(j = 0 ; j < i  ; j++)
				{
					if(strcmp(gram[i],gram[j]) == 0)break;
					if(j == i - 1)
						cout << gram[i] << endl;
				}
			}
		}
	}
	else
		cout << "NO" << endl;
	return 0;
}
char dp[10000];
int num[10000],n;
int main()
{
    int i,j,len,flag=1,max=0,k;
    scanf("%d",&n);
    scanf("%s",dp);
    len=strlen(dp);
    for(i=0;i+n-1<len;i++)
    for(j=i;j+n-1<len;j++)
    {
                          flag=1;
                          for(k=0;k<n;k++)
                          {
                                          if(dp[i+k]!=dp[j+k])
                                          {
                                          flag=0;
                                          break;
                                          }
                          }
                          if(flag==1)
                          {
                          num[i]++;
                          }
                          if(num[i]>max)
                          max=num[i];
    }
    if(max==1){
    printf("NO");
    return 0;
    }
    printf("%d",max);
    for(i=0;i<len;i++)
    if(num[i]==max)
    {printf("\n");
    for(j=0;j<n;j++)
    printf("%c",dp[i+j]);
    }
    //getch();
    return 0;
}
main()
{
	char str[600],str1[10];
	int n,a[500]={0},i,j,k,l,m,p,temp,max;
	scanf("%d",&n);
	scanf("%s",&str);
	l=strlen(str);
	for(i=0;i<=l-n-1;i++)
	{
		a[i]=1;
		for(j=0;j<=n-1;j++)
		{
			str1[j]=str[i+j];
		}
		for(k=(i+1);k<=l-n;k++)
		{
			for(m=k,p=0,temp=0;p<=n-1;m++,p++)
			{
				if(str[m]==str1[p])
				{
					temp++;
				}
				else
				{
					break;
				}
			}
			if(temp==n)
			{
				a[i]=(a[i]+1);
				a[k]=-5000;
			}
		}
	}
	max=a[0];
	temp=1;
	for(i=1;i<=l-n-1;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
		}
		if(a[i]==max)
		{
			temp++;
		}
	}
	if(max!=1){
	printf("%d\n",max);
	for(i=0;i<=l-n;i++)
	{
		if(a[i]==max)
		{
			for(p=i;p<=i+n-1;p++)
			{
				printf("%c",str[p]);
			}
			printf("\n");
		}
	}
	}
	else
	{
		printf("NO\n");
	}
	return 0;
}
void main()
{
	int n,i,j=0,k=0,len,flag=0;
	char str[501],word[500][6];
	for(i=0;i<500;i++)
		for(j=0;j<6;j++)
			word[i][j]='\0';
	scanf("%d\n",&n);
    gets(str);
	len=strlen(str);
	j=0;k=0;
    for(i=0;i<len;i++)
	{
	   word[k][j]=str[i];
	   j++;
	   if(j==n) 
	   {
		   k++;
		   i=i-n+1;
		   j=0;
	   }
	}
	int count[501]={0};
	for(i=0;i<k;i++)
	 if(word[i][0]!=0)
	 {
		 for(j=i+1;j<k;j++)
			 if(strcmp(word[i],word[j])==0) {count[i]++; word[j][0]=0;}
	 }
	for(i=0;i<k;i++)
		if(count[i]!=0) break;
	if(i==k) printf("NO");
	else
	{
	for(i=0;i<k;i++)
	{
		for(j=0;j<k;j++)
			if(count[i]<count[j]) break;
			if(j==k) {printf("%d\n",count[i]+1); printf("%s\n",word[i]);flag=1;}
		if(flag==1) break;
	}
	for(i=i+1;i<k;i++)
    {
		for(j=0;j<k;j++)
			if(count[i]<count[j]) break;
			if(j==k) {printf("%s\n",word[i]);}
	}
    }
}
int main()
{
    int n,l,i,j,m,a[1000]={0};
    char ch[1000]={0},str[1000][1000]={0};
    scanf("%d",&n);
    getchar();
    gets(ch);
    l=strlen(ch);
    for(i=0;i<l-n+1;i++)
    {
        m=0;
        for(j=i;j<i+n;j++)
        {
            str[i][m]=ch[j];
            m++;
        }
    }
    for(i=0;i<l-n;i++)
    {
        a[i]=1;
        for(j=i+1;j<l-n+1;j++)
        {
            if(strcmp(str[i],str[j])==0)
            a[i]=a[i]+1;
        }
    }
    for(j=0,i=0;i<l-n;i++)
    {
        if(a[i]>j) j=a[i];
    }
    if(j==1)
    printf("NO");
    else
    {printf("%d\n",j);
    for(i=0;i<l-n;i++)
    {
        if(a[i]==j) 
        puts(str[i]);
    }}
    return 0;
}
char str[500];
int n, len;
int num(char*);

int main()
{
	char  *p = NULL, *s = NULL;
	int i = 0, sum[500], max = 1, j, k = 0;
	cin >> n;
	cin >> str;
	len = strlen(str);
	p = str;
	while(p <= &str[len - n])
	{
		sum[i] = num(p);
		p++;
		i++;
	}
	for(i = 0; i <= len - n - 1; i++)
	{
		if(sum[i] > max)
		{
			max = sum[i];
		}
	}
	if(max == 1)
	{
		cout << "NO" << endl;
		return 0;
	}
	cout << max << endl;
	for(i = 0; i <= len - n; i++)
		if(sum[i] == max)
		{
			s = &str[i];
			for(j = 1; j <= n; j++, s++)
				cout << *s;
			cout << endl;
		}
	return 0;
}

int num(char *q)
{
	char *h = q + 1, *c = q, *u;
	int m, t = 0, r = 1;
	if(q >= &str[len - n])
		return 1;
	while(h != &str[len - n + 1])            
	{
		u = h;
		for(m = 1; m <= n; m++)
		{
			if(*q != *h)
				break;
			else
			{
				t++;
				h++;
				q++;
			}
		}
		if(t == n)
		{
			r++;
		}
		t = 0;
		q = c;
		h = u + 1;
	}
	return r;
}
int main()
{
	int n,i,j,len,m,count,c[300]={0},max;
	char s[501],t[300][5],*p,temp[501];
	for(i=0;i<5;i++)
		for(j=0;j<300;j++)
			t[j][i]='\0';
	scanf("%d\n",&n);
	gets(s);
	strcpy(temp,s);
	//puts(temp);
	len=strlen(s);
	for(i=0;i<=len-n;i++)
	{
		j=0;
		m=i;
		for(count=0;count<n;count++)
			t[i][j++]=s[m++];
	}
	for(i=0;i<len-n;i++)
	{
		for(j=i+1;j<=len-n;j++)
			if(strcmp(t[i],t[j])==0) c[i]++;
	}
	max=c[0];
	for(i=0;i<=len-n;i++)
			if(c[i]>max) max=c[i];
	if(max==0)
	{
		printf("NO\n");
		return 0;
	}
	printf("%d\n",max+1);
	for(i=0;i<=len-n;i++)
		if(c[i]==max) printf("%s\n",t[i]);
	//printf("%s\n",t[2]);
	return 0;
	}
int main()
{
	int num[500]={0},i,j,n,len;
	char c[500],str[500][5]={'\0'};
	scanf("%d",&n);
	scanf("%s",c);
	len=strlen(c);
	for(i=0;i<len-n+1;i++)
	for(j=0;j<n;j++)
		str[i][j]=c[i+j];
	for(i=0;i<len-n+1;i++)
	for(j=i;j<len-n+1;j++)
		if(0==strcmp(str[i],str[j]))num[i]++;
	j=num[0];
	for(i=0;i<len-n+1;i++)
		if(num[i]>j)j=num[i];
	if(j==1)printf("NO\n");
	else
	{
		printf("%d\n",j);
		for(i=0;i<len-n-1;i++)
		if(num[i]==j)puts(str[i]);
	}
	return 0;
}
int main()
{
	int n,counts[500]={0},len;  //n??????????????counts[500]???????????????len????????
	int i,j,k=0,judge=0,p=0;  //i,j,k??????judge,p?????
	char a[501],sub[500][5];  //?????a[501]???????????????????sub[500][5]??????????n????
	cin>>n;
	cin>>a;
	len=strlen(a);
	for(i=0;i<=len-n;i++)  //??????n????????sub?
	{
		strncpy(sub[i],a+i,n);
		sub[i][n]='\0';
	}
	for(i=0;i<len-n;i++)  //?????????????
	{
		if(counts[i]==-1)
			continue;
		for(j=i+1;j<=len-n;j++)
		{
			k=0;judge=0;
			while(1)
			{
				if(sub[i][k]!=sub[j][k])
				{
					judge=1;
					break;
				}
				if(sub[i][k]=='\0'&&sub[j][k]=='\0')
					break;
				k++;
			}
			if(judge==0)
			{
				counts[i]++;
				counts[j]=-1;
			}
		}
	}
	for(i=500;i>0;i--)
	{
		for(j=0;j<=len-n;j++)
		{
			if(counts[j]==i)
			{
				if(p==0)
				{
					cout<<i+1<<endl;
					p=1;
				}
				cout<<sub[j]<<endl;
			}
		}
		if(p==1)
			break;
	}
	if(p==0)
		cout<<"NO"<<endl;
	cin.get();cin.get();
	return 0;
}
int main()
{
	int n,i,j,l,count[400]={0},s,state,high[200],max=0;
	char input[550]={0},compare[400][7]={0},tem[7]={0};
	scanf("%d",&n);
	scanf("%s",input);
	l=strlen(input);
	for(j=0;j<n;j++)
	{
		compare[0][j]=input[j];
		count[0]=1;
		s=1;
	}
	for(i=1;i<l-n+1;i++)
	{
		state=0;
		for(j=0;j<n;j++)
		{
			tem[j]=input[i+j];
		}
		for(j=0;j<s;j++)
		{
			if (!strcmp(tem,compare[j]))
			{
				count[j]++;
				state=1;
				break;
			}
		}
		if (state==0)
		{
			for(j=0;j<n;j++)
			{
				compare[s][j]=input[i+j];
				count[s]=1;
			}
			s++;
		}
	}
	for(i=0;i<s;i++)
	{
		if(count[i]>max)
		{
			max=count[i];
			memset(high,0,sizeof(high));
			high[0]=i;
			j=1;
		}
		else if(count[i]==max)
		{
			high[j]=i;
			j++;
		}
	}
	if (max==1) {printf("NO\n");return 0;}
	printf("%d\n",max);
	for(i=0;i<j;i++)
	{
		printf("%s\n",compare[high[i]]);
	}
}
int main()
{
	int n,i,j,m,count[500]={0},max=1;
	for(i=0;i<500;i++)
	{
		count[i]=1;
	}

	char str[501],substr[500][5];
	scanf("%d",&n);
	scanf("%s",str);
	m=strlen(str);

	for(i=0;i<=m-n;i++)
	{
		for(j=0;j<n;j++)
		{
			substr[i][j]=str[i+j];	
		}
		substr[i][n]='\0';
	}

	for(i=0;i<=m-n;i++)
	{
		for(j=i+1;j<=m-n;j++)
		{
			if(strcmp(substr[i],substr[j])==0)
				count[i]=count[i]+1;
		}
		if(count[i]>max)
			max=count[i];

	}
	
	if(max!=1)
	{

	printf("%d\n",max);

	for(i=0;i<=m-n;i++)
	{
		if(count[i]==max)
			printf("%s\n",substr[i]);
	}
	}
	else
		printf("NO\n");




	return 0;
}
struct Ans
{
	char str[5];
	int times;
} answer[260];
int main()
{
	char a[500], temp[5];
	int n, i, j, len, p = 0, q, max = 0;
	cin >> n;
	cin >> a;
	len = strlen(a);
	for (i = 0; i <= len - n; i++)
	{
		for (j = 0; j < n; j++)
		{
			temp[j] = a[j + i];
		}
		temp[n] = '\0';
		if (p == 0)
		{
			strcpy(answer[p].str, temp);
			answer[p].times = 1;
			p++;
		}
		else
		{
			for (q = 0; q < p; q++)
			{
				if (strcmp(answer[q].str, temp) == 0)
				{
					answer[q].times++;
					q = -1;
					break;
				}
			}
			if (q == p)
			{
				strcpy(answer[p].str, temp);
				answer[p].times = 1;
				p++;
			}
		}
	}
	for (i = 0; i < p; i++)
	{
		if (answer[i].times > max)
		{
			max = answer[i].times;
		}
	}
	if (max == 1)
	{
		cout << "NO" << endl;
	}
	else
	{cout << max << endl;
	for (i = 0; i < p; i++)
	{
		if (answer[i].times == max)
		{
			cout << answer[i].str << endl;
		}
	}}
	return 0;
}
int main(int argc, char* argv[])
{
	int n;
	scanf("%d",&n);
	char s[1000];
	scanf("%s",s);
	int len=strlen(s);

	char t[600][10];
	int i,j,k;

   

	
    k=0;
	for(i=0;k+n<=len;i++)
	{
	for(j=0;j<n;j++)
	{
		t[i][j]=s[k];
		k++;
		if(j==n-1)
		{
			k=k+1-n;
		}

	}
	}

	int m;
	m=i;

	int a[600];
	for(i=0;i<600;i++)
		a[i]=1;
	for(i=0;i<m;i++)
	{
		if(a[i]!=-1)
		{
			for(j=i+1;j<m;j++)
            {
		if(strcmp(t[i],t[j])==0)
		{
			a[i]+=1;
			a[j]=-1;
		}
			}
		}
	}

	for(i=0;i<m;i++)
	{
		for(j=m-1;j>i;j--)
		{
			if(a[j-1]<a[j])
			{
				int c;
				char exc[10];
				c=a[j-1];
				a[j-1]=a[j];
				a[j]=c;
				strcpy(exc,t[j-1]);
				strcpy(t[j-1],t[j]);
				strcpy(t[j],exc);
			}
		}
	}

	if(a[0]==1)
		printf("NO");
	else
	{
		for(i=0;a[i]==a[0];i++);
		printf("%d\n",a[0]);
		for(j=0;j<i;j++)
			printf("%s\n",t[j]);
	}
	
	

	
		 
	
	return 0;
}
int main(){
	int n,a[500]={0},i,j,k,t,max;
	char s[500];
	scanf("%d\n",&n);
	gets(s);
	for(i=0;i<strlen(s);i++){
		for(j=i+1;j<strlen(s);j++){
			t=1;
			for(k=0;k<n;k++)
				if(s[i+k]!=s[j+k])
					t=0;
			if(t==1)
				a[i]++;
		}
	}
	t=0;
	for(i=0;i<strlen(s);i++)
		if(a[i]>0){
			t=1;
			break;
		}
	if(t==0)
		printf("NO");
	else{
		max=1;
		for(i=0;i<strlen(s);i++)
			if(a[i]>max)
				max=a[i];
		printf("%d\n",max+1);
		for(i=0;i<strlen(s);i++)
			if(a[i]==max){
				for(j=i;j<i+n;j++)
					printf("%c",s[j]);
				printf("\n");
			}
	}
	return 0;
}