#include <bits/stdc++.h>
using namespace std;
int n;
int du[50];
long long int pos[50][2];
int edge[50][50];
vector<int> G[50];
long long int dx[4] = {1, 0, -1, 0};
long long int dy[4] = {0, -1, 0, 1};
long long int rd[4] = {2, 3, 0, 1};
int DEEP = 30;
void dfs(int u, int fa, int fromdir, long long int x, long long int y) {
  pos[u][0] = x;
  pos[u][1] = y;
  int dir = 0;
  for (int i = 0, sz = G[u].size(); i < sz; i++) {
    int v = G[u][i];
    if (v == fa) continue;
    if (fromdir != -1 && dir == rd[fromdir]) dir++;
    long long int len = 1LL << DEEP;
    long long int nx = x + dx[dir] * len;
    long long int ny = y + dy[dir] * len;
    DEEP--;
    dfs(v, u, dir, nx, ny);
    dir++;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    G[a].push_back(b);
    G[b].push_back(a);
    du[a]++;
    du[b]++;
  }
  for (int i = 1; i <= n; i++) {
    if (du[i] > 4) {
      puts("NO");
      return 0;
    }
  }
  dfs(1, 0, -1, 0, 0);
  puts("YES");
  for (int i = 1; i <= n; i++) {
    cout << pos[i][0] << " " << pos[i][1] << endl;
  }
  return 0;
}
