import java.util.Scanner;

public class Main {

    static int n, win, fail, draw;
    static int[] a = new int[100];
    static int[] b = new int[100];
    static int[] c = new int[100];
    static boolean[] vis = new boolean[100];
    // 输入
    static void input() {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        for (int i = 0; i < n; i++) {
            a[i] = in.nextInt();
        }
        for (int i = 0; i < n; i++) {
            b[i] = in.nextInt();
        }
    }
    // 输出
    static void print() {
        System.out.printf("%d %d %d\n", win, fail, draw);
    }
    static void debugPrint(int[] target) {
        for (int i = 0; i < n; i++) {
            System.out.printf("%d ", target[i]);
        }
        System.out.println("-----");
    }
    // 计算胜负
    static int calc(int[] a, int[] b) {
        // debugPrint(tb);
        int scoreA = 0, scoreB = 0;
        for (int i = 0; i < n; i++) {
            if (a[i] > b[i]) {
                scoreA++;
            } else if (a[i] < b[i]) {
                scoreB++;
            }
        }
        if (scoreA == scoreB) {
            return 0;
        } else {
            return scoreA > scoreB ? 1 : -1;
        }
    }

    static void dfs(int[] target, int deep) {
        if (deep == n) {
            int ans = calc(a, c);
            if (ans == 1 ) {
                win++;
            } else if (ans == -1) {
                fail++;
            } else {
                draw++;
            }
            return;
        }
        for (int i = 0; i < n; i++) {
            if (!vis[i]) {
                c[deep] = target[i];
                vis[i] = true;
                dfs(target, deep + 1);
                vis[i] = false;
                // c[deep] = 0;
            }
        }
    }

    public static void main(String[] args) {
        input();
        dfs(b, 0);
        print();
    }
}

经典DFS全排列