#define BUG 1
#define god 0

#include<conio.h>
#include<windows.h>
#include<bits/stdc++.h>
#define cls system("cls")
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;

namespace ginit {
	void init() {
		HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);//Òþ²Ø¹â±ê
		DWORD mode;
		GetConsoleMode(hStdin,&mode);
		mode&=~ENABLE_QUICK_EDIT_MODE;//ÒÆ³ý¿ìËٱ༭ģʽ
		mode&=~ENABLE_INSERT_MODE;
		mode&=~ENABLE_MOUSE_INPUT;
		SetConsoleMode(hStdin,mode);
		CONSOLE_CURSOR_INFO cur= {1,0};
		SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cur);
	}
	void gotoxy(int x,int y) { //ÒÆ¶¯¹â±ê
		COORD pos= {short(x),short(y)};
		HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
		SetConsoleCursorPosition(hOut,pos);
		return;
	}
	void color(int a) {
		/*ÁÁ°×*/if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
		/*À¶É«*/if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
		/*ÂÌÉ«*/if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
		/*×ÏÉ«*/if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
		/*ºìÉ«*/if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
		/*»ÆÉ«*/if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
		/*ÉîÀ¶*/if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
		/*ÍÁ»Æ*/if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
		/*»Ò°×*/if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
	}
	void print(string s,int c,int t,bool hh,bool rf) {
		color(c);
		int l=s.size();
		for(int i=0; i<l; i++) printf("%c",s[i]),Sleep(t); //Í£¶Ù
		color(0);
		if(rf) {
			color(8);
			printf("(°´Enter¼ÌÐø)");
			while(1)if(kd(VK_RETURN)) break;
			color(0);
		}
		color(0);
		if(hh)puts("");
	}
}
using namespace ginit;

//1.ÊÖîí 2.ÑÌ 3.Æ¡¾Æ 4.ÊÖ¾â 5.·Å´ó¾µ 6.ÉöÉÏÏÙËØ 7.¹ýÆÚÒ©Æ· 8.Äæ×ªÆ÷
int pd,bd,kd,sd,ps,bs,sk,js,ti=30;//p1£¬p2ËÀÍö´ÎÊý   ¿Õµ¯,ʵµ¯ÊýÁ¿ ti=Êä³ö¼ä¸ôʱ¼ä
int h[50][20],zzb,FF;
bool nz;
queue<int> q;
const int HH=8;//µÀ¾ßÊýÁ¿
string n[20]= {"","ÊÖîí","ÑÌ","Æ¡¾Æ","ÊÖ¾â","·Å´ó¾µ","ÉöÉÏÏÙËØ","¹ýÆÚÒ©Æ·","Äæ×ªÆ÷"};
char p1[100],p2[100];

void use(int,bool);
void g_init();
void get_d(int,int);
void get_j(int);
void in_game();
void game_begin();
void pvp_start();
void pva_start();
void pvzzb_start();

