import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
class Solution {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int testCase = 1; testCase <= 10; testCase++) {
StringTokenizer st = new StringTokenizer(br.readLine(), "");
st.nextToken();
st = new StringTokenizer(br.readLine(), " ");
Queue<Integer> queue = new LinkedList<>();
while (st.hasMoreTokens()){
queue.offer(Integer.parseInt(st.nextToken()));
}
boolean flag = true;
while (flag) {
for (int i = 1; i <= 5; i++) {
int x = queue.poll();
if (x - i > 0) {
queue.offer(x - i);
}
else{
queue.offer(0);
flag = false;
break;
}
}
}
System.out.printf("#%d ", testCase);
while (!queue.isEmpty()) {
System.out.printf("%d ", queue.poll());
}
System.out.println();
}
}
}
flag를 true로 설정해놓은다음 while문을 돌려 그안에서 for문으로 한 사이클을 돌린다.
현재값을 큐에서 poll하여 현재값 - i가 0보다 크면 큐에 다시 x - i를 offer하고 아니라면 큐에 0을 offer한 다음 flag를 false로 변경, break를 하게되면 암호가 완성된다.