import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { private static String[] S = new String[30]; private static int[] h = new int[30]; private static int[] b = new int[30]; public static void main(String[] args) { try { solve(); } catch (Exception e) { e.printStackTrace(); } } private static void solve() { try (Scanner in = new Scanner(System.in)) { ArrayList candidiates = new ArrayList<>(); for (int i = 0; i <= 99999; i++) { StringBuilder sb = new StringBuilder(); int v = i; for (int j = 0; j < 5; j++) { sb.append(v % 10); v /= 10; } if (valid(sb)) { candidiates.add(sb.toString()); } } Collections.shuffle(candidiates); String q = candidiates.remove(0); for (;;) { System.out.println(q); System.out.flush(); for (int i = 0; i < S.length; i++) { h[i] = in.nextInt(); b[i] = in.nextInt(); } if (h[0] == 5 && b[0] == 0) { break; } if (h[0] == -1 && b[0] == -1) { break; } int maxHB = maxHB(); if (maxHB == 505 || maxHB == 514 || maxHB == 523 || maxHB == 532 || maxHB == 541) { for (int i = candidiates.size() - 1; i >= 0; i--) { String candidiate = candidiates.get(i); if (hb(candidiate, q) == maxHB) { q = candidiate; candidiates.remove(i); break; } } } else { for (int i = candidiates.size() - 1; i >= 0; i--) { String candidiate = candidiates.get(i); int hb = hb(candidiate, q); if (hb == 505 || hb == 514 || hb == 523 || hb == 532 || hb == 541) { candidiates.remove(i); } } q = candidiates.remove(0); // if (maxHB == 4 || maxHB == 13 || maxHB == 22 || maxHB == 31 || maxHB == 40) { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // if (hb(candidiate, q) == maxHB) { // q = candidiate; // candidiates.remove(i); // break; // } // } // } else { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // int hb = hb(candidiate, q); // if (hb == 4 || hb == 13 || hb == 22 || hb == 31 || hb == 40) { // candidiates.remove(i); // } // } // if (maxHB == 3 || maxHB == 12 || maxHB == 21 || maxHB == 30) { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // if (hb(candidiate, q) == maxHB) { // q = candidiate; // candidiates.remove(i); // break; // } // } // } else { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // int hb = hb(candidiate, q); // if (hb == 3 || hb == 12 || hb == 21 || hb == 30) { // candidiates.remove(i); // } // } // if (maxHB == 2 || maxHB == 11 || maxHB == 20) { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // if (hb(candidiate, q) == maxHB) { // q = candidiate; // candidiates.remove(i); // break; // } // } // } else { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // int hb = hb(candidiate, q); // if (hb == 2 || hb == 11 || hb == 20) { // candidiates.remove(i); // } // } // if (maxHB == 1 || maxHB == 10) { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // if (hb(candidiate, q) == maxHB) { // q = candidiate; // candidiates.remove(i); // break; // } // } // } else { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // int hb = hb(candidiate, q); // if (hb == 1 || hb == 10) { // candidiates.remove(i); // } // } // if (maxHB == 0) { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // if (hb(candidiate, q) == maxHB) { // q = candidiate; // candidiates.remove(i); // break; // } // } // } else { // for (int i = candidiates.size() - 1; i >= 0; i--) { // String candidiate = candidiates.get(i); // int hb = hb(candidiate, q); // if (hb == 0) { // candidiates.remove(i); // } // } // q = candidiates.remove(0); // } // } // } // } // } } } } } private static int hb(String s, String t) { int h = 0; int b = 0; for (int i = 0; i < 5; i++) { if (s.charAt(i) == t.charAt(i)) { h++; } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (j == i) { continue; } if (s.charAt(i) == t.charAt(j)) { b++; } } } return 100 * (h + b) + 10 * h + b; } private static int maxHB() { int max = 0; for (int i = 0; i < S.length; i++) { int hb = 100 * (h[i] + b[i]) + 10 * h[i] + b[i]; if (hb != 550) { max = Math.max(max, hb); } } return max; } private static boolean valid(StringBuilder sb) { for (int i = 0; i < sb.length(); i++) { for (int j = i + 1; j < sb.length(); j++) { if (sb.charAt(j) == sb.charAt(i)) { return false; } } } return true; } }