void use(int A,bool F,int w) {
	cls;
	if(A==1&&!sk) {
		sk=1,h[w][F]=0;
		print("ßÇ,ÊÖîíîíסÁ˶Է½µÄÊÖ",0,ti,0,1);
	}
	if(A==2) {
		if(!F&&((bd+pd==1&&ps==3)||(bd+pd==2&&ps==4)||(bd+pd==2&&ps==4)||(bd+pd==3&&ps==5)||(bd+pd==4&&ps==6))) goto No;
		if(F&&((bd+pd==1&&bs==3)||(bd+pd==2&&bs==4)||(bd+pd==2&&bs==4)||(bd+pd==3&&bs==5)||(bd+pd==4&&bs==6))) goto No;
		!F?ps++:bs++;
		h[w][F]=0;
		if(bd+pd==1) bs=min(bs,3),ps=min(ps,3);
		if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
		if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
		if(bd+pd==3) bs=min(bs,5),ps=min(ps,5);
		if(bd+pd==4) bs=min(bs,6),ps=min(ps,6);
		print("ÄãÎüÁËÑÌ£¬ÑªÁ¿+1",0,ti,0,1);
		goto out;
No: {
			print("µ±Ç°ÑªÁ¿²»ÐèÒªÎüÑÌ",0,ti,0,1);
			h[w][F]=A;
			goto out;
		}
	}
	if(A==3) {
		h[w][F]=0;
		print("ÄãºÈÁËÆ¡¾Æ£¬Í˳öÁËÒ»¿Å",0,ti,0,0);
		int D=q.front();
		q.pop();
		if(D==2&&sd) print("ʵµ¯",0,ti,0,1),sd--;
		else if(D==1&&kd) print("¿Õµ¯",0,ti,0,1),kd--;
		else cls,printf("ÓÎÏ·bug,ÇëµÈºò1s"),Sleep(1000),h[w][F]=3;
	}
	if(A==4) {
		h[w][F]=0,js=1;
		print("Сµ¶¸îµôÁËÊ־⣬ÏÂÒ»¿Åʵµ¯É˺¦+1",0,ti,0,1);
	}
	if(A==5) {
		h[w][F]=0;
		print("·Å´ó¾µËéÁË£¬Äã¿´¼ûÏÂÒ»¿Å×Óµ¯ÊÇ",0,ti,0,0);
		int D=q.front();
		if(D==2&&sd) print("ʵµ¯",0,ti,0,1);
		else if(D==1&&kd) print("¿Õµ¯",0,ti,0,1);
		else cls,printf("ÓÎÏ·bug,ÇëµÈºò1s"),Sleep(1000),h[w][F]=5;
	}
	if(A==6) {
		h[w][F]=0;
		print("ÉöÉÏÏÙËØÆðЧ£¬Äã¾õµÃÄãÐÄÌø¼ÓËÙÁË",5,ti,0,1);
		cls;
		print("ÇëÑ¡Ôñ¶Ô·½µÄÒ»¼þµÀ¾ß",0,0,1,0);
		puts("");
		for(int i=1; i<=((bd+pd==4)?8:4); i++)
			if(h[i][F==0?1:0]) color(5),printf("%d:%s ",i,n[h[i][F==0?1:0]].c_str()),color(0);
			else printf("%d:¿Õ ",i);
		int V=0;
		while(1) {
			if(kd('1')||kd(VK_NUMPAD1)) {
				V=1;
				break;
			}
			if(kd('2')||kd(VK_NUMPAD2)) {
				V=2;
				break;
			}
			if(kd('3')||kd(VK_NUMPAD3)) {
				V=3;
				break;
			}
			if(kd('4')||kd(VK_NUMPAD4)) {
				V=4;
				break;
			}
			if(kd('5')||kd(VK_NUMPAD5)) {
				V=5;
				break;
			}
			if(kd('6')||kd(VK_NUMPAD6)) {
				V=6;
				break;
			}
			if(kd('7')||kd(VK_NUMPAD7)) {
				V=7;
				break;
			}
			if(kd('8')||kd(VK_NUMPAD8)) {
				V=8;
				break;
			}
		}
		h[w][F]=h[V][!F];
		h[V][!F]=0;
		print("\nÄãµÃµ½ÁË",5,ti,0,0);
		color(5);
		printf("%s",n[h[w][F]].c_str());
		color(0);
		print("",0,0,0,1);
	}
	if(A==7) {
		h[w][F]=0;
		print("ÄãÒ»ÑöÍ·£¬ÍÌÍêÁËÒ»Õûƿҩ",5,ti,1,1);
		int R=rand()%5;
		if(R==0||R==1) {
			print("ÉË¿ÚÖÎÓúÁË£¬¼ÓÁËÁ½µãѪ",0,ti,0,1);
			!F?ps+=2:bs+=2;
			h[w][F]=0;
			if(bd+pd==1) bs=min(bs,3),ps=min(ps,3);
			if(bd+pd==2) bs=min(bs,4),ps=min(ps,4);
			if(bd+pd==3) bs=min(bs,5),ps=min(ps,5);
			if(bd+pd==4) bs=min(bs,6),ps=min(ps,6);
		} else {
			print("µ«£¬É˿ڷ´¶ø¸ü¶ñÁÓÁË£¬¿Û1Ѫ",0,ti,0,1);
			!F?ps--:bs--;
		}
	}
	if(A==8) {
		h[w][F]=0;
		print("Äæ×ªÆ÷ÉúЧ£¬ÏÂÒ»¿Å×Óµ¯½«±»·´×ª",0,ti,0,1);
		nz=1;
	}
out:
	cls;
}

void g_init() {
	for(int i=1; i<=8; i++) h[i][0]=h[i][1]=0;
	bd=pd=0;
	kd=sd=0;
	bs=ps=3;
}

void get_d(int A,int B) {
	sd=rand()%A;
	while(sd<B)sd=rand()%A;
	kd=A-sd;
}

