#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
void print_time() {}
template <typename T>
void update_max(T& x, T y) {
  x = max(x, y);
}
template <typename T>
void update_min(T& x, T y) {
  x = min(x, y);
}
template <class T1, class T2>
ostream& operator<<(ostream& out, pair<T1, T2> pair) {
  return out << "(" << pair.first << ", " << pair.second << ")";
}
template <class T>
ostream& operator<<(ostream& out, vector<T> vec) {
  out << "(";
  for (auto& v : vec) out << v << ", ";
  return out << ")";
}
template <class T>
ostream& operator<<(ostream& out, set<T> vec) {
  out << "(";
  for (auto& v : vec) out << v << ", ";
  return out << ")";
}
template <class L, class R>
ostream& operator<<(ostream& out, map<L, R> vec) {
  out << "(";
  for (auto& v : vec) out << v << ", ";
  return out << ")";
}
int main() {
  cout << fixed << setprecision(20);
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long n;
  cin >> n;
  vector<long long> a(n);
  for (long long i = 0; i < n; ++i) {
    cin >> a[i];
  }
  cout << n + 1 << "\n";
  for (long long i = n - 1; i >= 0; --i) {
    long long d = i + n - a[i] % n;
    for (long long j = 0; j <= i; ++j) {
      a[j] += d;
    }
    cout << "1 " << (i + 1) << " " << d << "\n";
  }
  cout << "2 " << n << " " << n;
  print_time();
  return 0;
}
