semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main(){
	int max(int a[],int n);
	char a[500];
	int b[500]={0};
	int n,i,j,k,p,t;
	scanf("%d\n",&n);
	scanf("%s",a);
	/*printf("%d",strlen(a));*/
	for(i=0;i<=strlen(a)-n;i++){
		for(j=i;j<=strlen(a)-n;j++){
			p=1;
			for(k=0;k<n;k++){
				if(a[i+k]==a[j+k]) p=p*1;
				else p=p*0;
			}
			if(p==1) b[i]++;
		}
	}
	t=max(b,strlen(a)-n+1);
	
	if(t==1) printf("NO");
	else{
		printf("%d\n",t);
		for(i=0;i<=strlen(a)-n;i++){
		if(b[i]==t){
			for(j=0;j<n;j++){
				printf("%c",a[i+j]);
			}
			printf("\n");
		}
	}
	}
	return 0;
}

int max(int a[],int n){
	int t=a[0],i;
	for(i=0;i<n;i++){
		if(t<a[i]) t=a[i];
	}
	return t;
}
int main()
{
    int n,i,j,m,b[510],k=0,d=1;
	char a[510],c[510][6]={'\0'};
	scanf("%d\n",&n);
	gets(a);
    m=strlen(a);
	for(i=0;i<=m-n;i++)
	{
		for(j=0;j<=n-1;j++)
		{
			c[i+1][j]=a[i+j];
		}
	}
	for(i=1;i<=m-n+1;i++)
	{
		for(j=1,b[i]=0;j<=m-n+1;j++)
		{
			if (strcmp(c[i],c[j])==0)
				b[i]++;
		}       
		if (b[i]>k)
			k=b[i];
	}
	if (k==1)
		printf("NO");
	else
	{printf("%d\n",k);
	for(i=1;i<=m-n+1;i++)
	{
		if (b[i]==k)
		{
			for(j=1,d=1;j<=i-1;j++)
			{
				if (strcmp(c[j],c[i])==0)
				{
					d=0;
					break;
				}
			}
			if (d!=0)
                printf("%s\n",c[i]);
		}
	}
	}
	return 0;
}
int main ()
{
	char a[500],b[250][4];
	char c;
	int n,k,m=0,i,j,l,y,p;
	int d[250];
	for(i=0;i<250;i++)
		d[i]=0;
	scanf("%d%c",&n,&c);
	gets(a);
	k=strlen(a);
	for(i=0;i<=k-n;i++)
	{
		for(j=0;j<n;j++)
			b[m][j]=a[i+j];
		m++;
	}
	for(i=0;i<k-n;i++)
		for(j=i+1;j<=k-n;j++)
		{
			if(b[i][0]!='\0')
			{
				y=0;
			for(l=0;l<n;l++)
				if(b[i][l]!=b[j][l]) y++;
			if(y==0)
			{b[j][0]='\0';d[i]++;}
			}
		}
	p=d[i]+1;
	for(i=0;i<=k-n;i++)
		if(d[i]>p-1) p=d[i]+1;
	if(p==1) printf("NO");
	else
	{
	printf("%d\n",p);
		for(i=0;i<k-n;i++)
	{
		if(d[i]==p-1)
		{
			for(j=0;j<n;j++)
				printf("%c",b[i][j]);
			printf("\n");
		}
	}
	}
}
int main()
{
    int n;
    int i,j,k;
    int length;
    scanf("%d",&n);
    int p,temp;
    char a[10005];
    int b[10005]={0};
    scanf("%s",a);
    length=strlen(a);
    for(i=0;i<length-n+1;i++)
    {
       if(b[i]!=-1)
       {
           for(j=i+1;j<length-n+1;j++)
          {
             p=0;
             for(k=0;k<n;k++)
             {
                 if(a[i+k]!=a[j+k])
                 {
                     p=1;
                     break;
                 }
             }
            if(p==0)
            {
               b[i]++;
               b[j]=-1;
              //printf("%d***%d\n",i,j);
            }
           }
       }
    }
    temp=0;
    for(i=0;i<length;i++)
    {
        if(b[i]>temp)
        {
          temp=b[i];
        }
    }
    //printf("%d",temp);
    if(temp==0)
    {
        printf("NO");
    }
    else
    {
        printf("%d\n",temp+1);
    for(i=0;i<length;i++)
    {
        if(b[i]==temp)
        {
          for(k=0;k<n;k++)
          {
              printf("%c",a[i+k]);
          }
          printf("\n");
        }
    }
    }
    return 0;

}
char gram[1000][10] = {0};
int fre[1000] = {0};
int l, n;

