N, A, B, C, D = gets.chomp.split(" ").map(&:to_i)
s = []
s = gets.chomp.split("")

# すぬけ君の初期位置と可能性
sunuke = {:name => "sunuke", :point => A - 1, :able => nil, :goal => C - 1}
# ふぬけ君の初期位置と可能性
funuke = {:name => "funuke", :point => B - 1, :able => nil, :goal => D - 1}


$batton = nil

def kenken(walker, stopping, s)
  if walker[:point] == walker[:goal] then
    # p "able true"
    # p walker[:name]
    walker[:able] = true
    true
  elsif (walker[:point] + 1 == stopping[:point] && s[walker[:point] + 2] == "#"  || \
        walker[:point] + 2 == stopping[:point] && s[walker[:point] + 1] == "#") && \
        stopping[:point] != stopping[:goal] then
    $batton = false
    true

  elsif walker[:point] > 0 && $batton \
        && s[walker[:point] - 1] == "." && s[walker[:point] + 1] == "." then
    $batton = false
    # p walker[:name]
    # p "..."
    true
  elsif s[walker[:point] + 1] == "." && walker[:point] + 1 != stopping[:point] then
    walker[:point] += 1
    $batton = true
    # p walker[:name]
    # p walker[:point] + 1
    false
  elsif s[walker[:point] + 2] == "." && walker[:point] + 2 != stopping[:point] then
    walker[:point] += 2
    $batton = true
    # p walker[:name]
    # p walker[:point] + 1
    false
  else
    #$batton = false
    walker[:able] = false
    # p "able false"
    # p walker[:name]
    false
  end
end

until sunuke[:able] && funuke[:able] do
  if kenken(funuke, sunuke, s) then
    if kenken(sunuke, funuke, s) then
      kenken(funuke, sunuke, s)
    end
  end
  if sunuke[:able] == false || funuke[:able] == false
    break
  end
end

if sunuke[:able] && funuke[:able] then
  puts "Yes"
else
  puts "No"
end
