program fm
  implicit none
  integer::N
  integer::a,b,c
  character(2),allocatable,dimension(:)::S
  character,allocatable,dimension(:)::ans
  
  integer::i
  read*,N,a,b,c
  allocate(S(N+1))
  do i=1,N
    read*,S(i)
  end do
  S(N+1)="KK"
  allocate(ans(N))
  
  if(a+b+c==0)then
    print"(A)","No"
    stop
  endif
  if(a+b+c==1)then
    do i=1,N
      if(a+b==0.and.S(i)=="AB")then
        print"(A)","No"
        stop
      endif    
      if(a+c==0.and.S(i)=="AC")then
        print"(A)","No"
        stop
      endif
      if(b+c==0.and.S(i)=="BC")then
        print"(A)","No"
        stop
      endif
      if(S(i)=="AB")then
        if(a==0)then
          a=1;b=0
          ans(i)="A"
        else
          a=0;b=1
          ans(i)="B"
        endif
      endif
      if(S(i)=="AC")then
        if(a==0)then
          a=1;c=0
          ans(i)="A"
        else
          a=0;c=1
          ans(i)="C"
        endif
      endif
      if(S(i)=="BC")then
        if(b==0)then
          b=1;c=0
          ans(i)="B"
        else
          b=0;c=1
          ans(i)="C"
        endif
      endif
    end do
  else
    if(a+b==0.and.S(1)=="AB")then
      print"(A)","No"
      stop
    endif    
    if(a+c==0.and.S(1)=="AC")then
      print"(A)","No"
      stop
    endif
    if(b+c==0.and.S(1)=="BC")then
      print"(A)","No"
      stop
    endif
    do i=1,N
      if(S(i)=="AB")then
        if(a<b.or.(A+B+C==2.and.A*B==1.and.S(i+1)=="AC"))then
          a=a+1;b=b-1
          ans(i)="A"
        else
          a=a-1;b=b+1
          ans(i)="B"
        endif
      endif
      if(S(i)=="AC")then
        if(a<c.or.(A+B+C==2.and.A*C==1.and.S(i+1)=="AB"))then
          a=a+1;c=c-1
          ans(i)="A"
        else
          a=a-1;c=c+1
          ans(i)="C"
        endif
      endif
      if(S(i)=="BC")then
        if(b<c.or.(A+B+C==2.and.B*C==1.and.S(i+1)=="AB"))then
          b=b+1;c=c-1
          ans(i)="B"
        else
          b=b-1;c=c+1
          ans(i)="C"
        endif
      endif
    end do
  endif
  print"(a)","Yes"
  do i=1,N
    print"(A)",ans(i)
  end do
