#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int SIZE = 1e6 + 10;
struct Point {
  long long x, y, z;
  Point(long long _x = 0, long long _y = 0, long long _z = 0) {
    x = _x;
    y = _y;
    z = _z;
  }
  Point operator-(const Point& b) { return Point(x - b.x, y - b.y, z - b.z); }
  Point operator+(const Point& b) { return Point(x + b.x, y + b.y, z + b.z); }
  Point operator*(const long long v) { return Point(x * v, y * v, z * v); }
  Point operator/(const long long v) { return Point(x / v, y / v, z / v); }
  long long dis() { return x * x + y * y + z * z; }
} p[8];
int d[8][3];
vector<Point> a[8];
void check() {
  vector<int> v;
  Point mm(0, 0, 0);
  map<long long, int> H;
  for (int i = 0; i < (8); ++i) {
    mm = mm + p[i];
    for (int j = 0; j < (i); ++j) {
      H[(p[i] - p[j]).dis()]++;
      if (((int)(H).size()) > 3) return;
    }
  }
  if (((int)(H).size()) < 3) return;
  mm = mm / 8;
  long long l = (p[0] - mm).dis();
  for (int i = (1); i < (8); ++i) {
    if ((p[i] - mm).dis() != l) return;
  }
  map<long long, int>::iterator it = H.begin();
  pair<long long, int> p1 = *it;
  it++;
  pair<long long, int> p2 = *it;
  it++;
  pair<long long, int> p3 = *it;
  if (l * 4 != p3.first) return;
  if (p1.second != 12) return;
  if (p2 != make_pair(p1.first * 2, 12)) return;
  if (p3 != make_pair(p1.first * 3, 4)) return;
  puts("YES");
  for (int i = 0; i < (8); ++i)
    printf("%I64d %I64d %I64d\n", p[i].x / 2, p[i].y / 2, p[i].z / 2);
  exit(0);
}
void dfs(int x) {
  if (x == 8) {
    check();
    return;
  }
  for (int i = 0; i < (((int)(a[x]).size())); ++i) {
    p[x] = a[x][i];
    dfs(x + 1);
  }
}
int main() {
  for (int i = 0; i < (8); ++i)
    for (int j = 0; j < (3); ++j) scanf("%d", &(d[i][j]));
  for (int i = 0; i < (8); ++i) {
    sort(d[i], d[i] + 3);
    for (int j = 0; j < (3); ++j) d[i][j] *= 2;
    do {
      a[i].push_back(Point(d[i][0], d[i][1], d[i][2]));
    } while (next_permutation(d[i], d[i] + 3));
  }
  p[0] = a[0][0];
  dfs(1);
  puts("NO");
  return 0;
}
