from collections import defaultdict
from heapq import *

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    heappush( queue, A[i] )
    if i < k-1:
        continue

    try:
        while True:
            val = heappop( queue )
            if Hash[val] == 1:
                break
    except IndexError:
        val = -1

    if val > -1:
        print val
        heappush( queue, val )
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, A[i-k+1] )


from collections import defaultdict
from heapq import *
oo = 1000000007

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    if Hash[ A[i] ] == 1:
        heappush( queue, -A[i] )
    if i < k-1:
        continue

    while len(queue) > 0 and Hash[ -queue[0] ] != 1: heappop( queue )

    if len(queue):
        print queue[0]
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, -A[i-k+1] )


from collections import defaultdict
from heapq import *

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    heappush( queue, A[i] )
    if i < k-1:
        continue

    while len(queue) > 0:
        val = heappop( queue )
        if Hash[val] == 1:
            break

    if len(queue) > 0:
        print val
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, A[i-k+1] )


from collections import defaultdict
from heapq import *

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    heappush( queue, -A[i] )
    if i < k-1:
        continue

    try:
        while True:
            val = -heappop( queue )
            if Hash[val] == 1:
                break
    except IndexError:
        val = -1

    if val > -1:
        print val
        heappush( queue, -val )
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, -A[i-k+1] )


from collections import defaultdict
from heapq import *
oo = 1000000009

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    heappush( queue, -A[i] )
    if i < k-1:
        continue

    try:
        while True:
            val = -heappop( queue )
            if Hash[val] == 1:
                break
    except IndexError:
        val = oo

    if val != oo:
        print val
        heappush( queue, -val )
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, -A[i-k+1] )


from collections import defaultdict
from heapq import *

Hash = defaultdict(int)
(n, k) = map( int, raw_input().split() )

A = [ int( raw_input() ) for i in xrange(n) ]

queue = []
for i in xrange( n ):
    Hash[ A[i] ] += 1
    heappush( queue, A[i] )
    if i < k-1:
        continue

    while len(queue) > 0:
        val = heappop( queue )
        if Hash[val] == 1:
            break

    if len(queue) > 0:
        print val
        heappush( queue, val )
    else:
        print 'Nothing'

    Hash[ A[i-k+1] ] -= 1
    if Hash[ A[i-k+1] ] == 1:
        heappush( queue, A[i-k+1] )


#include <iostream>

using namespace std;

int main()
{
    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=1;
        while(n%x==0)
        {
            x+=2;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int y=a[i]*(n-1)+x*(n);

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int y=a[i]*(n-1)+(n-z)*(n);

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL), cout.tie(NULL);

    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n>1)
    {
        cout<<"1 1\n";
        cout<<-a[0]<<"\n1 "<<n<<"\n";

        a[0]=0;
        for(int i=0;i<n;i++)
        {
            cout<<-n*a[i]<<" ";
            a[i]-=n*a[i];
        }

        cout<<"\n2 "<<n<<"\n";

        for(int i=1;i<n;i++)
        {
            cout<<-a[i]<<" ";
        }
    }

    else
    {
        cout<<1<<" "<<1<<"\n";
        cout<<1<<"\n";
        cout<<1<<" "<<1<<"\n";
        cout<<1<<"\n";
        cout<<1<<" "<<1<<"\n";
        cout<<-a[0]-2;
    }

}


#include <iostream>

using namespace std;

