#include <bits/stdc++.h>
using namespace std;
long long dist(vector<int>& a, vector<int>& b) {
  return (long long)(a[0] - b[0]) * (a[0] - b[0]) +
         (long long)(a[1] - b[1]) * (a[1] - b[1]) +
         (long long)(a[2] - b[2]) * (a[2] - b[2]);
}
bool is_per(vector<int>& a, vector<int>& b, vector<int>& c) {
  return (dist(a, b) + dist(a, c) == dist(b, c));
}
vector<int> bl(3);
bool check_v(vector<vector<int>>& v, int c, long long& l) {
  int pos = 0;
  for (int i = 0; i < 8; ++i)
    if (i != c && dist(v[i], v[c]) == l) {
      if (pos < 3) {
        bl[pos] = i;
      }
      ++pos;
    }
  if (pos != 3) return false;
  return is_per(v[c], v[bl[0]], v[bl[1]]) && is_per(v[c], v[bl[0]], v[bl[2]]) &&
         is_per(v[c], v[bl[1]], v[bl[2]]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  vector<vector<int>> v(8, vector<int>(3));
  for (int i = 0; i < 8; ++i)
    for (int j = 0; j < 3; ++j) cin >> v[i][j];
  for (int a1 = 0; a1 < 6; ++a1) {
    for (int a2 = 0; a2 < 6; ++a2) {
      next_permutation(v[1].begin(), v[1].end());
      for (int a3 = 0; a3 < 6; ++a3) {
        next_permutation(v[2].begin(), v[2].end());
        for (int a4 = 0; a4 < 6; ++a4) {
          next_permutation(v[3].begin(), v[3].end());
          for (int a5 = 0; a5 < 6; ++a5) {
            next_permutation(v[4].begin(), v[4].end());
            for (int a6 = 0; a6 < 6; ++a6) {
              next_permutation(v[5].begin(), v[5].end());
              for (int a7 = 0; a7 < 6; ++a7) {
                next_permutation(v[6].begin(), v[6].end());
                for (int a8 = 0; a8 < 6; ++a8) {
                  next_permutation(v[7].begin(), v[7].end());
                  long long l =
                      min(min(dist(v[0], v[1]),
                              min(dist(v[0], v[2]), dist(v[1], v[2]))),
                          min(dist(v[0], v[3]),
                              min(dist(v[1], v[3]), dist(v[2], v[3]))));
                  if (l != 0) {
                    bool check = true;
                    for (int i = 0; i < 8; ++i)
                      if (!check_v(v, i, l)) check = false;
                    if (check) {
                      cout << "YES\n";
                      for (auto elem : v) {
                        for (auto elem1 : elem) cout << elem1 << " ";
                        cout << '\n';
                      }
                      return 0;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  cout << "NO\n";
  return 0;
}
