扑克牌

· · 个人记录

#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("A(A)、T(10)、X(小王)、D(大王)\n");
    printf("跳过出牌请输入‘g’\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;
}