캠퍼스
시간 제한1초메모리 제한512 MB
각 층이 k의 배수인 층은 방 x개, 나머지 층은 방 y개를 가지며 입구마다 방 번호가 이어질 때, 주어진 방 번호가 몇 층인지 구한다.
문제
바이트부르크 대학의 새 캠퍼스 건물에는 아래에서 위로 1부터 n까지 번호가 붙은 n개의 층이 있다. 학생 방은 여러 개의 출입구 동에 있다.
각 동에서 층 번호가 k의 배수인 층에는 방이 x개씩 있고, 나머지 층에는 방이 y개씩 있다.
각 동 안의 방에는 연속된 자연수가 매겨진다. 1층의 방 번호가 그 동에서 가장 작고, 그다음 2층의 방 번호가 이어지는 식이다. 첫 번째 동의 방은 1부터 번호가 매겨지고, 각 다음 동의 방 번호는 이전 동의 가장 큰 방 번호 다음 수부터 시작한다.
그림 1은 n = 7개의 층, 3개의 동, k = 3, x = 2, y = 3인 건물의 방 번호를 보여 준다.
그림 1. 건물의 방 번호 매기기 예
학생 배정을 위해 캠퍼스 행정부는 방 번호로 그 방이 있는 층을 빠르게 알아내야 한다.
n, k, x, y와 방 번호들이 주어질 때, 각 방이 몇 층에 있는지 구하는 프로그램을 작성해야 한다.
입력
입력 파일의 첫 번째 줄에는 자연수 n, k, x, y가 주어진다 (1 ≤ n ≤ 10^9, 1 ≤ k ≤ n, 1 ≤ x, y ≤ 10^9). 인접한 수 사이에는 정확히 하나의 공백이 있다.
입력 파일의 두 번째 줄에는 자연수 q가 주어진다. q는 층을 구해야 하는 방 번호의 개수이다 (1 ≤ q ≤ 1000).
세 번째 줄에는 q개의 정수 a1, a2, …, aq가 주어진다. 이는 방 번호이다 (1 ≤ ai ≤ 10^18). 건물에 동이 충분히 많아 주어진 번호의 방이 모두 존재한다고 가정할 수 있다.
출력
q개의 수를 한 줄에 하나씩 출력한다. 입력 파일의 각 방 번호에 대해 그 방이 있는 층 번호를 출력한다.