import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import java.io.PrintWriter
import java.util.*

fun PrintWriter.solve(sc: FastScanner) {
    val n = sc.nextInt()
    val a = Array(n) { sc.nextLong() }
    if (n == 1) {
        println("1 1")
        println(-a[0])
        println("1 1")
        println(0)
        println("1 1")
        println(0)
    } else {
        println("$n $n")
        println((n - 1) * a[n - 1])
        println("1 $n")
        val b = (0 until n).map { -n * a[it] }
        println(b.joinToString(" "))
        println("1 ${n - 1}")
        val c = (0 until n - 1).map { (n - 1) * a[it] }
        println(c.joinToString(" "))
    }
}

fun main() {
    val writer = PrintWriter(System.out, false)
    writer.solve(FastScanner(System.`in`))
    writer.flush()
}

class FastScanner(s: InputStream) {
    private var st = StringTokenizer("")
    private val br = BufferedReader(InputStreamReader(s))

    fun next(): String {
        while (!st.hasMoreTokens()) st = StringTokenizer(br.readLine())

        return st.nextToken()
    }

    fun nextInt() = next().toInt()
    fun nextLong() = next().toLong()
    fun nextLine() = br.readLine()
    fun nextDouble() = next().toDouble()
    fun ready() = br.ready()
}


import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {
    val jin = BufferedReader(InputStreamReader(System.`in`))
    val n = jin.readLine().toInt()
    val ay = jin.readLine().split(" ").map { it.toLong() }
    val out = StringBuilder()
    if (n == 1) {
        out.appendln("1 1")
        out.appendln(0)
        out.appendln("1 1")
        out.appendln(0)
        out.appendln("1 1")
        out.appendln(-ay[0])
    } else {
        out.appendln("1 $n")
        for (j in 1 until n) {
            out.append(-n.toLong() * ay[j - 1]).append(' ')
        }
        out.appendln(0)
        out.appendln("1 ${n - 1}")
        for (j in 1 until n) {
            out.append((n - 1).toLong() * ay[j - 1]).append(' ')
        }
        out.appendln()
        out.appendln("$n $n")
        out.appendln(-ay[n - 1])
    }
    print(out)
}


import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {
    val jin = BufferedReader(InputStreamReader(System.`in`))
    val n = jin.readLine().toInt()
    val ay = jin.readLine().split(" ").map { it.toLong() }
    val out = StringBuilder()
    out.appendln("1 $n")
    for (j in 1 until n) {
        out.append(-n.toLong() * ay[j - 1]).append(' ')
    }
    out.appendln(0)
    out.appendln("1 ${n - 1}")
    for (j in 1 until n) {
        out.append((n - 1).toLong() * ay[j - 1]).append(' ')
    }
    out.appendln("$n $n")
    out.appendln(-ay[n - 1])
    print(out)
}


import java.io.BufferedReader

fun main() {
    val br = System.`in`.bufferedReader()
    val sb = StringBuilder()
    val n = br.readInt()
    val nums = LongArray(n){br.readInt().toLong()}
    if(n == 1){
        sb.append("1 1\n0\n1 1\n0\n1 1\n").append(-nums[0])
    } else {
        sb.append("1 ").append(n - 1).append('\n')
        for(x in 0 until n - 1){
            val mod = nums[x]%n
            nums[x] += mod * (n - 1)
            sb.append(mod * (n - 1)).append(' ')
        }
        sb.append('\n').append(n).append(' ').append(n).append('\n').append(-nums.last()).append('\n')
        nums[n - 1] = 0L
        sb.append("1 ").append(n).append('\n')
        for(x in 0 until n){
            sb.append(-nums[x]).append(' ')
        }
    }
    print(sb)
}

private const val SPACE_INT = ' '.toInt()
private const val ZERO_INT = '0'.toInt()
private const val NL_INT = '\n'.toInt()

private fun BufferedReader.readInt(): Int {
    var ret = read()
    while (ret <= SPACE_INT) {
        ret = read()
    }
    val neg = ret == '-'.toInt()
    if (neg) {
        ret = read()
    }
    ret -= ZERO_INT
    var read = read()
    while (read >= ZERO_INT) {
        ret *= 10
        ret += read - ZERO_INT
        read = read()
    }

    while (read <= SPACE_INT && read != -1 && read != NL_INT) {
        mark(1)
        read = read()
    }
    if (read > SPACE_INT) {
        reset()
    }
    return if (neg) -ret else ret
}


import java.io.BufferedReader

fun main() {
    val br = System.`in`.bufferedReader()
    val sb = StringBuilder()
    val n = br.readInt()
    val nums = LongArray(n){br.readInt().toLong()}
    if(n == 1){
        sb.append("1 1\n0\n1 1\n0\n1 1").append(-nums[0])
    } else {
        sb.append("1 ").append(n - 1).append('\n')
        for(x in 0 until n - 1){
            val mod = nums[x]%n
            nums[x] += mod * (n - 1)
            sb.append(mod * (n - 1)).append(' ')
        }
        sb.append('\n').append(n).append(' ').append(n).append('\n').append(-nums.last()).append('\n')
        nums[n - 1] = 0L
        sb.append("1 ").append(n).append('\n')
        for(x in 0 until n){
            sb.append(-nums[x]).append(' ')
        }
    }
    print(sb)
}

private const val SPACE_INT = ' '.toInt()
private const val ZERO_INT = '0'.toInt()
private const val NL_INT = '\n'.toInt()

private fun BufferedReader.readInt(): Int {
    var ret = read()
    while (ret <= SPACE_INT) {
        ret = read()
    }
    val neg = ret == '-'.toInt()
    if (neg) {
        ret = read()
    }
    ret -= ZERO_INT
    var read = read()
    while (read >= ZERO_INT) {
        ret *= 10
        ret += read - ZERO_INT
        read = read()
    }

    while (read <= SPACE_INT && read != -1 && read != NL_INT) {
        mark(1)
        read = read()
    }
    if (read > SPACE_INT) {
        reset()
    }
    return if (neg) -ret else ret
}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        while(b[i] % (n - 1) != 0L) {
            b[i]+=n.toLong()
        }
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    println("1 ${n-1}")
    for (i in 0 until n-1) {
        print(-b[i])
        print(" ")
    }
    println()

}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        while(b[i] % (n - 1) != 0L) {
            b[i]+=n.toLong()
        }
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    println("1 $n")
    for (i in 0 until n) {
        print(a[i]-b[i])
        print(" ")
    }
    println()

}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        while(b[i] % (n - 1) != 0L) {
            b[i]+=n.toLong()
        }
    }
    println("$n $n")
    println(-b[n-1])
    println("1 ${n-1}")
    for (i in 0 until n-1) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    println("1 ${n-1}")
    for (i in 0 until n-1) {
        print(a[i]-b[i])
        print(" ")
    }
    println()

}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        while(b[i] % (n - 1) != 0L) {
            b[i]+=n.toLong()
        }
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n-1) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    println("1 $n")
    for (i in 0 until n-1) {
        print(a[i]-b[i])
        print(" ")
    }
    println()

}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        while(b[i] % (n - 1) != 0L) {
            b[i]+=n.toLong()
        }
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    if(n == 1) {
        println("1 1")
        println(0)

    } else {
        println("1 ${n-1}")
        for (i in 0 until n-1) {
            print(-b[i])
            print(" ")
        }
    }
}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i].toLong()
    }
    for (i in 0 until n - 1) {
        b[i]+=(-n.toLong()*a[i])
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    if(n == 1) {
        println("1 1")
        println(0)

    } else {
        println("1 ${n-1}")
        for (i in 0 until n-1) {
            print(-b[i])
            print(" ")
        }
    }
}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toLong() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i]
    }
    for (i in 0 until n - 1) {
        b[i]+=(-n *a[i])
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    for (i in 0 until n) {
        print(b[i]-a[i])
        print(" ")
    }
    println()
    if(n == 1) {
        println("1 1")
        println(0)

    } else {
        println("1 ${n-1}")
        for (i in 0 until n-1) {
            print(-b[i])
            print(" ")
        }
    }
}


fun main() {
    val n = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map { it.toLong() }.toMutableList()
    val b = LongArray(n)
    for (i in 0 until n) {
        b[i] = a[i]
    }
    for (i in 0 until n - 1) {
        b[i]+=(-n *a[i])
    }
    println("$n $n")
    println(-b[n-1])
    println("1 $n")
    println((0 until n).map { b[it]-a[it] }.joinToString(separator=" "))
    if(n == 1) {
        println("1 1")
        println(0)

    } else {
        println("1 ${n-1}")
        println((0 until n-1).map { -b[it]}.joinToString(separator=" "))
    }
}


fun readInt() = readLine()!!.toInt()
fun readLongs() = readLine()!!.split(' ').map { it.toLong() }

fun main() {
    val n = readInt()
    val vs = readLongs()

    if (n == 1) {
        println("1 1")
        println(-vs[0])
        println("1 1")
        println("0")
        println("1 1")
        println("0")
    } else {
        println("1 1")
        println(-vs[0])
        println("2 $n")
        println((1 until n).map { vs[it]*(n-1) }.joinToString(separator=" "))
        println("1 $n")
        println("0 " + (1 until n).map { -vs[it]*n }.joinToString(separator=" "))
    }
}


