semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
//******************************
//**???????
//**?????  1100017658
//**???2011.11.13
//******************************
void out(int[], char[], int);                   // ?????
int main()                                      // ?????
{
	char a[500];
	int k[500] = {0};                           // ???????????
	cin >> a;
	int t = strlen(a);                          // ?????
	for (int x = 0; x < t; x++)
		if (a[x] - 'a' == a[x + 1] - 'a')
		{
			k[x] = 1;                           // ??
			cout << a[x] << a[x + 1] << endl;   // ???????
		}
    out(k, a, t);                               // ?????
	return 0;
}                                               // ?????

void out(int k[], char a[], int t)              // ???
{
    for (int m = 1; m < t / 2; m++)             // ????
	{
		for (int i = 0; i < t; i++)             // ??
		{
			if (k[i] == 1)                      // ???????
			{
				int flag = 0;                   // ??
				int l = 1;
				for (; l <= m; l++)             // ???????
				{
					if (a[i - l] - 'a' != a[i + l + 1] - 'a') // ??????
						flag = 1;
				}
				if (flag == 0 && l == m + 1)                // ????
				{
					for (int q = i - m; q <= i + m + 1; q++) // ????
						cout << a[q];
					cout << endl;
				}
			}
		}
	}
	return;                                     // ??
}                                               // ?????
//********************************************************
//*  ???:4.cpp                                        *
//*  ??????    1200012948                             *
//*  ????: 2012 11 13                                *
//*  ????:????                                                                                               *
//********************************************************
//??
int main()
{
	char a[500];
	int l, i, j, m = 0, h, e, k, flag = 0;
	cin.getline (a,500);
    l = strlen(a);   //???????
    for (i = 2; i <= l; i++)
    {
    	for(j = 0; j + i <= l; j++)
    	{
    		flag = 0;
    		h = j;
    		e = j + i - 1;
    		while (a[h] == a[e])
    	    {
    			if(flag == 0)
    			{
    			     m = h;    //m????
    			     flag = 1;
    			}
              //????????

    		    h++;
    		    e--;
    		    if (h >= e)
    		    	break;
    	    }
    	    if (h >= e)
    	    {
                 for (k = m; k <= m + i - 1; k++)
    	         {
    	    	      cout << a[k];
    	         }
                 cout << endl;
    	     }
    	}

    }
    return 0;
}
/*
 * huiwenzichuan.cpp
 *
 *  Created on: 2010-11-30
 *      Author:??
 *      ????????
 */
void find(char str[500])//????????????
{
   int i, j, k, t,length;
   length=strlen(str);//length???????
   for(i=2;i<=length;i=i+2)//????????????????????
   {
	   for(j=0;j<length-i+1;j++)//????????????
	   {
		  for(k=j;k<j+i/2;k++)
		  { if(str[k]!=str[2*j+i-1-k]) break;  }//??????????????????????
		  if(k==j+i/2)
		  {
			  for(t=j;t<j+i;t++)
			  {cout<<str[t];}
			  cout<<endl;
		  }//??????????????
	   }

   }
}
int main()
{
	char str[500];//??????
	cin >> str;
	find (str);//??????????
	return 0;
}
int main()
{
    int i, j, k;
    char str[500];
    cin.getline(str, 500);
    int len = strlen(str);
    for (j = 2; j <= len; j++)
    {
         for (i = 0; i <= len - j; i++)
         {
              for (k = 0; k < j / 2; k++)
              {
                   if (str[i+k] != str[i+j-k-1])
                   {
                       break;
                   }
              }
              if (k == j / 2)
              {
                  for (int ii = i; ii < i + j; ii++)
                  {
                       cout << str[ii];
                  }
                  cout << endl;
              }
         }
    }
    return 0;
}
int main()
{
   char a[1000];
   cin.getline(a,1000);
   int len=strlen(a);
   int i,j,k,l;
   for(j=2;j<=len;j++)
   {
       for(i=0;i<=len-j;i++)
       {
           int k;
           for(k=i;k<i+j&&a[k]==a[i+j-(k-i)-1];k++);
           if(k==i+j) {for(int t=i;t<i+j;t++) cout<<a[t];
           cout<<endl;
           }
       }
   }
   return 0;
}
int main()
{
	int len,i,j,k;
	char a[501];
	scanf("%s",&a);
	len=strlen(a);
	for(j=1;j<len;j++)//??????
	{
		for(i=0;i<len-1;i++)//??????
		{
			int e=0;
			if((j+1)%2==0)
			{
				for(k=i;k<=(j+1)/2+i-1;k++)//??????????
				{
					if(a[k]!=a[i+i+j-k])
					{
						e=1;
						break;
					}
				}

			}else
			{
				for(k=i;k<=(j/2-1+i);k++)
				{
					if(a[k]!=a[i+i+j-k])
					{
						e=1;
						break;
					}
				}
			}
			if(e==0)  //????
			{
				for(k=i;k<i+j;k++)
				{
					printf("%c",a[k]);
				}
				printf("%c\n",a[i+j]);
			}
		}
	}
	return 0;
}
//
//  main.cpp
//  ????
//
//  Created by ? ?? on 12-11-12.
//  Copyright (c) 2012? ? ??. All rights reserved.
//


