import sys import math #from collections import deque, defaultdict, Counter #import heapq #import bisect #import itertools #import functools # 外部ライブラリ(AtCoder環境で利用可能) #from sortedcontainers import SortedList, SortedSet, SortedDict #from atcoder.dsu import DSU #from atcoder.segtree import SegTree #from atcoder.lazysegtree import LazySegTree #from atcoder.fenwicktree import FenwickTree # 入力高速化 #input = sys.stdin.readline # 再帰回数上限 sys.setrecursionlimit(10**9) # よくあるmod #MOD = 1000000007 MOD = 998244353 def solve(): # 解答ここから import heapq N, K = map(int, input().split(' ')) A = list(map(int, input().split(' '))) sp = [[] for _ in range(K)] for i in range(N): sp[i % K].append(A[i]) answer = [] for k in range(K): L = len(sp[k]) S = list(sorted(sp[k])) for i in range(L): # 目標位置 j = sp[k].index(S[i]) for l in range(i, j): answer.append((K*l + k, K*(l+1) + k)) sp[k][l], sp[k][l+1] = sp[k][l+1], sp[k][l] res = [0] * N for k in range(K): L = len(sp[k]) for i in range(L): res[K*i+k] = sp[k][i] if res != list(range(1, N+1)): print(-1) return print(len(answer)) for f, t in answer: print(f+1,t+1) if __name__ == '__main__': T = 1 for _ in range(T): solve()