#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ scanf(char *, int *);
int main() {
  int n, l, i, j, k;
  int ara[1000][100];
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &l);
    for (j = 0; j < 2; j++) {
      for (k = 0; k < l; k++) {
        scanf("%d", &ara[j][k]);
      }
    }
    for (k = 0; k < l; k++) {
      switch (ara[0][k]) {
      case 0:
        if (ara[1][k] == 1)
          printf(" ");
        break;
      case 1:
        if (ara[1][k] == 1)
          printf(".");
        else if (ara[1][k] == 2)
          printf(",");
        else if (ara[1][k] == 3)
          printf("?");
        else if (ara[1][k] == 4)
          printf("\"");
        break;
      case 2:
        if (ara[1][k] == 1)
          printf("a");
        else if (ara[1][k] == 2)
          printf("b");
        else if (ara[1][k] == 3)
          printf("c");
        break;
      case 3:
        if (ara[1][k] == 1)
          printf("d");
        else if (ara[1][k] == 2)
          printf("e");
        else if (ara[1][k] == 3)
          printf("f");
        break;
      case 4:
        if (ara[1][k] == 1)
          printf("g");
        else if (ara[1][k] == 2)
          printf("h");
        else if (ara[1][k] == 3)
          printf("i");
        break;
      case 5:
        if (ara[1][k] == 1)
          printf("j");
        else if (ara[1][k] == 2)
          printf("k");
        else if (ara[1][k] == 3)
          printf("l");
        break;
      case 6:
        if (ara[1][k] == 1)
          printf("m");
        else if (ara[1][k] == 2)
          printf("n");
        else if (ara[1][k] == 3)
          printf("o");
        break;
      case 7:
        if (ara[1][k] == 1)
          printf("p");
        else if (ara[1][k] == 2)
          printf("q");
        else if (ara[1][k] == 3)
          printf("r");
        else if (ara[1][k] == 4)
          printf("s");
        break;
      case 8:
        if (ara[1][k] == 1)
          printf("t");
        else if (ara[1][k] == 2)
          printf("u");
        else if (ara[1][k] == 3)
          printf("v");
        break;
      case 9:
        if (ara[1][k] == 1)
          printf("w");
        else if (ara[1][k] == 2)
          printf("x");
        else if (ara[1][k] == 3)
          printf("y");
        else if (ara[1][k] == 4)
          printf("z");
        break;
      }
    }
    printf("\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x61ab0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeef(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     16ef <main+0x5cf>
lea    0xecc(%rip),%rdi
lea    -0xc(%rbp),%rsi
call   1040 <scanf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x2,-0x14(%rbp)
jge    11d6 <main+0xb6>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11c3 <main+0xa3>
movslq -0x14(%rbp),%rax
lea    -0x61aa0(%rbp),%rsi
imul   $0x190,%rax,%rax
add    %rax,%rsi
movslq -0x18(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe78(%rip),%rdi
call   1040 <scanf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    117d <main+0x5d>
jmp    11c8 <main+0xa8>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    116c <main+0x4c>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    16d5 <main+0x5b5>
movslq -0x18(%rbp),%rax
mov    -0x61aa0(%rbp,%rax,4),%eax
mov    %rax,-0x61aa8(%rbp)
sub    $0x9,%rax
ja     16c2 <main+0x5a2>
mov    -0x61aa8(%rbp),%rax
lea    0xded(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    123a <main+0x11a>
lea    0xdf6(%rip),%rdi
call   1030 <printf@plt>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    1262 <main+0x142>
lea    0xdd5(%rip),%rdi
call   1030 <printf@plt>
jmp    12d5 <main+0x1b5>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    1285 <main+0x165>
lea    0xdb4(%rip),%rdi
call   1030 <printf@plt>
jmp    12d0 <main+0x1b0>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    12a8 <main+0x188>
lea    0xd93(%rip),%rdi
call   1030 <printf@plt>
jmp    12cb <main+0x1ab>
movslq -0x18(%rbp),%rax
cmpl   $0x4,-0x61910(%rbp,%rax,4)
04
jne    12c6 <main+0x1a6>
lea    0xd72(%rip),%rdi
call   1030 <printf@plt>
jmp    12cb <main+0x1ab>
jmp    12d0 <main+0x1b0>
jmp    12d5 <main+0x1b5>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    12fd <main+0x1dd>
lea    0xd42(%rip),%rdi
call   1030 <printf@plt>
jmp    1348 <main+0x228>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    1320 <main+0x200>
lea    0xd21(%rip),%rdi
call   1030 <printf@plt>
jmp    1343 <main+0x223>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    133e <main+0x21e>
lea    0xd00(%rip),%rdi
call   1030 <printf@plt>
jmp    1343 <main+0x223>
jmp    1348 <main+0x228>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    1370 <main+0x250>
lea    0xcc3(%rip),%rdi
call   1030 <printf@plt>
jmp    13bb <main+0x29b>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    1393 <main+0x273>
lea    0xcb2(%rip),%rdi
call   1030 <printf@plt>
jmp    13b6 <main+0x296>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    13b1 <main+0x291>
lea    0xc91(%rip),%rdi
call   1030 <printf@plt>
jmp    13b6 <main+0x296>
jmp    13bb <main+0x29b>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    13e3 <main+0x2c3>
lea    0xc66(%rip),%rdi
call   1030 <printf@plt>
jmp    142e <main+0x30e>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    1406 <main+0x2e6>
lea    0xc45(%rip),%rdi
call   1030 <printf@plt>
jmp    1429 <main+0x309>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    1424 <main+0x304>
lea    0xc24(%rip),%rdi
call   1030 <printf@plt>
jmp    1429 <main+0x309>
jmp    142e <main+0x30e>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    1456 <main+0x336>
lea    0xbf9(%rip),%rdi
call   1030 <printf@plt>
jmp    14a1 <main+0x381>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    1479 <main+0x359>
lea    0xbd8(%rip),%rdi
call   1030 <printf@plt>
jmp    149c <main+0x37c>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    1497 <main+0x377>
lea    0xbb7(%rip),%rdi
call   1030 <printf@plt>
jmp    149c <main+0x37c>
jmp    14a1 <main+0x381>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    14c9 <main+0x3a9>
lea    0xb8c(%rip),%rdi
call   1030 <printf@plt>
jmp    1514 <main+0x3f4>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    14ec <main+0x3cc>
lea    0xb6b(%rip),%rdi
call   1030 <printf@plt>
jmp    150f <main+0x3ef>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    150a <main+0x3ea>
lea    0xb4a(%rip),%rdi
call   1030 <printf@plt>
jmp    150f <main+0x3ef>
jmp    1514 <main+0x3f4>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    153c <main+0x41c>
lea    0xb1f(%rip),%rdi
call   1030 <printf@plt>
jmp    15af <main+0x48f>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    155f <main+0x43f>
lea    0xafe(%rip),%rdi
call   1030 <printf@plt>
jmp    15aa <main+0x48a>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    1582 <main+0x462>
lea    0xadd(%rip),%rdi
call   1030 <printf@plt>
jmp    15a5 <main+0x485>
movslq -0x18(%rbp),%rax
cmpl   $0x4,-0x61910(%rbp,%rax,4)
04
jne    15a0 <main+0x480>
lea    0xabc(%rip),%rdi
call   1030 <printf@plt>
jmp    15a5 <main+0x485>
jmp    15aa <main+0x48a>
jmp    15af <main+0x48f>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    15d7 <main+0x4b7>
lea    0xa8c(%rip),%rdi
call   1030 <printf@plt>
jmp    1622 <main+0x502>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    15fa <main+0x4da>
lea    0xa6b(%rip),%rdi
call   1030 <printf@plt>
jmp    161d <main+0x4fd>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    1618 <main+0x4f8>
lea    0xa4a(%rip),%rdi
call   1030 <printf@plt>
jmp    161d <main+0x4fd>
jmp    1622 <main+0x502>
jmp    16c2 <main+0x5a2>
movslq -0x18(%rbp),%rax
cmpl   $0x1,-0x61910(%rbp,%rax,4)
01
jne    164a <main+0x52a>
lea    0xa1f(%rip),%rdi
call   1030 <printf@plt>
jmp    16bd <main+0x59d>
movslq -0x18(%rbp),%rax
cmpl   $0x2,-0x61910(%rbp,%rax,4)
02
jne    166d <main+0x54d>
lea    0x9fe(%rip),%rdi
call   1030 <printf@plt>
jmp    16b8 <main+0x598>
movslq -0x18(%rbp),%rax
cmpl   $0x3,-0x61910(%rbp,%rax,4)
03
jne    1690 <main+0x570>
lea    0x9dd(%rip),%rdi
call   1030 <printf@plt>
jmp    16b3 <main+0x593>
movslq -0x18(%rbp),%rax
cmpl   $0x4,-0x61910(%rbp,%rax,4)
04
jne    16ae <main+0x58e>
lea    0x9bc(%rip),%rdi
call   1030 <printf@plt>
jmp    16b3 <main+0x593>
jmp    16b8 <main+0x598>
jmp    16bd <main+0x59d>
jmp    16c2 <main+0x5a2>
jmp    16c7 <main+0x5a7>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11dd <main+0xbd>
lea    0x98b(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1149 <main+0x29>
xor    %eax,%eax
add    $0x61ab0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x61a98,%rsp
lea    0xef0(%rip),%rdi
lea    0xc(%rsp),%rsi
call   1040 <scanf@plt>
cmpl   $0x0,0xc(%rsp)
jle    1332 <main+0x212>
mov    $0x1,%r13d
lea    0xece(%rip),%r15
lea    0x8(%rsp),%r14
lea    0xe9a(%rip),%r12
jmp    118c <main+0x6c>
nopl   0x0(%rax,%rax,1)
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1(%r13),%eax
cmp    0xc(%rsp),%r13d
mov    %eax,%r13d
jge    1332 <main+0x212>
mov    %r15,%rdi
mov    %r14,%rsi
call   1040 <scanf@plt>
cmpl   $0x0,0x8(%rsp)
jle    1170 <main+0x50>
lea    0x10(%rsp),%rbx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r15,%rdi
mov    %rbx,%rsi
call   1040 <scanf@plt>
add    $0x1,%rbp
movslq 0x8(%rsp),%rax
add    $0x4,%rbx
cmp    %rax,%rbp
jl     11b0 <main+0x90>
test   %eax,%eax
jle    1170 <main+0x50>
lea    0x1a0(%rsp),%rbx
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
mov    %r15,%rdi
mov    %rbx,%rsi
call   1040 <scanf@plt>
add    $0x1,%rbp
movslq 0x8(%rsp),%rax
add    $0x4,%rbx
cmp    %rax,%rbp
jl     11e0 <main+0xc0>
test   %eax,%eax
jle    1170 <main+0x50>
xor    %ebx,%ebx
jmp    1227 <main+0x107>
nopl   0x0(%rax)
call   1030 <putchar@plt>
add    $0x1,%rbx
movslq 0x8(%rsp),%rax
cmp    %rax,%rbx
jge    1170 <main+0x50>
mov    0x10(%rsp,%rbx,4),%eax
cmp    $0x9,%rax
ja     1215 <main+0xf5>
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
mov    $0x20,%edi
cmpl   $0x1,0x1a0(%rsp,%rbx,4)
01
je     1210 <main+0xf0>
jmp    1215 <main+0xf5>
mov    0x1a0(%rsp,%rbx,4),%eax
add    $0xffffffff,%eax
cmp    $0x4,%eax
jae    1215 <main+0xf5>
cltq
lea    0xdc9(%rip),%rcx
mov    (%rcx,%rax,4),%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x60,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x63,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x66,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x69,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x6c,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x4,%eax
jae    1215 <main+0xf5>
add    $0x6f,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x3,%eax
jae    1215 <main+0xf5>
add    $0x73,%edi
jmp    1210 <main+0xf0>
mov    0x1a0(%rsp,%rbx,4),%edi
lea    -0x1(%rdi),%eax
cmp    $0x4,%eax
jae    1215 <main+0xf5>
add    $0x76,%edi
jmp    1210 <main+0xf0>
xor    %eax,%eax
add    $0x61a98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%d\00"
@.str.1 = [2 x i8] c" \00"
@.str.2 = [2 x i8] c".\00"
@.str.3 = [2 x i8] c",\00"
@.str.4 = [2 x i8] c"?\00"
@.str.5 = [2 x i8] c"\22\00"
@.str.6 = [2 x i8] c"a\00"
@.str.7 = [2 x i8] c"b\00"
@.str.8 = [2 x i8] c"c\00"
@.str.9 = [2 x i8] c"d\00"
@.str.10 = [2 x i8] c"e\00"
@.str.11 = [2 x i8] c"f\00"
@.str.12 = [2 x i8] c"g\00"
@.str.13 = [2 x i8] c"h\00"
@.str.14 = [2 x i8] c"i\00"
@.str.15 = [2 x i8] c"j\00"
@.str.16 = [2 x i8] c"k\00"
@.str.17 = [2 x i8] c"l\00"
@.str.18 = [2 x i8] c"m\00"
@.str.19 = [2 x i8] c"n\00"
@.str.20 = [2 x i8] c"o\00"
@.str.21 = [2 x i8] c"p\00"
@.str.22 = [2 x i8] c"q\00"
@.str.23 = [2 x i8] c"r\00"
@.str.24 = [2 x i8] c"s\00"
@.str.25 = [2 x i8] c"t\00"
@.str.26 = [2 x i8] c"u\00"
@.str.27 = [2 x i8] c"v\00"
@.str.28 = [2 x i8] c"w\00"
@.str.29 = [2 x i8] c"x\00"
@.str.30 = [2 x i8] c"y\00"
@.str.31 = [2 x i8] c"z\00"
@.str.32 = [2 x i8] c"\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca [1000 x [100 x i32]]
store i32 0, i32* %1
%8 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %2)
store i32 1, i32* %4
br label %9
9: ; preds = %365, %0
%10 = load i32, i32* %4
%11 = load i32, i32* %2
%12 = icmp sle i32 %10, %11
br i1 %12, label %13, label %368
13: ; preds = %9
%14 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %3)
store i32 0, i32* %5
br label %15
15: ; preds = %35, %13
%16 = load i32, i32* %5
%17 = icmp slt i32 %16, 2
br i1 %17, label %18, label %38
18: ; preds = %15
store i32 0, i32* %6
br label %19
19: ; preds = %31, %18
%20 = load i32, i32* %6
%21 = load i32, i32* %3
%22 = icmp slt i32 %20, %21
br i1 %22, label %23, label %34
23: ; preds = %19
%24 = load i32, i32* %5
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 %25
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [100 x i32], [100 x i32]* %26, i64 0, i64 %28
%30 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %29)
br label %31
31: ; preds = %23
%32 = load i32, i32* %6
%33 = add nsw i32 %32, 1
store i32 %33, i32* %6
br label %19
34: ; preds = %19
br label %35
35: ; preds = %34
%36 = load i32, i32* %5
%37 = add nsw i32 %36, 1
store i32 %37, i32* %5
br label %15
38: ; preds = %15
store i32 0, i32* %6
br label %39
39: ; preds = %360, %38
%40 = load i32, i32* %6
%41 = load i32, i32* %3
%42 = icmp slt i32 %40, %41
br i1 %42, label %43, label %363
43: ; preds = %39
%44 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 0
%45 = load i32, i32* %6
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [100 x i32], [100 x i32]* %44, i64 0, i64 %46
%48 = load i32, i32* %47
switch i32 %48, label %359 [
i32 0, label %49
i32 1, label %59
i32 2, label %99
i32 3, label %129
i32 4, label %159
i32 5, label %189
i32 6, label %219
i32 7, label %249
i32 8, label %289
i32 9, label %319
]
49: ; preds = %43
%50 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%51 = load i32, i32* %6
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [100 x i32], [100 x i32]* %50, i64 0, i64 %52
%54 = load i32, i32* %53
%55 = icmp eq i32 %54, 1
br i1 %55, label %56, label %58
56: ; preds = %49
%57 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %58
58: ; preds = %56, %49
br label %359
59: ; preds = %43
%60 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%61 = load i32, i32* %6
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [100 x i32], [100 x i32]* %60, i64 0, i64 %62
%64 = load i32, i32* %63
%65 = icmp eq i32 %64, 1
br i1 %65, label %66, label %68
66: ; preds = %59
%67 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %98
68: ; preds = %59
%69 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%70 = load i32, i32* %6
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [100 x i32], [100 x i32]* %69, i64 0, i64 %71
%73 = load i32, i32* %72
%74 = icmp eq i32 %73, 2
br i1 %74, label %75, label %77
75: ; preds = %68
%76 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
br label %97
77: ; preds = %68
%78 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%79 = load i32, i32* %6
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [100 x i32], [100 x i32]* %78, i64 0, i64 %80
%82 = load i32, i32* %81
%83 = icmp eq i32 %82, 3
br i1 %83, label %84, label %86
84: ; preds = %77
%85 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
br label %96
86: ; preds = %77
%87 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%88 = load i32, i32* %6
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [100 x i32], [100 x i32]* %87, i64 0, i64 %89
%91 = load i32, i32* %90
%92 = icmp eq i32 %91, 4
br i1 %92, label %93, label %95
93: ; preds = %86
%94 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %95
95: ; preds = %93, %86
br label %96
96: ; preds = %95, %84
br label %97
97: ; preds = %96, %75
br label %98
98: ; preds = %97, %66
br label %359
99: ; preds = %43
%100 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%101 = load i32, i32* %6
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [100 x i32], [100 x i32]* %100, i64 0, i64 %102
%104 = load i32, i32* %103
%105 = icmp eq i32 %104, 1
br i1 %105, label %106, label %108
106: ; preds = %99
%107 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
br label %128
108: ; preds = %99
%109 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%110 = load i32, i32* %6
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [100 x i32], [100 x i32]* %109, i64 0, i64 %111
%113 = load i32, i32* %112
%114 = icmp eq i32 %113, 2
br i1 %114, label %115, label %117
115: ; preds = %108
%116 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %127
117: ; preds = %108
%118 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%119 = load i32, i32* %6
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [100 x i32], [100 x i32]* %118, i64 0, i64 %120
%122 = load i32, i32* %121
%123 = icmp eq i32 %122, 3
br i1 %123, label %124, label %126
124: ; preds = %117
%125 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0))
br label %126
126: ; preds = %124, %117
br label %127
127: ; preds = %126, %115
br label %128
128: ; preds = %127, %106
br label %359
129: ; preds = %43
%130 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%131 = load i32, i32* %6
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds [100 x i32], [100 x i32]* %130, i64 0, i64 %132
%134 = load i32, i32* %133
%135 = icmp eq i32 %134, 1
br i1 %135, label %136, label %138
136: ; preds = %129
%137 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0))
br label %158
138: ; preds = %129
%139 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%140 = load i32, i32* %6
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [100 x i32], [100 x i32]* %139, i64 0, i64 %141
%143 = load i32, i32* %142
%144 = icmp eq i32 %143, 2
br i1 %144, label %145, label %147
145: ; preds = %138
%146 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i64 0, i64 0))
br label %157
147: ; preds = %138
%148 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%149 = load i32, i32* %6
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [100 x i32], [100 x i32]* %148, i64 0, i64 %150
%152 = load i32, i32* %151
%153 = icmp eq i32 %152, 3
br i1 %153, label %154, label %156
154: ; preds = %147
%155 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
br label %156
156: ; preds = %154, %147
br label %157
157: ; preds = %156, %145
br label %158
158: ; preds = %157, %136
br label %359
159: ; preds = %43
%160 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%161 = load i32, i32* %6
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [100 x i32], [100 x i32]* %160, i64 0, i64 %162
%164 = load i32, i32* %163
%165 = icmp eq i32 %164, 1
br i1 %165, label %166, label %168
166: ; preds = %159
%167 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
br label %188
168: ; preds = %159
%169 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%170 = load i32, i32* %6
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [100 x i32], [100 x i32]* %169, i64 0, i64 %171
%173 = load i32, i32* %172
%174 = icmp eq i32 %173, 2
br i1 %174, label %175, label %177
175: ; preds = %168
%176 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0))
br label %187
177: ; preds = %168
%178 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%179 = load i32, i32* %6
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds [100 x i32], [100 x i32]* %178, i64 0, i64 %180
%182 = load i32, i32* %181
%183 = icmp eq i32 %182, 3
br i1 %183, label %184, label %186
184: ; preds = %177
%185 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.14, i64 0, i64 0))
br label %186
186: ; preds = %184, %177
br label %187
187: ; preds = %186, %175
br label %188
188: ; preds = %187, %166
br label %359
189: ; preds = %43
%190 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%191 = load i32, i32* %6
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds [100 x i32], [100 x i32]* %190, i64 0, i64 %192
%194 = load i32, i32* %193
%195 = icmp eq i32 %194, 1
br i1 %195, label %196, label %198
196: ; preds = %189
%197 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0))
br label %218
198: ; preds = %189
%199 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%200 = load i32, i32* %6
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds [100 x i32], [100 x i32]* %199, i64 0, i64 %201
%203 = load i32, i32* %202
%204 = icmp eq i32 %203, 2
br i1 %204, label %205, label %207
205: ; preds = %198
%206 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0))
br label %217
207: ; preds = %198
%208 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%209 = load i32, i32* %6
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [100 x i32], [100 x i32]* %208, i64 0, i64 %210
%212 = load i32, i32* %211
%213 = icmp eq i32 %212, 3
br i1 %213, label %214, label %216
214: ; preds = %207
%215 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
br label %216
216: ; preds = %214, %207
br label %217
217: ; preds = %216, %205
br label %218
218: ; preds = %217, %196
br label %359
219: ; preds = %43
%220 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%221 = load i32, i32* %6
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds [100 x i32], [100 x i32]* %220, i64 0, i64 %222
%224 = load i32, i32* %223
%225 = icmp eq i32 %224, 1
br i1 %225, label %226, label %228
226: ; preds = %219
%227 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %248
228: ; preds = %219
%229 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%230 = load i32, i32* %6
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds [100 x i32], [100 x i32]* %229, i64 0, i64 %231
%233 = load i32, i32* %232
%234 = icmp eq i32 %233, 2
br i1 %234, label %235, label %237
235: ; preds = %228
%236 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.19, i64 0, i64 0))
br label %247
237: ; preds = %228
%238 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%239 = load i32, i32* %6
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [100 x i32], [100 x i32]* %238, i64 0, i64 %240
%242 = load i32, i32* %241
%243 = icmp eq i32 %242, 3
br i1 %243, label %244, label %246
244: ; preds = %237
%245 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
br label %246
246: ; preds = %244, %237
br label %247
247: ; preds = %246, %235
br label %248
248: ; preds = %247, %226
br label %359
249: ; preds = %43
%250 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%251 = load i32, i32* %6
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds [100 x i32], [100 x i32]* %250, i64 0, i64 %252
%254 = load i32, i32* %253
%255 = icmp eq i32 %254, 1
br i1 %255, label %256, label %258
256: ; preds = %249
%257 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.21, i64 0, i64 0))
br label %288
258: ; preds = %249
%259 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%260 = load i32, i32* %6
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [100 x i32], [100 x i32]* %259, i64 0, i64 %261
%263 = load i32, i32* %262
%264 = icmp eq i32 %263, 2
br i1 %264, label %265, label %267
265: ; preds = %258
%266 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
br label %287
267: ; preds = %258
%268 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%269 = load i32, i32* %6
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [100 x i32], [100 x i32]* %268, i64 0, i64 %270
%272 = load i32, i32* %271
%273 = icmp eq i32 %272, 3
br i1 %273, label %274, label %276
274: ; preds = %267
%275 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
br label %286
276: ; preds = %267
%277 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%278 = load i32, i32* %6
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds [100 x i32], [100 x i32]* %277, i64 0, i64 %279
%281 = load i32, i32* %280
%282 = icmp eq i32 %281, 4
br i1 %282, label %283, label %285
283: ; preds = %276
%284 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.24, i64 0, i64 0))
br label %285
285: ; preds = %283, %276
br label %286
286: ; preds = %285, %274
br label %287
287: ; preds = %286, %265
br label %288
288: ; preds = %287, %256
br label %359
289: ; preds = %43
%290 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%291 = load i32, i32* %6
%292 = sext i32 %291 to i64
%293 = getelementptr inbounds [100 x i32], [100 x i32]* %290, i64 0, i64 %292
%294 = load i32, i32* %293
%295 = icmp eq i32 %294, 1
br i1 %295, label %296, label %298
296: ; preds = %289
%297 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
br label %318
298: ; preds = %289
%299 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%300 = load i32, i32* %6
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds [100 x i32], [100 x i32]* %299, i64 0, i64 %301
%303 = load i32, i32* %302
%304 = icmp eq i32 %303, 2
br i1 %304, label %305, label %307
305: ; preds = %298
%306 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
br label %317
307: ; preds = %298
%308 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%309 = load i32, i32* %6
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds [100 x i32], [100 x i32]* %308, i64 0, i64 %310
%312 = load i32, i32* %311
%313 = icmp eq i32 %312, 3
br i1 %313, label %314, label %316
314: ; preds = %307
%315 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
br label %316
316: ; preds = %314, %307
br label %317
317: ; preds = %316, %305
br label %318
318: ; preds = %317, %296
br label %359
319: ; preds = %43
%320 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%321 = load i32, i32* %6
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds [100 x i32], [100 x i32]* %320, i64 0, i64 %322
%324 = load i32, i32* %323
%325 = icmp eq i32 %324, 1
br i1 %325, label %326, label %328
326: ; preds = %319
%327 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.28, i64 0, i64 0))
br label %358
328: ; preds = %319
%329 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%330 = load i32, i32* %6
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds [100 x i32], [100 x i32]* %329, i64 0, i64 %331
%333 = load i32, i32* %332
%334 = icmp eq i32 %333, 2
br i1 %334, label %335, label %337
335: ; preds = %328
%336 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.29, i64 0, i64 0))
br label %357
337: ; preds = %328
%338 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%339 = load i32, i32* %6
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds [100 x i32], [100 x i32]* %338, i64 0, i64 %340
%342 = load i32, i32* %341
%343 = icmp eq i32 %342, 3
br i1 %343, label %344, label %346
344: ; preds = %337
%345 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.30, i64 0, i64 0))
br label %356
346: ; preds = %337
%347 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %7, i64 0, i64 1
%348 = load i32, i32* %6
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds [100 x i32], [100 x i32]* %347, i64 0, i64 %349
%351 = load i32, i32* %350
%352 = icmp eq i32 %351, 4
br i1 %352, label %353, label %355
353: ; preds = %346
%354 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.31, i64 0, i64 0))
br label %355
355: ; preds = %353, %346
br label %356
356: ; preds = %355, %344
br label %357
357: ; preds = %356, %335
br label %358
358: ; preds = %357, %326
br label %359
359: ; preds = %43, %358, %318, %288, %248, %218, %188, %158, %128, %98, %58
br label %360
360: ; preds = %359
%361 = load i32, i32* %6
%362 = add nsw i32 %361, 1
store i32 %362, i32* %6
br label %39
363: ; preds = %39
%364 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.32, i64 0, i64 0))
br label %365
365: ; preds = %363
%366 = load i32, i32* %4
%367 = add nsw i32 %366, 1
store i32 %367, i32* %4
br label %9
368: ; preds = %9
ret i32 0
}

