1 #include <iostream>
2 #include <cstring>
3
4 using namespace std;
5
6 int w1[110];
7 int w2[110];
8 int v[110];
9 int dp[110][110];
10
11 int main()
12 {
13 int n,m,k,s;
14 while(cin>>n>>m>>k>>s)
15 {
16 for(int i=0;i<k;i++)
17 {
18 cin>>v[i]>>w1[i];
19 w2[i]=1;
20 }
21 memset(dp,0,sizeof(dp));
22 for(int i=0;i<k;i++)
23 {
24 for(int j=w1[i];j<=m;j++)
25 {
26 for(int t=w2[i];t<=s;t++)
27 {
28 dp[j][t]=max(dp[j][t],dp[j-w1[i]][t-w2[i]]+v[i]);
29 }
30 }
31 }
32 int i;
33 int flag=0;
34 for(i=0;i<=m;i++)
35 {
36 for(int t=0;t<=s;t++)
37 {
38 if(dp[i][t]>=n)
39 {
40 flag=1;
41 break;
42 }
43 }
44 if(flag)
45 break;
46 }
47 if(flag==0)
48 cout<<-1<<endl;
49 else
50 cout<<m-i<<endl;
51 }
52 return 0;
53 }