output_description: Print `Yes` if the objective is achievable, and `No` if it is not.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N A B C D
      S
attempt: n, s = open(0)
  n, a, b, c, d = map(int, n.split())
  print("YNeos"["##" * ("..." * (d < c) in s[b - 2 : d + 1]) in s[a:] :: 2])
  
problem_description: Statement
  
  There are N squares arranged in a row, numbered 1, 2, ..., N from left to
  right. You are given a string S of length N consisting of `.` and `#`. If the
  i-th character of S is `#`, Square i contains a rock; if the i-th character of
  S is `.`, Square i is empty.
  
  In the beginning, Snuke stands on Square A, and Fnuke stands on Square B.
  
  You can repeat the following operation any number of times:
  
    * Choose Snuke or Fnuke, and make him jump one or two squares to the right. The destination must be one of the squares, and it must not contain a rock or the other person.
  
  You want to repeat this operation so that Snuke will stand on Square C and
  Fnuke will stand on Square D.
  
  Determine whether this is possible.
samples: [{"input": "7 1 3 6 7\n    .#..#..", "output": "Yes\n    \n\nThe objective is achievable by, for example, moving the two persons as\nfollows. (`A` and `B` represent Snuke and Fnuke, respectively.)\n\n    \n    \n    A#B.#..\n    \n    A#.B#..\n    \n    .#AB#..\n    \n    .#A.#B.\n    \n    .#.A#B.\n    \n    .#.A#.B\n    \n    .#..#AB\n    \n\n* * *"}, {"input": "7 1 3 7 6\n    .#..#..", "output": "No\n    \n\n* * *"}, {"input": "15 1 3 15 13\n    ...#.#...#.#...", "output": "Yes"}]