program ABC058B
    implicit none
    integer(8)::i
    character(50)::O,E
    character(100)::L
    read(5,*)O,E

    do i=1,len_trim(O)+len_trim(E)
        if(mod(i,2)==1)then
            L(i:i)=O(i/2+1:i/2+1)
        else
            L(i:i)=E(i/2:i/2)
        end if
    end do

    print'(A)',L(1:len_trim(O)+len_trim(E))
end program ABC058B
; 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"

@_QFEe = internal global [50 x i8] undef
@_QFEl = internal global [100 x i8] undef
@_QFEo = internal global [50 x i8] undef
@_QQcl.ba03507064a7be33282a9a4c635cf58e = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7394/source.f\00"
@_QQcl.284129 = linkonce constant [3 x i8] c"(A)"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
  %1 = tail call ptr @_FortranAioBeginExternalListInput(i32 5, ptr nonnull @_QQcl.ba03507064a7be33282a9a4c635cf58e, i32 6)
  %2 = tail call i1 @_FortranAioInputAscii(ptr %1, ptr nonnull @_QFEo, i64 50)
  %3 = tail call i1 @_FortranAioInputAscii(ptr %1, ptr nonnull @_QFEe, i64 50)
  %4 = tail call i32 @_FortranAioEndIoStatement(ptr %1)
  br label %5

5:                                                ; preds = %0, %5
  %6 = phi i64 [ 49, %0 ], [ %10, %5 ]
  %7 = getelementptr [50 x [1 x i8]], ptr @_QFEo, i64 0, i64 %6
  %8 = load i8, ptr %7, align 1, !tbaa !3
  %9 = icmp eq i8 %8, 32
  %10 = add nsw i64 %6, -1
  %11 = icmp ne i64 %6, 0
  %12 = and i1 %9, %11
  br i1 %12, label %5, label %13

13:                                               ; preds = %5
  %14 = add nuw i64 %6, 1
  br label %15

15:                                               ; preds = %13, %15
  %16 = phi i64 [ 49, %13 ], [ %20, %15 ]
  %17 = getelementptr [50 x [1 x i8]], ptr @_QFEe, i64 0, i64 %16
  %18 = load i8, ptr %17, align 1, !tbaa !3
  %19 = icmp eq i8 %18, 32
  %20 = add nsw i64 %16, -1
  %21 = icmp ne i64 %16, 0
  %22 = and i1 %19, %21
  br i1 %22, label %15, label %23

23:                                               ; preds = %15
  %24 = select i1 %9, i64 0, i64 %14
  %25 = add nuw i64 %16, 1
  %26 = select i1 %19, i64 0, i64 %25
  %27 = add i64 %26, %24
  %28 = trunc i64 %27 to i32
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %23
  %30 = and i64 %27, 4294967295
  %xtraiter = and i64 %27, 1
  %31 = icmp eq i64 %30, 1
  br i1 %31, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = sub nsw i64 %30, %xtraiter
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %32 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %42, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %.udiv25 = lshr i64 %32, 1
  %33 = getelementptr [50 x [1 x i8]], ptr @_QFEo, i64 0, i64 %.udiv25
  %34 = add nsw i64 %32, -1
  %35 = getelementptr [100 x [1 x i8]], ptr @_QFEl, i64 0, i64 %34
  %36 = load i8, ptr %33, align 1
  store i8 %36, ptr %35, align 1
  %37 = add nuw nsw i64 %32, 1
  %.udiv25.1 = lshr i64 %37, 1
  %38 = add nsw i64 %.udiv25.1, -1
  %39 = getelementptr [50 x [1 x i8]], ptr @_QFEe, i64 0, i64 %38
  %40 = getelementptr [100 x [1 x i8]], ptr @_QFEl, i64 0, i64 %32
  %41 = load i8, ptr %39, align 1
  store i8 %41, ptr %40, align 1
  %42 = add nuw nsw i64 %32, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.unr49 = phi i64 [ 1, %.lr.ph.preheader ], [ %42, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %43 = and i64 %.unr49, 1
  %.not.epil = icmp eq i64 %43, 0
  %.udiv25.epil = lshr i64 %.unr49, 1
  %44 = add nsw i64 %.udiv25.epil, -1
  %45 = getelementptr [50 x [1 x i8]], ptr @_QFEe, i64 0, i64 %44
  %46 = getelementptr [50 x [1 x i8]], ptr @_QFEo, i64 0, i64 %.udiv25.epil
  %.sink34.epil = select i1 %.not.epil, ptr %45, ptr %46
  %47 = add nsw i64 %.unr49, -1
  %48 = getelementptr [100 x [1 x i8]], ptr @_QFEl, i64 0, i64 %47
  %49 = load i8, ptr %.sink34.epil, align 1
  store i8 %49, ptr %48, align 1
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %23
  %50 = tail call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.284129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.ba03507064a7be33282a9a4c635cf58e, i32 16)
  br label %51

51:                                               ; preds = %._crit_edge, %51
  %52 = phi i64 [ 49, %._crit_edge ], [ %56, %51 ]
  %53 = getelementptr [50 x [1 x i8]], ptr @_QFEo, i64 0, i64 %52
  %54 = load i8, ptr %53, align 1, !tbaa !3
  %55 = icmp eq i8 %54, 32
  %56 = add nsw i64 %52, -1
  %57 = icmp ne i64 %52, 0
  %58 = and i1 %55, %57
  br i1 %58, label %51, label %.preheader

.preheader:                                       ; preds = %51, %.preheader
  %59 = phi i64 [ %63, %.preheader ], [ 49, %51 ]
  %60 = getelementptr [50 x [1 x i8]], ptr @_QFEe, i64 0, i64 %59
  %61 = load i8, ptr %60, align 1, !tbaa !3
  %62 = icmp eq i8 %61, 32
  %63 = add nsw i64 %59, -1
  %64 = icmp ne i64 %59, 0
  %65 = and i1 %62, %64
  br i1 %65, label %.preheader, label %66

66:                                               ; preds = %.preheader
  %67 = add i64 %52, 1
  %68 = select i1 %55, i64 0, i64 %67
  %69 = add nuw i64 %59, 1
  %70 = select i1 %62, i64 0, i64 %69
  %71 = add i64 %70, %68
  %sext10 = shl i64 %71, 32
  %72 = ashr exact i64 %sext10, 32
  %73 = tail call i64 @llvm.smax.i64(i64 %72, i64 0)
  %74 = tail call i1 @_FortranAioOutputAscii(ptr %50, ptr nonnull @_QFEl, i64 %73)
  %75 = tail call i32 @_FortranAioEndIoStatement(ptr %50)
  ret void
}

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

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

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

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

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

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

attributes #0 = { 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"}
