#include <bits/stdc++.h>
using namespace std;
struct data {
  long long int x, y, z;
  data(long long int a, long long int b, long long int c) {
    x = a, y = b, z = c;
  }
  data() {}
};
vector<data> vct[10];
long long int arr[10][4];
int main() {
  for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 3; j++) scanf("%lld", &arr[i][j]);
  }
  string pr = "012";
  while (1) {
    int a, b, c;
    a = pr[0] - '0';
    b = pr[1] - '0';
    c = pr[2] - '0';
    for (int i = 0; i < 8; i++) {
      vct[i].push_back(data(arr[i][a], arr[i][b], arr[i][c]));
    }
    if (next_permutation(pr.begin(), pr.end()))
      continue;
    else
      break;
  }
  long long int v[100];
  data pp[100];
  long long int arr[4];
  long long int cc[4];
  for (int i0 = 0; i0 < 6; i0++) {
    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++) {
                  pp[0] = vct[0][i0];
                  pp[1] = vct[1][i1];
                  pp[2] = vct[2][i2];
                  pp[3] = vct[3][i3];
                  pp[4] = vct[4][i4];
                  pp[5] = vct[5][i5];
                  pp[6] = vct[6][i6];
                  pp[7] = vct[7][i7];
                  long long int cnt = 0;
                  for (int i = 0; i < 8 - 1; i++) {
                    for (int j = i + 1; j < 8; j++) {
                      long long int s =
                          (pp[i].x - pp[j].x) * (pp[i].x - pp[j].x) +
                          (pp[i].y - pp[j].y) * (pp[i].y - pp[j].y) +
                          (pp[i].z - pp[j].z) * (pp[i].z - pp[j].z);
                      v[cnt++] = s;
                    }
                  }
                  for (int i = 0; i < 3; i++) {
                    arr[i] = 0;
                    cc[i] = 0;
                  }
                  for (int i = 0; i < cnt; i++) {
                    if (arr[0] < v[i]) arr[0] = v[i];
                  }
                  for (int i = 0; i < cnt; i++) {
                    if (arr[1] < v[i] && v[i] != arr[0]) arr[1] = v[i];
                  }
                  for (int i = 0; i < cnt; i++) {
                    if (arr[2] < v[i] && v[i] != arr[0] && v[i] != arr[1])
                      arr[2] = v[i];
                  }
                  if (arr[0] == 3 * arr[2] && arr[1] == 2 * arr[2] &&
                      arr[0] != 0 && arr[1] != 0 && arr[2] != 0) {
                    for (int i = 0; i < cnt; i++) {
                      if (arr[0] == v[i]) {
                        cc[0]++;
                      } else if (arr[1] == v[i]) {
                        cc[1]++;
                      } else if (arr[2] == v[i]) {
                        cc[2]++;
                      }
                    }
                  }
                  if (cc[2] == 12 && cc[1] == 12 && cc[0] == 4) {
                    printf("YES\n");
                    for (int i = 0; i < 8; i++) {
                      printf("%lld %lld %lld\n", pp[i].x, pp[i].y, pp[i].z);
                    }
                    return 0;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  printf("NO\n");
}
