#include <bits/stdc++.h>
int main() {
  int n, i, flag = 0, flag1 = 0;
  scanf("%d", &n);
  int a[n], at[n + 1], bt[n + 1];
  for (i = 1; i <= n; i++) {
    at[i] = 0;
    bt[i] = 0;
  }
  char first[n + 1][52], sp, last[n + 1][52];
  for (i = 1; i <= n; i++) {
    scanf("%s%c%s", first[i], &sp, last[i]);
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  at[a[0]] = 1;
  bt[a[0]] = 1;
  for (i = 1; i < n; i++) {
    flag = 0;
    if (strcmp(first[a[i - 1]], first[a[i]]) < 0) {
      if (at[a[i - 1]] == 1) {
        flag = 1;
        at[a[i]] = 1;
      }
    }
    if (strcmp(first[a[i - 1]], last[a[i]]) < 0) {
      if (at[a[i - 1]] == 1) {
        flag = 1;
        bt[a[i]] = 1;
      }
    }
    if (strcmp(last[a[i - 1]], first[a[i]]) < 0) {
      if (bt[a[i - 1]] == 1) {
        flag = 1;
        at[a[i]] = 1;
      }
    }
    if (strcmp(last[a[i - 1]], last[a[i]]) < 0) {
      if (bt[a[i - 1]] == 1) {
        flag = 1;
        bt[a[i]] = 1;
      }
    }
    if (flag == 0) {
      flag1 = 1;
      break;
    }
  }
  if (flag1 == 1)
    printf("NO\n");
  else
    printf("YES\n");
  return 0;
}
