"use strict";

function Main(input){
  let Line = input.split('\n');
  let Line1 = Line[0].split(' ').map(n => parseInt(n));

  // Translate to index value
  let A = Line1[1] - 1;
  let B = Line1[2] - 1;
  let C = Line1[3] - 1;
  let D = Line1[4] - 1;

  let S = Line[1];

  var A_flag = false;
  var B_flag = false;

  var rock = [];
  var comma = [];

  if (C < B) {
//    console.log("Pattern:ACBD");
    rock2check(S, rock);
    // 先にBをDまで進める
    B_flag = !isRockExisting(B, D, rock);
    // 次にAをCまで進める
    if (B_flag) {
      A_flag = !isRockExisting(A, C, rock);
    } else {
      console.log("No");
    }
  } else if (B < C && C < D) {
//    console.log("Pattern:ABCD");
    rock2check(S, rock);
    // 先にBをDまで進める
    B_flag = !isRockExisting(B, D, rock);
    // 次にAをCまで進める
    if (B_flag) {
      A_flag = !isRockExisting(A, C, rock);
    } else {
      console.log("No");
    }
  // most difficult (ABDC)
  } else {
//    console.log("Pattern:ABDC");
    comma3check(S, comma);
    // Aを優先して進めて、ダメならBを進める
    let overtake_index = isSpace3Existing(B, D, comma);
    // BがCに到着するまでにAがBを追い越せないならNG
    if (overtake_index == -1) {
      console.log("No");
      return;
    } else {
      A = overtake_index + 2;
      B = overtake_index + 1;
      A_flag = !isRockExisting(A, C, rock);
      if (A_flag) {
        B_flag = !isRockExisting(B, D, rock);
      }
    }
  }

//  console.log("A_flag:" + A_flag);
//  console.log("B_flag:" + B_flag);
  if (A_flag && B_flag){
    console.log("Yes");
  } else {
    console.log("No");
  }

}

// 空白が連続して３つ以上あれば追い抜ける
// 追い抜いた後のAとBの位置を返却する
// 追い抜けないときは-1を返却
function isSpace3Existing(start, end, space) {
//  console.log("isSpace3Existing");
//  console.log("start:" + start);
//  console.log("end  :" + end);
  var overtake_index = -1;
  const result = space.some(elm => {
    overtake_index = elm;
    return(start <= elm && elm <= end - 2);
  });
//  console.log(overtake_index);
//  console.log("");
  return overtake_index;
}

// 岩が連続してあればtrue(通れない）
function isRockExisting(start, end, rock) {
//  console.log("isRockExisting");
//  console.log("start:" + start);
//  console.log("end  :" + end);
  const result = rock.some(elm => {
    return(start <= elm && elm <= end);
  });
  if (result) {
//    console.log("true(NG)");
  } else {
//    console.log("false(OK)");
  }
//  console.log("");
  return result;
}

function rock2check(S, rock){
//  console.log("rock2check");
  for (let i = 0; i < S.length - 1; i++) {
    if (S[i] == '#' && S[i + 1] == '#') {
      rock.push(i);
    }
  }
}

function comma3check(S, comma) {
//  console.log("comma3check");
  for (let i = 0; i < S.length - 2; i++) {
    if (S[i] == '.' && S[i + 1] == '.' && S[i + 2] == '.') {
      comma.push(i);
    }
  }
}

Main(require("fs").readFileSync("/dev/stdin","utf-8"));