/*
#### #### ####
## ## ## ## ##
## ## ## ## ##
## ###### ##
## ## ######
### #### ###
*/
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<unordered_map>
#define MOD 1000000007
#define pi acos(-1)
#define ull unsigned long long
using namespace std;
long long Mod(long long num, long long mod) { return ((num % mod) + mod) % mod; }
long long Ceil(long long num, long long div) { return (num + div - 1) / div; }
long long Gcd(long long a, long long b) { if (a == 0)return b; return Gcd(b % a, a); }
long long Lcm(long long a, long long b) { return a / Gcd(a, b) * b; }
void fast()
{
std::ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
}
vector<vector<int>>Dp1, Dp2;
vector<vector<int>>vis1, vis2;
vector<int>v;
int t, n, id;
int minirem(int i, int rem) {
if (i >= n)
return rem;
int& ret = Dp1[i][rem];
if (vis1[i][rem] == id)
return ret;
vis1[i][rem] = id;
ret = minirem(i + 1, rem);
if (v[i] <= rem)
ret = min(ret, minirem(i + 1, rem - v[i]));
return ret;
}
int maxinum(int i, int rem) {
if (i >= n)
return (rem == 0 ? 0 : -1e9);
int& ret = Dp2[i][rem];
if (vis2[i][rem] == id)
return ret;
vis2[i][rem] = id;
ret = maxinum(i + 1, rem);
if (v[i] <= rem)
ret = max(maxinum(i + 1, rem - v[i]) + 1,ret);
return ret;
}
void build(int i, int rem) {
if (i >= n)
return;
if (maxinum(i + 1, rem) == maxinum(i, rem)) {
build(i + 1, rem);
}
else {
cout << v[i] << " ";
build(i + 1, rem - v[i]);
}
}
int main() {
fast();
//freopen("cases.in ", "r", stdin);
id = 0;
while (1) {
++id;
cin >> t;
if (t == 0)
break;
cin >> n;
v = vector<int>(n);
for (auto& it : v)
cin >> it;
Dp1 = Dp2 = vector<vector<int>>(n + 2, vector<int>(t + 100));
vis1 = vis2 = vector<vector<int>>(n + 2, vector<int>(t + 100));
int mini = minirem(0, t);
int num=maxinum(0, t - mini);
cout << num << "\n";
build(0, t);
cout << t - mini << "\n";
}
return 0;
}
LyoKICMjIyMgICMjIyMgICMjIyMKICMjICMjICAjIyAgIyMgIyMKICMjICAjIyAjIyAjIyAgIyMKICMjICAgIyMjIyMjICAgIyMKICMjICAgICAjIyAjIyMjIyMKICMjIyAgICMjIyMgICAjIyMKKi8KI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZTx1bm9yZGVyZWRfbWFwPgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgcGkgYWNvcygtMSkKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxvbmcgbG9uZyBNb2QobG9uZyBsb25nIG51bSwgbG9uZyBsb25nIG1vZCkgeyByZXR1cm4gKChudW0gJSBtb2QpICsgbW9kKSAlIG1vZDsgfQpsb25nIGxvbmcgQ2VpbChsb25nIGxvbmcgbnVtLCBsb25nIGxvbmcgZGl2KSB7IHJldHVybiAobnVtICsgZGl2IC0gMSkgLyBkaXY7IH0KbG9uZyBsb25nIEdjZChsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsgaWYgKGEgPT0gMClyZXR1cm4gYjsgcmV0dXJuIEdjZChiICUgYSwgYSk7IH0KbG9uZyBsb25nIExjbShsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsgcmV0dXJuIGEgLyBHY2QoYSwgYikgKiBiOyB9CnZvaWQgZmFzdCgpCnsKICAgIHN0ZDo6aW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImluLnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCn0KdmVjdG9yPHZlY3RvcjxpbnQ+PkRwMSwgRHAyOwp2ZWN0b3I8dmVjdG9yPGludD4+dmlzMSwgdmlzMjsKdmVjdG9yPGludD52OwppbnQgdCwgbiwgaWQ7CmludCBtaW5pcmVtKGludCBpLCBpbnQgcmVtKSB7CiAgICBpZiAoaSA+PSBuKQogICAgICAgIHJldHVybiByZW07CiAgICBpbnQmIHJldCA9IERwMVtpXVtyZW1dOwogICAgaWYgKHZpczFbaV1bcmVtXSA9PSBpZCkKICAgICAgICByZXR1cm4gcmV0OwogICAgdmlzMVtpXVtyZW1dID0gaWQ7CiAgICByZXQgPSBtaW5pcmVtKGkgKyAxLCByZW0pOwogICAgaWYgKHZbaV0gPD0gcmVtKQogICAgcmV0ID0gbWluKHJldCwgbWluaXJlbShpICsgMSwgcmVtIC0gdltpXSkpOwogICAgcmV0dXJuIHJldDsKfQppbnQgbWF4aW51bShpbnQgaSwgaW50IHJlbSkgewogICAgaWYgKGkgPj0gbikKICAgICAgICByZXR1cm4gKHJlbSA9PSAwID8gMCA6IC0xZTkpOwogICAgaW50JiByZXQgPSBEcDJbaV1bcmVtXTsKICAgIGlmICh2aXMyW2ldW3JlbV0gPT0gaWQpCiAgICAgICAgcmV0dXJuIHJldDsKICAgIHZpczJbaV1bcmVtXSA9IGlkOwogICAgcmV0ID0gbWF4aW51bShpICsgMSwgcmVtKTsKICAgIGlmICh2W2ldIDw9IHJlbSkKICAgICAgICByZXQgPSBtYXgobWF4aW51bShpICsgMSwgcmVtIC0gdltpXSkgKyAxLHJldCk7CiAgICByZXR1cm4gcmV0Owp9CnZvaWQgYnVpbGQoaW50IGksIGludCByZW0pIHsKICAgIGlmIChpID49IG4pCiAgICAgICAgcmV0dXJuOwogICAgaWYgKG1heGludW0oaSArIDEsIHJlbSkgPT0gbWF4aW51bShpLCByZW0pKSB7CiAgICAgICAgYnVpbGQoaSArIDEsIHJlbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBjb3V0IDw8IHZbaV0gPDwgIiAiOwogICAgICAgIGJ1aWxkKGkgKyAxLCByZW0gLSB2W2ldKTsKICAgIH0KfQppbnQgbWFpbigpIHsKICAgIGZhc3QoKTsKICAgIC8vZnJlb3BlbigiY2FzZXMuaW4gIiwgInIiLCBzdGRpbik7CiAgICBpZCA9IDA7CiAgICB3aGlsZSAoMSkgewogICAgICAgICsraWQ7CiAgICAgICAgY2luID4+IHQ7CiAgICAgICAgaWYgKHQgPT0gMCkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2luID4+IG47CiAgICAgICAgdiA9IHZlY3RvcjxpbnQ+KG4pOwogICAgICAgIGZvciAoYXV0byYgaXQgOiB2KQogICAgICAgICAgICBjaW4gPj4gaXQ7CiAgICAgICAgRHAxID0gRHAyID0gdmVjdG9yPHZlY3RvcjxpbnQ+PihuICsgMiwgdmVjdG9yPGludD4odCArIDEwMCkpOwogICAgICAgIHZpczEgPSB2aXMyID0gdmVjdG9yPHZlY3RvcjxpbnQ+PihuICsgMiwgdmVjdG9yPGludD4odCArIDEwMCkpOwogICAgICAgIGludCBtaW5pID0gbWluaXJlbSgwLCB0KTsKICAgICAgICBpbnQgbnVtPW1heGludW0oMCwgdCAtIG1pbmkpOwogICAgICAgIGNvdXQgPDwgbnVtIDw8ICJcbiI7CiAgICAgICAgYnVpbGQoMCwgdCk7CiAgICAgICAgY291dCA8PCB0IC0gbWluaSA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0K