1 #include <iostream>
   2 #include <sstream>
   3 #include <string>
   4 #include <algorithm>
   5 #include <vector>
   6 #include <cmath>
   7 using namespace std;
   8 
   9 #define GI ({int _t; scanf("%d", &_t); _t;})
  10 #define FOR(i, a, b) for (int i=a; i<b; i++)
  11 #define REP(i, a) FOR(i, 0, a)
  12 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();}
  13 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;}
  14 #define DBG(x) cout << #x << "::" << x << endl;
  15 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;}
  16 
  17 int main() {
  18 	int cnt = GI, num;
  19 	while (cnt--) {
  20 		vector <int> res;
  21 		cin >> num;
  22 		if (num < 10) {
  23 			printf("%d\n", num);
  24 			continue;
  25 		}
  26 		for (int i = 9; i>=2; i--) {
  27 			while (num%i == 0) {
  28 				res.push_back(i);
  29 				num /= i;
  30 			}
  31 		}
  32 		if (num != 1) {
  33 			printf("-1\n"); continue;
  34 		}
  35 		sort(res.begin(), res.end());
  36 		int number = 0;
  37 		//DBGV(res);
  38 		for (int i=res.size()-1, j=0; i >=0; i--, j++) {
  39 			number += (res[i])*(int)pow((double)10, (double)j);
  40 		}
  41 		printf("%d\n", number);
  42 	}
  43 	return 0;
  44 }