import std.stdio, std.algorithm, std.conv, std.array, std.string, std.math, std.typecons;

alias MP = Tuple!(int, "i", int, "p");

int[11] PS, CS;

void main()
{
    auto dg = readln.split.to!(int[]);
    auto D = dg[0];
    auto G = dg[1] / 100;

    foreach (i; 1..D+1) {
        auto pc = readln.split.to!(int[]);
        PS[i] = pc[0];
        CS[i] = pc[1] / 100;
    }

    int[3][11][1001] memo;
    int solve(int i, int c, int d) {
        if (i == 0 || i == D+1 || c <= 0) return 0;
        if (memo[c][i][d+1]) return memo[c][i][d+1];

        auto r1 = solve(i + d, c, d);
        int r2;
        if (c >= PS[i]) {
            r2 = PS[i] * i + CS[i] + solve(i + d, c - PS[i], d);
        } else {
            r2 = c * i;
        }
        return memo[c][i][d+1] = max(r1, r2);
    }

    foreach (i; 1..1001) {
        if (solve(1, i, 1) >= G || solve(D, i, -1) >= G) {
            writeln(i);
            return;
        }
    }
}