int main()
{
    char a[500];
    cin.getline(a, 500);
    int la, c, d, sum;
    la = strlen(a);
    int i, j, k;
    for (i = 2; i <= la; i = i + 2)
    {
        for (j = 0; j <= la - i; j++)
        {
            d = j;
            c = i + j - 1;
            sum = 0;
            do
            {
                if (a[d] != a[c])
                {
                    sum++;
                }
                d++;
                c--;
            } while (c > d);
            if (sum == 0)
            {
                for (k = j; k <= i + j - 1; k++)
                {
                    cout << a[k];
                }
                cout << endl;
            }
        }
    }
    
    
    return 0;
}
char a[500]={'\0'};
char b[500]={'\0'};
int L=0;
void check(char a[])		//???????????
{
	int la=strlen(a);
	int i=0,j=la-1;
	do
	{
		if(a[i]==a[j])
		{
			i++;
			j--;
		}
		else
		{
			return ;
		}
	}while(i<=j);
	cout<<a<<endl;
}
int main()
{
	cin>>a;
	L=strlen(a);
	int s,i,j;
	for(s=2;s<=L;s++)
	{
		for(i=0;i<=L-s;i++)
		{
			char *p=&a[i];
			for(j=0;j<s;j++)
			{
				b[j]=*p;
				p++;
			}
			check(b);
		}
	}

	return 0;
}
main()
{
    char s[LEN];
    scanf("%s",s);
    int slen=strlen(s);
    int i,j,k=LEN;
    for(i=2;i<=slen;i++)
    {
        for(j=0;(j+i)<=slen;j++)
        {
            for(k=j;k<=(j+i-1);k++)
               if(s[k]!=s[2*j+i-1-k]) break;
            if(k==(j+i))  
               for(k=j;k<=(j+i-1);k++)
               {
                   printf("%c",s[k]);
                   if(k==(j+i-1)) printf("\n");                    
               }                   
            k=LEN;
        }                       
    }
    getchar();
    getchar();
    getchar();
    
      
}
//???2010?11?24?
//???1000010586_???
//???????

int main()
{
	int len , i , j , k , l;
	char word[500];
	cin >> word;
	len = strlen( word );
	for ( i = 1 ; i <= len / 2 ; i ++ )
	{
		for ( j = 0 ; j <= len - i ; j ++ )
		{
			for ( k = 0 ; k <= i - 1 ; k ++ )
			{
				if ( word[j + k] != word[j + 2 * i - 1 - k] )
					break;
			}
			if ( k == i )
			{
				for ( l = 0 ; l <= 2 * i - 1 ; l ++ )
					cout << word[j + l];
				cout << endl;
			}
		}
	}
	return 0;
}
int main()
{
	char origin[501];                        //??????
	int len, i, j, k, lenmax;                //len??????lenmax???????
	int flag;                                //??????????
	cin.getline(origin, 501);                //??????
	lenmax = strlen(origin);                 //????????
	for (len = 2; len <= lenmax; len++)      //????????
	{
		for (i = 0; i <= lenmax - len; i++)  //??????i?????????len???
		{
			flag = 1;                        //?????????
			for (j = 0; j <=  len / 2; j++)
			{
				if (origin[i + j] != origin[i + len - j - 1]) //?????????flag???0?????
				{
					flag = 0;
					break;
				}
			}
			if (flag)          //???????
			{
				for (k = i; k <= i + len - 1; k++)  //????????
					cout << origin[k];
				cout << endl;
			}
		}
	}
	return 0;
}
char a[501];
int len;
int lookfor(int k)
{
	char *p=NULL,*q=NULL;
	int i,p1=1,j;
	for(i=0;i<=len-k;i++)
	{
		p=&a[i];p1=1;
		q=&a[i+k-1];
		while(p<q)
		{
			if(*p!=*q)
			{
				p1=0;break;
			}
			p++;q--;
		}
		if(p1==1)
		{
			for(j=0;j<=k-1;j++)
				cout<<a[j+i];
			cout<<endl;
		}
	}
	return 0;
}
int main()
{
	int i;
	cin>>a;
	len=strlen(a);
	for(i=2;i<=len;i++)
	lookfor(i);
	return 0;
}
void f(int j,int i,char c[]);
void g(char c[],int m,int j);
int main()
{
	char c[501];
	int i=0,j,k,m,n,y=0,l;
	c[0]=getchar();
	while(c[i]!='\n')
	{
		i++;
		c[i]=getchar();
	}
	for(j=2;j<i;j++)
	{
		f(j,i,c);
	}
	
}
void f(int j,int i,char c[])
{
	int m,n;
	for(m=0;m<=i-j;m++)
	{
		g(c,m,j);
	}
}
void g(char c[],int m,int j)
{
	int p,q,i;
	p=m;
	q=m+j-1;
	for(;;p++,q--)
	{
		if(c[p]!=c[q]) break;
		else if((p==q)||(p==q-1))
		{
			for(i=m;i<=m+j-1;i++)
			{
				printf("%c",c[i]);
			}
			printf("\n");
		}
	}
}
int main()
{
	char str[500];
	int i,j,k,l,m;
	int t = 1;
	cin >> str;
	i = strlen (str);
	for (j = 1;j <= i - 1;j++)
	{
		for (k = 0;k <= i - j - 1;k++)
		{
			if (j % 2 != 0)
			{
				for (l = 0;l <= (j - 1) / 2;l++)
				{
					if (str[k + l] != str[k + j - l])
					{
						t = 0;
						break;
					}
				}
			}
			else
			{
				for (l = 0;l <= (j / 2) - 1;l++)
				{
					if (str[k + l] != str[k + j - l])
					{
						t = 0;
						break;
					}
				}
			}
			if (t == 1)
			{
				for (m = k;m <= k + j;m++)
				{
					cout << str[m];
				}
				cout << endl;
			}
			t = 1;
		}
	}
	return 0;
}
int main()
{
	char a[500];
	int k[500] = {0};
	int times = 0;
	cin >> a;
	int t = strlen(a);
	for (int x = 0; x < t; x++)
		if (a[x] - 'a' == a[x + 1] - 'a')
		{
			k[x] = 1;
			cout << a[x] << a[x + 1] << endl;
		}
	for (int m = 1; m < t / 2; m++)
	{
		for (int i = 0; i < t; i++)
		{
			if (k[i] == 1)
			{
				int flag = 0;
				int l = 1;
				for (; l <= m; l++)
				{
					if (a[i - l] - 'a' != a[i + l + 1] - 'a')
						flag = 1;
				}
				if (flag == 0 && l == m + 1)
				{	
					for (int q = i - m; q <= i + m + 1; q++)
						cout << a[q];
					cout << endl;
				}
			}
		}
	}
	return 0;
}
int main()
{
	char str[501];
	int l,length,i,j,k,p,start,end;
	scanf("%s",str);
	length=strlen(str);
	for(i=0;i+1<length;i++)
		if(str[i]==str[i+1])
			printf("%c%c\n",str[i],str[i+1]);//??????2?????
	for(l=3;l<=length;l++)//l??????????
	{
		for(i=0;i+l-1<length;i++)//i????????????
		{
			start=i;end=i+l-1;//????????
			j=i+l-1;
			k=i;
			while(k<=j)
			{
				if(str[k]==str[j])
				{
					k++;
					j--;
				}
				else break;//????????????????
			}
			if(((l%2==0)&&(k-1==j))||((l%2==1)&&(k-1==j+1)))//??k?j??
				for(p=start;p<=end;p++)
					printf("%c",str[p]);
				printf("\n");
		}
	}
	return 0;
}
int main()
{
	char str[530];
	int i,j, lng, len, h, k;
	cin >> str;
	len = strlen(str);
	for (lng = 2; lng <= len; lng++)
		for(h = 0; h < len; h++)
		{
			i = h;
			j = h + lng - 1;
			while (i < j)
			{
				if(str[i] != str[j])
					break;
				i++;
				j--;
			}
			if(i == j || i > j)
			{
				for (k = 0; k < lng - 1; k++)
					cout << str[h + k];
				cout << str[h + k] << endl;
			}
		}
	return 0;
}
int main()
{
	int i, j, k;
	int nhuiwen, len;
	char str[500];
	
	cin >> str;
    len = strlen(str);
	for (nhuiwen = 2; nhuiwen <= len; nhuiwen ++)
	{
		char buf1[500] = {'\0'}, buf2[500] = {'\0'};
		for (i = 0; i + nhuiwen - 1 < len; i ++)
		{
			int n = nhuiwen, m = 0;
			for (j = i; j <= i + nhuiwen - 1; j ++)
			{
				buf1[-- n] = str[j];
				buf2[m ++] = str[j];
			}
			//cout << "n = " << n << endl << "m = " << m << endl;
			buf1[nhuiwen] = '\0'; buf2[nhuiwen] = '\0';
			if (strcmp(buf1, buf2) == 0)
			{
				for (k = 0; k < nhuiwen; k ++)
					cout << buf1[k];
				cout << endl;
			}
		}
	}
	return 0;
}
/* ???? ????.cpp
 * ??? 1200012826 ??
 * ??? 2012?11?18?
 */