void get_j(int o) {
	for(int i=1; i<=o; i++) {
		int j;
		for(j=1; j<=((bd+pd==4)?9:5); j++)if(h[j][0]==0)break;
		if((bd+pd!=4&&j!=5)||(bd+pd==4&&j!=9))h[j][0]=rand()%HH+1;
	}
	for(int i=1; i<=o; i++) {
		int j;
		for(j=1; j<=((bd+pd==4)?9:5); j++)if(h[j][1]==0)break;
		if((bd+pd!=4&&j!=5)||(bd+pd==4&&j!=9))h[j][1]=rand()%HH+1;
	}
	if(god==1) {

	}
}

void bug(bool f) {
	if(!BUG) return;
	cls;
	cout<<sd<<" "<<kd<<" "<<f<<" "<<q.size()<<" "<<q.empty();
	Sleep(1000);
	print("",0,0,0,1);
	cls;
}

void findbug() {
	if(!BUG) return;
	cls;
	int k=q.size();
	for(int i=0; i<k; i++) {
		cout<<q.front()<<" ";
		q.push(q.front());
		q.pop();
	}
	cout<<"\n"<<sd<<" "<<kd<<"\n";
	Sleep(1000);
	print("",0,0,0,1);
	cls;
}

void in_game() {
	int T=ti;
	print("ÊÇ·ñÑ¡Ôñ¼²ËÙģʽ?(Y:N)",0,ti,1,0);
	while(1) {
		if(kd('Y')) {
			T=0;
			break;
		}
		if(kd('N')) break;
	}
	if(T!=0) {
		print("ÄãÊÇÒ»ÃûOIer",0,T,1,T==0?0:1);
		print("ÄÇÒ»Ì죬Äã²Î¼ÓÁË€€¡êµÄ±ÈÈü£¬±»Æ­µÃÇã¼Òµ´²ú",0,T,1,T==0?0:1);
		print("ΪÁË´Õ¹»ÏÂÒ»³¡±ÈÈüµÄÇ®£¬Äã±»ÆÈÕÒµ½¶ñħ£¬ÒÔÐÔÃüΪ¶Ä×¢£¬À´»ñµÃÄãÏëÒªµÄÇ®...",0,T,1,T==0?0:1);
	}
	cls;
	print("ÓÎÏ·×÷Õß:L('¦Ø')©¼ÔàÔà°ü©¸('¦Ø')?(Âå¹ÈÃûz_z_b_)",5,0,1,0);
	print("Íæ·¨ËµÃ÷",5,T,1,T==0?0:1);
	print("1.¿ª¾Öʱ¸æËßÄãʵµ¯ÊýÁ¿ºÍ¿Õµ¯ÊýÁ¿£¬Ã¿´ÎÄã¿ÉÒÔÑ¡Ôñ´òË­",0,T,1,T==0?0:1);
	print("2.´ò×Ô¼º:ÏÂÒ»»ØºÏÈÔÊÇÄã²Ù×÷¡£´ò¶Ô·½·´Ö®¡£",0,T,1,T==0?0:1);
	print("3.ÿÈËÓÐÒ»¶¨ÑªÁ¿£¨Ã¿¾Ö²»Ò»Ñù£©£¬±»Êµµ¯»÷ÖÐÔòÒª¿ÛѪ£¬ÑªÎª0ʱ½øÈëÏÂÒ»¾ÖÇÒ¶Ô·½»ý·Ö+1",0,T,1,T==0?0:1);
	print("4.×ܹ²Èý¾Ö£¬»ý·Ö¶àÕßʤ",0,T,1,1);
	cls;
	print("ÓÎÏ·×÷Õß:L('¦Ø')©¼ÔàÔà°ü©¸('¦Ø')?(Âå¹ÈÃûz_z_b_)",5,0,1,0);
	Sleep(300);
	print("µÀ¾ß˵Ã÷",5,T,1,0);
	print("1.ÊÖîí:ʹÓúóÄܶ๥»÷Ò»´Î¶Ô·½",0,T,1,0);
	print("2.ÑÌ:ʹÓúó¼ÓÒ»µÎѪ£¬µ«²»Äܳ¬¹ý±¾¾ÖÉÏÏÞ",0,T,1,0);
	print("3.Æ¡¾Æ:Í˳öÏ¿Å×Óµ¯",0,T,1,0);
	print("4.·Å´ó¾µ:¸æËßÄãÏ¿Å×Óµ¯ÊÇʵµ¯»¹Êǿյ¯",0,T,1,0);
	print("5.ÊÖ¾â:Èç¹ûÏ¿Å×Óµ¯ÊÇʵµ¯£¬ÄÇôÉ˺¦+1£¬·´Ö®ÎÞЧ",0,T,1,0);
	print("6.ÉöÉÏÏÙËØ:͵×ß¶Ô·½µÄÒ»¸öµÀ¾ß",0,T,1,0);
	print("7.¹ýÆÚÒ©Æ·:40%¸ÅÂʼÓÁ½µÎѪ£¬60%¸ÅÂÊ¿Û1Ѫ",0,T,1,0);
	print("8.Äæ×ªÆ÷:·´×ªÏ¿Å×Óµ¯",0,T,1,1);
	cls;
	print("ÓÎÏ·×÷Õß:L('¦Ø')©¼ÔàÔà°ü©¸('¦Ø')?(Âå¹ÈÃûz_z_b_)",5,0,1,0);
	Sleep(300);
	print("Íæ·¨:",5,T,1,0);
	print("AÑ¡Ôñ´ò×Ô¼º£¬DÑ¡Ôñ´ò¶Ô·½",0,T,1,0);
	print("ÊäÈëÊý×Ö i ±íʾʹÓõÚi¸öλÖÃÉϵĵÀ¾ß",0,T,1,1);
	return;
}

