#include <bits/stdc++.h>
using namespace std;
int n, m, a[1005], ans[4][2];
vector<pair<int, int> > gp;
int left() {
  int i;
  for (i = 1; i <= n; i++)
    if (a[i] != i) return i;
  return 0;
}
int right() {
  int i;
  for (i = n; i > 0; i--)
    if (a[i] != i) return i;
  return 0;
}
int find(int x) {
  int i;
  for (i = 1; i <= n; i++)
    if (a[i] == x) return i;
}
bool update(int depth) {
  int i;
  int l, r;
  l = left();
  if (!l) return true;
  if (depth == 3) return false;
  r = find(l);
  reverse(a + l, a + r + 1);
  if (update(depth + 1)) {
    ans[m][0] = l;
    ans[m++][1] = r;
    return true;
  }
  reverse(a + l, a + r + 1);
  r = right();
  l = find(r);
  reverse(a + l, a + r + 1);
  if (update(depth + 1)) {
    ans[m][0] = l;
    ans[m++][1] = r;
    return true;
  }
  reverse(a + l, a + r + 1);
  return false;
}
int main() {
  int i;
  cin >> n;
  m = 0;
  for (i = 1; i <= n; i++) cin >> a[i];
  update(0);
  cout << m << endl;
  for (i = 0; i < m; i++) cout << ans[i][0] << " " << ans[i][1] << endl;
  return 0;
}