end program fm
; ModuleID = 'FIRModule'
source_filename = "FIRModule"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@_QFEans.0 = internal unnamed_addr global ptr null
@_QFEs.0 = internal unnamed_addr global ptr null
@_QQcl.0538ee8d539d592914e8c36c8dbeb802 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_1539/source.f\00"
@_QQcl.4B4B = linkonce local_unnamed_addr constant [2 x i8] c"KK"
@_QQcl.284129 = linkonce constant [3 x i8] c"(A)"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_QQcl.4142 = linkonce constant [2 x i8] c"AB"
@_QQcl.4143 = linkonce constant [2 x i8] c"AC"
@_QQcl.4243 = linkonce constant [2 x i8] c"BC"
@_QQcl.41 = linkonce local_unnamed_addr constant [1 x i8] c"A"
@_QQcl.42 = linkonce local_unnamed_addr constant [1 x i8] c"B"
@_QQcl.43 = linkonce local_unnamed_addr constant [1 x i8] c"C"
@_QQcl.286129 = linkonce constant [3 x i8] c"(a)"
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 9)
  %6 = call i1 @_FortranAioInputInteger(ptr %5, ptr nonnull %4, i32 4)
  %7 = call i1 @_FortranAioInputInteger(ptr %5, ptr nonnull %1, i32 4)
  %8 = call i1 @_FortranAioInputInteger(ptr %5, ptr nonnull %2, i32 4)
  %9 = call i1 @_FortranAioInputInteger(ptr %5, ptr nonnull %3, i32 4)
  %10 = call i32 @_FortranAioEndIoStatement(ptr %5)
  %11 = load i32, ptr %4, align 4, !tbaa !3
  %12 = add i32 %11, 1
  %13 = call i32 @llvm.smax.i32(i32 %12, i32 0)
  %14 = shl nuw i32 %13, 1
  %15 = zext i32 %14 to i64
  %16 = call ptr @malloc(i64 %15)
  store ptr %16, ptr @_QFEs.0, align 8, !tbaa !7
  %17 = icmp sgt i32 %11, 0
  br i1 %17, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %0
  %18 = zext i32 %11 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %19 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 12)
  %.unpack1061 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %20 = add nsw i64 %indvars.iv, -1
  %21 = getelementptr [2 x i8], ptr %.unpack1061, i64 %20
  %22 = call i1 @_FortranAioInputAscii(ptr %19, ptr %21, i64 2)
  %23 = call i32 @_FortranAioEndIoStatement(ptr %19)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, %18
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.unpack.pre = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %.pre = load i32, ptr %4, align 4, !tbaa !3
  %.pre1098 = add i32 %.pre, 1
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %0
  %.pre-phi = phi i32 [ %.pre1098, %._crit_edge.loopexit ], [ %12, %0 ]
  %.unpack = phi ptr [ %.unpack.pre, %._crit_edge.loopexit ], [ %16, %0 ]
  %24 = sext i32 %.pre-phi to i64
  %25 = add nsw i64 %24, -1
  %26 = getelementptr [2 x i8], ptr %.unpack, i64 %25
  %27 = load i16, ptr @_QQcl.4B4B, align 1
  store i16 %27, ptr %26, align 1
  %28 = load i32, ptr %4, align 4, !tbaa !3
  %29 = call i32 @llvm.smax.i32(i32 %28, i32 0)
  %30 = zext i32 %29 to i64
  %31 = call ptr @malloc(i64 %30)
  store ptr %31, ptr @_QFEans.0, align 8, !tbaa !7
  %32 = load i32, ptr %1, align 4, !tbaa !3
  %33 = load i32, ptr %2, align 4, !tbaa !3
  %34 = add i32 %33, %32
  %35 = load i32, ptr %3, align 4, !tbaa !3
  %36 = add i32 %34, %35
  switch i32 %36, label %117 [
    i32 0, label %39
    i32 1, label %.preheader
  ]

.preheader:                                       ; preds = %._crit_edge
  %37 = icmp sgt i32 %28, 0
  br i1 %37, label %.lr.ph1076, label %.loopexit

.lr.ph1076:                                       ; preds = %.preheader
  %.unpack1047 = load i8, ptr @_QQcl.42, align 1
  %.unpack1060 = load i8, ptr @_QQcl.41, align 1
  %.unpack1021 = load i8, ptr @_QQcl.43, align 1
  %38 = add nuw i32 %28, 1
  %wide.trip.count = zext i32 %38 to i64
  br label %44

39:                                               ; preds = %._crit_edge
  %40 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 18)
  %41 = call i1 @_FortranAioOutputAscii(ptr %40, ptr nonnull @_QQcl.4E6F, i64 2)
  %42 = call i32 @_FortranAioEndIoStatement(ptr %40)
  %43 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

44:                                               ; preds = %.lr.ph1076, %116
  %indvars.iv1084 = phi i64 [ 1, %.lr.ph1076 ], [ %indvars.iv.next1085, %116 ]
  %45 = load i32, ptr %1, align 4, !tbaa !3
  %46 = load i32, ptr %2, align 4, !tbaa !3
  %47 = sub i32 0, %46
  %48 = icmp eq i32 %45, %47
  %.unpack911 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %49 = add nsw i64 %indvars.iv1084, -1
  %50 = getelementptr [2 x i8], ptr %.unpack911, i64 %49
  %51 = call i32 @_FortranACharacterCompareScalar1(ptr %50, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %52 = icmp eq i32 %51, 0
  %53 = and i1 %48, %52
  br i1 %53, label %54, label %59

54:                                               ; preds = %44
  %55 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 24)
  %56 = call i1 @_FortranAioOutputAscii(ptr %55, ptr nonnull @_QQcl.4E6F, i64 2)
  %57 = call i32 @_FortranAioEndIoStatement(ptr %55)
  %58 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