int main()
{
	char a[500], b[500];
	int i, j, k, m, p, l;
	cin >> a;
	l=strlen(a);
	for(i=1; i < l; i++)
		for(j=0; j < l-1; j++)
		{
			p=1;
			m=i;
			for(k=0; k <= i; k++)
			{
				b[k]=a[j+k];
			}
			for(k=0; k <= m; k++)
			{
				if(b[k] == b[m-k])
				{
					continue;
				}
				else
				{
					p=0;
					break;
				}
			}
			if(p)
			{
				for(k=0; k <= m; k++)
				{
					cout << b[k];
				}
				cout << endl;
			}
		}
	return 0;
}
void f(char a[500])
{
	int i,j,k,m,n,flag = 1,c;
	cin >> a;
	int b = strlen(a);
	for (j = 2;j <= b ;j++)
	 for (i = 0;i + j <= b;i++)
		{c = 1;
		for (m = i,n = i + j - 1;m < n;m++,n--)
		{
			if (a[m] != a[n])
			{
				c = 0;
				break;
			}
                  }
		if (c)
		{
			if (flag)
			{
				flag = 0;
				for (k = i;k < i + j;k++)
					cout << a[k];
			}
			else
			{
				cout <<endl;
				for (k = i;k < i + j;k++)
					cout <<  a[k];
			}
		}
		}
}
	int main ()
	{
		char a[500];
		f(a);
		return 0;
	}
int huiwen(char a[],int m,int n)
{
	int i;
	while(m<n)
	{
		if(a[m]!=a[n]) {return 0;break;}
		else {m++;n--;}
	}
	if(m>=n) return 1;
}
void print(char a[],int m,int n)
{
	int i;
	for(i=m;i<=n;i++)
		printf("%c",a[i]);
	printf("\n");
}
int main ()
{
	char a[500];
	int i,j,k,l;
	gets(a);
	l=strlen(a);
	for(i=2;i<=l;i++)
	{
		for(j=0;j<=l-i;j++)
		{
			if(huiwen(a,j,j+i-1)==1)
				print(a,j,j+i-1);
		}
	}
}
int main()
{
	char a[600];
	cin>>a;
	int l;
	l=strlen(a);
	int i,j,k,m;
	for(i=1;i<=l/2;i++)
		for(j=i;j<=l-i;j++)
		{
			m=0;
			for(k=i;k>0;k--)
			{
				if(a[j+k-1]==a[j-k])
					m=m+1;
			}
			if(m==i)
			{
				for(k=j-i;k<=j+i-1;k++)
					cout<<a[k];
				cout<<endl;
			}
		}
	return 0;
}
char a[501];
int len, i = 0, t = 2, p = 0, j = 0, n = 1;

