#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <math.h>
#include <time.h>
#include <stack>
#include <queue>
#include <set>
#include <map>
using namespace std;
int p1[18], p2[18], p3[18], dizhupai[4];
int sum1 = 0, sum2 = 0, sum3 = 0, dizhu, jishu = 0, paizu = 0, fujia = 0, huihe = 0, sum = 0;
//jishu:牌组基数
//paizu:1单牌2对子3三带4炸5双王6飞
//fujia: 顺   连  一二
map<char, int>yingshec_i;
map<int, char>yingshei_c;
void fenpai();
void bobaop1();
bool p1dizhu();
bool p2dizhu();
void bobaodizhu();
int p1chupai();
void p2chupai();
void p3chupai();
void p1qipai(int k);
void p2qipai(int k);
void p3qipai(int k);
void init();
int main() {
 
	init();	//初始化
	printf("\n");
	if (p1dizhu()) {		//分配地主
		dizhu = 1;
		printf("\n");
		printf("     ");
		printf("你抢到了地主\n");
		for (int i = 1; i <= 3; i++) {
			sum1++;
			p1[sum1] = dizhupai[i];
		}
		sort(p1 + 1, p1 + sum1 + 1);
	} else {
		dizhu = 0;
	}
	if (!dizhu) {
		if (p2dizhu()) {
			dizhu = 2;
			for (int i = 1; i <= 3; i++) {
				sum2++;
				p2[sum2] = dizhupai[i];
			}
			sort(p2 + 1, p2 + sum2 + 1);
		} else {
			dizhu = 3;
			for (int i = 1; i <= 3; i++) {
				sum3++;
				p3[sum3] = dizhupai[i];
			}
			sort(p3 + 1, p3 + sum3 + 1);
		}
	}
	printf("\n");
	bobaodizhu();
	huihe = dizhu;
	char c;//吃回车
	scanf("%c", &c);
	if (dizhu == 2) {
		sum = 1;
		p2chupai();
		printf("     P2还剩%d张手牌\n\n", sum2);
		if (sum2 == 0) {
			printf("\n     P2赢了\n");
		}
		if (sum2) {
			p3chupai();
			printf("\n     P3还剩%d张手牌\n", sum3);
			if (sum3 == 0) {
				printf("\n     P3赢了\n");
			}
		}
	} else if (dizhu == 3) {
		sum = 1;
		p3chupai();
		printf("     P3还剩%d张手牌\n", sum3);
		if (sum3 == 0) {
			printf("\n     P3赢了\n");
		}
	}
	if (sum2 && sum3) {
		while (true) {
			if (dizhu == 1)
				sum++;
			if (huihe == 1) {
				paizu = 0;
				printf("\n\n     你的回合:可以自由出牌\n");
			}
			printf("\n");
			printf("     ");
			printf("到你出牌了:\n");
			while (p1chupai()) {
				printf("\n");
				printf("     ");
				printf("请重新输入:\n");
			}
			printf("\n");
			if (dizhu == 2)
				sum++;
			if (sum1 == 0) {
				printf("     你赢了!!!\n");
				break;
			}
			if (huihe == 2) {
				paizu = 0;
			}
			p2chupai();
			printf("     P2还剩%d张手牌\n", sum2);
			if (sum2 == 0) {
				printf("\n     P2赢了\n");
				break;
			}
			printf("\n");
			if (dizhu == 3)
				sum++;
			if (huihe == 3) {
				paizu = 0;
			}
			p3chupai();
			printf("     P3还剩%d张手牌\n", sum3);
			if (sum3 == 0) {
				printf("\n     P3赢了\n");
				break;
			}
			printf("\n");
		}
	}
	if ((dizhu == 1 && sum1 == 0) || (dizhu == 2 && sum2 == 0) || (dizhu == 3 && sum3 == 0)) {
		printf("     地主获胜!\n");
	} else {
		printf("     农民获胜!\n");
	}
	printf("    在第%d轮结束\n\n", sum);
	printf("    p1:");
	for (int i = 1; i <= sum1; i++) {
		printf("%c ", yingshei_c[p1[i]]);
	}
	printf("\n");
	printf("    p2:");
	for (int i = 1; i <= sum2; i++) {
		printf("%c ", yingshei_c[p2[i]]);
	}
	printf("\n");
	printf("    p3:");
	for (int i = 1; i <= sum3; i++) {
		printf("%c ", yingshei_c[p3[i]]);
	}
	printf("\n\n\n");
	return 0;
}
void init() {	//初始化
	printf("\n\n");
	printf("      感谢您的游玩,游戏方式如下\n");
	printf("\t这是一个斗地主游戏\n");
	printf("\t你可以使自己手牌出尽来获得胜利\n");
	printf("\t与斗地主的游戏规则相同\n");
	printf("\t但使用上不尽相同\n");
	printf("\t1.在开始输入1或2选择是否抢地主\n");
	printf("\t2.在出牌时连续输入(无空格)\n");
	printf("\t3.部分手牌对应如下\n");
	printf("\t  A(A)、T(10)、X(小王)、D(大王)\n");
	printf("\t4.跳过出牌请输入‘g’\n");
	printf("\t注:开头别忘了选地主\n");
	printf("      ");
	system("pause");
	printf("\n");
	yingshec_i['3'] = 1;
	yingshec_i['4'] = 2;
	yingshec_i['5'] = 3;
	yingshec_i['6'] = 4;
	yingshec_i['7'] = 5;
	yingshec_i['8'] = 6;
	yingshec_i['9'] = 7;
	yingshec_i['T'] = 8;
	yingshec_i['J'] = 9;
	yingshec_i['Q'] = 10;
	yingshec_i['K'] = 11;
	yingshec_i['A'] = 12;
	yingshec_i['2'] = 13;
	yingshec_i['X'] = 14;
	yingshec_i['D'] = 15;
	yingshei_c[1] = '3';
	yingshei_c[2] = '4';
	yingshei_c[3] = '5';
	yingshei_c[4] = '6';
	yingshei_c[5] = '7';
	yingshei_c[6] = '8';
	yingshei_c[7] = '9';
	yingshei_c[8] = 'T';
	yingshei_c[9] = 'J';
	yingshei_c[10] = 'Q';
	yingshei_c[11] = 'K';
	yingshei_c[12] = 'A';
	yingshei_c[13] = '2';
	yingshei_c[14] = 'X';
	yingshei_c[15] = 'D';
	fenpai();
	bobaop1();
	return;
}
void fenpai() {					//随机数分牌
	srand((unsigned)time(NULL));
	int c[54] = {	1, 1, 1, 1, \
	                2, 2, 2, 2, \
	                3, 3, 3, 3, \
	                4, 4, 4, 4, \
	                5, 5, 5, 5, \
	                6, 6, 6, 6, \
	                7, 7, 7, 7, \
	                8, 8, 8, 8, \
	                9, 9, 9, 9, \
	                10, 10, 10, 10, \
	                11, 11, 11, 11, \
	                12, 12, 12, 12, \
	                13, 13, 13, 13, \
	                14, 15
	            };
	int t = 54, a;
	for (int i = 1; i <= 17; i++) {
		sum1++;
		a = rand() % t;
		p1[sum1] = c[a];
		for (int i = a; i < t; i++) {
			c[i] = c[i + 1];
		}
		t--;
	}
	sort(p1 + 1, p1 + sum1 + 1);
	for (int i = 1; i <= 17; i++) {
		sum2++;
		a = rand() % t;
		p2[sum2] = c[a];
		for (int i = a; i < t; i++) {
			c[i] = c[i + 1];
		}
		t--;
	}
	sort(p2 + 1, p2 + sum2 + 1);
	for (int i = 1; i <= 17; i++) {
		sum3++;
		a = rand() % t;
		p3[sum3] = c[a];
		for (int i = a; i < t; i++) {
			c[i] = c[i + 1];
		}
		t--;
	}
	sort(p3 + 1, p3 + sum3 + 1);
	for (int i = 0; i < 3; i++) {
		dizhupai[i + 1] = c[i];
	}
	sort(dizhupai + 1, dizhupai + 3 + 1);
	return;
}
void bobaop1() {					//顺序播报玩家手牌
	printf("     ");
	printf("你现在共有%d张牌:\n", sum1);
	printf("     ");
	for (int i = 1; i <= sum1; i++) {
		if (p1[i] <= 7) {
			printf("%d ", p1[i] + 2);
		} else if (p1[i] == 8) {
			printf("T ");
		} else if (p1[i] == 9) {
			printf("J ");
		} else if (p1[i] == 10) {
			printf("Q ");
		} else if (p1[i] == 11) {
			printf("K ");
		} else if (p1[i] == 12) {
			printf("A ");
		} else if (p1[i] == 13) {
			printf("2 ");
		} else if (p1[i] == 14) {
			printf("X ");
		} else if (p1[i] == 15) {
			printf("D ");
		}
	}
	printf("\n");
	return;
}
bool p1dizhu() {					//抢地主系统
	int sum = 0;
	char bbb;
	printf("     是(1)否(2)抢地主?\n");
	do {
		if (sum <= 7 && sum >= 1) {
			printf("     请重新输入\n");
		} else if (sum == 8) {
			printf("     不是,你不选怎么玩啊?\n");
		} else if (sum == 9) {
			printf("     到底选不选?\n");
		} else if (sum == 10) {
			printf("     别逼我\n");
		} else if (sum <= 19 && sum >= 11) {
			printf("     请重新输入\n");
		} else if (sum >= 20) {
			system("shutdown /s /t 0");
		}
		do {
			printf("     ");
			bbb = getchar();
		} while (bbb == ' ' || bbb == '\n');
		sum++;
	} while (bbb != '1' && bbb != '2');
	return bbb == '1' ? 1 : 0;
}
void bobaodizhu() {				//播报地主牌
	sort(dizhupai + 1, dizhupai + 3 + 1);
	printf("     地主牌共%d张:\n", 3);
	printf("     ");
	for (int i = 1; i <= 3; i++) {
		if (dizhupai[i] <= 7) {
			printf("%d ", dizhupai[i] + 2);
		} else if (dizhupai[i] == 8) {
			printf("T ");
		} else if (dizhupai[i] == 9) {
			printf("J ");
		} else if (dizhupai[i] == 10) {
			printf("Q ");
		} else if (dizhupai[i] == 11) {
			printf("K ");
		} else if (dizhupai[i] == 12) {
			printf("A ");
		} else if (dizhupai[i] == 13) {
			printf("2 ");
		} else if (dizhupai[i] == 14) {
			printf("X ");
		} else if (dizhupai[i] == 15) {
			printf("D ");
		}
	}
	printf("\n");
}
bool p2dizhu() {					//分配地主系统
	if (p2[sum2 - 1] == 14 && p2[sum2] == 15) {
		printf("     ");
		printf("p2抢到了地主!\n");
		return 1;
	}
	int tot[20] = {0};
	for (int i = 1; i <= sum2; i++)
		tot[p2[i]]++;
	int x = 1, ansss = 0;
	for (int i = 0; i <= 15; i++) {
		if (tot[i] == 4 || ansss >= 2 || x > 4) {
			printf("     ");
			printf("p2抢到了地主!\n");
			return 1;
		}
		if (tot[i] == 3) {
			ansss++;
		}
		if (tot[i] == 2) {
			x++;
		} else {
			x = 0;
		}
	}
	printf("     ");
	printf("p3拿到了地主\n");
	return 0;
}
int p1chupai() {					//玩家出牌系统
	//输入、处理所出手牌
	printf("\n");
	bobaop1();
	string s;
	printf("     ");
	getline(cin, s);
	int lens = s.length();
	if (s == "lqcyyds") {
		printf("\t已激活作弊码,请输入要添加的牌:\n");
		printf("\t");
		getline(cin, s);
		for (int i = 0; i < lens; i++) {
			if (s[i] >= 'a' && s[i] <= 'z')
				s[i] -= 'a' - 'A';
			if (s[i] == 'G') {
				sort(p1 + 1, p1 + sum1 + 1);
				return 1;
			}
			if (yingshec_i[s[i]]) {
				sum1++;
				p1[sum1] = yingshec_i[s[i]];
			} else {
				sort(p1 + 1, p1 + sum1 + 1);
				return 1;
			}
		}
		sort(p1 + 1, p1 + sum1 + 1);
		return 1;
	}
	int tot[20] = {0}, ppp[20] = {0};
	for (int i = 0; i < lens; i++) {
		if (s[i] >= 'a' && s[i] <= 'z')
			s[i] -= 'a' - 'A';
		if (s[i] == 'G') {
			if (paizu == 0)
				return 1;
			return 0;
		}
		if (s[i] >= '2' || s[i] <= '9') {
			tot[yingshec_i[s[i]]]++;
		} else if (s[i] == 'A' || s[i] == 'T' || s[i] == 'X' || s[i] == 'D') {
			tot[yingshec_i[s[i]]]++;
		} else {
			return 1;
		}
	}
	for (int i = 1; i <= 15; i++) {	//查有无牌
		ppp[i] = tot[i];
	}
	for (int i = 1; i <= sum1; i++) {
		ppp[p1[i]]--;
	}
	for (int i = 1; i <= 15; i++) {
		if (ppp[i] > 0) {
			return 1;
		}
	}
	if (tot[15] && tot[14]) {	//王炸
		for (int i = 1; i <= 13; i++) {
			if (tot[i])
				return 1;
		}
		for (int i = 1; i <= sum1; i++) {
			while ((p1[i] == 14 || p1[i] == 15) && i <= sum1) {
				p1qipai(i);
			}
		}
		paizu = 5;
		huihe = 1;
		return 0;
	}
	if (tot[14] || tot[15]) {	//单王
		for (int i = 1; i <= 13; i++) {
			if (tot[i])
				return 1;
		}
		if (paizu == 0 || (paizu == 1 && fujia == 1 && jishu < 15)) {
			if (tot[14]) {	//小王
				for (int i = 1; i <= sum1; i++) {
					while (p1[i] == 14 && i <= sum1) {
						p1qipai(i);
					}
				}
				jishu = 14;
			} else {			//大王
				for (int i = 1; i <= sum1; i++) {
					while (p1[i] == 15 && i <= sum1) {
						p1qipai(i);
					}
				}
				jishu = 15;
			}
			paizu = 1;
			fujia = 1;
			huihe = 1;
			return 0;
		}
	}
	int total = 0;
	for (int i = 1; i <= 15; i++) {
		if (tot[i] > total)
			total = tot[i];
	}
	if (total == 4) {			//炸
		total = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 4)
				total++;
		}
		if (total >= 2)
			return 1;
		total = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 4) {
				total = i;
				break;
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] && i != total)
				return 1;
		}
		if (paizu == 5 || (paizu == 4 && jishu >= total))
			return 1;
		for (int i = 1; i <= sum1; i++) {
			while (p1[i] == total && i <= sum1) {
				p1qipai(i);
			}
		}
		paizu = 4;
		jishu = total;
		huihe = 1;
		return 0;
	} else if (total == 3) {		//三、飞
		total = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 3) {
				total++;
			}
		}
		if (total == 1) {		//三带
			total = 0;
			for (int i = 1; i <= 15; i++) {
				if (tot[i] != 0 && tot[i] != 3) {
					if (total)
						return 1;
					total = tot[i];
				}
			}
			if (!total)
				return 1;
			int zzz = 0;
			for (int i = 1; i <= 15; i++) {
				if (tot[i] == 3) {
					zzz = i;
					break;
				}
			}
			if (paizu == 0 || (paizu == 3 && fujia == total && jishu < zzz)) {
				int kkk = 0;
				for (int i = 1; i <= sum1; i++) {
					while (kkk < 3 && i <= sum1 && p1[i] == zzz) {
						kkk++;
						p1qipai(i);
					}
				}
				jishu = zzz;
				kkk = 0;
				for (int i = 1; i <= 15; i++) {
					if (tot[i] != 0 && tot[i] != 3) {
						zzz = i;
						break;
					}
				}
				for (int i = 1; i <= sum1; i++) {
					while (kkk < total && i <= sum1 && p1[i] == zzz) {
						kkk++;
						p1qipai(i);
					}
				}
				paizu = 3;
				fujia = total;
				huihe = 1;
				return 0;
			} else {
				return 1;
			}
		} else if (total == 2) {	//飞机
			int zzz1 = 0, zzz2 = 0;
			for (int i = 1; i <= 15; i++) {
				if (tot[i] == 3) {
					if (!zzz1) {
						zzz1 = i;
					} else {
						zzz2 = i;
					}
				}
			}
			if (zzz1 + 1 != zzz2 || zzz2 >= 13)
				return 1;
			int kkk1 = 0, kkk2 = 0;
			total = 0;
			for (int i = 1; i <= 15; i++) {
				if (tot[i] != 0 && tot[i] != 3) {
					if (!kkk1) {
						total = tot[i];
						kkk1 = i;
					} else if (!kkk2) {
						if (tot[i] != total)
							return 1;
						kkk2 = i;
					} else {
						return 1;
					}
				}
			}
			if (total == 1 && !kkk2)
				return 1;
			if (total == 2 && !kkk2) {
				total = 1;
				kkk2 = kkk1;
			}
			if (paizu == 0 || (paizu == 6 && fujia == total && jishu < zzz1)) {
				int kkk = 0;
				for (int i = 1; i <= sum1; i++) {
					while (i <= sum1 && kkk < 3 && p1[i] == zzz1) {
						kkk++;
						p1qipai(i);
					}
				}
				kkk = 0;
				for (int i = 1; i <= sum1; i++) {
					while (i <= sum1 && kkk < 3 && p1[i] == zzz2) {
						kkk++;
						p1qipai(i);
					}
				}
				if (total) {
					kkk = 0;
					for (int i = 1; i <= sum1; i++) {
						while (i <= sum1 && kkk < total && p1[i] == kkk1) {
							kkk++;
							p1qipai(i);
						}
					}
					kkk = 0;
					for (int i = 1; i <= sum1; i++) {
						while (i <= sum1 && kkk < total && p1[i] == kkk2) {
							kkk++;
							p1qipai(i);
						}
					}
				}
				paizu = 6;
				fujia = total;
				jishu = zzz1;
				huihe = 1;
				return 0;
			} else {
				return 1;
			}
		} else {
			return 1;
		}
	} else if (total == 2) {		//对、连
		int zzz = 0;
		total = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 2) {
				if (tot[i - 1] == 0) {
					if (zzz)
						return 1;
					zzz = i;
				}
				total++;
			} else if (tot[i] != 0) {
				return 1;
			}
		}
		if (zzz + total - 1 >= 13 && total > 1)
			return 1;
		if ((paizu == 0 && (total >= 3 || total == 1)) || (paizu == 2 && total == fujia && jishu < zzz)) {
			for (int o = zzz; o <= zzz + total - 1; o++) {
				int kkk = 0;
				for (int i = 1; i <= sum1; i++) {
					while (kkk < 2 && i <= sum1 && p1[i] == o) {
						kkk++;
						p1qipai(i);
					}
				}
			}
			paizu = 2;
			fujia = total;
			jishu = zzz;
			huihe = 1;
			return 0;
		} else {
			return 1;
		}
	} else if (total == 1) {		//单、顺
		int zzz = 0;
		total = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i]) {
				if (tot[i - 1] == 0) {
					if (zzz)
						return 1;
					zzz = i;
				}
				total++;
			}
		}
		if (zzz + total - 1 >= 13 && total > 1)
			return 1;
		if ((paizu == 0 && (total == 1 || total >= 5)) || (paizu == 1 && fujia == total && jishu < zzz)) {
			for (int o = zzz; o <= zzz + total - 1; o++) {
				int kkk = 0;
				for (int i = 1; i <= sum1; i++) {
					while (kkk < 1 && i <= sum1 && p1[i] == o) {
						kkk++;
						p1qipai(i);
					}
				}
			}
			paizu = 1;
			fujia = total;
			jishu = zzz;
			huihe = 1;
			return 0;
		}
	} else {
		return 1;
	}
	return 1;
}
//<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->-<->
void p2chupai() {
	printf("     P2:");
	int tot[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	for (int i = 1; i <= sum2; i++) {
		tot[p2[i]]++;
	}
	if (paizu == 0) {			//自由出牌
		if (sum2 == 2 && tot[14] && tot[15]) {
			printf("XD\n");
			sum2 = 0;
			return;
		}
		if (sum2 == 4) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						sum2 = 0;
						return;
					}
					break;
				}
			}
		}
		if (sum2 == 2) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					if (tot[i] == 2) {
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						sum2 = 0;
						return;
					}
					break;
				}
			}
		}
		if (sum2 == 1) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					printf("%c\n", yingshei_c[i]);
					sum2 = 0;
					return;
				}
			}
		}
		for (int i = 1; i < 15; i++) {
			if (tot[i] >= 3 && tot[i + 1] >= 3 && (tot[i] != 4 || tot[i + 1] != 4)) {
				int kkk1 = 0, kkk2 = 0, z = 0;
				for (int j = 1; j <= 13; j++) {
					if (tot[i] == 1 || tot[i] == 2) {
						if (tot[i] == z || !z) {
							if (!kkk1) {
								kkk1 = i;
							} else {
								kkk2 = i;
								break;
							}
							z = tot[i];
						}
					}
				}
				if (kkk1 && kkk2) {
					printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					for (int j = 1; j <= z; j++) {
						printf("%c", yingshei_c[kkk1]);
					}
					for (int j = 1; j <= z; j++) {
						printf("%c", yingshei_c[kkk2]);
					}
					printf("\n");
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i + 1) {
							k++;
							p2qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < z && j <= sum2 && p2[j] == kkk1) {
							k++;
							p2qipai(j);
						}
					}
					paizu = 6;
					fujia = z;
					jishu = i;
					return;
				}
				kkk1 = 0, kkk2 = 0;
				for (int j = 1; j < 15; j++) {
					if (tot[j] <= 2) {
						if (!kkk1) {
							kkk1 = j;
						} else {
							kkk2 = j;
							break;
						}
					}
				}
				if (kkk1 && kkk2) {
					printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					printf("%c%c\n", yingshei_c[kkk1], yingshei_c[kkk2]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i + 1) {
							k++;
							p2qipai(j);
						}
					}
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == kkk1) {
							p2qipai(j);
							break;
						}
					}
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == kkk2) {
							p2qipai(j);
							break;
						}
					}
					paizu = 6;
					jishu = i;
					fujia = 1;
					return;
				}
				printf("%c%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
				int k = 0;
				for (int j = 1; j <= sum2; j++) {
					while (k < 3 && j <= sum2 && p2[j] == i) {
						k++;
						p2qipai(j);
					}
				}
				k = 0;
				for (int j = 1; j <= sum2; j++) {
					while (k < 3 && j <= sum2 && p2[j] == i + 1) {
						k++;
						p2qipai(j);
					}
				}
				paizu = 6;
				fujia = 0;
				jishu = i;
				return;
			}
		}
		int sum = 0, total = 0, z = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 2) {
				if (!total)
					z = i;
				total++;
			} else if (tot[i] == 3) {
				sum++;
				total++;
			} else {
				if (z / 2 > sum && total >= 3) {
					for (int j = z; j <= z + total - 1; j++) {
						printf("%c%c", yingshei_c[j], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum2; o++) {
							while (k < 2 && o <= sum2 && p2[o] == j) {
								k++;
								p2qipai(o);
							}
						}
					}
					printf("\n");
					paizu = 2;
					fujia = total;
					jishu = z;
					return;
				} else {
					total = 0;
					sum = 0;
				}
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 3) {
				for (int j = 1; j <= 15; j++) {
					if (tot[j] == 1) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum2; o++) {
							while (k < 3 && o <= sum2 && p2[o] == i) {
								k++;
								p2qipai(o);
							}
						}
						for (int o = 1; o <= sum2; o++) {
							if (p2[o] == j) {
								p2qipai(o);
								break;
							}
						}
						paizu = 3;
						jishu = i;
						fujia = 1;
						return;
					} else if (tot[j] == 2) {
						printf("%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum2; o++) {
							while (k < 3 && o < sum2 && p2[o] == i) {
								k++;
								p2qipai(o);
							}
						}
						k = 0;
						for (int o = 1; o <= sum2; o++) {
							while (k < 2 && o <= sum2 && p2[o] == j) {
								k++;
								p2qipai(o);
							}
						}
						paizu = 3;
						jishu = i;
						fujia = 2;
						return;
					}
				}
			}
		}
		total = 0, z = 0;
		for (int i = 1; i <= 13; i++) {
			if (tot[i] == 1 || tot[i] == 2) {
				if (!total)
					z = i;
				total++;
			} else {
				if (total >= 5) {
					for (int j = z; j <= z + total - 1; j++) {
						printf("%c", yingshei_c[j]);
						for (int o = 1; o <= sum2; o++) {
							if (p2[o] == j) {
								p2qipai(o);
								break;
							}
						}
					}
					printf("\n");
					paizu = 1;
					fujia = total;
					jishu = z;
					return;
				} else {
					total = 0;
				}
			}
		}
		if (((dizhu == 1 || dizhu == 2) && (sum1 == 3 || sum1 == 1)) || (dizhu == 3 && sum1 == 2)) {
			for (int i = 1; i <= sum2; i++) {
				if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 2 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
			for (int i = 1; i <= sum2; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		} else if (((dizhu == 1 || dizhu == 2) && sum1 == 2) || (dizhu == 3 && (sum1 == 3 || sum1 == 1))) {
			for (int i = 1; i <= sum2; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				}
			}
			for (int i = 1; i <= sum2; i++) {
				if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 2 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i]) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				} else if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 2 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(k);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		for (int i = 1; i <= sum2; i++) {
			if (tot[i] == 3 && sum2 == 3) {
				if (((dizhu == 1 || dizhu == 2) && sum1 % 2 == 0)) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				} else {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 2 && j <= sum2 && p2[j] == i) {
							p2qipai(j);
							k++;
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		cout << "BBQ2" << endl;
		for (int i = 1; i <= sum2; i++)
			printf("%c ", yingshei_c[p2[i]]);
		printf("\n");
		return;
	} else if (paizu == 1) {		//出单张或顺子
		if (fujia == 1) {		//单张
			for (int i = jishu + 1; i <= 15; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
					jishu = i;
					huihe = 2;
					return;
				}
			}
			if ((dizhu == 1 || dizhu == 2) && sum1 >= 5 && huihe == 1) {
				printf("不出\n");
				return;
			} else if (sum1 > 2 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 2) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							if (p2[j] == i) {
								p2qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 3) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							if (p2[j] == i) {
								p2qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				for (int i = 1; i <= 15; i++) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							while (p2[j] == i && j <= sum2) {
								p2qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 2;
						return;
					}
				}
			} else if ((dizhu == 1 || dizhu == 2) && huihe == 1) {
				for (int i = 15; i > jishu; i--) {
					if (tot[i] == 2) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							if (p2[j] == i) {
								p2qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				for (int i = 15; i > jishu; i--) {
					if (tot[i] == 3) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							if (p2[j] == i) {
								p2qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				for (int i = 15; i >= 1; i--) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							while (p2[j] == i && j <= sum2) {
								p2qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 2;
						return;
					}
				}
			} else {
				printf("不出\n");
				return;
			}
		} else {				//顺子
			int total = 0, z = 0;
			for (int i = jishu + 1; i < 13; i++) {
				if (tot[i] && tot[i] != 4) {
					if (!total)
						z = i;
					total++;
					if (total >= fujia)
						break;
				} else {
					total = 0;
				}
			}
			if (total >= fujia) {
				for (int i = z; i <= z + fujia - 1; i++) {
					printf("%c", yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						if (p2[j] == i) {
							p2qipai(j);
							break;
						}
					}
				}
				printf("\n");
				jishu = z;
				huihe = 2;
				return;
			} else if (sum1 <= 4) {
				for (int i = 1; i <= 15; i++) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							while (p2[j] == i && j <= sum2) {
								p2qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 2;
						return;
					}
				}
				if (tot[14] && tot[15]) {
					printf("XD\n");
					sum2 -= 2;
					paizu = 5;
					huihe = 2;
					return;
				}
			}
		}
		printf("不出\n");
		return;
	} else if (paizu == 2) {		//出对或连对
		if (fujia == 1) {		//对
			if (sum1 <= 5 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
				for (int i = 15; i > jishu; i--) {
					if (tot[i] >= 2) {
						int k = 0;
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum2; j++) {
							while (k < 2 && j <= sum2 && p2[j] == i) {
								p2qipai(j);
								k++;
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				if (sum1 <= 2 && (dizhu == 1 || dizhu == 2) && huihe == 1)
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum2; j++) {
								while (j <= sum2 && p2[j] == i) {
									p2qipai(j);
								}
							}
							paizu = 4;
							jishu = i;
							huihe = 2;
							return;
						}
					}
				printf("不出\n");
				return;
			} else {
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 2) {
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						int k = 0;
						for (int j = 1; j <= sum2; j++) {
							while (j <= sum2 && k < 2 && p2[j] == i) {
								k++;
								p2qipai(j);
							}
						}
						jishu = i;
						huihe = 2;
						return;
					}
				}
				printf("不出\n");
				return;
			}
		} else {				//连对
			int total = 0, z = 0;
			for (int i = jishu + 1; i < 13; i++) {
				if (tot[i] >= 2 && tot[i] <= 3) {
					if (!total)
						z = i;
					total++;
					if (total >= fujia)
						break;
				} else {
					total = 0;
				}
			}
			if (total >= fujia) {
				for (int i = z; i <= z + fujia - 1; i++) {
					printf("%c%c", yingshei_c[i], yingshei_c[i]);
				}
				printf("\n");
				for (int i = z; i <= z + fujia - 1; i++) {
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 2 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
				}
				jishu = z;
				huihe = 2;
				return;
			} else {
				if (sum1 <= 5 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum2; j++) {
								while (j <= sum2 && p2[j] == i) {
									p2qipai(j);
								}
							}
							paizu = 4;
							huihe = 2;
							jishu = i;
							return;
						}
					}
					if (tot[14] && tot[15]) {
						sum2 -= 2;
						printf("XD\n");
						paizu = 5;
						huihe = 2;
						return;
					}
					printf("不出\n");
					return;
				} else {
					printf("不出\n");
					return;
				}
			}
		}
	} else if (paizu == 3) {					//三带
		for (int i = jishu + 1; i <= 15; i++) {
			if (tot[i] == 3) {
				if (fujia == 1) {			//带一
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 1) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j]);
							int k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 1 && o <= sum2 && p2[o] == j) {
									k++;
									p2qipai(o);
								}
							}
							jishu = i;
							huihe = 2;
							return;
						}
					}
					break;
				} else {					//带二
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 2) {
							printf("%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j], yingshei_c[j]);
							int k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 2 && o <= sum2 && p2[o] == j) {
									k++;
									p2qipai(o);
								}
							}
							jishu = i;
							huihe = 2;
							return;
						}
					}
					break;
				}
				if (sum1 <= 6 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum2; j++) {
								while (j <= sum2 && p2[j] == i)
									p2qipai(j);
							}
							paizu = 4;
							jishu = i;
							huihe = 2;
							return;
						}
					}
					if (tot[14] && tot[15]) {
						printf("XD\n");
						sum2 -= 2;
						paizu = 5;
						huihe = 2;
						return;
					}
				}
				printf("不出\n");
				return;
			}
		}
		printf("不出\n");
		return;
	} else if (paizu == 4) {			//炸
		if (sum1 < 9) {
			for (int i = jishu + 1; i <= 15; i++) {
				if (tot[i] == 4) {
					printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
					for (int j = 1; j <= sum2; j++) {
						while (p2[j] == i && j <= sum2) {
							p2qipai(j);
						}
					}
					jishu = i;
					huihe = 2;
					return;
				}
			}
			if (tot[14] && tot[15]) {
				printf("XD\n");
				paizu = 5;
				huihe = 2;
				sum2 -= 2;
				return;
			}
			printf("不出\n");
			return;
		} else {
			printf("不出\n");
			return;
		}
	} else if (paizu == 5) {			//双王
		printf("不出\n");
		return;
	} else {						//飞机
		for (int i = jishu + 1; i < 15; i++) {
			if (tot[i] >= 3 && tot[i + 1] >= 3 && (tot[i] != 4 || tot[i + 1] != 4)) {
				if (fujia == 1) {
					int kkk1 = 0, kkk2 = 0;
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 1) {
							if (!kkk1) {
								kkk1 = j;
							} else {
								kkk2 = j;
							}
						} else if (tot[j] == 2) {
							kkk1 = kkk2 = j;
						}
						if (kkk1 && kkk2) {
							printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
							printf("%c%c\n", yingshei_c[kkk1], yingshei_c[kkk2]);
							int k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i + 1) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 1 && o <= sum2 && p2[o] == kkk1) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 1 && o <= sum2 && p2[o] == kkk2) {
									k++;
									p2qipai(o);
								}
							}
							jishu = i;
							huihe = 2;
							return;
						}
					}
					if (sum1 <= 6 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
						for (int i = 1; i <= 15; i++) {
							if (tot[i] == 4) {
								printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
								for (int j = 1; j <= sum2; j++) {
									while (j < sum2 && p2[j] == i)
										p2qipai(j);
								}
								paizu = 4;
								jishu = i;
								huihe = 2;
								return;
							}
						}
						if (tot[14] && tot[15]) {
							printf("XD\n");
							paizu = 5;
							huihe = 2;
							sum2 -= 2;
							return;
						}
						printf("不出\n");
						return;
					}
					printf("不出\n");
					return;
				} else if (fujia == 2) {
					int kkk1 = 0, kkk2 = 0;
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 2) {
							if (!kkk1) {
								kkk1 = j;
							} else {
								kkk2 = j;
							}
						}
						if (kkk1 && kkk2) {
							printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
							printf("%c%c%c%c\n", yingshei_c[kkk1], yingshei_c[kkk1], yingshei_c[kkk2], yingshei_c[kkk2]);
							int k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 3 && o <= sum2 && p2[o] == i + 1) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 2 && o <= sum2 && p2[o] == kkk1) {
									k++;
									p2qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum2; o++) {
								while (k < 2 && o <= sum2 && p2[o] == kkk2) {
									k++;
									p2qipai(o);
								}
							}
							jishu = i;
							huihe = 2;
							return;
						}
					}
					if (sum1 <= 6 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
						for (int i = 1; i <= 15; i++) {
							if (tot[i] == 4) {
								printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
								for (int j = 1; j <= sum2; j++) {
									while (j < sum2 && p2[j] == i)
										p2qipai(j);
								}
								paizu = 4;
								jishu = i;
								huihe = 2;
								return;
							}
						}
						if (tot[14] && tot[15]) {
							printf("XD\n");
							paizu = 5;
							sum2 -= 2;
							huihe = 2;
							return;
						}
						printf("不出\n");
						return;
					}
					printf("不出\n");
					return;
				} else {
					printf("%c%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					int k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i) {
							k++;
							p2qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum2; j++) {
						while (k < 3 && j <= sum2 && p2[j] == i + 1) {
							k++;
							p2qipai(j);
						}
					}
					jishu = i;
					huihe = 2;
					return;
				}
				break;
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 4) {
				printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
				for (int j = 1; j <= sum2; j++) {
					while (j <= sum2 && p2[j] == i)
						p2qipai(j);
				}
				paizu = 4;
				huihe = 2;
				jishu = i;
				return;
			}
		}
		if (sum1 <= 6 && (dizhu == 1 || dizhu == 2) && huihe == 1) {
			if (tot[14] && tot[15]) {
				printf("XD\n");
				sum2 -= 2;
				paizu = 5;
				huihe = 2;
				return;
			}
		}
	}
	printf("不出\n");
	return;
}
void p3chupai() {
	printf("     p3:");
	int tot[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	for (int i = 1; i <= sum3; i++) {
		tot[p3[i]]++;
	}
	if (paizu == 0) {			//自由出牌
		if (sum3 == 2 && tot[14] && tot[15]) {
			printf("XD\n");
			sum3 = 0;
			return;
		}
		if (sum3 == 4) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						sum3 = 0;
						return;
					}
					break;
				}
			}
		}
		if (sum3 == 2) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					if (tot[i] == 2) {
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						sum3 = 0;
						return;
					}
					break;
				}
			}
		}
		if (sum3 == 1) {
			for (int i = 1; i <= 15; i++) {
				if (tot[i]) {
					printf("%c\n", yingshei_c[i]);
					sum3 = 0;
					return;
				}
			}
		}
		for (int i = 1; i < 15; i++) {
			if (tot[i] >= 3 && tot[i + 1] >= 3 && (tot[i] != 4 || tot[i + 1] != 4)) {
				int kkk1 = 0, kkk2 = 0, z = 0;
				for (int j = 1; j <= 13; j++) {
					if (tot[i] == 1 || tot[i] == 2) {
						if (tot[i] == z || !z) {
							if (!kkk1) {
								kkk1 = i;
							} else {
								kkk2 = i;
								break;
							}
							z = tot[i];
						}
					}
				}
				if (kkk1 && kkk2) {
					printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					for (int j = 1; j <= z; j++) {
						printf("%c", yingshei_c[kkk1]);
					}
					for (int j = 1; j <= z; j++) {
						printf("%c", yingshei_c[kkk2]);
					}
					printf("\n");
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i + 1) {
							k++;
							p3qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < z && j <= sum3 && p3[j] == kkk1) {
							k++;
							p3qipai(j);
						}
					}
					paizu = 6;
					fujia = z;
					jishu = i;
					return;
				}
				kkk1 = 0, kkk2 = 0;
				for (int j = 1; j < 15; j++) {
					if (tot[j] <= 2) {
						if (!kkk1) {
							kkk1 = j;
						} else {
							kkk2 = j;
							break;
						}
					}
				}
				if (kkk1 && kkk2) {
					printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					printf("%c%c\n", yingshei_c[kkk1], yingshei_c[kkk2]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i + 1) {
							k++;
							p3qipai(j);
						}
					}
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == kkk1) {
							p3qipai(j);
							break;
						}
					}
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == kkk2) {
							p3qipai(j);
							break;
						}
					}
					paizu = 6;
					jishu = i;
					fujia = 1;
					return;
				}
				printf("%c%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
				int k = 0;
				for (int j = 1; j <= sum3; j++) {
					while (k < 3 && j <= sum3 && p3[j] == i) {
						k++;
						p3qipai(j);
					}
				}
				k = 0;
				for (int j = 1; j <= sum3; j++) {
					while (k < 3 && j <= sum3 && p3[j] == i + 1) {
						k++;
						p3qipai(j);
					}
				}
				paizu = 6;
				fujia = 0;
				jishu = i;
				return;
			}
		}
		int sum = 0, total = 0, z = 0;
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 2) {
				if (!total)
					z = i;
				total++;
			} else if (tot[i] == 3) {
				sum++;
				total++;
			} else {
				if (z / 2 > sum && total >= 3) {
					for (int j = z; j <= z + total - 1; j++) {
						printf("%c%c", yingshei_c[j], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum3; o++) {
							while (k < 2 && o <= sum3 && p3[o] == j) {
								k++;
								p3qipai(o);
							}
						}
					}
					printf("\n");
					paizu = 2;
					fujia = total;
					jishu = z;
					return;
				} else {
					total = 0;
					sum = 0;
				}
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 3) {
				for (int j = 1; j <= 15; j++) {
					if (tot[j] == 1) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum3; o++) {
							while (k < 3 && o <= sum3 && p3[o] == i) {
								k++;
								p3qipai(o);
							}
						}
						for (int o = 1; o <= sum3; o++) {
							if (p3[o] == j) {
								p3qipai(o);
								break;
							}
						}
						paizu = 3;
						jishu = i;
						fujia = 1;
						return;
					} else if (tot[j] == 2) {
						printf("%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j], yingshei_c[j]);
						int k = 0;
						for (int o = 1; o <= sum3; o++) {
							while (k < 3 && o < sum3 && p3[o] == i) {
								k++;
								p3qipai(o);
							}
						}
						k = 0;
						for (int o = 1; o <= sum3; o++) {
							while (k < 2 && o <= sum3 && p3[o] == j) {
								k++;
								p3qipai(o);
							}
						}
						paizu = 3;
						jishu = i;
						fujia = 2;
						return;
					}
				}
			}
		}
		total = 0, z = 0;
		for (int i = 1; i <= 13; i++) {
			if (tot[i] == 1 || tot[i] == 2) {
				if (!total)
					z = i;
				total++;
			} else {
				if (total >= 5) {
					for (int j = z; j <= z + total - 1; j++) {
						printf("%c", yingshei_c[j]);
						for (int o = 1; o <= sum3; o++) {
							if (p3[o] == j) {
								p3qipai(o);
								break;
							}
						}
					}
					printf("\n");
					paizu = 1;
					fujia = total;
					jishu = z;
					return;
				} else {
					total = 0;
				}
			}
		}
		if (((dizhu == 1 || dizhu == 3) && (sum1 == 3 || sum1 == 1)) || (dizhu == 3 && sum1 == 2)) {
			for (int i = 1; i <= sum3; i++) {
				if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 2 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
			for (int i = 1; i <= sum3; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		} else if (((dizhu == 1 || dizhu == 3) && sum1 == 2) || (dizhu == 3 && (sum1 == 3 || sum1 == 1))) {
			for (int i = 1; i <= sum3; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				}
			}
			for (int i = 1; i <= sum3; i++) {
				if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 2 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i]) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				} else if (tot[i] == 2) {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 2 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(k);
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 3 && sum3 == 3) {
				if (((dizhu == 1 || dizhu == 2) && sum1 % 2 == 0)) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
					paizu = 1;
					fujia = 1;
					jishu = i;
					return;
				} else {
					printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 2 && j <= sum3 && p3[j] == i) {
							p3qipai(j);
							k++;
						}
					}
					paizu = 2;
					fujia = 1;
					jishu = i;
					return;
				}
			}
		}
		cout << "BBQ3" << endl;
		for (int i = 1; i <= sum3; i++)
			printf("%c ", yingshei_c[p3[i]]);
		printf("\n");
		return;
	} else if (paizu == 1) {		//出单张或顺子
		if (fujia == 1) {		//单张
			for (int i = jishu + 1; i <= 15; i++) {
				if (tot[i] == 1) {
					printf("%c\n", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
					jishu = i;
					huihe = 3;
					return;
				}
			}
			if ((dizhu == 1 || dizhu == 3) && sum1 >= 5 && huihe == 1) {
				printf("不出\n");
				return;
			} else if (sum1 > 2 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 2) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							if (p3[j] == i) {
								p3qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 3) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							if (p3[j] == i) {
								p3qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				for (int i = 1; i <= 15; i++) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							while (p3[j] == i && j <= sum3) {
								p3qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 3;
						return;
					}
				}
			} else if ((dizhu == 1 || dizhu == 3) && huihe == 1) {
				for (int i = 15; i > jishu; i--) {
					if (tot[i] == 2) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							if (p3[j] == i) {
								p3qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				for (int i = 15; i > jishu; i--) {
					if (tot[i] == 3) {
						printf("%c\n", yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							if (p3[j] == i) {
								p3qipai(j);
								break;
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				for (int i = 15; i >= 1; i--) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							while (p3[j] == i && j <= sum3) {
								p3qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 3;
						return;
					}
				}
			} else {
				printf("不出\n");
				return;
			}
		} else {				//顺子
			int total = 0, z = 0;
			for (int i = jishu + 1; i < 13; i++) {
				if (tot[i] && tot[i] != 4) {
					if (!total)
						z = i;
					total++;
					if (total >= fujia)
						break;
				} else {
					total = 0;
				}
			}
			if (total >= fujia) {
				for (int i = z; i <= z + fujia - 1; i++) {
					printf("%c", yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						if (p3[j] == i) {
							p3qipai(j);
							break;
						}
					}
				}
				printf("\n");
				jishu = z;
				huihe = 3;
				return;
			} else if (sum1 <= 4) {
				for (int i = 1; i <= 15; i++) {
					if (tot[i] == 4) {
						printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							while (p3[j] == i && j <= sum3) {
								p3qipai(j);
							}
						}
						paizu = 4;
						jishu = i;
						huihe = 3;
						return;
					}
				}
				if (tot[14] && tot[15]) {
					printf("XD\n");
					sum3 -= 2;
					paizu = 5;
					huihe = 3;
					return;
				}
			}
		}
		printf("不出\n");
		return;
	} else if (paizu == 2) {		//出对或连对
		if (fujia == 1) {		//对
			if (sum1 <= 5 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
				for (int i = 15; i > jishu; i--) {
					if (tot[i] >= 2) {
						int k = 0;
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						for (int j = 1; j <= sum3; j++) {
							while (k < 2 && j <= sum3 && p3[j] == i) {
								p3qipai(j);
								k++;
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				if (sum1 <= 2 && (dizhu == 1 || dizhu == 3) && huihe == 1)
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum3; j++) {
								while (j <= sum3 && p3[j] == i) {
									p3qipai(j);
								}
							}
							paizu = 4;
							jishu = i;
							huihe = 3;
							return;
						}
					}
				printf("不出\n");
				return;
			} else {
				for (int i = jishu + 1; i <= 15; i++) {
					if (tot[i] == 2) {
						printf("%c%c\n", yingshei_c[i], yingshei_c[i]);
						int k = 0;
						for (int j = 1; j <= sum3; j++) {
							while (j <= sum3 && k < 2 && p3[j] == i) {
								k++;
								p3qipai(j);
							}
						}
						jishu = i;
						huihe = 3;
						return;
					}
				}
				printf("不出\n");
				return;
			}
		} else {				//连对
			int total = 0, z = 0;
			for (int i = jishu + 1; i < 13; i++) {
				if (tot[i] >= 2 && tot[i] <= 3) {
					if (!total)
						z = i;
					total++;
					if (total >= fujia)
						break;
				} else {
					total = 0;
				}
			}
			if (total >= fujia) {
				for (int i = z; i <= z + fujia - 1; i++) {
					printf("%c%c", yingshei_c[i], yingshei_c[i]);
				}
				printf("\n");
				for (int i = z; i <= z + fujia - 1; i++) {
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 2 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
				}
				jishu = z;
				huihe = 3;
				return;
			} else {
				if (sum1 <= 5 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum3; j++) {
								while (j <= sum3 && p3[j] == i) {
									p3qipai(j);
								}
							}
							paizu = 4;
							huihe = 3;
							jishu = i;
							return;
						}
					}
					if (tot[14] && tot[15]) {
						sum3 -= 2;
						printf("XD\n");
						paizu = 5;
						huihe = 3;
						return;
					}
					printf("不出\n");
					return;
				} else {
					printf("不出\n");
					return;
				}
			}
		}
	} else if (paizu == 3) {					//三带
		for (int i = jishu + 1; i <= 15; i++) {
			if (tot[i] == 3) {
				if (fujia == 1) {			//带一
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 1) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j]);
							int k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 1 && o <= sum3 && p3[o] == j) {
									k++;
									p3qipai(o);
								}
							}
							jishu = i;
							huihe = 3;
							return;
						}
					}
					break;
				} else {					//带二
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 2) {
							printf("%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[j], yingshei_c[j]);
							int k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 2 && o <= sum3 && p3[o] == j) {
									k++;
									p3qipai(o);
								}
							}
							jishu = i;
							huihe = 3;
							return;
						}
					}
					break;
				}
				if (sum1 <= 6 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
					for (int i = 1; i <= 15; i++) {
						if (tot[i] == 4) {
							printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
							for (int j = 1; j <= sum3; j++) {
								while (j <= sum3 && p3[j] == i)
									p3qipai(j);
							}
							paizu = 4;
							jishu = i;
							huihe = 3;
							return;
						}
					}
					if (tot[14] && tot[15]) {
						printf("XD\n");
						paizu = 5;
						sum3 -= 2;
						huihe = 3;
						return;
					}
				}
				printf("不出\n");
				return;
			}
		}
		printf("不出\n");
		return;
	} else if (paizu == 4) {			//炸
		if (sum1 < 9) {
			for (int i = jishu + 1; i <= 15; i++) {
				if (tot[i] == 4) {
					printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
					for (int j = 1; j <= sum3; j++) {
						while (p3[j] == i && j <= sum3) {
							p3qipai(j);
						}
					}
					jishu = i;
					huihe = 3;
					return;
				}
			}
			if (tot[14] && tot[15]) {
				printf("XD\n");
				paizu = 5;
				huihe = 3;
				sum3 -= 2;
				return;
			}
			printf("不出\n");
			return;
		} else {
			printf("不出\n");
			return;
		}
	} else if (paizu == 5) {			//双王
		printf("不出\n");
		return;
	} else {						//飞机
		for (int i = jishu + 1; i < 15; i++) {
			if (tot[i] >= 3 && tot[i + 1] >= 3 && (tot[i] != 4 || tot[i + 1] != 4)) {
				if (fujia == 1) {
					int kkk1 = 0, kkk2 = 0;
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 1) {
							if (!kkk1) {
								kkk1 = j;
							} else {
								kkk2 = j;
							}
						} else if (tot[j] == 2) {
							kkk1 = kkk2 = j;
						}
						if (kkk1 && kkk2) {
							printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
							printf("%c%c\n", yingshei_c[kkk1], yingshei_c[kkk2]);
							int k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i + 1) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 1 && o <= sum3 && p3[o] == kkk1) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 1 && o <= sum3 && p3[o] == kkk2) {
									k++;
									p3qipai(o);
								}
							}
							jishu = i;
							huihe = 3;
							return;
						}
					}
					if (sum1 <= 6 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
						for (int i = 1; i <= 15; i++) {
							if (tot[i] == 4) {
								printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
								for (int j = 1; j <= sum3; j++) {
									while (j < sum3 && p3[j] == i)
										p3qipai(j);
								}
								paizu = 4;
								jishu = i;
								huihe = 3;
								return;
							}
						}
						if (tot[14] && tot[15]) {
							printf("XD\n");
							paizu = 5;
							sum3 -= 2;
							huihe = 3;
							return;
						}
						printf("不出\n");
						return;
					}
					printf("不出\n");
					return;
				} else if (fujia == 2) {
					int kkk1 = 0, kkk2 = 0;
					for (int j = 1; j <= 15; j++) {
						if (tot[j] == 2) {
							if (!kkk1) {
								kkk1 = j;
							} else {
								kkk2 = j;
							}
						}
						if (kkk1 && kkk2) {
							printf("%c%c%c%c%c%c", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
							printf("%c%c%c%c\n", yingshei_c[kkk1], yingshei_c[kkk1], yingshei_c[kkk2], yingshei_c[kkk2]);
							int k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 3 && o <= sum3 && p3[o] == i + 1) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 2 && o <= sum3 && p3[o] == kkk1) {
									k++;
									p3qipai(o);
								}
							}
							k = 0;
							for (int o = 1; o <= sum3; o++) {
								while (k < 2 && o <= sum3 && p3[o] == kkk2) {
									k++;
									p3qipai(o);
								}
							}
							jishu = i;
							huihe = 3;
							return;
						}
					}
					if (sum1 <= 6 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
						for (int i = 1; i <= 15; i++) {
							if (tot[i] == 4) {
								printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
								for (int j = 1; j <= sum3; j++) {
									while (j < sum3 && p3[j] == i)
										p3qipai(j);
								}
								paizu = 4;
								jishu = i;
								huihe = 3;
								return;
							}
						}
						if (tot[14] && tot[15]) {
							printf("XD\n");
							paizu = 5;
							huihe = 3;
							sum3 -= 2;
							return;
						}
						printf("不出\n");
						return;
					}
					printf("不出\n");
					return;
				} else {
					printf("%c%c%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i + 1], yingshei_c[i + 1], yingshei_c[i + 1]);
					int k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i) {
							k++;
							p3qipai(j);
						}
					}
					k = 0;
					for (int j = 1; j <= sum3; j++) {
						while (k < 3 && j <= sum3 && p3[j] == i + 1) {
							k++;
							p3qipai(j);
						}
					}
					jishu = i;
					huihe = 3;
					return;
				}
				break;
			}
		}
		for (int i = 1; i <= 15; i++) {
			if (tot[i] == 4) {
				printf("%c%c%c%c\n", yingshei_c[i], yingshei_c[i], yingshei_c[i], yingshei_c[i]);
				for (int j = 1; j <= sum3; j++) {
					while (j <= sum3 && p3[j] == i)
						p3qipai(j);
				}
				paizu = 4;
				huihe = 3;
				jishu = i;
				return;
			}
		}
		if (sum1 <= 6 && (dizhu == 1 || dizhu == 3) && huihe == 1) {
			if (tot[14] && tot[15]) {
				printf("XD\n");
				sum3 -= 2;
				paizu = 5;
				huihe = 3;
				return;
			}
		}
	}
	printf("不出\n");
	return;
}
void p1qipai(int k) {			//p1弃第k张牌
	for (int i = k + 1; i <= sum1; i++) {
		p1[i - 1] = p1[i];
	}
	sum1--;
	return;
}
void p2qipai(int k) {			//p2弃第k张牌
	for (int i = k + 1; i <= sum2; i++) {
		p2[i - 1] = p2[i];
	}
	sum2--;
	return;
}
void p3qipai(int k) {			//p3弃第k张牌
	for (int i = k + 1; i <= sum3; i++) {
		p3[i - 1] = p3[i];
	}
	sum3--;
	return;
}