semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char a[500],a4[500][4];
	int i,j,k,l,n,m,b4[500],d4[500];
	scanf("%d\n",&k);
	i=0;
	while(i<=499)
	{
		a[i]='\0';
		a4[i][0]='\0';
		a4[i][1]='\0';
		a4[i][2]='\0';
		a4[i][3]='\0';
		b4[i]=1;
		d4[i]=0;
		i=i+1;
	}
	gets(a);
	i=0;
	while(i<=499)
	{
		if(a[i]=='\0') 
		{
			n=i;
			break;
		}
		i=i+1;
	}
	if(i==500) n=499;
	i=0;
	while(i<=n-k+1)
	{
		j=0;
		while(j<=k-1)
		{
			a4[i][j]=a[i+j];
			j=j+1;
		}
		i=i+1;
	}
	
	i=0;
	while(i<=n-k+1)
	{
		j=i+1;
		while(j<=n-k+1)
		{
			if(a4[i][0]==a4[j][0]&&a4[i][1]==a4[j][1]&&a4[i][2]==a4[j][2]&&a4[i][3]==a4[j][3]) b4[i]=b4[i]+1;
			j=j+1;
		}
		i=i+1;
	}

	i=0;
	while(i<=499)
	{
		d4[i]=b4[i];
		i=i+1;
	}

	i=499;
	while(i>=1)
	{
		if(b4[i]>b4[i-1]) b4[i-1]=b4[i];
		i=i-1;
	}
	m=b4[0];
	i=0;
	if(m==1) 
	{
		printf("NO");
	}
	else
	{
		printf("%d",m);
		while(i<=499)
		{
			if(d4[i]==m) 
			{
				printf("\n");
				j=0;
				while(j<=k-1)
				{
					printf("%c",a4[i][j]);
					j=j+1;
				}
			}
			i=i+1;
		}
	}
}
int main()
{
	int n,i,j=0,k,m=0,c[500]={0};//c???????
	int r,u=0;
	char a[500],b[500][6],temp[6]; //a???????b???????
	scanf("%d %s",&n,a);
	for(i=0;i<strlen(a)-n+1;i++)
	{
		for(j=0;j<n;j++)
		{
		  b[u][j]=a[i+j];
		}
		b[u][n]='\0';
		  u++;
		if(u==(strlen(a)-n+1))  
			  break;
	}
	for(i=0;i<u-1;i++)
	{
		int count=0;
		for(k=i;k<u;k++)
		{
			if(strcmp(b[i],b[k])==0) //????????????1?
				c[i]++;
		}
	}
	for(i=0;i<u;i++)
	{
		for(k=u-1;k>i;k--)
		{
			if(c[k]>c[k-1])
			{
					r=c[k];
					c[k]=c[k-1];
					c[k-1]=r;
					strcpy(temp,b[k]);
					strcpy(b[k],b[k-1]);
					strcpy(b[k-1],temp);
				}
		}
	}
		if(c[0]==1)
			printf("NO");
		else
		{
			printf("%d\n",c[0]);
			printf("%s",b[0]);
			printf("\n");
			for(i=1;i<u;i++)
			{
				if(c[i]==c[0])
				{printf("%s",b[i]);
				printf("\n");
				}
				else 
					break;
			}
		}
		return 0;
	}