59:                                               ; preds = %44
  %60 = load i32, ptr %1, align 4, !tbaa !3
  %61 = load i32, ptr %3, align 4, !tbaa !3
  %62 = sub i32 0, %61
  %63 = icmp eq i32 %60, %62
  %.unpack923 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %64 = add nsw i64 %indvars.iv1084, -1
  %65 = getelementptr [2 x i8], ptr %.unpack923, i64 %64
  %66 = call i32 @_FortranACharacterCompareScalar1(ptr %65, ptr nonnull @_QQcl.4143, i64 2, i64 2)
  %67 = icmp eq i32 %66, 0
  %68 = and i1 %63, %67
  br i1 %68, label %69, label %74

69:                                               ; preds = %59
  %70 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 28)
  %71 = call i1 @_FortranAioOutputAscii(ptr %70, ptr nonnull @_QQcl.4E6F, i64 2)
  %72 = call i32 @_FortranAioEndIoStatement(ptr %70)
  %73 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

74:                                               ; preds = %59
  %75 = load i32, ptr %2, align 4, !tbaa !3
  %76 = load i32, ptr %3, align 4, !tbaa !3
  %77 = sub i32 0, %76
  %78 = icmp eq i32 %75, %77
  %.unpack935 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %79 = add nsw i64 %indvars.iv1084, -1
  %80 = getelementptr [2 x i8], ptr %.unpack935, i64 %79
  %81 = call i32 @_FortranACharacterCompareScalar1(ptr %80, ptr nonnull @_QQcl.4243, i64 2, i64 2)
  %82 = icmp eq i32 %81, 0
  %83 = and i1 %78, %82
  br i1 %83, label %84, label %89

84:                                               ; preds = %74
  %85 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 32)
  %86 = call i1 @_FortranAioOutputAscii(ptr %85, ptr nonnull @_QQcl.4E6F, i64 2)
  %87 = call i32 @_FortranAioEndIoStatement(ptr %85)
  %88 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