void back(char m[])
{
	len = strlen(m);
	do
	{
		for (j = 0;j <= len - t;j++)
		{
			for (i = j;i < j + t;i++)
			{
				if (m[i] == m[j+t-n])
				{
					if (i + 1 >= j + t -n)
					{
						for (i = j;i < j + t;i++)
							cout << m[i];
						cout << '\n';
						break;
					}
				}
				else
					break;
				n++;
			}
			n = 1;
		}
		t++;
	}while (t <= len);
}
int main()
{
	cin >> a;
	back(a);
	return 0;
}
int main()
{
	char str[500];
	int a,t;
	int i=0,j=0,k=2,flag=1;
    scanf("%s",str);
	a=strlen(str);
	for(k=2;k<=a;k++)
	{
		for(i=0;i<a;i++)
		{   flag=1;
		    j=i;
			for(j=i;j<=i+k-1;j++)
			{
				if(str[j]!=str[2*i-j+k-1])
					flag=0;

			}
			if(flag==1)
			{ t=i;
			   for(t=i;t<=i+k-1;t++)
			   {	printf("%c",str[t]);
			   }
			   printf("\n");

			}
		}
	}
	return 0;
}
char str[500];

int huiwen( int i , int length )
		{   
		    int j, p = i + length -1;
			for (j = i; j <= (2*i + length)/2  ; j++ )
			{
				if (str[j] != str[p])
					return 0;
				    p--;
			}
			
			return 1;
		}

int main()
	{   
		int length, i = 0, j;
		cin >> str;
		for (length = 2; str[length - 1]!='\0';length++)
			for (i = 0;str[i+length-1] != '\0'; i++)
			{
				if (huiwen(i,length))
					for (j = i; j < i+length; j++)
					{
						if( j == i + length -1)
							cout << str[j] << endl;
						else
							cout << str[j];
					}
			}
	return 0;
	}
int main()
{
  int i,j,k,flag,v=0,x,y,xci;
  char str[500],hw[100][200];
  scanf("%s",str);
  int l=strlen(str);
  for(i=2;i<=l;i++)
  { 
    xci=i/2;
    for(j=0;j+i<=l+1;j++)
    {
      flag=1;
      for(k=0;k<xci;k++)
      {
        if(str[j+k]!=str[j+i-1-k]) flag=0;
      }
      if(flag==1) 
      {
        for(x=0;x<i;x++)
        hw[v][x]=str[j+x];
        hw[v][x]='\0';
        v++;
      }
    }
  }
  for(i=0;i<v;i++)//
  printf("%s\n",hw[i]);

  
}
int main()
{
char a[500],*p,*p1;
int i,j,n;
scanf("%s",a);
n=strlen(a);

for(i=2;i<=n;i++)
    {
      for(p=a;p<=a+n-i;p++)
         {
          for(p1=p;p1<p+i;p1++)
              {
               if(*p1!=*(p+(p+i-p1-1)))
                break;
               }
          if(p1==p+i)
              {for(j=0;j<i;j++) printf("%c",*(p+j));
                printf("\n");}
           }
       }
return 0;
}
//****************************************
//*???????                       
//*?????? 1100012789      
//*???2011.11.11                       
//****************************************


// ???? a?????? totLen??? cheLen????????????
void check(char a[], int totLen, int cheLen);
int main()
{
	char a[500] = {'\0'};
	int totLen;
	cin >> a;
	totLen = strlen(a);
	check(a, totLen, 2); // ???????
	return 0;
}

