#45430: 解答在此>>>


11352099@st.fhjh.tp.edu.tw (哈哈嗨)


#include <iostream>
using namespace std;

int main(){
    int N;
    int prize[25];
    int board[5][5];
    bool win[5][5];
    
    cin >> N;
    for (int i=0;i<N;++i){
        cin >> prize[i];
    }
    for (int i=0;i<5;++i){
        for (int j=0;j<5;++j){
            cin >> board[i][j];
            
            win[i][j] = false;
            for (int k=0;k<N;++k){
                if (board[i][j] == prize[k]){
                    win[i][j] = true;
                }
            }
        }
    }
    
    // 檢查每個橫排
    
    int bingo = 0, nearBingo = 0;
    for (int i=0;i<5;++i){
        int count = 0;
        for (int j=0;j<5;++j){
            if (win[i][j])
                count++;
        }
        if (count == 5) bingo++;
        else if (count == 4) nearBingo++;
    }
    
    // 檢查每個直列
    for (int j=0;j<5;++j){
        int count = 0;
        for (int i=0;i<5;++i){
            if (win[i][j])
                count++;
        }
        if (count == 5) bingo++;
        else if (count == 4) nearBingo++;
    }
    
    // 檢查斜線
    {
        int count = 0;
        for (int i=0;i<5;++i){
            if (win[i][i])
                count++;
        }
        if (count == 5) bingo++;
        else if (count == 4) nearBingo++;
    }
    {
        int count = 0;
        for (int i=0;i<5;++i){
            if (win[i][4-i])
                count++;
        }
        if (count == 5) bingo++;
        else if (count == 4) nearBingo++;
    }
    
    cout << bingo << ' ' << nearBingo << '\n';

    return 0;
}