int main ()
{
	void clear( int x );
	int i, j;
	int max = 0;
	int c = 1;
	
	int label[1000] = {0};
	char str[1000] = {0};
	char *p = str;
	char (*q1)[10] = gram; 
	char (*q2)[10] = gram;
	cin >> n;
	cin >> str;
	l = strlen( str );
	for ( i = 1; i <= l - n + 1; i++ )
	{
		for ( j = 0; j <= n - 1; j++ )
		{
			gram[i][j] = *p;
			p++;
		}
		p = p - n + 1;
	}
	q1++, q2++;

	for ( i = 1; i <= l - n + 1; i++ )
	{
		for (j = i+1; j <= l - n + 1; j++ )
		{
			if ( strcmp(*q1, gram[j] ) == 0 && i != j)
				fre[i]++, fre[j]++;
		}
		q1++;
	}

	for (i = 1; i <= l - n + 1; i++ )
	{
		if ( fre[i] > max )
			max = fre[i];
	}

	if ( max == 0 )
	{
		cout << "NO" << endl;
		return 0;
	}

	cout << max + 1 << endl;
	for ( i = 1; i <= l - n + 1; i++ )
	{
		if ( fre[i] == max )
		{
			cout << gram[i] << endl;
			clear(i);
		}
	}
	return 0;
}



