#include<bits/stdc++.h>
using namespace std;
int s,n;
int w[1011];
int dp[1011][1011];
int main()
{
while(cin>>s)
{
cin>>n;
for(int i=1;i<=n;++i)
{
cin>>w[i];
}
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=1;i<=n;++i)
{
for(int j=s;j>=0;--j)
{
if(dp[i-1][j]==1) dp[i][j]=1;//i-1件物品能凑出重量j
if(j-w[i]>=0&&dp[i-1][j-w[i]]==1) dp[i][j]=1;
}
}
if(dp[n][s]==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int m,n;
int p[1011],c[1011];//受欢迎程度以及价格
int dp[1011][103];//第i件物品时,剩余金钱j,得到的最大欢迎程度
//买i物品 :dp[i][j]=dp[i-1][j-c[i]]+p[i]
//不买i物品:dp[i][j]=dp[i-1][j]
int main()
{
while(cin>>m)
{
cin>>n;
vector<int> result[101];
for(int i=1;i<=n;++i)
{
cin>>c[i]>>p[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;++i)
{
for(int j=0;j<=m;++j)
{
if(j>=c[i])
{
if(dp[i-1][j-c[i]]+p[i]>dp[i-1][j])
{
result[j]=result[j-c[i]];
result[j].push_back(i);
dp[i][j]=dp[i-1][j-c[i]]+p[i];
}
else
dp[i][j]=dp[i-1][j];
}
else
{
dp[i][j]=dp[i-1][j];
}
}
}
cout<<dp[n][m]<<endl;
if(dp[n][m]!=0)
{
for(int i=0;i<result[m].size();++i)
{
cout<<result[m][i]<<" ";
}
cout<<endl;
}
}
return 0;
}