#include "bits/stdc++.h"
using namespace std;

using ll = long long;
using ull = unsigned long long;

template<typename T>
using vec = vector<T>;
template<typename T>
using mat = vector<vector<T>>;

bool debugflag = true;

template<typename T>
ostream& operator<<(ostream& os, const vector<T>& v) {
	for (int i = 0; i < (int)v.size(); ++i) {
		os << v[i] << " ";
	}
	return os;
}

template<typename T>
istream& operator>>(istream& is, vector<T>& v) {
	for (T& in : v) is >> in;
	return is;
}

void debug(){
	cout << endl;
}

template<class Head, class... Tail>
void debug(Head&& head, Tail&&... tail) {
	if (!debugflag) return;
	cout << head << " ";
	debug(forward<Tail>(tail)...);
}

int main() {
	ll K, N, M; cin >> K >> N >> M;
	vec<ll> A(K); cin >> A;
	
	vec<ll> B(K, 0); ll m = 0;
	vec<double> b(K, 0);
	vec<pair<ll, ll>> diff;
	for (int i = 0; i < K; ++i) {
		B[i] = (ll)((double)A[i] / N * M);
		b[i] = (double)A[i] / N * M;
		m += B[i];
		diff.emplace_back(B[i] * N - A[i] * M, i);
	}
	sort(diff.begin(), diff.end());
	for (int i = 0; i < M - m; ++i) ++B[(int)diff[i].second];

	cout << B << endl;
}
/*
    Author: Zhikun Wang
    Date: 2021/05/29
*/
 
#include <bits/stdc++.h>

using namespace std;

template <typename A, typename B>string to_string(pair<A, B> p);template <typename A, typename B, typename C>string to_string(tuple<A, B, C> p);template <typename A, typename B, typename C, typename D>string to_string(tuple<A, B, C, D> p);string to_string(const string& s) {  return '"' + s + '"';}string to_string(const char* s) {  return to_string((string) s);}string to_string(bool b) {  return (b ? "true" : "false");}string to_string(vector<bool> v) {  bool first = true;  string res = "{";  for (int i = 0; i < static_cast<int>(v.size()); i++) {    if (!first) {      res += ", ";    }    first = false;    res += to_string(v[i]);  }  res += "}";  return res;}template <size_t N>string to_string(bitset<N> v) {  string res = "";  for (size_t i = 0; i < N; i++) {    res += static_cast<char>('0' + v[i]);  }  return res;}template <typename A>string to_string(A v) {  bool first = true;  string res = "{";  for (const auto &x : v) {    if (!first) {      res += ", ";    }    first = false;    res += to_string(x);  }  res += "}";  return res;}template <typename A, typename B>string to_string(pair<A, B> p) {  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";}template <typename A, typename B, typename C>string to_string(tuple<A, B, C> p) {  return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ")";}template <typename A, typename B, typename C, typename D>string to_string(tuple<A, B, C, D> p) {  return "(" + to_string(get<0>(p)) + ", " + to_string(get<1>(p)) + ", " + to_string(get<2>(p)) + ", " + to_string(get<3>(p)) + ")";}void debug_out() { cerr << endl; }template <typename Head, typename... Tail>void debug_out(Head H, Tail... T) {  cerr << " " << to_string(H);  debug_out(T...);}

#ifdef LOCAL
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 42
#endif

#define set0(x) memset(x,0,sizeof(x))
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define trav(a, x) for(auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef vector<int> vi;

template<typename T> void read(T &x){
    x = 0;char ch = getchar();ll f = 1;
    while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
    while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
template<typename T, typename... Args> void read(T &first, Args& ... args) {
    read(first);
    read(args...);
}

int T;

int n,p[555];
int c = n-1;
vi ans;
bool sorted(){
    int ans = 1;
    for(int i=1;i<=n;i++)if(p[i]!=i)ans= 0;
    return ans;
}
void solve(){
    read(n);
    for(int i=1;i<=n;i++)read(p[i]);
    int cc = 1;
    for(int i=1;i<=n-3;i++){
        while(p[i]!=i){
            int cp = 0;
            for(int j = i;j<=n;j++){
                if(p[j] == i) cp = j;
            }
            if((cp-1)%2 == cc%2){
                swap(p[cp-1],p[cp]);
                ans.PB(cp-1);
            }else{
                int c = n-1;
                while(c%2!=cc%2)c-=1;
                swap(p[c],p[c+1]);
                ans.PB(c);
            }
            cc+=1;
        }
    }
    while(!sorted()){
        int c = n-1;
        while(c%2!=cc%2)c-=1;
        swap(p[c],p[c+1]);
        ans.PB(c);
        cc+=1;
    }
    cout<<ans.size()<<"\n";
    for(auto ct:ans)cout<<ct<<' ';
    cout<<"\n";
    ans.clear();
}

int main(){
    read(T);
    while(T--){
        solve();
    }
    return 0;
}