#include <iostream>
#include <set>
using namespace std;
//思路:差分
//将每一头牛的身高都差分出去
//然后若A和B之间可以看得到 则Aa+1 -c Bb+c A > B的情况下
//由于给出最高的牛的身高和位置那么
//那么可以根据给出的关系来解出答案
//因为可能重复给出关系对所以要 将其存入sep中去重
const int N = 10000;
int A[N];
int B[N];
set<pair<int,int> > exited;
int main()
{
int n,p,h,m;
scanf("%d%d%d%d", &n, &p ,&h ,&m);
B[1] = h; //将所有的牛的身高都计算为最高
int a , b;
while (m -- )
{
scanf("%d%d", &a, &b);
if(a > b)
{
swap(a,b);
}
if(a == b)
{
continue;
}
//判断是否出现重复的情况
if(!exited.count( {a , b} ))
{
exited.insert({a , b});
//每次都将牛的身高减一
B[a+1]--;
B[b]++;
}
}
for (int i = 1; i <= n; i ++ )
{
A[i] = A[i - 1] + B[i];
printf("%d\n", A[i]);
}
}