void clear ( int x)
{
	int i, j;
	for ( i = 1; i <= l - n + 1; i++ )
	{
		if ( strcmp ( gram[x], gram[i] ) == 0 )
			fre[i] = 0;
	}
	return ;
}
void main()
{
	int n;
	scanf("%d\n",&n);
	char c[501];
	gets(c);
	char s[500][6];
	int i,l=strlen(c),j,a[501];
	for(i=0;i<=l-n;i++)
	{
		for(j=0;j<n;j++)
			s[i][j]=c[i+j];
		s[i][j]=0;
	}
/*	for(i=0;i<=l-n;i++)
		puts(s[i]);*/
	for(i=0;i<=l-n;i++)
		a[i]=1;
	for(i=0;i<=l-n;i++)
		for(j=i+1;j<=l-n;j++)
		{
			if(strcmp(s[i],s[j])==0)
				a[i]++;
		}
/*	for(i=0;i<=l-n;i++)
		printf("%d\n",a[i]);*/
	int k=0;
	for(i=0;i<=l-n;i++)
		if(a[i]>k)
			k=a[i];
	if(k<=1)
		printf("NO");
	else
	{
	printf("%d\n",k);
	for(i=0;i<l-n;i++)
		if(a[i]==k)
			puts(s[i]);
	}
}
int main()
{
	int n,i,l,flag,sum,max,lab,len,j,b[10000];
	char a[10000],c;
	scanf("%d",&n);
	scanf("%c",&c);
	gets(a);
	len=strlen(a);
	l=0;
	lab=0;
	max=0;
	while (a[l]!=0)
	{
		sum=0;
		for (i=l;i<len;i++)
		{
			flag=1;
			for (j=0;j<n;j++)
			{
				if (a[l+j]!=a[i+j])
				{
					flag=0;
				}
			}
			if (flag==1)
				sum++;
		}
		if (sum>max)
		{
			max=sum;
		}
		b[l]=sum;
		l++;
	}
	if(max>1)
	{
	printf("%d\n",max);
	for (i=0;i<len;i++)
	{
		if(b[i]==max)
		{
			for (j=0;j<n;j++)
			{
				printf("%c",a[j+i]);
			}
			printf("\n");
		}
	}
	}
	else
		printf("NO");
	return 0;
}
int main()
{
	int n,x,i,j,again,max;
	char a[501];
	scanf("%d",&n);
	scanf("%s",a);
	x=strlen(a);
	int sum=x+1-n;
	int number[sum];
	char temp[x+1-n][n+1];
	for(i=0;i<x+1-n;i++)
	{
		for(j=0;j<n;j++)
		{
			temp[i][j]=a[i+j];
		}
		temp[i][n]='\0';
	}
	for(i=0;i<sum;i++)
		number[i]=0;
	number[0]=1;
	for(i=1;i<sum;i++)
	{
		again=0;
		for(j=0;j<i;j++)
		{
			if(strcmp(temp[i],temp[j])==0)
			{
				number[j]++;
				again=1;
				break;
			}
		}
		if(again==0)
			number[i]++;
	}
	max=number[0];
	for(i=1;i<sum;i++)
	{
		if(number[i]>max)
			max=number[i];
	}
	if(max!=1)
	{
		printf("%d\n",max);
		for(i=0;i<sum;i++)
		{
			if(number[i]==max)
				printf("%s\n",temp[i]);
		}
	}
	else
		printf("NO\n");
	return 0;
}
int main()
{
	char s[550],b[6];
	int i,j,k,l,n,a[550]={0};
	scanf("%d",&n);
	getchar();
	gets(s);
	for (i=0;s[i]!='\0';i++)
	{
		for (j=i+1;s[j]!='\0';j++)
		{
			l=0;
			for (k=0;k<=n-1;k++)
			{
				if (s[i+k]!=s[j+k]) l=1;
			}
			if (l==0) a[i]++;
		}
	}
	for (i=0;s[i]!='\0';i++)
	{
		l=0;
		for (j=0;s[j]!='\0';j++)
		{
			if (a[i]<a[j]) l=1;
		}
		if (l==0) break;
	}
	if (a[i]==0)
	{
		printf("NO");
		return 0;
	}
	printf("%d\n",a[i]+1);
	k=a[i];
	for (i=0;s[i]!='\0';i++)
	{
		if (a[i]==k)
		{
			for (j=0;j<=n-1;j++)
			{
				b[j]=s[i+j];
			}
			b[j]='\0';
		printf("%s\n",b);
		}
	}
return 0;
}
int main(){
    char s[502];
    int max,frequency[251],n,i,j;
    scanf("%d",&n);
    scanf("%s",s);
    max=1;
    if(n==2){
        for(i=0;i<strlen(s)-2;i++){
            frequency[i]=1;
            for(j=i+1;j<strlen(s)-1;j++){
                if(s[i]==s[j]&&s[i+1]==s[j+1])
                    frequency[i]++;
            }
            if(max<frequency[i])
                max=frequency[i];
        }
        if(max==1)
            printf("NO\n");
        else{
            printf("%d\n",max);
            for(i=0;i<strlen(s)-2;i++){
                if(frequency[i]==max)
                    printf("%c%c\n",s[i],s[i+1]);
            }
        }
    }
    if(n==3){
        for(i=0;i<strlen(s)-3;i++){
            frequency[i]=1;
            for(j=i+1;j<strlen(s)-2;j++){
                if(s[i]==s[j]&&s[i+1]==s[j+1]&&s[i+2]==s[j+2])
                    frequency[i]++;
            }
            if(max<frequency[i])
                max=frequency[i];
        }
        if(max==1)
            printf("NO\n");
        else{
            printf("%d\n",max);
            for(i=0;i<strlen(s)-3;i++){
                if(frequency[i]==max)
                    printf("%c%c%c\n",s[i],s[i+1],s[i+2]);
            }
        }
    }
    if(n==4){
        for(i=0;i<strlen(s)-4;i++){
            frequency[i]=1;
            for(j=i+1;j<strlen(s)-3;j++){
                if(s[i]==s[j]&&s[i+1]==s[j+1]&&s[i+2]==s[j+2]&&s[i+3]==s[j+3])
                    frequency[i]++;
            }
            if(max<frequency[i])
                max=frequency[i];
        }
        if(max==1)
            printf("NO\n");
        else{
            printf("%d\n",max);
            for(i=0;i<strlen(s)-4;i++){
                if(frequency[i]==max)
                    printf("%c%c%c%c\n",s[i],s[i+1],s[i+2],s[i+3]);
            }
        }
    }
    return 0;
    }