89:                                               ; preds = %74
  %.unpack947 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %90 = add nsw i64 %indvars.iv1084, -1
  %91 = getelementptr [2 x i8], ptr %.unpack947, i64 %90
  %92 = call i32 @_FortranACharacterCompareScalar1(ptr %91, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %.sink.split, label %98

.sink.split:                                      ; preds = %89
  %94 = load i32, ptr %1, align 4, !tbaa !3
  %95 = icmp eq i32 %94, 0
  %. = zext i1 %95 to i32
  %not.1129 = xor i1 %95, true
  %.1123 = zext i1 %not.1129 to i32
  %.unpack1060..unpack1047 = select i1 %95, i8 %.unpack1060, i8 %.unpack1047
  store i32 %., ptr %1, align 4, !tbaa !3
  store i32 %.1123, ptr %2, align 4, !tbaa !3
  %.unpack1048 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %96 = add nsw i64 %indvars.iv1084, -1
  %97 = getelementptr [1 x i8], ptr %.unpack1048, i64 %96
  store i8 %.unpack1060..unpack1047, ptr %97, align 1, !tbaa !3
  br label %98

98:                                               ; preds = %.sink.split, %89
  %.unpack959 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %99 = add nsw i64 %indvars.iv1084, -1
  %100 = getelementptr [2 x i8], ptr %.unpack959, i64 %99
  %101 = call i32 @_FortranACharacterCompareScalar1(ptr %100, ptr nonnull @_QQcl.4143, i64 2, i64 2)
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %.sink.split1105, label %107

.sink.split1105:                                  ; preds = %98
  %103 = load i32, ptr %1, align 4, !tbaa !3
  %104 = icmp eq i32 %103, 0
  %.1124 = zext i1 %104 to i32
  %not.1128 = xor i1 %104, true
  %.1125 = zext i1 %not.1128 to i32
  %.unpack1060..unpack1021 = select i1 %104, i8 %.unpack1060, i8 %.unpack1021
  store i32 %.1124, ptr %1, align 4, !tbaa !3
  store i32 %.1125, ptr %3, align 4, !tbaa !3
  %.unpack1022 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %105 = add nsw i64 %indvars.iv1084, -1
  %106 = getelementptr [1 x i8], ptr %.unpack1022, i64 %105
  store i8 %.unpack1060..unpack1021, ptr %106, align 1, !tbaa !3
  br label %107

107:                                              ; preds = %.sink.split1105, %98
  %.unpack971 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %108 = add nsw i64 %indvars.iv1084, -1
  %109 = getelementptr [2 x i8], ptr %.unpack971, i64 %108
  %110 = call i32 @_FortranACharacterCompareScalar1(ptr %109, ptr nonnull @_QQcl.4243, i64 2, i64 2)
  %111 = icmp eq i32 %110, 0
  br i1 %111, label %.sink.split1108, label %116

.sink.split1108:                                  ; preds = %107
  %112 = load i32, ptr %2, align 4, !tbaa !3
  %113 = icmp eq i32 %112, 0
  %.1126 = zext i1 %113 to i32
  %not. = xor i1 %113, true
  %.1127 = zext i1 %not. to i32
  %.unpack1047..unpack1021 = select i1 %113, i8 %.unpack1047, i8 %.unpack1021
  store i32 %.1126, ptr %2, align 4, !tbaa !3
  store i32 %.1127, ptr %3, align 4, !tbaa !3
  %.unpack996 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %114 = add nsw i64 %indvars.iv1084, -1
  %115 = getelementptr [1 x i8], ptr %.unpack996, i64 %114
  store i8 %.unpack1047..unpack1021, ptr %115, align 1, !tbaa !3
  br label %116

116:                                              ; preds = %.sink.split1108, %107
  %indvars.iv.next1085 = add nuw nsw i64 %indvars.iv1084, 1
  %exitcond1087.not = icmp eq i64 %indvars.iv.next1085, %wide.trip.count
  br i1 %exitcond1087.not, label %.loopexit, label %44

117:                                              ; preds = %._crit_edge
  %118 = call i32 @_FortranACharacterCompareScalar1(ptr %.unpack, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %119 = or i32 %118, %34
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %121, label %126

121:                                              ; preds = %117
  %122 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 65)
  %123 = call i1 @_FortranAioOutputAscii(ptr %122, ptr nonnull @_QQcl.4E6F, i64 2)
  %124 = call i32 @_FortranAioEndIoStatement(ptr %122)
  %125 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

126:                                              ; preds = %117
  %127 = load i32, ptr %1, align 4, !tbaa !3
  %128 = load i32, ptr %3, align 4, !tbaa !3
  %129 = sub i32 0, %128
  %130 = icmp eq i32 %127, %129
  %.unpack725 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %131 = call i32 @_FortranACharacterCompareScalar1(ptr %.unpack725, ptr nonnull @_QQcl.4143, i64 2, i64 2)
  %132 = icmp eq i32 %131, 0
  %133 = and i1 %130, %132
  br i1 %133, label %134, label %139

134:                                              ; preds = %126
  %135 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 69)
  %136 = call i1 @_FortranAioOutputAscii(ptr %135, ptr nonnull @_QQcl.4E6F, i64 2)
  %137 = call i32 @_FortranAioEndIoStatement(ptr %135)
  %138 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

139:                                              ; preds = %126
  %140 = load i32, ptr %2, align 4, !tbaa !3
  %141 = load i32, ptr %3, align 4, !tbaa !3
  %142 = sub i32 0, %141
  %143 = icmp eq i32 %140, %142
  %.unpack737 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %144 = call i32 @_FortranACharacterCompareScalar1(ptr %.unpack737, ptr nonnull @_QQcl.4243, i64 2, i64 2)
  %145 = icmp eq i32 %144, 0
  %146 = and i1 %143, %145
  br i1 %146, label %147, label %152