void pvp_start() {
	fflush(stdin);
	bool f=0,cz=1;//czÅжÏÊÇ·ñ²Ù×÷£¬²Ù×÷Á˾ÍÒª¶îÍâclsÀ´±£Õϲ»ÉÁÆÁ¡£
	print("Çë¸øP1È¡¸öÃû×Ö:",0,ti,0,0),scanf("%s",p1),cls;
	print("Çë¸øP2È¡¸öÃû×Ö:",0,ti,0,0),scanf("%s",p2),cls;
	nz=0;
	if(god) pd=bd=2;
	while(1) {
		Sleep(50);
		if(cz) cz=0,cls;
		gotoxy(0,0);
		printf("µ±Ç°±È·Ö(Èý¾ÖÁ½Ê¤)  ");
		if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
		else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
		else printf("%d:%d",pd,bd);
		color(0);
		printf("\n\n\nµ±Ç°ÑªÁ¿  %d:%d\n\nµ±Ç°Êµµ¯:%d  µ±Ç°¿Õµ¯:%d\n\nµ±Ç°½øÐÐ:P%d( %s )\nÇëÑ¡Ôñ·½Ê½:a.¹¥»÷×Ô¼º d.¹¥»÷¶Ô·½\n°´1~%dÑ¡ÔñµÀ¾ß\nµ±Ç°µÀ¾ß:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
		for(int i=1; i<=((bd+pd==4)?8:4); i++)
			if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
			else printf("¿Õ ");

		if(q.empty()) goto B3;

		if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
		if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
		if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
		if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
		if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
		if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
		if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
		if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;

		if(kd('A')) {
			cz=1;
			int D=q.front();
			q.pop();
			cls;
			if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0)) {
				print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
				D==1?kd--:sd--;
				nz=0,js=0;
				cls;
				continue;
			} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
				system("color f7");
				Sleep(100);
				system("color 0f");
				color(0);
				cls;
				print("Å飬ǹÏìÁË",0,ti,0,1);
				(!f)?(ps-=1+js):(bs-=1+js);
				if(D==2)sd--;
				else kd--;
				nz=0,js=0;
				cls;
			} else bug(D),cls,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),cls;
		}

		if(kd('D')) {
			cz=1;
			int D=q.front();
			q.pop();
			f=!f;
			cls;
			if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0)) {
				print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
				color(0);
				sk?f=!f:f=f;
				if(D==1) kd--;
				else sd--;
				nz=0;
				js=sk=0,cls;
				continue;
			} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
				system("color f7"),Sleep(100),system("color 0f");
				color(0);
				cls;
				if(D==1) kd--;
				else sd--;
				print("Å飬ǹÏìÁË",0,ti,0,1);
				if(sk) f=!f,f?ps-=1+js:bs-=1+js;
				else !f?ps-=1+js:bs-=1+js;
				sk=js=0;
				nz=0;
				cls;
			} else bug(D),cls,f=!f,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),color(0),cls;
		}

		if(ps<=0&&bd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p1),print("",0,0,0,1);
			kd=sd=0;
			bd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(bs<=0&&pd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p2),print("",0,0,0,1);
			kd=sd=0;
			pd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(ps<=0&&bd==2) {
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû",p2);
			Sleep(1000);
			system("pause");
			return;
		}
		if(bs<=0&&pd==2) {
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû\n\n",p1);
			Sleep(1000);
			system("pause");
			return;
		}