void main()
{
 int n;
 scanf("%d",&n);
 char s[600];
 scanf("%s",s);
 int m=strlen(s);
 char a[m+1][n];
 int b[m+1];
 int i=0,j=0,k=0,max=0,l=0;
 while(i<=m)
 {
  b[i]=0;
  i++;
 }
 i=0;
 if(n==2)
 {
  while(i<m-1)
  {
   if(i==0)
    a[i][0]=s[i],a[i][1]=s[i+1],b[0]++,k++;
   else
   {
    while(j<i)
    {
     if(a[j][0]==s[i]&&a[j][1]==s[i+1])
      b[j]++,j=i;
      j++;
    }
   }
   if(j==i&&i!=0)
    a[k][0]=s[i],a[k][1]=s[i+1],b[k]++,k++;
   j=0;
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]>max)
    max=b[i];
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]==max)
    l++;
   i++;
  }
  if(max==1)
   printf("NO");
  else
  {
   printf("%d\n",max);
   i=0;
   while(i<k)
   {
    if(b[i]==max)
     printf("%c%c\n",a[i][0],a[i][1]);
    i++;
   }
  }
 }
 if(n==3)
 {
  while(i<m-2)
  {
   if(i==0)
    a[i][0]=s[i],a[i][1]=s[i+1],a[i][2]=s[i+2],b[0]++,k++;
   else
   {
    while(j<i)
    {
     if(a[j][0]==s[i]&&a[j][1]==s[i+1]&&a[j][2]==s[i+2])
      b[j]++,j=i;
      j++;
    }
   }
   if(j==i&&i!=0)
    a[k][0]=s[i],a[k][1]=s[i+1],a[k][2]=s[i+2],b[k]++,k++;
   j=0;
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]>max)
    max=b[i];
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]==max)
    l++;
   i++;
  }
  if(max==1)
   printf("NO");
  else{
  printf("%d\n",max);
  i=0;
  while(i<k)
  {
   if(b[i]==max)
    printf("%c%c%c\n",a[i][0],a[i][1],a[i][2]);
   i++;
  }}
 }
 if(n==4)
 {
  while(i<m-3)
  {
   if(i==0)
    a[i][0]=s[i],a[i][1]=s[i+1],a[i][2]=s[i+2],a[i][3]=s[i+3],b[0]++,k++;
   else
   {
    while(j<i)
    {
     if(a[j][0]==s[i]&&a[j][1]==s[i+1]&&a[j][2]==s[i+2]&&a[j][3]==s[i+3])
      b[j]++,j=i;
      j++;
    }
   }
   if(j==i&&i!=0)
    a[k][0]=s[i],a[k][1]=s[i+1],a[k][2]=s[i+2],a[k][3]=s[i+3],b[k]++,k++;
   j=0;
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]>max)
    max=b[i];
   i++;
  }
  i=0;
  while(i<k)
  {
   if(b[i]==max)
    l++;
   i++;
  }
  if(max==1)printf("NO");
