#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000000000")
using namespace std;
int n;
long long ver[8][3];
long long get_dis(int a, int b) {
  return (((ver[a][0] - ver[b][0]) * (ver[a][0] - ver[b][0])) +
          ((ver[a][1] - ver[b][1]) * (ver[a][1] - ver[b][1])) +
          ((ver[a][2] - ver[b][2]) * (ver[a][2] - ver[b][2])));
}
bool check() {
  long long x, d1 = -1, d2 = -1, d3 = -1;
  int c1 = 0, c2 = 0, c3 = 0;
  for (int i = 0; i < 8; i++)
    for (int j = i + 1; j < 8; j++) {
      x = get_dis(i, j);
      if (d1 == -1 || d1 == x)
        d1 = x, c1++;
      else if (d2 == -1 || d2 == x)
        d2 = x, c2++;
      else if (d3 == -1 || d3 == x)
        d3 = x, c3++;
      else
        return 0;
    }
  if (c1 > c3) swap(c1, c3);
  if (c2 > c3) swap(c3, c2);
  if (c1 > c2) swap(c1, c2);
  if (c1 == 4 && c2 == 12 && c2 == 12) return 1;
  return 0;
}
int main() {
  ios_base::sync_with_stdio(false);
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 3; j++) cin >> ver[i][j];
    sort(ver[i], ver[i] + 3);
  }
  int cc = 0;
  do {
    do {
      do {
        do {
          do {
            do {
              do {
                if (check()) {
                  cout << "YES\n";
                  for (int i = 0; i < 8; i++) {
                    for (int j = 0; j < 3; j++) cout << ver[i][j] << ' ';
                    cout << endl;
                  }
                  return 0;
                }
              } while (next_permutation(ver[6], ver[6] + 3));
            } while (next_permutation(ver[5], ver[5] + 3));
          } while (next_permutation(ver[4], ver[4] + 3));
        } while (next_permutation(ver[3], ver[3] + 3));
      } while (next_permutation(ver[2], ver[2] + 3));
    } while (next_permutation(ver[1], ver[1] + 3));
  } while (next_permutation(ver[0], ver[0] + 3));
  cout << "NO";
  return 0;
}
