http://codevs.cn/problem/1261/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=2001;
int dp[10001][MAXN],num[10001][MAXN];
int pre=1,now=0;
int n,m,w;
void solve()
{
scanf("%d%d",&n,&m);
// memset(dp,0,sizeof(dp));
for(int i=1;i<=m;i++)
{
// swap(pre,now);
scanf("%d",&w);
for(int j=0;j<n;j++)
{
if(dp[i-1][((j-w)%n+n)%n]+w>dp[i-1][j])
{
dp[i][j]=dp[i-1][((j+w)%n+n)%n]+w;
num[i][j]=num[i-1][((j+w)%n+n)%n]+1;
}
else if(dp[i-1][((j+w)%n+n)%n]==dp[i-1][j]+w)
num[i-1][j]=min(num[i-1][((j+w)%n+n)%n]+1,num[i-1][j]);
// else dp[i][j]=dp[i-1][j],num[i][j]=num[i-1][j];
}
// for(int j=0;j<n;j++) dp[pre][j]=num[pre][j]=0;
}
if(!num[m][0]) cout<<"no answer"<<endl;
else cout<<dp[m][0]<<" "<<num[m][0]<<endl;
return;
}
int main()
{
solve();
return 0;
}