import java.util.*; public class Main { static final int MOD = 1000000007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int d = sc.nextInt(); long k = sc.nextInt(); TreeSet stocks = new TreeSet<>(); Stock[] arr = new Stock[n]; int max = 0; int left = 0; int right = 0; stocks.add(new Stock(-1, Integer.MAX_VALUE)); for (int i = 0; i < n; i++) { arr[i] = new Stock(i, sc.nextInt()); Stock target = stocks.first(); if (max < arr[i].value - target.value) { max = arr[i].value - target.value; left = target.idx; right = i; } stocks.add(arr[i]); if (i - d >= 0) { stocks.remove(arr[i - d]); } } if (max == 0) { System.out.println(0); } else { System.out.println(max * k); System.out.println(left + " " + right); } } static class Stock implements Comparable { int idx; int value; public Stock(int idx, int value) { this.idx = idx; this.value = value; } public int compareTo(Stock another) { if (value == another.value) { return idx - another.idx; } else { return value - another.value; } } public int hashCode() { return idx; } public boolean equals(Object o) { Stock s = (Stock)o; return s.idx == idx && s.value == value; } } }