int main()
{
	int n,i,j,count[250]={0},num=0;
	char line[501],n_gram[250][5],temp[5];
	cin >>n;
	cin >>line;    //??
	count[0]=1;
	for (i=0;i<n;i++)
		n_gram[0][i]=line[i];
	n_gram[0][n]='\0';     //???????
	for (i=1;i<strlen(line)-n+1;i++)
	{
		for (j=i;j<i+n;j++)
		{
			temp[j-i]=line[j];
		}
		temp[n]='\0';     //?temp??????
		for (j=0;j<=num;j++)
		{
			if (strcmp(temp,n_gram[j])==0)
			{
				count[j]++;
				break;
			}
		}                  //??????????
		if (j==num+1)
		{
			strcpy(n_gram[num+1],temp);
			count[num+1]=1;
			num++;
		}                  //?????
	}
	int max=0;
	for (i=0;i<=num;i++)
	{
		if (max<count[i])
			max=count[i];
	}                       //????????
	if (max==1)
		cout <<"NO"<<endl;    //?????1??NO
	else
	{
		cout <<max<<endl;
		for (i=0;i<=num;i++)
		{
			if (count[i]==max)
				cout <<n_gram[i]<<endl;
		}
	}                       //??1????????MAX???
	return 0;
}
main()
{
   int n;
   char c[500];
   scanf("%d",&n);
   scanf("%s",c);
   int m[300];
   int i,j,k;
   for(i=0;i<300;i++)
	   m[i]=0;
   int t,p,q;
   char s[300][5]={{0}};
   t=0;
   for(i=0;i<strlen(c)-1;i++)
   {
	   for(j=0;j<n;j++)
		   s[t][j]=c[i+j];
       t++;
   }
   for(i=0;i<t;i++)
   {
        for(j=i+1;j<t;j++)
		{
		    if(strcmp(s[i],s[j])==0)
				m[i]++;
		}
   }
   k=0;
   for(i=0;i<t;i++)
	   if(m[i]>k)
		   k=m[i];
   if(k>0)
   {
	   printf("%d\n",k+1);
       for(i=0;i<t;i++)
	   {
           if(m[i]==k)
		       printf("%s\n",s[i]);
	   }
   }
   else
	   printf("NO");


}
void main()
{
	char s[1000][1000],t[1000],str[1000];
	int a[1000],i,j,m,n,k,l,max,x,b;
	scanf("%d\n",&n);
	gets(str);
	m=strlen(str);
	k=0;
	for(i=0;i<m-n+1;i++)
	{
		for(j=0;j<1000;j++)
			t[j]=0;
		for(j=0;j<n;j++)
			t[j]=str[i+j];
		l=0;
		for(j=1;j<=k;j++)
		{
			x=0;
			for(b=0;b<n;b++)
				if(t[b]!=s[j][b])
					x=1;
			if(x==0)
			{
				l=1;
				a[j]++;
			}
		}
		if(l==0)
		{
			k++;
			for(j=0;j<n;j++)
				s[k][j]=t[j];
			for(j=n;j<1000;j++)
				s[k][j]=0;
			a[k]=1;
		}
	}
	max=0;
	for(i=1;i<=k;i++)
		if(a[i]>max)
			max=a[i];
	if(max==1)
		printf("NO");
	else
	{
		printf("%d\n",max);
	for(i=1;i<=k;i++)
		if(a[i]==max)
			puts(s[i]);

	}
}
void copy(char *s,char *c,int n)
{
    int i;
    for (i=0; i<n; i++)
    {
        *s=*c;
        s++;
        c++;
    }
}

