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)

// RAKSHIT KADAM

 #include <bits/stdc++.h>
 #define ll long long
 #define int long long
 #define MOD  1000000007
 #define MAX 500005
 #include<iomanip>
 #define Need_for_speed(activated) ios_base :: sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
 #define satisfy ll t; cin>> t; while(t--)
 #define inp(n) int n;cin >> n
 #define mp make_pair
 #define pb push_back
 #define fore(i,a,b) for(ll i=a;i<b;i++)
 #define x first
 #define y second
using namespace std;
int gcd(int a, int b);
  
//int power(int x, unsigned int y, unsigned int m)
//{
//    if (y == 0)
//        return 1;
//    int p = power(x, y/2, m) % m;
//    p = (p * p) % m;
//
//    return (y%2 == 0)? p : (x * p) % m;
//}
//ll modInverse(int a, int m)
//{
//    int g = gcd(a, m);
//
//    {
//        // If a and m are relatively prime, then modulo inverse
//        // is a^(m-2) mode m
//
//             return power(a, m-2, m);
//    }
//}
//int gcd(int a, int b)
//{
//    if (b == 0)
//        return a;
//    return gcd(b, a % b);
//
//}
//vector<ll>v[200080];
//ll vis[200080];
//
//void dfs(ll root)
//{
//    vis[root]=1;
//    for(auto it:v[root])
//    {
//        if(vis[it]==0)
//        {
//            dfs(it);
//        }
//    }
//}
void solve()
{
    
}

 int32_t main()
{
    Need_for_speed(activated);
//    satisfy
//    {
//        solve();
//    }
    string a;ll ans;cin>>ans;
    cin>>a;
    for(ll i=0;i<a.length();i++)
    {
        a[i]=char((a[i]-'A'+ans)%26+'A');
    }
    cout<<a;
    return 0;
    }