#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
long long MAX = 1e17;
long long a[8][3];
int main() {
  ios_base::sync_with_stdio(0);
  ;
  for (int i = 0; i < 8; i++)
    for (int j = 0; j < 3; j++) cin >> a[i][j];
  for (int i = 0; i < 8; i++) sort(a[i], a[i] + 3);
  do {
    do {
      do {
        do {
          do {
            do {
              do {
                set<pair<long long, int> > sett;
                for (int i = 1; i < 8; i++) {
                  sett.insert({(a[0][0] - a[i][0]) * (a[0][0] - a[i][0]) +
                                   (a[0][1] - a[i][1]) * (a[0][1] - a[i][1]) +
                                   (a[0][2] - a[i][2]) * (a[0][2] - a[i][2]),
                               i});
                }
                int b = -1, c = -1, d = -1;
                set<pair<long long, int> >::iterator it = sett.begin();
                b = it->second;
                long long b2 = it->first;
                it++;
                c = it->second;
                long long c2 = it->first;
                it++;
                d = it->second;
                long long d2 = it->first;
                if (!(b2 == c2 and c2 == d2)) continue;
                set<pair<long long, pair<long long, long long> > > s;
                set<pair<long long, pair<long long, long long> > > t;
                s.insert({a[0][0], {a[0][1], a[0][2]}});
                s.insert({a[b][0], {a[b][1], a[b][2]}});
                s.insert({a[c][0], {a[c][1], a[c][2]}});
                s.insert({a[d][0], {a[d][1], a[d][2]}});
                int x1 = a[b][0] + a[c][0] - a[0][0],
                    y1 = a[b][1] + a[c][1] - a[0][1],
                    z1 = a[b][2] + a[c][2] - a[0][2];
                int x2 = a[b][0] + a[d][0] - a[0][0],
                    y2 = a[b][1] + a[d][1] - a[0][1],
                    z2 = a[b][2] + a[d][2] - a[0][2];
                int x3 = a[d][0] + a[c][0] - a[0][0],
                    y3 = a[d][1] + a[c][1] - a[0][1],
                    z3 = a[d][2] + a[c][2] - a[0][2];
                s.insert({x1, {y1, z1}});
                s.insert({x2, {y2, z2}});
                s.insert({x3, {y3, z3}});
                int x4 = x1 + x2 - a[b][0], y4 = y1 + y2 - a[b][1],
                    z4 = z1 + z2 - a[b][2];
                s.insert({x4, {y4, z4}});
                bool yes = 1;
                for (int i = 0; i < 8; i++) {
                  if (s.find(make_pair(a[i][0], make_pair(a[i][1], a[i][2]))) ==
                      s.end()) {
                    yes = 0;
                    break;
                  }
                  t.insert({a[i][0], {a[i][1], a[i][2]}});
                }
                if (t.size() != 8) yes = 0;
                if (yes) {
                  cout << "YES\n";
                  for (int i = 0; i < 8; i++) {
                    cout << a[i][0] << " " << a[i][1] << " " << a[i][2] << endl;
                  }
                  return 0;
                }
              } while (next_permutation(a[7], a[7] + 3));
            } while (next_permutation(a[6], a[6] + 3));
          } while (next_permutation(a[5], a[5] + 3));
        } while (next_permutation(a[4], a[4] + 3));
      } while (next_permutation(a[3], a[3] + 3));
    } while (next_permutation(a[2], a[2] + 3));
  } while (next_permutation(a[1], a[1] + 3));
  cout << "NO\n";
}
