semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void pause()
{int n;
scanf("%d",&n);
}

void find_huiwen(char*str,int len,int n)
{void reverse(char*huiwen,char*rev,int geshu);
char * huiwen;
huiwen=(char*)malloc((len+1)*sizeof(char));
char * rev;
rev=(char*)malloc((len+1)*sizeof(char));

int i,j;

for(i=0;i<=n-len;i++)
	{for(j=0;j<=len-1;j++)
		{huiwen[j]=*(str+i+j);
		}
	huiwen[len]='\0';
	reverse(huiwen,rev,len);//rev???
	if(strcmp(rev,huiwen)==0)
	printf("%s\n",huiwen);
	}
}
void reverse(char*huiwen,char*rev,int geshu)
{
int j;
for(j=0;j<=geshu;j++)
{rev[j]=huiwen[geshu-1-j];
}
rev[geshu]='\0';
}

int main()
{//void pause();
char str[500];
int n;
scanf("%s",str);
n=strlen(str);
//???????
int i;

for(i=2;i<=n;i++)
	find_huiwen(str,i,n);
	

pause();
	return 0;
}
int main()
{
	char a[500];
	int i,j,k,m;
	gets(a);
	int len=strlen(a);
	for(i=2;i<=len;i++)
	{
		for(j=0;j<=len-i;j++)
		{
			for(k=0;k<i;k++)
			{
				if(a[j+k]!=a[j+i-1-k])
					break;
			}
			if(k==i)
			{
				for(m=0;m<i;m++)
					putchar(a[j+m]);
				printf("\n");
			}
		}
	}
	return 0;
}
int main ()
{
    int l,a[1000];
    int f;
    for (int i=1;i<=999;i++)
    {
        a[i]=getchar ();
        if (a[i]==10)
        {
           l=i-1;
           break;
        }
    }
    for (int i=2;i<=l;i+=2)
    {
        for (int j=1;j<=l-i+1;j++)
        {
            f=0;
            for (int k=1;k<=i/2;k++)
            f=f+(a[j-1+k]==a[j+i-k]);
            if (f==i/2)
            {
               for (int k=1;k<=i;k++)
               putchar(a[j-1+k]);
               cout <<endl;
            }
        }
    }
    return 0;
}
char *reverse(char *pt);
int main()
{
	char source[501];
	char sub[501];
	char term[501];
	int len;
	int sublen;
	char *p=source;
	gets(source);
	len=strlen(source);
	for(sublen=2;sublen<=len;sublen++)
	{
		for(p=source;p<source+len-sublen+1;p++)
		{
			strncpy(sub,p,sublen);
			sub[sublen]='\0';
			strcpy(term,sub);
			if(strcmp(sub,reverse(term))==0)
				printf("%s\n", sub);
		}
	}
	return 0;
}
char *reverse(char *pt)
{
	char term[501];
	int i;
	strcpy(term,pt);
	for(i=0;i<strlen(pt);i++)
		pt[i]=term[strlen(pt)-i-1];
	return pt;
}
/*
*8-4
*??? 1200012851
*????
*2012.11.13
**/
int main()
{ 
	char str[500];
	int i, j, m, k, t, len, flag = 1;
	cin.getline(str, 500);
	len = strlen(str);
	for (i = 2; i <= len; i++)
	{
		for (m = 0; m <= len - i; m++)
		{
			flag = 1;
			if (str[m] != str[m + i - 1])
			{
				continue;
			}
			else
			{
				k = m + 1;
				t = m + i - 2;
				while (k < t)
				{
					if (str[k] != str[t])
					{
						flag = 0;
					}
					k++;
					t--;
				}
				if (flag)
				{
					for (j = m; j <= m + i - 1; j++)
					{
						cout << str[j];
					}
					cout << endl;
				}
			}
		}
	}
	return 0;
}
int main()
{
    char a[500];
    int c,i,j,u,p;
    cin>>a;
     for( j=2;j<500;j++)
      { c=j/2;
       
       for( i=0;i<499;i++)
    {  if(a[i]=='\0') break;
       for( u=0;u<c;u++)
       { if(a[i+u]!=a[i+j-1-u]) break;
        if(u==c-1)
         if(a[i+c-1]==a[i+j-c])
        for(p=i;p<i+j;p++)
          {cout<<a[p];
           if(p==i+j-1)
           cout<<endl;}}}}
  
  return 0;
}
int main()
{
	char a[1000];
	int i,j,k,len,l;
	cin.getline(a,1000);
	len = strlen(a);
	for ( l = 2;l < len; l ++ )//??????2????
	{
		for ( i = 0 ; i < len + 1 - l; i ++)
		{
			for ( j = i,k = 0;j <= i + l/2; j ++,k ++ )
			{
				if (a[j] != a[i+l-1-k])  break;
			}
			if ( j > i + l/2)
			{
				for ( j = i; j < i + l;j ++ )  cout << a[j];
				cout << endl;
			}
		}
	}
	return 0;
}
int main()
{
	int i,j,k,l;
	char s[550];
	gets(s);
	l=strlen(s);
	for(i=1;i<=l/2;i++)
	{
		for(j=i-1;j<=l-1-i;j++)
			if(s[j]==s[j+1])
			{
				for(k=1;k<=i-1;k++)
					if(s[j-k]!=s[j+1+k])
						break;
				if(k>i-1)
				{
					for(k=j+1-i;k<=j+i;k++)
						printf("%c",s[k]);
					printf("\n");
				}
			}
	}
	return 0;
}
int t,i;
char a[100];
char b[10000][100];
void f(int x)
{int u=1;
	int tt=strlen(b[x]);
	for(int q=0;q<tt;q++)
	{if(b[x][q]!=b[x][tt-q-1])
		{u=0;break;}
	}if(u==1)cout<<b[x]<<endl;
	return;
}
int main()
{int num=0;
    cin>>a;
    t=strlen(a);
    for(int j=2;j<=t;j++)
    {for(i=0;i<t-j+1;i++)
    {num++;
    	for(int k=0;k<j;k++)
    	{
    		b[num][k]=a[i+k];
    	}f(num);
    }
    }
    return 0;
}
/*         ????
??????        2010.11.24      */

void f(int sta,int len,char a[])
{
	int g=0,i;
	for(i=0;i<len-1-i;i++)
		if(a[i+sta]!=a[sta+len-1-i])
		{
			g=1;
			break;
		}
	if(g==0)
	{
		for(i=sta;i<sta+len;i++)
			cout<<a[i];
		cout<<endl;
	}
}

int main()
{
	int len,sta;
	char a[503]={'\0'};
	cin.getline(a,sizeof(a));
	for(len=2;len<=strlen(a);len++)
		for(sta=0;sta+len<=strlen(a);sta++)
			f(sta,len,a);
	return 0;
}
int main()
{
char a[500];
gets(a);
int i,j,k,b,m,n;
for(j=2;j<=strlen(a);j=j+2)
   {   
   for(i=0;i<strlen(a)-j+1;i++)
     {
      b=0;
      m=i;
      n=i+j-1;
      for(;m<n;m++,n--) 
       {
        if(a[m]!=a[n]){b=1;
        break;}

       }
      if(b==0)
       {
        for(k=i;k<=i+j-1;k++)
        printf("%c",a[k]);
        putchar('\n');
        }
     }
   }
return 0;
}
/*
 * huiwen_zichuan.cpp
 *
 *  Created on: 2014-1-4
 *      Author: ??
 */
