#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';
}
}