#include<cstdio>
#include<cctype>
#include<cstring>
#include<utility>
#include<vector>
#include<algorithm>
#define ll long long
#define mkp make_pair
#define pb push_back
#define Pos pair<int, int>
#define Tup pair<Pos, int>
#define fir first
#define sec second
using namespace std;
inline Tup mkt(int x, int y, int z){return mkp(mkp(x, y), z);}
inline int read()
{
int x = 0, f = 1; char c = getchar();
while (!isdigit(c)){if (c == '-') f = -1; c = getchar();}
while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
x *= f; return x;
}
inline void write(ll x)
{
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar (x % 10 + '0');
}
const int MAXN = 45;
vector<Pos>v;
vector<Tup>v1, v2;
int n, xg, yg;
int nn;
int len1, len2;
ll ans[MAXN], s1[MAXN], s2[MAXN];
inline void dfs1(int step, int k, int sumx, int sumy)
{
if (step == nn + 1)
{
v1.pb(mkt(sumx, sumy, k));
return;
}
dfs1(step + 1, k + 1, sumx + v[step].fir, sumy + v[step].sec);
dfs1(step + 1, k, sumx, sumy);
}
inline void dfs2(int step, int k, int sumx, int sumy)
{
if (step == nn)
{
v2.pb(mkt(sumx, sumy, k));
return;
}
dfs2(step - 1, k + 1, sumx + v[step].fir, sumy + v[step].sec);
dfs2(step - 1, k, sumx, sumy);
}
int main()
{
n = read(); xg = read(); yg = read();
for (int i = 0; i < n; ++ i)
{
int xi, yi;
xi = read(); yi = read();
v.pb(mkp(xi, yi));
}
nn = n >> 1;
dfs1(0, 0, 0, 0);
dfs2(n - 1, 0, 0, 0);
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
len1 = v1.size(); len2 = v2.size();
for (int i = 0, j = len2 - 1; i < len1 && j >= 0;)
{
int x1 = v1[i].fir.fir, x2 = v2[j].fir.fir, y1 = v1[i].fir.sec, y2 = v2[j].fir.sec, k1 = v1[i].sec, k2 = v2[j].sec;
if (x1 + x2 < xg || (x1 + x2 == xg && y1 + y2 < yg)) i ++;
else if (x1 + x2 > xg || (x1 + x2 == xg && y1 + y2 > yg)) j --;
else {
memset (s1, 0, sizeof(s1));
memset (s2, 0, sizeof(s2));
for (; i < len1 && mkp(x1, y1) == v1[i].fir; ++ i) s1[v1[i].sec] ++;
for (; j >= 0 && mkp(x2, y2) == v2[j].fir; -- j) s2[v2[j].sec] ++;
for (int k1 = 0; k1 <= nn + 1; ++ k1)
for (int k2 = 0; k2 <= nn + 1; ++ k2)
ans[k1 + k2] += s1[k1] * s2[k2];
}
}
for (int i = 1; i <= n; ++ i) write(ans[i]), putchar('\n');
return 0;
}