void main()
{
    char str[500]={'\0'},s[500][10]={'\0'};
    char *p=str,*q;
    int n,i,j,max=0;
    int a[500]={0};
    scanf("%d\n",&n);
    gets(str);
    for (i=0; *(p)!='\0'; p++,i++)
        copy(s[i], p, n );
    n=i;
    for (i=j=0; i<n; i++)
        for (j=i; j<n; j++)
            if (strcmp(s[i], s[j])==0)
                a[i]++;
    for (i=0; i<n; i++)
        max=(max<a[i])?a[i]:max;
    if(max==1)printf("NO");
    else
    {
        printf("%d\n",max);
        for (i=0; i<n; i++)
            if(max==a[i])
                printf("%s\n",s[i]);
    }
}
int main()
{
	char a[502],b[502][6],c;
	int i,j,n,imax,max,m[502],p,k;
	scanf("%d",&n);
	c=getchar();
	gets(a);
	p=strlen(a);
	for(i=0;i<p-n+1;i++)
	{
		for(j=0;j<n;j++)
		{
			b[i][j]=a[i+j];
		}
	}
	for(i=0;i<p-n+1;i++)
	{
		m[i]=1;
		for(j=i+1;j<p-n+1;j++)
		{
			if(b[j][0]!='\0')
			{
				for(k=0;k<n;k++)
				{
					if(b[i][k]!=b[j][k])
						break;
				}
				if(k>=n)
				{
					b[j][0]='\0';
					m[i]++;
				}
			}
		}
	}
	max=m[0];
	imax=0;
	for(i=0;i<p-n+1;i++)
	{
		if(m[i]>max)
			max=m[i];
	}
	if(max<=1)
		printf("NO");
	else
	{
		for(i=0;i<p-n+1;i++)
		{
			if(m[i]>=max)
			{
				imax++;
			}
		}
	
	printf("%d\n",max);
	for(i=0;i<p-n+1;i++)
	{
		if(m[i]>=max)
		{
			for(j=0;j<n;j++)
				printf("%c",b[i][j]);
			printf("\n");
		}
	}
	}
	return 0;
}
void main()
{
	int n,i,j,k,l,c,max=0,num[1000]={0},tag1,tag2,tag[1000]={0};
	char a[10000],b[1000][1000];
	scanf("%d %s",&n,a);
	l=strlen(a);
	for(i=0;i<l;i++)
		for(j=i;j<n+i;j++)
			b[i][j-i]=a[j];
	c=l-n+1;
	for(i=0;i<c;i++)
		for(k=i+1;k<c;k++)
		{
			tag1=1;
			for(j=0;j<n;j++)
				if(b[i][j]!=b[k][j])
					tag1=0;
			if(tag1==1)
			{
				tag[i]++;
			}
		}
	tag2=0;
	for(i=0;i<c;i++)
		if(tag[i]+1>max)
			max=tag[i]+1;
		if(max>1)
			tag2=1;
	if(tag2==0)
		printf("NO");
	else
	{
		printf("%d\n",max);
		for(i=0;i<c;i++)
			if(tag[i]+1==max)
				printf("%s\n",b[i]);
	}

}
void main()
{
	int n,m,i,j,c[500];
	char s[501],t[500][4];
	scanf("%d",&n);
	scanf("%s",s);
	m=strlen(s);
	for(i=0;i<=m-n;i++)
	{
		for(j=0;j<n;j++)
			t[i][j]=s[i+j];
	}
	for(i=0;i<=m-n;i++)
	{
		c[i]=1;
		for(j=i+1;j<=m-n;j++)
		{
			int u=0,w;
			for(w=0;w<n;w++)
			{
				if(t[i][w]==t[j][w])
					u=u+1;
			}
			if(u==n)
				c[i]=c[i]+1;
		}
	}
	int k=c[0];
	for(i=1;i<=m-n;i++)
	{
		if(c[i]>k)
			k=c[i];
	}
	if(k==1)
		printf("NO");
	else
	{
		printf("%d\n",k);
		for(i=0;i<=m-n;i++)
		{
			if(c[i]==k)
			{
				for(j=0;j<n;j++)
					printf("%c",t[i][j]);
				printf("\n");
			}
		}
	}
}
int main()
{
	int n;
	scanf("%d",&n);getchar();
	char a[500],b[500][6];
	gets(a);
	int c=0,d=0,e=0,f;
	f=strlen(a);
	while(e<(f-n+1))
	{
		while(c<n)
		{
			b[d][c]=a[e];
			e++;
			c++;
		}
		b[d][c]=0;
		e=e-(n-1);
		c=0;
		d=d+1;
	}



	int maxi[500],g,h,max;
	int count[500]={0};
	for(g=0;g<d;g++)//???????
	{		
		for(h=g+1;h<d;h++)
		{
			if (strcmp(b[g],b[h])==0)
			{
				count[g]=count[g]+1;
			}
		}
	}

	max=count[0];
	int i=0;
	for(i=0;i<d;i++)//???????
	{
		if(max<count[i])
		{
			max=count[i];
		}
	}
	if(max==0)
		printf("NO");
	else {
	printf("%d\n",max+1);
	int j;
	for(j=0;j<d;j++)
	{
		if(count[j]==max)
			puts(b[j]);
	}
	}
	

	return 0;
}
int main()
{
	int n,len,i,t,r,cout[500]={0},max,j;
    char a[500],b[300][5];
	scanf("%d",&n);
	getchar();
	gets(a);
	len=strlen(a);
	t=0;
	for(i=0;i<len;i++)
	{
		for(j=0;j<n;j++)
		{
			b[t][j]=a[i];
			i++;
		}
		b[t][j]=0;
		i=i-n;
		t++;
	}
	r=0;
	for(i=0;i<len;i++)
	{
		for(j=i;j<t;j++)
		{
			if(strcmp(b[i],b[j])==0)
			{
				cout[r]++;
			}
		}
		r++;
	}
	max=cout[0];
	for(i=0;i<len;i++)
	{
		if(max<cout[i])
		{
			max=cout[i];
		}
	}
	if(max==1)
	{
		printf("NO");
		return 0;
	}
	printf("%d\n",max);
	for(i=0;i<len;i++)
	{
		if(max==cout[i])
		{
			printf("%s\n",b[i]);
		}
	}
	return 0;
}
int main(int argc, char* argv[])
{
    int l,n;
	scanf("%d",&n);
	char a[500],b[500][5];
	scanf("%s",a);
	l=strlen(a);
	int i,j;
	for(i=0;i<500;i++)
		for(j=0;j<5;j++)
			b[i][j]=0;
	for(i=0;i<l-n+1;i++)
	{
		int k=0;
		for(j=i;j<i+n;j++)
		{
			b[i][k]=a[j];
			k++;
		}
	
	}
	

	int d[500];
	for(i=0;i<l;i++)
		d[i]=1;

	for(i=0;i<l-n;i++)
	{
		for(j=i+1;j<l-n+1;j++)
			if(strcmp(b[i],b[j])==0)
			{
				d[i]++;
				d[j]=0;
			}
	}
	int max=d[0];
	for(i=0;i<l-n+1;i++)
		if(d[i]>max) max=d[i];

	if(max>1)
	{
		printf("%d\n",max);
		for(i=0;i<l-n+1;i++)
		{
			if(d[i]==max)  printf("%s\n",b[i]);
		}
	}
	else  printf("NO");

	


	
	return 0;
}
void main()
{
	int n,l,i,j,k,max=0;
	int sum[1000]={0},c[1000]={0};
	char a[1000];
	char b[1000][10];
	for(i=0;i<1000;i++)
		for(j=0;j<10;j++)
			*(*(b+i)+j)='\0';
	scanf("%d\n",&n);
	gets(a);
	l=strlen(a);
	for(i=0;i<l-n+2;i++)
		for(j=0;j<n;j++)
			*(*(b+i)+j)=*(a+i+j);
	for(i=0;i<l-n+2;i++)
	{
		for(j=0;j<l-n+2;j++)
		{
			if(strcmp(*(b+i),*(b+j))==0)
			 *(sum+i)=*(sum+i)+1;
		}
	}
	for(i=0;i<l-n+2;i++)
	{
		if(*(sum+i)>max)
			max=*(sum+i);
	}
	if(max==1)
		{
			printf("NO");
		}
	else
	{
		printf("%d\n",max);
	for(i=0;i<l-n+2;i++)
    {
		if(max==1)
		{
			printf("NO");
			break;
		}
		if(*(sum+i)==max&&*(c+i)==0)
		{
			printf("%s\n",*(b+i));
			for(k=i;k<l-n+2;k++)
			{
				if(strcmp(*(b+k),*(b+i))==0)
					*(c+k)=1;
			}
		}
	}
	}
}
void main()
{
	int n,l,b[500]={0},i,j,k,max;
	char a[500],c[500][6];
	scanf("%d",&n);
	scanf("%s",a);
	l=strlen(a);
	for(i=0;i<l-n+1;i++)
    {
        for(j=0;j<n;j++)
		   c[i][j]=a[i+j]; 
	    c[i][j]='\0';
    }
    for(i=0;i<l-n;i++)
    {
          for(j=i+1;j<l-n+1;j++)
          if(strcmp(c[i],c[j])==0&&c[i][0]!=0)
          {b[i]++;c[j][0]=0;}

    }
    max=b[0];
    for(i=1;i<l-n+1;i++)
    {
        if(b[i]>max) max=b[i];
    }
	if(max==0) printf("NO\n");
	else 
    {
         printf("%d\n",max+1);
	     for(i=0;i<l-n+1;i++)
		    if(b[i]==max) printf("%s\n",c[i]);
    }
}
int main()
{
	int n;
	char ch[510];                                        //??ch????????n?????
	cin >> n;
	cin >> ch;                                           //??
	int len = strlen(ch);
	char *p, *q;
	int cnt, num = 0;
	int big = 0, howmany = 0;                //cnt???????????num???????big?????????howmany????????
	char *choice[510];                        //????choice??????????

	for ( int i = 0; i <= len - n; i++ )       //????????????
	{
		num = 0;
		for ( int j = i; j <= len - n; j++ )
		{
			cnt = 0;
			p = &ch[i];     q = &ch[j];        //?????p,q???????
			for ( int k = 0; k < n; k++ )
			{
				if ( *p++ == *q++ )            //????
					cnt++;
			}
			if ( cnt == n )                    //????n?????????num?1
				num++;
		}
		if ( num > big )                       //?num???????????????
		{
			big = num;
			howmany = 0;
			choice[howmany] = p - n;
		}
		else if ( num == big )                 //?num?????????howmany?1??????
		{
			howmany++;
			choice[howmany] = p - n;
		}
	}
             
	if ( big == 1 )                        //???????No
		cout << "NO";
	else
	{
		cout << big << endl; 
		for ( int l = 0; l <= howmany; l++ )   
		{
	    	for ( int y = 0; y < n; y++ )
	    		cout << *choice[l]++;
	    	cout << endl;
		} 
	}
	return 0;
}
void main()
{
char in[500];
char gram[500][6];
int cr[500];

int i,n,t,len,q;
int max=0;
for (i=0;i<500;i++)
{in[i]=0;cr[i]=0;}


scanf("%d",&n);
scanf("%s",in);

len=strlen(in);
q=len+1-n;

for (i=0;i<500;i++)
for (t=0;t<6;t++)
	gram[i][t]=0;

for (i=0;i<q;i++)
	for (t=0;t<n;t++)
	{gram[i][t]=in[i+t];
	}


for (i=0;i<q;i++)
for (t=0;t<q;t++)
	if (strcmp(gram[i],gram[t])==0)
	cr[i]++;


for (i=0;i<q;i++)
max=M(max,cr[i]);
if (max==1)
printf("NO");
else
{
printf("%d\n",max);

for (i=q-1;i>=0;i--)
for (t=i-1;t>=0;t--)
	if (strcmp(gram[i],gram[t])==0)
	cr[i]=0;
for (i=0;i<q;i++)
	if (cr[i]==max)
	printf("%s\n",gram[i]);

}


}
int main(void)
{
    char a[SIZE], b[SIZE],r;
    int bn[SIZE], i, n, l, j, k, ok, max=0;
    scanf("%d",&l);
    while ((r=getchar())!='\n');
    gets(a);
    n = strlen(a);
    for (i=0;i+l<=n;i++)
        bn[i]=0;
    for (i=0;i+l<=n;i++)
    {

        for (j=0;j<l;j++)
            b[j]=a[i+j];
        for (k=i+1;k+l<=n;k++)
        {
            ok=1;
            for (j=0;j<l;j++)
                if (b[j]!=a[k+j])
                {
                    ok=0;
                    break;
                }
            if (ok)
                bn[i]++;
        }
        if (bn[i]>max)
            max=bn[i];
    }
    if(max>0){
    printf("%d\n",max+1);
    for (i=0;i+l<=n;i++)
        if (bn[i]==max)
            {for (j=0;j<l;j++)

                printf("%c",a[i+j]);
                printf("\n");}}
                else
                printf("NO");

                return 0;
            }