int main()
{
    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=1;
        while(n%x==0)
        {
            x+=2;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int y=x*a[i]+x*(n);

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int y=(n-z)*a[i]+(n-z)*(n);

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=1;
        while(n%x==0)
        {
            x+=2;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int y=n*x-a[i];

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int y=(n)*(n-z)-a[i];

        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=1;
        while(n%x==0)
        {
            x+=2;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int y=x;
        while((a[i]+y)%n!=0)
        {
            y+=x;
        }
        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int y=n-z;
        while((a[i]+y)%n!=0)
        {
            y+=n-z;
        }
        cout<<y<<" ";
        a[i]+=y;
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL), cout.tie(NULL);

    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=n/2;
        if(x%2==0)
        {
            x++;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int yp=x*n;
        long long int yn=-x*n;
        while((a[i]+yp)%n!=0 && (a[i]+yn)%n!=0)
        {
            //cout<<"here";
            yp+=x;
            yn-=x;
        }

        if((a[i]+yp)%n==0)
        {
            cout<<yp<<" ";
            a[i]+=yp;
        }

        else if((a[i]+yn)%n==0)
        {
            cout<<yn<<" ";
            a[i]+=yn;
        }
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int yp=(n-z)*n;
        long long int yn=-(n-z)*n;
        while((a[i]+yp)%n!=0 && (a[i]+yn)%n!=0)
        {
            //cout<<"here";
            yp+=n-z;
            yn-=n-z;
        }
        if((a[i]+yp)%n==0)
        {
            cout<<yp<<" ";
            a[i]+=yp;
        }

        else if((a[i]+yn)%n==0)
        {
            cout<<yn<<" ";
            a[i]+=yn;
        }
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    if(n%2==1)
    {
        x=2;
        z=2;
    }
    else
    {
        x=1;
        while(n%x==0)
        {
            x+=2;
        }
        if(x>n)
        {
            x=1;
        }
        z=x;
    }

    if(n==1)
    {
        x=1;
        z=0;
    }

    cout<<1<<" "<<x<<"\n";
    for(long long int i=0;i<x;i++)
    {
        long long int yp=x*n;
        long long int yn=-x*n;
        while((a[i]+yp)%n!=0 && (a[i]+yn)%n!=0)
        {
            //cout<<"here";
            yp+=x;
            yn-=x;
        }

        if((a[i]+yp)%n==0)
        {
            cout<<yp<<" ";
            a[i]+=yp;
        }

        else if((a[i]+yn)%n==0)
        {
            cout<<yn<<" ";
            a[i]+=yn;
        }
    }

    cout<<"\n"<<z+1<<" "<<n<<"\n";
    for(long long int i=z;i<n;i++)
    {
        long long int yp=(n-z)*n;
        long long int yn=-(n-z)*n;
        while((a[i]+yp)%n!=0 && (a[i]+yn)%n!=0)
        {
            //cout<<"here";
            yp+=n-z;
            yn-=n-z;
        }
        if((a[i]+yp)%n==0)
        {
            cout<<yp<<" ";
            a[i]+=yp;
        }

        else if((a[i]+yn)%n==0)
        {
            cout<<yn<<" ";
            a[i]+=yn;
        }
    }

    cout<<"\n"<<1<<" "<<n<<"\n";

    for(int i=0;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }
}


#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL), cout.tie(NULL);

    long long int n,x,z;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }

    cout<<"1 1\n";
    cout<<-a[0]<<"\n1 "<<n<<"\n";

    a[0]=0;
    for(int i=0;i<n;i++)
    {
        cout<<-n*a[i]<<" ";
        a[i]-=n*a[i];
    }

    cout<<"\n2 "<<n<<"\n";

    for(int i=1;i<n;i++)
    {
        cout<<-a[i]<<" ";
    }

}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << "1 1" << endl;
	cout << -v[0] << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag - v[i] << ' ';
		v[i] = flag;
	}
	cout << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag;
		if(i != n - 2) cout << ' ';
		v[i] += flag;
	}
	cout << endl;
	cout << n << ' ' << n << endl;
	cout << -v[n - 1] << endl;
	v[n - 1] = 0;
	cout << 1 << ' ' << n << endl;
	for (int i = 0; i < n; i++) {
		v[i] *= -1;
		cout << v[i];
		if(i != n - 1) cout << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	int n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	for (int i = 0; i < n; i++) {
		if(v[i] % n) {
			cout << i + 1 << ' ' << i + 1 << endl;
			cout << abs(v[i] - n) << endl;
		}
	}
	cout << 1 << ' ' << n << endl;
	for (int i = 0; i < n; i++) {
		cout << -v[i];
		if(i != n - 1) cout << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag - v[i] << ' ';
		v[i] = flag;
	}
	cout << endl;
	cout << n << ' ' << n << endl;
	cout << -v[n - 1] << endl;
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << "1 1" << endl;
	cout << -v[0] << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		ll flag = v[i] * (n - 1) * -1;
		cout << flag - v[i] << ' ';
		v[i] = flag;
	}
	cout << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag;
		if(i != n - 2) cout << ' ';
		v[i] += flag;
	}
	cout << endl;
	cout << n << ' ' << n << endl;
	cout << -v[n - 1] << endl;
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		v[i] *= -1;
		cout << v[i];
		if(i != n - 2) cout << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << "1 1" << endl;
	cout << -v[0] << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag << ' ';
		v[i] += flag;
	}
	cout << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << "1 1" << endl;
	cout << -v[0] << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		if(v[i] % (n - 1) == 0) {
			cout << "0 ";
		}
		else {
			ll flag = v[i] * (n - 1);
			cout << flag - v[i] << ' ';
			v[i] = flag;
		}
	}
	cout << endl;
	cout << 2 << ' ' << n << endl;
	for (int i = 1; i < n; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


/**
*    author:  Mohamed Abo_Okail
*    created: 3O/O8/2O2O
**/
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;

#define endl "\n"
#define ll long long
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()

ll _gcd(ll x, ll y) {
	return (!y ? x : _gcd(y, x % y));
}
ll _lcm(ll x, ll y) {
	return (x / _gcd(x, y) * y);
}

int main() {
	std::ios_base::sync_with_stdio(0);
	ll n; cin >> n;
	vector < ll > v(n);
	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	if(n == 1) {
		cout << "1 1" << endl;
		cout << -v[0] << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		cout << "1 1" << endl;
		cout << 0 << endl;
		return 0;
	}
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		ll flag = v[i] * (n - 1);
		cout << flag << ' ';
		v[i] += flag;
	}
	cout << endl;
	cout << n << ' ' << n << endl;
	cout << -v[n - 1] << endl;
	cout << 1 << ' ' << n - 1 << endl;
	for (int i = 0; i < n - 1; i++) {
		v[i] *= -1;
		cout << v[i] << ' ';
	}
}


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>c;c=a;
    vector<ll>cl(n);c=a;
    for(int i=0;i<n;i++){
        cl[i]=a[i]/n;
    }
    for(auto &z : c) z%=n;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[n-c[i]];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-c[i])];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