B3:
		if(kd==0&&sd==0) {
			cls;
			if(bd+pd==0) get_d(5,1);
			if(bd+pd==1) get_d(5,2);
			if(pd+bd==2) get_d(7,2);
			if(pd+bd==3) get_d(7,3);
			if(bd+pd==4) get_d(9,3);
			color(0);
			print("×ÀÃæ·­×ª,",0,ti,0,0);
			printf("%d",kd);
			print("¸ö¿Õµ¯Óë",0,ti,0,0);
			printf("%d",sd);
			print("ʵµ¯³öÏÖÁË",0,ti,0,1);
			color(0);
			cls;
			int S=sd,K=kd;
			vector<int> v;
			v.clear();
			while(S>0||K>0) {
				int r=rand()%2;
				if(r==0&&S>0) S--,v.push_back(2);
				if(r==1&&K>0) K--,v.push_back(1);
			}
			while(!v.empty()) {
				int w=rand()%v.size();
				q.push(v[w]);
				v.erase(v.begin()+w);
			}

			if(pd+bd==0) continue;

			if(bd+pd==1) get_j(2);
			if(bd+pd==2) get_j(2);
			if(bd+pd==2) get_j(3);
			if(bd+pd==3) get_j(4);
			if(bd+pd==4) get_j(4);
			cls;
			color(0);
			print("P1ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][0]) color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
				else printf("¿Õ ");
			print("",0,0,0,1);
			cls;
			print("P2ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][1]) color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
				else color(0),printf("¿Õ ");
			print("",0,0,0,1);
			cls;
		}
	}
}

void pva_start() {
	fflush(stdin);
	bool f=0,cz=1;//czÅжÏÊÇ·ñ²Ù×÷£¬²Ù×÷Á˾ÍÒª¶îÍâclsÀ´±£Õϲ»ÉÁÆÁ¡£
	print("ÇëÈ¡¸öÃû×Ö:",0,ti,0,0),scanf("%s",p1),cls;
	p2[0]='A',p2[1]='I';
	nz=0;
	if(god) pd=bd=2;
	while(1) {
		Sleep(50);
		if(cz) cz=0,cls;
		gotoxy(0,0);
		printf("µ±Ç°±È·Ö(Èý¾ÖÁ½Ê¤)  ");
		if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
		else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
		else printf("%d:%d",pd,bd);
		color(0);
		printf("\n\n\nµ±Ç°ÑªÁ¿  %d:%d\n\nµ±Ç°Êµµ¯:%d  µ±Ç°¿Õµ¯:%d\n\nµ±Ç°½øÐÐ:P%d( %s )\nÇëÑ¡Ôñ·½Ê½:a.¹¥»÷×Ô¼º d.¹¥»÷¶Ô·½\n°´1~%dÑ¡ÔñµÀ¾ß\nµ±Ç°µÀ¾ß:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
		for(int i=1; i<=((bd+pd==4)?8:4); i++)
			if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
			else printf("¿Õ ");
		if(q.empty()) goto B1;

		if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
		if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
		if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
		if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
		if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
		if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
		if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
		if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;

		if(kd('A')||(f&&kd>sd)) {
			if(f) {
				Sleep(500);
				cls;
				print("AI Ãé×¼ÁË×Ô¼º",0,ti,0,1);
				cls;
			}
			cz=1;
			int D=q.front();
			q.pop();
			cls;
			if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0)) {
				print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
				D==1?kd--:sd--;
				nz=0,js=0;
				cls;
				continue;
			} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
				system("color f7");
				Sleep(100);
				system("color 0f");
				color(0);
				cls;
				print("Å飬ǹÏìÁË",0,ti,0,1);
				(!f)?(ps-=1+js):(bs-=1+js);
				if(D==2)sd--;
				else kd--;
				nz=0,js=0;
				cls;
			} else bug(D),cls,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),cls;
		}

		if(kd('D')||(f&&kd<=sd)) {
			if(f) {
				Sleep(500);
				cls;
				print("AI Ãé×¼ÁËÄã",0,ti,0,1);
				cls;
			}
			cz=1;
			int D=q.front();
			q.pop();
			f=!f;
			cls;
			if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0)) {
				print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
				color(0);
				sk?f=!f:f=f;
				if(D==1) kd--;
				else sd--;
				nz=0;
				js=sk=0,cls;
				continue;
			} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
				system("color f7"),Sleep(100),system("color 0f");
				color(0);
				cls;
				if(D==1) kd--;
				else sd--;
				print("Å飬ǹÏìÁË",0,ti,0,1);
				if(sk) f=!f,f?ps-=1+js:bs-=1+js;
				else !f?ps-=1+js:bs-=1+js;
				sk=js=0;
				nz=0;
				cls;
			} else bug(D),cls,f=!f,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),color(0),cls;
		}

		if(ps<=0&&bd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p1),print("",0,0,0,1);
			kd=sd=0;
			bd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(bs<=0&&pd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p2),print("",0,0,0,1);
			kd=sd=0;
			pd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(ps<=0&&bd==2) {
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû\n\n",p2);
			Sleep(1000);
			system("pause");
			return;
		}
		if(bs<=0&&pd==2) {
			zzb++;
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû\n\n",p1);
			Sleep(1000);
			system("pause");
			return;
		}

