#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#define INF 200000000
using namespace std;
struct Point
{
int x[3];
Point(){};
};
inline bool operator<(const Point &a, const Point &b)
{
if(a.x[0] != b.x[0])
return a.x[0] < b.x[0];
if(a.x[1] != b.x[1])
return a.x[1] < b.x[1];
return a.x[2] < b.x[2];
}
Point point[10];
inline void swap(int &a, int &b)
{
int c=a;
a=b;
b=c;
}
bool ok(Point v[])
{
// int dist[];
// int dist_count[];
Point ans[9];
for(int i = 1 ; i <= 8 ; i++)
ans[i] = v[i];
sort(ans+1, ans+9);
int num[3];
for(int i = 0 ; i < 3 ; i++)
{
num[i] = ans[2].x[i] - ans[1].x[i];
for(int j = 3 ; j < 8 ; j+=2)
{
if(ans[j+1].x[i] - ans[j].x[i] != num[i])
return false;
}
}
if(num[0]==0 && num[1]==0 && num[2]==0)
return false;
return true;
}
inline long long count_e()
{
long long E = 0;
for(int i = 1 ; i < 8 ; i++)
{
for(int j = i+1 ; j <= 8 ; j++)
{
long long a,b,c;
a = (point[j].x[0] - point[i].x[0]);
b = (point[j].x[1] - point[i].x[1]);
c = (point[j].x[2] - point[i].x[2]);
// printf("%d,%d,%d\n", a, b, c);
if(a==0 && b==0 && c==0)
return 123456789;
E += (a*a)+(b*b)+(c*c);
}
}
// puts("");
return E;
}
int main()
{
srand(clock());
Point low_state[9];
for(int i = 1 ; i <= 8 ; i++)
scanf("%d%d%d", &point[i].x[0], &point[i].x[1], &point[i].x[2]);
long long low = INF;
for(int i = 0 ; i < 50000 ; i++)
{
long long E = count_e();
if(E <= low && ok(point))
{
for(int i = 1 ; i <= 8 ; i++)
low_state[i] = point[i];
low = E;
}
for(int j = 0 ; j < 100 ; j++)
{
int line = rand()%7+1;
int sa = rand()%3;
int sb = (sa+1)%3;
swap(point[line].x[sa], point[line].x[sb]);
}
}
// cout << "LOW = " << low << endl;
if(low != 123456789 && ok(low_state))
{
puts("YES");
for(int i = 1 ; i <= 8 ; i++)
{
printf("%d %d %d\n", low_state[i].x[0], low_state[i].x[1], low_state[i].x[2]);
}
}
else
puts("NO");
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0ZGxpYj4KI2luY2x1ZGU8dGltZS5oPgojaW5jbHVkZTxhbGdvcml0aG0+CgojZGVmaW5lIElORiAyMDAwMDAwMDAKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgUG9pbnQKewoJaW50IHhbM107CglQb2ludCgpe307Cn07CgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pbnQgJmEsIGNvbnN0IFBvaW50ICZiKQp7CglpZihhLnhbMF0gIT0gYi54WzBdKQoJCXJldHVybiBhLnhbMF0gPCBiLnhbMF07CglpZihhLnhbMV0gIT0gYi54WzFdKQoJCXJldHVybiBhLnhbMV0gPCBiLnhbMV07CglyZXR1cm4gYS54WzJdIDwgYi54WzJdOwp9CgpQb2ludCBwb2ludFsxMF07CgppbmxpbmUgdm9pZCBzd2FwKGludCAmYSwgaW50ICZiKQp7CglpbnQgYz1hOwoJYT1iOwoJYj1jOwp9Cgpib29sIG9rKFBvaW50IHZbXSkKewovLwlpbnQgZGlzdFtdOwovLwlpbnQgZGlzdF9jb3VudFtdOwoJUG9pbnQgYW5zWzldOwoJZm9yKGludCBpID0gMSA7IGkgPD0gOCA7IGkrKykKCQlhbnNbaV0gPSB2W2ldOwoJc29ydChhbnMrMSwgYW5zKzkpOwoJaW50IG51bVszXTsKCWZvcihpbnQgaSA9IDAgOyBpIDwgMyA7IGkrKykKCXsKCQludW1baV0gPSBhbnNbMl0ueFtpXSAtIGFuc1sxXS54W2ldOwoJCWZvcihpbnQgaiA9IDMgOyBqIDwgOCA7IGorPTIpCgkJewoJCQlpZihhbnNbaisxXS54W2ldIC0gYW5zW2pdLnhbaV0gICE9ICBudW1baV0pCgkJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJaWYobnVtWzBdPT0wICYmIG51bVsxXT09MCAmJiBudW1bMl09PTApCgkJcmV0dXJuIGZhbHNlOwoJcmV0dXJuIHRydWU7Cn0KCmlubGluZSBsb25nIGxvbmcgY291bnRfZSgpCnsKCWxvbmcgbG9uZyBFID0gMDsKCWZvcihpbnQgaSA9IDEgOyBpIDwgOCA7IGkrKykKCXsKCQlmb3IoaW50IGogPSBpKzEgOyBqIDw9IDggOyBqKyspCgkJewoJCQlsb25nIGxvbmcgYSxiLGM7CgkJCWEgPSAocG9pbnRbal0ueFswXSAtIHBvaW50W2ldLnhbMF0pOwoJCQliID0gKHBvaW50W2pdLnhbMV0gLSBwb2ludFtpXS54WzFdKTsKCQkJYyA9IChwb2ludFtqXS54WzJdIC0gcG9pbnRbaV0ueFsyXSk7CgkvLwkJcHJpbnRmKCIlZCwlZCwlZFxuIiwgYSwgYiwgYyk7CgkJCWlmKGE9PTAgJiYgYj09MCAmJiBjPT0wKQoJCQkJcmV0dXJuIDEyMzQ1Njc4OTsKCQkJRSArPSAoYSphKSsoYipiKSsoYypjKTsKCQl9Cgl9Ci8vCXB1dHMoIiIpOwoJcmV0dXJuIEU7Cn0KCmludCBtYWluKCkKewoJc3JhbmQoY2xvY2soKSk7CgkKCQoJUG9pbnQgbG93X3N0YXRlWzldOwoJZm9yKGludCBpID0gMSA7IGkgPD0gOCA7IGkrKykKCQlzY2FuZigiJWQlZCVkIiwgJnBvaW50W2ldLnhbMF0sICZwb2ludFtpXS54WzFdLCAmcG9pbnRbaV0ueFsyXSk7CgkKCWxvbmcgbG9uZyBsb3cgPSBJTkY7CgkKCQoJZm9yKGludCBpID0gMCA7IGkgPCA1MDAwMCA7IGkrKykKCXsKCQlsb25nIGxvbmcgRSA9IGNvdW50X2UoKTsKCQlpZihFIDw9IGxvdyAmJiBvayhwb2ludCkpCgkJewoJCQlmb3IoaW50IGkgPSAxIDsgaSA8PSA4IDsgaSsrKQoJCQkJbG93X3N0YXRlW2ldID0gcG9pbnRbaV07CgkJCWxvdyA9IEU7CgkJfQoJCWZvcihpbnQgaiA9IDAgOyBqIDwgMTAwIDsgaisrKQoJCXsKCQkJaW50IGxpbmUgPSByYW5kKCklNysxOwoJCQlpbnQgc2EgPSByYW5kKCklMzsKCQkJaW50IHNiID0gKHNhKzEpJTM7CgkJCXN3YXAocG9pbnRbbGluZV0ueFtzYV0sIHBvaW50W2xpbmVdLnhbc2JdKTsKCQl9Cgl9CgkKCQovLwljb3V0IDw8ICJMT1cgPSAiIDw8IGxvdyA8PCBlbmRsOwoJaWYobG93ICE9IDEyMzQ1Njc4OSAmJiBvayhsb3dfc3RhdGUpKQoJewoJCXB1dHMoIllFUyIpOwoJCWZvcihpbnQgaSA9IDEgOyBpIDw9IDggOyBpKyspCgkJewoJCQlwcmludGYoIiVkICVkICVkXG4iLCBsb3dfc3RhdGVbaV0ueFswXSwgbG93X3N0YXRlW2ldLnhbMV0sIGxvd19zdGF0ZVtpXS54WzJdKTsKCQl9Cgl9CgllbHNlCgkJcHV0cygiTk8iKTsKCQoJcmV0dXJuIDA7Cn0K