#include <bits/stdc++.h>
using namespace std;
const int nx=51;
int n, k, a[nx], mx, h[nx], sm;
vector<pair<int, int>> res;
void add(int l, int r, int s, int t)
{
    for (int i=1; i<=n; i++) if (i<l||r<i) res.push_back({1, i}), res.push_back({1, i}), h[i]+=k, h[i]+=k;
    while ((h[s]%k)!=(h[t]%k))
    {
        for (int i=1; i<=n; i++) if (i<l||r<i) h[i]--;
        for (int i=l; i<r; i+=k) res.push_back({2, i});
    }
    int mx=0;
    for (int i=1; i<=n; i++) mx=max(mx, h[i]);
    for (int i=1; i<=n; i++) while (h[i]<mx) h[i]+=k, res.push_back({1, i});
    for (int i=1; i<=n; i++) h[i]=(h[i]-mx)%k;
}
int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>k;
    for (int i=1; i<=n; i++) cin>>h[i], mx=max(mx, h[i]), sm+=h[i];
    for (int i=1; i<=n; i++) while (h[i]<mx) res.push_back({1, i}), h[i]+=k;
    for (int i=1; i<=n; i++) h[i]=(h[i]-mx)%k;
    for (int i=2; i<=n-k+1; i++) if (h[i]!=h[i-1]) add(i, i+k-1, i, i-1);
    if ((n-(k-1))%k==0)
    {
        add(1, n-k+1, 1, n);
    }
    for (int i=1; i<=n; i++) if (h[i]!=h[1]) return cout<<-1, 0;
    cout<<res.size()<<'\n';
    for (auto [x, y]:res) cout<<x<<' '<<y<<'\n';
}
/*
6 1
0 0 0 2 2 0
8 2
0 1 0 1 0 1 0 1
*/
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |