#define _USE_MATH_DEFINES
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<cmath>
#include<list>
#include<stack>
#include<queue>
#include<iomanip>
#include<functional>
using namespace std;
typedef long long llong;
int main() {
	int p, q, r;
	string x = "this the that";
	//cout << x.find("the") << endl << x.find("that") << endl << x.find("this") << endl;
	string a = "abcde";
	//cout << (int)a.find("the") << endl << (int)a.find("that") << endl << (int)a.find("this") << endl;
	string s;
	while (getline(cin, s)) {
		//cout << (int)s.find("the") << endl << (int)s.find("that") << endl << (int)s.find("this") << endl;
		for (int j = 0;; j++) {
			p = (int)s.find("the");
			q = (int)s.find("that");
			r = (int)s.find("this");
			//cout << p << q << r << endl;
			if (p >= 0 || q >= 0 || r >= 0) {
				cout << s << endl;
				break;
			}
			for (int i = 0; i < s.size(); i++) {
				if (isalpha(s[i])) {
					if (s[i] == 'z')s[i] = 'a';
					else s[i]++;

				}
			}
		}
	}
	return 0;
}
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <functional>
#include <complex>

using namespace std;

const int INF = (1<<30) - 1;

string table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int n;
    while(cin >> n, n){
        vector<int> key(n);
        for(int i=0; i<n; i++)
            cin >> key[i];
        string s;
        cin >> s;
        for(int i=0; i<s.size(); i++){
            char &c = s[i];
            c = table[(table.find_first_of(c)-key[i%n]+52)%52];
        }
        cout << s << endl;
    }
    
    return 0;
}