stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#define _USE_MATH_DEFINES



#include <iostream>

#include <math.h> 

#include <vector>

#include <algorithm>

#include <iomanip>      // std::setprecision

#include <map>

#include <unordered_map>

#include <string>

#include <set>

#include <unordered_set>

#include <sstream>



using namespace std;



int main()

{

	int N;

	std::set<int> nums;

	vector<vector<int>> card(3,std::vector<int>(3,0));

	for (int i = 0; i < 3; ++i)

	{

		for (int j = 0; j < 3; ++j)

		{

			int input;

			std::cin >> input;

			card[i][j] = input;

		}

	}



	std::cin >> N;

	for (int k = 0; k < N; ++k)

	{

		int num;

		std::cin >> num;

		nums.insert(num);

	}

	//check rows

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[i][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}

	//check columns

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][i]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}



		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

		counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][2-j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	std::cout << "No\n";



}


// Faster C++ solution for the same problem (measured speedup: 5.294735491591262x):
#include <stdio.h>

#include <string.h>

int main(){

	

	int arr[3][3]={0};

	for(int i=0;i<3;i++){

		for(int j=0;j<3;j++){

			scanf("%d", &arr[i][j]);

		}

	}

	int N;

	scanf("%d", &N);

	int numb[N]={0};

	

	for (int k=0;k<N;k++){

		scanf("%d", &numb[k]);

		for(int l=0;l<3;l++){

			for(int m=0;m<3;m++){

				if(numb[k] == arr[l][m]){

					arr[l][m] = 0;

				}

			}

		}

	}

	if(arr[0][0]==0 && arr[0][1]==0 && arr[0][2]==0){

		printf("Yes");

	} else if(arr[1][0]==0 && arr[1][1]==0 && arr[1][2]==0){

		printf("Yes");

	} else if(arr[2][0]==0 && arr[2][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][0]==0 && arr[2][0]==0){

		printf("Yes");

	} else if(arr[0][1]==0 && arr[1][1]==0 && arr[2][1]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][2]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][1]==0 && arr[2][0]==0){

		printf("Yes");

	} else {

		printf("No");	

	}

	

	return 0;

}
// Slower C++ solution:
#include<iostream>

#include<fstream>

#include<cstdio>

#include<algorithm>

#include<cstring>

#include<cmath>

#include<vector>

#include<map>

using namespace std;

typedef long long ll;

int main()

{

    int a[50][50],b[50],c[50][50]={0},d[50]={0};

    for(int i=0;i<3;i++)

    {

        for(int j=0;j<3;j++)

        cin>>a[i][j];

    }

    int n;

    cin>>n;

    for(int i=0;i<n;i++)

    cin>>b[i];

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<3;j++)

        {

            for(int k=0;k<3;k++)

            {

                if(b[i]==a[j][k])

                {

                    c[j][k]=1;

                }

            }

        }

    }

    int sum1=0,sum2=0,sum3=0,sum4=0;

    for(int i=0;i<3;i++)

    {

        sum1=0;

        for(int j=0;j<3;j++)

        {

            if(c[i][j]==1)

            {

                sum1++;

            }

            if(sum1==3)

            break;

        }

        if(sum1==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        sum2=0;

        for(int j=0;j<3;j++)

        {

            if(c[j][i]==1)

            {

                sum2++;

            }

            if(sum2==3)

            break;

        }

        if(sum2==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][i]==1)

        {

            sum3++;

        }

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][2-i]==1)

        {

            sum4++;

        }

    }

    if(sum1==3||sum2==3||sum3==3||sum4==3)

    cout<<"Yes";

    else 

    cout<<"No";

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.286653065439488x):
#include <stdio.h>

#include <string.h>