B1:
		if(kd==0&&sd==0) {
			cls;
			if(bd+pd==0) get_d(5,1);
			if(bd+pd==1) get_d(5,2);
			if(pd+bd==2) get_d(7,2);
			if(pd+bd==3) get_d(7,3);
			if(bd+pd==4) get_d(9,3);
			color(0);
			print("×ÀÃæ·­×ª,",0,ti,0,0);
			printf("%d",kd);
			print("¸ö¿Õµ¯Óë",0,ti,0,0);
			printf("%d",sd);
			print("ʵµ¯³öÏÖÁË",0,ti,0,1);
			color(0);
			cls;
			int S=sd,K=kd;
			vector<int> v;
			v.clear();
			while(S>0||K>0) {
				int r=rand()%2;
				if(r==0&&S>0) S--,v.push_back(2);
				if(r==1&&K>0) K--,v.push_back(1);
			}
			while(!v.empty()) {
				int w=rand()%v.size();
				q.push(v[w]);
				v.erase(v.begin()+w);
			}
			findbug();
			if(pd+bd==0) continue;

			if(bd+pd==1) get_j(2);
			if(bd+pd==2) get_j(2);
			if(bd+pd==2) get_j(3);
			if(bd+pd==3) get_j(4);
			if(bd+pd==4) get_j(4);
			cls;
			color(0);
			print("P1ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][0]) color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
				else printf("¿Õ ");
			print("",0,0,0,1);
			cls;
			print("P2ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][1]) color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
				else color(0),printf("¿Õ ");
			print("",0,0,0,1);
			cls;
		}
	}
}

