package Week1;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/*N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),
lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。
但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
Input
每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。
Output
每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。
3
1 1
2 2
3 3
3
1 1
1 2
1 3
0
*/
/**
* 差分数组,a开始b结束然后求每个球被涂几次颜色
* N个气球,声明一个一维数组N,int arr[] = new int[N+1]; a开始b结束,数组索引a标记1,b+1位置标记-1
* arr[a]++ arr[b+1]--
* for (int i = 1; i <= N; i++) {
* arr[i]+=arr[i-1];
* }
* 即arr[i]就为每个点图的颜色数
*/
public class G_ChaFenShuZu {
static int s,e;
static int N;
static int arr[];
public static void main(String[] args) throws Exception{
System.setIn(new FileInputStream("Solution.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean flag = true;
while(flag) {
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
if(N==0) {
flag=false;
break;
} else {
arr = new int[N+2];
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
arr[a]++;
arr[b+1]--;
}
for (int i = 1; i <= N; i++) {
arr[i]+=arr[i-1];
System.out.print(arr[i]+" ");
}
System.out.print("\n");
}
}
}
}