Problem:
Score : 200 points

Problem Statement

We have a string S consisting of uppercase English letters. Additionally, an integer N will be given.

Shift each character of S by N in alphabetical order (see below), and print the resulting string.

We assume that A follows Z. For example, shifting A by 2 results in C (A \to B \to C), and shifting Y by 3 results in B (Y \to Z \to A \to B).

Constraints

0 \leq N \leq 26

1 \leq |S| \leq 10^4

S consists of uppercase English letters.

Input

Input is given from Standard Input in the following format:

N
S

Output

Print the string resulting from shifting each character of S by N in alphabetical order.

Sample Input 1

2
ABCXYZ

Sample Output 1

CDEZAB

Note that A follows Z.

Sample Input 2

0
ABCXYZ

Sample Output 2

ABCXYZ

Sample Input 3

13
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Sample Output 3

NOPQRSTUVWXYZABCDEFGHIJKLM

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define per(i,n) for(int i=n;i>0;i--)
#define rep1(i,s,n) for(int i=s;i<n;i++)
#define max0(a,b,c) max(max(a,b),c)
#define min0(a,b,c) min(min(a,b),c)
#define ft first
#define sc second
#define pb push_back
#define mp make_pair
#define mt make_tuple
#define mod 1000000007
using namespace std;
using Graph = vector<vector<int>>;
typedef long long lint;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldouble;
typedef vector<int> vec;
typedef vector<ll> lvec;
typedef vector<ull> ulvec;
typedef vector<pair<int,int>> pvec;
typedef vector<pair<ll,ll>> plvec;
typedef vector<tuple<ll,ll,ll>> tvec;
typedef vector<string> svec;

int main(){
    int n,k;
    cin>>n;
    string s;
    cin>>s;
    vector<char> c(26);
    k=s.size();
    c[0]='A';
    c[1]='B';
    c[2]='C';
    c[3]='D';
    c[4]='E';
    c[5]='F';
    c[6]='G';
    c[7]='H';
    c[8]='I';
    c[9]='J';
    c[10]='K';
    c[11]='L';
    c[12]='M';
    c[13]='N';
    c[14]='O';
    c[15]='P';
    c[16]='Q';
    c[17]='R';
    c[18]='S';
    c[19]='T';
    c[20]='U';
    c[21]='V';
    c[22]='W';
    c[23]='X';
    c[24]='Y';
    c[25]='Z';
    rep(i,k){
        rep(j,26){
            if(s[i]==c[j]) {s[i]=c[(j+n)%26];
            break;
            }
        }
    }
    cout<<s;
}