#include<stdio.h>
#include<stdlib.h>
int f[30001],v[26],temp,n,vp[26],top,max,m;
int main()
{
f[0]=1;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&v[i],&temp);
vp[i]=v[i]*temp;
}
for(int i=1;i<=m;i++)
{
for(int j=top;j>=0;j--)
{
f(f[j]&&j+v[i]<=n)
{
f[j+v[i]]=f[j+v[i]]>(f[j]+vp[i])?f[j+v[i]]:(f[j]+vp[i]);
}
}
if(top+v[i]<=n)
top+=v[i];
else
{
for(int k=n;k>=0;k--)
if(f[k])
{
top=k;
break;
}
}
}
for(int i=0;i<=top;i++)
{
max=max>f[i]?max:f[i];
}
printf("%d",max-1);
return 0;
}
#include<stdlib.h>
int f[30001],v[26],temp,n,vp[26],top,max,m;
int main()
{
f[0]=1;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&v[i],&temp);
vp[i]=v[i]*temp;
}
for(int i=1;i<=m;i++)
{
for(int j=top;j>=0;j--)
{
f(f[j]&&j+v[i]<=n)
{
f[j+v[i]]=f[j+v[i]]>(f[j]+vp[i])?f[j+v[i]]:(f[j]+vp[i]);
}
}
if(top+v[i]<=n)
top+=v[i];
else
{
for(int k=n;k>=0;k--)
if(f[k])
{
top=k;
break;
}
}
}
for(int i=0;i<=top;i++)
{
max=max>f[i]?max:f[i];
}
printf("%d",max-1);
return 0;
}