fun readInt() = readLine()!!.toInt()
fun readInts() = readLine()!!.split(' ').map { it.toInt() }

fun main() {
    val n = readInt()
    val vs = readInts()

    if (n == 1) {
        println("1 1")
        println(-vs[0])
        println("1 1")
        println("0")
        println("1 1")
        println("0")
    } else {
        println("1 1")
        println((-vs[0]).toString() + " 0".repeat(n-1))
        println("2 $n")
        println("0 " + (1 until n).map { (n-1)*vs[it] }.joinToString(separator=" "))
        println("1 $n")
        println("0 " + (1 until n).map { -n*vs[it] }.joinToString(separator=" "))
    }
}


fun readInt() = readLine()!!.toInt()
fun readInts() = readLine()!!.split(' ').map { it.toInt() }

fun main() {
    val n = readInt()
    val vs = readInts()

    if (n == 1) {
        println("1 1")
        println(-vs[0])
        println("1 1")
        println("0")
        println("1 1")
        println("0")
    } else {
        println("1 1")
        println(-vs[0])
        println("2 $n")
        println((1 until n).map { (n-1)*vs[it] }.joinToString(separator=" "))
        println("1 $n")
        println("0 " + (1 until n).map { -n*vs[it] }.joinToString(separator=" "))
    }
}


import java.io.BufferedReader;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class C666A {
	public static void main(String[] args) throws NumberFormatException, IOException {
		FastReader sc = new FastReader();
		PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));

		int n = sc.nextInt();
		long[] a = new long[n];

		for(int i=0; i<n; i++) {
			a[i] = sc.nextLong();
		}

		if(n==1) {
			out.println("1 1");
			out.println("0");
			out.println("1 1");
			out.println("0");
			out.println("1 1");
			out.println(-a[0]);
			out.flush();
			return;
		}

		out.println("1 1");
		long mod = a[0]%n;
		a[0] += mod*(n-1);
		out.println(mod*(n-1));

		out.println("2 "+n);

		for(int i=1; i<n; i++) {
			mod = a[i]%n;
			a[i] += mod*(n-1);
			out.print((mod*(n-1))+" ");
		}
		out.println();
		out.println("1 "+n);

		for(int i=0; i<n; i++) {
			out.print(-a[i]+" ");
		}
		out.println();

		out.flush();
	}

	static class FastReader{BufferedReader br;StringTokenizer st;public FastReader()
	{br=new BufferedReader(new InputStreamReader(System.in), 32768);}
	String next(){while(st==null||!st.hasMoreElements())
	{try{st=new StringTokenizer(br.readLine());}
	catch(IOException e){e.printStackTrace();}}return st.nextToken();}
	int nextInt(){return Integer.parseInt(next());}
	long nextLong(){return Long.parseLong(next());}
	double nextDouble(){return Double.parseDouble(next());}
	String nextLine(){String str="";try{str=br.readLine();}
	catch(IOException e){e.printStackTrace();}return str;}}
}


import java.io.*;
import java.util.*;
import java.util.stream.*;

public class a implements Runnable{

    public static void main(String[] args) {
        new Thread(null, new a(), "process", 1<<26).start();
    }
	public void run() {
		FastReader scan = new FastReader();
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
		//PrintWriter out = new PrintWriter("file.out");
		Task solver = new Task();
		int t = scan.nextInt();
		//int t = 1;
		for(int i = 1; i <= t; i++) solver.solve(i, scan, out);
		out.close();
	}

	static class Task {
		static final int inf = Integer.MAX_VALUE;

