#include using namespace std; int n; array ans; int rem[10][150005]; int lmp[10][100005], rmp[10][100005]; bool operator<(array a, array b){ if(b[0] == 0) return true; assert(a[0] + a[2] == b[0] + b[2]); if(a[1] != b[1]) return a[1] < b[1]; if(b[0] > a[0]) return a[3] < b[1]; else if(a[0] > b[0])return a[1] < b[3]; else return a[3] < b[3]; } int toint(array ar){ if(ar[0]+ar[2] > 6) return -1; int ans = 0; for(int i=0;i 0){ array ar = {dig - lmp[j][re], i, lmp[j][re],i-j}; if(toint(ar) != n && (ans[0] == 0 || ar < ans)) ans = ar; } } re = (n - re) % n; for(int j=1;i+j<10;j++){ if(rmp[j][re] < dig){ array ar = {dig - rmp[j][re], i, rmp[j][re],i+j}; if(toint(ar) != n && (ans[0] == 0 || ar < ans)) ans = ar; } } } if(ans[0] != 0){ cout<>n){ if(n==0) break; solve(); } }