#include <bits/stdc++.h>
using namespace std;
long p[8][3];
long per[8][6][3];
long ans[8][3];
void permute() {
  for (int i = 0; i < 8; i++) {
    per[i][0][0] = p[i][0], per[i][0][1] = p[i][1], per[i][0][2] = p[i][2];
    per[i][1][0] = p[i][0], per[i][1][1] = p[i][2], per[i][1][2] = p[i][1];
    per[i][2][0] = p[i][1], per[i][2][1] = p[i][0], per[i][2][2] = p[i][2];
    per[i][3][0] = p[i][1], per[i][3][1] = p[i][2], per[i][3][2] = p[i][0];
    per[i][4][0] = p[i][2], per[i][4][1] = p[i][1], per[i][4][2] = p[i][0];
    per[i][5][0] = p[i][2], per[i][5][1] = p[i][0], per[i][5][2] = p[i][1];
  }
}
long long dist(int i, int pi, int j, int pj) {
  return ((long long)per[i][pi][0] - per[j][pj][0]) *
             ((long long)per[i][pi][0] - per[j][pj][0]) +
         ((long long)per[i][pi][1] - per[j][pj][1]) *
             ((long long)per[i][pi][1] - per[j][pj][1]) +
         ((long long)per[i][pi][2] - per[j][pj][2]) *
             ((long long)per[i][pi][2] - per[j][pj][2]);
}
long long dists[28];
bool iscube(int* ta) {
  int k = 0;
  long long md = 999999999999999LL;
  for (int i = 0; i < 8; i++) {
    for (int j = i + 1; j < 8; j++) {
      dists[k] = dist(i, ta[i], j, ta[j]);
      md = min(md, dists[k++]);
    }
  }
  int c1, c2, c3;
  c1 = c2 = c3 = 0;
  for (int i = 0; i < 28; i++) {
    if (dists[i] == md)
      c1++;
    else if (dists[i] == 2 * md)
      c2++;
    else if (dists[i] == 3 * md)
      c3++;
    else
      return false;
  }
  return c1 == 12 && c2 == 12 && c3 == 4;
}
bool restore() {
  for (int i1 = 0; i1 < 6; i1++)
    for (int i2 = 0; i2 < 6; i2++)
      for (int i3 = 0; i3 < 6; i3++)
        for (int i4 = 0; i4 < 6; i4++)
          for (int i5 = 0; i5 < 6; i5++)
            for (int i6 = 0; i6 < 6; i6++)
              for (int i7 = 0; i7 < 6; i7++)
                for (int i8 = 0; i8 < 6; i8++) {
                  int ta[] = {i1, i2, i3, i4, i5, i6, i7, i8};
                  if (iscube(ta)) {
                    cout << "YES\n";
                    for (int i = 0; i < 8; i++) {
                      cout << per[i][ta[i]][0] << " " << per[i][ta[i]][1] << " "
                           << per[i][ta[i]][2] << endl;
                    }
                    return true;
                  }
                }
  return false;
}
int main() {
  for (int i = 0; i < 8; i++) cin >> p[i][0] >> p[i][1] >> p[i][2];
  permute();
  if (restore()) {
  } else {
    cout << "NO\n";
  }
  return 0;
}
