// Arup Guha
// 4/27/2018
// Solution to 2018 March USACO Gold Problem: Talent Show

import java.util.*;
import java.io.*;

public class talent {

	final public static int NONE = 2000000000;

	public static int n;
	public static int maxW;
	public static int[] weights;
	public static int[] talents;

	public static void main(String[] args) throws Exception {

		// Get basic input.
		Scanner stdin = new Scanner(new File("talent.in"));
		n = stdin.nextInt();
		maxW = stdin.nextInt();
		weights = new int[n];
		talents = new int[n];

		// Read in weights, talents.
		int sumT = 0;
		for (int i=0; i<n; i++) {
			weights[i] = stdin.nextInt();
			talents[i] = stdin.nextInt();
			sumT += talents[i];
		}

		// dp[i] will store minimal weight to achieve talent level i.
		int[] dp = new int[sumT+1];
		Arrays.fill(dp, NONE);
		dp[0] = 0;

		// run adjusted Knapsack DP
		for (int i=0; i<n; i++)
			for (int j=sumT; j>=talents[i]; j--)
				dp[j] = Math.min(dp[j], dp[j-talents[i]]+weights[i]);

		// Find highest ratio...
		int res = 0;
		for (int i=1; i<=sumT; i++) {
			if (dp[i] < maxW) continue;
			res = Math.max(res, (1000*i)/dp[i]);
		}

		// Solve and output!
		PrintWriter out = new PrintWriter(new FileWriter("talent.out"));
		out.println(res);
		out.close();
		stdin.close();
	}
}