void check(char a[], int totLen, int cheLen)
{
	int i, flag, j; // flag??????????
	if (cheLen > totLen) // ??????
		return;
	for (i = 0; i <= totLen - cheLen; i++)
	{
		flag = 1;
		for (j = 1; j <= cheLen / 2; j++ ) // ???????
			if (a[i + j - 1] != a[i + cheLen - j]) // ????????
			{
				flag = 0; break;
			}
		if (flag == 1)
		{
			for (j = 0; j < cheLen; j++) // ????
			{
				cout << a[j + i];
			}
			cout << endl;
		}
	}
	check(a, totLen, cheLen + 1); // ????
}
int main()
{
	char a[501],b[501];
	int i,j,k,n,q,p,s;
	scanf("%s",a);
	n=strlen(a);
	for(i=2;i<=n;i++)
	{
		for(j=0;j<n-i+1;j++)
		{
			for(k=0;k<i;k++)
			{
				b[k]=a[j+k];
			}
			for(q=0,s=0;q<=(i-2)/2;q++)
			{
				if(b[q]!=b[i-1-q])s=1;
			}
			b[i]='\0';
			if(s==0)printf("%s\n",b);

		}
	}
	return 0;
}
void ggg( int i,  char b[500])
{
	int len, j, k, flag;
	len = strlen(b);
	for( j = 0;j <= (len - i);j++ )
	{
		for( k = 0;k < i/2;k++ )
		{
			if( b[j + k] == b[j + i - k - 1] )
			{
				flag = 1;
			}
			else	
			{
				flag = 0;
				break;
			}
		}
		if( flag == 1 )	
		{
			for( k = j;k < j+i; k++ )
			{
				cout << b[k];
			}
			cout << '\n';
		}
	}
}
int main ()
{
	int i, len;
	char a[500];
	cin.getline(a, 500);
	len=strlen(a);
	for( i = 2;i <= len;i = i + 2)
	{
		ggg(i,a);
	}
return 0;
}
/*
 * 12-6huiwen.cpp
 *
 *  Created on: 2011-12-30
 *      Author: Dai Guangda
 */
int main()
{
	char a[501];
	int start,end,zlen,i,j,len;
	cin >>a;
	len = strlen(a);
	for (zlen=2; zlen<=len; zlen++)
	{
		for (start=0; start<=len-zlen; start++)
		{
			end = start+zlen-1;
			i=start; j=end;
			while (a[i]==a[j] && i<j)
			{
				i++;
				j--;
			}
			if (i>=j)
			{
				for(i=start; i<=end; i++)
					cout <<a[i];
				cout <<endl;
			}
		}
	}
	return 0;
}
int main()
{
	char str[502],str1[502];
	int i,j,k,l,s,r,temp;
	gets(str);
	s=strlen(str);	
		for(k=1;k<=s-1;k++)
		{
			for(i=0;i<=s-k-1;i++)
			{   
			    if(i+k>s-1)
			    break;
				r=1;
		     for(j=i;j<=i+k;j++)
		    {
			str1[i+k-(j-i)]=str[j];
		    }
			for(j=i;j<=i+k;j++)
		    {
			if (str1[j]!=str[j])
			{
			r=0;
			break;
		    }
		    }
				if(r==1)
			{
			for(j=i;j<=i+k;j++)
			printf("%c",str[j]);
		    printf("\n");
		    }
		    
		    
		    
		    }
	   }
			
		
		
	

	
}
int main()
{
	char str[501];
	int i,j,k,length,n,s;
	gets(str);
    length=strlen(str);
	for(i=2;i<=length;i++)
		for(j=0;j<length;j++)
		{
			k=0;
	  	    for(n=0;n<i;n++)
			{
				if(str[j+n]==str[j+i-n-1])
			     	k++;
			    if(k==i)
				{	for(s=j;s<=j+n;s++)
						printf("%c",str[s]);
						printf("\n");
				}
			}
		}
	return 0;
}
void sssss(char *);
int main(void)
{
	int d,t,n,i,j,k;
	char s[500],sub[500],rsub[500];
	int plen;
	gets(s);
	d=strlen(s);
	for(plen=2;plen<=d;plen++)
		{
			for(j=0;j<=d-plen;j++)
			{
				
				strncpy(sub,s+j,plen);
				sub[plen]='\0';
				strcpy(rsub,sub);
				sssss(rsub);
				rsub[plen]='\0';
				if(strcmp(sub,rsub)==0)
					printf("%s\n",sub);
			}
			
		}
				


return 0;}
void sssss(char *s)
{
	int d,i;
	char tmp;
	d=strlen(s);
	for(i=0;i<(d+1)/2;i++)
	{
		tmp=s[i];
		s[i]=s[d-1-i];
		s[d-1-i]=tmp;
	}
}
//???????
//??? 1200017623
//???????