//        ll x=(-a[i])/n;
//        assert(a[i]%n==0);
        b.p_b(-1ll*cl[i]*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0]<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0<<endl;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>c;c=a;
    vector<ll>cl(n);c=a;
    for(int i=0;i<n;i++){
        cl[i]=a[i]/n;
    }
    for(auto &z : c) z%=n;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[n-c[i]];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-c[i])];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        b.p_b(-1ll*cl[i]*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>c;c=a;
    vector<ll>cl(n);c=a;
    for(int i=0;i<n;i++){
        cl[i]=a[i]/n;
    }
    for(auto &z : c) z%=n;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[n-c[i]];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=n-1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=(n-c[i])%n;
            if(c[i])cl[i]+=n-c[i];
            c[i]=0;
            b.p_b(1ll*kek);
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        b.p_b(-1ll*cl[i]*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0]<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0<<endl;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
//        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int __int128
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];
        exit(0);
    }
//    ll nk=
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>c;c=a;
    vector<ll>cl(n);c=a;
    for(int i=0;i<n;i++){
        cl[i]=a[i]/n;
    }
    for(auto &z : c) z=abs(z)%n;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[n-c[i]];
            if(a[i]<0){
               if(c[i])cl[i]-=add[n-c[i]];
               kek*=-1;
            }
            else if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=n-1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=(n-c[i])%n;
            if(a[i]<0){
               if(c[i])cl[i]--;
               kek*=-1;
            }
            else if(c[i])cl[i]++;
            c[i]=0;
            b.p_b(1ll*kek);
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        b.p_b(-1ll*cl[i]*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
10
-20 -19 -17 -18 -16 -14 -15 -13 -12 -11
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int __int128
#define ll __int128
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];
        exit(0);
    }
//    ll nk=
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
//    debug()<<imie(add);
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными

*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int __int128
#define ll __int128
signed main()
{
    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];
        exit(0);
    }
