#include <bits/stdc++.h>
using namespace std;
int cube[8][3];
long long len[28];
long long dist(int a, int b) {
  long long ret = 0;
  for (int i = 0; i < 3; i++)
    ret += (long long)(cube[a][i] - cube[b][i]) * (cube[a][i] - cube[b][i]);
  return ret;
}
bool check() {
  int idx = 0;
  for (int i = 0; i < 8; i++)
    for (int j = i + 1; j < 8; j++) len[idx++] = dist(i, j);
  sort(len, len + 28);
  for (int i = 1; i < 12; i++)
    if (len[i] != len[i - 1] || len[i] == 0) return false;
  for (int i = 13; i < 24; i++)
    if (len[i] != len[i - 1]) return false;
  for (int i = 25; i < 28; i++)
    if (len[i] != len[i - 1]) return false;
  if (len[0] * 2 != len[12] || len[0] * 3 != len[24]) return false;
  return true;
}
bool go(int idx) {
  if (idx == 8) return check();
  do {
    if (go(idx + 1)) return true;
  } while (next_permutation(cube[idx], cube[idx] + 3));
  return false;
}
int main() {
  for (int i = 0; i < 8; i++) cin >> cube[i][0] >> cube[i][1] >> cube[i][2];
  for (int i = 0; i < 8; i++) sort(cube[i], cube[i] + 3);
  if (go(1)) {
    cout << "YES\n";
    for (int i = 0; i < 8; i++)
      cout << cube[i][0] << " " << cube[i][1] << " " << cube[i][2] << "\n";
    return 0;
  }
  cout << "NO\n";
  return 0;
}
