#include "bits/stdc++.h"
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using ll = long long int;
mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

int main()
{
	ios::sync_with_stdio(false); cin.tie(0);

	int n; cin >> n;
	vector<int> a(n+1);
	for (int i = 1; i <= n; ++i) cin >> a[i];
	struct op {
		vector<int> ind;
		int special, type;
	};
	vector<op> ops;

	for (int i = 1; i <= 20; ++i) {
		int mx = 0;
		for (int j = 1; j <= n; ++j) mx = max(mx, a[j]);
		op cur; cur.type = -1;
		int mn = 1e9;
		for (int j = 1; j <= n; ++j) {
			if (a[j] >= (mx+1)/2) {
				cur.ind.push_back(j);
				if (a[j] < mn) {
					mn = a[j];
					cur.special = j;
				}
			}
		}
		for (int j = 1; j <= n; ++j) {
			if (a[j] >= mn) a[j] -= mn;
		}
		ops.push_back(cur);
	}

	// for (int i = 1; i <= n; ++i) {
	// 	if (a[i] == 0) continue;
	// 	op cur;
	// 	cur.special = i;
	// 	cur.type = -1;
	// 	for (int j = i; j <= n; ++j) {
	// 		if (a[j] >= a[i]) {
	// 			a[j] -= a[i];
	// 			cur.ind.push_back(j);
	// 		}
	// 	}
	// 	ops.push_back(cur);
	// }
	cout << size(ops) << '\n';
	for (auto o : ops) {
		cout << size(o.ind) << '\n';
		for (int x : o.ind) cout << x << ' ';
		cout << '\n';
		if (o.type == 1) cout << "+ ";
		else cout << "- ";
		cout << o.special << '\n';
	}
}