#include <bits/stdc++.h>
using namespace std;
long long lst[8][3], d[8][3], lst1[8][3], b[8];
bool flag = false;
long long lsize(int i, int j) {
  return (lst1[i][0] - lst1[j][0]) * (lst1[i][0] - lst1[j][0]) +
         (lst1[i][1] - lst1[j][1]) * (lst1[i][1] - lst1[j][1]) +
         (lst1[i][2] - lst1[j][2]) * (lst1[i][2] - lst1[j][2]);
}
long long proov(int a, int b, int c) {
  return (lst1[a][0] - lst1[c][0]) * (lst1[b][0] - lst1[c][0]) +
         (lst1[a][1] - lst1[c][1]) * (lst1[b][1] - lst1[c][1]) +
         (lst1[a][2] - lst1[c][2]) * (lst1[b][2] - lst1[c][2]);
}
void check() {
  int i, j, kmin;
  long long mn = 1e18;
  for (i = 0; i < 8; i++) {
    for (j = i + 1; j < 8; j++) mn = min(mn, lsize(j, i));
  }
  if (mn == 0) return;
  for (i = 0; i < 8; i++) {
    kmin = 0;
    for (j = 0; j < 8; j++) {
      if (i != j && lsize(i, j) == mn) {
        b[kmin] = j;
        kmin++;
      }
    }
    if (kmin != 3) return;
    if (!(proov(b[0], b[1], i) == 0 && proov(b[0], b[2], i) == 0 &&
          proov(b[1], b[2], i) == 0))
      return;
  }
  flag = true;
}
void per(int ln) {
  int i, j;
  if (flag) return;
  if (ln == 8) {
    check();
  } else {
    for (i = 0; i < 6; i++) {
      per(ln + 1);
      if (flag) return;
      next_permutation(d[ln], d[ln] + 3);
      for (j = 0; j < 3; j++) {
        lst1[ln][d[ln][j]] = lst[ln][j];
      }
    }
  }
}
int main() {
  int i, j, n, m;
  for (i = 0; i < 8; i++) {
    for (j = 0; j < 3; j++) {
      d[i][j] = j;
      cin >> lst[i][j];
      lst1[i][j] = lst[i][j];
    }
  }
  per(1);
  if (flag) {
    cout << "YES\n";
    for (i = 0; i < 8; i++) {
      for (j = 0; j < 3; j++) {
        cout << lst1[i][j] << ' ';
      }
      cout << '\n';
    }
  } else {
    cout << "NO";
  }
  return 0;
}
