import sys

def input():

    return sys.stdin.readline()[:-1]

n=int(eval(input()))

s=eval(input())

ans=""



for i in range(len(s)):

    tmp=n

    if ord(s[i])+n>ord("Z"):

        tmp=ord(s[i])+n-ord("Z")

        ans+=chr(tmp+ord("A")-1)

        continue

    ans+=chr(ord(s[i])+tmp)

print(ans)
import bisect, copy, heapq, math, sys

from collections import *

from functools import lru_cache

from itertools import accumulate, combinations, permutations, product

def input():

    return sys.stdin.readline()[:-1]

def ruiseki(lst):

    return [0]+list(accumulate(lst))

def celi(a,b):

    return -(-a//b)

sys.setrecursionlimit(5000000)

mod=pow(10,9)+7

al=[chr(ord('a') + i) for i in range(26)]

direction=[[1,0],[0,1],[-1,0],[0,-1]]



n=int(eval(input()))

s=list(eval(input()))



for i in range(len(s)):

    ss=chr((ord(s[i])+n-ord('A'))%26+ord('A'))

    s[i]=ss

print(("".join(s)))
import sys


def input():
    return sys.stdin.readline()[:-1]


n = int(eval(input()))
s = eval(input())
ans = ""
for i in range(len(s)):
    tmp = n
    if ord(s[i]) + n > ord("Z"):
        tmp = ord(s[i]) + n - ord("Z")
        ans += chr(tmp + ord("A") - 1)
        continue
    ans += chr(ord(s[i]) + tmp)
print(ans)

import bisect, copy, heapq, math, sys
from collections import *
from functools import lru_cache
from itertools import accumulate, combinations, permutations, product


def input():
    return sys.stdin.readline()[:-1]


def ruiseki(lst):
    return [0] + list(accumulate(lst))


def celi(a, b):
    return -(-a // b)


sys.setrecursionlimit(5000000)
mod = pow(10, 9) + 7
al = [chr(ord("a") + i) for i in range(26)]
direction = [[1, 0], [0, 1], [-1, 0], [0, -1]]
n = int(eval(input()))
s = list(eval(input()))
for i in range(len(s)):
    ss = chr((ord(s[i]) + n - ord("A")) % 26 + ord("A"))
    s[i] = ss
print(("".join(s)))

-import sys +import bisect, copy, heapq, math, sys +from collections import * +from functools import lru_cache +from itertools import accumulate, combinations, permutations, product +def ruiseki(lst): +    return [0] + list(accumulate(lst)) + + +def celi(a, b): +    return -(-a // b) + + +sys.setrecursionlimit(5000000) +mod = pow(10, 9) + 7 +al = [chr(ord("a") + i) for i in range(26)] +direction = [[1, 0], [0, 1], [-1, 0], [0, -1]] -s = eval(input()) -ans = "" +s = list(eval(input())) -    tmp = n -    if ord(s[i]) + n > ord("Z"): -        tmp = ord(s[i]) + n - ord("Z") -        ans += chr(tmp + ord("A") - 1) -        continue -    ans += chr(ord(s[i]) + tmp) -print(ans) +    ss = chr((ord(s[i]) + n - ord("A")) % 26 + ord("A")) +    s[i] = ss +print(("".join(s)))