#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template<class T> using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define pb push_back
#define N 100012
#define ll long long
#define int ll
#define pi pair<int , int>
#define pip pair<pair ,int>
#define mp make_pair
#define f first
#define s second
#define mod 1000000007
ll Mod(ll x, ll y, int p)
{   ll res = 1; x = x % p;
    while (y > 0)
    {   if (y & 1) res = (res * x) % p;
        y = y >> 1; x = (x * x) % p;
    } return res;
}
int* getlps(string pattern) {
    int len = pattern.length();
    int * lps = new int[len];
    lps[0] = 0;
    int i = 1 , j = 0;
    while (i < len) {
        if (pattern[i] == pattern[j]) {
            lps[i] = j + 1;
            i++;
            j++;
        }
        else {
            if (j != 0) {
                j = lps[j - 1];
            }
            else {
                lps[i] = 0;
                i++;
            }
        }
    }
    return lps;
}
class Triplet {
public:
    int x ;
    int y ;
    int gcd;
};
Triplet extendedEuclid(int a , int b) {
    if (b == 0) {Triplet ans; ans.gcd = a; ans.x = 1; ans.y = 0; return ans;}
    Triplet smallAns = extendedEuclid(b , a % b);
    Triplet ans;
    ans.gcd = smallAns.gcd;
    ans.x = smallAns.y;
    ans.y = smallAns.x - (a / b) * smallAns.y;
    return ans;
}
int mmInverse(int a , int m) {
    Triplet ans = extendedEuclid(a , m);
    return (ans.x + m) % m;
}
int fact[N];
void calfac(int n ) {
    fact[0] = 1;
    for (int i = 1 ; i <= n + 2; i++) {
        fact[i] = (((fact[i - 1] % mod) * (i % mod)) % mod + mod) % mod;
    }
}
int calc(int n , int r) {
    if (r > n)return 0;
    if (r == n)return 1;
    int ans = 1;
    ans = ((ans % mod) * (fact[n]) % mod + mod) % mod;
    ans = ((ans % mod) * (mmInverse(fact[n - r] , mod) % mod) + mod) % mod;
    ans = ((ans % mod) * (mmInverse(fact[r] , mod) % mod) + mod) % mod;
    return (ans + mod) % mod;
}


void solve(int cntt) {
    int n;
    cin >> n;
    double x;
    cin >> x;
    x = x * 100.0;
    double ans = 0;
    int val = 1010;
    for (int i = 0 ; i <  n ; i++) {
        double am , per;
        cin >> am >> per;
        double z = (1.0 * am) * (1.0 * per);
        double jaadu = z;
        // cout << "jaadu:" << jaadu << endl;
        x = x - jaadu;
        if (x < 0) {
            //cout << ans << endl;
            //cout << x << endl;
            //cout << "hello" << endl;
            val = min(i + 1 , val);
            // cout << i + 1 << endl;
            // return;
        }
    }
    if (val == 1010)
        cout << "-1" << endl;
    else
        cout << val << endl;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);


    // preprocess();
    int t;
    t = 1;


    int l = 0;
    while (t--) {
        l++;

        solve(l);
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll bin(ll a[],ll l,ll r,ll x){
	ll m=(l+r)/2;
	if(l>=r)return -1;
	if(a[m]==x)return m;
	if(a[m]>x)return bin(a,l,m-1,x);
	return bin(a,m+1,r,x);
}
ll exp(ll a,ll b){
	if(b==0)return 1;
	ll res=exp(a,b/2);
	if(b%2==0)return res*res;
	return res*res*a;
}
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	int n;
	cin>>n;
	int x;
	cin>>x;
	x*=100;
	int a[n],b[n];
	double f[n];
	for(int i=0;i<n;i++){
		cin>>a[i]>>b[i];
		f[i]=(a[i]*b[i]);
	}
	int s=0;
	int flag=0,cnt=0;
	for(int i=0;i<n;i++){
		s+=f[i];
		cnt++;
		if(s>x){
			flag=1;
			break;
		}
	}
	cout<<(flag?cnt:-1);
}
