https://www.luogu.com.cn/problem/P1616
#include<bits/stdc++.h>
#define lc p<<1
#define rc p<<1|1
#define INF 1e18
using namespace std;
#define lowbit(x) x&(-x)
#define endl '\n'
using ll = long long;
using pii = pair<int,ll>;
const double PI = acos(-1);
const int N=1e7+10;
const int M=1e2+10;
ll tim[N],w[N];
//ll dp[N][M];
ll dp[N];
//三维
//void solve(){
// ll t,m;cin>>t>>m;
// for(int i=1;i<=m;i++){
// cin>>p[i].first>>p[i].second;
// }
// for(int i=1;i<=m;i++){
// auto [tim,v]=p[i];
// for(int j=0;j<=t;j++){
// dp[i][j]=dp[i-1][j];
// for(int k=0;k*tim<=j;k++){
// dp[i][j]=max(dp[i][j],dp[i-1][j-k*tim]+k*v);
// }
// }
// }
// cout<<dp[m][t]<<endl;
//}
//二维
//void solve(){
// ll t,m;cin>>t>>m;
// for(int i=1;i<=m;i++){
// cin>>p[i].first>>p[i].second;
// }
// for(int i=1;i<=m;i++){
// auto [tim,v]=p[i];
// for(int j=0;j<=t;j++){
//// dp[i][j]=dp[i-1][j];
//// if(j<tim) dp[i][j]=dp[i-1][j];
//// else{
//// dp[i][j]=max(dp[i-1][j],dp[i][j-tim]+v);
//// }
//
// dp[i][j]=dp[i-1][j];
// if(j>=tim){
// dp[i][j]=max(dp[i][j],dp[i][j-tim]+v);
// }
// }
// }
// cout<<dp[m][t]<<endl;
//}
//一维:
//void solve(){
// ll t,m;cin>>t>>m;
// for(int i=1;i<=m;i++){
// cin>>p[i].first>>p[i].second;
// }
// for(int i=1;i<=m;i++){
// auto [tim,v]=p[i];
// for(int j=tim;j<=t;j++){
// dp[j]=max(dp[j],dp[j-tim]+v);
// }
// }
//
// cout<<dp[t]<<endl;
//}
void solve(){
//朴素版 O(n*2) 这道题显然超内存
int t,m;cin>>t>>m;
for(int i=1;i<=m;i++){
cin>>tim[i]>>w[i];
}
//优化版
for(int i=1;i<=m;i++){
for(int j=tim[i];j<=t;j++){
dp[j]=max(dp[j],dp[j-tim[i]]+w[i]);
}
}
cout<<dp[t];
}
int main() {
// ios::sync_with_stdio(false);
// cin.tie(nullptr), cout.tie(nullptr);
int T = 1;
// cin>>T;
while (T--) {
solve();
}
return 0;
}