description: An identity permutation of length n is an array [1, 2, 3, ..., n].
  
  We performed the following operations to an identity permutation of length n:
  
    * firstly, we cyclically shifted it to the right by k positions, where k is unknown to you (the only thing you know is that 0 ≤ k ≤ n - 1). When an array is cyclically shifted to the right by k positions, the resulting array is formed by taking k last elements of the original array (without changing their relative order), and then appending n - k first elements to the right of them (without changing relative order of the first n - k elements as well). For example, if we cyclically shift the identity permutation of length 6 by 2 positions, we get the array [5, 6, 1, 2, 3, 4]; 
    * secondly, we performed the following operation at most m times: pick any two elements of the array and swap them. 
  
  
  
  You are given the values of n and m, and the resulting array. Your task is to find all possible values of k in the cyclic shift operation.
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 10^5) — the number of test cases.
  
  Each test case consists of two lines. The first line contains two integers n and m (3 ≤ n ≤ 3 ⋅ 10^5; 0 ≤ m ≤ n/3).
  
  The second line contains n integers p_1, p_2, ..., p_n (1 ≤ p_i ≤ n, each integer from 1 to n appears in this sequence exactly once) — the resulting array.
  
  The sum of n over all test cases does not exceed 3 ⋅ 10^5.
  
  Output
  
  For each test case, print the answer in the following way:
  
    * firstly, print one integer r (0 ≤ r ≤ n) — the number of possible values of k for the cyclic shift operation; 
    * secondly, print r integers k_1, k_2, ..., k_r (0 ≤ k_i ≤ n - 1) — all possible values of k in increasing order. 
  
  Example
  
  Input
  
  
  4
  4 1
  2 3 1 4
  3 1
  1 2 3
  3 1
  3 2 1
  6 0
  1 2 3 4 6 5
  
  
  Output
  
  
  1 3
  1 0
  3 0 1 2
  0
  
  Note
  
  Consider the example: 
  
    * in the first test case, the only possible value for the cyclic shift is 3. If we shift [1, 2, 3, 4] by 3 positions, we get [2, 3, 4, 1]. Then we can swap the 3-rd and the 4-th elements to get the array [2, 3, 1, 4]; 
    * in the second test case, the only possible value for the cyclic shift is 0. If we shift [1, 2, 3] by 0 positions, we get [1, 2, 3]. Then we don't change the array at all (we stated that we made at most 1 swap), so the resulting array stays [1, 2, 3]; 
    * in the third test case, all values from 0 to 2 are possible for the cyclic shift: 
      * if we shift [1, 2, 3] by 0 positions, we get [1, 2, 3]. Then we can swap the 1-st and the 3-rd elements to get [3, 2, 1]; 
      * if we shift [1, 2, 3] by 1 position, we get [3, 1, 2]. Then we can swap the 2-nd and the 3-rd elements to get [3, 2, 1]; 
      * if we shift [1, 2, 3] by 2 positions, we get [2, 3, 1]. Then we can swap the 1-st and the 2-nd elements to get [3, 2, 1]; 
    * in the fourth test case, we stated that we didn't do any swaps after the cyclic shift, but no value of cyclic shift could produce the array [1, 2, 3, 4, 6, 5]. 
solution: import sys, os
  from io import BytesIO, IOBase
  from math import floor, gcd, fabs, factorial, fmod, sqrt, inf, log
  from collections import defaultdict as dd, deque
  from heapq import merge, heapify, heappop, heappush, nsmallest
  from bisect import bisect_left as bl, bisect_right as br, bisect
  
  # region fastio
  BUFSIZE = 8192
   
  class FastIO(IOBase):
      newlines = 0
   
      def __init__(self, file):
          self._fd = file.fileno()
          self.buffer = BytesIO()
          self.writable = "x" in file.mode or "r" not in file.mode
          self.write = self.buffer.write if self.writable else None
   
      def read(self):
          while True:
              b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
              if not b:
                  break
              ptr = self.buffer.tell()
              self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines = 0
          return self.buffer.read()
   
      def readline(self):
          while self.newlines == 0:
              b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
              self.newlines = b.count(b"\n") + (not b)
              ptr = self.buffer.tell()
              self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
          self.newlines -= 1
          return self.buffer.readline()
   
      def flush(self):
          if self.writable:
              os.write(self._fd, self.buffer.getvalue())
              self.buffer.truncate(0), self.buffer.seek(0)
   
  class IOWrapper(IOBase):
      def __init__(self, file):
          self.buffer = FastIO(file)
          self.flush = self.buffer.flush
          self.writable = self.buffer.writable
          self.write = lambda s: self.buffer.write(s.encode("ascii"))
          self.read = lambda: self.buffer.read().decode("ascii")
          self.readline = lambda: self.buffer.readline().decode("ascii")
  
  stdin, stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout) 
  
  mod = pow(10, 9) + 7
  mod2 = 998244353
          
  def inp(): return stdin.readline().strip()
  def iinp(): return int(inp())
  def out(var, end="\n"): stdout.write(str(var)+end)
  def outa(*var, end="\n"): stdout.write(' '.join(map(str, var)) + end)
  def lmp(): return list(mp())
  def mp(): return map(int, inp().split())
  def l1d(n, val=0): return [val for i in range(n)]
  def l2d(n, m, val=0): return [l1d(m, val) for j in range(n)]
  def ceil(a, b): return (a+b-1)//b
  S1 = 'abcdefghijklmnopqrstuvwxyz'
  S2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  def isprime(x):
      if x<=1: return False
      if x in (2, 3): return True
      if x%2 == 0: return False
      for i in range(3, int(sqrt(x))+1, 2):
          if x%i == 0: return False
      return True
   
  def possible(ind, arr, m):
      reqd = 0
      n = len(arr)
      vis = l1d(n+1)
      for i in range(n):
          if not vis[arr[i]]:
              x = arr[i]
              while (x-ind)%n != i:
                  vis[x] = 1
                  x = arr[(x-ind)%n]
                  reqd += 1
                  if reqd > m:
                      return False
              vis[x] = 1
  
      return True
  
  for _ in range(iinp()):
      n, m = mp()
      arr = lmp()
  
      cnt = dd(int)
      for i in range(n):
          cnt[(arr[i]-i+n-1)%n+1] += 1
      # print(cnt)
  
      x = n - 2*(n//3)
      poss = [i for i in cnt.keys() if cnt[i] >= x]
      # print(poss)
      ansl = []
      for i in poss:
          if possible(i, arr, m):
              ansl.append((n+1-i)%n)
      ansl.sort()
      out(len(ansl), end=' ')
      outa(*ansl)