zju1711
#include<stdio.h>
int num[12];
int sums[12];
int n,m;
int flog,flag;
void DFS(int i,int sum)
{
int j;
if(i>=m)return;
if(i>0)
if(num[i]==num[i-1]&&sums[i-1]==0)
{
DFS(i+1,sum);
return;
}
sums[i]=1;
if(sum+num[i]==n)
{
flog=0;j=i;
for(j=0;j<m;j++)
{
if(sums[j]){if(flog)printf("+");printf("%d",num[j]);flog=1;}
}
printf("\n");
flag=1;
}
if(sum+num[i]<n)
{
DFS(i+1,sum+num[i]);
}
sums[i]=0;
DFS(i+1,sum);
}
void main()
{
int i;
while(scanf("%d%d",&n,&m),n!=0&&m!=0)
{
flag=0;
for(i=0;i<m;i++)
{
scanf("%d",&num[i]);
}
for(i=0;i<12;i++)
sums[i]=0;
printf("Sums of %d:\n",n);
DFS(0,0);
if(flag==0)printf("NONE\n");
}
return 0;
}