int main(){

	

	int arr[3][3]={0};

	for(int i=0;i<3;i++){

		for(int j=0;j<3;j++){

			scanf("%d", &arr[i][j]);

		}

	}

	int N;

	scanf("%d", &N);

	int numb[N]={0};

	

	for (int k=0;k<N;k++){

		scanf("%d", &numb[k]);

		for(int l=0;l<3;l++){

			for(int m=0;m<3;m++){

				if(numb[k] == arr[l][m]){

					arr[l][m] = 0;

				}

			}

		}

	}

	if(arr[0][0]==0 && arr[0][1]==0 && arr[0][2]==0){

		printf("Yes");

	} else if(arr[1][0]==0 && arr[1][1]==0 && arr[1][2]==0){

		printf("Yes");

	} else if(arr[2][0]==0 && arr[2][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][0]==0 && arr[2][0]==0){

		printf("Yes");

	} else if(arr[0][1]==0 && arr[1][1]==0 && arr[2][1]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][2]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][1]==0 && arr[2][0]==0){

		printf("Yes");

	} else {

		printf("No");	

	}

	

	return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;



int a[5][5];

bool vis[5][5];



int main()

{

	ios::sync_with_stdio(false),cin.tie(0);

	for(int i=1;i<=3;i++){

		for(int j=1;j<=3;j++){

			cin>>a[i][j];

		}

	}

	int n;cin>>n;

	int num;

	for(int i=1;i<=n;i++){

		cin>>num;

		for(int k=1;k<=3;k++){

			for(int j=1;j<=3;j++){

				if(num==a[k][j])vis[k][j]=1;

			}

		}

	}

	bool flag=0;

	for(int i=1;i<=3;i++){

		if(vis[i][1]+vis[i][2]+vis[i][3]==3){

			flag=true;break;

		}

	}

	for(int i=1;i<=3;i++){

		if(flag)break;

		if(vis[1][i]+vis[2][i]+vis[3][i]==3){

			flag=true;break;

		}

	}

	if(!flag&&(vis[1][1]+vis[2][2]+vis[3][3]==3||vis[3][1]+vis[2][2]+vis[1][3]==3))flag=true;

	if(flag)cout<<"Yes"<<endl;

	else cout<<"No"<<endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.317978283722377x):
#include <stdio.h>

#include <string.h>

int main(){

	

	int arr[3][3]={0};

	for(int i=0;i<3;i++){

		for(int j=0;j<3;j++){

			scanf("%d", &arr[i][j]);

		}

	}

	int N;

	scanf("%d", &N);

	int numb[N]={0};

	

	for (int k=0;k<N;k++){

		scanf("%d", &numb[k]);

		for(int l=0;l<3;l++){

			for(int m=0;m<3;m++){

				if(numb[k] == arr[l][m]){

					arr[l][m] = 0;

				}

			}

		}

	}

	if(arr[0][0]==0 && arr[0][1]==0 && arr[0][2]==0){

		printf("Yes");

	} else if(arr[1][0]==0 && arr[1][1]==0 && arr[1][2]==0){

		printf("Yes");

	} else if(arr[2][0]==0 && arr[2][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][0]==0 && arr[2][0]==0){

		printf("Yes");

	} else if(arr[0][1]==0 && arr[1][1]==0 && arr[2][1]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][2]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][0]==0 && arr[1][1]==0 && arr[2][2]==0){

		printf("Yes");

	} else if(arr[0][2]==0 && arr[1][1]==0 && arr[2][0]==0){

		printf("Yes");

	} else {

		printf("No");	

	}

	

	return 0;

}
// Slower C++ solution:
#define _USE_MATH_DEFINES



#include <iostream>

#include <math.h> 

#include <vector>

#include <algorithm>

#include <iomanip>      // std::setprecision

#include <map>

#include <unordered_map>

#include <string>

#include <set>

#include <unordered_set>

#include <sstream>



using namespace std;



int main()

{

	int N;

	std::set<int> nums;

	vector<vector<int>> card(3,std::vector<int>(3,0));

	for (int i = 0; i < 3; ++i)

	{

		for (int j = 0; j < 3; ++j)

		{

			int input;

			std::cin >> input;

			card[i][j] = input;

		}

	}



	std::cin >> N;

	for (int k = 0; k < N; ++k)

	{

		int num;

		std::cin >> num;

		nums.insert(num);

	}

	//check rows

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[i][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}

	//check columns

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][i]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}



		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

		counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][2-j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	std::cout << "No\n";



}


