- # include <iostream> 
- # include <iomanip> 
- # include <cstdio> 
- # include <cstring> 
- # include <queue> 
- using namespace std; 
-   
- unsigned long long Input; 
- const int BASE = 100000; 
- bool exist[20000]; 
-   
- class BigInteger 
- { 
- public: 
-     int num[10]; 
- 	int len; 
- 	BigInteger& mul10() 
- 	{ 
- 		int c = 0; 
- 		for(int i=0;i<len;i++) 
- 		{ 
- 			num[i] = num[i]*10 + c; 
- 			c = num[i]/BASE; 
- 			num[i]%=BASE; 
- 		} 
- 		if(c) 
- 		{ 
- 			num[len++] = c; 
- 		} 
- 		return *this; 
- 	} 
- 	BigInteger& add(int c) 
- 	{ 
- 		for(int i=0;c&&i<len;i++) 
- 		{ 
- 			num[i] = num[i] + c; 
- 			c = num[i]/BASE; 
- 			num[i]%=BASE; 
- 		} 
- 		if(c) 
- 		{ 
- 			num[len++] = c; 
- 		} 
- 		return *this; 
- 	} 
- 	int operator%(const int& a) 
- 	{ 
- 		int c = 0; 
- 		for(int i=len-1;i>=0;i--) 
- 		{ 
- 			c*=BASE; 
- 			c+=num[i]; 
- 			c%=a; 
- 		} 
- 		return c; 
- 	} 
- }; 
-   
- ostream& operator<<(ostream& out, const BigInteger& a) 
- { 
- 	out << a.num[a.len-1]; 
- 	for(int i=a.len-2;i>=0;i--) 
- 	{ 
- 		out << right << setfill('0') << setw(5) << a.num[i]; 
- 	} 
- 	return out; 
- } 
-   
- int main(int argc, char const *argv[]) 
- { 
- 	int N; 
- 	cin >> N; 
- 	BigInteger current; 
- 	queue <BigInteger> Queue; 
- 	BigInteger ten; 
- 	ten.len = 1; 
- 	ten.num[0] = 10; 
- 	BigInteger eleven; 
- 	eleven.len = 1; 
- 	eleven.num[0] = 11; 
- 	int maxlen = -1,j=-1; 
- 	for (int i = 1; i <= N; i++) 
- 	{ 
- 		cin >> Input; 
- 		memset(exist,0,sizeof(exist)); 
- 		if (Input == 1) {cout << "1" << endl; continue;} 
- 		Queue.push (ten); Queue.push (eleven); 
- 		while (!Queue.empty()) 
- 		{ 
- 			current = Queue.front(); 
- 			Queue.pop(); 
- 			int temp = current % Input; 
- 			if(exist[temp]) continue; 
- 			exist[temp] = 1; 
- 			if (temp) 
- 			{ 
- 				Queue.push (current.mul10()); 
- 				Queue.push (current.add(1)); 
- 			} 
- 			else 
- 			{ 
- 				cout << current << endl; 
- 				while (!Queue.empty()) Queue.pop(); 
- 			} 
- 		} 
- 	} 
- 	return 0; 
- } 
				IyBpbmNsdWRlIDxpb3N0cmVhbT4KIyBpbmNsdWRlIDxpb21hbmlwPgojIGluY2x1ZGUgPGNzdGRpbz4KIyBpbmNsdWRlIDxjc3RyaW5nPgojIGluY2x1ZGUgPHF1ZXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdW5zaWduZWQgbG9uZyBsb25nIElucHV0Owpjb25zdCBpbnQgQkFTRSA9IDEwMDAwMDsKYm9vbCBleGlzdFsyMDAwMF07CgpjbGFzcyBCaWdJbnRlZ2VyCnsKcHVibGljOgogICAgaW50IG51bVsxMF07CglpbnQgbGVuOwoJQmlnSW50ZWdlciYgbXVsMTAoKQoJewoJCWludCBjID0gMDsKCQlmb3IoaW50IGk9MDtpPGxlbjtpKyspCgkJewoJCQludW1baV0gPSBudW1baV0qMTAgKyBjOwoJCQljID0gbnVtW2ldL0JBU0U7CgkJCW51bVtpXSU9QkFTRTsKCQl9CgkJaWYoYykKCQl7CgkJCW51bVtsZW4rK10gPSBjOwoJCX0KCQlyZXR1cm4gKnRoaXM7Cgl9CglCaWdJbnRlZ2VyJiBhZGQoaW50IGMpCgl7CgkJZm9yKGludCBpPTA7YyYmaTxsZW47aSsrKQoJCXsKCQkJbnVtW2ldID0gbnVtW2ldICsgYzsKCQkJYyA9IG51bVtpXS9CQVNFOwoJCQludW1baV0lPUJBU0U7CgkJfQoJCWlmKGMpCgkJewoJCQludW1bbGVuKytdID0gYzsKCQl9CgkJcmV0dXJuICp0aGlzOwoJfQoJaW50IG9wZXJhdG9yJShjb25zdCBpbnQmIGEpCgl7CgkJaW50IGMgPSAwOwoJCWZvcihpbnQgaT1sZW4tMTtpPj0wO2ktLSkKCQl7CgkJCWMqPUJBU0U7CgkJCWMrPW51bVtpXTsKCQkJYyU9YTsKCQl9CgkJcmV0dXJuIGM7Cgl9Cn07Cgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG91dCwgY29uc3QgQmlnSW50ZWdlciYgYSkKewoJb3V0IDw8IGEubnVtW2EubGVuLTFdOwoJZm9yKGludCBpPWEubGVuLTI7aT49MDtpLS0pCgl7CgkJb3V0IDw8IHJpZ2h0IDw8IHNldGZpbGwoJzAnKSA8PCBzZXR3KDUpIDw8IGEubnVtW2ldOwoJfQoJcmV0dXJuIG91dDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSkKewoJaW50IE47CgljaW4gPj4gTjsKCUJpZ0ludGVnZXIgY3VycmVudDsKCXF1ZXVlIDxCaWdJbnRlZ2VyPiBRdWV1ZTsKCUJpZ0ludGVnZXIgdGVuOwoJdGVuLmxlbiA9IDE7Cgl0ZW4ubnVtWzBdID0gMTA7CglCaWdJbnRlZ2VyIGVsZXZlbjsKCWVsZXZlbi5sZW4gPSAxOwoJZWxldmVuLm51bVswXSA9IDExOwoJaW50IG1heGxlbiA9IC0xLGo9LTE7Cglmb3IgKGludCBpID0gMTsgaSA8PSBOOyBpKyspCgl7CgkJY2luID4+IElucHV0OwoJCW1lbXNldChleGlzdCwwLHNpemVvZihleGlzdCkpOwoJCWlmIChJbnB1dCA9PSAxKSB7Y291dCA8PCAiMSIgPDwgZW5kbDsgY29udGludWU7fQoJCVF1ZXVlLnB1c2ggKHRlbik7IFF1ZXVlLnB1c2ggKGVsZXZlbik7CgkJd2hpbGUgKCFRdWV1ZS5lbXB0eSgpKQoJCXsKCQkJY3VycmVudCA9IFF1ZXVlLmZyb250KCk7CgkJCVF1ZXVlLnBvcCgpOwoJCQlpbnQgdGVtcCA9IGN1cnJlbnQgJSBJbnB1dDsKCQkJaWYoZXhpc3RbdGVtcF0pIGNvbnRpbnVlOwoJCQlleGlzdFt0ZW1wXSA9IDE7CgkJCWlmICh0ZW1wKQoJCQl7CgkJCQlRdWV1ZS5wdXNoIChjdXJyZW50Lm11bDEwKCkpOwoJCQkJUXVldWUucHVzaCAoY3VycmVudC5hZGQoMSkpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJY291dCA8PCBjdXJyZW50IDw8IGVuZGw7CgkJCQl3aGlsZSAoIVF1ZXVlLmVtcHR5KCkpIFF1ZXVlLnBvcCgpOwoJCQl9CgkJfQoJfQoJcmV0dXJuIDA7Cn0=