//    ll nk=
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[(n-a[i]%n)];
            kek-=a[i]/(n-1);
            a[i]+=1ll*kek*(n-1);
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        ll x=(-a[i])/n;
        assert(a[i]%n==0);
        b.p_b(1ll*x*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
2
1 2
*/


#include<bits/stdc++.h>
using namespace std;
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//
//    #pragma GCC optimize("-O3")
//    #pragma GCC optimize("no-stack-protector")
//    #pragma GCC optimize("fast-math")
//    #pragma GCC optimize("Ofast")
//    #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
//    #pragma GCC target("avx,avx2,fma")
//    #pragma GCC optimization ("unroll-loops")
//#define LOCAL
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
  enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
#ifndef LOCAL
~debug() { cerr << endl; }
eni(!=) cerr << boolalpha << i; ris; }
eni(==) ris << range(begin(i), end(i)); }
sim, class b dor(pair < b, c > d) {
  ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
  *this << "[";
  for (auto it = d.b; it != d.e; ++it)
	*this << ", " + 2 * (it == d.b) << *it;
  ris << "]";
}
#else
sim dor(const c&) { ris; }
#endif
};
#define imie(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
#define fi first
#define f first
#define se second
#define s second
#define vi_a vector<int>a;
#define p_b push_back
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ll long long
typedef unsigned long long ull;
////////////////////////////////???????????????CHECK THIS OUT???????????????//////////////////////////////
#define ld long double
#define pll pair<ll,ll>
#define pii pair<int,int>
#define m_p make_pair
#define fast_io cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);
#define all(x) x.begin(),x.end()
#define getfiles    ifstream cin("input.txt");ofstream cout("output.txt");
#define pw(x) (1ll << x)
#define sz(x) (int)x.size()
#define endl "\n"
#define rall(x) x.rbegin(),x.rend()
#define len(a) (ll)a.size()
#define rep(x,l,r) for(ll x=l;x<r;x++)

//using namespace __gnu_pbds;
ld eps = (ld)1 / 1e6;
const ld pi=3.14159265359;
ll inf = 1e18,mod1=1e9+7;
ll sqr(ll a) { return a * a; }
ll qb(ll a) { return a * a * a; }
template<typename T> bool umax(T& a, T b) {return a<b?a=b,1:0;}
template<typename T> bool umin(T& a, T b) {return b<a?a=b,1:0;}
bool is_prime(ll val){for(ll i=2;i<=sqrt(val);i++)if(val%i==0)return 0; return 1;}
ll gcd(ll a, ll b) { return !a ? b : gcd(b % a, a); }
ll binpow(ll a, ll b, ll mod) { return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod : sqr(binpow(a, b / 2, mod)) % mod) : 1; }ll binmult(ll a, ll b, ll mod) { return b ? (b % 2 ? (2 * binmult(a, b / 2, mod) + a) % mod : (2 * binmult(a, b / 2, mod)) % mod) : 0; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const ll RR=1e4;
const ll tx[8]={1,-1,2,-2,-1,-2};
const ll ty[8]={-2,-2,-1,-1,2,1};
const char rev_to[4]={'E','W','N','S'};
const int M=1e9+7;
const int N=1e6+1;
const int ppp=73;
const int pr=3;
const int block=600;
const int OPEN=0;
const int CLOSE=1;
//typedef pair<long long,int> pli;
//typedef tree<pli,null_type,less<pli>,rb_tree_tag,tree_order_statistics_node_update> o_st;
auto rnd=bind(uniform_int_distribution<int>(1,5969699),mt19937(time(0)));
void bad(){
    cout<<"NO";
    exit(0);
}
#define int ll
signed main()
{
//    fast_io;
    int n;
    cin>>n;
    vector<ll>a(n);
    for(auto &z : a) cin>>z;
    vector<int>c;c=a;
    vector<ll>cl(n);c=a;
    for(int i=0;i<n;i++){
        cl[i]=a[i]/n;
    }
    for(auto &z : c) z%=n;
    if(n==1){
        cout<<1<<' '<<1<<endl;
        cout<<-a[0];cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;cout<<endl;
        cout<<1<<' '<<1<<endl;
        cout<<0;
        exit(0);
    }
    vector<int>add(n+1,0);
    int cur=n-1;
    int col=1;
    while(!add[cur]){
        add[cur]=col;
        cur+=n-1;
        cur%=n;
        col++;
    }
    int l=0,r=n-2;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=add[n-c[i]];
            if(c[i])cl[i]+=add[n-c[i]];
            c[i]=0;
            b.p_b(1ll*kek*(n-1));
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=n-1,r=n-1;
    if(l<=r){
        vector<ll>b;
        for(int i=l;i<=r;i++){
            ll kek=(n-c[i])%n;
            if(c[i])cl[i]++;
            c[i]=0;
            b.p_b(1ll*kek);
        }
        cout<<l+1<<' '<<r+1<<endl;
        for(auto &z : b) cout<<z<<' ';
        cout<<endl;
    }else assert(false);
    l=0,r=n-1;
    vector<ll>b;
    for(int i=l;i<=r;i++){
        b.p_b(-1ll*cl[i]*n);
    }
    cout<<l+1<<' '<<r+1<<endl;
    for(auto &z : b) cout<<z<<' ';
    cout<<endl;
    return 0;

}
/*
выберем неч отрезок
сделаем все числа на нем четными
10
20 19 17 18 16 14 15 13 12 11
*/


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"1 1\n";
    cout<<0;
    cout<<"1 1\n";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"2 2\n";
    cout<<-nums[1];
    cout<<"1 2\n";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
cout<<"1 "<<nums.size()<<"\n";
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"1 1";
    cout<<0;
    cout<<"1 1";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"2 2";
    cout<<-nums[1];
    cout<<"1 2";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
cout<<"1 "<<nums.size()<<"\n";
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n1 1\n";
    cout<<0;
    cout<<"\n1 1\n";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n2 2\n";
    cout<<-nums[1];
    cout<<"\n1 1\n";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
cout<<endl;
cout<<"1 "<<nums.size()<<"\n";
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  }
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"1 1";
    cout<<0;
    cout<<"1 1";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=0;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"1 1";
    cout<<0;
    cout<<"1 1";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"2 2";
    cout<<-nums[1];
    cout<<"1 2";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n1 1\n";
    cout<<0;
    cout<<"\n1 1\n";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n2 2\n";
    cout<<-nums[1];
    cout<<"\n1 2\n";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
