#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 max(int, int);
int min(int, int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, int *, ...);
int main() {
  int m, n[50], k, l;
  char ans[1000001];
  int i, j;
  scanf("%d%d%d", &k, &l, &m);
  for (i = 0; i < m; i++) {
    scanf("%d", &n[i]);
  }
  ans[1] = 'A';
  ans[k] = 'A';
  ans[l] = 'A';
  int minim = min(k, l);
  int maxim = max(k, l);
  for (i = 2; i < minim; i++) {
    if (ans[i - 1] == 'B')
      ans[i] = 'A';
    else
      ans[i] = 'B';
  }
  for (i = minim + 1; i < maxim; i++) {
    if (ans[i - 1] == 'B' || ans[i - minim] == 'B')
      ans[i] = 'A';
    else
      ans[i] = 'B';
  }
  for (i = maxim + 1; i <= 1000000; i++) {
    if (ans[i - 1] == 'B' || ans[i - k] == 'B' || ans[i - l] == 'B')
      ans[i] = 'A';
    else
      ans[i] = 'B';
  }
  for (i = 0; i < m; i++) {
    printf("%c", ans[n[i]]);
  }
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf4330,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xea7(%rip),%rdi
lea    -0xd4(%rbp),%rsi
lea    -0xd8(%rbp),%rdx
lea    -0x8(%rbp),%rcx
mov    $0x0,%al
call   1060 <scanf@plt>
movl   $0x0,-0xf4324(%rbp)
mov    -0xf4324(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11c2 <main+0x82>
movslq -0xf4324(%rbp),%rax
lea    -0xd0(%rbp),%rsi
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe5d(%rip),%rdi
mov    $0x0,%al
call   1060 <scanf@plt>
mov    -0xf4324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
jmp    117c <main+0x3c>
movb   $0x41,-0xf431f(%rbp)
movslq -0xd4(%rbp),%rax
movb   $0x41,-0xf4320(%rbp,%rax,1)
41
movslq -0xd8(%rbp),%rax
movb   $0x41,-0xf4320(%rbp,%rax,1)
41
mov    -0xd4(%rbp),%edi
mov    -0xd8(%rbp),%esi
call   1040 <min@plt>
mov    %eax,-0xf432c(%rbp)
mov    -0xd4(%rbp),%edi
mov    -0xd8(%rbp),%esi
call   1050 <max@plt>
mov    %eax,-0xf4330(%rbp)
movl   $0x2,-0xf4324(%rbp)
mov    -0xf4324(%rbp),%eax
cmp    -0xf432c(%rbp),%eax
jge    1289 <main+0x149>
mov    -0xf4324(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
jne    1261 <main+0x121>
movslq -0xf4324(%rbp),%rax
movb   $0x41,-0xf4320(%rbp,%rax,1)
41
jmp    1270 <main+0x130>
movslq -0xf4324(%rbp),%rax
movb   $0x42,-0xf4320(%rbp,%rax,1)
42
jmp    1275 <main+0x135>
mov    -0xf4324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
jmp    121f <main+0xdf>
mov    -0xf432c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
mov    -0xf4324(%rbp),%eax
cmp    -0xf4330(%rbp),%eax
jge    1321 <main+0x1e1>
mov    -0xf4324(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
je     12e5 <main+0x1a5>
mov    -0xf4324(%rbp),%eax
sub    -0xf432c(%rbp),%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
jne    12f9 <main+0x1b9>
movslq -0xf4324(%rbp),%rax
movb   $0x41,-0xf4320(%rbp,%rax,1)
41
jmp    1308 <main+0x1c8>
movslq -0xf4324(%rbp),%rax
movb   $0x42,-0xf4320(%rbp,%rax,1)
42
jmp    130d <main+0x1cd>
mov    -0xf4324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
jmp    1298 <main+0x158>
mov    -0xf4330(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
cmpl   $0xf4240,-0xf4324(%rbp)
jg     13d6 <main+0x296>
mov    -0xf4324(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
je     139a <main+0x25a>
mov    -0xf4324(%rbp),%eax
sub    -0xd4(%rbp),%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
je     139a <main+0x25a>
mov    -0xf4324(%rbp),%eax
sub    -0xd8(%rbp),%eax
cltq
movsbl -0xf4320(%rbp,%rax,1),%eax
ff
cmp    $0x42,%eax
jne    13ae <main+0x26e>
movslq -0xf4324(%rbp),%rax
movb   $0x41,-0xf4320(%rbp,%rax,1)
41
jmp    13bd <main+0x27d>
movslq -0xf4324(%rbp),%rax
movb   $0x42,-0xf4320(%rbp,%rax,1)
42
jmp    13c2 <main+0x282>
mov    -0xf4324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
jmp    1330 <main+0x1f0>
movl   $0x0,-0xf4324(%rbp)
mov    -0xf4324(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1428 <main+0x2e8>
movslq -0xf4324(%rbp),%rax
movslq -0xd0(%rbp,%rax,4),%rax
ff
movsbl -0xf4320(%rbp,%rax,1),%esi
ff
lea    0xbfa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xf4324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4324(%rbp)
jmp    13e0 <main+0x2a0>
lea    0xbdb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0xf4330,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0xf4330,%rsp
lea    0xead(%rip),%rdi
lea    0xc(%rsp),%rsi
lea    0x8(%rsp),%rdx
lea    0x4(%rsp),%rcx
xor    %eax,%eax
call   1060 <scanf@plt>
cmpl   $0x0,0x4(%rsp)
jle    119f <main+0x5f>
lea    0x10(%rsp),%r15
lea    0xe88(%rip),%r14
xor    %ebx,%ebx
xchg   %ax,%ax
mov    %r14,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
add    $0x1,%rbx
movslq 0x4(%rsp),%rax
add    $0x4,%r15
cmp    %rax,%rbx
jl     1180 <main+0x40>
movb   $0x41,0xe1(%rsp)
41
movslq 0xc(%rsp),%rdi
movb   $0x41,0xe0(%rsp,%rdi,1)
41
movslq 0x8(%rsp),%rsi
movb   $0x41,0xe0(%rsp,%rsi,1)
41
call   1040 <min@plt>
mov    %eax,%r14d
mov    0xc(%rsp),%edi
mov    0x8(%rsp),%esi
call   1050 <max@plt>
cmp    $0x3,%r14d
jl     1276 <main+0x136>
mov    %r14d,%ebx
mov    0xe1(%rsp),%cl
lea    -0x2(%rbx),%rsi
add    $0xfffffffffffffffd,%rbx
mov    %esi,%edx
and    $0x3,%edx
mov    $0x2,%edi
cmp    $0x3,%rbx
jb     124b <main+0x10b>
and    $0xfffffffffffffffc,%rsi
neg    %rsi
mov    $0x2,%edi
xchg   %ax,%ax
cmp    $0x42,%cl
sete   %cl
mov    $0x42,%bl
sub    %cl,%bl
mov    %bl,0xe0(%rsp,%rdi,1)
add    $0x41,%cl
mov    %cl,0xe1(%rsp,%rdi,1)
mov    %bl,0xe2(%rsp,%rdi,1)
mov    %cl,0xe3(%rsp,%rdi,1)
lea    (%rsi,%rdi,1),%rbx
add    $0x4,%rbx
add    $0x4,%rdi
cmp    $0x2,%rbx
jne    1210 <main+0xd0>
test   %rdx,%rdx
je     1276 <main+0x136>
lea    (%rsp,%rdi,1),%rsi
add    $0xe0,%rsi
xor    %edi,%edi
nopl   (%rax)
cmp    $0x42,%cl
sete   %bl
mov    $0x42,%cl
sub    %bl,%cl
mov    %cl,(%rsi,%rdi,1)
add    $0x1,%rdi
cmp    %rdi,%rdx
jne    1260 <main+0x120>
lea    0x1(%r14),%r11d
cmp    %eax,%r11d
jge    12d7 <main+0x197>
movslq %r11d,%rdi
movslq %r14d,%r9
mov    %r14d,%ecx
not    %ecx
add    %eax,%ecx
lea    -0x2(%rax),%esi
test   $0x1,%cl
jne    12a1 <main+0x161>
mov    %r14d,%r11d
cmp    %r14d,%esi
je     12d7 <main+0x197>
jmp    1379 <main+0x239>
mov    $0x41,%dl
cmpb   $0x42,0xe0(%rsp,%r9,1)
je     12c3 <main+0x183>
mov    %rdi,%rcx
sub    %r9,%rcx
cmpb   $0x42,0xe0(%rsp,%rcx,1)
42
sete   %cl
mov    $0x42,%dl
sub    %cl,%dl
mov    %dl,0xe0(%rsp,%rdi,1)
add    $0x1,%rdi
cmp    %r14d,%esi
jne    1379 <main+0x239>
cmp    $0xf423f,%eax
jg     1337 <main+0x1f7>
movslq 0xc(%rsp),%rcx
movslq 0x8(%rsp),%rdi
cltq
mov    0xe0(%rsp,%rax,1),%dl
lea    (%rsp,%rax,1),%rsi
add    $0xe1,%rsi
add    $0xfffffffffff0bdc0,%rax
neg    %rdi
neg    %rcx
jmp    131b <main+0x1db>
nopw   0x0(%rax,%rax,1)
mov    %dl,(%rsi)
add    $0x1,%rsi
inc    %rax
je     1337 <main+0x1f7>
mov    %edx,%ebx
mov    $0x41,%dl
cmp    $0x42,%bl
je     1310 <main+0x1d0>
cmpb   $0x42,(%rsi,%rcx,1)
je     1310 <main+0x1d0>
cmpb   $0x42,(%rsi,%rdi,1)
sete   %bl
mov    $0x42,%dl
sub    %bl,%dl
jmp    1310 <main+0x1d0>
cmpl   $0x0,0x4(%rsp)
jle    1360 <main+0x220>
xor    %ebx,%ebx
movslq 0x10(%rsp,%rbx,4),%rax
movsbl 0xe0(%rsp,%rax,1),%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
movslq 0x4(%rsp),%rax
cmp    %rax,%rbx
jl     1340 <main+0x200>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0xf4330,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret
mov    %eax,%r10d
neg    %r10d
lea    0x1(%rdi),%esi
lea    0xe0(%rsp),%rcx
lea    (%rdi,%rcx,1),%rbx
add    $0x1,%rbx
shl    $0x20,%rdi
neg    %r9
movabs $0x200000000,%r8
jmp    13cd <main+0x28d>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %dl,(%rbx)
lea    0x2(%r11),%esi
lea    (%r10,%r11,1),%ecx
add    $0x2,%ecx
add    %r8,%rdi
add    $0x2,%rbx
cmp    $0x1,%ecx
je     12d7 <main+0x197>
mov    %r11d,%ecx
movslq %r11d,%rcx
mov    %esi,%r11d
mov    $0x41,%dl
cmpb   $0x42,0xe0(%rsp,%rcx,1)
42
mov    $0x41,%cl
je     13f3 <main+0x2b3>
cmpb   $0x42,-0x1(%rbx,%r9,1)
sete   %sil
mov    $0x42,%cl
sub    %sil,%cl
mov    %cl,-0x1(%rbx)
mov    %rdi,%rcx
sar    $0x20,%rcx
cmpb   $0x42,0xe0(%rsp,%rcx,1)
42
je     13b0 <main+0x270>
cmpb   $0x42,(%rbx,%r9,1)
sete   %cl
mov    $0x42,%dl
sub    %cl,%dl
jmp    13b0 <main+0x270>

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

LLVM IR (-O2):
@.str = [7 x i8] c"%d%d%d\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [50 x i32]
%3 = alloca i32
%4 = alloca i32
%5 = alloca [1000001 x i8]
%6 = bitcast i32* %1 to i8*
%7 = bitcast [50 x i32]* %2 to i8*
%8 = bitcast i32* %3 to i8*
%9 = bitcast i32* %4 to i8*
%10 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 0
%11 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), i32* %3, i32* %4, i32* %1)
%12 = load i32, i32* %1
%13 = icmp sgt i32 %12, 0
br i1 %13, label %14, label %22
14: ; preds = %0, %14
%15 = phi i64 [ %18, %14 ], [ 0, %0 ]
%16 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %15
%17 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %16)
%18 = add nuw nsw i64 %15, 1
%19 = load i32, i32* %1
%20 = sext i32 %19 to i64
%21 = icmp slt i64 %18, %20
br i1 %21, label %14, label %22
22: ; preds = %14, %0
%23 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 1
store i8 65, i8* %23
%24 = load i32, i32* %3
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %25
store i8 65, i8* %26
%27 = load i32, i32* %4
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %28
store i8 65, i8* %29
%30 = call i32 @min(i32 %24, i32 %27)
%31 = load i32, i32* %3
%32 = load i32, i32* %4
%33 = call i32 @max(i32 %31, i32 %32)
%34 = icmp sgt i32 %30, 2
br i1 %34, label %35, label %58
35: ; preds = %22
%36 = zext i32 %30 to i64
%37 = load i8, i8* %23
%38 = add nsw i64 %36, -2
%39 = add nsw i64 %36, -3
%40 = and i64 %38, 3
%41 = icmp ult i64 %39, 3
br i1 %41, label %44, label %42
42: ; preds = %35
%43 = and i64 %38, -4
br label %88
44: ; preds = %88, %35
%45 = phi i8 [ %37, %35 ], [ %102, %88 ]
%46 = phi i64 [ 2, %35 ], [ %104, %88 ]
%47 = icmp eq i64 %40, 0
br i1 %47, label %58, label %48
48: ; preds = %44, %48
%49 = phi i8 [ %53, %48 ], [ %45, %44 ]
%50 = phi i64 [ %55, %48 ], [ %46, %44 ]
%51 = phi i64 [ %56, %48 ], [ 0, %44 ]
%52 = icmp eq i8 %49, 66
%53 = select i1 %52, i8 65, i8 66
%54 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %50
store i8 %53, i8* %54
%55 = add nuw nsw i64 %50, 1
%56 = add i64 %51, 1
%57 = icmp eq i64 %56, %40
br i1 %57, label %58, label %48
58: ; preds = %44, %48, %22
%59 = add i32 %30, 1
%60 = icmp slt i32 %59, %33
br i1 %60, label %61, label %107
61: ; preds = %58
%62 = sext i32 %59 to i64
%63 = sext i32 %30 to i64
%64 = xor i32 %30, -1
%65 = add i32 %33, %64
%66 = add i32 %33, -2
%67 = and i32 %65, 1
%68 = icmp eq i32 %67, 0
br i1 %68, label %84, label %69
69: ; preds = %61
%70 = sext i32 %30 to i64
%71 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %70
%72 = load i8, i8* %71
%73 = icmp eq i8 %72, 66
br i1 %73, label %80, label %74
74: ; preds = %69
%75 = sub nsw i64 %62, %63
%76 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %75
%77 = load i8, i8* %76
%78 = icmp eq i8 %77, 66
%79 = select i1 %78, i8 65, i8 66
br label %80
80: ; preds = %74, %69
%81 = phi i8 [ 65, %69 ], [ %79, %74 ]
%82 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %62
store i8 %81, i8* %82
%83 = add nsw i64 %62, 1
br label %84
84: ; preds = %80, %61
%85 = phi i64 [ %62, %61 ], [ %83, %80 ]
%86 = phi i32 [ %30, %61 ], [ %59, %80 ]
%87 = icmp eq i32 %66, %30
br i1 %87, label %107, label %117
88: ; preds = %88, %42
%89 = phi i8 [ %37, %42 ], [ %102, %88 ]
%90 = phi i64 [ 2, %42 ], [ %104, %88 ]
%91 = phi i64 [ 0, %42 ], [ %105, %88 ]
%92 = icmp eq i8 %89, 66
%93 = select i1 %92, i8 65, i8 66
%94 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %90
store i8 %93, i8* %94
%95 = or i64 %90, 1
%96 = select i1 %92, i8 66, i8 65
%97 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %95
store i8 %96, i8* %97
%98 = add nuw nsw i64 %90, 2
%99 = select i1 %92, i8 65, i8 66
%100 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %98
store i8 %99, i8* %100
%101 = add nuw nsw i64 %90, 3
%102 = select i1 %92, i8 66, i8 65
%103 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %101
store i8 %102, i8* %103
%104 = add nuw nsw i64 %90, 4
%105 = add i64 %91, 4
%106 = icmp eq i64 %105, %43
br i1 %106, label %44, label %88
107: ; preds = %84, %145, %58
%108 = icmp slt i32 %33, 1000000
br i1 %108, label %109, label %152
109: ; preds = %107
%110 = load i32, i32* %3
%111 = load i32, i32* %4
%112 = sext i32 %33 to i64
%113 = sext i32 %110 to i64
%114 = sext i32 %111 to i64
%115 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %112
%116 = load i8, i8* %115
br label %155
117: ; preds = %84, %145
%118 = phi i64 [ %148, %145 ], [ %85, %84 ]
%119 = phi i32 [ %149, %145 ], [ %86, %84 ]
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %120
%122 = load i8, i8* %121
%123 = icmp eq i8 %122, 66
br i1 %123, label %130, label %124
124: ; preds = %117
%125 = sub nsw i64 %118, %63
%126 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %125
%127 = load i8, i8* %126
%128 = icmp eq i8 %127, 66
%129 = select i1 %128, i8 65, i8 66
br label %130
130: ; preds = %124, %117
%131 = phi i8 [ 65, %117 ], [ %129, %124 ]
%132 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %118
store i8 %131, i8* %132
%133 = add nsw i64 %118, 1
%134 = shl i64 %118, 32
%135 = ashr exact i64 %134, 32
%136 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %135
%137 = load i8, i8* %136
%138 = icmp eq i8 %137, 66
br i1 %138, label %145, label %139
139: ; preds = %130
%140 = sub nsw i64 %133, %63
%141 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %140
%142 = load i8, i8* %141
%143 = icmp eq i8 %142, 66
%144 = select i1 %143, i8 65, i8 66
br label %145
145: ; preds = %139, %130
%146 = phi i8 [ 65, %130 ], [ %144, %139 ]
%147 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %133
store i8 %146, i8* %147
%148 = add nsw i64 %118, 2
%149 = trunc i64 %133 to i32
%150 = trunc i64 %148 to i32
%151 = icmp eq i32 %33, %150
br i1 %151, label %107, label %117
152: ; preds = %171, %107
%153 = load i32, i32* %1
%154 = icmp sgt i32 %153, 0
br i1 %154, label %175, label %188
155: ; preds = %109, %171
%156 = phi i8 [ %116, %109 ], [ %172, %171 ]
%157 = phi i64 [ %112, %109 ], [ %158, %171 ]
%158 = add nsw i64 %157, 1
%159 = icmp eq i8 %156, 66
br i1 %159, label %171, label %160
160: ; preds = %155
%161 = sub nsw i64 %158, %113
%162 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %161
%163 = load i8, i8* %162
%164 = icmp eq i8 %163, 66
br i1 %164, label %171, label %165
165: ; preds = %160
%166 = sub nsw i64 %158, %114
%167 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %166
%168 = load i8, i8* %167
%169 = icmp eq i8 %168, 66
%170 = select i1 %169, i8 65, i8 66
br label %171
171: ; preds = %165, %155, %160
%172 = phi i8 [ 65, %160 ], [ 65, %155 ], [ %170, %165 ]
%173 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %158
store i8 %172, i8* %173
%174 = icmp eq i64 %158, 1000000
br i1 %174, label %152, label %155
175: ; preds = %152, %175
%176 = phi i64 [ %184, %175 ], [ 0, %152 ]
%177 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %176
%178 = load i32, i32* %177
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [1000001 x i8], [1000001 x i8]* %5, i64 0, i64 %179
%181 = load i8, i8* %180
%182 = sext i8 %181 to i32
%183 = call i32 @putchar(i32 %182)
%184 = add nuw nsw i64 %176, 1
%185 = load i32, i32* %1
%186 = sext i32 %185 to i64
%187 = icmp slt i64 %184, %186
br i1 %187, label %175, label %188
188: ; preds = %175, %152
%189 = call i32 @putchar(i32 10)
ret i32 0
}