#include <bits/stdc++.h>
using namespace std;
const int MAXN = 55;
struct movimento {
  int carro, x, y;
};
int v[MAXN][MAXN];
vector<movimento> cop;
pair<int, int> viz[MAXN][MAXN];
int main() {
  int n, k;
  cin >> n >> k;
  for (int j = 1; j <= 4; j++) {
    for (int i = 1; i <= n; i++) {
      cin >> v[j][i];
    }
  }
  for (int j = 2; j <= 3; j++) {
    for (int i = 1; i <= n; i++) {
      if (j == 2) {
        if (i == 1)
          viz[j][i] = {3, 1};
        else
          viz[j][i] = {j, i - 1};
      }
      if (j == 3) {
        if (i == n)
          viz[j][i] = {2, n};
        else
          viz[j][i] = {j, i + 1};
      }
    }
  }
  int contagem = 0;
  int contador = 0;
  bool flag = false;
  while (contador < k) {
    for (int j = 3; j <= 3; j++) {
      for (int i = 1; i <= n; i++) {
        if (v[j][i] == 0) continue;
        if (v[4][i] == v[j][i]) {
          movimento mov;
          mov.carro = v[j][i];
          mov.x = 4;
          mov.y = i;
          cop.push_back(mov);
          contador += 1;
          v[j][i] = 0;
        } else if (v[viz[j][i].first][viz[j][i].second] == 0) {
          movimento mov;
          mov.carro = v[j][i];
          swap(v[j][i], v[viz[j][i].first][viz[j][i].second]);
          mov.x = viz[j][i].first;
          mov.y = viz[j][i].second;
          cop.push_back(mov);
        }
      }
    }
    for (int j = 2; j <= 2; j++) {
      for (int i = n; i >= 1; i--) {
        if (v[j][i] == 0) continue;
        if (v[1][i] == v[j][i]) {
          movimento mov;
          mov.carro = v[j][i];
          mov.x = 1;
          mov.y = i;
          cop.push_back(mov);
          contador += 1;
          v[j][i] = 0;
        } else if (v[viz[j][i].first][viz[j][i].second] == 0) {
          movimento mov;
          mov.carro = v[j][i];
          swap(v[j][i], v[viz[j][i].first][viz[j][i].second]);
          mov.x = viz[j][i].first;
          mov.y = viz[j][i].second;
          cop.push_back(mov);
        }
      }
    }
    contagem += 1;
    if (contagem == 20000) {
      flag = true;
      break;
    }
  }
  if (flag == true) {
    cout << -1 << endl;
    return 0;
  }
  cout << cop.size() << endl;
  for (int i = 0; i < cop.size(); i++) {
    cout << cop[i].carro << " " << cop[i].x << " " << cop[i].y << endl;
  }
}
