A flea is sitting at one of the *n* hassocks, arranged in a circle, at the moment. After minute number *k* the flea jumps through *k* - 1 hassoсks (clockwise). For example, after the first minute the flea jumps to the neighboring hassock. You should answer: will the flea visit all the hassocks or not. We assume that flea has infinitely much time for this jumping.
The only line contains single integer: 1 ≤ *n* ≤ 1000 — number of hassocks.
class CodeforcesTask55ASolution:
    def __init__(self):
        self.result = ''
        self.n = 0

    def read_input(self):
        self.n = int(input())

    def process_task(self):
        hassocks = [x + 1 for x in range(self.n)]
        visits = set()
        visiting = 1
        for x in range(1000 * self.n):
            visiting += x
            visiting = visiting % self.n
            if not visiting:
                visiting = self.n
            visits.add(visiting)
        if list(visits) == hassocks:
            self.result = "YES"
        else:
            self.result = "NO"

    def get_result(self):
        return self.result


if __name__ == "__main__":
    Solution = CodeforcesTask55ASolution()
    Solution.read_input()
    Solution.process_task()
    print(Solution.get_result())
