/*****include*****/
#include <iostream>
#include <fstream>

/*****デバッグ定義*****/
//#define DEBUG
/*****マクロ定義*****/
#define INF	30000
/*****名前空間*****/
using namespace std;

/*****グローバル変数置き場*****/
int *time;
int mini;
bool *visited;
int num;

/*****その他関数置き場*****/
void dfs(int node,int wait,int total){
	int i;
	visited[node] = true;
	/*for(int i=0;i<num;i++)
		cout << visited[i] << " ";
	cout << endl;*/
	total += wait;
	wait += time[node];
	//cout << wait <<" " << total << endl;
	for(i=0;i<num;i++)
		if(!visited[i])	break;
	if(i==num){
		if(mini > total){
			mini = total;
			//cout << "*" << mini << endl;
			//cout << mini << endl;
		}
		//cout << "b" << endl;
		return;
	}
	for(i=0;i<num;i++){
		if(!(i==node || visited[i])){
			//cout << "c" << endl;
			dfs(i,wait,total);
			//cout << "d" << endl;
			visited[i] = false;
		}
	}
}
/*****main関数*****/
int main(){
	/*****ファイルオープン*****/
#ifdef DEBUG
	ofstream fout("output.txt");
	ifstream fin("input.txt");
	if(!fout || !fin){
		cout << "Can't open the file.\n";
		return 0;
	}
#endif
	/*****変数置き場*****/
	/*****処理部*****/
	while(1){
		mini = INF;
		cin >> num;
		if(num == 0)	break;
		time = new int [num];
		visited = new bool [num];
		for(int i=0;i<num;i++){
			time[i] = 0;
			visited[i] = false;
		}
		for(int i=0;i<num;i++)
			cin >> time[i];
		for(int i=0;i<num;i++){
			dfs(i,0,0);
			//cout << "d" << endl;
			visited[i] = false;
		}
		cout << mini << endl;
	}
	/*****処理終了後*****/
#ifdef DEBUG
	fout.close();
	fin.close();
#endif
	return 0;
}