#include <bits/stdc++.h>
using namespace std;
using std::vector;
typedef long long int vec3[3];
long long int abso(long long int in) {
  if (in < 0) {
    return -in;
  }
  return (in);
}
long long int getLength(long long int in) {
  long long int l = 1;
  long long int tmp = in;
  while ((tmp / 10) > 0) {
    tmp /= 10;
    l++;
  }
  return (l);
}
long long int dist(vec3 a, vec3 b) {
  return ((b[0] - a[0]) * (b[0] - a[0]) + (b[1] - a[1]) * (b[1] - a[1]) +
          (b[2] - a[2]) * (b[2] - a[2]));
}
bool duplicateExist(long long int c[8][3]) {
  for (int i = 0; i < 7; i++) {
    for (int j = i + 1; j < 8; j++) {
      bool found = false;
      if ((c[i][0] == c[j][0]) && (c[i][1] == c[j][1]) &&
          (c[i][2] == c[j][2])) {
        return (true);
      }
      if (found) {
        return (true);
      }
    }
  }
  return (false);
}
bool isCube(long long int c[8][3]) {
  if (!duplicateExist(c)) {
    long long int l[7];
    vec3 o = {c[0][0], c[0][1], c[0][2]};
    for (int i = 1; i < 8; i++) {
      vec3 lo = {c[i][0], c[i][1], c[i][2]};
      l[i - 1] = dist(o, lo);
    }
    std::sort(l, l + 7);
    return ((l[0] != 0) && (l[0] == l[1]) && (l[0] == l[2]) &&
            (l[3] == 2 * l[0]) && (l[4] == 2 * l[0]) && (l[5] == 2 * l[0]) &&
            (l[6] == 3 * l[0]));
  }
  return (false);
}
bool gotcha(long long int v[8][3], int i = 0) {
  do {
    if (isCube(v)) {
      return (true);
    } else {
      if (i < 7)
        if (gotcha(v, i + 1)) {
          return (true);
        }
    }
  } while (next_permutation(v[i], v[i] + 3));
  return (false);
}
int main() {
  char ch[] = {"abc"};
  long long int wr[8][3];
  for (int i = 0; i < 8; i++) {
    cin >> wr[i][0] >> wr[i][1] >> wr[i][2];
    if (wr[i][2] < wr[i][1]) {
      std::swap(wr[i][1], wr[i][2]);
    }
    if (wr[i][1] < wr[i][0]) {
      std::swap(wr[i][1], wr[i][0]);
    }
  }
  if (gotcha(wr)) {
    cout << "YES" << endl;
    for (int i = 0; i < 8; i++) {
      for (int j = 0; j < 3; j++) {
        if (j != 2) {
          cout << wr[i][j] << " ";
        } else {
          cout << wr[i][j];
        }
      }
      cout << endl;
    }
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
