#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int stamps[30];
int result[4], curresult[4];
int goal;
int num;
bool tied = false;
int score = 0, curscore = 0;
int cards = 0, curcards = 0;
int kinds[4];
int kindsnum=0, curkindsnum = 0;
void DFS(int cur, int index, int curcards) {
if ((curcards > 3) && cur != goal) return;
if (cur == goal) {
curkindsnum = 1;
for (int i = 1; i < curcards; i++) {
if (kinds[i] != kinds[i - 1])
curkindsnum++;
}
curscore = curkindsnum * 100 + (4 - curcards) * 10 + stamps[index];
if (curscore == score) {
tied = true;
}
else if (curscore > score) {
tied = false;
score = curscore;
cards = curcards;
kindsnum = curkindsnum;
for (int i = 0; i < 4; i++) {
result[i] = curresult[i];
}
}
return;
}
for (int i = index; i < num; i++) {
if (cur + stamps[i] > goal) return;
curresult[curcards] = stamps[i];
kinds[curcards] = i;
DFS(cur + stamps[i], i, curcards + 1);
}
return;
}
void Print() {
if (!result[0]) {
cout << goal << " ---- none" << endl;
return;
}
if (tied) {
cout << goal << " (" << kindsnum << "): tie" << endl;
return;
}
else
{
cout << goal << " (" << kindsnum << "): ";
for (int i = 0; i < cards; i++)
cout << result[i] << " ";
}
cout << endl;
}
int main() {
while (true) {
memset(stamps, 0, sizeof(stamps));
num = 0;
cin >> stamps[0];
if (!stamps[0]) break;
while (stamps[num]) {
cin >> stamps[++num];
}
sort(stamps, stamps + num);
while (true) {
memset(result, 0, sizeof(result));
cin >> goal;
if (goal == 0) break;
if (goal > 4 * stamps[num - 1]) {
cout << goal << " ---- none" << endl;
continue;
}
score = 0;
DFS(0, 0, 0);
Print();
}
}
return 0;
}