#include <bits/stdc++.h>
using namespace std;
int a[6][3] = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2},
               {1, 2, 0}, {2, 0, 1}, {2, 1, 0}};
long long arr[8][3];
long long mat[8][8];
int x[8];
int pos() {
  memset(mat, 0, sizeof(mat));
  int i, j;
  int qq, mm, ww;
  long long m = (long long)1e15, q, w;
  vector<int> dist;
  for (i = 0; i < 8; i++) {
    for (j = i + 1; j <= 7; j++) {
      mat[i][j] = mat[j][i] = (arr[i][a[x[i]][0]] - arr[j][a[x[j]][0]]) *
                                  (arr[i][a[x[i]][0]] - arr[j][a[x[j]][0]]) +
                              (arr[i][a[x[i]][1]] - arr[j][a[x[j]][1]]) *
                                  (arr[i][a[x[i]][1]] - arr[j][a[x[j]][1]]) +
                              (arr[i][a[x[i]][2]] - arr[j][a[x[j]][2]]) *
                                  (arr[i][a[x[i]][2]] - arr[j][a[x[j]][2]]);
      m = min(m, mat[i][j]);
    }
  }
  q = 2 * m;
  w = m + q;
  for (i = 0; i < 8; i++) {
    mm = 3;
    qq = 3;
    ww = 1;
    for (j = 0; j < 8; j++) {
      if (i == j) continue;
      if (mat[i][j] == q) {
        if (qq)
          qq--;
        else
          return 0;
      } else if (mat[i][j] == m) {
        if (mm)
          mm--;
        else
          return 0;
      } else if (mat[i][j] == w) {
        if (ww)
          ww--;
        else
          return 0;
      } else
        return 0;
    }
  }
  return 1;
}
int main() {
  int n, i, j;
  for (i = 0; i < 8; i++) {
    cin >> arr[i][0] >> arr[i][1];
    cin >> arr[i][2];
  }
  int l = 6 * 6 * 6 * 6 * 6 * 6 * 6 * 6;
  for (i = 0; i < l; i++) {
    int ti = i;
    for (j = 0; j < 8; j++) {
      x[j] = i % 6;
      i /= 6;
    }
    i = ti;
    if (pos()) {
      cout << "YES\n";
      for (j = 0; j < 8; j++) {
        cout << arr[j][a[x[j]][0]] << " " << arr[j][a[x[j]][1]] << " "
             << arr[j][a[x[j]][2]] << "\n";
      }
      return 0;
    }
  }
  cout << "NO";
  return 0;
}