int main(){
	int judge(char*,int);
	char str[500],temp[500] = {'\0'},*p;
	int len,num;
	cin>>str;
	len = strlen(str);
	for(num = 2;num <= len;num++){
		for(p = str;p < str + len +1 - num;p++){
			strncpy(temp,p,num);
			if(judge(temp,num))cout<<temp<<endl;
		}
	}
	return 0;
}

int judge(char *ch,int n){       //???????
	char *p,*q;
	for(p = ch,q = ch + n - 1;p <= q;p++,q--){
		if(*p != *q)return 0;
	}return 1;
}
int main()
{
	char a[501]; int  i,j,k,t,m,n;
	cin>>a;
	t=strlen(a);
	for (k=1;k<=t-1;k++)
	{
		for (i=0;i<t-1;i++)
			if (i+k<t&&a[i]==a[i+k])
			{
				for (m=i,n=i+k;m<n;m++,n--)
					if (a[m]!=a[n]) break;
				if (m>=n)
				{for (j=i;j<=i+k;j++)
					cout<<a[j];
				cout<<endl;
				}
			}
	}
	return 0;
}
void main()
{
	char s[500];
	int l,i,k,t,g=0;
	scanf("%s",s);
	l=strlen(s);
	for(k=1;k<l;k++)/*k???????*/
	{
		for(i=0;i<l-k;i++)/*i???????*/
		{
			for(t=1;t<=k;t++)
			{
				g=1;
				if(s[i+t-1]!=s[i+2*k-t])/*????*/
				{
					g=0;
					break;
				}
			}
			if(g==1)
			{
				for(t=i;t<2*k+i;t++)
				printf("%c",s[t]);
				printf("\n");
			}
		}
	}
}
int main()
{
int i,n,m,x,y,z;
char a[500];
gets(a);
for(i=0;a[i]!='\0';i++);
n=i;
for(x=2;x<=n;x++)
  for(i=0;i<n-x+1;i++)
    {for(y=0,m=1;y<x;y++)
        if(a[i+y]!=a[i+x-y-1])
        {m=0;break;}
     if(m==1)
         {for(z=i;z<i+x;z++)
            putchar(a[z]);
          printf("\n");}
     }
return 0;
}
char s[1000],s1[100][100];
int flag=0;
void f(char x,char y);
int main()
{
	int i,len[100],k,j,temp;
	char s2[100];
	gets(s);
	for(i=1;s[i]!='\0';i++)
	{
		if(s[i-1]==s[i])
		{
			s1[flag][0]=s[i-1];
			s1[flag][1]=s[i];
			flag++;
		    f(i-1,i);
		}
	}
	k=flag;
	for(i=0;i<k;i++)
	len[i]=strlen(s1[i]);
	for(i=0;i<k;i++)
	{
		for(j=1;j<k-i;j++)
		{
			if(len[j-1]>len[j])
			{
				temp=len[j-1];
				len[j-1]=len[j];
				len[j]=temp;
				strcpy(s2,s1[j-1]);
				strcpy(s1[j-1],s1[j]);
				strcpy(s1[j],s2);
			}
		}
	}
	for(i=0;i<k;i++)
    printf("%s\n",s1[i]);

}

