#include <bits/stdc++.h>
using namespace std;
long long n;
long long a[60];
bool comp(const pair<long long, long long> &p1,
          const pair<long long, long long> &p2) {
  return p1.first < p2.first;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  long long s = 0;
  map<long long, vector<pair<long long, long long>>> mp;
  for (long long i = 0; i < n; i++) {
    s = 0;
    for (long long j = i; j < n; j++) {
      s += a[j];
      mp[s].push_back({j + 1, i + 1});
    }
  }
  vector<pair<long long, long long>> vect2;
  long long freq = 0, s1 = 0;
  for (auto i : mp) {
    vect2.clear();
    auto p4 = i.second;
    for (long long j = 0; j < (long long)p4.size(); j++) {
      vect2.push_back({p4[j].first, p4[j].second});
    }
    sort(vect2.begin(), vect2.end());
    auto p3 = vect2;
    long long corner = 0;
    long long c = 0;
    for (long long j = 0; j < (long long)p3.size(); j++) {
      if (p3[j].second > corner) {
        c++;
        corner = p3[j].first;
      }
    }
    if (c > freq) {
      freq = c;
      s1 = i.first;
    }
  }
  vect2.clear();
  cout << freq << '\n';
  auto p4 = mp[s1];
  for (long long j = 0; j < (long long)p4.size(); j++) {
    vect2.push_back({p4[j].first, p4[j].second});
  }
  sort(vect2.begin(), vect2.end());
  auto p3 = vect2;
  long long corner = 0;
  for (long long j = 0; j < (long long)p3.size(); j++) {
    if (p3[j].second > corner) {
      cout << p3[j].second << " " << p3[j].first << '\n';
      corner = p3[j].first;
    }
  }
  return 0;
}
