#include using namespace std; char buf[1000]; string A, B; vector O; void storeChar(char c, int pos) { buf[pos] = c; } void storeHexStr(string s, int pos) { pos *= 2; for (int i = 0; i < (int) s.size(); i++) { storeChar(s[i], pos++); } } void storeLL(unsigned int x, int o) { char saux[20]; sprintf(saux, "%08X", x); string aux(saux); for (int i = 0, j = 6; i < j; i += 2, j -= 2) { swap(aux[i], aux[j]); swap(aux[i + 1], aux[j + 1]); } storeHexStr(aux, o); } char toH(int x) { if (x <= 9) { return x + '0'; } return 'A' + x - 10; } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); cin.sync_with_stdio(false); memset(buf, '0', sizeof(buf)); getline(cin, A); getline(cin, B); int K = 0; for (int i = 0; i < (int) A.size(); i++) { if (A[i] == '%') { K++; } } int k = (int) A.size() - 1; for (int i = K - 1; i >= 0; i--) { int o = 0; int prv = k; while (A[k] != ',') { k--; } for (int j = k + 1; j <= prv; j++) { o = 10 * o + A[j] - '0'; } O.push_back(o); // cerr << o << '\n'; k--; } reverse(O.begin(), O.end()); int a = 0; int b = 0; int o = 0; while (a < k) { if (A[a] == ' ') { while (b < (int) B.size() && B[b] == ' ') { b++; } a++; } else if (A[a] != '%') { if (B[b] != A[a]) { cerr << A[a] << " " << B[b] << endl; } assert(B[b] == A[a]); b++; a++; } else { a++; if (A[a] == 'u') { unsigned int x = 0; while (isdigit(B[b])) { x = 10 * x + B[b] - '0'; b++; } storeLL(x, O[o++]); } else if (A[a] == 'x') { b += 2; string s = ""; for (int i = 0; i < 8 && isalpha(B[b]); i++) { s += B[b++]; } while (s.size() < 8) { s = string("0") + s; } for (int i = 0, j = 6; i < j; i += 2, j -= 2) { swap(s[i], s[j]); swap(s[i + 1], s[j + 1]); } // cerr << s << '\n'; storeHexStr(s, O[o++]); } else if (A[a] == 's') { string s = ""; while (b < (int) B.size() && B[b] != ' ') { s += B[b]; b++; } s += string("\0"); // cerr << s << endl; int pos = 2 * O[o++]; for (int i = 0; i < (int) s.size(); i++) { int v1 = s[i] / 16; char c1 = toH(v1); int v2 = s[i] % 16; char c2 = toH(v2); storeChar(c1, pos++); storeChar(c2, pos++); } } else { int pos = 2 * O[o++]; char c = B[b++]; int v1 = c / 16; char c1 = toH(v1); int v2 = c % 16; char c2 = toH(v2); storeChar(c1, pos++); storeChar(c2, pos++); } a++; } } buf[256] = '\0'; cout << buf << endl; return 0; }