#include <bits/stdc++.h>
using namespace std;
string alpha = "abcdefghijklmnopqrstuvwxyz";
void solve();
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  solve();
}
struct point {
  long long int x, y, z;
};
double dist(long long int p1[3], long long int p2[3]) {
  return (double)(p1[0] - p2[0]) * (p1[0] - p2[0]) +
         (p1[1] - p2[1]) * (p1[1] - p2[1]) + (p1[2] - p2[2]) * (p1[2] - p2[2]);
}
bool check(long long int input[8][3]) {
  unordered_set<double> d;
  for (long long int i = 0; i < 8; i++) {
    for (long long int j = i + 1; j < 8; j++) {
      d.insert(dist(input[i], input[j]));
      if (d.size() > 3) {
        return false;
      }
    }
  }
  if (d.size() == 3) {
    return true;
  }
  return false;
}
void solve() {
  long long int input[8][3];
  long long int x, y, z;
  for (long long int i = 0; i < 8; i++) {
    cin >> input[i][0] >> input[i][1] >> input[i][2];
  }
  for (long long int i = 0; i < 6; i++) {
    for (long long int j = 0; j < 6; j++) {
      for (long long int k = 0; k < 6; k++) {
        for (long long int l = 0; l < 6; l++) {
          for (long long int m = 0; m < 6; m++) {
            for (long long int n = 0; n < 6; n++) {
              for (long long int o = 0; o < 6; o++) {
                if (check(input)) {
                  cout << "YES" << endl;
                  for (long long int p = 0; p < 8; p++) {
                    cout << input[p][0] << " " << input[p][1] << " "
                         << input[p][2] << endl;
                  }
                  exit(0);
                }
                next_permutation(input[7], input[7] + 3);
              }
              next_permutation(input[6], input[6] + 3);
            }
            next_permutation(input[5], input[5] + 3);
          }
          next_permutation(input[4], input[4] + 3);
        }
        next_permutation(input[3], input[3] + 3);
      }
      next_permutation(input[2], input[2] + 3);
    }
    next_permutation(input[1], input[1] + 3);
  }
  cout << "NO" << endl;
}
