# Giải mã - DECODE Cho dãy số nguyên dương $a_i$, $i = 1, 2, ..., n$. Dãy số này dùng để mã hóa các thông báo, mỗi thông báo có $n$ bit. Nếu dãy bit của thông báo là $t_1, t_2, ..., t_n$ ($t_i$ bằng $1$ hoặc $0$), thì nó được mã hóa thành số: $S = t_1 * a_1 + t_2 * a_2 + ... + t_n * a_n$ ## Yêu cầu: Cho thông báo đã mã hóa và dãy số $a_i$. Hãy giải mã thông báo. ## Input (vào từ DECODE.INP): - Dòng đầu tiên chứa số nguyên dương $n$ $(1 ≤ n ≤ 40)$ - Dòng thứ i trong n dòng sau chứa số nguyên $a_i$, tổng các $a_i$ không vượt quá $10^{16}$. - Dòng thứ $n + 2$ chứa số nguyên $s$ - thông báo đã mã hóa, $s ≤ a_1 + a_2 + ... + a_n$. - Dữ liệu đảm bảo bài toán luôn có kết quả. ## Output (xuất ra DECODE.OUT): - Dòng duy nhất chứa thông báo đã giải mã dưới dạng chuỗi bit. - Nếu có nhiều kết quả khác nhau, xuất kết quả là chuỗi bit có thứ tự từ điển nhỏ nhất. ## Ví dụ: | DECODE.INP | DECODE.OUT | Giải thích | | -------- | -------- | -------- | | 3 <br /> 1 <br /> 2 <br /> 3 <br /> 3 | 001 | Chuỗi 001 thỏa yêu cầu bài toán. Chuỗi 110 không hợp lệ vì không có thứ tự từ điển nhỏ nhất. | ## Subtask: - $40\%$ số test tương ứng với $40\%$ số điểm có $n ≤ 20$ - $60\%$ số test còn lại tương ứng với $60\%$ số điểm không có ràng buộc gì thêm.