1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui; 4 typedef long long ll; 5 typedef unsigned long long ull; 6 #define pf printf 7 #define prime1 1e9+7 8 #define prime2 1e9+9 9 #define scand(x) scanf("%llf",&x) 10 #define f(i,a,b) for(int i=a;i<=b;i++) 11 #define scan(a) scanf("%d",&a) 12 #define dbg(args) cout<<#args<<":"<<args<<endl; 13 #define pb(i) push_back(i) 14 #define ppb(x) pop_back(x) 15 #define maxn 100 16 int n,m,t,cnt; 17 int a[maxn],b[maxn]; 18 void dfs(int sum,int posa,int posb) 19 { 20 if(sum>m)return; 21 if(sum==m) 22 { 23 cnt++; 24 f(i,1,posb-1) 25 { 26 if(i!=1) 27 { 28 pf("+%d",b[i]); 29 } 30 else pf("%d",b[1]); 31 } 32 pf(" "); 33 return; 34 } 35 f(i,posa,n) 36 { 37 b[posb]=a[i]; 38 dfs(sum+b[posb],i+1,posb+1); 39 while(i+1<=n&&a[i]==a[i+1])i++; 40 } 41 return ; 42 } 43 int main() 44 { 45 std::ios::sync_with_stdio(false); 46 //freopen("input.txt","r",stdin); 47 //freopen("output.txt","w",stdout); 48 while(scanf("%d %d",&m,&n)==2&&!(n==0&&m==0)) 49 { 50 cnt=0; 51 memset(a,0,sizeof(a)); 52 memset(b,0,sizeof(b)); 53 f(i,1,n)scan(a[i]); 54 sort(a+1,a+n+1,greater<int>()); 55 pf("Sums of %d: ",m); 56 dfs(0,1,1); 57 if(!cnt) 58 { 59 pf("NONE "); 60 } 61 } 62 }