#include <bits/stdc++.h>
using namespace std;
const int MXN = 100005;
int dx[4] = {-1, 0, 0, 1};
int dy[4] = {0, -1, 1, 0};
int dxx[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int dyy[8] = {1, 1, 0, -1, -1, -1, 0, 1};
long long mo(long long x) {
  if (x < 0) return -x;
  return x;
}
char ch[5][5];
int chld(int x, int y) {
  if (x >= 2 || y < 2) return 0;
  if (ch[x][y] == ch[x + 1][y - 1] && ch[x][y] == ch[x + 2][y - 2]) return 1;
  return 0;
}
int chrd(int x, int y) {
  if (x >= 2 || y >= 2) return 0;
  if (ch[x][y] == ch[x + 1][y + 1] && ch[x][y] == ch[x + 2][y + 2]) return 1;
  return 0;
}
int chrw(int x, int y) {
  if (y >= 2) return 0;
  if (ch[x][y] == ch[x][y + 1] && ch[x][y] == ch[x][y + 2]) return 1;
  return 0;
}
int chcl(int x, int y) {
  if (x >= 2) return 0;
  if (ch[x][y] == ch[x + 1][y] && ch[x][y] == ch[x + 2][y]) return 1;
  return 0;
}
int check() {
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++)
      if (ch[i][j] == 'x') {
        if (chld(i, j) || chrd(i, j) || chrw(i, j) || chcl(i, j)) {
          return 1;
        }
      }
  }
  return 0;
}
int main() {
  for (int i = 0; i < 4; i++) {
    scanf("%s", ch[i]);
  }
  int w = 0;
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
      if (ch[i][j] == '.') {
        ch[i][j] = 'x';
        w = check();
        if (w) {
          break;
        }
        ch[i][j] = '.';
      }
    }
    if (w) break;
  }
  if (w)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