void f(char x,char y)
{
	char *p2,*p;
	int i;
	if(x>=1&&s[y+1]!='\0')
	{
		if(s[x-1]==s[y+1])
		{
			p2=&s[y+1];
			for(p=&s[x-1],i=0;p<=p2;p++,i++)
			s1[flag][i]=*p;
			flag++;
			f(x-1,y+1);
		}
	}
}
int main()
{
	char str[501];
	cin>>str;
	for(int i=2;i<=strlen(str);i++)
	{
		if(i%2==0)
		{
		   for(int j=0;j<=strlen(str)-i;j++)
		   {
			   int k,l=1;
			   for(k=j;k<j+i/2;k++)
			   {
				   if(str[k]==str[i+j-l])
				   {
					   l++;
					   continue;
				   }
				   else
					   break;
			   }
			   if(k>=j+i/2)
			   {
				   for(int m=j;m<j+i;m++)
					   cout<<str[m];
			   cout<<endl;
			   }
		   }
		}

		if(i%2==1)
		{
		   for(int j=0;j<=strlen(str)-i;j++)
		   {
			   int k,l=1;
			   for(k=j;k<j+i/2;k++)
			   {
				   if(str[k]==str[i+j-l])
				   {
					   l++;
					   continue;
				   }
				   else
					   break;
			   }
			   if(k>=j+i/2)
			   {
				   for(int m=j;m<j+i;m++)
					   cout<<str[m];
			   cout<<endl;
			   }
		   }
		   
		}
	}
	return 0;
}
/*
 * huiwen string.cpp
 *??:???????????
 *  Created on: 2012-12-19
 *      Author: ???
 */



int main()
{
	char word[501];                //?????????
	cin.getline(word,sizeof(word));//?????
	int slen=strlen(word);         //???????
	int len=2,pos=0,num1,num2,i;   //??????,??????,??,????????????,
	char *p=NULL,*q=NULL;          //???????p,q
	for(len=2;len<=slen;len++)     //??????
	{
		if(num1==0&&num2==0)       //??????????(????)?????,????
			break;
		if(len%2==0)               //??????????
			num2=0;
		else                       //?????
			num1=0;
		for(pos=0;pos<=slen-len;pos++)//????
		{
			p=word+pos;
			q=word+pos+len-1;
			do
			{
				if(*q!=*p)            //?????
					break;
				else
				  {
					p++;
					q--;
				  }
			}while(q>p);
			if(q<=p)
			{
				for(i=0;i<len;i++)
				cout<<word[pos+i];   //?????
				cout<<endl;
				if(len%2==0)         //??
					num2++;
				else
					num1++;
			}
		}
	}
	return 0;
}
/**
 * ???8.cpp
 * ??????
 * ???10.12.31
 * ?????????
 */
void find(int,int,char *);
int main()
{
	char a[500];
	cin>>a;
	int la;
	la=strlen(a);
	find(1,la,a);                 //???????
	return 0;
}
void find(int n,int la,char a[])
{
	if(2*n<=la)
	{
	    int i,j,c,t;
      	for(i=0;i<la;i++)
		{
			t=0;                //t??????????
			c=0;                 //c??????
			 for(j=0;j<n;j++)
			 {
				 if(a[i-j]==a[i+1+j])      //???????
				 {
					 c++;
					 if(c==n) 
					 {
						 t=1;
						 break;
					 }
				 }
				 else
					 break;
			 }
			 if(t==1)
			 {
				 for(j=i-n+1;j<i+n+1;j++)    //?????????
					 cout<<a[j];
				 cout<<endl;
			 }
		}
		find(n+1,la,a);            //??
	}
}
main()
{  char s[1000];
   int m,i,j,k,len,x,y,n,h;
   gets(s);
   len=strlen(s);
   for(n=2;n<=len;n++)
  {
   for(i=0;i<=len-n;i++)
  
   for(k=i,j=i+n-1;s[k]==s[j];k++,j--)
   if(k>=j)
  {
   for(h=i;h<i+n;h++)
   printf("%c",s[h]);
   printf("\n");break;}

   
   
}

}
int main()
{
	static char str[501];
	int len,i,j,p,l;
	gets(str);
	for(len=0;str[len]!='\0';len++);
	for(l=2;l<=len;l++)
	{
		for(i=0;i<=len-l;i++)
		{
			for(j=0;j<l/2;j++)
			{
				if(str[i+j]!=str[i+l-1-j])
				{
					goto here;
				}
			}
				for(p=i;p<i+l;p++)
					printf("%c",str[p]);
				printf("\n");
				here: continue;
		}
	}
	
	return 0;
}