147:                                              ; preds = %139
  %148 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 73)
  %149 = call i1 @_FortranAioOutputAscii(ptr %148, ptr nonnull @_QQcl.4E6F, i64 2)
  %150 = call i32 @_FortranAioEndIoStatement(ptr %148)
  %151 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

152:                                              ; preds = %139
  %153 = load i32, ptr %4, align 4, !tbaa !3
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %.lr.ph1078, label %.loopexit

.lr.ph1078:                                       ; preds = %152
  %155 = zext i32 %153 to i64
  %.unpack897 = load i8, ptr @_QQcl.42, align 1
  %.unpack910 = load i8, ptr @_QQcl.41, align 1
  %.unpack859 = load i8, ptr @_QQcl.43, align 1
  %156 = add nuw nsw i64 %155, 1
  br label %157

157:                                              ; preds = %.lr.ph1078, %264
  %indvars.iv1088 = phi i64 [ 1, %.lr.ph1078 ], [ %indvars.iv.next1089.pre-phi, %264 ]
  %.unpack761 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %158 = add i64 %indvars.iv1088, -1
  %159 = getelementptr [2 x i8], ptr %.unpack761, i64 %158
  %160 = call i32 @_FortranACharacterCompareScalar1(ptr %159, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %162, label %192

162:                                              ; preds = %157
  %163 = load i32, ptr %1, align 4, !tbaa !3
  %164 = load i32, ptr %2, align 4, !tbaa !3
  %165 = icmp slt i32 %163, %164
  %166 = add i32 %164, %163
  %167 = load i32, ptr %3, align 4, !tbaa !3
  %168 = add i32 %166, %167
  %169 = icmp eq i32 %168, 2
  %170 = mul i32 %164, %163
  %171 = icmp eq i32 %170, 1
  %172 = and i1 %171, %169
  %.unpack873 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %173 = shl i64 %indvars.iv1088, 32
  %sext1102 = add i64 %173, 4294967296
  %174 = ashr exact i64 %sext1102, 32
  %175 = add nsw i64 %174, -1
  %176 = getelementptr [2 x i8], ptr %.unpack873, i64 %175
  %177 = call i32 @_FortranACharacterCompareScalar1(ptr %176, ptr nonnull @_QQcl.4143, i64 2, i64 2)
  %178 = icmp eq i32 %177, 0
  %179 = and i1 %172, %178
  %180 = or i1 %165, %179
  %181 = load i32, ptr %1, align 4, !tbaa !3
  br i1 %180, label %182, label %186

182:                                              ; preds = %162
  %183 = add i32 %181, 1
  store i32 %183, ptr %1, align 4, !tbaa !3
  %184 = load i32, ptr %2, align 4, !tbaa !3
  %185 = add i32 %184, -1
  br label %.sink.split1110

186:                                              ; preds = %162
  %187 = add i32 %181, -1
  store i32 %187, ptr %1, align 4, !tbaa !3
  %188 = load i32, ptr %2, align 4, !tbaa !3
  %189 = add i32 %188, 1
  br label %.sink.split1110

.sink.split1110:                                  ; preds = %186, %182
  %storemerge1121 = phi i32 [ %189, %186 ], [ %185, %182 ]
  %.unpack910.sink = phi i8 [ %.unpack897, %186 ], [ %.unpack910, %182 ]
  store i32 %storemerge1121, ptr %2, align 4, !tbaa !3
  %.unpack898 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %190 = add i64 %indvars.iv1088, -1
  %191 = getelementptr [1 x i8], ptr %.unpack898, i64 %190
  store i8 %.unpack910.sink, ptr %191, align 1, !tbaa !3
  br label %192

192:                                              ; preds = %.sink.split1110, %157
  %.unpack773 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %193 = add i64 %indvars.iv1088, -1
  %194 = getelementptr [2 x i8], ptr %.unpack773, i64 %193
  %195 = call i32 @_FortranACharacterCompareScalar1(ptr %194, ptr nonnull @_QQcl.4143, i64 2, i64 2)
  %196 = icmp eq i32 %195, 0
  br i1 %196, label %197, label %227

197:                                              ; preds = %192
  %198 = load i32, ptr %1, align 4, !tbaa !3
  %199 = load i32, ptr %3, align 4, !tbaa !3
  %200 = icmp slt i32 %198, %199
  %201 = load i32, ptr %2, align 4, !tbaa !3
  %202 = add i32 %199, %198
  %203 = add i32 %202, %201
  %204 = icmp eq i32 %203, 2
  %205 = mul i32 %199, %198
  %206 = icmp eq i32 %205, 1
  %207 = and i1 %206, %204
  %.unpack835 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %208 = shl i64 %indvars.iv1088, 32
  %sext1101 = add i64 %208, 4294967296
  %209 = ashr exact i64 %sext1101, 32
  %210 = add nsw i64 %209, -1
  %211 = getelementptr [2 x i8], ptr %.unpack835, i64 %210
  %212 = call i32 @_FortranACharacterCompareScalar1(ptr %211, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %213 = icmp eq i32 %212, 0
  %214 = and i1 %207, %213
  %215 = or i1 %200, %214
  %216 = load i32, ptr %1, align 4, !tbaa !3
  br i1 %215, label %217, label %221

217:                                              ; preds = %197
  %218 = add i32 %216, 1
  store i32 %218, ptr %1, align 4, !tbaa !3
  %219 = load i32, ptr %3, align 4, !tbaa !3
  %220 = add i32 %219, -1
  br label %.sink.split1112

221:                                              ; preds = %197
  %222 = add i32 %216, -1
  store i32 %222, ptr %1, align 4, !tbaa !3
  %223 = load i32, ptr %3, align 4, !tbaa !3
  %224 = add i32 %223, 1
  br label %.sink.split1112

.sink.split1112:                                  ; preds = %221, %217
  %storemerge1120 = phi i32 [ %224, %221 ], [ %220, %217 ]
  %.unpack910.sink1113 = phi i8 [ %.unpack859, %221 ], [ %.unpack910, %217 ]
  store i32 %storemerge1120, ptr %3, align 4, !tbaa !3
  %.unpack860 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %225 = add i64 %indvars.iv1088, -1
  %226 = getelementptr [1 x i8], ptr %.unpack860, i64 %225
  store i8 %.unpack910.sink1113, ptr %226, align 1, !tbaa !3
  br label %227

227:                                              ; preds = %.sink.split1112, %192
  %.unpack785 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %228 = add i64 %indvars.iv1088, -1
  %229 = getelementptr [2 x i8], ptr %.unpack785, i64 %228
  %230 = call i32 @_FortranACharacterCompareScalar1(ptr %229, ptr nonnull @_QQcl.4243, i64 2, i64 2)
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %._crit_edge1099

._crit_edge1099:                                  ; preds = %227
  %.pre1100 = add nuw nsw i64 %indvars.iv1088, 1
  br label %264

232:                                              ; preds = %227
  %233 = load i32, ptr %2, align 4, !tbaa !3
  %234 = load i32, ptr %3, align 4, !tbaa !3
  %235 = icmp slt i32 %233, %234
  %236 = load i32, ptr %1, align 4, !tbaa !3
  %237 = add i32 %234, %233
  %238 = add i32 %237, %236
  %239 = icmp eq i32 %238, 2
  %240 = mul i32 %234, %233
  %241 = icmp eq i32 %240, 1
  %242 = and i1 %241, %239
  %.unpack797 = load ptr, ptr @_QFEs.0, align 8, !tbaa !7
  %243 = add nuw nsw i64 %indvars.iv1088, 1
  %sext = shl i64 %243, 32
  %244 = ashr exact i64 %sext, 32
  %245 = add nsw i64 %244, -1
  %246 = getelementptr [2 x i8], ptr %.unpack797, i64 %245
  %247 = call i32 @_FortranACharacterCompareScalar1(ptr %246, ptr nonnull @_QQcl.4142, i64 2, i64 2)
  %248 = icmp eq i32 %247, 0
  %249 = and i1 %242, %248
  %250 = or i1 %235, %249
  %251 = load i32, ptr %2, align 4, !tbaa !3
  br i1 %250, label %252, label %258

252:                                              ; preds = %232
  %253 = add i32 %251, 1
  store i32 %253, ptr %2, align 4, !tbaa !3
  %254 = load i32, ptr %3, align 4, !tbaa !3
  %255 = add i32 %254, -1
  store i32 %255, ptr %3, align 4, !tbaa !3
  %.unpack822 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %256 = add i64 %indvars.iv1088, -1
  %257 = getelementptr [1 x i8], ptr %.unpack822, i64 %256
  store i8 %.unpack897, ptr %257, align 1, !tbaa !3
  br label %264

258:                                              ; preds = %232
  %259 = add i32 %251, -1
  store i32 %259, ptr %2, align 4, !tbaa !3
  %260 = load i32, ptr %3, align 4, !tbaa !3
  %261 = add i32 %260, 1
  store i32 %261, ptr %3, align 4, !tbaa !3
  %.unpack809 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %262 = add i64 %indvars.iv1088, -1
  %263 = getelementptr [1 x i8], ptr %.unpack809, i64 %262
  store i8 %.unpack859, ptr %263, align 1, !tbaa !3
  br label %264

264:                                              ; preds = %._crit_edge1099, %252, %258
  %indvars.iv.next1089.pre-phi = phi i64 [ %.pre1100, %._crit_edge1099 ], [ %243, %252 ], [ %243, %258 ]
  %exitcond1091.not = icmp eq i64 %indvars.iv.next1089.pre-phi, %156
  br i1 %exitcond1091.not, label %.loopexit, label %157

.loopexit:                                        ; preds = %116, %264, %.preheader, %152
  %265 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 106)
  %266 = call i1 @_FortranAioOutputAscii(ptr %265, ptr nonnull @_QQcl.596573, i64 3)
  %267 = call i32 @_FortranAioEndIoStatement(ptr %265)
  %268 = load i32, ptr %4, align 4, !tbaa !3
  %269 = icmp sgt i32 %268, 0
  br i1 %269, label %.lr.ph1080.preheader, label %._crit_edge1081

.lr.ph1080.preheader:                             ; preds = %.loopexit
  %270 = zext i32 %268 to i64
  br label %.lr.ph1080

.lr.ph1080:                                       ; preds = %.lr.ph1080.preheader, %.lr.ph1080
  %indvars.iv1092 = phi i64 [ 1, %.lr.ph1080.preheader ], [ %indvars.iv.next1093, %.lr.ph1080 ]
  %271 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.0538ee8d539d592914e8c36c8dbeb802, i32 108)
  %.unpack749 = load ptr, ptr @_QFEans.0, align 8, !tbaa !7
  %272 = add nsw i64 %indvars.iv1092, -1
  %273 = getelementptr [1 x i8], ptr %.unpack749, i64 %272
  %274 = call i1 @_FortranAioOutputAscii(ptr %271, ptr %273, i64 1)
  %275 = call i32 @_FortranAioEndIoStatement(ptr %271)
  %indvars.iv.next1093 = add nuw nsw i64 %indvars.iv1092, 1
  %exitcond1095.not = icmp eq i64 %indvars.iv1092, %270
  br i1 %exitcond1095.not, label %._crit_edge1081, label %.lr.ph1080

._crit_edge1081:                                  ; preds = %.lr.ph1080, %.loopexit
  ret void
}

declare ptr @_FortranAioBeginExternalListInput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioInputInteger(ptr, ptr, i32) local_unnamed_addr

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

declare i1 @_FortranAioInputAscii(ptr, ptr, i64) local_unnamed_addr

declare ptr @_FortranAioBeginExternalFormattedOutput(ptr, i64, ptr, i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputAscii(ptr, ptr, i64) local_unnamed_addr

declare {} @_FortranAStopStatement(i32, i1, i1) local_unnamed_addr

declare i32 @_FortranACharacterCompareScalar1(ptr, ptr, i64, i64) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #1

attributes #0 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!llvm.module.flags = !{!0, !1, !2}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
!7 = !{!8, !8, i64 0}
!8 = !{!"descriptor member", !5, i64 0}
