#include <bits/stdc++.h>
using namespace std;
vector<int> nei[35];
int done[35];
pair<long long int, long long int> pos[35];
int fl;
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
int af[4] = {1, 0, 3, 2};
void place(int ind, long long int x, long long int y, int forb,
           long long int dep) {
  if (fl == 0) return;
  if (int(nei[ind].size()) > 4) {
    fl = 0;
    return;
  }
  done[ind] = 1;
  pos[ind] = pair<long long int, long long int>(x, y);
  vector<int> toput;
  for (int i = 0; i < int(nei[ind].size()); i++)
    if (!done[nei[ind][i]]) toput.push_back(nei[ind][i]);
  int ct = 0;
  for (int i = 0; i < 4 && ct < int(toput.size()); i++)
    if (forb != i) {
      place(toput[ct], x + dep * dx[i], y + dep * dy[i], af[i], dep / 2);
      ct++;
    }
  if (ct < int(toput.size())) fl = 0;
}
int main() {
  int n;
  scanf("%d", &n);
  int a, b;
  for (int i = 0; i < n - 1; i++) {
    scanf("%d %d", &a, &b);
    nei[a - 1].push_back(b - 1);
    nei[b - 1].push_back(a - 1);
  }
  int fs = 0;
  for (int i = 0; i < n; i++)
    if (nei[fs].size() < nei[i].size()) fs = i;
  fl = 1;
  place(fs, 0, 0, -1, 10000000000000000LL);
  if (!fl)
    printf("NO\n");
  else {
    printf("YES\n");
    for (int i = 0; i < n; i++)
      printf("%lld %lld\n", pos[i].first, pos[i].second);
  }
  return 0;
}
