- import java.io.IOException;
- import java.io.DataInputStream;
- import java.util.*;
- class TestClass {
- public static void main(String args[] ) throws Exception {
- FastReader reader = new FastReader();
- StringBuilder sb = new StringBuilder();
- int n = reader.nextInt();
- int[] arr = new int[n];
- int sum = 0;
- for(int i = 0; i < n; i++){
- arr[i] = reader.nextInt();
- sum += arr[i];
- }
- int[] subL = new int[n * n];
- int[] subR = new int[n * n];
- int p = 0;
- for(int i = 0; i < n; i++){
- int len = 0;
- int remLen = n;
- int sumArr = 0;
- int sumRem = sum;
- for(int j = i; j < n; j++){
- sumArr += arr[j];
- sumRem -= arr[j];
- len++;
- remLen--;
- double avgArr = (double)sumArr / len;
- double avgRem = 0;
- if(remLen > 0) avgRem = (double)sumRem / remLen;
- if(avgArr > avgRem){
- subL[p] = i + 1;
- subR[p++] = j + 1;
- }
- }
- }
- sb.append(p).append("\n");
- for(int i = 0; i < p; i++){
- sb.append(subL[i]).append(" ");
- sb.append(subR[i]).append("\n");
- }
- System.out.print(sb);
- reader.close();
- }
- private static class FastReader{
- final private int BUFFER_SIZE = 1 << 16;
- private byte[] buffer;
- private DataInputStream din;
- private int bufferPointer, bytesRead;
- public FastReader(){
- buffer = new byte[BUFFER_SIZE];
- din = new DataInputStream(System.in);
- bufferPointer = bytesRead = 0;
- }
- private String nextLine() throws IOException{
- StringBuilder sb = new StringBuilder();
- byte c;
- while((c = read()) != -1 && c != '\n'){
- sb.appendCodePoint(c);
- }
- return sb.toString();
- }
- private int nextInt() throws IOException{
- int ret = 0;
- byte c = read();
- while(c <= ' '){
- c = read();
- }
- boolean neg = c == '-';
- if(neg){
- c = read();
- }
- while(c >= '0' && c <= '9'){
- ret = ret * 10 + c - '0';
- c = read();
- }
- return (neg) ? -ret : ret;
- }
- private long nextLong() throws IOException{
- long ret = 0;
- byte c = read();
- while(c <= ' '){
- c = read();
- }
- boolean neg = c == '-';
- if(neg){
- c = read();
- }
- while(c >= '0' && c <= '9'){
- ret = ret * 10 + c - '0';
- c = read();
- }
- return (neg) ? -ret : ret;
- }
- private double nextDouble() throws IOException{
- double ret = 0, div = 1;
- byte c = read();
- while(c <= ' '){
- c = read();
- }
- boolean neg = c == '-';
- if(neg){
- c = read();
- }
- while(c >= '0' && c <= '9'){
- ret = ret * 10 + (c - '0');
- c = read();
- }
- if(c == '.'){
- while((c = read()) >= '0' && c <= '9'){
- ret += (c - '0') / (div *= 10);
- }
- }
- return (neg) ? -ret : ret;
- }
- private void fillBuffer() throws IOException{
- bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
- if(bytesRead == -1){
- buffer[0] = -1;
- }
- }
- private byte read() throws IOException{
- if(bufferPointer == bytesRead){
- fillBuffer();
- }
- return buffer[bufferPointer++];
- }
- private void close() throws IOException{
- if(din != null){
- din.close();
- }
- }
- }
- }