cout<<endl;
cout<<"1 "<<nums.size()<<"\n";
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  }
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1";
    cout<<-nums[0];
    cout<<"1 1";
    cout<<0;
    cout<<"1 1";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1"
    cout<<-nums[0];
    cout<<"2 2";
    cout<<-nums[1];
    cout<<"1 2";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include<bits/stdc++.h>

using namespace std;

int main()
{
  long long int n;
  cin>>n;

  vector<long long int>nums;
  while(n>0)
  {
    long long int x;
    cin>>x;
    nums.push_back(x);
    n--;
  }

  if(nums.size()==1)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n1 1\n";
    cout<<0;
    cout<<"\n1 1\n";
    cout<<0;
  }
  else if(nums.size()==2)
  {
    cout<<"1 1\n";
    cout<<-nums[0];
    cout<<"\n2 2\n";
    cout<<-nums[1];
    cout<<"\n1 2\n";
    cout<<0;
  }

  else
  {
    cout<<"1 "<<nums.size()-1<<endl;
  for(long long int i=0;i<nums.size()-1;i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=(k*(nums.size()-1));
    cout<<k*(nums.size()-1)<<" ";
  }

  cout<<"\n2 "<<nums.size()<<endl;
  for(long long int i=1;i<nums.size();i++)
  {
    long long int k=nums[i]%nums.size();
    nums[i]+=k*(nums.size()-1);
    cout<<k*(nums.size()-1)<<" ";
  }
  }

