#include <iostream.h>
#include <fstream.h>

double fact(int num)
{
	double result=int(num);
	if(num>2)
	{
	for(int i=num-1;i>1;i--)
	{
		result=result*i;
	}
	}

	return result;
}

main()
{
	char string[100]="12345";
	char temp;
	char name[100];
	int direction=0;
		
	int i=0, j=0, length=0, a=0, b=0;
//	cout<<"Please enter a string of text >";
//	cin.getline(string,100);
	
	while(string[length]!=0){length++;}
	
	for(int c=0;c<length;c++)
		name[c]=string[c];
	
	name[length]='.';
	name[length+1]='t';
	name[length+2]='x';
	name[length+3]='t';
	name[length+4]='\0';

	ofstream fout(name, ios::out|ios::binary);

	fout<<"1. "<<string<<endl;
	cout<<"1. "<<string<<endl;
	
	for(i=0;i<fact(length)/length;i++)
	{
		for(j=0;j<length-1;j++)
		{
			//cout<<string<<", ";
			temp=string[length-1];
			for(a=length-1;a>0;a--)
				string[a]=string[a-1];
			string[0]=temp;
			if((j+1)+(i*length)+1<fact(length)+1)
			{
				cout<<(j+1)+(i*length)+1<<". "<<string<<endl;
				fout<<(j+1)+(i*length)+1<<". "<<string<<endl;
			}
		}
		if(b<3)
		{
			temp=string[length-1];
			string[length-1]=string[length-2];
			string[length-2]=temp;
			b++;
			if((j+1)+(i*length)+1<fact(length)+1)
			{
				cout<<(j+1)+(i*length)+1<<". "<<string<<endl;
				fout<<(j+1)+(i*length)+1<<". "<<string<<endl;
			}
		}
		else
		{
		temp=string[1];
		string[1]=string[0];
		string[0]=temp;
		if((j+1)+(i*length)+1<fact(length)+1)
		{
			cout<<(j+1)+(i*length)+1<<". "<<string<<endl;
			fout<<(j+1)+(i*length)+1<<". "<<string<<endl;
		}
		if(b<4)
			b++;
		else
			b=0;
		}
		
	}
	
	
	
	cout<<endl;
	fout.close();


return 0;
}
