비밀번호

시간 제한1초메모리 제한128 MB

문제

어떤 보안 회사는 하나의 양의 정수 A에서 비밀번호에 사용할 두 정수를 만들려고 한다.

먼저 A를 이진수로 나타냈을 때 포함된 1의 개수를 x라고 하자. 다음 두 정수를 찾아야 한다.

  1. A보다 작고, 이진수에 포함된 1의 개수가 x개이며, A에 가장 가까운 정수
  2. A보다 크고, 이진수에 포함된 1의 개수가 x개이며, A에 가장 가까운 정수

두 정수를 찾아 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 양의 정수 A가 주어진다.

1 <= A <= 10^18

출력

A보다 작은 정수 중 조건을 만족하는 가장 가까운 정수와, A보다 큰 정수 중 조건을 만족하는 가장 가까운 정수를 한 줄에 공백으로 구분하여 출력한다.

어느 한쪽에 조건을 만족하는 정수가 존재하지 않으면, 그 위치에는 0을 출력한다.