void pvzzb_start() {
	fflush(stdin);
	bool f=0,cz=1;//czÅжÏÊÇ·ñ²Ù×÷£¬²Ù×÷Á˾ÍÒª¶îÍâclsÀ´±£Õϲ»ÉÁÆÁ¡£
	print("ÇëÈ¡¸öÃû×Ö:",0,ti,0,0),scanf("%s",p1),cls;
	p2[0]='z',p2[1]='z',p2[2]='b';
	nz=0;
	if(god) pd=bd=2;
	while(1) {
		kd=max(kd,0),sd=max(sd,0);
		Sleep(50);
		if(cz) cz=0,cls;
		gotoxy(0,0);
		printf("µ±Ç°±È·Ö(Èý¾ÖÁ½Ê¤)  ");
		if(pd>bd) color(4),printf("%d",pd),color(0),printf(":%d",bd);
		else if(bd>pd) color(0),printf("%d:",pd),color(4),printf("%d",bd);
		else printf("%d:%d",pd,bd);
		color(0);
		printf("\n\n\nµ±Ç°ÑªÁ¿  %d:%d\n\nµ±Ç°Êµµ¯:%d  µ±Ç°¿Õµ¯:%d\n\nµ±Ç°½øÐÐ:P%d( %s )\nÇëÑ¡Ôñ·½Ê½:a.¹¥»÷×Ô¼º d.¹¥»÷¶Ô·½\n°´1~%dÑ¡ÔñµÀ¾ß\nµ±Ç°µÀ¾ß:",ps,bs,sd,kd,(f?2:1),(f?p2:p1),(bd+pd==4?8:4));
		for(int i=1; i<=((bd+pd==4)?8:4); i++)
			if(h[i][f]) color(5),printf("%s ",n[h[i][f]].c_str()),color(0);
			else printf("¿Õ ");
		if(q.empty()) goto B2;
		if(f) {
			cz=1;
			int NZ=0,JS=0;
			for(int i=1; i<=8; i++) {
				if(h[i][1]==8) NZ=i;
				if(h[i][1]==7)
					if((pd+bd==1&&bs!=3)||(pd+bd==2&&bs!=4)||(pd+bd==3&&bs!=5)||(pd+bd==4&&bs!=6)) {
						Sleep(500);
						cls;
						h[i][1]=0;
						print("zzb Ò»ÑöÍ·£¬ÍÌÍêÁËÒ»Õûƿҩ",5,ti,1,1);
						print("ÉË¿ÚÖÎÓúÁË£¬¼ÓÁËÁ½µãѪ",0,ti,0,1);
						bs+=2;
						if(bd+pd==1) bs=min(bs,3);
						if(bd+pd==2) bs=min(bs,4);
						if(bd+pd==3) bs=min(bs,5);
						if(bd+pd==4) bs=min(bs,6);
						cls;
					}
				if(h[i][1]==4) JS=i;
			}
			if(sd==0||(q.front()==1&&!NZ&&kd)) {
				Sleep(1000);
				cz=1;
				q.pop();
				cls;
				print("zzb Ãé×¼ÁË×Ô¼º",0,ti,0,1);
				cls;
				print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
				kd--;
				js=0;
				cls;
			} else if(kd==0||(q.front()==1&&NZ&&kd)||(q.front()==2&&sd)) {
				if(q.front()==1) Sleep(500),use(h[NZ][1],f,NZ);
				if(JS) Sleep(500),use(h[JS][1],f,JS);
				cz=1;
				int D=q.front();
				q.pop();
				f=!f;
				cls;
				Sleep(500);
				print("zzb Ãé×¼ÁËÄã",0,ti,0,1);
				cls;
				system("color f7"),Sleep(100),system("color 0f");
				color(0);
				cls;
				if(D==1) kd--;
				else sd--;
				print("Å飬ǹÏìÁË",0,ti,0,1);
				ps-=1+js;
				js=nz=0;
				cls;
			} else bug(q.front()),q.pop(),cls,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),cls;
		}

		else {
			if(h[1][f]&&(kd('1')||kd(VK_NUMPAD1))) use(h[1][f],f,1),cz=1;
			if(h[2][f]&&(kd('2')||kd(VK_NUMPAD2))) use(h[2][f],f,2),cz=1;
			if(h[3][f]&&(kd('3')||kd(VK_NUMPAD3))) use(h[3][f],f,3),cz=1;
			if(h[4][f]&&(kd('4')||kd(VK_NUMPAD4))) use(h[4][f],f,4),cz=1;
			if(h[5][f]&&(kd('5')||kd(VK_NUMPAD5))) use(h[5][f],f,5),cz=1;
			if(h[6][f]&&(kd('6')||kd(VK_NUMPAD6))) use(h[6][f],f,6),cz=1;
			if(h[7][f]&&(kd('7')||kd(VK_NUMPAD7))) use(h[7][f],f,7),cz=1;
			if(h[8][f]&&(kd('8')||kd(VK_NUMPAD8))) use(h[8][f],f,8),cz=1;

			if(kd('A')) {
				cz=1;
				int D=q.front();
				q.pop();
				cls;
				if((nz==1&&D==2&&sd>0)||(nz==0&&D==1&&kd>0)) {
					print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
					D==1?kd--:sd--;
					nz=0,js=0;
					cls;
					continue;
				} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
					system("color f7");
					Sleep(100);
					system("color 0f");
					color(0);
					cls;
					print("Å飬ǹÏìÁË",0,ti,0,1);
					(!f)?(ps-=1+js):(bs-=1+js);
					if(D==2)sd--;
					else kd--;
					nz=0,js=0;
					cls;
				} else bug(D),cls,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),cls;
			}

			if(kd('D')) {
				cz=1;
				int D=q.front();
				q.pop();
				f=!f;
				cls;
				if((nz==0&&D==1&&kd>0)||(nz==1&&D==2&&sd>0)) {
					print("ßDzÁ£¬Êǿյ¯",0,ti,0,1);
					color(0);
					sk?f=!f:f=f;
					if(D==1) kd--;
					else sd--;
					nz=0;
					js=sk=0,cls;
					continue;
				} else if((nz==1&&D==1&&kd>0)||(nz==0&&D==2&&sd>0)) {
					system("color f7"),Sleep(100),system("color 0f");
					color(0);
					cls;
					if(D==1) kd--;
					else sd--;
					print("Å飬ǹÏìÁË",0,ti,0,1);
					if(sk) f=!f,f?ps-=1+js:bs-=1+js;
					else !f?ps-=1+js:bs-=1+js;
					sk=js=0;
					nz=0;
					cls;
				} else bug(D),cls,f=!f,printf("ÓÎÏ·bug,ÇëµÈ´ý1s"),Sleep(1000),color(0),cls;
			}
		}

		if(ps<=0&&bd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p1),print("",0,0,0,1);
			kd=sd=0;
			bd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(bs<=0&&pd!=2) {
			cls,sk=js=0;
			system("color 4f"),Sleep(300),system("color 0f");
			printf("%s,died",p2),print("",0,0,0,1);
			kd=sd=0;
			pd++;
			if(bd+pd==1) bs=ps=3;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==2) bs=ps=4;
			if(bd+pd==3) bs=ps=5;
			if(bd+pd==4) bs=ps=6;
			cls;
		}
		if(ps<=0&&bd==2) {
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû\n\n",p2);
			Sleep(1000);
			system("pause");
			return;
		}
		if(bs<=0&&pd==2) {
			cls;
			color(2);
			printf("ÓÎÏ·½áÊø,%sʤÀû\n\n",p1);
			Sleep(1000);
			system("pause");
			return;
		}