// Faster C++ solution for the same problem (measured speedup: 5.245222432677176x):
#include <stdio.h>



int main(){

    int matrix[3][3];

    char x;

    for(int i=0;i<3;i++){

        for(int j=0;j<3;j++){

            scanf("%d", &matrix[i][j]);

        }

    }

    int n;

    scanf("%d",&n);

    int input[n];

    for(int k=0;k<n;k++){

        scanf("%d", &input[k]);

        for(int i=0;i<3;i++){

            for(int j=0;j<3;j++){

                if(input[k] == matrix[i][j]){

                    matrix[i][j] = x;

                }

            }

        }

    }

    int ctr[8] = {0};

    int last=2;

    for(int i=0;i<3;i++){

        if(matrix[i][0]==x){

            ++ctr[0];

        }

        if(matrix[i][2]==x){

            ++ctr[1];

        }

        if(matrix[0][i]==x){

            ++ctr[2];

        }

        if(matrix[2][i]==x){

            ++ctr[3];

        }

        if(matrix[i][i]==x){

            ++ctr[4];

        } 

        if(matrix[i][last--]==x){

            ++ctr[5];

        }

        if(matrix[1][i]==x){

            ++ctr[6];

        }

        if(matrix[i][1]==x){

            ++ctr[7];

        }

    }

    int flag = 0;

    for(int i=0;i<8;i++){

        if(ctr[i]==3){

            flag = 1;

        }

    }

    printf("%s\n", (flag == 1) ? "Yes" : "No");



    return 0;

}
// Slower C++ solution:
#include<iostream>

#include<fstream>

#include<cstdio>

#include<algorithm>

#include<cstring>

#include<cmath>

#include<vector>

#include<map>

using namespace std;

typedef long long ll;

int main()

{

    int a[50][50],b[50],c[50][50]={0},d[50]={0};

    for(int i=0;i<3;i++)

    {

        for(int j=0;j<3;j++)

        cin>>a[i][j];

    }

    int n;

    cin>>n;

    for(int i=0;i<n;i++)

    cin>>b[i];

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<3;j++)

        {

            for(int k=0;k<3;k++)

            {

                if(b[i]==a[j][k])

                {

                    c[j][k]=1;

                }

            }

        }

    }

    int sum1=0,sum2=0,sum3=0,sum4=0;

    for(int i=0;i<3;i++)

    {

        sum1=0;

        for(int j=0;j<3;j++)

        {

            if(c[i][j]==1)

            {

                sum1++;

            }

            if(sum1==3)

            break;

        }

        if(sum1==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        sum2=0;

        for(int j=0;j<3;j++)

        {

            if(c[j][i]==1)

            {

                sum2++;

            }

            if(sum2==3)

            break;

        }

        if(sum2==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][i]==1)

        {

            sum3++;

        }

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][2-i]==1)

        {

            sum4++;

        }

    }

    if(sum1==3||sum2==3||sum3==3||sum4==3)

    cout<<"Yes";

    else 

    cout<<"No";

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.237215588326014x):
#include <stdio.h>



