class Move
  attr_accessor :a, :b # move a to b
  def initialize(a,b)
    @a = a
    @b = b
    raise "bad ord" if a >= b
  end

  def intersect(other)
    c,d = other.a,other.b
    return nil if b < d
    other
  end
end

# a = Move.new(1,10)
# b = Move.new(5,12)
# c = Move.new(4,2)

# pp a.overwrap(b)
# pp a.intersect(b)
# pp a.exchange(b)
# pp a.overwrap(c)
# pp a.intersect(c)
# pp a.exchange(c)

class Problem
  attr_accessor :a, :b, :c, :d, :k, :n, :m, :h, :w, :s, :x, :y
  def initialize
    @n,@a,@b,@c,@d = gets.to_s.split.map{ |v| v.to_i }
    @s = gets.chomp
  end

  # 追い越しが無いなら、#が2個以上連続しなければよい
  # 追い越しがあるなら、上の条件に加えて、3つの連続した.が必要
  def solve
    if d < c # 追い越しあり
      !has_double(a,c) && !has_double(b,d) && triple_space(b-1,d+1)
    else
      !has_double(a,c) && !has_double(b,d)
    end
  end

  def substr(a,b)
    a -= 1
    b -= 1
    s[a..b]
  end

  def has_double(a,b)
    substr(a, b) =~ /##/
  end
  
  def triple_space(a,b)
    substr(a, b) =~ /\.\.\./   
  end

  def show(ans)
    puts ans ? "Yes" : "No"
  end
end

Problem.new.instance_eval do
  # pp s.index("##")
  # pp s.index("...")
  # pp s[64402,10]
  show(solve)
end