int main() {
  int p;
  char coin[8][4] = {"TTT", "TTH", "THT", "THH", "HTT", "HTH", "HHT", "HHH"};
  char seq[40 + 1];
  int n[1002];
  int res[1002][8];
  scanf("%d", &p);
  int i, j;
  for (i = 0; i < p; i++) {
    scanf("%d", &n[i]);
    scanf("%s", seq);
    for (j = 0; j < 8; j++) {
      res[i][j] = 0;
    }
    for (j = 0; j + 2 < 40; j++) {
      if (seq[j] == coin[0][0] && seq[j + 1] == coin[0][1] &&
          seq[j + 2] == coin[0][2]) {
        res[i][0]++;
      }
      if (seq[j] == coin[1][0] && seq[j + 1] == coin[1][1] &&
          seq[j + 2] == coin[1][2]) {
        res[i][1]++;
      }
      if (seq[j] == coin[2][0] && seq[j + 1] == coin[2][1] &&
          seq[j + 2] == coin[2][2]) {
        res[i][2]++;
      }
      if (seq[j] == coin[3][0] && seq[j + 1] == coin[3][1] &&
          seq[j + 2] == coin[3][2]) {
        res[i][3]++;
      }
      if (seq[j] == coin[4][0] && seq[j + 1] == coin[4][1] &&
          seq[j + 2] == coin[4][2]) {
        res[i][4]++;
      }
      if (seq[j] == coin[5][0] && seq[j + 1] == coin[5][1] &&
          seq[j + 2] == coin[5][2]) {
        res[i][5]++;
      }
      if (seq[j] == coin[6][0] && seq[j + 1] == coin[6][1] &&
          seq[j + 2] == coin[6][2]) {
        res[i][6]++;
      }
      if (seq[j] == coin[7][0] && seq[j + 1] == coin[7][1] &&
          seq[j + 2] == coin[7][2]) {
        res[i][7]++;
      }
    }
  }
  for (i = 0; i < p; i++) {
    printf("%d ", n[i]);
    for (j = 0; j < 8; j++) {
      printf("%d ", res[i][j]);
    }
    printf("\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x8d60,%rsp
movl   $0x0,-0x4(%rbp)
mov    0xec7(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xec4(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xec1(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xebe(%rip),%rax
mov    %rax,-0x18(%rbp)
lea    0xebb(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1040 <scanf@plt>
movl   $0x0,-0x8d54(%rbp)
mov    -0x8d54(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    15c8 <main+0x4a8>
movslq -0x8d54(%rbp),%rax
lea    -0x1010(%rbp),%rsi
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe7b(%rip),%rdi
mov    $0x0,%al
call   1040 <scanf@plt>
lea    -0x60(%rbp),%rsi
lea    0xe6c(%rip),%rdi
mov    $0x0,%al
call   1040 <scanf@plt>
movl   $0x0,-0x8d58(%rbp)
cmpl   $0x8,-0x8d58(%rbp)
jge    120c <main+0xec>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x8d58(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8d58(%rbp)
jmp    11c8 <main+0xa8>
movl   $0x0,-0x8d58(%rbp)
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cmp    $0x28,%eax
jge    15af <main+0x48f>
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x30(%rbp),%ecx
cmp    %ecx,%eax
jne    1294 <main+0x174>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x2f(%rbp),%ecx
cmp    %ecx,%eax
jne    1294 <main+0x174>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x2e(%rbp),%ecx
cmp    %ecx,%eax
jne    1294 <main+0x174>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x2c(%rbp),%ecx
cmp    %ecx,%eax
jne    1302 <main+0x1e2>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x2b(%rbp),%ecx
cmp    %ecx,%eax
jne    1302 <main+0x1e2>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x2a(%rbp),%ecx
cmp    %ecx,%eax
jne    1302 <main+0x1e2>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x4(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x4(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x28(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <main+0x250>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x27(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <main+0x250>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x26(%rbp),%ecx
cmp    %ecx,%eax
jne    1370 <main+0x250>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x8(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x8(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x24(%rbp),%ecx
cmp    %ecx,%eax
jne    13de <main+0x2be>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
jne    13de <main+0x2be>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
jne    13de <main+0x2be>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0xc(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0xc(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
jne    144c <main+0x32c>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    144c <main+0x32c>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x1e(%rbp),%ecx
cmp    %ecx,%eax
jne    144c <main+0x32c>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x10(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x10(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jne    14ba <main+0x39a>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x1b(%rbp),%ecx
cmp    %ecx,%eax
jne    14ba <main+0x39a>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x1a(%rbp),%ecx
cmp    %ecx,%eax
jne    14ba <main+0x39a>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x14(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x14(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1528 <main+0x408>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x17(%rbp),%ecx
cmp    %ecx,%eax
jne    1528 <main+0x408>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x16(%rbp),%ecx
cmp    %ecx,%eax
jne    1528 <main+0x408>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x18(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x18(%rax)
movslq -0x8d58(%rbp),%rax
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x14(%rbp),%ecx
cmp    %ecx,%eax
jne    1596 <main+0x476>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x13(%rbp),%ecx
cmp    %ecx,%eax
jne    1596 <main+0x476>
mov    -0x8d58(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x60(%rbp,%rax,1),%eax
movsbl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    1596 <main+0x476>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
mov    0x1c(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x1c(%rax)
jmp    159b <main+0x47b>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8d58(%rbp)
jmp    1216 <main+0xf6>
jmp    15b4 <main+0x494>
mov    -0x8d54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8d54(%rbp)
jmp    117a <main+0x5a>
movl   $0x0,-0x8d54(%rbp)
mov    -0x8d54(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1677 <main+0x557>
movslq -0x8d54(%rbp),%rax
mov    -0x1010(%rbp,%rax,4),%esi
lea    0xa30(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x8d58(%rbp)
cmpl   $0x8,-0x8d58(%rbp)
jge    1655 <main+0x535>
movslq -0x8d54(%rbp),%rcx
lea    -0x8d50(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x8d58(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0x9ec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8d58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8d58(%rbp)
jmp    1607 <main+0x4e7>
lea    0x9ce(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8d54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8d54(%rbp)
jmp    15d2 <main+0x4b2>
xor    %eax,%eax
add    $0x8d60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x8d38,%rsp
lea    0xeb8(%rip),%rdi
lea    0xc(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
cmpl   $0x0,0xc(%rsp)
jle    1356 <main+0x226>
lea    0xe9a(%rip),%r14
lea    0xe96(%rip),%r15
lea    0x10(%rsp),%r13
xor    %r12d,%r12d
jmp    1192 <main+0x62>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r12
movslq 0xc(%rsp),%rax
cmp    %rax,%r12
jge    129d <main+0x16d>
mov    %r12,%rbx
shl    $0x5,%rbx
lea    (%rsp,%rbx,1),%rbp
add    $0xff0,%rbp
lea    (%rsp,%r12,4),%rsi
add    $0x40,%rsi
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    %r15,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
xorps  %xmm0,%xmm0
movaps %xmm0,0xff0(%rsp,%rbx,1)
movaps %xmm0,0x1000(%rsp,%rbx,1)
lea    0x12(%rsp),%rax
xor    %esi,%esi
xor    %edx,%edx
jmp    11fe <main+0xce>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rdx
add    $0x1,%rax
cmp    $0x26,%rdx
je     1180 <main+0x50>
movzbl 0x10(%rsp,%rdx,1),%ecx
cmp    $0x48,%cl
je     1240 <main+0x110>
cmp    $0x54,%cl
jne    11f0 <main+0xc0>
movzbl 0x11(%rsp,%rdx,1),%ecx
add    $0x1,%rdx
cmp    $0x48,%cl
je     1267 <main+0x137>
cmp    $0x54,%cl
jne    11f4 <main+0xc4>
cmpb   $0x54,(%rax)
jne    122b <main+0xfb>
add    $0x1,%esi
mov    %esi,0x0(%rbp)
cmpb   $0x48,(%rax)
jne    11f4 <main+0xc4>
addl   $0x1,0x4(%rbp)
jmp    11f4 <main+0xc4>
cs nopw 0x0(%rax,%rax,1)
movzbl 0x11(%rsp,%rdx,1),%ecx
add    $0x1,%rdx
cmp    $0x48,%cl
je     1282 <main+0x152>
cmp    $0x54,%cl
jne    11f4 <main+0xc4>
cmpb   $0x54,(%rax)
jne    125c <main+0x12c>
addl   $0x1,0x10(%rbp)
cmpb   $0x48,(%rax)
jne    11f4 <main+0xc4>
addl   $0x1,0x14(%rbp)
jmp    11f4 <main+0xc4>
cmpb   $0x54,(%rax)
jne    1270 <main+0x140>
addl   $0x1,0x8(%rbp)
cmpb   $0x48,(%rax)
jne    11f4 <main+0xc4>
addl   $0x1,0xc(%rbp)
jmp    11f4 <main+0xc4>
cmpb   $0x54,(%rax)
jne    128b <main+0x15b>
addl   $0x1,0x18(%rbp)
cmpb   $0x48,(%rax)
jne    11f4 <main+0xc4>
addl   $0x1,0x1c(%rbp)
jmp    11f4 <main+0xc4>
test   %eax,%eax
jle    1356 <main+0x226>
lea    0x100c(%rsp),%rbp
lea    0xd52(%rip),%r14
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
mov    0x40(%rsp,%rbx,4),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x1c(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x18(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x14(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x10(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0xc(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x8(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    -0x4(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
movslq 0xc(%rsp),%rax
add    $0x20,%rbp
cmp    %rax,%rbx
jl     12c0 <main+0x190>
xor    %eax,%eax
add    $0x8d38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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