int main(){

    int matrix[3][3];

    char x;

    for(int i=0;i<3;i++){

        for(int j=0;j<3;j++){

            scanf("%d", &matrix[i][j]);

        }

    }

    int n;

    scanf("%d",&n);

    int input[n];

    for(int k=0;k<n;k++){

        scanf("%d", &input[k]);

        for(int i=0;i<3;i++){

            for(int j=0;j<3;j++){

                if(input[k] == matrix[i][j]){

                    matrix[i][j] = x;

                }

            }

        }

    }

    int ctr[8] = {0};

    int last=2;

    for(int i=0;i<3;i++){

        if(matrix[i][0]==x){

            ++ctr[0];

        }

        if(matrix[i][2]==x){

            ++ctr[1];

        }

        if(matrix[0][i]==x){

            ++ctr[2];

        }

        if(matrix[2][i]==x){

            ++ctr[3];

        }

        if(matrix[i][i]==x){

            ++ctr[4];

        } 

        if(matrix[i][last--]==x){

            ++ctr[5];

        }

        if(matrix[1][i]==x){

            ++ctr[6];

        }

        if(matrix[i][1]==x){

            ++ctr[7];

        }

    }

    int flag = 0;

    for(int i=0;i<8;i++){

        if(ctr[i]==3){

            flag = 1;

        }

    }

    printf("%s\n", (flag == 1) ? "Yes" : "No");



    return 0;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;



int a[5][5];

bool vis[5][5];



int main()

{

	ios::sync_with_stdio(false),cin.tie(0);

	for(int i=1;i<=3;i++){

		for(int j=1;j<=3;j++){

			cin>>a[i][j];

		}

	}

	int n;cin>>n;

	int num;

	for(int i=1;i<=n;i++){

		cin>>num;

		for(int k=1;k<=3;k++){

			for(int j=1;j<=3;j++){

				if(num==a[k][j])vis[k][j]=1;

			}

		}

	}

	bool flag=0;

	for(int i=1;i<=3;i++){

		if(vis[i][1]+vis[i][2]+vis[i][3]==3){

			flag=true;break;

		}

	}

	for(int i=1;i<=3;i++){

		if(flag)break;

		if(vis[1][i]+vis[2][i]+vis[3][i]==3){

			flag=true;break;

		}

	}

	if(!flag&&(vis[1][1]+vis[2][2]+vis[3][3]==3||vis[3][1]+vis[2][2]+vis[1][3]==3))flag=true;

	if(flag)cout<<"Yes"<<endl;

	else cout<<"No"<<endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.268247872735096x):
#include <stdio.h>



int main(){

    int matrix[3][3];

    char x;

    for(int i=0;i<3;i++){

        for(int j=0;j<3;j++){

            scanf("%d", &matrix[i][j]);

        }

    }

    int n;

    scanf("%d",&n);

    int input[n];

    for(int k=0;k<n;k++){

        scanf("%d", &input[k]);

        for(int i=0;i<3;i++){

            for(int j=0;j<3;j++){

                if(input[k] == matrix[i][j]){

                    matrix[i][j] = x;

                }

            }

        }

    }

    int ctr[8] = {0};

    int last=2;

    for(int i=0;i<3;i++){

        if(matrix[i][0]==x){

            ++ctr[0];

        }

        if(matrix[i][2]==x){

            ++ctr[1];

        }

        if(matrix[0][i]==x){

            ++ctr[2];

        }

        if(matrix[2][i]==x){

            ++ctr[3];

        }

        if(matrix[i][i]==x){

            ++ctr[4];

        } 

        if(matrix[i][last--]==x){

            ++ctr[5];

        }

        if(matrix[1][i]==x){

            ++ctr[6];

        }

        if(matrix[i][1]==x){

            ++ctr[7];

        }

    }

    int flag = 0;

    for(int i=0;i<8;i++){

        if(ctr[i]==3){

            flag = 1;

        }

    }

    printf("%s\n", (flag == 1) ? "Yes" : "No");



    return 0;

}
// Slower C++ solution:
#include<iostream>

#include<fstream>

#include<cstdio>

#include<algorithm>

#include<cstring>

#include<cmath>

#include<vector>

#include<map>

using namespace std;

typedef long long ll;

int main()

{

    int a[50][50],b[50],c[50][50]={0},d[50]={0};

    for(int i=0;i<3;i++)

    {

        for(int j=0;j<3;j++)

        cin>>a[i][j];

    }

    int n;

    cin>>n;

    for(int i=0;i<n;i++)

    cin>>b[i];

    for(int i=0;i<n;i++)

    {

        for(int j=0;j<3;j++)

        {

            for(int k=0;k<3;k++)

            {

                if(b[i]==a[j][k])

                {

                    c[j][k]=1;

                }

            }

        }

    }

    int sum1=0,sum2=0,sum3=0,sum4=0;

    for(int i=0;i<3;i++)

    {

        sum1=0;

        for(int j=0;j<3;j++)

        {

            if(c[i][j]==1)

            {

                sum1++;

            }

            if(sum1==3)

            break;

        }

        if(sum1==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        sum2=0;

        for(int j=0;j<3;j++)

        {

            if(c[j][i]==1)

            {

                sum2++;

            }

            if(sum2==3)

            break;

        }

        if(sum2==3)

        break;

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][i]==1)

        {

            sum3++;

        }

    }

    for(int i=0;i<3;i++)

    {

        if(c[i][2-i]==1)

        {

            sum4++;

        }

    }

    if(sum1==3||sum2==3||sum3==3||sum4==3)

    cout<<"Yes";

    else 

    cout<<"No";

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.297031435196735x):
#include <stdio.h>



