#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const int N = 8;
int tmp;
int points[10][3];
long long diff[10][3];
long long dist[10];
void dfs(int u) {
  if (u == 8) {
    long long side = -1;
    for (int i = 0; i < 8; i++) {
      long long mn = INF;
      int id1 = -1;
      int id2 = -1;
      int id3 = -1;
      int id4 = -1;
      for (int j = 0; j < 8; j++) {
        if (i == j) continue;
        dist[j] = 0;
        for (int k = 0; k < 3; k++) {
          diff[j][k] = points[i][k] - points[j][k];
          dist[j] += (diff[j][k]) * (diff[j][k]);
        }
        if (dist[j] < mn) {
          mn = dist[j];
          id1 = -1;
          id2 = -1;
          id3 = -1;
          id4 = -1;
        }
        if (dist[j] == mn) {
          id4 = id3;
          id3 = id2;
          id2 = id1;
          id1 = j;
        }
      }
      if (id4 != -1 || id3 == -1) return;
      if (mn == 0) return;
      if (side == -1) side = mn;
      if (side != mn) return;
      if (diff[id1][0] * diff[id2][0] + diff[id1][1] * diff[id2][1] +
              diff[id1][2] * diff[id2][2] !=
          0)
        return;
      if (diff[id2][0] * diff[id3][0] + diff[id2][1] * diff[id3][1] +
              diff[id2][2] * diff[id3][2] !=
          0)
        return;
      if (diff[id1][0] * diff[id3][0] + diff[id1][1] * diff[id3][1] +
              diff[id1][2] * diff[id3][2] !=
          0)
        return;
    }
    cout << "YES\n";
    for (int j = 0; j < 8; j++) {
      for (int k = 0; k < 3; k++) cout << points[j][k] << " ";
      cout << "\n";
    }
    exit(0);
    return;
  }
  sort(points[u], points[u] + 3);
  do {
    dfs(u + 1);
  } while (next_permutation(points[u], points[u] + 3));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 3; j++) {
      cin >> points[i][j];
    }
  }
  dfs(1);
  cout << "NO\n";
  return 0;
}