cout<<endl;
cout<<"1 "<<nums.size()<<"\n";
  for(long long int i=0;i<nums.size();i++)
  cout<<-nums[i]<<" ";
  return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long n, a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	for(int i=1; i<=n; i++) cin >> a[i];
	cout << "1 1 " << endl << a[1]*(n-1) << endl;
	if(n==1){
		cout << "1 1" << endl << "0" << endl << "1 1" << endl << -a[1]*n << endl;
	} else {
		cout << "2 " << n << endl;
		for(int i=2; i<=n; i++) cout << a[i]*(n-1) << " ";
		cout << endl;
		cout << "1 " << n << endl;
		for(int i=2; i<=n; i++) cout << -a[i]*n << " ";
		cout << endl;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for(int i=0; i<n; i++) cin >> a[i];
	if(n==1){
		cout << n << " " << n << endl << -a[i] << endl << "1 1\n0\n1 1\n0\n";
		return 0;
	}
	cout << 1 << " " << n << endl;
	for(int i=0; i<n; i++){
		int j=0;
		while(++j){
			if((a[i]+j*n)%(n-1)==0){
				a[i]+=j*n; break;
			}
		}
		cout << j*n << " ";
	}
	cout << endl;
	cout << 1 << " " << n-1 << endl;
	for(int i=0; i<n-1; i++){
		cout << -a[i] << " ";
	}
	cout << endl;
	cout << n << " " << n << endl;
	cout << -a[n-1] << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long n, a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	for(int i=1; i<=n; i++) cin >> a[i];
	cout << "1 1 " << endl << a[1]*(n-1) << endl;
	if(n==1){
		cout << "1 1" << endl << "0" << endl << "1 1" << endl << -a[1]*n << endl;
	} else {
		cout << "2 " << n << endl;
		for(int i=2; i<=n; i++) cout << a[i]*(n-1) << " ";
		cout << endl;
		cout << "1 " << n << endl;
		for(int i=1; i<=n; i++) cout << -a[i]*n << " ";
		cout << endl;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for(int i=0; i<n; i++) cin >> a[i];
	if(n==1){
		cout << n << " " << n << endl << -a[0] << endl << "1 1\n0\n1 1\n0\n";
		return 0;
	}
	cout << 1 << " " << n << endl;
	for(int i=0; i<n; i++){
		int j=0;
		while(++j){
			if((a[i]+j*n)%(n-1)==0){
				a[i]+=j*n; break;
			}
		}
		cout << j*n << " ";
	}
	cout << endl;
	cout << 1 << " " << n-1 << endl;
	for(int i=0; i<n-1; i++){
		cout << -a[i] << " ";
	}
	cout << endl;
	cout << n << " " << n << endl;
	cout << -a[n-1] << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
long long n, a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	for(int i=1; i<=n; i++) cin >> a[i];
	cout << "1 1 " << endl << a[1]*(n-1) << endl;
	if(n==1){
		cout << "1 1" << endl << "0" << endl << "1 1" << endl << -a[1]*n << endl;
	} else {
		cout << "2 " << n << endl;
		for(int i=2; i<=n; i++) cout << a[i]*(n-1) << " ";
		cout << endl;
		for(int i=2; i<=n; i++) cout << -a[i]*n << " ";
		cout << endl;
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for(int i=0; i<n; i++) cin >> a[i];
	cout << 1 << " " << n << endl;
	for(int i=0; i<n; i++){
		int j=0;
		while(++j){
			if((a[i]+j*n)%(n-1)==0){
				a[i]+=j*n; break;
			}
		}
		cout << j*n << " ";
	}
	cout << endl;
	cout << 1 << " " << n-1 << endl;
	for(int i=0; i<n-1; i++){
		cout << -a[i] << " ";
	}
	cout << endl;
	cout << n << " " << n << endl;
	cout << -a[n-1] << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for(int i=0; i<n; i++) cin >> a[i];
	if(n==1){
		cout << n << " " << n << endl << n << endl;
		return 0;
	}
	cout << 1 << " " << n << endl;
	for(int i=0; i<n; i++){
		int j=0;
		while(++j){
			if((a[i]+j*n)%(n-1)==0){
				a[i]+=j*n; break;
			}
		}
		cout << j*n << " ";
	}
	cout << endl;
	cout << 1 << " " << n-1 << endl;
	for(int i=0; i<n-1; i++){
		cout << -a[i] << " ";
	}
	cout << endl;
	cout << n << " " << n << endl;
	cout << -a[n-1] << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	int n; cin >> n;
	for(int i=0; i<n; i++) cin >> a[i];
	cout << 1 << " " << n << endl;
	for(int i=0; i<n; i++){
		int j=0;
		while(j++){
			if((i+j*n)%(n-1)==0) break;
		}
		cout << j << " ";
	}
	cout << 1 << " " << n-1 << endl;
	for(int i=0; i<n-1; i++){
		cout << a[i]/(n-1) << " ";
	}
	cout << n << " " << n << endl;
	cout << n << endl;
	return 0;
}


#include <bits/stdc++.h>
/*
** Author: wkwkwill (Willy I. K.)
** 2020/08/30
*/
using namespace std;
using ll = long long int;

ll BIG = 1e18 + 1;
ll MOD = 1e9 + 7;

void solve();

ll fastpow(ll x, ll y, ll n = BIG)
{
    x %= n;
    ll ans = 1;
    while (y > 0)
    {
        if (y & 1) ans = (ans * x) % n;
        x = (x * x) % n;
        y >>= 1;
    }
    return ans;
}

bool sortPairSecond(pair<ll, ll> &a, pair<ll, ll> &b)
{
    return a.second < b.second;
}

bool sortPairFirst(pair<int, bool> &a, pair<int, bool> &b)
{
    return a.first < b.first;
}

int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
	return 0;
}

int KPK(int n, int x) //KPK x dekat ke n
{
    if(x > n) return x;
    n = n + x/2;
    n = n - (n%x);
    return n;
}

void solve()
{

    ll n;
    cin >> n;
    vector<ll> a(n);
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    if (n == 1)
    {
        cout << "1 1" << '\n';
        cout << '-' << a[0] << '\n';
        cout << "1 1" << '\n';
        cout << "0" << '\n';
        cout << "1 1" << '\n';
        cout << "0" << '\n';
    }
    else
    {
        cout << "1 1" << '\n';
        cout << n - a[0] << '\n';
        a[0] = n;
        cout << "2 " << n << '\n';
        for (int i = 1; i < n; ++i)
        {
            ll kpk = KPK(a[i], n);
            while ((kpk - a[i]) % (n-1) != 0)
            {
                kpk += n;
            }
            cout << kpk - a[i] << ' ';
            a[i] = kpk;
        }
        cout << '\n';
        cout << "1 " << n << '\n';
        for (int i = 0; i < n; ++i)
        {
            cout << "-" << a[i] << ' ';
        }
        cout << '\n';
    }

}
/*
4
1 115 2 4
+3 +9 +6
4 124 8 4
        +0
4 124 8 4
-4 -124 -8 -4

*/


#include <bits/stdc++.h>
/*
** Author: wkwkwill (Willy I. K.)
** 2020/08/30
*/
using namespace std;
using ll = long long int;

ll BIG = 1e18 + 1;
ll MOD = 1e9 + 7;

void solve();

ll fastpow(ll x, ll y, ll n = BIG)
{
    x %= n;
    ll ans = 1;
    while (y > 0)
    {
        if (y & 1) ans = (ans * x) % n;
        x = (x * x) % n;
        y >>= 1;
    }
    return ans;
}

bool sortPairSecond(pair<ll, ll> &a, pair<ll, ll> &b)
{
    return a.second < b.second;
}

bool sortPairFirst(pair<int, bool> &a, pair<int, bool> &b)
{
    return a.first < b.first;
}

int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
	return 0;
}