int main() {

    int bingos[3][3] = {0};

    bool bingos_mark[3][3] = {false};

    int ninp;

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 3; j++) {

            scanf("%d", &bingos[i][j]);

        }

    }

    scanf("%d", &ninp);

    for (int i = 0; i < ninp; i++) {

        int te;

        scanf("%d", &te);

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 3; j++) {

                if (te == bingos[i][j]) {

                    bingos_mark[i][j] = true;

                }

            }

        }

    }



    if (bingos_mark[0][0] && bingos_mark[1][1] && bingos_mark[2][2]) {

        printf("Yes");

    } else if (bingos_mark[0][2] && bingos_mark[1][1] && bingos_mark[2][0]) {

        printf("Yes");

    } else if (bingos_mark[0][0] && bingos_mark[0][1] && bingos_mark[0][2]) {

        printf("Yes");

    } else if (bingos_mark[1][0] && bingos_mark[1][1] && bingos_mark[1][2]) {

        printf("Yes");

    } else if (bingos_mark[2][0] && bingos_mark[2][1] && bingos_mark[2][2]) {

        printf("Yes");

    } else if (bingos_mark[0][0] && bingos_mark[1][0] && bingos_mark[2][0]) {

        printf("Yes");

    } else if (bingos_mark[0][1] && bingos_mark[1][1] && bingos_mark[2][1]) {

        printf("Yes");

    } else if (bingos_mark[0][2] && bingos_mark[1][2] && bingos_mark[2][2]) {

        printf("Yes");

    } else {

        printf("No");

    }

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;



int a[5][5];

bool vis[5][5];



int main()

{

	ios::sync_with_stdio(false),cin.tie(0);

	for(int i=1;i<=3;i++){

		for(int j=1;j<=3;j++){

			cin>>a[i][j];

		}

	}

	int n;cin>>n;

	int num;

	for(int i=1;i<=n;i++){

		cin>>num;

		for(int k=1;k<=3;k++){

			for(int j=1;j<=3;j++){

				if(num==a[k][j])vis[k][j]=1;

			}

		}

	}

	bool flag=0;

	for(int i=1;i<=3;i++){

		if(vis[i][1]+vis[i][2]+vis[i][3]==3){

			flag=true;break;

		}

	}

	for(int i=1;i<=3;i++){

		if(flag)break;

		if(vis[1][i]+vis[2][i]+vis[3][i]==3){

			flag=true;break;

		}

	}

	if(!flag&&(vis[1][1]+vis[2][2]+vis[3][3]==3||vis[3][1]+vis[2][2]+vis[1][3]==3))flag=true;

	if(flag)cout<<"Yes"<<endl;

	else cout<<"No"<<endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.328418148851847x):
#include <stdio.h>



