#include <stdio.h>

int main() {
    int W, H, offset;
    char C;

    // 讀取輸入的高度(H)、寬度(W)、以及偏移量(offset)
    scanf("%d %d %d", &H, &W, &offset);
    getchar(); // 用來清除緩衝區中的換行符號

    // 外層迴圈，控制圖案的行數（高度）
    for (int i = 0; i < H; i++) {
        // 內層迴圈，控制每行的字元數（寬度）
        for (int j = 0; j < W; j++) {
            C = getchar(); // 讀取一個字元並儲存在變數 C 中

            // 計算新的字元 ASCII 碼，並加上偏移量
            int code = (int)(C + offset); 

            // 檢查 ASCII 碼是否超過 127，若超過則使用 % 運算將其限制在範圍內
            if (code > 127)
                code = code % 127;

            // 檢查 ASCII 碼是否小於 32，若小於則加上 32 來保持在可顯示字元範圍內
            if (code < 32)
                code += 32;

            // 輸出轉換後的字元
            printf("%c", code);
        }
        printf("\n"); // 每行輸出完後換行
        getchar(); // 清除緩衝區中的換行符號
    }

    return 0; // 結束程式
}