semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char a[100]={'\0'},b[100]={'\0'},c[100]={'\0'};
	int i,j,l0,l;
	gets(a);
	l0=strlen(a);
	l=2;
	for(l=2;l<=l0;l++)
	{
		for(i=0;i<=l0-l;i++)
		{
			for(j=i;j<i+l;j++)
				b[j-i]=a[j];
			for(j=0;j<l;j++)
				c[j]=b[l-1-j];
			if(strcmp(b,c)==0)
			{
			for(j=0;j<l;j++)
				printf("%c",b[j]);
			printf("\n");
			}
		}
	}
	return 0;
}
struct hw{
	int s;
	int l;
}queue[N];
int main()
{
  int len,q=0,i,j;
  char str[N];
  gets(str);
  len=strlen(str);
  for(i=0;i<len-1;i++)
  {
   if(str[i]==str[i+1])
    {
	 queue[q].s=i;
	 queue[q++].l=2;
    }
  }
  for(i=0;i<q;i++)
  {
  	for(j=0;j<queue[i].l;j++)
  	printf("%c",str[queue[i].s+j]);
  	printf("\n");
  	if(str[queue[i].s-1]==str[queue[i].s+queue[i].l])
  	{
	  queue[q].s=queue[i].s-1;
	  queue[q++].l=queue[i].l+2; 	
    }
  } 	
}
//****************************************
//*?????????                                    **
//*?????? 1100012907       **
//*???2011. 11.15                         **
//****************************************
int  k, l;
int i, j, p;
char str[500];
void huiwen();//????
int main()
{
	cin.getline(str,500);
	l = strlen(str);//???????
    huiwen();
	return 0;
}
void huiwen()
{               
	for(k = 1; k < l; k++)//????2?????????
	{       
	    for(i = 0; i < l; i++)
		{	 
	        if(str[i + k] == str[i])//????????
			{
			    for(p = i + 1; p < i + k; p++)
				{             
				    if(str[p] != str[2 * i + k - p]) break;//??????????????????
				}
			    if(p > (2 * i + k) / 2)//?????????????????
				{    
			        for(j = i; j <= i + k; j++)
					{
				        cout << str[j];
					}
			        cout << endl;
				}
			}
		}
	}
}
int main()
{
	char ch[500];
	gets(ch);
	int i,len,j,k;
	len=strlen(ch);
	for(i=2;i<=len-1;i++){
			int n;
			n=(i-2)/2;
		for(j=0;j<=len-i;j++){
			int h=0;
			int m=0;
			for(k=j;k<=j+n;k++){
				if(ch[k]==ch[j+i-1+m]){
					h++;
					m--;
				}else{
					break;
				}
				if(h==(i/2)){
					int l;
					for(l=j;l<=j+i-1;l++){
						printf("%c",ch[l]);
					}
					printf("\n");
				}
			}
		}
	}
	return 0;
}
int f(char word[500],int len)
{
	int i;
	for(i=0;i<=len/2;i++)
	{
		if(word[i]!=word[len-1-i])
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	char str[500],word[1000][500];
	int i,j,len[1000],lenth,m,log;
	gets(str);
	log=0;
	lenth=strlen(str);
	for(i=2;i<=lenth;i++)
	{
		for(j=0;j<=lenth-i;j++)
		{
			for(m=0;m<i;m++)
			{
				word[log][m]=str[m+j];
				word[log][m+1]='\0';
			}
			log++;
			len[log-1]=strlen(word[log-1]);
		}
	}
	for(i=0;i<log;i++)
	{
		if(f(word[i],len[i]))
			printf("%s\n",word[i]);
	}
	return 0;
}
//*************************************************
//***???????***
//***??????***
//***???2012.11.14***
//*************************************************
int main ()
{
	int i = 0,j,k,p,length;
	char a[100];
	do
	{
		a[i] = getchar();   
	}
	while (a[i++] != '\n');                   //?????
	length = i;                               //???????
	for (i = 2; i <= length; i++)                  //??????????????
	{
		for (j = 0; j <= length - i - 1; j++)     //??????????????
		{
			p = 1;
			for (k = 0; k <= (i - 1) / 2; k++)
			{
				if (a[j + k] != a[j + i - 1 - k])   //?????????????
					p = 0;
			}
			if (p == 1)
			{
				for (k = j; k < i + j; k++)
					cout << a[k];
				cout << endl;
			}
		}
	}
	return 0;
}
/**
* @file 1000012800_1.cpp
* @author ??
* @date 2010-11-24
* @description
* ??????:??
*/

int main()
{
	char a[501];
	cin >> a;
	int len = strlen(a);
	for (int i = 2; i <= len; i ++)
		for(int j = 0; j + i - 1 < len; j ++)
		{
			int flag = 1;
			int m = j + i - 1;
			for (int k = 0; j + k <= m - k; k ++)
			{
				if (a[j + k] != a[m - k])
				{
					flag = 0;
					break;
				}
			}
			if (flag)
			{
				for (int n = 0; n < i; n ++)
					cout << a[j + n];
				cout << endl;
			}
		}
		return 0;
}
int main()
{
	char str[500] , parlindrome[500] ;
	int len ;
	cin >> str ;
	len = strlen(str) ;
	for (int i = 2 ; i <= len ; i++)
	{
		for (int j = 0 ; j <= len - i ; j++)
		{
			int k ;
			for (k = 0 ; k < i ; k++)
			{
				if (str[j+k] == str[j+i-1-k])
				{
					parlindrome[k] = str[j+k] ;
				}
				else
					break ;
			}
			parlindrome[k] = '\0' ;
			if (k == i)
				cout << parlindrome << endl ;
		}
	}
	return 0 ;
}
int main()
{
	char s[501]="",temp[501]={""},temp1[501]={""};
	int i=0,j=0,r=0,p=0,q=0,num;

	gets(s);
    num=strlen(s);

	for(i=2;i<=num;i++)
		for(j=0;j<=strlen(s)-i;j++)
		{
			p=j;
			for(r=0;r<i;r++)
			{
				temp[r]=s[p];
			    p++;
			}
           for(q=0;q<i;q++)
		   {
			   temp1[q]=temp[i-q-1];
		   }
			if(strcmp(temp1,temp)==0)
		   printf("%s\n",temp);
			
		}
}
int main()
{
	char s[501];
	int i,j,k,p,len;
	scanf("%s",s);
	len=strlen(s);
	for(k=2;k<len;k++)
	for(i=0;i<=len-k;i++)
	{
		for(j=i;j<i+k/2;j++)
		if(s[j]!=s[2*i+k-1-j])break;
		if(j==i+k/2)
		{
			for(p=i;p<i+k;p++)
			printf("%c",s[p]);
			printf("\n");
		}
	}
	return 0;
}
void main()
{char s[501];
int i,j,n,l,f; scanf("%s",s);l=strlen(s);
for(n=2;n<=l;n++)
{for(i=0;i<=l-n+1;i++)
{f=0;for(j=i;j<=(2*i-1+n)/2;j++){if(s[j]!=s[2*i-1+n-j]) {f=1;break;}}
if(f==1) continue;
else{for(j=i;j<=i-1+n;j++) printf("%c",s[j]);printf("\n");}
}
}
}
int main()
{
    char s[501];
    int i, j, k=0,l;
    cin.get(s,500);
    while(1)
    {
        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;
                } 
            }
        }
        k++;
        if (k==strlen(s)-2) break;
        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;
                }
            } 

        }
        k++;
        if (k==strlen(s)) break;
    }
    return 0;
}
int main()
{
	char a[501],b[2000][501];
	int i,j,k,l,p,q,t=0;
	scanf("%s",a);
    l=strlen(a);
	for(i=0;i<=l-1;i++)       /*????a[0]????,???????????????????*/
	{
		for(j=i+1;j<=l-1;j++)     //?a[0]????????
		{
			if(a[i]==a[j])                  //?????
			{
				for(k=1;k<=(j-i+1)/2;k++)        //?????????????
				{
					if(a[i+k]!=a[j-k])
						break;
					else if(a[i+k]==a[j-k]&&k==(j-i+1)/2)
					{
						q=0;
						t++;
						for(p=i;p<=j;p++)
						{
							b[t][q++]=a[p];
						}
						b[t][q]='\0';
					}
				}
			}
		}
	}
	for(i=2;i<=l;i++)
	{
		for(j=1;j<=t;j++)
		{
			if(strlen(b[j])==i)
			{
				printf("%s",b[j]);
				printf("\n");
			}
		}
	}
}
//********************************
//*???4.cpp   **
//*?????? 1200012768 **
//*???2012.11.  **
//*???????  **
//********************************
int main()
{
	char ch[500];
	int i = 0, j, k, len, flag = 1;
	do
	{
		cin.get(ch[i]);
		if (ch[i] == '\n')
			break;
		i++;
	} while (i < 500);
	ch[i] = '\0';
	len = strlen(ch);
	for (j = 2; j <= len; j++)
	{
		for (i = 0; i <= len - j; i++)
		{
			for (k = i; k <= i + (j - 1) / 2; k++)
				if (ch[k] != ch[2 * i + j - 1 - k])
				{
					flag = 0;
					break;
				}
			if (flag == 1)
			{
				for (k = i; k < i + j; k++)
					cout << ch[k];
				cout << endl;
			}
			flag = 1;
		}
	}
	return 0;
}
void huiwen(char str[500])
{
	int i, j, k, t, x, len, count;
	len = strlen(str);
	for ( j = 2; j < len + 1; j ++ )                                //j???????????
	{
		for ( i = 0; i <= len - j; i ++ )                           //i?????????   
		{
			count = 0;
			for ( k = i, t = i + j - 1; k < t; k ++, t -- )            //k, t???????????????????
			{
				if ( str[k] == str[t] )
					count ++;
			}
			if ( count == j / 2 )
			{
				for ( x = i; x < i + j; x ++ )
					cout << str[x];
				cout << endl;
			}
		}				                        
	}
}