LLVM IR (-O2):
@.str = [3 x i8] c"%d\00"
@switch.table.main = [4 x i32] [i32 46, i32 44, i32 63, i32 34]
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [1000 x [100 x i32]]
%4 = bitcast i32* %1 to i8*
%5 = bitcast i32* %2 to i8*
%6 = bitcast [1000 x [100 x i32]]* %3 to i8*
%7 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %1)
%8 = load i32, i32* %1
%9 = icmp slt i32 %8, 1
br i1 %9, label %121, label %10
10: ; preds = %0, %116
%11 = phi i32 [ %118, %116 ], [ 1, %0 ]
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %2)
%13 = load i32, i32* %2
%14 = icmp sgt i32 %13, 0
br i1 %14, label %15, label %116
15: ; preds = %10, %15
%16 = phi i64 [ %19, %15 ], [ 0, %10 ]
%17 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 0, i64 %16
%18 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %17)
%19 = add nuw nsw i64 %16, 1
%20 = load i32, i32* %2
%21 = sext i32 %20 to i64
%22 = icmp slt i64 %19, %21
br i1 %22, label %15, label %23
23: ; preds = %15
%24 = icmp sgt i32 %20, 0
br i1 %24, label %25, label %116
25: ; preds = %23, %25
%26 = phi i64 [ %29, %25 ], [ 0, %23 ]
%27 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %26
%28 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %27)
%29 = add nuw nsw i64 %26, 1
%30 = load i32, i32* %2
%31 = sext i32 %30 to i64
%32 = icmp slt i64 %29, %31
br i1 %32, label %25, label %33
33: ; preds = %25
%34 = icmp sgt i32 %30, 0
br i1 %34, label %35, label %116
35: ; preds = %33, %111
%36 = phi i64 [ %112, %111 ], [ 0, %33 ]
%37 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 0, i64 %36
%38 = load i32, i32* %37
switch i32 %38, label %111 [
i32 0, label %39
i32 1, label %43
i32 2, label %48
i32 3, label %53
i32 4, label %58
i32 5, label %63
i32 6, label %68
i32 7, label %73
i32 8, label %78
i32 9, label %83
]
39: ; preds = %35
%40 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%41 = load i32, i32* %40
%42 = icmp eq i32 %41, 1
br i1 %42, label %108, label %111
43: ; preds = %35
%44 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%45 = load i32, i32* %44
%46 = add i32 %45, -1
%47 = icmp ult i32 %46, 4
br i1 %47, label %88, label %111
48: ; preds = %35
%49 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%50 = load i32, i32* %49
%51 = add i32 %50, -1
%52 = icmp ult i32 %51, 3
br i1 %52, label %92, label %111
53: ; preds = %35
%54 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%55 = load i32, i32* %54
%56 = add i32 %55, -1
%57 = icmp ult i32 %56, 3
br i1 %57, label %94, label %111
58: ; preds = %35
%59 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%60 = load i32, i32* %59
%61 = add i32 %60, -1
%62 = icmp ult i32 %61, 3
br i1 %62, label %96, label %111
63: ; preds = %35
%64 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%65 = load i32, i32* %64
%66 = add i32 %65, -1
%67 = icmp ult i32 %66, 3
br i1 %67, label %98, label %111
68: ; preds = %35
%69 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%70 = load i32, i32* %69
%71 = add i32 %70, -1
%72 = icmp ult i32 %71, 3
br i1 %72, label %100, label %111
73: ; preds = %35
%74 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%75 = load i32, i32* %74
%76 = add i32 %75, -1
%77 = icmp ult i32 %76, 4
br i1 %77, label %102, label %111
78: ; preds = %35
%79 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%80 = load i32, i32* %79
%81 = add i32 %80, -1
%82 = icmp ult i32 %81, 3
br i1 %82, label %104, label %111
83: ; preds = %35
%84 = getelementptr inbounds [1000 x [100 x i32]], [1000 x [100 x i32]]* %3, i64 0, i64 1, i64 %36
%85 = load i32, i32* %84
%86 = add i32 %85, -1
%87 = icmp ult i32 %86, 4
br i1 %87, label %106, label %111
88: ; preds = %43
%89 = sext i32 %46 to i64
%90 = getelementptr inbounds [4 x i32], [4 x i32]* @switch.table.main, i64 0, i64 %89
%91 = load i32, i32* %90
br label %108
92: ; preds = %48
%93 = add i32 %50, 96
br label %108
94: ; preds = %53
%95 = add i32 %55, 99
br label %108
96: ; preds = %58
%97 = add i32 %60, 102
br label %108
98: ; preds = %63
%99 = add i32 %65, 105
br label %108
100: ; preds = %68
%101 = add i32 %70, 108
br label %108
102: ; preds = %73
%103 = add i32 %75, 111
br label %108
104: ; preds = %78
%105 = add i32 %80, 115
br label %108
106: ; preds = %83
%107 = add i32 %85, 118
br label %108
108: ; preds = %106, %104, %102, %100, %98, %96, %94, %92, %88, %39
%109 = phi i32 [ 32, %39 ], [ %91, %88 ], [ %93, %92 ], [ %95, %94 ], [ %97, %96 ], [ %99, %98 ], [ %101, %100 ], [ %103, %102 ], [ %105, %104 ], [ %107, %106 ]
%110 = call i32 @putchar(i32 %109)
br label %111
111: ; preds = %83, %78, %73, %68, %63, %58, %53, %48, %43, %108, %35, %39
%112 = add nuw nsw i64 %36, 1
%113 = load i32, i32* %2
%114 = sext i32 %113 to i64
%115 = icmp slt i64 %112, %114
br i1 %115, label %35, label %116
116: ; preds = %111, %10, %23, %33
%117 = call i32 @putchar(i32 10)
%118 = add nuw nsw i32 %11, 1
%119 = load i32, i32* %1
%120 = icmp slt i32 %11, %119
br i1 %120, label %10, label %121
121: ; preds = %116, %0
ret i32 0
}