#include <stdio.h>
#include <string.h>
int A,G,u0,n0;
int n;
char du[11],hu[11];
int X[100000][2];
int ans;
void dfs(int from, int xx,int nx,int ux,char *dx)
{
int i,j;
char dn[11];
if(ux==0)
{
if(ans>n0-nx) ans=n0-nx;
return;
}
memcpy(dn,dx,11);
for(i=from;i<n;i++)
{
xx+=nx*G;
if(xx>=A) break;
if(du[ X[i][0] ]||dn[ X[i][1] ]) continue;
dn[X[i][1]]=1;
nx--;
if(n0-nx>=ans) return;
}
if(xx>=A)
{
for(j=1;j<=u0;j++)
{
if((!du[j])&&hu[j])
{
if(j==X[i][0])
{
du[j]=1;
dfs(i+1,0,nx,ux-1,dn);
du[j]=0;
}
else
{
if(!dn[ X[i][1] ])
{
du[j]=1;
dn[X[i][1]]=1;
dfs(i+1,0,nx-1,ux-1,dn);
dn[X[i][1]]=0;
du[j]=0;
}
else
{
du[j]=1;
dfs(i+1,0,nx,ux-1,dn);
du[j]=0;
}
}
}
}
}
else
{
if(ans>n0-nx) ans=n0-nx;
}
}
int main()
{
int i;
char dn[11];
memset(dn,0,sizeof(dn));
scanf("%d%d%d%d",&A,&G,&u0,&n0);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&X[i][0],&X[i][1]);
hu[X[i][0]]=1;
}
if(G*n0>=A) {printf("0"); return 0;}
ans=n0;
dfs(0,0,n0,u0,dn);
printf("%d",ans);
return 0;
}