public static void Run()
 {
     using (FastScanner fs = new FastScanner(new BufferedStream(Console.OpenStandardInput())))
         using (StreamWriter writer = new StreamWriter(new BufferedStream(Console.OpenStandardOutput())))
         {
             int       n     = fs.NextInt();
             Segment[] segms = new Segment[n];
             int[]     ans   = new int[n];
             for (int i = 0; i < n; i++)
             {
                 segms[i] = new Segment {
                     Id = i, Left = fs.NextInt(), Right = fs.NextInt()
                 };
             }
             segms = segms.OrderBy(s => s.Left).ToArray();
             Segment[] t   = segms.OrderBy(s => s.Right).ToArray();
             int[]     ind = new int[n];
             for (int i = 0; i < n; i++)
             {
                 ind[i] = findItem(t, 0, n - 1, segms[i].Right);
             }
             SegmentTree tree = new SegmentTree(new int[n]);
             for (int i = n - 1; i >= 0; i--)
             {
                 ans[segms[i].Id] = tree.QuerySum(0, ind[i] - 1);
                 tree.Update(ind[i], ind[i], 1);
             }
             for (int i = 0; i < n; i++)
             {
                 writer.WriteLine(ans[i]);
             }
         }
 }
 public static void Run()
 {
     using (FastScanner fs = new FastScanner(new BufferedStream(Console.OpenStandardInput())))
     using (StreamWriter writer = new StreamWriter(new BufferedStream(Console.OpenStandardOutput())))
     {
         int n = fs.NextInt();
         Segment[] segms = new Segment[n];
         int[] ans = new int[n];
         for (int i = 0; i < n; i++)
         {
             segms[i] = new Segment { Id = i, Left = fs.NextInt(), Right = fs.NextInt() };
         }
         segms = segms.OrderBy(s => s.Left).ToArray();
         Segment[] t = segms.OrderBy(s => s.Right).ToArray();
         int[] ind = new int[n];
         for (int i = 0; i < n; i++)
         {
             ind[i] = findItem(t, 0, n - 1, segms[i].Right);
         }
         SegmentTree tree = new SegmentTree(new int[n]);
         for (int i = n - 1; i >= 0; i--)
         {
             ans[segms[i].Id] = tree.QuerySum(0, ind[i] - 1);
             tree.Update(ind[i], ind[i], 1);
         }
         for (int i = 0; i < n; i++)
         {
             writer.WriteLine(ans[i]);
         }
     }
 }