int main()
{
 int n,a[1001];
 char str[1001];
 scanf("%d",&n);
 char s[1001][1001];
 scanf("%s",str);
 int i,j,t=0,m,p;
 m=strlen(str)-n;
 for(i=0;i<=m;i++)
 {
  for(j=0;j<n;j++)
  {
   s[i][j]=str[i+j];
  }
 }
 for(i=0;i<=m;i++)
 {
   a[i]=0;
   for(j=0;j<=m;j++)
   {
    if(strcmp(s[i],s[j])==0) a[i]++;
   }
 }
 for(i=0;i<=m;i++)
 {
  if(a[i]>t) t=a[i];
 }
 if(t==1) printf("NO\n");
 else{
 printf("%d\n",t);
 for(i=0;i<=m;i++)
 {
	 p=0;
	 for(j=0;j<i;j++)
	 {if(strcmp(s[i],s[j])==0) p=1;}
	 if(a[i]==t&&p==0) printf("%s\n",s[i]);
 }}
}
main ()
{
     short lens,i,j,k,n,top,pts,max;
     char s[501];
     char lib[500][500];
     short libc[500];
     
//     n=3;
     scanf("%d",&n);
     scanf("%s",&s);
     for (lens=1;s[lens]!='\0';lens++);lens--;
     top=0;
     for (i=0;i<=499;i++) libc[i]=0;
//for (i=0;i<=499;i++) for (j=0;j<=2;j++) lib[i][j]=0;
//     for (i=0;i<=2;i++)lib[0][i]=s[i]; 
//for (i=0;i<=lens;i++) printf("%c",s[i]);printf("\n");
//printf("%d\n",lens);


     for (pts=0;pts<=lens-n+1;pts++)
     {
         for (i=0;i<=top;i++)
         {
             for (j=0;j<=n-1;j++)
             {
//printf("check1 %c %c %d %d %d %d\n",lib[i][j],s[pts+j],i,j,pts,top);
                 if (lib[i][j]!=s[pts+j])
                 {
                    break;
                 }
             }
             if (j==n) 
             {
                libc[i]++;
//printf("j==1   %c %c %d %d %d %d\n",lib[i][j],s[pts+j],i,j,pts,top);
             }
         }
         if (j!=n)
         {
            top++;
            for (j=0;j<=n-1;j++) 
            {
                lib[top][j]=s[pts+j];
            }
            libc[i]++;            
         }
     }
//     top--;
/*
for (i=0;i<=top;i++)
{
    for (j=0;j<=2;j++)
        printf("%c ",lib[i][j]);
    printf("%d\n",libc[i]);
}   */
     
     max=0;
     for (i=0;i<=top;i++) 
         if (libc[i]>max) max=libc[i];
if (max==1) printf("NO");
else
{
     printf("%d\n",max);
     for (i=0;i<=top;i++)
         if (libc[i]==max)
         {
            for (j=0;j<=n-1;j++)
                printf("%c",lib[i][j]);
            printf("\n");
         } 
}
}
void main()
{
	char c[501];
	int i,j,k,l,a[500],m,y,max;
	scanf("%d%s",&k,c);
	l=strlen(c);
	for(i=0;i<=l;i++) a[i]=1;
	i=0;
	while(i<=l)
	{
		j=i+1;
		while(j<=l)
		{
			y=1;
			for(m=0;m<k;m++) 
			{
				if(c[m+j]!=c[i+m]) y=0;
			}
			if(y) 
			{
				a[i]++;
				a[j]=0;
			}
			j++;
		}
		i++;
	}
	max=0;
	for(i=0;i<=l;i++)
	{
		if(a[i]>a[max]) max=i;
	}
	if(a[max]==1) printf("NO");
	else
	{
		printf("%d\n",a[max]);
	for(i=0;i<=l;i++)
	{
		if(a[i]==a[max])
		{
			for(m=0;m<k;m++) printf("%c",c[i+m]);
			printf("\n");
		}
	}}
}
char x[5];
int main()
{
	void copy(char x[5],char a);
	int n,l,i,j,max;
	char a[600];
	int count[500]={0};
	int alo[500];
	char com[500][5];
	scanf("%d\n",&n);
	gets(a);
	l=strlen(a)-1;
	for(i=0;i<=499;i++)
		*(alo+i)=i;
	for(i=0;i+n-1<=l;i++)
	{
		for(j=0;j<=n-1;j++)
		{
			*(*(com+i)+j)=*(a+i+j);
		}
		*(*(com+i)+j)='\0';
	}
	for(i=0;i+n-1<=l;i++)
	{
		for(j=i;j+n-1<=l;j++)
		{
			if(strcmp(*(com+j),*(com+i))==0)
				(*(count+i))++;
		}
	}
	max=*(count+0);
	for(i=0;i+n-1<l;i++)
	{
		if(max<*(count+i))
			max=*(count+i);
	}
	if(max!=1)
	printf("%d\n",max);
	else
	{
		printf("NO");
		return 0;
	}
	for(i=0;i+n-1<l;i++)
	{
		if(*(count+i)==max)
		{
			printf("%s\n",*(com+i));
		}
	}
	return 0;
}
int record(char str[][6],char curstr[], int count[],int num)
{
	int k=0;
	while((k<num)&&(strcmp(str[k],curstr)!=0))
		++k;
	if(k<num)
	{
		count[k]++;
		return num;
	}
	else
	{
		strcpy(str[num],curstr);
		count[num]=1;
		return num+1;
	}
}
int sub_count(char s[],char str[][6], int count[],int n)
{
	int m,k,len=strlen(s),num=0;
	char curstr[6];
	for(m=0;m<=len-n;m++)
	{
		for(k=0;k<n;k++)
		{
			curstr[k]=s[m+k];
		}
		curstr[k]='\0';
		num=record(str,curstr,count,num);
	}
	return num;
}
void main()
{
	char s[1000],str[1000][6];
	int count[1000],num,n,i,max;
	scanf("%d%s",&n,s);
	num=sub_count(s,str,count,n);
	max=count[0];
	for(i=0;i<num-1;i++)
	{
        if(max<count[i+1])
			max=count[i+1];
	}
	if(max<=1)
		printf("NO");
	else
	{
	printf("%d\n",max);
	for(i=0;i<num;i++)
	{
		if(count[i]==max)
			printf("%s\n",str[i]);
	}
	}
}
int main()
{
    char q[1000],t[1000][10];
    int n,i,j,l,s[1000],f[1000],m,F;
    scanf("%d",&n);
    gets(q);
    gets(q);
    l=strlen(q);
    for(i=0;i<=l-n;i++)
    {
        for(j=0;j<n;j++)
        t[i][j]=q[i+j];
    }
    for(i=0;i<=l-n-1;i++)
    {
        if(t[i][0]!='\0')
        {
        s[i]=1;
        for(j=i+1;j<=l-n;j++)
        {
        if(strcmp(t[i],t[j])==0&&t[j][0]!='\0')
        {
        s[i]++;
        t[j][0]='\0';
        }
        }
        }
        else
        s[i]=0;
    }
    if(t[l-n][0]!='\0')
    s[l-n]=1;
    else
    {
    s[l-n]=0;
    }
    m=s[0];
    F=0;
    f[0]=0;
    for(i=1;i<=l-n-1;i++)
    {
        if(m<s[i])
        {
        F=0;
        m=s[i];
        f[F]=i;
        }
        else if(m==s[i])
        {
            F++;
            f[F]=i;
        }
    }
    if(s[f[F]]<=1)
    {
    printf("NO");
    }
    else
    {
    printf("%d\n",m);
    for(i=0;i<=F;i++)
    {
    printf("%s\n",t[f[i]]);
    }
    }
    return 0;
}
int main()
{
    int i,n,sum,u,j,k;
    char a[1000],b[1000][8];
    scanf("%d",&n);
    scanf("%s",a);
    sum=strlen(a);
    for(i=0;i<=sum-n;i++)
    {
                       for(j=i,k=0;j<i+n;j++,k++)
                       {
                                    b[i][k]=a[j];
                       }
    }
    int c[1000];
    memset(c,0,sizeof(c));
    for(i=0;i<=sum-n;i++)
    {
                         for(j=i;j<=sum-n;j++)
                         {
                                             if(strcmp(b[i],b[j])==0)
                                             {
                                                                      c[i]++;
                                             }
                         }
    }
    int max=c[0];
    for(i=0;i<=sum-n;i++)   
    {
                            if(max<c[i])
                            max=c[i];
    }
    if(max>=2)
    {
              printf("%d\n",max);
              for(i=0;i<=sum-n;i++)
              {
                                   if(c[i]==max)
                                   {
                                                puts(b[i]);
                                   }
              }
    }
    else 
    printf("NO");
    scanf("%d",&u);
    return 0;
}
int main()
{
    int n;
    int m,max;
    int i,j,k;
    char a[500]={'\0'};
    char b[500][5]={'\0'};
    int c[500]={0};
    scanf("%d",&n);
    getchar();
    gets(a);
    m=strlen(a);
    for(i=0;i<=(strlen(a)-n);i++)
    {
     for(j=i,k=0;j<i+n;j++,k++)
     {
      b[i][k]=a[j];
     }
    }
    for(i=1;i<=(strlen(a)-n);i++)
    {
      for(j=0;j<i;j++)
      {
       if(strcmp(b[i],b[j])==0)
       c[j]++;
      }   
}
max=0;
for(i=0;i<500;i++)
{
 if(c[i]>max)
 max=c[i];
}
if(max==0)
{
          printf("NO\n");
}
else
{
    printf("%d\n",max+1);
for(i=0;i<500;i++)
{
 if(c[i]==max)
 {
              printf("%s\n",b[i]);
 }
}
}
    
    return 0;
}
main()
{
      char c[505];
      int a[505]={0};
      int i,j,k,n,m,max,fu,ji;
      scanf("%d",&n);
      scanf("%s",c); m=strlen(c)-1;
      for(i=0;i<=m-n;i++)
      {
           a[i]=1;
           for(j=i+1;j<=m-n+1;j++)
           {
                  for(k=0;k<=n-1;k++)
                  {
                       if(c[i+k]!=c[j+k])
                       break;
                  }
                  if(k==n)
                  a[i]++;
           }
      }
      for(max=1,i=0;i<=m-n;i++)
      {
           if(a[i]>max)
           max=a[i]; 
      }
      if(max==1) printf("NO\n");
      else
      {
         printf("%d\n",max);
         for(i=0;i<=m-n;i++)
         {
           if(a[i]==max) 
           {
            for(k=0;k<=n-1;k++)
            printf("%c",c[i+k]);
            printf("\n");
           }
         } 
      }    
}
int main()
{
	int n;
	int i,j;
	int m,max;
	int p=0;
	int q=0;
	char tmp[500][5]={0};
	char str[500]={0};
	int a[500]={0};

	scanf("%d\n",&n);
	gets(str);
	m=strlen(str);

	//??
	for(i=0;i<m-n+1;i++)
	{
		for(j=i;j<=i+n-1;j++)
		{
			tmp[i][p]=str[j];
			p++;
		}
		p=0;
	}

	for(i=0;i<m-n+1;i++) a[i]=1;
	for(i=0;i<m-n;i++)
	{
		for(j=i+1;j<m-n+1;j++)
		{
			if(strcmp(tmp[i],tmp[j])==0)
				a[i]=a[i]+1;
		}
	}

	max=a[0];
	for(i=0;i<m-n+1;i++)
	{
		if(max<a[i])
		{
			max=a[i];
			q=i;
		}
	}

	if(max==1) printf("NO");
	else
	{
	printf("%d\n",max);
	for(i=0;i<m-n+1;i++)
	{
		if(a[i]==max) printf("%s\n",tmp[i]);
	}
	}
	return 0;
}
int main(){
    int n,i,j,len,re,foul,max;
    char a[500][6];
    char c[502];
    int b[500];
    scanf("%d",&n);
    scanf("%s",&c);
    len=0;
    for(i=0;c[i]!='\0';i++)
    len++;
    for(i=0;i<=len-n;i++){
for(j=0;j<n;j++){
a[i][j]=c[i+j];
}
a[i][n]='\0';
}
for(i=0;i<500;i++)
b[i]=1;
for(i=0;i<=len-n;i++){
foul=0;
re=0;
for(j=0;j<i;j++){
if(strcmp(a[i],a[j])==0){
foul++;
break;}
}
if(foul==1)
continue;
else{
for(j=i+1;j<=len-n;j++){
if(strcmp(a[i],a[j])==0)
re++;
}
b[i]+=re;
}
}
for(max=1,i=0;i<=len-n;i++){
if(b[i]>max)
max=b[i];
}
if(max!=1){
printf("%d\n",max);
for(i=0;i<=len-n;i++){
if(b[i]==max){
printf("%s\n",a[i]);
}
}}
else
printf("NO\n");
scanf("%d",&n);
return 0;
}
int main()
{
	int n,len,i,j,k,time[M]={0},max,flag;
	char s[M],son[M-1][5]={""};
	scanf("%d",&len);
	scanf("%s",s);
	n=strlen(s);
	for(i=0;i<=n-len;i++)
	{
		for(j=i;j<i+len;j++)
		{
			son[i][j-i]=s[j];
		}
	}
	for(k=0;k<=n-len;k++)
	{
		for(i=0;i<=n-len;i++)
		{
			if(strcmp(son[k],son[i])==0)
				time[k]++;
		}
	}
	max=time[0];
	for(k=0;k<=n-len;k++)
	{
		if(time[k]>max)
			max=time[k];
	}
	if(max>1)
	{
	printf("%d\n",max);
	for(k=0;k<=n-len;k++)
	{
		flag=1;
		if(time[k]==max)
		{
			for(i=0;i<k;i++)
			{
				if(strcmp(son[k],son[i])==0)
				{
					flag=0;
					break;
				}
			}
			if(flag==1)
				printf("%s\n",son[k]);
		}
	}
	}
	else
		printf("NO");
	return 0;
}
main()
{
	char a[1000][1000];
	char c[1000];
	int n;	
	scanf("%d",&n);
	scanf("%s",c);
	int len,p=0,i,j,t=-1;
	len=strlen(c);	
	int count[1000][2]={0};
	int k,o;	
	for(i=0;i<len-n+1;i++)
	{
		t++;
		for(p=0;p<n;p++)
		{
			a[i][p]=c[p+t];
		}
	}
	for(i=0;i<len-n+1;i++)
	{
		for(j=i;j<len-n+1;j++)
		{
			k=0;
			for(int x=0;x<n;x++)
			{
				if(a[i][x]==a[j][x])
				{
					k++;
				}
				else
					break;
			}
			if(k==n)
				count[i][0]++;
			count[i][1]=i;
				
		}
	}
	for(int m=0;m<len-n;m++)                             
    {
        for(int s=0;s<len-n;s++)
        {
        	if(count[s][0]<count[s+1][0])
            {
				o=count[s][0];
                count[s][0]=count[s+1][0];
                count[s+1][0]=o;
                o=count[s][1];
                count[s][1]=count[s+1][1];
                count[s+1][1]=o;
            } 
        }
    }
    if(count[0][0]==1)
    	printf("NO");
    else
    	{
    		printf("%d\n",count[0][0]);
    		for(int w=0;w<n;w++)
    		{
    			printf("%c",a[count[0][1]][w]);
    		}
    		printf("\n");
    		for(int z=1;z<len-n;z++)
    		{
    			if(count[0][0]==count[z][0])
    			{
    				for(int w=0;w<n;w++)
    				{
    					printf("%c",a[count[z][1]][w]);
    				}
    				printf("\n");
    			}
    		}
    	}
}