get :: Int -> Int -> Int -> Int -> Int -> Int
get n c d l r 
  | l + 1 < r = let mid = (l + r) `div` 2 in if mid * c - (n - mid) * d >= 0 then (get n c d l mid) else (get n c d mid r)
  | otherwise = if l >= 0 then l else 0

check :: Int -> Int -> Int -> Int -> Bool
check n dd c d
  | dd >= 0 = any (\(ll, rr) -> ll <= dd && dd <= rr) (takeWhile (\(ll, rr) -> ll <= dd) [(i * c - (n - i) * d, i * d - (n - i) * c) | i <- [(get n c d (-1) n)..n]])
  | dd < 0 = check n (-dd) c d

main :: IO ()
main = do
  n:a:b:c:d:_ <- fmap (map read . words) getLine
  putStrLn $ if check (n - 1) (b - a) c d then "YES" else "NO"
