#include<bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i) 
#define PI acos(-1)

using namespace std;
using ll = long long;
using P = pair<int, int>;
using LP = pair<ll, ll>;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);

    int N;
    ll T;
    cin>>N>>T;
    vector<vector<double>> rab(N, vector<double>(3));
    rep(i, N) {
        cin>>rab[i][1]>>rab[i][2];
        rab[i][0] = (-1.0) * rab[i][1] / (rab[i][2] + 1.0);
    }
    sort(rab.begin(), rab.end());
    int r = N;
    rep(i, N) {
        if ((ll)rab[i][1] == 0) {
            r = i;
            break;
        }
    }

    vector<vector<ll>> dp(2, vector<ll>(28 + 1, T + 1));
    dp[0][0] = 0;
    dp[1][0] = 0;
    rep(i, r) {
        rep(j, 28) {
            dp[(i + 1) % 2][j + 1] = min(dp[i % 2][j + 1], dp[i % 2][j] + 1 + (dp[i % 2][j] + 1) * (ll)rab[i][1] + (ll)rab[i][2]);
            if (dp[(i + 1) % 2][j + 1] > T) break;
        }
    }

    vector<ll> a0;
    for (int i = r; i < N; ++i) a0.push_back((ll)rab[i][2]);
    vector<int> cnt(29);
    rep(i, 29) {
        if (dp[r % 2][i] > T) break;
        cnt[i] = i;
        for (auto a : a0) {
            dp[r % 2][i] += a + 1;
            if (dp[r % 2][i] > T) break;
            cnt[i]++;
        }
    }

    int ans = *max_element(cnt.begin(), cnt.end());
    cout<<ans<<endl;
}