int KPK(int n, int x) //KPK x dekat ke n
{
    if(x > n) return x;
    n = n + x/2;
    n = n - (n%x);
    return n;
}

void solve()
{

    ll n;
    cin >> n;
    vector<ll> a(n);
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    if (n == 1)
    {
        cout << "1 1" << '\n';
        cout << '-' << a[0] << '\n';
        cout << "1 1" << '\n';
        cout << "0" << '\n';
        cout << "1 1" << '\n';
        cout << "0" << '\n';
    }
    else
    {
        cout << "1 1" << '\n';
        cout << n - a[0] << '\n';
        a[0] = n;
        cout << "2 " << n << '\n';
        for (int i = 1; i < n; ++i)
        {
            ll kpk = (a[i] * n);
            cout << kpk - a[i] << ' ';
            a[i] = kpk;
        }
        cout << '\n';
        cout << "1 " << n << '\n';
        for (int i = 0; i < n; ++i)
        {
            cout << "-" << a[i] << ' ';
        }
        cout << '\n';
    }

}
/*

4
1 23 2 4
4 92 8 4
3 69

4
1 115 2 4
+3 +9 +6
4 124 8 4
        +0
4 124 8 4
-4 -124 -8 -4

*/


#include <bits/stdc++.h>
/*
** Author: wkwkwill (Willy I. K.)
** 2020/08/30
*/
using namespace std;
using ll = long long int;

ll BIG = 1e18 + 1;
ll MOD = 1e9 + 7;

void solve();

ll fastpow(ll x, ll y, ll n = BIG)
{
    x %= n;
    ll ans = 1;
    while (y > 0)
    {
        if (y & 1) ans = (ans * x) % n;
        x = (x * x) % n;
        y >>= 1;
    }
    return ans;
}

bool sortPairSecond(pair<ll, ll> &a, pair<ll, ll> &b)
{
    return a.second < b.second;
}

bool sortPairFirst(pair<int, bool> &a, pair<int, bool> &b)
{
    return a.first < b.first;
}

int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
	return 0;
}

int KPK(int n, int x) //KPK x dekat ke n
{
    if(x > n) return x;
    n = n + x/2;
    n = n - (n%x);
    return n;
}

