#include <bits/stdc++.h>
using namespace std;
int a[100][40];
const int n = 8;
int pos[100][60];
double d[100][100];
int ds[100];
double dis(double x, double y, double z, double ax, double ay, double az) {
  return sqrtl(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) +
               ((z - az) * (z - az)));
}
bool eq(double a, double b) { return fabs(a - b) < (1e-6); }
bool check() {
  for (int j = 0; j < n; j++) {
    ds[j] = 0;
    for (int i = 0; i < n; i++)
      if (i != j) {
        d[j][ds[j]++] = dis(a[j][pos[j][0]], a[j][pos[j][1]], a[j][pos[j][2]],
                            a[i][pos[i][0]], a[i][pos[i][1]], a[i][pos[i][2]]);
      }
    sort(d[j], d[j] + ds[j]);
    if (eq(d[j][6], 0)) return false;
    if (!eq(d[j][0], d[j][1]) || !eq(d[j][1], d[j][2])) return false;
    if (!eq(d[j][3], d[j][4]) || !eq(d[j][4], d[j][5])) return false;
    if (!eq(d[j][0] * sqrt(3.0), d[j][6])) return false;
    if (!eq(d[j][0] * sqrt(2.0), d[j][3])) return false;
  }
  return true;
}
void rec(int x) {
  if (x == 8) {
    if (check()) {
      puts("YES");
      for (int i = 0; i < n; i++)
        cout << a[i][pos[i][0]] << " " << a[i][pos[i][1]] << " "
             << a[i][pos[i][2]] << endl;
      exit(0);
    }
  } else {
    for (int i = 0; i < 3; i++) pos[x][i] = i;
    do {
      rec(x + 1);
    } while (next_permutation(pos[x], pos[x] + 3));
  }
}
int main() {
  for (int i = 0; i < n; i++) {
    cin >> a[i][0] >> a[i][1] >> a[i][2];
    pos[i][0] = 0, pos[i][1] = 1, pos[i][2] = 2;
  }
  rec(0);
  puts("NO");
  return 0;
}