int main ()
{
	char str[500];
	cin >> str;
	huiwen(str);
	return 0; 
}
int main()
{
	char a[501];
	char *p,*t,*m;
	cin>>a;
	int la,i,flag=1;
	la=strlen(a);
	for(i=1;i<la;i++)
	{
		for(p=a+i;p<a+la;p++)
		{
			flag=1;
			for(t=p-i,m=p;t<=m;t++,m--)
			{
				if(*t!=*m)
				{
					flag=0;
					break;
				}
			}
			if(flag)
			{
				for(t=p-i;t<=p;t++)
					cout<<*t;
				cout<<endl;
			}
		}
	}
	return 0;
}
int judge(char s[],int start,int wid)
{
	int end=start+wid-1;
	while((s[start]==s[end])&&(start<end))
	{
		start++;
		end--;
	}
	if(start>=end)
		return(1);
	else
		return(0);
}
int main()
{
	char s[600]={'\0'};
	int l,w,i,j,c;
	gets(s);
	l=strlen(s);
	for(w=2;w<=l;w++)
	{
		for(i=0;i<=l-w;i++)
		{
			c=judge(s,i,w);
			if(c==1)
			{	
				for(j=i;j<=i+w-1;j++)
					putchar(s[j]);
				printf("\n");
			}
		}
	}
}
void main()
{
	char s[1000];
	int n,i,j,k,m,count=0;
	gets(s);
	n=strlen(s);

	for(k=2;k<=n;k=k+2)
	{
		for(i=0;i<n;i++)
		{
			for(j=0;j<k/2;j++)
			{
				if(s[i+j]==s[i+k-j-1])
					count++;
				if(j==k/2-1 && count==k/2)
				{
					for(m=i;m<i+k;m++)
						printf("%c",s[m]);
					printf("\n");
					count=0;
				}
				else if(j==k/2-1 && count!=k/2) count=0;
			}
		}
	}
}
int main()
{
	char c[500];
	int i,j,h,n,t,f;
	scanf("%s",c);
	h=strlen(c);
    for(i=2;i<=h;i++)
	{
		for(j=0;j<=h-i;j++)
		{ 
			n=-1;t=j;f=2*j+i-1;
			while(t<j+i)
			{
				if(c[t]==c[f-t])
				{
					n=t;
					t++;
				}
				else break;
			}
			if(n==i+j-1)
			{
				for(t=j;t<j+i;t++)
				{
					printf("%c",c[t]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
	char s[500];
	int n,i,j,t,k;
	scanf("%s",s);
	n=strlen(s);
	if(n%2==0)
	{
		for(i=1;i<=(n/2);i++)
		{
			for(j=0;j<(n-2*i+1);j++)
			{
				t=0;
				for(k=0;k<i;k++)
				{
					if(s[j+k]==s[j+2*i-1-k])
						t=t+1;
				}
				if(t==i)
				{
					for(k=j;k<j+2*i;k++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
                }
			}
		}
		for(i=1;i<((n-1)/2);i++)
		{
			for(j=0;j<(n-2*i+1+1);j++)
			{
				t=0;
				for(k=0;k<((2*i+1-1)/2);k++)
				{
					if(s[j+k]==s[j+2*i+1-1-k])
						t=t+1;
				}
				if(t==((2*i+1-1)/2))
				{
					for(k=j;k<j+2*i+1;k++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
				}
			}
		}
	}
	else
	{
		for(i=1;i<(n/2);i++)
		{
			for(j=0;j<(n-2*i+1);j++)
			{
				t=0;
				for(k=0;k<i;k++)
				{
					if(s[j+k]==s[j+2*i-1-k])
						t=t+1;
				}
				if(t==i)
				{
					for(k=j;k<j+2*i;k++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
                }
			}
		}
		for(i=1;i<=((n+1)/2);i++)
		{
			for(j=0;j<(n-2*i+1+1);j++)
			{
				t=0;
				for(k=0;k<((2*i+1-1)/2);k++)
				{
					if(s[j+k]==s[j+2*i+1-1-k])
						t=t+1;
				}
				if(t==((2*i+1-1)/2))
				{
					for(k=j;k<j+2*i+1;k++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
				}
			}
		}
    }
	return 0;
}
int main()
{
    int i,len,j,times,k,flag=1;
    char str[500];
    scanf("%s",str);
    len=strlen(str);
    for(i=2;i<=len;i++)
    {
        times=i/2;
        for(j=0;j<=len-i;j++)
        {
            for(k=j;k<=j+times-1;k++)
            {
                if(str[k]!=str[i+2*j-1-k])
                {flag=0;break;}
            }
            if(flag==1)
                {for(k=j;k<=i+j-1;k++)
                printf("%c",str[k]);
                printf("\n");}
            flag=1;
        }
    }
    return 0;
    
}
int main()
{
	char str[500];
	int i, j, k, s, length;
	cin.getline(str,500);
	length = strlen(str);
	for (i = 2; i <= length; i++)
	{
		for (j = 0; j <= length - i; j++)
		{
			for (k = j; k < j + i/2; k++)
			{
				if (str[k] != str[2 * j + i - k - 1])
				{
					break;
				}
			}
			if (k == j + i/2)
			{
				for (s = j; s < j + i; s++)
					cout << str[s];
				cout << endl;
			}
		}
	}
	return 0;
}
int main()
{
	int i, j, begin, end, flag, p;
	char a[501];
	cin >> a;
	for (i = 0; a[i] != '\0'; i++)
		p = i;
	p++;
	for (i = 2; i <= p; i++)
	{
		for (j = 0; j <= p - i; j++)
		{
			flag = 1;
			for (begin = j, end = j + i - 1; end > begin; begin++, end--)
				if (a[begin] != a[end])
				{
					flag = 0;
					break;
				}
			if (flag == 1)
			{
				for (begin = j; begin <= j + i - 1; begin++)
					cout << a[begin];
				cout << endl;
			}
		}
	}
	return 0;
}
void main()
{
	char c[501],*p;
	int l,i,j,k,len,flag=1;//l--????
	for(i=0;i<500;i++)
	{
		scanf("%c",&c[i]);
		if(c[i]=='\n')
		{
			len=i+1;
		    break;
		}
	}
	for(l=2;l<=len;l++)
	{
		for(j=0;j<=len-l;j++)
		{
			p=&c[j];//
			flag=1;//
			for(k=0;k<l/2;k++)
			{
				if(*(p+k)!=*(p+l-1-k))
				{
					flag*=0;
					break;
				}
			}
			if(flag==1)
			{
				for(k=0;k<l;k++)
					printf("%c",*(p+k));
				printf("\n");
			}
			
		}
	}
}
void search (char s[501],int i)
{
	int k;
	char s1[501],s2[501];
	for (int j=0;s[j]!='\0';j++)
	{
		for (k=j;k<j+i;k++)
			s1[k-j]=s[k];
		s1[k-j]='\0';
		for (k=0;k<i;k++)
			s2[k]=s[j+i-1-k];
		s2[i]='\0';
		if (strcmp (s1,s2)==0)
			cout <<s1<<endl;
	}
}
int main ()
{
	char s[501];
	cin>>s;
	int i;
	for (i=2;s[i]!='\0';i++)
	{
		search (s,i);
	}

	return 0;
}
int main()
{  
	char a[500],b[500];
	cin>>a;
	int s=0;
	for (int i=0;i<500;i++)
		if (a[i]=='\0')
			break;
		else
			s++;	
	for (int j=2;j<=s;j++)
		for (int i=0;i<s;i++)
		{
			char b[j];
			for (int k=i;k<i+j;k++)
				b[k]=a[2*i+j-1-k];
			for (int m=i;m<i+j;m++)
			{ 
				if(a[m]!=b[m])
					break;
				if (a[m]==b[m]&&m==i+j-1)
				{for (int p=i;p<i+j;p++)
				cout<<a[p];
				cout<<endl;
				}
			}
		}
		return 0;
}
//*********************************** 
//*????????                 *
//*?  ????  1100062709         *
//*?  ??2011.11.15               *
//***********************************
int len;                                                   //len????? 
void huiwenzichuan (char a[]);                             //????? 
int main()
{
    char a[500];                                           //??????? 
   	int i = 0;
	while((a[i] = cin.get()) != '\n')                     //???????
	{
		i++;                                              //???????? 
	}
	len = i;                                               //??????????len 
    huiwenzichuan (a);                                     //?????? 
    return 0;                                              //????? 
}
void huiwenzichuan (char a[])                              //????? 
{
     int i, j, k, flag, m;                                 //?????? 
     for (i = 2; i < len; i++)                             //???????????????????? 
     {
         for (k = 0; k < len; k++)                         
         {
             flag = 1;                                     //??????1 
             for (j = 0;j < i; j++)                        //?a[k]????????? 
             {
                 if (a[k + j] != a[k + i - j - 1])
                 {
                         flag = 0;                         //????????0 
                         break;                            //????? 
                 }
             }
             if (flag == 1)                                //???1?????????? 
             {
                for (m = k; m < k + j; m++)
                    cout << a[m];                          //???? 
                cout << endl;                              //?? 
             }                     
         }
     }
     return;
}
int main()
{
	char s[500];
	int n, i, j, m, b, c;
	cin >> s;
	n = strlen(s);
	for(i = 1; i < n; i++)
	{
		b = n - i - 1;
		for(m = 0; m <= b; m++)
		{
			c = 0;
			for(j = 0; j <= i; j++)
			{
				if(s[m + j] == s[m + i - j])
					c++;
			}
				if(c == i + 1)
				{
					for(j = m; j <= m + i; j++)
					{
						cout << s[j];
					}
					cout << endl;
				}
		}
	}
	return 0;
}
int main()
{
	char str[600];
	cin>>str;
	int le=strlen(str),p,q;

		for(int k=1;k<=le-1;k++)
			for(int i=0;i<=le-2&&i+k<=le-1;i++)
		{
			int flag=1;



			 for(p=i,q=i+k;p<q;p++,q--)
			   if(str[p]!=str[q])
				{
				 flag=0;
				 break;
				}
			               if(flag==1)
				           {
				            for(int m=i;m<=i+k;m++)
				             cout<<str[m];
			               cout<<endl;
				          }
			  if(flag==0)
				  continue;
		}
	return 0;
}
int main()
{
	char a[512],b[512],c[512],d[512];
	int i,len,k,j;
	gets(a);
	len=strlen(a);
	for(i=1;i*2<=len;i++)
	{
		k=0;
		for(j=0;j+2*i<=len;j++)
		{
			for(k=0;k<i;k++)
			{
				b[k]=a[j+k];
				b[2*i-1-k]=a[j+2*i-1-k];
				c[k]=a[j+k];
				d[k]=a[j+2*i-1-k];
			}
			b[2*i]=0;
			c[i]=0;
			d[i]=0;
			if(!strcmp(c,d))
				printf("%s\n",b);
		}
	}
	return 0;
}
char a[500];

void checkTheSame(char t[], int n)
{
	int len, i, j, k, p;
	len = strlen(t);
	for (i = 0; i < len - n; i++)
	{
		j = i + n;
		k = i;
		while (j > k)
		{
			if (a[k] != a[j])
				break;
			k++;
			j--;
		}
		if (j <= k)
		{
			for (p = i; p <= i + n; p++)
				cout << t[p];
			cout << endl;
		}
	}
}

int main()
{
	int n = 1, len;
	cin.getline(a, 500);
	len = strlen(a);
	for (n = 1; n < len; n++)
		checkTheSame(a, n);
	return 0;
}
int main()
{
	int ishuiwen(char *p);
	char s[500],sub[500]="0";
	int i,j,l,len;
	gets(s);
	len=strlen(s);
	for(l=2;l<=len;l++){
		for(i=0;i<=len-l;i++){
			for(j=0;j<l;j++){
				sub[j]=s[i+j];
			}
			sub[j]='\0';
			if(ishuiwen(sub))
				printf("%s\n",sub);
		}
	}
	return 0;
}
int ishuiwen(char *p)
{
	int len,i;
	len=strlen(p);
	for(i=0;i<len/2;i++){
		if(*(p+i)!=*(p+len-1-i))
			return 0;
	}
	return 1;
}
/*
 * huiwenzichuan.cpp
 *
 *  Created on: 2011-12-21
 *      Author: Administrator
 */
int main()
{
	char chuan[500];
	cin>>chuan;
	int lenth=strlen(chuan);
	int i,j;
	for(int k=1;k<lenth;k++)
	{
		for(i=0,j=k;j<lenth;i++,j++)
		{
			int begin=i,end=j;
			while(begin<end)
			{
				if(chuan[begin]!=chuan[end])
				{
					break;
				}
				else
				{
					begin++;
					end--;
				}
			if(begin>=end)
			{
				for(int a=i;a<=j;a++)
				{
					cout<<chuan[a];
				}
				cout<<endl;
			}
			}
		}
	}
	return 0;
}
int main()              
{
    char str[500]={' '};              
    cin >> str;                       
    int len=strlen(str);
    int i,j,k;
    int m;
    float leap;
    for (i=2;i<=len;i++)
    {
       if (i%2==0)  {leap=0.5;}
       else {leap=0;}
                   for (j=0;j<=len-i;j++)        
            {
                m=1;
                for (k=j;k<j+(i-1)/2+leap;k++)
                {
                    if (str[k]!=str[2*j+i-1-k])
                    {
                        m=0;
                        break;
                    }
                }
                if (m==1)
                {
                    for (k=j;k<=j+i-1;k++)
                    {
                        cout << str[k];
                    }
                    cout << endl;
                }
            
        }
    }

    return 0;
}
int main()
{
	char a[550];
	int i,j,k,t,m,n;
	i=0;
	while(cin.get(a[i]))
	{
		if(a[i]=='\n')
		{
			t=i-1;
			break;
		}
		else
			i++;
	}
	t=i-1;
	for(j=1;j<(t+1)/2;j++)
	{
		for(i=0;i<t;i++)
		{
			m=0;
		    for(k=0;k<j;k++)
		    {
				if(i+2*j-k-1<=t)
				{
					if(a[i+k]==a[i+2*j-k-1])
					{
						m++;
					}
				}
			}
			if(m==j)
			{
				for(n=i;n<i+2*j;n++)
				{
					cout<<a[n];
				}
				cout<<endl;
			}
		}
	}
	 
	return 0;
}
char a[1000] ;
void huiwen(int) ;

int main()
{
	cin.getline (a , 1000) ;
	huiwen(2) ;
	return 0 ;
}

void huiwen (int x)
{
	if (x < strlen(a))
	{	
		int i , j , k ;
		for (i = 0 ; i < strlen(a) - x + 1 ; i++)
		{
			for (j = 0 ; j <= (x - 1) / 2 ; j++)
				if (a[i + j] != a[i + x - 1 - j]) break ;
			if (j == ( x - 1 ) / 2 + 1)
			{	
				for (k = i ; k <= i + x - 1 ; k++)
					cout << a[k] ;
				cout << endl ;
			}	
		}
		huiwen (x + 1) ;
	}
}
int main()
{
	char a[500];
	int m,n,N,i,j,k,B,x;
	gets(a);
	N=strlen(a);
	for(k=2;k<N;k++){
		for(B=1,j=0;j<N-k+1;j++){
			for(m=j,n=m+k-1;m<n;m++,n--){
				if(a[m]==a[n]) B=1;
				else  {B=0;break;}
			}
		if(B==1) {for(i=j,x=0;x<k;i++,x++) printf("%c",a[i],m,n);printf("\n");}
		}
	}
	return 0;
}
int main()
{
	int i,m=0,x,j,k,p;
	char a[501];
	char b[501];
	gets(a);
	for(p=2;p<=500;p++)
	{
		i=0;
	for(i=0;a[i]!='\0';i++)
	{
		j=0;
		for(k=i;k<=i+p-1;k++)
		{
			b[j]=a[k];
			j++;
		}
		b[j]='\0';
		m=0;
		for(x=0;x<=((p-1)/2);)
		{
			if(b[x]==a[i+p-1-x])
			{
				x++;
			}
			else
			{
				
				m=1;
                break;
			}
		}
		if(m==0)
		{
			puts(b);
		}
	}
	}
	return 0;
}
char s[600];
int main()
{
	int comp(int sta,int lenx);
	int i,j,len,p;
	gets(s);
	len=strlen(s);
	for (i=2; i<=len; i++) 
		for (j=0; j<=len-i; j++)
			if (comp(j,i)==1) {
				for (p=j; p<=j+i-1; p++) printf("%c",s[p]);
				printf("\n");
			}
	return 0;
}
int comp(int sta,int lenx)
{
	int i,j;
	for (i=1; i<=lenx/2; i++) if (s[sta+i-1]!=s[sta+lenx-i]) return (0);
	return (1);
}
int main()
{
	int i,j,k=1,l,m,n;
	char a[501];
	gets(a);
	l=strlen(a);
	for (m=1;m<l;m++)
	{
		for (i=0;i<l;i++)
		{
			j=i+m;
			if (a[i]==a[j])
			{
				for (k=m;k>0;k--)
				{
					if (a[i+k]!=a[j-k])
					{
						k=1;
						break;
					}
				}
				if (k==0)
				{
					n=i;
					for (;n<=j;n++)
						putchar(a[n]);
					printf ("\n");
				}
			}
		}
	}
	return 0;
}
main()
{   int  i,j,k,n,m,l,o;
     char s[501];
     gets(s);
     l=strlen(s);
     for(n=2;n<=l;n++)
    { for(i=0;i<=l-n;i++)
     
     for(m=i,o=i+n-1;s[m]==s[o];m++,o--)
      
 
    if(m>=o)
     
     {for(j=i;j<=i+n-1;j++)
      printf("%c",s[j]);
     
     printf("\n");break;
     }
}
}
int main()
{
	char a[501];
	int len,s=0;
	cin.getline(a,501);
	len = strlen(a);
	for(int i=2;i<len;i++)
		for(int j=0;j<=len-i;j++)
		{	for(int k=0;k<=i/2-1;k++)
			{
				if(a[j+k]==a[j+i-1-k])
					s++;

			}
		if(s==i/2)
			{for(int m=j;m<=j+i-1;m++)
			cout<<a[m];
			cout<<endl;

		}
		s=0;
		}
	return 0;
}
int judge(char ch[500])
{
	int len=strlen(ch);
	for(int i=0;i<=len/2;i++)
	{
		if(ch[i]!=ch[len-1-i])
			return 0;
	}
	return 1;
}
int main()
{
	char a[500]={'\0'},b[500]={'\0'};
	cin>>a;
	int j,k,len,i;

	len=strlen(a);
	//cout<<len<<endl;
	for(i=2;i<=len;i++){
		j=0;
		while(j<=len-i)
		{
			for(k=0;k<i;k++)
			{
				b[k]=a[j+k];
			}
			b[k]='\0';
			if(judge(b))
				cout<<b<<endl;
			j++;
		}
	}
	return 0;
}
int main()
{
	int i, j, k, l, m, flag;
	char a[501];
	for (m = 1; m > 0; m++)
	{
		if (a[m-1]== '\n')
			break;
		a[m] = cin.get();
	}
	for (j = 2; j <= m; j++)
	{
		for (i = 1; i <= m - 1; i++)
		{
			flag = 1;
			for (k = 0; k < j; k++)
			{
				if (a[i + k] != a[i + j - k - 1])
					flag = 0;
			}
			if (flag)
			{
				for (l = 0; l<j; l++)
				{
					if(l == j-1)
						cout << a[i + l]<<endl;
					else
						cout << a[i + l];
				}
			}
		}
	}
	return 0;
}
int main()
{
	int len, i, j, k, q, flag = 0;
	char a[500];
	cin >> a;
	len = strlen(a);
	for (i = 2; i <= len; i++)
	{
		for (j = 0; j <= len - i; j++)
		{
			k = 0;
			while (a[j + k] == a[j + i - 1 - k] && k < i)
			{
				k++;
			}
			if (k == i)
			{
				if (flag == 0)
					flag = 1;
				else
					cout << '\n';
				for (q = 0; q < i; q++)
				{
					cout << a[j + q];
				}
			}
		}
	}
	return 0;
}
int main()
{
    char a[1000],b[1000][1000],c[1000][1000];
    int i,j,k,num=0,clen[1000],clen0[1000],p=0,shorter;
    cin>>a;
    int len=strlen(a);
    for(i=0;i<len;i++)
    {
        for(j=i;j<len;j++)
        {
            p=0;
            for(k=i;k<=j;k++)
            {
                b[num][p]=a[k];
                p++;
            }
            num++;
        }
    }
    int judge=0;
    for(i=0;i<num;i++)
    {
        clen[i]=strlen(b[i]);
        j=0;judge=0;
        while(1)
        {
            if(b[i][j]==b[i][clen[i]-j-1])
            {
                judge=1;
                j++;
                if(j==clen[i]) break;
                continue;
            }
            else
            {
                judge=0;
                break;
            }
        }
        
        if(judge==1&&clen[i]>1) 
        {
            strcpy(c[p],b[i]);
            clen0[p]=clen[i];
            p++;
        }
    }
    shorter=0;
    for(i=0;i<p;i++)
    {
        for(j=0;j<p;j++)
        {
            if(clen0[j]<clen0[shorter])
            {
                shorter=j;
            }
        }
        cout<<c[shorter]<<endl;
        clen0[shorter]=1000;
    }

    return 0;
}