#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;int map[13];int visit[13];int sum;int put[1000][13],str[13],len[1000];int n,t,cou,num;int flag;void DFS(int d){if( sum == t ) {len[num] = cou;memcpy( put[num], str, cou*sizeof(int) );num++;flag = 1;}for(int i=d; i<=n; i++){if( !visit[i] && sum + map[i] <= t ){visit[i] = 1;str[cou] = map[i];cou ++;sum += map[i];DFS(i+1);visit[i] = 0;sum -= map[i];cou--;}}}int cmp( int i,int k) {if(len[i] != len[k])return 0;for(int j=0; j<len[i]; j++)if( put[i][j] != put[k][j] )return 0;return 1;}void output(){int jilu[1000];memset(jilu,0,sizeof(jilu));for(int i=0; i<num; i++) {for(int k=i+1; k<num; k++) if( cmp(i,k) && !jilu[k] ) {jilu[k] = 1;}}for(int i=0; i<num; i++)if( jilu[i] == 0 ) { cout << put[i][0];for(int k=1; k<len[i]; k++) cout << '+'<< put[i][k]; cout << endl;}}int main(void){while( cin >> t >> n && t ){for(int i=1; i<=n; i++)cin >> map[i];memset( visit,0,sizeof(visit) );memset( put,0,sizeof(put) );sum = 0; cou = 0; flag = 0; num = 0;cout << "Sums of " << t << ":" << endl ;DFS(1);output();if( flag == 0 ) cout << "NONE" << endl;}return 0;}