		public void solve(int testNumber, FastReader sc, PrintWriter pw) {
			//CHECK FOR QUICKSORT TLE
			//***********************//
			//CHECK FOR INT OVERFLOW
			//***********************//
			int n = sc.nextInt();
			if(n == 1){
				sc.nextInt();
				pw.println("T");
			}
			else {
				TreeSet<tup> ts = new TreeSet<tup>();
				for(int i = 0; i < n; i++) {
					ts.add(new tup(sc.nextInt(), i));
				}
				tup t1 = ts.last();
				ts.remove(t1);
				tup t2 = ts.last();
				ts.remove(t2);
				while(ts.size() > 0) {
					if(t1.a > t2.a) {
						t1.a -= t2.a;
						t2 = ts.last();
						ts.remove(t2);
					}
					else {
						t2.a -= t1.a;
						t1 = ts.last();
						ts.remove(t1);
					}
				}

				if(t1.a > t2.a) {
					t1.a -= t2.a;
					t2.a = 0;
				}
				else {
					t2.a -= t1.a;
					t1.a = 0;
				}
				if(t1.a == 0 || t2.a > 0) {
					pw.println("HL");
				}
				else {
					pw.println("T");
				}
			}
		}
	}
	static long binpow(long a, long b, long m) {
		a %= m;
		long res = 1;
		while (b > 0) {
			if ((b & 1) == 1)
				res = res * a % m;
			a = a * a % m;
			b >>= 1;
		}
		return res;
	}
	static void sort(int[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static void sort(long[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static class tup implements Comparable<tup>{
		int a, b;
		tup(int a,int b){
			this.a=a;
			this.b=b;
		}
		@Override
		public int compareTo(tup o){
			return a == o.a ? Integer.compare(b, o.b) : Integer.compare(a,o.a);
		}
	}
	static void shuffle(int[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			int temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static void shuffle(long[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			long temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws FileNotFoundException {
			br = new BufferedReader(new FileReader(new File(s)));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}

}


// Problem : A. Multiples of Length
// Contest : Codeforces - Codeforces Round #666 (Div. 1)
// URL : https://codeforces.com/contest/1396/problem/0
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

import java.io.*;
import java.util.*;
import java.util.stream.*;

public class a implements Runnable{

    public static void main(String[] args) {
        new Thread(null, new a(), "process", 1<<26).start();
    }
	public void run() {
		FastReader scan = new FastReader();
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
		//PrintWriter out = new PrintWriter("file.out");
		Task solver = new Task();
		//int t = scan.nextInt();
		int t = 1;
		for(int i = 1; i <= t; i++) solver.solve(i, scan, out);
		out.close();
	}

	static class Task {
		static final int inf = Integer.MAX_VALUE;

		public void solve(int testNumber, FastReader sc, PrintWriter pw) {
			//CHECK FOR QUICKSORT TLE
			//***********************//
			//CHECK FOR INT OVERFLOW
			//***********************//
			int n = sc.nextInt();
			if(n == 1) {
				pw.println("1 1");
				pw.println(sc.nextInt());
				pw.println("1 1");
				pw.println(0);
				pw.println("1 1");
				pw.println(0);
				return;
			}
			long[] arr = new long[n];
			for(int i = 0; i < n; i++)  {
				arr[i] = sc.nextInt();
			}
			pw.println(1 + " "  +(n - 1));
			for(int i = 0; i < n - 1; i++) {
				long rem = arr[i] % n;
				arr[i] += rem * (n-1);
				pw.print(rem * (n-1) + " ");
			}
			pw.println();
			pw.println(n + " " + n);
			pw.println(n - (arr[n-1] % n));
			arr[n-1] += n - (arr[n-1] % n);
			pw.println(1 + " " + n);
			for(long x : arr) {
				pw.print(-x + " ");
			}
			pw.println();
		}
	}
	static long binpow(long a, long b, long m) {
		a %= m;
		long res = 1;
		while (b > 0) {
			if ((b & 1) == 1)
				res = res * a % m;
			a = a * a % m;
			b >>= 1;
		}
		return res;
	}
	static void sort(int[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static void sort(long[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static class tup implements Comparable<tup>{
		int a, b;
		tup(int a,int b){
			this.a=a;
			this.b=b;
		}
		@Override
		public int compareTo(tup o){
			return Integer.compare(o.b,b);
		}
	}
	static void shuffle(int[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			int temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static void shuffle(long[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			long temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws FileNotFoundException {
			br = new BufferedReader(new FileReader(new File(s)));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}

}


// Problem : A. Multiples of Length
// Contest : Codeforces - Codeforces Round #666 (Div. 1)
// URL : https://codeforces.com/contest/1396/problem/0
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

import java.io.*;
import java.util.*;
import java.util.stream.*;

public class a implements Runnable{

    public static void main(String[] args) {
        new Thread(null, new a(), "process", 1<<26).start();
    }
	public void run() {
		FastReader scan = new FastReader();
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
		//PrintWriter out = new PrintWriter("file.out");
		Task solver = new Task();
		//int t = scan.nextInt();
		int t = 1;
		for(int i = 1; i <= t; i++) solver.solve(i, scan, out);
		out.close();
	}

	static class Task {
		static final int inf = Integer.MAX_VALUE;

		public void solve(int testNumber, FastReader sc, PrintWriter pw) {
			//CHECK FOR QUICKSORT TLE
			//***********************//
			//CHECK FOR INT OVERFLOW
			//***********************//
			int n = sc.nextInt();
			long[] arr = new long[n];
			for(int i = 0; i < n; i++)  {
				arr[i] = sc.nextInt();
			}
			pw.println(1 + " "  +(n - 1));
			for(int i = 0; i < n - 1; i++) {
				long rem = arr[i] % n;
				arr[i] += rem * (n-1);
				pw.print(rem * (n-1) + " ");
			}
			pw.println();
			pw.println(n + " " + n);
			pw.println(n - (arr[n-1] % n));
			arr[n-1] += n - (arr[n-1] % n);
			pw.println(1 + " " + n);
			for(long x : arr) {
				pw.print(-x + " ");
			}
			pw.println();
		}
	}
	static long binpow(long a, long b, long m) {
		a %= m;
		long res = 1;
		while (b > 0) {
			if ((b & 1) == 1)
				res = res * a % m;
			a = a * a % m;
			b >>= 1;
		}
		return res;
	}
	static void sort(int[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static void sort(long[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static class tup implements Comparable<tup>{
		int a, b;
		tup(int a,int b){
			this.a=a;
			this.b=b;
		}
		@Override
		public int compareTo(tup o){
			return Integer.compare(o.b,b);
		}
	}
	static void shuffle(int[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			int temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static void shuffle(long[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			long temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws FileNotFoundException {
			br = new BufferedReader(new FileReader(new File(s)));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}

}


// Problem : A. Multiples of Length
// Contest : Codeforces - Codeforces Round #666 (Div. 1)
// URL : https://codeforces.com/contest/1396/problem/0
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

import java.io.*;
import java.util.*;
import java.util.stream.*;

public class a implements Runnable{

    public static void main(String[] args) {
        new Thread(null, new a(), "process", 1<<26).start();
    }
	public void run() {
		FastReader scan = new FastReader();
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
		//PrintWriter out = new PrintWriter("file.out");
		Task solver = new Task();
		//int t = scan.nextInt();
		int t = 1;
		for(int i = 1; i <= t; i++) solver.solve(i, scan, out);
		out.close();
	}

	static class Task {
		static final int inf = Integer.MAX_VALUE;

		public void solve(int testNumber, FastReader sc, PrintWriter pw) {
			//CHECK FOR QUICKSORT TLE
			//***********************//
			//CHECK FOR INT OVERFLOW
			//***********************//
			int n = sc.nextInt();
			if(n == 1) {
				pw.println("1 1");
				pw.println(sc.nextInt());
				pw.println("1 1");
				pw.println(0);
				pw.println("1 1");
				pw.println(0);
			}
			long[] arr = new long[n];
			for(int i = 0; i < n; i++)  {
				arr[i] = sc.nextInt();
			}
			pw.println(1 + " "  +(n - 1));
			for(int i = 0; i < n - 1; i++) {
				long rem = arr[i] % n;
				arr[i] += rem * (n-1);
				pw.print(rem * (n-1) + " ");
			}
			pw.println();
			pw.println(n + " " + n);
			pw.println(n - (arr[n-1] % n));
			arr[n-1] += n - (arr[n-1] % n);
			pw.println(1 + " " + n);
			for(long x : arr) {
				pw.print(-x + " ");
			}
			pw.println();
		}
	}
	static long binpow(long a, long b, long m) {
		a %= m;
		long res = 1;
		while (b > 0) {
			if ((b & 1) == 1)
				res = res * a % m;
			a = a * a % m;
			b >>= 1;
		}
		return res;
	}
	static void sort(int[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static void sort(long[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static class tup implements Comparable<tup>{
		int a, b;
		tup(int a,int b){
			this.a=a;
			this.b=b;
		}
		@Override
		public int compareTo(tup o){
			return Integer.compare(o.b,b);
		}
	}
	static void shuffle(int[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			int temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static void shuffle(long[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			long temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws FileNotFoundException {
			br = new BufferedReader(new FileReader(new File(s)));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}

}


// Problem : A. Multiples of Length
// Contest : Codeforces - Codeforces Round #666 (Div. 1)
// URL : https://codeforces.com/contest/1396/problem/0
// Memory Limit : 256 MB
// Time Limit : 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

import java.io.*;
import java.util.*;
import java.util.stream.*;

public class a implements Runnable{

    public static void main(String[] args) {
        new Thread(null, new a(), "process", 1<<26).start();
    }
	public void run() {
		FastReader scan = new FastReader();
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
		//PrintWriter out = new PrintWriter("file.out");
		Task solver = new Task();
		//int t = scan.nextInt();
		int t = 1;
		for(int i = 1; i <= t; i++) solver.solve(i, scan, out);
		out.close();
	}

	static class Task {
		static final int inf = Integer.MAX_VALUE;

		public void solve(int testNumber, FastReader sc, PrintWriter pw) {
			//CHECK FOR QUICKSORT TLE
			//***********************//
			//CHECK FOR INT OVERFLOW
			//***********************//
			int n = sc.nextInt();
			if(n == 1) {
				pw.println("1 1");
				pw.println(1);
				pw.println("1 1");
				pw.println(1);
				pw.println("1 1");
				pw.println(-sc.nextInt() - 2);
				return;
			}
			long[] arr = new long[n];
			for(int i = 0; i < n; i++)  {
				arr[i] = sc.nextInt();
			}
			pw.println(1 + " "  +(n - 1));
			for(int i = 0; i < n - 1; i++) {
				long rem = arr[i] % n;
				arr[i] += rem * (n-1);
				pw.print(rem * (n-1) + " ");
			}
			pw.println();
			pw.println(n + " " + n);
			pw.println(n - (arr[n-1] % n));
			arr[n-1] += n - (arr[n-1] % n);
			pw.println(1 + " " + n);
			for(long x : arr) {
				pw.print(-x + " ");
			}
			pw.println();
		}
	}
	static long binpow(long a, long b, long m) {
		a %= m;
		long res = 1;
		while (b > 0) {
			if ((b & 1) == 1)
				res = res * a % m;
			a = a * a % m;
			b >>= 1;
		}
		return res;
	}
	static void sort(int[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static void sort(long[] x){
		shuffle(x);
		Arrays.sort(x);
	}
	static class tup implements Comparable<tup>{
		int a, b;
		tup(int a,int b){
			this.a=a;
			this.b=b;
		}
		@Override
		public int compareTo(tup o){
			return Integer.compare(o.b,b);
		}
	}
	static void shuffle(int[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			int temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static void shuffle(long[] a) {
		Random get = new Random();
		for (int i = 0; i < a.length; i++) {
			int r = get.nextInt(i + 1);
			long temp = a[i];
			a[i] = a[r];
			a[r] = temp;
		}
	}

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws FileNotFoundException {
			br = new BufferedReader(new FileReader(new File(s)));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
	}

}


import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Locale;
import java.util.StringTokenizer;

public class Solution implements Runnable {

	private PrintStream out;
	private BufferedReader in;
	private StringTokenizer st;

	public void solve() throws IOException {
		long time0 = System.currentTimeMillis();

		int n = nextInt();
		int[] a = new int[n];
		for (int i = 0; i < n; i++) {
			a[i] = nextInt();
		}
		AnswerLine[] answer = solve(n, a);
		for (int i = 0; i < 3; i++) {
			out.println(answer[i]);
		}

		System.err.println("time: " + (System.currentTimeMillis() - time0));
	}

	private AnswerLine[] solve(int n, int[] a) {
		AnswerLine[] result = new AnswerLine[3];
		result[0] = new AnswerLine(0, 0);
		result[0].b[0] = -a[0];
		a[0] = 0;
		if (n == 1) {
			result[1] = new AnswerLine(0, 0);
			result[2] = new AnswerLine(0, 0);
			return result;
		}
		result[1] = new AnswerLine(1, n - 1);
		result[2] = new AnswerLine(0, n - 1);
		for (int i = 1; i < n; i++) {
			result[1].b[i - 1] = 1L * (n - 1) * a[i];
		}
		for (int i = 0; i < n; i++) {
			result[2].b[i] = -1L * n * a[i];
		}
		return result;
	}

	private static final class AnswerLine {
		private int l;
		private int r;
		private long[] b;
		private AnswerLine(int l, int r) {
			this.l = l;
			this.r = r;
			this.b = new long[r - l + 1];
		}
		public String toString() {
			StringBuilder buf = new StringBuilder();
			buf.append((l + 1) + " " + (r + 1)).append("\n");
			for (int i = 0; i < b.length; i++) {
				if (i > 0) {
					buf.append(' ');
				}
				buf.append(b[i]);
			}
			return buf.toString();
		}
	}

	public double nextDouble() throws IOException {
		return Double.parseDouble(next());
	}

	public long nextLong() throws IOException {
		return Long.parseLong(next());
	}

	public int nextInt() throws IOException {
		return Integer.parseInt(next());
	}

	public String next() throws IOException {
		while (!st.hasMoreTokens()) {
			String line = in.readLine();
			if (line == null) {
				return null;
			}
			st = new StringTokenizer(line);
		}
		return st.nextToken();
	}

	@Override
	public void run() {
		try {
			solve();
			out.close();
		} catch (Throwable e) {
			throw new RuntimeException(e);
		}
	}

	public Solution(String name) throws IOException {
		Locale.setDefault(Locale.US);
		if (name == null) {
			in = new BufferedReader(new InputStreamReader(System.in));
			out = new PrintStream(new BufferedOutputStream(System.out));
		} else {
			in = new BufferedReader(new InputStreamReader(new FileInputStream(name + ".in")));
			out = new PrintStream(new BufferedOutputStream(new FileOutputStream(name + ".out")));
		}
		st = new StringTokenizer("");
	}

	public static void main(String[] args) throws IOException {
		new Thread(new Solution(null)).start();
	}
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.io.Closeable;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) throws Exception {
        Thread thread = new Thread(null, new TaskAdapter(), "", 1 << 29);
        thread.start();
        thread.join();
    }

    static class TaskAdapter implements Runnable {
        @Override
        public void run() {
            InputStream inputStream = System.in;
            OutputStream outputStream = System.out;
            FastInput in = new FastInput(inputStream);
            FastOutput out = new FastOutput(outputStream);
            AMultiplesOfLength solver = new AMultiplesOfLength();
            solver.solve(1, in, out);
            out.close();
        }
    }

    static class AMultiplesOfLength {
        public void solve(int testNumber, FastInput in, FastOutput out) {
            int n = in.readInt();
            long[] a = new long[n];
            in.populate(a);
            if (n == 1) {
                out.println("1 1");
                out.println(-a[0]);
                out.println("1 1");
                out.println(0);
                out.println("1 1");
                out.println(0);
                return;
            }

            out.append(1).append(' ').append(n - 1).println();
            for (int i = 0; i < n - 1; i++) {
                long k = a[i];
                out.append(k * (n - 1)).append(' ');
            }
            out.println();
            out.append(n).append(' ').append(n).println();
            out.append(-a[n - 1]).println();
            out.append(1).append(' ').append(n).println();
            for (int i = 0; i < n - 1; i++) {
                long k = a[i];
                out.append(-k * n).append(' ');
            }
            out.append(0).println();
        }

    }

    static class FastInput {
        private final InputStream is;
        private byte[] buf = new byte[1 << 13];
        private int bufLen;
        private int bufOffset;
        private int next;

        public FastInput(InputStream is) {
            this.is = is;
        }

        public void populate(long[] data) {
            for (int i = 0; i < data.length; i++) {
                data[i] = readLong();
            }
        }

        private int read() {
            while (bufLen == bufOffset) {
                bufOffset = 0;
                try {
                    bufLen = is.read(buf);
                } catch (IOException e) {
                    bufLen = -1;
                }
                if (bufLen == -1) {
                    return -1;
                }
            }
            return buf[bufOffset++];
        }

        public void skipBlank() {
            while (next >= 0 && next <= 32) {
                next = read();
            }
        }

        public int readInt() {
            int sign = 1;

            skipBlank();
            if (next == '+' || next == '-') {
                sign = next == '+' ? 1 : -1;
                next = read();
            }

            int val = 0;
            if (sign == 1) {
                while (next >= '0' && next <= '9') {
                    val = val * 10 + next - '0';
                    next = read();
                }
            } else {
                while (next >= '0' && next <= '9') {
                    val = val * 10 - next + '0';
                    next = read();
                }
            }

            return val;
        }

        public long readLong() {
            int sign = 1;

            skipBlank();
            if (next == '+' || next == '-') {
                sign = next == '+' ? 1 : -1;
                next = read();
            }

            long val = 0;
            if (sign == 1) {
                while (next >= '0' && next <= '9') {
                    val = val * 10 + next - '0';
                    next = read();
                }
            } else {
                while (next >= '0' && next <= '9') {
                    val = val * 10 - next + '0';
                    next = read();
                }
            }

            return val;
        }

    }

    static class FastOutput implements AutoCloseable, Closeable, Appendable {
        private StringBuilder cache = new StringBuilder(10 << 20);
        private final Writer os;

        public FastOutput append(CharSequence csq) {
            cache.append(csq);
            return this;
        }

        public FastOutput append(CharSequence csq, int start, int end) {
            cache.append(csq, start, end);
            return this;
        }

        public FastOutput(Writer os) {
            this.os = os;
        }

        public FastOutput(OutputStream os) {
            this(new OutputStreamWriter(os));
        }

        public FastOutput append(char c) {
            cache.append(c);
            return this;
        }

        public FastOutput append(int c) {
            cache.append(c);
            return this;
        }

        public FastOutput append(long c) {
            cache.append(c);
            return this;
        }

        public FastOutput append(String c) {
            cache.append(c);
            return this;
        }

        public FastOutput println(String c) {
            return append(c).println();
        }

        public FastOutput println(int c) {
            return append(c).println();
        }

        public FastOutput println(long c) {
            return append(c).println();
        }

        public FastOutput println() {
            cache.append(System.lineSeparator());
            return this;
        }

        public FastOutput flush() {
            try {
                os.append(cache);
                os.flush();
                cache.setLength(0);
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
            return this;
        }

        public void close() {
            flush();
            try {
                os.close();
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        }

        public String toString() {
            return cache.toString();
        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskA solver = new TaskA();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskA {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int N = in.nextInt();
            long[] arr = new long[N];
            for (int i = 0; i < N; i++) {
                arr[i] = in.nextInt();
            }
            long[] subtract = new long[N];
            out.println("1 " + (N - 1));
            for (int i = 0; i < N; i++) {
                long a = MathUtils.mod(arr[i], N);
                if (i == N - 1) {
                    subtract[i] = N - a;
                    arr[i] = (N - a) + arr[i];
                    out.println();
                    out.println(N + " " + N);
                    out.println(subtract[i]);
                } else {
                    arr[i] = (a) * (N - 1) + arr[i];
                    subtract[i] = (a) * (N - 1);
                    out.print(subtract[i] + " ");
                }
            }
            out.println("1 " + N);
            for (int i = 0; i < N; i++) {
                out.print(-arr[i]);
                out.print(" ");
            }
        }

    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }

    static class MathUtils {
        public static long mod(long a, long mod) {
            return (a + (Math.abs(a) + mod - 1) / mod * mod) % mod;
        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskA solver = new TaskA();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskA {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int N = in.nextInt();
            long[] arr = new long[N];
            for (int i = 0; i < N; i++) {
                arr[i] = in.nextInt();
            }
            if (N == 1) {
                out.println("1 1");
                out.println(-arr[0]);
                for (int i = 0; i < 2; i++) {
                    out.println("1 1");
                    out.println(0);

                }
            } else {
                long[] subtract = new long[N];
                out.println("1 " + (N - 1));
                for (int i = 0; i < N; i++) {
                    long a = MathUtils.mod(arr[i], N);
                    if (i == N - 1) {
                        subtract[i] = N - a;
                        arr[i] = (N - a) + arr[i];
                        out.println();
                        out.println(N + " " + N);
                        out.println(subtract[i]);
                    } else {
                        arr[i] = (a) * (N - 1) + arr[i];
                        subtract[i] = (a) * (N - 1);
                        out.print(subtract[i] + " ");
                    }
                }
                out.println("1 " + N);
                for (int i = 0; i < N; i++) {
                    out.print(-arr[i]);
                    out.print(" ");
                }
            }
        }

    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }

    static class MathUtils {
        public static long mod(long a, long mod) {
            return (a + (Math.abs(a) + mod - 1) / mod * mod) % mod;
        }

    }
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class MultiplesOfLength {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastScanner fs = new FastScanner();
		int n = fs.nextInt();
		int a[]=new int[n];
		for(int i=0;i<n;i++)
			a[i]=fs.nextInt();
		if(n==1)
			{
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println("-1");
			}
		else
		{
			int p[]=new int[n];
			System.out.println("1 "+n);
			for(int i=0;i<n;i++)
			{
				p[i]=a[i]-a[i]*n;
				System.out.print(-1*a[i]*n+" ");
			}
			System.out.println();
			System.out.println("1 "+ (n-1));
			for(int i=0;i<n-1;i++)
			{
				p[i]=a[i]+a[i]*(n-1);
				System.out.print(a[i]*(n-1)+ " " );
			}
			System.out.println();
			System.out.println((n) + " " + n);
			System.out.println(a[n-1]*(n-1));

		}

	}

	static class FastScanner
    {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner()
        {
            br = new BufferedReader(new
                     InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class MultiplesOfLength {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastScanner fs = new FastScanner();
		int n = fs.nextInt();
		long a[]=new long[n];
		for(int i=0;i<n;i++)
			a[i]=fs.nextLong();
		if(n==1)
			{
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println("-1");
			}
		else
		{
			long p[]=new long[n];
			System.out.println("1 "+n);
			for(int i=0;i<n;i++)
			{
				p[i]=a[i]-a[i]*n;
				System.out.print(-1*a[i]*n+" ");
			}
			System.out.println();
			System.out.println("1 "+ (n-1));
			for(int i=0;i<n-1;i++)
			{
				p[i]=a[i]+a[i]*(n-1);
				System.out.print(a[i]*(n-1)+ " " );
			}
			System.out.println();
			System.out.println((n) + " " + n);
			System.out.print(a[n-1]*(n-1));

		}

	}

	static class FastScanner
    {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner()
        {
            br = new BufferedReader(new
                     InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class MultiplesOfLength {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastScanner fs = new FastScanner();
		int n = fs.nextInt();
		int a[]=new int[n];
		for(int i=0;i<n;i++)
			a[i]=fs.nextInt();
		if(n==1)
			{
				System.out.println("0 0");
				System.out.println("0");
				System.out.println("0 0");
				System.out.println("0");
				System.out.println("0 1");
				System.out.println("-1");
			}
		else
		{
			int p[]=new int[n];
			System.out.println("1 "+n);
			for(int i=0;i<n;i++)
			{
				p[i]=a[i]-a[i]*n;
				System.out.print(-1*a[i]*n+" ");
			}
			System.out.println();
			System.out.println("1 "+ (n-1));
			for(int i=0;i<n-1;i++)
			{
				p[i]=a[i]+a[i]*(n-1);
				System.out.print(a[i]*(n-1)+ " " );
			}
			System.out.println();
			System.out.println((n) + " " + n);
			System.out.println(a[n-1]*(n-1));

		}

	}

	static class FastScanner
    {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner()
        {
            br = new BufferedReader(new
                     InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class MultiplesOfLength {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastScanner fs = new FastScanner();
		int n = fs.nextInt();
		long a[]=new long[n];
		for(int i=0;i<n;i++)
			a[i]=fs.nextLong();
		if(n==1)
			{
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println("0");
				System.out.println("1 1");
				System.out.println(a[0]*-1);
			}
		else
		{
			long p[]=new long[n];
			System.out.println("1 "+n);
			for(int i=0;i<n;i++)
			{
				p[i]=a[i]-a[i]*n;
				System.out.print(-1*a[i]*n+" ");
			}
			System.out.println();
			System.out.println("1 "+ (n-1));
			for(int i=0;i<n-1;i++)
			{
				p[i]=a[i]+a[i]*(n-1);
				System.out.print(a[i]*(n-1)+ " " );
			}
			System.out.println();
			System.out.println((n) + " " + n);
			System.out.print(a[n-1]*(n-1));

		}

	}

	static class FastScanner
    {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner()
        {
            br = new BufferedReader(new
                     InputStreamReader(System.in));
        }

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt()
        {
            return Integer.parseInt(next());
        }

        long nextLong()
        {
            return Long.parseLong(next());
        }

        double nextDouble()
        {
            return Double.parseDouble(next());
        }

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}


import java.util.*;
import java.io.*;

public class Multiples_Of_Length {

	static class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastReader t = new FastReader();
		PrintWriter o = new PrintWriter(System.out);
		int n = t.nextInt();
		long[] a = new long[n];

		for (int i = 0; i < n; ++i)
			a[i] = t.nextLong();

		if (n == 1) {
			o.println("1 1");
			o.println(-a[0]);
			o.println("1 1");
			o.println("0");
			o.println("1 1");
			o.println("0");

		} else {
			o.println("1 1");
			o.println(-a[0]);
			o.println("1 " + n);

			a[0] = 0;

			for (int i = 0; i < n; ++i)
				o.print(-n * a[i] + " ");

			o.println("\n2 " + n);

			for (int i = 1; i < n; ++i)
				o.print((n - 1) * a[i] + " ");

		}

		o.flush();
		o.close();
	}
}


import java.io.*;
import java.util.*;

public class Main{
	static void main() throws Exception{
		int n=sc.nextInt();
		long[]in=sc.longArr(n);
		StringBuilder ans=new StringBuilder();
		ans.append(1+" "+(n-1)+'\n');
		for(int i=0;i<n-1;i++) {
			long mod=(in[i]%n);
			long inc=mod*1l*n-mod;
			in[i]+=inc;
			ans.append((inc)+" ");
		}
		ans.append('\n');
		ans.append(2+" "+(n)+'\n');
		for(int i=1;i<n;i++) {
			long mod=(in[i]%n);
			long inc=mod*1l*n-mod;
			in[i]+=inc;
			ans.append((inc)+" ");
		}
		ans.append('\n');
		ans.append(1+" "+(n)+'\n');
		for(int i=0;i<n;i++) {
			ans.append((-in[i])+" ");
		}
		ans.append('\n');
		pw.print(ans);
	}
	public static void main(String[] args) throws Exception{
		sc=new MScanner(System.in);
		pw = new PrintWriter(System.out);
		int tc=1;
//		tc=sc.nextInt();
		while(tc-->0)
			main();
		pw.flush();
	}
	static PrintWriter pw;
	static MScanner  sc;
	static class MScanner {
		StringTokenizer st;
		BufferedReader br;
		public MScanner(InputStream system) {
			br = new BufferedReader(new InputStreamReader(system));
		}

		public MScanner(String file) throws Exception {
			br = new BufferedReader(new FileReader(file));
		}

		public String next() throws IOException {
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
		public int[] intArr(int n) throws IOException {
	        int[]in=new int[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        return in;
		}
		public long[] longArr(int n) throws IOException {
	        long[]in=new long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        return in;
		}
		public int[] intSortedArr(int n) throws IOException {
	        int[]in=new int[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        shuffle(in);
	        Arrays.sort(in);
	        return in;
		}
		public long[] longSortedArr(int n) throws IOException {
	        long[]in=new long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        shuffle(in);
	        Arrays.sort(in);
	        return in;
		}
		public Integer[] IntegerArr(int n) throws IOException {
	        Integer[]in=new Integer[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        return in;
		}
		public Long[] LongArr(int n) throws IOException {
	        Long[]in=new Long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        return in;
		}
		public String nextLine() throws IOException {
			return br.readLine();
		}

		public int nextInt() throws IOException {
			return Integer.parseInt(next());
		}

		public double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}

		public char nextChar() throws IOException {
			return next().charAt(0);
		}

		public long nextLong() throws IOException {
			return Long.parseLong(next());
		}

		public boolean ready() throws IOException {
			return br.ready();
		}

		public void waitForInput() throws InterruptedException {
			Thread.sleep(3000);
		}
	}
	static void shuffle(int[]in) {
		for(int i=0;i<in.length;i++) {
			int idx=(int)(Math.random()*in.length);
			int tmp=in[i];
			in[i]=in[idx];
			in[idx]=tmp;
		}
	}
	static void shuffle(long[]in) {
		for(int i=0;i<in.length;i++) {
			int idx=(int)(Math.random()*in.length);
			long tmp=in[i];
			in[i]=in[idx];
			in[idx]=tmp;
		}
	}
}


import java.io.*;
import java.util.*;

public class Main{
	static void main() throws Exception{
		int n=sc.nextInt();
		long[]in=sc.longArr(n);
		if(n==1) {
			pw.println(1+" "+1);
			pw.println(-in[0]);
			pw.println(1+" "+1);
			pw.println(0);
			pw.println(1+" "+1);
			pw.println(0);
			return;
		}
		StringBuilder ans=new StringBuilder();
		ans.append(1+" "+(n-1)+'\n');
		for(int i=0;i<n-1;i++) {
			long mod=(in[i]%n);
			long inc=mod*1l*n-mod;
			in[i]+=inc;
			ans.append((inc)+" ");
		}
		ans.append('\n');
		ans.append(2+" "+(n)+'\n');
		for(int i=1;i<n;i++) {
			long mod=(in[i]%n);
			long inc=mod*1l*n-mod;
			in[i]+=inc;
			ans.append((inc)+" ");
		}
		ans.append('\n');
		ans.append(1+" "+(n)+'\n');
		for(int i=0;i<n;i++) {
			ans.append((-in[i])+" ");
		}
		ans.append('\n');
		pw.print(ans);
	}
	public static void main(String[] args) throws Exception{
		sc=new MScanner(System.in);
		pw = new PrintWriter(System.out);
		int tc=1;
//		tc=sc.nextInt();
		while(tc-->0)
			main();
		pw.flush();
	}
	static PrintWriter pw;
	static MScanner  sc;
	static class MScanner {
		StringTokenizer st;
		BufferedReader br;
		public MScanner(InputStream system) {
			br = new BufferedReader(new InputStreamReader(system));
		}

		public MScanner(String file) throws Exception {
			br = new BufferedReader(new FileReader(file));
		}

		public String next() throws IOException {
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
		public int[] intArr(int n) throws IOException {
	        int[]in=new int[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        return in;
		}
		public long[] longArr(int n) throws IOException {
	        long[]in=new long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        return in;
		}
		public int[] intSortedArr(int n) throws IOException {
	        int[]in=new int[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        shuffle(in);
	        Arrays.sort(in);
	        return in;
		}
		public long[] longSortedArr(int n) throws IOException {
	        long[]in=new long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        shuffle(in);
	        Arrays.sort(in);
	        return in;
		}
		public Integer[] IntegerArr(int n) throws IOException {
	        Integer[]in=new Integer[n];for(int i=0;i<n;i++)in[i]=nextInt();
	        return in;
		}
		public Long[] LongArr(int n) throws IOException {
	        Long[]in=new Long[n];for(int i=0;i<n;i++)in[i]=nextLong();
	        return in;
		}
		public String nextLine() throws IOException {
			return br.readLine();
		}

		public int nextInt() throws IOException {
			return Integer.parseInt(next());
		}

		public double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}

		public char nextChar() throws IOException {
			return next().charAt(0);
		}

		public long nextLong() throws IOException {
			return Long.parseLong(next());
		}

		public boolean ready() throws IOException {
			return br.ready();
		}

		public void waitForInput() throws InterruptedException {
			Thread.sleep(3000);
		}
	}
	static void shuffle(int[]in) {
		for(int i=0;i<in.length;i++) {
			int idx=(int)(Math.random()*in.length);
			int tmp=in[i];
			in[i]=in[idx];
			in[idx]=tmp;
		}
	}
	static void shuffle(long[]in) {
		for(int i=0;i<in.length;i++) {
			int idx=(int)(Math.random()*in.length);
			long tmp=in[i];
			in[i]=in[idx];
			in[idx]=tmp;
		}
	}
}


//JHope
import java.util.*;
import java.io.*;
import java.math.*;

   public class A
   {
      public static void main(String army[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         long[] arr = new long[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Long.parseLong(st.nextToken());
         StringBuilder sb = new StringBuilder();
         if(N == 1)
         {
            System.out.println("1 1");
            System.out.println(-1*arr[0]);
            System.out.println("1 1");
            System.out.println(0);
            System.out.println("1 1");
            System.out.println(0);
         }
         else
         {
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
            {
               long rem = arr[i]%N;
               long val = rem*(N-1);
               sb.append(val+" ");
               arr[i] += val;
            }
            sb.append("\n");
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
            {
               if(i == N-1)
                  sb.append(0+" ");
               else
                  sb.append(-1*arr[i]+" ");
            }
            sb.append("\n");
            sb.append(N+" "+N+"\n");
            sb.append(-1*arr[N-1]+"\n");
            System.out.print(sb);
         }
      }
   }


//JHope
import java.util.*;
import java.io.*;
import java.math.*;

   public class A
   {
      public static void main(String army[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         long[] arr = new long[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Long.parseLong(st.nextToken());
         StringBuilder sb = new StringBuilder();
         if(N == 1)
         {
            System.out.println("1 1");
            System.out.println(-1*arr[0]);
            System.out.println("1 1");
            System.out.println(0);
            System.out.println("1 1");
            System.out.println(0);
         }
         else
         {
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
            {
               long rem = arr[i]%N;
               long val = rem*(N-1);
               sb.append(val+" ");
               arr[i] += val;
            }
            sb.append("\n");
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
            sb.append("1 1\n");
            sb.append("0\n");
            System.out.print(sb);
         }
      }
   }


//JHope
import java.util.*;
import java.io.*;
import java.math.*;

   public class A
   {
      public static void main(String army[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         long[] arr = new long[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Long.parseLong(st.nextToken());
         StringBuilder sb = new StringBuilder();
         if(N%2 == 1)
         {
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
            {
               long val = arr[i]*N;
               arr[i] += val;
               sb.append(val+" ");
            }
            sb.append("\n");
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
         }
         else
         {
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
            {
               long val = arr[i]*(N-1);
               arr[i] += val;
               sb.append(val+" ");
            }
            sb.append("\n");
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
            sb.append(N+" "+N+"\n");
            sb.append(-1*arr[N-1]+"\n");
         }
         System.out.print(sb);
      }
   }


//JHope
import java.util.*;
import java.io.*;
import java.math.*;

   public class A
   {
      public static void main(String army[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         long[] arr = new long[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Long.parseLong(st.nextToken());
         StringBuilder sb = new StringBuilder();
         if(N == 1)
         {
            System.out.println("1 1");
            System.out.println(-1*arr[0]);
            System.out.println("1 1");
            System.out.println(0);
            System.out.println("1 1");
            System.out.println(0);
         }
         else
         {
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
            {
               long rem = arr[i]%N;
               long val = rem*(N-1);
               sb.append(val+" ");
               arr[i] += val;
            }
            sb.append("\n");
            sb.append("1 "+N+"\n");
            for(int i=0; i < N-1; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
            sb.append(N+" "+N+"\n");
            sb.append(-1*arr[N-1]+"\n");
            System.out.print(sb);
         }
      }
   }


//JHope
import java.util.*;
import java.io.*;
import java.math.*;

   public class A
   {
      public static void main(String army[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         int N = Integer.parseInt(st.nextToken());
         long[] arr = new long[N];
         st = new StringTokenizer(infile.readLine());
         for(int i=0; i < N; i++)
            arr[i] = Long.parseLong(st.nextToken());
         StringBuilder sb = new StringBuilder();
         if(N%2 == 1)
         {
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
            {
               long val = arr[i]*(N-1);
               arr[i] += val;
               sb.append(val+" ");
            }
            sb.append("\n");
            sb.append("1 "+N+"\n");
            for(int i=0; i < N; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
         }
         else
         {
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
            {
               long val = arr[i]*(N-2);
               arr[i] += val;
               sb.append(val+" ");
            }
            sb.append("\n");
            sb.append("1 "+(N-1)+"\n");
            for(int i=0; i < N-1; i++)
               sb.append(-1*arr[i]+" ");
            sb.append("\n");
            sb.append(N+" "+N+"\n");
            sb.append(-1*arr[N-1]+"\n");
         }
         System.out.print(sb);
      }
   }


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		int t = 1;
		while (t-- > 0) {
			int n = ni();
			long a[] = nla(n);
			if (n == 1) {
				ps(1, 1);
				pln();
				pln(-a[0]);
				ps(1, 1);
				pln();
				pln(0);
				ps(1, 1);
				pln();
				pln(0);
				continue;
			}

			ps(1, n);
			pln();
			for (int i = 0; i < n; i++) {
				ps(-n * a[i]);
			}
			pln();
			ps(1, n - 1);
			pln();
			for (int i = 0; i < n - 1; i++) {
				ps((n - 1) * a[i]);
			}
			pln();
			ps(2, n);
			pln();
			for (int i = 1; i < n - 1; i++)
				ps("0");
			ps((n - 1) * a[n - 1]);
			pln();
		}
		flush();
	}

	static Reader in = new Reader();
	static StringBuilder output = new StringBuilder();
	static final int imod = 1000_000_007;
	static final long mod = 1000_000_007;
	static final int imax = 1000_000_000;
	static final int imin = -1000_000_000;
	static final long lmax = 1000_000_000_000_000_000L;
	static final long lmin = -1000_000_000_000_000_000L;

	//input functions
	static int ni() {return Integer.parseInt(in.next());}
	static long nl() {return Long.parseLong(in.next());}
	static String ns() {return in.next();}
	static double nd() {return Double.parseDouble(in.next());}
	static int[] eia(int n) {int a[] = new int[n]; return a;}
	static long[] ela(int n) {long a[] = new long[n]; return a;}
	static double[] eda(int n) {double a[] = new double[n]; return a;}
	static String[] esa(int n) {String a[] = new String[n]; return a;}
	static int[] nia(int n) {int a[] = new int[n]; for (int i = 0; i < n; i++)a[i] = ni(); return a;}
	static long[] nla(int n) {long a[] = new long[n]; for (int i = 0; i < n; i++)a[i] = nl(); return a;}
	static String[] nsa(int n) {String a[] = new String[n]; for (int i = 0; i < n; i++)a[i] = ns(); return a;}
	static double[] nda(int n) {double a[] = new double[n]; for (int i = 0; i < n; i++)a[i] = nd(); return a;}

	//output functions
	static void print(String a[]) {for (String i : a) System.out.print(i + " "); System.out.println();}
	static void print(int a[]) {for (int i : a) System.out.print(i + " "); System.out.println();}
	static void print(long a[]) {for (long i : a) System.out.print(i + " "); System.out.println();}
	static void print(double a[]) {for (double i : a) System.out.print(i + " "); System.out.println();}
	static void print(Object... a) {for (Object i : a) {System.out.print(i); System.out.print(" ");} System.out.println();}
	static void println(Object... a) {for (Object i : a) {System.out.print(i); System.out.print("\n");}}
	static void println() {System.out.println();}
	static void flush() {System.out.print(output); output = new StringBuilder();}
	static void pln(int []a) {for (int i : a) {output.append(i).append('\n');}}
	static void pln(long []a) {for (long i : a) {output.append(i).append('\n');}}
	static void pln(double []a) {for (double i : a) {output.append(i).append('\n');}}
	static void pln(String []a) {for (String i : a) {output.append(i).append('\n');}}
	static void pln(Object...a) {for (Object i : a) {output.append(i).append('\n');}}
	static void pln() {output.append('\n');}
	static void p(int []a) {for (int i : a) {output.append(i);}}
	static void p(long []a) {for (long i : a) {output.append(i);}}
	static void p(double []a) {for (double i : a) {output.append(i);}}
	static void p(String []a) {for (String i : a) {output.append(i);}}
	static void p(Object[] a) {for (Object i : a) {output.append(i);}}
	static void ps() {output.append(" ");}
	static void ps(int []a) {for (int i : a) {output.append(i).append(" ");}}
	static void ps(long []a) {for (long i : a) {output.append(i).append(" ");}}
	static void ps(double []a) {for (double i : a) {output.append(i).append(" ");}}
	static void ps(String []a) {for (String i : a) {output.append(i).append(" ");}}
	static void ps(Object... a) {for (Object i : a) {output.append(i).append(" ");}}

	//Utility functions
	static int lowerbound(int[]a, int key) { // returns index of smallest element larger than equal to given element between indices l and r inclusive
		int low = 0, high = a.length - 1, mid = (low + high) / 2; while (low < high) {if (a[mid] >= key)high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;
	}
	static int upperbound(int[]a, int key) {int low = 0, high = a.length - 1, mid = (low + high + 1) / 2; while (low < high) {if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;}
	static int lowerbound(int[]a, int l, int r, int key) { int low = l, high = r, mid = (low + high) / 2; while (low < high) { if (a[mid] >= key) high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;}
	static int upperbound(int[]a, int l, int r, int key) { // returns index of largest element smaller than equal to given element
		int low = l, high = r, mid = (low + high + 1) / 2; while (low < high) { if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;
	}

	static long powm(long a, long b, long mod) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long powm(long a, long b) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long pow(long a, long b) {long an = 1; long c = a; while (b > 0) {if (b % 2 == 1)an *= c; c *= c; b >>= 1;} return an;}
	static void reverse(int[]a) {for (int i = 0; i < a.length / 2; i++) {a[i] ^= a[a.length - i - 1]; a[a.length - i - 1] ^= a[i]; a[i] ^= a[a.length - i - 1];}}
	static void exit() {System.exit(0);}
	static int min(int... a) {int min = a[0]; for (int i : a)min = Math.min(min, i); return min;}
	static long min(long... a) {long min = a[0]; for (long i : a)min = Math.min(min, i); return min;}
	static double min(double... a) {double min = a[0]; for (double i : a)min = Math.min(min, i); return min;}
	static double max(double... a) {double max = a[0]; for (double i : a)max = Math.max(max, i); return max;}
	static int max(int... a) {int max = a[0]; for (int i : a)max = Math.max(max, i); return max;}
	static long max(long... a) {long max = a[0]; for (long i : a)max = Math.max(max, i); return max;}
	static long gcd(long... a) {long gcd = a[0]; for (long i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int... a) {int gcd = a[0]; for (int i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int a, int b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}
	static long gcd(long a, long b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}

	static class Pair {
		long la, lb;
		int a, b;
		double da, db;
		Pair() {} Pair(int c, int d) {a = c; b = d;}
		Pair(long c, long d) {la = c; lb = d;}
		Pair(int c, long d) { a = c; lb = d; }
		Pair(long c, int d) { la = c; b = d; }
		Pair(int c, double d) { a = c; db = d; }
		Pair(double c, double d) { da = c; db = d; }
		Pair(double c, int d) { da = c; b = d; }

		@Override
		public int hashCode() { return (a + " " + b).hashCode(); }
		public boolean equals(Object c) { return (a == (((Pair)c).a) && b == (((Pair)c).b)); }
	}

	static class Reader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;
		public Reader() {
			reader = new BufferedReader(new InputStreamReader(System.in));
			tokenizer = null;
		}
		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}
	}
}
class AL<T> extends java.util.ArrayList<T> {}
class HM<T, L> extends java.util.HashMap<T, L> {}
class HS<T> extends java.util.HashSet<T> {}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		int t = 1;
		while (t-- > 0) {
			int n = ni();
			long a[] = nla(n);
			if (n == 1) {
				pln(1, 1);
				pln(-a[0]);
				pln(1, 1);
				pln(0);
				pln(1, 1);
				pln(0);
			}

			ps(1, n);
			pln();
			for (int i = 0; i < n; i++) {
				ps(-n * a[i]);
			}
			pln();
			ps(1, n - 1);
			pln();
			for (int i = 0; i < n - 1; i++) {
				ps((n - 1) * a[i]);
			}
			pln();
			ps(2, n);
			pln();
			for (int i = 1; i < n - 1; i++)
				ps("0");
			ps((n - 1) * a[n - 1]);
			pln();
		}
		flush();
	}

	static Reader in = new Reader();
	static StringBuilder output = new StringBuilder();
	static final int imod = 1000_000_007;
	static final long mod = 1000_000_007;
	static final int imax = 1000_000_000;
	static final int imin = -1000_000_000;
	static final long lmax = 1000_000_000_000_000_000L;
	static final long lmin = -1000_000_000_000_000_000L;

	//input functions
	static int ni() {return Integer.parseInt(in.next());}
	static long nl() {return Long.parseLong(in.next());}
	static String ns() {return in.next();}
	static double nd() {return Double.parseDouble(in.next());}
	static int[] eia(int n) {int a[] = new int[n]; return a;}
	static long[] ela(int n) {long a[] = new long[n]; return a;}
	static double[] eda(int n) {double a[] = new double[n]; return a;}
	static String[] esa(int n) {String a[] = new String[n]; return a;}
	static int[] nia(int n) {int a[] = new int[n]; for (int i = 0; i < n; i++)a[i] = ni(); return a;}
	static long[] nla(int n) {long a[] = new long[n]; for (int i = 0; i < n; i++)a[i] = nl(); return a;}
	static String[] nsa(int n) {String a[] = new String[n]; for (int i = 0; i < n; i++)a[i] = ns(); return a;}
	static double[] nda(int n) {double a[] = new double[n]; for (int i = 0; i < n; i++)a[i] = nd(); return a;}

	//output functions
	static void print(String a[]) {for (String i : a) System.out.print(i + " "); System.out.println();}
	static void print(int a[]) {for (int i : a) System.out.print(i + " "); System.out.println();}
	static void print(long a[]) {for (long i : a) System.out.print(i + " "); System.out.println();}
	static void print(double a[]) {for (double i : a) System.out.print(i + " "); System.out.println();}
	static void print(Object... a) {for (Object i : a) {System.out.print(i); System.out.print(" ");} System.out.println();}
	static void println(Object... a) {for (Object i : a) {System.out.print(i); System.out.print("\n");}}
	static void println() {System.out.println();}
	static void flush() {System.out.print(output); output = new StringBuilder();}
	static void pln(int []a) {for (int i : a) {output.append(i).append('\n');}}
	static void pln(long []a) {for (long i : a) {output.append(i).append('\n');}}
	static void pln(double []a) {for (double i : a) {output.append(i).append('\n');}}
	static void pln(String []a) {for (String i : a) {output.append(i).append('\n');}}
	static void pln(Object...a) {for (Object i : a) {output.append(i).append('\n');}}
	static void pln() {output.append('\n');}
	static void p(int []a) {for (int i : a) {output.append(i);}}
	static void p(long []a) {for (long i : a) {output.append(i);}}
	static void p(double []a) {for (double i : a) {output.append(i);}}
	static void p(String []a) {for (String i : a) {output.append(i);}}
	static void p(Object[] a) {for (Object i : a) {output.append(i);}}
	static void ps() {output.append(" ");}
	static void ps(int []a) {for (int i : a) {output.append(i).append(" ");}}
	static void ps(long []a) {for (long i : a) {output.append(i).append(" ");}}
	static void ps(double []a) {for (double i : a) {output.append(i).append(" ");}}
	static void ps(String []a) {for (String i : a) {output.append(i).append(" ");}}
	static void ps(Object... a) {for (Object i : a) {output.append(i).append(" ");}}

	//Utility functions
	static int lowerbound(int[]a, int key) { // returns index of smallest element larger than equal to given element between indices l and r inclusive
		int low = 0, high = a.length - 1, mid = (low + high) / 2; while (low < high) {if (a[mid] >= key)high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;
	}
	static int upperbound(int[]a, int key) {int low = 0, high = a.length - 1, mid = (low + high + 1) / 2; while (low < high) {if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;}
	static int lowerbound(int[]a, int l, int r, int key) { int low = l, high = r, mid = (low + high) / 2; while (low < high) { if (a[mid] >= key) high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;}
	static int upperbound(int[]a, int l, int r, int key) { // returns index of largest element smaller than equal to given element
		int low = l, high = r, mid = (low + high + 1) / 2; while (low < high) { if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;
	}

	static long powm(long a, long b, long mod) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long powm(long a, long b) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long pow(long a, long b) {long an = 1; long c = a; while (b > 0) {if (b % 2 == 1)an *= c; c *= c; b >>= 1;} return an;}
	static void reverse(int[]a) {for (int i = 0; i < a.length / 2; i++) {a[i] ^= a[a.length - i - 1]; a[a.length - i - 1] ^= a[i]; a[i] ^= a[a.length - i - 1];}}
	static void exit() {System.exit(0);}
	static int min(int... a) {int min = a[0]; for (int i : a)min = Math.min(min, i); return min;}
	static long min(long... a) {long min = a[0]; for (long i : a)min = Math.min(min, i); return min;}
	static double min(double... a) {double min = a[0]; for (double i : a)min = Math.min(min, i); return min;}
	static double max(double... a) {double max = a[0]; for (double i : a)max = Math.max(max, i); return max;}
	static int max(int... a) {int max = a[0]; for (int i : a)max = Math.max(max, i); return max;}
	static long max(long... a) {long max = a[0]; for (long i : a)max = Math.max(max, i); return max;}
	static long gcd(long... a) {long gcd = a[0]; for (long i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int... a) {int gcd = a[0]; for (int i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int a, int b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}
	static long gcd(long a, long b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}

	static class Pair {
		long la, lb;
		int a, b;
		double da, db;
		Pair() {} Pair(int c, int d) {a = c; b = d;}
		Pair(long c, long d) {la = c; lb = d;}
		Pair(int c, long d) { a = c; lb = d; }
		Pair(long c, int d) { la = c; b = d; }
		Pair(int c, double d) { a = c; db = d; }
		Pair(double c, double d) { da = c; db = d; }
		Pair(double c, int d) { da = c; b = d; }

		@Override
		public int hashCode() { return (a + " " + b).hashCode(); }
		public boolean equals(Object c) { return (a == (((Pair)c).a) && b == (((Pair)c).b)); }
	}

	static class Reader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;
		public Reader() {
			reader = new BufferedReader(new InputStreamReader(System.in));
			tokenizer = null;
		}
		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}
	}
}
class AL<T> extends java.util.ArrayList<T> {}
class HM<T, L> extends java.util.HashMap<T, L> {}
class HS<T> extends java.util.HashSet<T> {}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		int t = 1;
		while (t-- > 0) {
			int n = ni();
			if (n == 1) {
				pln(1, 1);
				pln(-a[0]);
				pln(1, 1);
				pln(0);
				pln(1, 1);
				pln(0);
			}
			long a[] = nla(n);
			ps(1, n);
			pln();
			for (int i = 0; i < n; i++) {
				ps(-n * a[i]);
			}
			pln();
			ps(1, n - 1);
			pln();
			for (int i = 0; i < n - 1; i++) {
				ps((n - 1) * a[i]);
			}
			pln();
			ps(2, n);
			pln();
			for (int i = 1; i < n - 1; i++)
				ps("0");
			ps((n - 1) * a[n - 1]);
			pln();
		}
		flush();
	}

	static Reader in = new Reader();
	static StringBuilder output = new StringBuilder();
	static final int imod = 1000_000_007;
	static final long mod = 1000_000_007;
	static final int imax = 1000_000_000;
	static final int imin = -1000_000_000;
	static final long lmax = 1000_000_000_000_000_000L;
	static final long lmin = -1000_000_000_000_000_000L;

	//input functions
	static int ni() {return Integer.parseInt(in.next());}
	static long nl() {return Long.parseLong(in.next());}
	static String ns() {return in.next();}
	static double nd() {return Double.parseDouble(in.next());}
	static int[] eia(int n) {int a[] = new int[n]; return a;}
	static long[] ela(int n) {long a[] = new long[n]; return a;}
	static double[] eda(int n) {double a[] = new double[n]; return a;}
	static String[] esa(int n) {String a[] = new String[n]; return a;}
	static int[] nia(int n) {int a[] = new int[n]; for (int i = 0; i < n; i++)a[i] = ni(); return a;}
	static long[] nla(int n) {long a[] = new long[n]; for (int i = 0; i < n; i++)a[i] = nl(); return a;}
	static String[] nsa(int n) {String a[] = new String[n]; for (int i = 0; i < n; i++)a[i] = ns(); return a;}
	static double[] nda(int n) {double a[] = new double[n]; for (int i = 0; i < n; i++)a[i] = nd(); return a;}

	//output functions
	static void print(String a[]) {for (String i : a) System.out.print(i + " "); System.out.println();}
	static void print(int a[]) {for (int i : a) System.out.print(i + " "); System.out.println();}
	static void print(long a[]) {for (long i : a) System.out.print(i + " "); System.out.println();}
	static void print(double a[]) {for (double i : a) System.out.print(i + " "); System.out.println();}
	static void print(Object... a) {for (Object i : a) {System.out.print(i); System.out.print(" ");} System.out.println();}
	static void println(Object... a) {for (Object i : a) {System.out.print(i); System.out.print("\n");}}
	static void println() {System.out.println();}
	static void flush() {System.out.print(output); output = new StringBuilder();}
	static void pln(int []a) {for (int i : a) {output.append(i).append('\n');}}
	static void pln(long []a) {for (long i : a) {output.append(i).append('\n');}}
	static void pln(double []a) {for (double i : a) {output.append(i).append('\n');}}
	static void pln(String []a) {for (String i : a) {output.append(i).append('\n');}}
	static void pln(Object...a) {for (Object i : a) {output.append(i).append('\n');}}
	static void pln() {output.append('\n');}
	static void p(int []a) {for (int i : a) {output.append(i);}}
	static void p(long []a) {for (long i : a) {output.append(i);}}
	static void p(double []a) {for (double i : a) {output.append(i);}}
	static void p(String []a) {for (String i : a) {output.append(i);}}
	static void p(Object[] a) {for (Object i : a) {output.append(i);}}
	static void ps() {output.append(" ");}
	static void ps(int []a) {for (int i : a) {output.append(i).append(" ");}}
	static void ps(long []a) {for (long i : a) {output.append(i).append(" ");}}
	static void ps(double []a) {for (double i : a) {output.append(i).append(" ");}}
	static void ps(String []a) {for (String i : a) {output.append(i).append(" ");}}
	static void ps(Object... a) {for (Object i : a) {output.append(i).append(" ");}}

	//Utility functions
	static int lowerbound(int[]a, int key) { // returns index of smallest element larger than equal to given element between indices l and r inclusive
		int low = 0, high = a.length - 1, mid = (low + high) / 2; while (low < high) {if (a[mid] >= key)high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;
	}
	static int upperbound(int[]a, int key) {int low = 0, high = a.length - 1, mid = (low + high + 1) / 2; while (low < high) {if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;}
	static int lowerbound(int[]a, int l, int r, int key) { int low = l, high = r, mid = (low + high) / 2; while (low < high) { if (a[mid] >= key) high = mid; else low = mid + 1; mid = (low + high) / 2;} return mid;}
	static int upperbound(int[]a, int l, int r, int key) { // returns index of largest element smaller than equal to given element
		int low = l, high = r, mid = (low + high + 1) / 2; while (low < high) { if (a[mid] <= key) low = mid; else high = mid - 1; mid = (low + high + 1) / 2;} return mid;
	}

	static long powm(long a, long b, long mod) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long powm(long a, long b) {long an = 1; long c = a % mod; while (b > 0) {if (b % 2 == 1)an = (an * c) % mod; c = (c * c) % mod; b >>= 1;} return an;}
	static long pow(long a, long b) {long an = 1; long c = a; while (b > 0) {if (b % 2 == 1)an *= c; c *= c; b >>= 1;} return an;}
	static void reverse(int[]a) {for (int i = 0; i < a.length / 2; i++) {a[i] ^= a[a.length - i - 1]; a[a.length - i - 1] ^= a[i]; a[i] ^= a[a.length - i - 1];}}
	static void exit() {System.exit(0);}
	static int min(int... a) {int min = a[0]; for (int i : a)min = Math.min(min, i); return min;}
	static long min(long... a) {long min = a[0]; for (long i : a)min = Math.min(min, i); return min;}
	static double min(double... a) {double min = a[0]; for (double i : a)min = Math.min(min, i); return min;}
	static double max(double... a) {double max = a[0]; for (double i : a)max = Math.max(max, i); return max;}
	static int max(int... a) {int max = a[0]; for (int i : a)max = Math.max(max, i); return max;}
	static long max(long... a) {long max = a[0]; for (long i : a)max = Math.max(max, i); return max;}
	static long gcd(long... a) {long gcd = a[0]; for (long i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int... a) {int gcd = a[0]; for (int i : a)gcd = gcd(gcd, i); return gcd;}
	static int gcd(int a, int b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}
	static long gcd(long a, long b) {if (b == 0)return a; if (a == 0) return b; return gcd(b, a % b);}

	static class Pair {
		long la, lb;
		int a, b;
		double da, db;
		Pair() {} Pair(int c, int d) {a = c; b = d;}
		Pair(long c, long d) {la = c; lb = d;}
		Pair(int c, long d) { a = c; lb = d; }
		Pair(long c, int d) { la = c; b = d; }
		Pair(int c, double d) { a = c; db = d; }
		Pair(double c, double d) { da = c; db = d; }
		Pair(double c, int d) { da = c; b = d; }

		@Override
		public int hashCode() { return (a + " " + b).hashCode(); }
		public boolean equals(Object c) { return (a == (((Pair)c).a) && b == (((Pair)c).b)); }
	}

	static class Reader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;
		public Reader() {
			reader = new BufferedReader(new InputStreamReader(System.in));
			tokenizer = null;
		}
		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}
	}
}
class AL<T> extends java.util.ArrayList<T> {}
class HM<T, L> extends java.util.HashMap<T, L> {}
class HS<T> extends java.util.HashSet<T> {}