int main(){
	char a[600];
	cin>>a;
	int n,i;int j;
	int l=strlen(a);
	for(n=2;n<=l;n++){
		for(i=0;i<l-1;i++){
			if(i+n-1>=l){break;}
			for(j=0;i+j<i+n-1-j;j++){
				if(a[i+j]!=a[i+n-1-j]){break;}
			}
			if(a[i+n-1-j]==a[i+j]&&(i+n-1-j)-(i+j)<3){
				for(int ii=i;ii<=i+n-1;ii++)cout<<a[ii];
				cout<<endl;
			}
		}
	}
	return 0;
}
int main()
{
	int i,j,m,n,k;
	char c[500];
	scanf("%s",c);
	m=strlen(c);
	for(i=2;i<m;i++)
	{
		for(j=0;j+i<m+1;j++)
		{
			for(k=0,n=0;k<i;k++)
			{
				if(c[j+k]!=c[j+i-k-1])
					n++;
			}
			if(n==0)
			{
				for(k=0;k<i;k++)
				{
					printf("%c",c[j+k]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
	
char a[100001];
int  length,i,j,len,check,t;
scanf("%s",&a);
len=strlen(a);
    for(length=2;length<=len;length++)
	{
	      for(i=0;i<len;i++)
		  {     
			  check=0;
		       for(j=0;j<=length/2;j++)
			   {
			           if(a[i+j]!=a[i+length-1-j])
					   {
					     check=1;
						 break;
					   }
			   
			   }
			   if(check==0)
			   {
			      for(t=0;t<length;t++)
                      printf("%c",a[i+t]);
			   }
          printf("\n");
		  }
	
	}
return 0; 
}
int jodge(char s[501],int x,int y)
{
    int i,k=0;
    for(i=x;i<x+(y-x+1)/2;i++)
    {
        if(s[i]!=s[y+x-i])
            return 0;
        else
            k++;
    }
    if(k==(y-x+1)/2)
        return 1;
    else
        return 0;
}
void f(char s[501],int x)
{
     int j,i,k;
     for(i=2;i<=x;i++)
     {
         for(j=0;j<x+1-i;j++)
         {
            if(jodge(s,j,j+i-1)==1)
            { 
                for(k=j;k<=j+i-1;k++)
                 printf("%c",s[k]);
                 printf("\n");
             }
         }
     }

}
int main()
{
    char s[501];
    int i,j,k,t;
    scanf("%s",s);
    k=strlen(s);
    f(s,k);
    return 0;
}
int main()
{
 char a[500];
 gets(a);
 int i,j,n,k,t,m;
 n=strlen(a);
 for(i=1;i<n;i++)
 {
  for(j=0;j<n;j++)
  {
   t=j+i;m=0;
   if(t>n-1) break;
   t=(t+j)/2;
   for(k=j;k<=t;k++)
   {
    if(a[k]!=a[2*j+i-k]) {m=1;break;}
   }
   if(m==0)
   {for(k=j;k<=j+i;k++)
   {
    printf("%c",a[k]);
   }
   printf("\n");
  }}
 }
}
int main()
{
	char str[1000];					// ????????
	int i, j, ii, jj, len, q;		// ??????i, j, ii, ?????q,?????len
	cin >> str;						// ?????
	len = strlen(str);				// ????????
	for (q = 2; q <= len; q++)		// ???????????????
	{
		for (i = 0; str[i] != 0; i++)	// ???????
		{
			ii = i;					// ??????????

			// ????????????????????????
			while ((str[ii] == str[i + q + i - 1 - ii]) && (ii < i + q / 2))
			{
				ii ++;
			}
			if (ii == i + q / 2)	// ???????????????????
			{
				for (j = i; j <= i + q - 1; j++)	// ??????
					cout << str[j];
				cout << endl;		// ????
			}
		}  
	}

	return 0;
}
int main()
{
	char str1[500], str2[500];
	int i, j, length, k = 0, m = 0, n, flag = 0;
	cin >> str1;
	for(length = 2; length <= strlen(str1); length++)
	{
		for(i = 0; i <= strlen(str1) - length; i++)
		{
			for(j = i; j <= i + length - 1; j++)
			{
				str2[k++] = str1[j];
			}
			k = 0;
			for(m = 0; m <= length - 1; m++)
			{
				if(str2[m] != str2[length - 1 - m])
				{
					flag = 1;
					break;
				}
			}
			if(flag == 0)
			{
				for(n = 0; n <= length - 1; n++)
					cout << str2[n];
				cout << endl;
			}
			flag = 0;
		}
	}
	return 0;
}
int main()
{
	char s[1000];
	int i,n,b,j,k,x;
scanf("%s",s);
n=strlen(s);

for (i=2;i<=n;i++)
{
	
	for (k=0;k<=n-i;k++)
	{b=0;
		for (j=0;j<i;j++)
			if (s[k+j]==s[k+i-j-1])
				b++;
			if(b==i)
			{
				for (x=k;x<k+j;x++)
printf("%c",s[x]);				printf("\n");
			}
	}
}
	



			return 0;
}
int main()
{
	char a[520],b[520]={0};
	int length,i,j,k;
	int hui(char b[]);
	gets(a);
	length=strlen(a);
	for(i=2;i<=length;i++)
	{
		for(j=0;j<=length-i;j++)
		{
			for(k=0;k<i;k++)
			{
				b[k]=a[j+k];
			}
			if(hui(b)==1)
			{
				printf("%s\n",b);
			}
			else continue;
		}
	}
	return 0;
}
int hui(char b[])
{
	int i;
	for(i=0;i<strlen(b);i++)
	{
		if(b[strlen(b)-1-i]!=b[i])
		{
			break;
		}
	}
	if(i==strlen(b)) return 1;
	else return 0;
}
int main()
{
	char a[500];
	int r,i,j,k,n,m;
	scanf("%s",a);
	r=strlen(a);
	for(i=2;i<=r;i++)
	{
		for(k=0;k<=r-i;k++)
		{m=k;n=k+i-1;
		while(m<n&&(a[m]==a[n]))
		{m++;n--;}
		if(m>=n) {for(j=k;j<=k+i-1;j++) {putchar(a[j]);	}putchar('\n');	}
		}
	}
	
	return 0;
	
}
// ???? ?? 1000062708
void t(char[], int);
int main()
{
	char a[500],b[500];
	int i, j, k, n, m;
	cin >> a;
	n = strlen(a);
	for(i = 2;i <= n;i++)
		for(j = 0;j <= n - i;j++)
		{
			m = 0;
			for(k = j;k < j + i;k++)
				b[m++] = a[k];
			b[i] = '\0';
			t(b,i);
		}
		return 0;
}
void t(char b[], int m)
{
	int i;
	for(i = 0;i < m / 2;i++)
		if(b[i] != b[m - i - 1])
			break;
	if(i == m / 2)
		cout << b << endl;
}
int main() {
	char str[500]={'\0'},b[500]={'\0'};
	char a[500]={'\0'};
	int c,len,j,i,k,p;
	gets(a);
	c=strlen(a);
	for(len=2;len<=c;len++){
		//??? 
		for(k=0;k<=c-len;k++){
		//?str?? 
		     for(j=k,p=0;j<=len-1+k;j++,p++){
			     str[p]=a[j];
	 	        }
		//????b; 
		     for(i=0;i<len;i++){
		         b[i]=str[len-1-i];
	         }
	    //?????? 
	          if(strcmp(str,b)==0){
		         printf("%s\n",str);
	    }
	}
	
	    
		
	}
	
	
	
	return 0;
}
int pd(char c[],int i);
int main()
{
	char a[501]={'0'},c[501]={'0'},d[501]={'0'};
	int n,i,j,k;
	gets(a);
	n=strlen(a);
	for(i=2;i<=n;i++)
	{
		for(j=0;j<=n-i;j++)
		{
			for(k=0;k<=500;k++)
				d[k]=c[k]='\0';
			for(k=0;k<i;k++)
				c[k]=a[k+j];
			for(k=0;k<i;k++)
				d[k]=c[i-k-1];
			
			if(strcmp(c,d)==0)
			{
				puts(c);
			    
			}
		}

	}
}
char l[500];
int len,n=0,record[2000][3];
main()
{
int i,j,k;
void doit(int a,int b);
gets(l);
len=strlen(l);
for (i=0;i<=len-1;i++)
  doit(i,i+1);
for (i=2;i<=len;i++)
 for (j=1;j<=n;j++)
 if (record[j][2]-record[j][1]+1==i){ for (k=record[j][1];k<=record[j][2];k++) printf("%c",l[k]); printf("\n");}
   
}

void doit(int a,int b)
{
int i,j;
if (l[a]==l[b]&&a-1>=0&&b+1<=len-1) {n++;record[n][1]=a;record[n][2]=b;doit(a-1,b+1);}
if (l[a]==l[b]&&(a==0||b==len-1)) {n++;record[n][1]=a;record[n][2]=b;}
}
char s[500];
void huiwen(int n,int l)
{
	    int k,i,j,e,sum=0;
		for(k=0;k<l-n+1;k++)
		{
			e=k+n-1;
			for(j=k;j<n/2+k;j++,e--)
			{
			    if(s[j]==s[e]) sum++;
			    if(s[j]!=s[e])
			    {
			    	sum=0;
			    	break;
			    }
			    if(sum==n/2)
			    {
				    for(i=k;i<n+k;i++)
					    cout<<s[i];
				    cout<<endl;
				    sum=0;
			    }
			}
		}
}
int main()
{
     int m,l;
     cin.getline(s,500);
     l=strlen(s);
     for(m=2;m<l;m++)
    	 huiwen(m,l);
     return 0;
}
// ????.cpp : Defines the entry point for the console application.
//


void out();
char num[501];

int main()
{

	cin.getline( num + 1,501);

	out();

	return 0;

}

void out()
{
	int i = 0;
	int leng = 0;
	int t = 0;
	int m = 0;
	int k = 0;
	int panduan = 0;

	int len = 0;
	len = strlen( num + 1 );

	for( leng = 2;leng <= len;leng++ )
	{
		m = leng / 2 ;
		for( i = 1;i <= len - leng + 1;i++ )
		{
			panduan = 0;
			k = i + leng;
			for( t = i;t < i + m;t++ )
			{
				k --;
				if( num[t] != num[k] )
				{
					panduan = 1;
					break;
				}
			}

			if( panduan == 0 )
			{
				for( t = i;t < i + leng;t++ )
					cout << num[t];
				cout << endl;
			}

		}

	}

}
void substr(char s[],int start,int end)
{
	int a=start,b=end,i;
	while ((end>start)&&(s[start]==s[end]))
	{ 
		start++; end--;
	}
	while(start>end) 
	{
		for(i=a;i<=b;i++) putchar(s[i]);
		start=start-1;
		putchar('\n');
	}
}
void sub(char s[],int start,int end)
{
	int a=start,b=end,i;
	while ((end>start)&&(s[start]==s[end]))
	{ 
		start++; end--;
	}
	while(start>=end) 
	{
		for(i=a;i<=b;i++) putchar(s[i]);
		start=start-1;
		putchar('\n');
	}
}
void main ()
{
	char s[500];
	int m,n,width,start;
	gets(s);
	n=strlen(s);
	for(width=1; width<n; width++)
		for(m=0; m<=n-width;m++)
			if(n%2==0)
				substr(s,m,m+width);
			else
				sub(s,m,m+width);
}
void main()
{
	int i,j,p,q,k,len;
	char s[500];
	scanf("%s",s);
	len=strlen(s);
	for(i=2;i<=len;i++)/*????*/
		for(j=0;j<=len-i;j++)/*????*/
		{
			p=j;
			q=j+i-1;
			while(p<q)
			{
				if(s[p]==s[q])
				{
					p++;
					q--;
				}
				else break;
				if(p==q+1 || p==q)
				{
					for(k=j;k<=j+i-2;k++)
						printf("%c",s[k]);
					printf("%c\n",s[j+i-1]);
					break;
				}
			}
		}
}
int main()
{
	int i,j,n,r,flag,k;
	char a[501],b[501];
	gets(a);
	n=strlen(a);
	for(i=2;i<=n;i++)
	{
		for(j=0;j+i-1<n;j++)
		{
			flag=0;
			for(k=1;k<=i;k++)
			{
				if(a[j+k-1]==a[j+i-k])
					continue;
				else
				{
					flag=1;
					break;
				}
			}
			if(flag==0)
			{
				for(r=1;r<=i;r++)
					printf("%c",a[j+r-1]);
				printf("\n");
			}
		}
	}
	return 0;
}
/*
 * fx01.cpp
 *
 *  Created on: 2013-1-11
 *      Author: SONY
 */
int main(){
	char str[501];
	cin>>str;
	int len;
	len=strlen(str);
    int i,j;
    for(i=2;i<=len;i++)
    {
    	for(j=0;j<=len-i;j++)
    	{
    		int m,k,t,b=0;
    			k=j;
    			t=j+i-1;
    			for(m=1;m<=i/2;m++)
    			{
                    if(str[k]==str[t])
                    {
                    	b++;
                    	k++;
                    	t--;
                   	}
                    else break;
    			}
    			if(b==i/2)
    			{
    				for(m=j;m<=j+i-1;m++)
    				{
    					cout<<str[m];
    				}
    				cout<<endl;
    			}
    			b=0;
    		}
    }
    return 0;
}
//*************************************************
//***???????***
//***??????***
//***???2012.1.11***
//*************************************************
int main ()
{
	int i,j,k,flag;
	char a[501];
	cin >> a;
	for (i = 1; a[i] != '\0'; i++)
	{
		for (j = 0; a[j] != '\0'; j++)
		{
			flag = 1;
			for (k = 0;j + i - k >= j + k; k++)
			{
				if (a[j + i - k] != a[j + k])
					flag = 0;
			}
			if (flag == 1)
			{
				for (k = 0; k <= i; k++)
					cout << a[j + k];
				cout << endl;
			}
		}
	}
	return 0;
}
char str[510][510][510];


int huiwen(char c1[510])
{
   int n,l;
   char c2[510];
   n=strlen(c1);
   for (l=0;l<n;l++)
     c2[l]=c1[n-1-l];
   c2[n]='\0';
   if (strcmp(c1,c2)==0)
     return 1;
   else
     return 0;
}
int main( )
{
   char s[510];
   int i,j,k,n;
   scanf("%s",s);
   n=strlen(s);
   for (i=2;i<=n;i++)
     for (j=0;j<n-i+1;j++)
      {
       for (k=0;k<i;k++)
          str[i][j][k]=s[j+k];
      }
   for (i=2;i<=n;i++)
     for (j=0;j<n-i+1;j++)
       {
         if (huiwen(str[i][j]))
            printf("%s\n",str[i][j]);
       }
   return 0;
}
void f(char a[500])
{
	int i,n;
	char b[500];
	n=strlen(a);
	for(i=0;i<=499;i++)
	{
		if(i<=n-1) b[i]=a[n-1-i];
		else b[i]='\0';
	}

	if(strcmp(a,b)==0) puts(a);
}

void main(void)
{
	char s[500];
	gets(s);
	int n=strlen(s);

	int l;
	for(l=1;l<=n-1;l++)
	{
		char a[500];
		int i;
		for(i=0;i<=n-1-l;i++)
		{
			int k;
			for(k=0;k<=499;k++)
			{
				if(k<=l) a[k]=s[i+k];
				else a[k]='\0';
			}

			f(a);
		}
	}
}
void  Palindrome(char []);
int main()
{
	char str1[500];
	cin >> str1;
	Palindrome(str1);
	return 0;
}
void  Palindrome(char str1[])
{	
	int i, k, m, n, a, b;
	m = strlen(str1);
	for (i = 1; i < m; i++)
	{
		for (k = 0; k < m; k++)
		{
			for (a = k,b = k + i; a < b; a++,b--)
			{
				if (str1[a] != str1[b])
					break;
			}
			if (a == b + 1 || a == b)
			{
				for(n = k; n <= k + i; n++)
				{
					cout << str1[n];
				}
				cout << endl;
			}
		}
	}
}
int main()
{
	char s[500];
	char *p;
	int i,l,j,k,m;
	scanf("%s",s);
	l=strlen(s);
	for(i=2;i<l+1;i++)
	for(j=0;j<=l-i;j++)
	{
	k=0;
	m=i-1;
	for(p=s+j;p<s+j+i;p++)
	{
	if(*p!=*(p+m)) k++;
	m=m-2;
	}
	if(k==0)
	{
	for(p=s+j;p<s+j+i;p++)
	printf("%c",*p);
	printf("\n");
	}
	}
	return 0;
}
void main()
{
	int n,i,j,l,k,m;
	char a[500];
	gets(a);
	n=strlen(a);
	for(m=2;m<=n;m++)
	{		
    	for(i=0;i<n;i++)
		{
		   k=i;
		   char b[500]={0},c[500]={0};
		   for(j=0,k=i;j<m;j++,k++)
		   {
			    b[j]=a[k];
		        c[m-1-j]=a[k];
		   }
		   if(strcmp(b,c)==0)
			  printf("%s\n",b);
		}
	}
}
int main()
{
	int i,j,k,n,flag,m;
	flag=0;
	char str[500];
	gets(str);
	n=strlen(str);
	char *p;
	for(i=2;i<=n;i++)
	{
			p=str;
			for(j=0;j<=n-i;j++)
			{
				for(k=j;k<(j+j+i)/2;k++)
				{
					if(str[k]==str[j+j+i-1-k])
						flag=1;
					else
					{
						flag=0;
						break;
					}
				}
				if(flag==1)
				{
					for(m=j;m<=j+i-1;m++)
					{
						printf("%c",str[m]);
					}
					printf("\n");
				}
			}
	}
}
int maxhui(char chuan[], int i)
{
	int k, length = 2;
	for(k = i ;  ; k ++)
	{
		if(chuan[k] == chuan[k - length + 1])
			length += 2;
		else break;
	}
	length -= 2;
	return length;
}



int main()
{
	char chuan[500], huichuan[500][500];
	int i, j, k = 0, length, p;
	cin.getline(chuan, 500, '\n');
	for(i = 1 ; i < strlen(chuan) ; i ++)
	{
		if(chuan[i] ==  chuan[i - 1])
		{
			length = maxhui(chuan, i) / 2;
			for(j = 0 ; j < length ; j ++)
				huichuan[k][j] = chuan[i + j];
			huichuan[k][length] = '\0';
			k++;
		}
	}
	int maxlen[500], maxlength = 0;
	for(i = 0 ; i < k ; i ++)
	{
		if(strlen(huichuan[i]) > maxlength)maxlength = strlen(huichuan[i]);
	}
	for(i = 0 ; i < maxlength ; i ++)
	{
		for(j = 0 ; j < k ; j ++)
		{
			if(strlen(huichuan[j]) > i)
			{
				for(p = i ; p >= 0 ; p --)
				{
					cout << huichuan[j][p];
				}
				for(p = 0 ; p <= i ; p ++)
				{
					cout << huichuan[j][p];
				}
				cout << endl;
			}
		}
	}
	return 0;
}
int p,q;
int flag;
char input[100] ;
int judge(int i,int l)
{
    flag = 0 ;
    for (p=i;p<(l/2+i);p++)
       {
           if(input[p] == input[l+2*i-p-1])
                flag++;
       }
    if(flag == l/2)  return 1;
    else return 0;
}
int main()
{
    cin>>input;
    int length = strlen(input) ;
    int k , d ,w ;
    for( d=2;d<=length;d++)
    for (k=0;k<length-1;k++)

           {
               if(judge(k,d)==1)
                   {
                       for (w=k;w<k+d;w++)
                          {
                              cout<<input[w];
                          }
                          cout<<endl;
                   }
           }

}
/* ?????????????????*/
int huiwen(char *a){
    int i,j,len;
    len=strlen(a);
    /*?????2?????????*/ 
    for(i=len/2-1,j=len/2;i>=0&&j<len;i--,j++){
       if(a[i]!=a[j]) break;                                           
                                                
     }
     if(i<0) return 1;
     else return 0;   
    
    }
int main(){
    char a[501],tmp[501];
    int i,j,k,len;
    scanf("%s",a);
    len=strlen(a);
   /*?????????1*/ 
    if(len<=1) return 0;
    
    /*?????????????????????2?4?6?8????*/ 
    for(i=2;i<=len;i+=2){
      /*??????????????????????????????i???????????????*/ 
       for(j=0;j+i<=len;j++){
           /*??for?????????? ?i??????tmp??    */              
          for(k=0;k<i;k++)
             tmp[k]=a[k+j];
              /* ?????????????*/
             tmp[k]='\0';
             
             /*??????????????????????*/
          if(huiwen(tmp)==1) printf("%s\n",tmp);
                            
       
       }   
     
        }
    
    getchar();
    getchar();
    return 0;
    
    }
int main()
{
	char s[501];
	int i, j, t;
	cin.getline(s,501);
	int l = strlen(s);
	for (i = 2;i <= l ;i++)
	{
		for (j = 0;j <= l - i;j++)
		{
			for (t = j;t <= j + i / 2 - 1 ;t++)
			{
				if (s[t] != s[2 * j + i - 1 - t])
					break;
			}
			if (t == j + i / 2 )
			{
				for (int k = j;k <= j + i - 1;k++)
				{
					cout << s[k];
				}
				cout << endl;
			}
		}
	}

	return 0;
}
void run(int i, char a[500])
{
	int j, k, l;
	char b[500], c[500];
	for (j = 0; j  < 500; j++)
	{
		b[j] = '\0';
		c[j] = '\0';
	}
	int len = strlen(a);
	for (j = 0; j <= len - i; j++)
	{
		for (k = 0; k < i; k++)
			b[k] = a[j + k];
		for (l = 0; l < i; l++)
			c[l] = b[strlen(b) - l - 1];
		for (k = 0; k < i; k++)
		{
			if (b[k] != c[k]) break;
		}
		if (k == i)
		{
			for (k = 0; k < i; k++)
				cout << b[k];
			cout << endl;
		}
	}
}
int main()
{
	int i, len;
	char a[500];
	cin.getline(a,500);
	len = strlen(a);
	for(i = 2; i <= len; i++)
	{
		run(i,a);
	}
	return 0;
}
void main(void)
{
	char a[501];
	int i,j,l,n,k;
	gets(a);
	n=strlen(a);
	for(l=2;l<=n;l++)
	{
		for(i=0;i<=n-l;i++)
		{
			k=1;
			for(j=0;j<=l/2;j++)
			{
				if(a[i+j]==a[i+l-1-j])
					k=k*1;
				else
				{
					k=k*0;
					break;
				}
			}
			if(k)
			{
				for(j=0;j<l;j++)
					printf("%c",a[i+j]);
				printf("\n");
			}
		}
	}
}
int main()
{
	char s[500];
	char *p;
	gets(s);
	p=s;
	int i,j,k,l,m,t;
	l=strlen(s);
	for(i=2;i<=l;i++)
	{
		for(j=0;j<l-i+1;j++)
		{
			int s=0;
			for(t=0;t<i/2;t++)
			{
				if(*(p+j+t)!=*(p+j+i-1-t))
				{
					s=1;
				    break;
				}
			}
			if(s==0)
			{
				for(m=j;m<j+i;m++)
				{
					printf("%c",*(p+m));
				}
					printf("\n");
			}
		}
		
	}

	return 0;
}
char s[501];
int i, j, l;
void even(int k)
{
     for (i=(k/2);i<strlen(s)-(k/2);i++)
     {
         for (j=0;j<=(k/2);j++)
         {    
            if (s[i-j]!=s[i+1+j]) break;
            if (j==(k/2))
            {
                for (l=i-j;l<=i+1+j;l++) 
                cout << s[l];
                cout << endl;
            } 
         }
     }
}
void odd(int k)
{
    for (i=(k/2+1);i<=strlen(s)-(k/2+1);i++)
    {
        for (j=1;j<=(k/2+1);j++)
        {
            if (s[i-j]!=s[i+j]) break;
            if (j==(k/2+1))
            {
                for (l=i-j;l<=i+j;l++)
                cout << s[l];
                cout << endl;
            }
        } 
    } 
}       
int main()
{
    int k=0;
    cin.get(s,500);
    while(1)
    {
        odd(k);
        k++;
        if (k==strlen(s)-2) break;
        even(k);
        k++;
        if (k==strlen(s)) break;
    }
    return 0;
}
int main()
{
	char s[500];
	gets(s);
	int a[500][500]={0},b[500]={0};
	int l,i,j,k,p=0;
	l=strlen(s);
	for(i=0;i<l-1;i=i+1)
	{
		for(j=1;(i+j<l)&&(i-j>=0);j=j+1)
		{
			if (s[i+j]==s[i-j])
			{
				a[2*j+1][b[2*j+1]]=i;
				b[2*j+1]++;
			}
			else break;
		}
		for(j=0;((i-j)>=0)&&(i+1+j<l);j=j+1)
		{
			if (s[i-j]==s[i+1+j])
			{
				a[2*j+2][b[2*j+2]]=i;
				b[2*j+2]++;
			}
			else break;
		}
	}
	p=0;
	for(i=2;i<=l;i=i+1)
	{
		if (i%2==0)
		{
			for(j=0;j<b[i];j=j+1)
			{
				if(p) printf("\n");
				p=p+1;
				for (k=a[i][j]-i/2+1;k<=a[i][j]+i/2;k=k+1)
					printf("%c",s[k]);
			}
		}
		else
		{
			for(j=0;j<b[i];j=j+1)
			{
				if(p) printf("\n");
				p++;
				for(k=a[i][j]-(i-1)/2;k<=a[i][j]+(i-1)/2;k=k+1)
					printf("%c",s[k]);
			}
		}
	}
	return 0;
}
/*
 * qimolianxi10.cpp
 *
 *  Created on: 2010-12-17
 *      Author: l
 */
int main(){
	char a[501];//???????
	cin.getline(a,501);//??
	int i,j,l,k,p;
	l=strlen(a);//????
	for(i=2;i<=l;i++)//i?????????
		for(j=0;j<=l-i;j++)
		{
			p=1;
			for(k=j;k<=j+i/2;k++)
				if(a[k]!=a[2*j+i-1-k])
					p=0;//p?????????
			if(p==1){//?????????
				for(k=j;k<j+i;k++)
					cout<<a[k];
			cout<<endl;//???????
			}
		}



	return 0;
}
int main()
{
	char a[501];//????
	cin.getline( a, 501 );// ??
	int length=strlen(a), p=1;
	for( int i=2; i<length; i++ )//?????
	{
		for( int j=0; j<length-i+1; j++ )//??????
		{
		    p=1;
			for( int x=0; x<i; x++ )// ??????
		    {
		    	if(a[j+x]!=a[j+i-x-1])
		    	{
		    		p=0;
		    		break;
		    	}
		    }
		    if(p==1)
		    {
		    	for( int y=0; y<i; y++ )//????
		    	{
		    		cout << a[j+y];
		    		if( y==i-1 )
		    			cout << endl;
		    	}
		    }
		}
	}

    return 0;
}