#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
#include<set>
#include<map>
#include<string>
#include<iomanip>
#include<cmath>
#include<stack>
#include<tuple>

int main()
{
	std::map<int, int> map;
	map[0] = -1;
	int N;
	std::cin >> N;
	std::vector<int> vec(N);
	for (int i = 1; i <= N; ++i)
	{
		int V;
		std::cin >> V;
		vec[i - 1] = V;
		for (auto&[sum, prev] : map)
		{
			if (prev < i - 1 && !map.count(sum + V))
			{
				map[sum + V] = i;
			}
		}
	}
	auto[s0, p0] = *map.rbegin();
	auto s = s0;
	auto p = p0;
	std::cout << s << std::endl;
	std::stack<int> stack;
	while (p != -1)
	{
		stack.emplace(p);
		s -= vec[p - 1];
		p = map[s];
	}
	while (stack.size())
	{
		auto t = stack.top();
		stack.pop();
		std::cout << t << " ";
	}
	std::cout << std::endl;
}