import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int n = in.nextInt(); int[][] paos = new int[n][2]; Map<Integer, List<Integer>> hmx = new HashMap<>(); Map<Integer, List<Integer>> hmy = new HashMap<>(); for (int i = 0; i < n; i++) { paos[i][0] = in.nextInt(); int x = paos[i][0]; paos[i][1] = in.nextInt(); int y = paos[i][1]; if (!hmx.containsKey(x)) { hmx.put(x,new ArrayList<>()); } if (!hmy.containsKey(y)) { hmy.put(y,new ArrayList<>()); } hmx.get(x).add(y); hmy.get(y).add(x); } hmx.forEach((k,v)->{ Collections.sort(v);// System.out.println(v); }); hmy.forEach((k,v)->{ Collections.sort(v);// System.out.println(v); }); for (int[] pao : paos) { int x = pao[0]; int y = pao[1]; int res = 0; List<Integer> tx = hmx.get(x); List<Integer> ty = hmy.get(y); int len1 = tx.size(); int len2 = ty.size(); int index1 = 0; int index2 = 0; index1 = bsearch(tx,y); index2 = bsearch(ty,x); if ( index1 - 1 > 0) res++; if (index1 != -1 &amp;&amp;len1-2-index1 >0)res++; if(index2-1>0)res++; if(index2 != -1 &amp;&amp;len2-2-index2>0)res++; System.out.println(res); } } private static int bsearch(List<Integer> list,int num) { int len = list.size(); int left = 0, right = len - 1; while (left <= right) { int mid = left + (right-left)/2; if (list.get(mid) == num) { return mid; } else if (list.get(mid) < num) { left = mid + 1; } else { right = mid -1; } } return -1; }}