#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=210;
const int inf=100000000;
long long kk,m,n,w[5010],v[5010],dp[5010][55],num1[5010],num2[5010];
int main(){
cin>>kk>>m>>n;
for(int i=1;i<=n;i++){
cin>>v[i]>>w[i];
}
for(int i=0;i<=5010;i++){
for(int j=1;j<=kk;j++){
dp[i][j]=-inf;
}
}
dp[0][1]=0;
for(int i=1;i<=n;i++){
for(int j=m;j>=v[i];j--){
int cnt1=0,l=1,r=1;
for(int k=1;k<=kk;k++) num1[k]=dp[j-v[i]][k]+w[i];
for(int k=1;k<=kk;k++) num2[k]=dp[j][k];
while(l<=kk&&r<=kk){
if(cnt1==kk) break;
if(num1[l]>num2[r]){
dp[j][++cnt1]=num1[l];
++l;
}
else{
dp[j][++cnt1]=num2[r]; ++r;
}
}
/*if(cnt<kk){
if(l<kk){
while(cnt<kk&&l<kk){
dp[j][++cnt]=num1[l];
++l;
}
}
else while(cnt<kk&&r<kk){
dp[j][++cnt]=num2[r]; ++r;
}
}*/
}
}
long long ans=0;
for(int i=1;i<=kk;i++) ans+=dp[m][i];
cout<<ans<<endl;
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=210;
const int inf=100000000;
long long kk,m,n,w[5010],v[5010],dp[5010][55],num1[5010],num2[5010];
int main(){
cin>>kk>>m>>n;
for(int i=1;i<=n;i++){
cin>>v[i]>>w[i];
}
for(int i=0;i<=5010;i++){
for(int j=1;j<=kk;j++){
dp[i][j]=-inf;
}
}
dp[0][1]=0;
for(int i=1;i<=n;i++){
for(int j=m;j>=v[i];j--){
int cnt1=0,l=1,r=1;
for(int k=1;k<=kk;k++) num1[k]=dp[j-v[i]][k]+w[i];
for(int k=1;k<=kk;k++) num2[k]=dp[j][k];
while(l<=kk&&r<=kk){
if(cnt1==kk) break;
if(num1[l]>num2[r]){
dp[j][++cnt1]=num1[l];
++l;
}
else{
dp[j][++cnt1]=num2[r]; ++r;
}
}
/*if(cnt<kk){
if(l<kk){
while(cnt<kk&&l<kk){
dp[j][++cnt]=num1[l];
++l;
}
}
else while(cnt<kk&&r<kk){
dp[j][++cnt]=num2[r]; ++r;
}
}*/
}
}
long long ans=0;
for(int i=1;i<=kk;i++) ans+=dp[m][i];
cout<<ans<<endl;
return 0;
}