Do you know Just Odd Inventions? The business of this company is to "just odd inventions". Here, it is abbreviated as JOI.

JOI is conducting research to confine many microorganisms in one petri dish alive. There are N microorganisms to be investigated, and they are numbered 1, 2, ..., N. When each microorganism is trapped in a petri dish, it instantly releases a harmful substance called foo (fatally odd object) into the petri dish. The amount of foo released by each microorganism is known. The foo released by all the microorganisms trapped in the petri dish is evenly ingested by each microorganism in the petri dish. The foo tolerance of each microorganism is known, and if foo is ingested in excess of this amount, the microorganism will die.

The foo release amount of the microorganism i is ai milligrams, and the foo tolerance is bi milligrams. That is, when the microorganisms i1, i2, ..., ik are trapped in the petri dish, each microorganism in the petri dish ingests (ai1 + ai2 + ... + aik) / k milligrams of foo, and the microorganisms in the petri dish ingest. i will die if this intake is greater than bi.

On behalf of JOI, you must keep as many microorganisms alive in the petri dish as possible. However, no microbes in the petri dish should die from ingestion of foo, as carcasses of microorganisms adversely affect the environment in the petri dish.

It is still a mystery how JOI profits from making "just a strange invention", and no one in JOI knows except the president.



input

Read the following input from standard input.

* The integer N is written on the first line, which indicates that there are N microorganisms to be investigated.
* The following N lines contain information on each microorganism. On the first line of i + (1 ≤ i ≤ N), the positive integers ai and bi are written separated by blanks, and the foo emission amount of the microorganism i is ai milligrams and the foo tolerance is bi milligrams. Represent.

output

Output the maximum number of microorganisms that can be confined in one petri dish to the standard output in one line.

Example

Input

6
12 8
5 9
2 4
10 12
6 7
13 9


Output

3
#include <cstdio>
#include <vector>
#include <set>
#include <utility>
#include <algorithm>
using namespace std;
  
long long int n;
pair<long long int, long long int> microbe[300000]; // 微生物の値(b, a)のpair

/*
    k個の微生物をシャーレに入れられるか判定する。
    シャーレに入れられるかどうかは、
    選んだk個の微生物のaの値、bの値の集合をal, blとして、
    sum(al)/k <= min(bl) ⇔  sum(al) <= k * min(bl)が成り立つかで分かる。
    今、微生物を配列microbeの区間[0, t]からk個選ぶ時、
    microbeはbの値で降順に並べられているから、
    任意のblについてmin(bl) >= b(t)である。
    ∴ sum(al) <= k * b(t) <= k * min(bl) ー ?
        または k * b(t) <= sum(al) <= k * min(bl) ー ?
            が成り立つのは自明
    ここで、? が成り立つとき、それはb(t)&#8713;blであることを意味していて、
    [0, t]より小さな区間[0, s](k-1 <= s <= t-1)を予め考えていた時、
    その区間において既に? が成り立っているはずである。
    よって、区間[0, t]について? のみを考えれば良い。
    次にalについて、「sum(al)が最小となるal」をminalと定義した時、
    minalで? が成り立たないならば、任意のalについて? は成り立たない。
    以上から
    区間[0, t]でminalとb(t)と比較することをk-1 <= t <= n-1の範囲で繰り返せば良いことが分かる。
    今、[0, t]におけるminalをsetで管理しているなら、
    [0, t+1]におけるminalはsetにa(t+1)を追加した上で
    set内の最も大きい値を1つ削除すれば求まる。
    よって、setへの挿入、削除をn-k+1回繰り返すからO(nlogn)である。
 */
long long int check(long long int k) {
     long long int sum = 0; // sum(minal)
     multiset<long long int, greater<long long int> > order; // aを降順に並べる
   
     if (k == 0) return 1; // k=0の時常に成立
  
     /* とりあえず[0, k-1]におけるalは1通りしかないので
        sum(al)を求めて、これをsetで管理する */
     for (long long int i=0; i<k; i++) {
          sum += microbe[i].second;
          order.insert(microbe[i].second);
     }
     if (sum <= k*microbe[k-1].first) return 1; // 既に不等式が成り立つなら1を返す
  
     /* k <= t <= n-1について考える */
     for (long long int i=k; i<n; i++) { 
          /* [0, t]におけるsum(minal)を求める */
          sum += microbe[i].second;
          order.insert(microbe[i].second);
          sum -= *order.begin();
          order.erase(order.begin());
           
          if (sum <= k*microbe[i].first) return 1; //不等式が成り立つなら1を返す
     }
     return 0; //全てのtで成り立たないなら0を返す
}
  
int main() {
     long long int high;
     long long int low;

     scanf("%lld", &n);
     for (long long int i=0; i<n; i++) {
           long long int a;
           long long int b;

           scanf("%lld %lld", &a, &b);
           microbe[i] = make_pair(b, a); //b, aの順にpairにする
     }
     sort(microbe, microbe+n, greater<pair<long long int, long long int> >()); //bで降順にソート
  
     /* 区間(-1, n+1) ⇔  [0, n]をcheck関数で二分探索 */
     low = -1;
     high = n+1;
     while (high-low > 1) {
          long long int mid = (low+high)/2;
          if (check(mid)) low = mid;
          else high = mid;
     }
     printf("%lld\n", low);
}