else{
  printf("%d\n",max);
  i=0;
  while(i<k)
  {
   if(b[i]==max)
    printf("%c%c%c%c\n",a[i][0],a[i][1],a[i][2],a[i][3]);
   i++;
  }
 }}
}
int main()
{
	int m,n,i,j,k=0;
	char a[1000],b[1000][5],c[5];
	int num[1000];
	for(i=0;i<1000;i++)
		num[i]=0;
    scanf("%d\n",&n);
	gets(a);
	for(i=0;;i++)
	{
		for(j=i;j<=i+n-1;j++)
		{
			
			if(a[j]=='\0')goto loop;
			b[k][j-i]=a[j];
		}k++;
		b[k-1][n]='\0';
	}loop:;
	
	//printf("%d\n",k);
	
	//puts(b[1]);
	for(i=0;i<k-1;i++)
		for(j=i+1;j<k;j++)
		{
          if(strcmp(b[i],b[j])==0)num[i]++;
		}

		for(i=k-2;i>0;i--)
			for(j=0;j<i;j++)
			{
				if(num[j]<num[j+1])
				{	strcpy(c,b[j]);strcpy(b[j],b[j+1]);strcpy(b[j+1],c);
				    m=num[j];num[j]=num[j+1];num[j+1]=m;
				}
			}
if(num[0]==0)
printf("NO");
else{

			printf("%d\n",num[0]+1);
    puts(b[0]);
 for(i=1;;i++)
 {
	if(num[i]==num[0]){puts(b[i]);}
	else break;
 }
	
}

}
void col(char a[],char b[][5],int m,int n)
{
	int i,j;
	for(i=0;i<=m-n;i++)
		for(j=0;j<n;j++)
			b[i][j]=a[i+j];
}
int main()
{
	char a[500],b[500][5]={0};
	int n,m,i,j,c[500]={0},t=0;
	scanf("%d",&n);
	scanf("%s",a);
	m=strlen(a);
	col(a,b,m,n);
	for(i=0;i<=m-n;i++)
		c[i]=1;
	for(i=0;i<m-n;i++)
	{
		if(c[i])
		{
		for(j=i+1;j<=m-n;j++)
		{
			if(c[j])
			{
				if(!strcmp(b[i],b[j])) {c[i]++;c[j]=0;}
			}
		}
		}
	}
	for(i=0;i<=m-n;i++)
		if(c[i]>t) t=c[i];
	if(t==1) printf("NO");
	else
	{
		printf("%d\n",t);
		for(i=0;i<=m-n;i++)
			if(c[i]==t)
				printf("%s\n",b[i]);
	}
	return 0;
}
int main()
{
	char str[503];
	char str2[501][6]={'\0'};
	int a[503]={0};
	int *pt1=a;
	char *pt2=str,(*pt3)[6]=str2;
	int i,j,n,p,flag,t,k;
	scanf("%d",&n);
	scanf("%s",str);
	t=strlen(str)-n;
	for(i=0;i<=t;i++)
	{
		for(j=i,p=0;j<=i+n-1;j++)
		{
			*(*(pt3+i)+p)=*(pt2+j);
			p++;
		}
	}
	for(i=0;i<=t;i++)
	{
		for(j=i-1,flag=0;j>=0;j--)
		{
			if(strcmp(*(pt3+i),*(pt3+j))==0)
			{
				flag=1;
				break;
			}
		}
		if(flag==0||i==0)
		{
			for(j=i;j<=t;j++)
			{
				if(strcmp(*(pt3+i),*(pt3+j))==0)
				{
					(*(pt1+i))++;
				}
			}
		}
	}
	for(i=0,k=0;i<=t;i++)
	{
		if(*(pt1+i)>k)
		{
			k=*(pt1+i);
		}
	}
	if(k>1)
	{
		printf("%d\n",k);
		for(i=0;i<=t;i++)
		{
			if(*(pt1+i)==k)
			{
				printf("%s\n",*(pt3+i));
			}
		}
	}
	else if(k=1)
	{
		printf("NO");
	}
	return 0;
}
main()
{
  char s[500],t[5],g[500][5]={0},c;
  int a[500]={0};
  int n,i,j,max=0;
  scanf("%d",&n);
  getchar();
  gets(s);
  for(i=0;s[i+n-1];i++)
  {
    for(j=0;j<n;j++)
      t[j]=s[i+j];
    for(j=0;g[j][0];j++)
      if(!strcmp(t,g[j]))
      {
        a[j]++;
        if(a[j]>max) max=a[j];
        break;
      }
    if(!g[j][0])
    {
      strcpy(g[j],t);
      a[j]++;
      if(a[j]>max) max=a[j];
    }
  }
  if(max==1) printf("NO");
  else
  {
    printf("%d\n",max);
    for(j=0;g[j][0];j++)
      if(a[j]==max) puts(g[j]);
  }
}
main()
{
      char a[501];
      int n,i,j,k=0,b[250],t,s=0;                  //b??????????? 
      scanf("%d",&n);
      scanf("%s",a);
      char c[strlen(a)-n+1][n+1],d[n+1];
      d[n]=0;
      for(i=0;i<=strlen(a)-n;i++)
      {
                                 for(j=i;j<n+i;j++)
                                 d[j-i]=a[j];
                                 for(j=0;j<k;j++)
                                 {
                                                 if(strcmp(c[j],d)==0)
                                                 {
                                                 b[j]++;
                                                 break;
                                                 }
                                                 }
                                 if(j==k)
                                 {
                                 strcpy(c[k],d);
                                 b[k]=1;
                                 k++;
                                 }
                                 }
      t=b[0];
      for(i=1;i<k;i++)
      {
                      if(b[i]>t)
                      t=b[i];
                      }
      if(t==1)
      printf("NO");
      else
      {
      printf("%d\n",t);
      for(i=0;i<k;i++)
      {
                      if(b[i]==t)
                      printf("%s\n",c[i]);
                      }
                      }
      }
