#include <bits/stdc++.h>
using namespace std;
int SQRT;
const int MAX = 100005;
int tab[MAX];
pair<int, int> nast[MAX];
int kub(int i) { return i / SQRT; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  cin >> n >> m;
  SQRT = sqrt(n);
  for (int i = 1; i <= n; i++) cin >> tab[i];
  for (int i = n; i >= 1; i--) {
    if (i + tab[i] > n)
      nast[i] = make_pair(-1, 1);
    else if (kub(i) != kub(i + tab[i]))
      nast[i] = make_pair(i + tab[i], 1);
    else
      nast[i] = make_pair(nast[i + tab[i]].first, 1 + nast[i + tab[i]].second);
  }
  for (int i = 0; i < m; i++) {
    int type;
    cin >> type;
    if (type == 1) {
      int u;
      cin >> u;
      int v = u;
      int ans = 0;
      int answer = -1;
      while (u != -1) {
        ans += nast[u].second;
        u = nast[u].first;
      }
      u = v;
      while (u != -1 && kub(u) != kub(n)) {
        if (nast[u].first == -1) {
          int v = u;
          int l = tab[u];
          while (kub(u) == kub(v)) {
            l = tab[u];
            u += tab[u];
          }
          u -= l;
          answer = u;
          break;
        }
        u = nast[u].first;
      }
      if (answer == -1) {
        while (true) {
          int l = tab[u];
          u += tab[u];
          if (u > n) {
            answer = u - l;
            break;
          }
        }
      }
      cout << answer << " " << ans << "\n";
    } else {
      int u, x;
      cin >> u >> x;
      tab[u] = x;
      if (u + tab[u] > n)
        nast[u] = make_pair(-1, 1);
      else if (kub(u) != kub(u + tab[u]))
        nast[u] = make_pair(u + tab[u], 1);
      else
        nast[u] =
            make_pair(nast[u + tab[u]].first, 1 + nast[u + tab[u]].second);
      for (int j = u - 1; (j >= 1 && kub(j) == kub(u)); j--) {
        if (j + tab[j] > n)
          nast[j] = make_pair(-1, 1);
        else if (kub(j) != kub(j + tab[j]))
          nast[j] = make_pair(j + tab[j], 1);
        else
          nast[j] =
              make_pair(nast[j + tab[j]].first, 1 + nast[j + tab[j]].second);
      }
    }
  }
  return 0;
}