void solve()
{

    ll n;
    cin >> n;
    vector<ll> a(n);
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    cout << "1 1" << '\n';
    cout << n - a[0] << '\n';

    cout << "2 " << n << '\n';
    for (int i = 1; i < n; ++i)
    {
        ll kpk = KPK(a[i], n);
        while ((kpk - a[i]) % (n-1) != 0)
        {
            kpk += n;
        }
        cout << kpk - a[i] << ' ';
    }
    cout << '\n';
    cout << "1 4" << '\n';
    for (int i = 0; i < n; ++i)
    {
        cout << "-" << a[i] << ' ';
    }
    cout << '\n';
}
/*
4
1 115 2 4
+3 +9 +6
4 124 8 4
        +0
4 124 8 4
-4 -124 -8 -4

*/


#include <bits/stdc++.h>
/*
** Author: wkwkwill (Willy I. K.)
** 2020/08/30
*/
using namespace std;
using ll = long long int;

ll BIG = 1e18 + 1;
ll MOD = 1e9 + 7;

void solve();

ll fastpow(ll x, ll y, ll n = BIG)
{
    x %= n;
    ll ans = 1;
    while (y > 0)
    {
        if (y & 1) ans = (ans * x) % n;
        x = (x * x) % n;
        y >>= 1;
    }
    return ans;
}

bool sortPairSecond(pair<ll, ll> &a, pair<ll, ll> &b)
{
    return a.second < b.second;
}

bool sortPairFirst(pair<int, bool> &a, pair<int, bool> &b)
{
    return a.first < b.first;
}

int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
	return 0;
}

int KPK(int n, int x) //KPK x dekat ke n
{
    if(x > n) return x;
    n = n + x/2;
    n = n - (n%x);
    return n;
}

void solve()
{

    ll n;
    cin >> n;
    vector<ll> a(n);
    for (int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    cout << "1 1" << '\n';
    cout << n - a[0] << '\n';
    a[0] = n;
    cout << "2 " << n << '\n';
    for (int i = 1; i < n; ++i)
    {
        ll kpk = KPK(a[i], n);
        while ((kpk - a[i]) % (n-1) != 0)
        {
            kpk += n;
        }
        cout << kpk - a[i] << ' ';
        a[i] = kpk;
    }
    cout << '\n';
    cout << "1 4" << '\n';
    for (int i = 0; i < n; ++i)
    {
        cout << "-" << a[i] << ' ';
    }
    cout << '\n';
}
/*
4
1 115 2 4
+3 +9 +6
4 124 8 4
        +0
4 124 8 4
-4 -124 -8 -4

*/


#include <bits/stdc++.h>
/*
** Author: wkwkwill (Willy I. K.)
** 2020/08/30
*/
using namespace std;
using ll = long long int;

ll BIG = 1e18 + 1;
ll MOD = 1e9 + 7;

void solve();

ll fastpow(ll x, ll y, ll n = BIG)
{
    x %= n;
    ll ans = 1;
    while (y > 0)
    {
        if (y & 1) ans = (ans * x) % n;
        x = (x * x) % n;
        y >>= 1;
    }
    return ans;
}

bool sortPairSecond(pair<ll, ll> &a, pair<ll, ll> &b)
{
    return a.second < b.second;
}

bool sortPairFirst(pair<int, bool> &a, pair<int, bool> &b)
{
    return a.first < b.first;
}

int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    solve();
	return 0;
}

int KPK(int n, int x) //KPK x dekat ke n
{
    if(x > n) return x;
    n = n + x/2;
    n = n - (n%x);
    return n;
}

void solve()
{
    int t;
    cin >> t;
    while (t--)
    {
        ll n;
        cin >> n;
        vector<ll> a(n);
        for (int i = 0; i < n; ++i)
        {
            cin >> a[i];
        }
        cout << "1 1" << '\n';
        cout << n - a[0] << '\n';

        cout << "2 " << n << '\n';
        for (int i = 1; i < n; ++i)
        {
            ll kpk = KPK(a[i], n);
            while ((kpk - a[i]) % (n-1) != 0)
            {
                kpk += n;
            }
            cout << kpk - a[i] << ' ';
        }
        cout << '\n';
        cout << "1 4" << '\n';
        for (int i = 0; i < n; ++i)
        {
            cout << "-" << a[i] << ' ';
        }
        cout << '\n';

    }

}
/*
4
1 115 2 4
+3 +9 +6
4 124 8 4
        +0
4 124 8 4
-4 -124 -8 -4

*/