int main()
{
    char a[501]={0};
    int n;
	scanf("%d", &n);
	scanf("%s", a);
	int num=0,i=0;
	char b[500][5]={0},c[5];
    num=strlen(a);
	int sum[500]={0};
	int z=0;
	do
	{
		int j=0;
		for(z=i;z<n+i;z++)
        {
			b[i][j]=a[z];
			j++;
		}
        i++;
        num--;
	}while(num>=n);
    int m=0;
    do
	{
	for(z=0;z<i;z++)
	{
		
        if(strcmp(b[z],b[m])==0&&m!=z)
		{
		 	sum[m]++;
			int j=0;
		    for(j=0;j<5;j++)
				b[z][j]='0';
		}
	}		
    m++;
	}while(m<i-2);
    int q;
	int p=0;
	for(q=0;q<i;q++)
	{
		if(sum[q]>=p)
			p=sum[q];
	}
	if(p==0)
	{
		printf("NO");
		return 0;
	}
    printf("%d\n", p+1);
	for(q=0;q<i;q++)
	{
		if(sum[q]==p)
		{
	    printf("%s\n", b[q]);
		}
	}
}
int main()
{
int n,i,j,l,m=1,k=0,num[500]={0};
char a[502],b[500][5],max[500][5];
scanf("%d\n",&n);
gets(a);
for(i=0;i<strlen(a)-n+1;i++)
 	for(j=0;j<n+1;j++)
  	{
   		if(j<n)b[i][j]=a[i+j];
   		else b[i][j]='\0';
   	}
b[i-1][n]='\0';
//for(i=0;i<strlen(a)-n+1;i++)
//	printf("b[%d]=%s\n",i,b[i]);
for(i=0;i<strlen(a)-n+1;i++)
{
	for(j=i;j<strlen(a)-n+1;j++)
   	{
    	if(strcmp(b[i],b[j])==0) num[i]++;
  	}
	if(num[i]>m) 
	{
  		for(l=0;l<k;l++)
	 		strcpy(max[l],"\0");
		strcpy(max[0],b[i]);
		k=1;
  		m=num[i];
  	} 
  	else if(num[i]==m) 
	{
	  	strcpy(max[k],b[i]);
	  	k++;
	} 
}
if(m==1) printf("NO");
else
{
	printf("%d\n",m);
	for(i=0;i<k;i++)
 		printf("%s\n",max[i]);
}
return 0;
}
int main()
{
	int i,j,k=0,n,len,word[510]={0},max=0,num;
	char str[510]={0},str2[510][8]={0};
	cin>>n;
	cin.get();
	cin.get(str,510);
	len=strlen(str);
	for(i=0;i<=len-n;i++)
	{
		strncpy(str2[k],str+i,n);//???????ch2[k]
		for(j=0;j<k;j++)
			if(!strcmp(str2[j],str2[k]))//??????
			{
				word[j]++;//?1
				k--;
				break;
			}
		k++;
	}
	num=k;
	for(i=0;i<num;i++)
	{
		word[i]++;//????0???1
		if(word[i]>max)
			max=word[i];
	}
	if(max==1)
		cout<<"NO"<<endl;//???1
	else 
	{
		cout<<max<<endl;
		for(i=0;i<num;i++)
			if(word[i]==max)//??????????
				cout<<str2[i]<<endl;
	}
	return 0;
}
int main(){
	int n,i,j,k,l,cmp,count,site,mid,timer,re[10],num[510][2]={0};
	char scan[501],u[510][510];
	scanf("%d",&n);
	scanf("%s",scan);
	count=-1;
	site=-1;
	cmp=0;
	timer=-1;
	l=strlen(scan);
	for(i=0;i<l-n+1;i++){
		count++;
		for(j=i;j<i+n;j++){
			site++;
			u[count][site]=scan[j];
		}
		u[count][n]=0;
		site=-1;
	}
	for(i=0;i<=count;i++){
		for(j=i;j<=count;j++){
			cmp=strcmp(u[i],u[j]);
			if(cmp==0){
				num[i][0]++;
				num[i][1]++;
			}
		}
	}
	for(i=1;i<=count;i++){
		for(j=0;j<count-i;j++){
			if(num[j][1]<num[j+1][1]){
				mid=num[j][1];
				num[j][1]=num[j+1][1];
				num[j+1][1]=mid;
			}
		}
	}
	for(i=0;i<=count;i++){
		if(num[i][0]==num[0][1]){
			timer++;
			re[timer]=i;
		}
	}
	if(num[0][1]>1){
	printf("%d\n",num[0][1]);
	for(i=0;i<=timer;i++){
		for(j=0;j<=count;j++){
			if(j==re[i]){
				printf("%s\n",u[j]);
			}
		}
	}
	}else{
		printf("NO");
	}
	return 0;
}
void main()
{
	char str[500];
	int n,max,i,j,k,len,t[500]={0},f;
	scanf("%d\n",&n);
	gets(str);
	len=strlen(str);
	for (i=0;i<=len-n;i++)
	{
		for (j=i;j<=len-n;j++)
		{
			f=1;
			for (k=0;k<n;k++)
				if (str[i+k]==str[j+k]) f*=1;
				else f*=0;
			if (f==1) t[i]++;
		}
	}
	max=0;
	for (i=0;i<=len-n;i++)
		if (t[i]>max) max=t[i];
	if (max<=1) printf("NO");
	else printf("%d\n",max);
	for (i=0;i<=len-n;i++)
		if (t[i]==max && t[i]>1)
		{
			for (k=0;k<n;k++)
				printf("%c",str[i+k]);
			putchar(10);
		}
}
int main(){
	int n,u,max=0;
	int a[505]={0};
	char s[505]={0};
	char c[505][5]={0};
	int i,j,x,k;
	
	scanf("%d\n",&n);
	gets(s);
	x=strlen(s);
	
	for(i=0;i<=x-n;i++){
		for(j=0;j<n;j++){
			c[i][j]=s[i+j];
			a[i]=1;
		}
	}
	
	for(i=0;i<=x-n+1;i++){	
		for(j=i+1;j<x-n+1;j++){		
			if((a[i]!=0)&&(a[j]!=0)){		
				u=strcmp(c[i],c[j]);
				if(u==0){
					a[i]++;
					a[j]=0;
					if(a[i]>max){
						max=a[i];
					}
				}
			}
		}
	}
	if(max<=1){
		printf("NO");
	}
	else{
	printf("%d\n",max);

	for(k=0;k<=x-n;k++){	
	
		if(a[k]==max){	
			puts(c[k]);
		}
	
	}
	}
	return 0;
}
struct zifu
{
	int tou;
	int num;
	char e[5];
};
struct chuan
{
	int num;
	char e[5];
};
int main()
{
	int n,c,i,j,k=0,t=0,q=0,w=0,m=0,d,s=0,max;
	char a[500];
	struct zifu zi[1000],temp;
	struct chuan b[1000],p;
	scanf("%d",&n);
	scanf("\n");
	for(i=0;i<500;i++)
	{
		scanf("%c",&a[i]);
		if(a[i]=='\n')
		{
			a[i]='\0';
			break;
		}
	}
	c=strlen(a);
	for(i=0;i<1000;i++)
	{
		zi[i].num=0;
		zi[i].tou=0;
	}
	temp.num=0;
	for(i=0;i<=c-n;i++)
	{
		k=0;
		for(j=i;j<i+n;j++)
		{
			b[i].e[k]=a[j];
			k++;
		}
		b[i].num=i;
		b[i].e[k]='\0';
	}	
	for(j=1;j<=c-n;j++)
	{
		for(i=0;i<=c-n-1;i++)
		{
			if(strcmp(b[i].e,b[i+1].e)>0)
				{
					p=b[i];
				b[i]=b[i+1];
				b[i+1]=p;
				}
		}
	}
	for(i=0;i<=c-n-1;i++)
	{
		m=0;
		
		for(d=0;d<n;d++)
		{
			if(	b[i+1].e[d]==b[i].e[d])
				m++;
		}
			if(m==n)
		{
			for(j=0;j<n;j++)
			zi[t].e[j]=b[i].e[j];
			if(s==0)
			{
				zi[t].tou=b[i].num;
				s++;
			}
			zi[t].num++;
			w++;
		}	
		else
		{	t++;
		s=0;
		}
	}
	if(w==0)
		printf("NO");
	else
	{
	temp=zi[0];
	for(i=0;i<=t-1;i++)
	{
		if(zi[i].num>temp.num)
		{
			temp=zi[i];
			q=i;
		}
	}
	max=temp.num+1;

	printf("%d\n",max);
	for(j=1;j<=t;j++)
	{
		for(i=0;i<=t-1;i++)
		{
			if(zi[i].tou>zi[i+1].tou)
				{
					temp=zi[i];
				zi[i]=zi[i+1];
				zi[i+1]=temp;
				}
		}
	}
	for(i=0;i<=t;i++)
	{
		if(zi[i].num==max-1)
		{
			for(j=0;j<n;j++)
			{
				printf("%c",zi[i].e[j]);
			}
			printf("\n");
		}	
	}
	}
	return 0;
}
void main()
{
	char str[501],str1[501][5],str2[501];
	int n,i,a,b,c,d,e,l,j,k,js[501];
	scanf("%d\n",&n);
	gets(str);
	l=strlen(str);
	for(i=0;i<l-n+1;i++)
	{
		js[i]=1;
		for(j=0;j<n;j++)
			str1[i][j]=str[i+j];
	}
	for(i=0;i<l-n+1;i++) str1[i][n]='\0';
	for(i=0;i<l-n;i++)
	{
		for(j=i+1;j<l-n+1;j++)
			if(strcmp(str1[i],str1[j])==0) {js[i]++;}
	}
	for(i=0;i<l-n;i++)
		for(j=0;j<l-n-i;j++)
			if(js[j]<js[j+1])
			{
				k=js[j];
				js[j]=js[j+1];
				js[j+1]=k;
				strcpy(str2,str1[j]);
				strcpy(str1[j],str1[j+1]);
				strcpy(str1[j+1],str2);
			}
	if(js[0]==1) {printf("NO\n");}
	else
	{
	printf("%d\n",js[0]);
	for(i=0;i<l-n+1;i++)
		if(js[i]==js[0]) puts(str1[i]);
	}





}
int main()
{
	int n;
	scanf("%d",&n);
	char str[500];
	char gram[500][5]={'\0'};
	scanf("%s",str);
	//?????gram
	int i1;
	//?????\0???????????
	for(i1=0;str[i1+n-1]!='\0';i1++)
	{
		int i2;
		for(i2=i1;i2<=(n-1+i1);i2++)
		{
			gram[i1][i2-i1]=str[i2];
		}
	}
	int gram_len=i1;
	//???gram?????????
	int gram_count[500]={0};
	int i2;
	for(i2=0;i2<=gram_len-1;i2++)
	{
		int i3;
		for(i3=i2;i3<=gram_len-1;i3++)
		{
			if(strcmp(gram[i2],gram[i3])==0)
			{
				gram_count[i2]++;
			}
		}
	}
	//???gram_count???????
	int max=gram_count[0];
	int i3;
	for(i3=0;gram_count[i3]!=0;i3++)
	{
		if(gram_count[i3]>max)
		{
			max=gram_count[i3];
		}
	}
	//??????max????printf
	if(max==1)
	{
		printf("NO");
	}
	else
	{
	printf("%d\n",max);
	int i4;
	for (i4=0;gram_count[i4]!=0;i4++)
	{
		if(gram_count[i4]==max)
		{
			printf("%s\n",gram[i4]);
		}
	}
	}
	return 0;
}
//??????
int main()
{
	int n;
	char str[510]={'\0'};
	cin>>n;
	cin>>str;
	int len=strlen(str);
	char *p=str;
	char substr[6]={'\0'};
	substr[n]='\0';
	int fre[510]={0};
	int maxfre=0;
	for(int i=0;i<=len-n;i++)
	{
		strncpy(substr,p+i,n);
		for(int j=i;j<=len-n;j++)
			if(!strncmp(substr,p+j,n))
				fre[i]++;
		if(fre[i]>maxfre)
			maxfre=fre[i];
	}
	if(maxfre==1)
		cout<<"NO"<<endl;
	else
	{
		cout<<maxfre<<endl;
		for(int i=0;i<=len-n;i++)
			if(fre[i]==maxfre)
			{
				for(int j=i;j<i+n;j++)
					cout<<str[j];
				cout<<endl;
			}
	}
	return 0;
}
int strcmp(char *a, char *b, int n) {
	int i=0;
	for (i=0; i<n; i++)
		if (a[i] != b[i])
			return 0;
	return 1;
}
int main() {
	char a[501], b[501];
	int n, i, j, k, x, y, l, f;
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	scanf("%d", &n);
	scanf("%s", a);
	l = strlen(a)+1;
	f = 0;
	for (i=0; i+n<l; i++) {
		for (j=i+1; j+n<l; j++) {
			if (strcmp(&a[i], &a[j], n) == 1)
				b[i] ++;
		}
		if (b[i] > f)
			f = b[i];
	}
	if (f == 0)
		printf("NO");
	else {
		printf("%d\n", f+1);
		for (i=0; i<l; i++)
			if (b[i] == f) {
				for (j=0; j<n; j++)
					printf("%c", a[i+j]);
				printf("\n");
			}
	}
	//getchar();getchar();
	return 0;
}
main()
{
  int l,n,m,i,j,k,r,s,t1,t2,w,x;
  char a[500];
  scanf("%d",&n);
  scanf("%s",a);
                                                                     
  m=strlen(a);                         
  l=m+1-n;                                                       
  char b[l][n];
  int c[l];  
  j=0;  k=-1; 
  for(i=0;i<m;i++)
   {
    k++;
    b[j][k]=a[i];                          
    if((k+1)%n==0)
    {
     k=-1;
     j++;
     i=i-n+1;
    }
   }                  

  memset(c,0,l*4);
  for(j=0;j<m-n+1;j++)   
      for(k=j+1;k<m-n+1;k++)
         {
           r=0;
           for(i=0;i<n;i++)
              if(b[j][i]==b[k][i])
                r++;
           if(r==n)  
              c[j]++; 
         }

 for(j=0;j<m-n;j++)
     for(k=0;k<m-n-j;k++)
       if(c[k]<c[k+1])
         {
             t1=c[k];
             c[k]=c[k+1];
             c[k+1]=t1;
           for(i=0;i<n;i++)
            { 
             t2=b[k][i];
             b[k][i]=b[k+1][i];
             b[k+1][i]=t2;
            }       
         } 

     w=0;  x=1;
   for(i=0;i<m-n;i++)  
       if(c[i]!=c[i+1])
         {
         w=i+1;
         x=c[i]+1;
         break;
         }                  
         
   if(x<=1)
     printf("NO\n");
   else if(x>1)
  {
   printf("%d\n",x);
   for(j=0;j<w;j++)
    {
     for(k=0;k<n;k++)
       printf("%c",b[j][k]);
     printf("\n");  
    }  
  } 
}