// Arup Guha
// 3/4/2022
// Solution to 2022 February USACO Silver Problem: Robot Instructions

import java.util.*;

public class robot {
	
	public static int n;
	public static long[][] setA;
	public static long[][] setB;
	public static long x;
	public static long y;
	
	public static void main(String[] args) {
	
		// Get basic input.
		Scanner stdin = new Scanner(System.in);
		n = stdin.nextInt();
		x = stdin.nextInt();
		y = stdin.nextInt();
		
		setA = new long[n/2][2];
		setB = new long[n-n/2][2];
		int lenA = n/2;
		int lenB = n-n/2;
		
		// Store each half of points.
		for (int i=0; i<n/2; i++) {
			setA[i][0] = stdin.nextLong();
			setA[i][1] = stdin.nextLong();
		}
		for (int i=n/2; i<n; i++) {
			setB[i-n/2][0] = stdin.nextLong();
			setB[i-n/2][1] = stdin.nextLong();		
		}
		
		HashMap<String,Integer>[] map = new HashMap[lenB+1];
		for (int i=0; i<=lenB; i++) map[i] = new HashMap<String,Integer>();
		
		for (int i=0; i<(1<<lenB); i++) {
		
			// Add up these subset of points.
			long myx = 0, myy = 0;
			for (int j=0; j<lenB; j++) {
				if ((i & (1<<j)) != 0) {
					myx += setB[j][0];
					myy += setB[j][1];
				}
			}
			
			// Store how many ways we can get this point in our map.
			String key = myx +"," + myy;
			int bits = Integer.bitCount(i);
			if (!map[bits].containsKey(key))
				map[bits].put(key, 1);
			else
				map[bits].put(key, map[bits].get(key)+1);
		}
		
		long[] res = new long[n+1];
		
		// Brute force each subset of A.
		for (int i=0; i<(1<<lenA); i++) {
		
			// Add up these subset of points.
			long myx = 0, myy = 0;
			for (int j=0; j<lenA; j++) {
				if ((i & (1<<j)) != 0) {
					myx += setA[j][0];
					myy += setA[j][1];
				}
			}		
			
			// Bits we've used already.
			int bits = Integer.bitCount(i);
						
			// Here is what we need to add to this.
			long needX = x - myx;
			long needY = y - myy;
			String key = needX + "," + needY;
			
			// Go to each map for set B.
			for (int j=0; j<map.length; j++) {
				
				// Add it.
				if (map[j].containsKey(key))
					res[bits+j] += map[j].get(key);
			}
		}
		
		// Ta da!
		for (int i=1; i<=n; i++)
			System.out.println(res[i]);
	}
}