B2:
		if(kd==0&&sd==0) {
			cls;
			if(bd+pd==0) get_d(5,1);
			if(bd+pd==1) get_d(5,2);
			if(pd+bd==2) get_d(7,2);
			if(pd+bd==3) get_d(7,3);
			if(bd+pd==4) get_d(9,3);
			color(0);
			print("×ÀÃæ·­×ª,",0,ti,0,0);
			printf("%d",kd);
			print("¸ö¿Õµ¯Óë",0,ti,0,0);
			printf("%d",sd);
			print("ʵµ¯³öÏÖÁË",0,ti,0,1);
			color(0);
			cls;
			int S=sd,K=kd;
			vector<int> v;
			v.clear();
			while(S>0||K>0) {
				int r=rand()%2;
				if(r==0&&S>0) S--,v.push_back(2);
				if(r==1&&K>0) K--,v.push_back(1);
			}
			while(!v.empty()) {
				int w=rand()%v.size();
				q.push(v[w]);
				v.erase(v.begin()+w);
			}

			if(pd+bd==0) continue;

			if(bd+pd==1) get_j(2);
			if(bd+pd==2) get_j(2);
			if(bd+pd==2) get_j(3);
			if(bd+pd==3) get_j(4);
			if(bd+pd==4) get_j(4);
			cls;
			color(0);
			print("P1ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][0]) {
					while(h[i][0]==6) h[i][0]=rand()%HH+1;
					color(5),printf("%s ",n[h[i][0]].c_str()),color(0);
				} else printf("¿Õ ");
			print("",0,0,0,1);
			cls;
			print("P2ÃæÇ°µÄ×ÀÃæ·­×ª,",0,ti,1,0);
			for(int i=1; i<=((bd+pd==4)?8:4); i++)
				if(h[i][1]) {
					h[i][1]=rand()%2==0?4:(rand()%2==0?8:7);
					color(5),printf("%s ",n[h[i][1]].c_str()),color(0);
				} else color(0),printf("¿Õ ");
			print("",0,0,0,1);
			cls;
		}
	}
}

void game_begin() {
	while(1) {
		color(0);
		gotoxy(25,8);
		print("¶ñħÂÖÅ̶Ä",5,0,0,0);
		gotoxy(25,12);
		printf("1. Ë«ÈËģʽ");
		gotoxy(25,14);
		printf("2. µ¥»úģʽ");
		if(kd('1')||kd(VK_NUMPAD1)) fflush(stdin),cls,g_init(),pvp_start(),cls,init();
		if(kd('2')||kd(VK_NUMPAD2)) {
			fflush(stdin);
			cls,g_init();
			if(zzb!=3) pva_start();
			else {
				if(!FF) {
					FF=1;
					print("¿ÉÒÔ°¡£¬¾¹È»Á¬Ðø´ò°ÜÁËÈý´ÎÎÒÉè¼ÆµÄAI",0,ti,1,1);
					print("ÄÇô½ÓÏÂÀ´£¬¾ÍÈÃÎÒÅãÄãºÃºÃÍæÍæ°É",4,ti,1,1);
				}
				pvzzb_start();
			}
			cls;
			init();
		}
		gotoxy(25,16);
		printf("3. ÓÎÏ·½éÉÜ");
		if(kd('3')||kd(VK_NUMPAD3)) cls,in_game(),cls;
	}
}

int main() {
	zzb=FF=0;
	srand(time(NULL));
	color(0);
	system("mode con cols=60 lines=26");
	system("title ¶ñħÂÖÅ̶Ä");
	init();
	game_begin();
	return 0;
}