#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
int n,T,id,dis[N];
struct graph{
int v,w;
};
vector<graph>g[N];
void spfa(){
bitset<N>vis;
queue<int>q;
for(int i=1;i<=n;i++){
vis[i]=1,q.push(i);
if(!dis[i]){
dis[i]=1e9;
}
}
while(!q.empty()){
int u=q.front();
q.pop(),vis[u]=0;
for(auto [v,w]:g[u]){
if(dis[u]+w<dis[v]){
dis[v]=dis[u]+w;
if(!vis[v]){
vis[v]=1,q.push(v);
}
}
}
}
for(int i=1;i<=n;i++){
cout<<dis[i]<<'\n';
}
}
int main(){
cin>>n>>id>>dis[id]>>T;
for(int i=1;i<=n;i++){
if(i!=id){
g[id].push_back({i,0});
}
}
for(int l,r;T--;){
cin>>l>>r;
if(l>r){
swap(l,r);
}
g[r].push_back({l,0});
for(int i=l+1;i<r;i++){
g[l].push_back({i,-1});
}
}
spfa();
}