#include <bits/stdc++.h>
using namespace std;
long long a[8][3];
long long b[7];
long long dist(int i, int j) {
  long long dx = a[i][0] - a[j][0];
  long long dy = a[i][1] - a[j][1];
  long long dz = a[i][2] - a[j][2];
  return dx * dx + dy * dy + dz * dz;
}
bool check() {
  for (int i = 0; i < 8; ++i) {
    for (int j = 0; j < 8; ++j) {
      if (j < i)
        b[j] = dist(i, j);
      else if (j > i)
        b[j - 1] = dist(i, j);
      else
        continue;
    }
    sort(b, b + 7);
    long long t1 = b[0];
    long long t2 = 2 * b[0];
    long long t3 = 3 * b[0];
    if (t1 == 0 || b[0] != t1 || b[1] != t1 || b[2] != t1 || b[3] != t2 ||
        b[4] != t2 || b[5] != t2 || b[6] != t3) {
      return false;
    }
  }
  return true;
}
bool isOK(int i) {
  if (i == 8) {
    return check();
  }
  sort(a[i], a[i] + 3);
  do {
    if (isOK(i + 1)) return true;
  } while (next_permutation(a[i], a[i] + 3));
  return false;
}
int main() {
  for (int i = 0; i < 8; ++i) {
    for (int j = 0; j < 3; ++j) {
      scanf("%I64d", &a[i][j]);
    }
  }
  if (isOK(0)) {
    printf("YES\n");
    for (int i = 0; i < 8; ++i) {
      for (int j = 0; j < 3; ++j) {
        if (j == 0)
          printf("%I64d", a[i][j]);
        else
          printf(" %I64d", a[i][j]);
      }
      printf("\n");
    }
  } else {
    printf("NO\n");
  }
  return 0;
}