int main() {

    int bingos[3][3] = {0};

    bool bingos_mark[3][3] = {false};

    int ninp;

    for (int i = 0; i < 3; i++) {

        for (int j = 0; j < 3; j++) {

            scanf("%d", &bingos[i][j]);

        }

    }

    scanf("%d", &ninp);

    for (int i = 0; i < ninp; i++) {

        int te;

        scanf("%d", &te);

        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 3; j++) {

                if (te == bingos[i][j]) {

                    bingos_mark[i][j] = true;

                }

            }

        }

    }



    if (bingos_mark[0][0] && bingos_mark[1][1] && bingos_mark[2][2]) {

        printf("Yes");

    } else if (bingos_mark[0][2] && bingos_mark[1][1] && bingos_mark[2][0]) {

        printf("Yes");

    } else if (bingos_mark[0][0] && bingos_mark[0][1] && bingos_mark[0][2]) {

        printf("Yes");

    } else if (bingos_mark[1][0] && bingos_mark[1][1] && bingos_mark[1][2]) {

        printf("Yes");

    } else if (bingos_mark[2][0] && bingos_mark[2][1] && bingos_mark[2][2]) {

        printf("Yes");

    } else if (bingos_mark[0][0] && bingos_mark[1][0] && bingos_mark[2][0]) {

        printf("Yes");

    } else if (bingos_mark[0][1] && bingos_mark[1][1] && bingos_mark[2][1]) {

        printf("Yes");

    } else if (bingos_mark[0][2] && bingos_mark[1][2] && bingos_mark[2][2]) {

        printf("Yes");

    } else {

        printf("No");

    }

}
// Slower C++ solution:
#define _USE_MATH_DEFINES



#include <iostream>

#include <math.h> 

#include <vector>

#include <algorithm>

#include <iomanip>      // std::setprecision

#include <map>

#include <unordered_map>

#include <string>

#include <set>

#include <unordered_set>

#include <sstream>



using namespace std;



int main()

{

	int N;

	std::set<int> nums;

	vector<vector<int>> card(3,std::vector<int>(3,0));

	for (int i = 0; i < 3; ++i)

	{

		for (int j = 0; j < 3; ++j)

		{

			int input;

			std::cin >> input;

			card[i][j] = input;

		}

	}



	std::cin >> N;

	for (int k = 0; k < N; ++k)

	{

		int num;

		std::cin >> num;

		nums.insert(num);

	}

	//check rows

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[i][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}

	//check columns

	for (int i = 0; i < 3; ++i)

	{

		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][i]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	}



		int counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

		counter = 0;

		for (int j = 0; j < 3; ++j)

		{

			if (nums.find(card[j][2-j]) != nums.end())

			{

				counter++;

			}

			else

			{

				break;

			}

		}

		if (counter == 3)

		{

			std::cout << "Yes\n";

			return 0;

		}

	std::cout << "No\n";



}


// Faster C++ solution for the same problem (measured speedup: 5.308987515793722x):
#include<stdio.h>

int main(){

    int N, G[10];

    int a[3][3], ck[3][3];

 

    for(int i = 0 ; i < 3 ; i++ ) {

        scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

    }



    scanf("%d",&N);



    for(int j = 0 ; j < N ; j++ ){

        scanf("%d",&G[j]);

 

        for(int  x = 0 ; x < 3 ; x++ ) {

            for(int z = 0 ; z < 3 ; z++ ){

                if( G[j] == a[x][z] ) {

                    ck[x][z] = 1;

                }

            }

        }

    }



    if( (ck[1][1] == 1 && ck[2][2] == 1 && ck[0][0] == 1  )

    ||(ck[2][0] == 1 && ck[1][1] == 1 && ck[0][2] == 1  )

    ||(ck[0][0] == 1 && ck[0][1] == 1 && ck[0][2] == 1  )

    ||(ck[1][0] == 1 && ck[1][1] == 1 && ck[1][2] == 1  )

    ||(ck[2][0] == 1 && ck[2][1] == 1 && ck[2][2] == 1  )

    ||(ck[0][0] == 1 && ck[1][0] == 1 && ck[2][0] == 1  )

    ||(ck[0][1] == 1 && ck[1][1] == 1 && ck[2][1] == 1  )

    || (ck[0][2] == 1 && ck[1][2] == 1 && ck[2][2] == 1  )

    ) {

        printf("Yes\n");

    } else {

        printf("No\n");

    }





    return 0;

}