#include <bits/stdc++.h>
char a[5][5];
int judge() {
  int i, j;
  int flag = 0;
  for (i = 0; i < 4; i++) {
    for (j = 0; j < 4; j++) {
      if (a[i][j] == 'x') {
        if (i <= 1 && a[i + 1][j] == 'x' && a[i + 2][j] == 'x') {
          flag = 1;
        } else if (j <= 1 && a[i][j + 1] == 'x' && a[i][j + 2] == 'x') {
          flag = 1;
        } else if (i <= 1 && j <= 1 && a[i + 1][j + 1] == 'x' &&
                   a[i + 2][j + 2] == 'x') {
          flag = 1;
        } else if (i >= 2 && i <= 3 && j <= 1 && a[i - 1][j + 1] == 'x' &&
                   a[i - 2][j + 2] == 'x') {
          flag = 1;
        } else {
          flag = 0;
        }
      }
      if (flag) {
        return 1;
      }
    }
  }
  return 0;
}
int main() {
  int i, j;
  int flag = 0;
  for (i = 0; i < 4; i++) {
    scanf("%s", a[i]);
  }
  for (i = 0; i < 4; i++) {
    for (j = 0; j < 4; j++) {
      if (a[i][j] == '.') {
        a[i][j] = 'x';
        flag = judge();
        a[i][j] = '.';
        if (flag == 1) {
          printf("YES\n");
          return 0;
        }
      }
    }
  }
  printf("NO\n");
  return 0;
}
