program k_th_k
  implicit none
  integer :: n, x(500) = 0, a(250000) = 0, i, j, m, c, k
  integer :: idx(250000) = 0, num(500) = 0
  read(*,*) n
  read(*,*) x(1:n)
  do i = 1, n
    a(x(i)) = i
    idx(x(i)) = i
  end do
  m = 0
  do i = 1, n*n
    if (idx(i) == 0) cycle
    c = 1
    do while (c < idx(i))
      m = m+1
      if (a(m) > 0) cycle
      a(m) = idx(i)
      c = c+1
    end do
  end do
  do i = 1, n*n
    if (idx(i) > 0 .and. idx(i) /= n) then
      k = idx(i)
      j = i
      exit
    end if
  end do
  c = 0
  do while (m < n*n)
    m = m+1
    if (a(m) > 0) cycle
    a(m) = k
    c = c+1
    if (c == n-k) then
      do i = j+1, n*n
        if (idx(i) > 0 .and. idx(i) /= n) then
          k = idx(i)
          j = i
          exit
        end if
      end do
      c = 0
    end if
  end do
  do i = 1, n*n
    num(a(i)) = num(a(i))+1
    if (num(a(i)) == a(i) .and. x(a(i)) /= i) then
      write(*,'(a)') "No"
      stop
    end if
  end do
  write(*,'(a)') "Yes"
  write(*,'(i0)',advance='no') a(1)
  do i = 2, n*n
    write(*,'(x,i0)',advance='no') a(i)
  end do
  write(*,*)
  stop
end program k_th_k
; 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"

@_QFEa = internal unnamed_addr global [250000 x i32] zeroinitializer
@_QFEidx = internal unnamed_addr global [250000 x i32] zeroinitializer
@_QFEnum = internal unnamed_addr global [500 x i32] zeroinitializer
@_QFEx = internal global [500 x i32] zeroinitializer
@_QQcl.042bb4b0a0562d9feb4eb153dbfcb937 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7617/source.f\00"
@_QQcl.286129 = linkonce constant [3 x i8] c"(a)"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQcl.28693029 = linkonce constant [4 x i8] c"(i0)"
@_QQcl.6E6F = linkonce constant [2 x i8] c"no"
@_QQcl.28782C693029 = linkonce constant [6 x i8] c"(x,i0)"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: noreturn
define void @_QQmain() local_unnamed_addr #0 {
  %1 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %2 = alloca i32, align 4
  %3 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 5)
  %4 = call i1 @_FortranAioInputInteger(ptr %3, ptr nonnull %2, i32 4)
  %5 = call i32 @_FortranAioEndIoStatement(ptr %3)
  %6 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 6)
  %7 = load i32, ptr %2, align 4, !tbaa !3
  %8 = call i32 @llvm.smax.i32(i32 %7, i32 0)
  %9 = zext i32 %8 to i64
  store ptr @_QFEx, ptr %1, align 8, !tbaa !7
  %.fca.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep, align 8, !tbaa !7
  %.fca.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep, align 8, !tbaa !7
  %.fca.3.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep, align 4, !tbaa !7
  %.fca.4.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep, align 1, !tbaa !7
  %.fca.5.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep, align 2, !tbaa !7
  %.fca.6.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep, align 1, !tbaa !7
  %.fca.7.0.0.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep, align 8, !tbaa !7
  %.fca.7.0.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 1
  store i64 %9, ptr %.fca.7.0.1.gep, align 8, !tbaa !7
  %.fca.7.0.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep, align 8, !tbaa !7
  %10 = call i1 @_FortranAioInputDescriptor(ptr %6, ptr nonnull %1)
  %11 = call i32 @_FortranAioEndIoStatement(ptr %6)
  %12 = load i32, ptr %2, align 4, !tbaa !3
  %13 = icmp sgt i32 %12, 0
  br i1 %13, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %0
  %14 = zext i32 %12 to i64
  %xtraiter = and i64 %14, 1
  %15 = icmp eq i32 %12, 1
  br i1 %15, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %14, 4294967294
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %16 = add nsw i64 %indvars.iv, -1
  %17 = getelementptr [500 x i32], ptr @_QFEx, i64 0, i64 %16
  %18 = load i32, ptr %17, align 4, !tbaa !3
  %19 = sext i32 %18 to i64
  %20 = add nsw i64 %19, -1
  %21 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %20
  %22 = trunc i64 %indvars.iv to i32
  store i32 %22, ptr %21, align 4, !tbaa !3
  %23 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %20
  store i32 %22, ptr %23, align 4, !tbaa !3
  %24 = getelementptr [500 x i32], ptr @_QFEx, i64 0, i64 %indvars.iv
  %25 = load i32, ptr %24, align 4, !tbaa !3
  %26 = sext i32 %25 to i64
  %27 = add nsw i64 %26, -1
  %28 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %27
  %29 = trunc i64 %indvars.iv to i32
  %30 = add i32 %29, 1
  store i32 %30, ptr %28, align 4, !tbaa !3
  %31 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %27
  store i32 %30, ptr %31, align 4, !tbaa !3
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.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
  %32 = add nsw i64 %indvars.iv.unr, -1
  %33 = getelementptr [500 x i32], ptr @_QFEx, i64 0, i64 %32
  %34 = load i32, ptr %33, align 4, !tbaa !3
  %35 = sext i32 %34 to i64
  %36 = add nsw i64 %35, -1
  %37 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %36
  %38 = trunc i64 %indvars.iv.unr to i32
  store i32 %38, ptr %37, align 4, !tbaa !3
  %39 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %36
  store i32 %38, ptr %39, align 4, !tbaa !3
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %0
  %40 = mul i32 %12, %12
  %41 = icmp sgt i32 %40, 0
  br i1 %41, label %.lr.ph79, label %.outer.outer.preheader

.preheader65:                                     ; preds = %.outer67.split
  br i1 %41, label %.lr.ph83.preheader, label %.outer.outer.preheader

.lr.ph83.preheader:                               ; preds = %.preheader65
  %42 = add nuw i32 %40, 1
  br label %.lr.ph83

.lr.ph79:                                         ; preds = %._crit_edge, %.outer67.split
  %.077 = phi i32 [ %.2, %.outer67.split ], [ 0, %._crit_edge ]
  %.04876 = phi i32 [ %70, %.outer67.split ], [ 1, %._crit_edge ]
  %43 = sext i32 %.04876 to i64
  %44 = add nsw i64 %43, -1
  %45 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %44
  %46 = load i32, ptr %45, align 4, !tbaa !3
  %47 = icmp sgt i32 %46, 1
  br i1 %47, label %.outer67.split.us.preheader, label %.outer67.split

.outer67.split.us.preheader:                      ; preds = %.lr.ph79
  %48 = add i32 %46, -1
  %xtraiter142 = and i32 %48, 1
  %49 = icmp eq i32 %46, 2
  br i1 %49, label %.outer67.split.loopexit.unr-lcssa, label %.outer67.split.us.preheader.new

.outer67.split.us.preheader.new:                  ; preds = %.outer67.split.us.preheader
  %unroll_iter145 = and i32 %48, -2
  br label %.outer67.split.us

.outer67.split.us:                                ; preds = %.split.us.1, %.outer67.split.us.preheader.new
  %.1.ph74 = phi i32 [ %.077, %.outer67.split.us.preheader.new ], [ %58, %.split.us.1 ]
  %niter146 = phi i32 [ 0, %.outer67.split.us.preheader.new ], [ %niter146.next.1, %.split.us.1 ]
  br label %50

50:                                               ; preds = %50, %.outer67.split.us
  %.1.us = phi i32 [ %51, %50 ], [ %.1.ph74, %.outer67.split.us ]
  %51 = add i32 %.1.us, 1
  %52 = sext i32 %51 to i64
  %53 = add nsw i64 %52, -1
  %54 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %53
  %55 = load i32, ptr %54, align 4, !tbaa !3
  %56 = icmp slt i32 %55, 1
  br i1 %56, label %.split.us, label %50

.split.us:                                        ; preds = %50
  store i32 %46, ptr %54, align 4, !tbaa !3
  br label %57

57:                                               ; preds = %57, %.split.us
  %.1.us.1 = phi i32 [ %58, %57 ], [ %51, %.split.us ]
  %58 = add i32 %.1.us.1, 1
  %59 = sext i32 %58 to i64
  %60 = add nsw i64 %59, -1
  %61 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %60
  %62 = load i32, ptr %61, align 4, !tbaa !3
  %63 = icmp slt i32 %62, 1
  br i1 %63, label %.split.us.1, label %57

.split.us.1:                                      ; preds = %57
  store i32 %46, ptr %61, align 4, !tbaa !3
  %niter146.next.1 = add i32 %niter146, 2
  %niter146.ncmp.1 = icmp eq i32 %niter146.next.1, %unroll_iter145
  br i1 %niter146.ncmp.1, label %.outer67.split.loopexit.unr-lcssa, label %.outer67.split.us

.outer67.split.loopexit.unr-lcssa:                ; preds = %.split.us.1, %.outer67.split.us.preheader
  %.lcssa141.lcssa.ph = phi i32 [ undef, %.outer67.split.us.preheader ], [ %58, %.split.us.1 ]
  %.1.ph74.unr = phi i32 [ %.077, %.outer67.split.us.preheader ], [ %58, %.split.us.1 ]
  %lcmp.mod143.not = icmp eq i32 %xtraiter142, 0
  br i1 %lcmp.mod143.not, label %.outer67.split, label %.outer67.split.us.epil

.outer67.split.us.epil:                           ; preds = %.outer67.split.loopexit.unr-lcssa, %.outer67.split.us.epil
  %.1.us.epil = phi i32 [ %64, %.outer67.split.us.epil ], [ %.1.ph74.unr, %.outer67.split.loopexit.unr-lcssa ]
  %64 = add i32 %.1.us.epil, 1
  %65 = sext i32 %64 to i64
  %66 = add nsw i64 %65, -1
  %67 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %66
  %68 = load i32, ptr %67, align 4, !tbaa !3
  %69 = icmp slt i32 %68, 1
  br i1 %69, label %.split.us.epil, label %.outer67.split.us.epil

.split.us.epil:                                   ; preds = %.outer67.split.us.epil
  store i32 %46, ptr %67, align 4, !tbaa !3
  br label %.outer67.split

.outer67.split:                                   ; preds = %.split.us.epil, %.outer67.split.loopexit.unr-lcssa, %.lr.ph79
  %.2 = phi i32 [ %.077, %.lr.ph79 ], [ %.lcssa141.lcssa.ph, %.outer67.split.loopexit.unr-lcssa ], [ %64, %.split.us.epil ]
  %70 = add nuw i32 %.04876, 1
  %exitcond112.not = icmp eq i32 %.04876, %40
  br i1 %exitcond112.not, label %.preheader65, label %.lr.ph79

.lr.ph83:                                         ; preds = %.lr.ph83.preheader, %78
  %.14982 = phi i32 [ %79, %78 ], [ 1, %.lr.ph83.preheader ]
  %71 = sext i32 %.14982 to i64
  %72 = add nsw i64 %71, -1
  %73 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !3
  %75 = icmp sgt i32 %74, 0
  %76 = icmp ne i32 %74, %12
  %77 = and i1 %75, %76
  br i1 %77, label %.outer.outer.preheader, label %78

78:                                               ; preds = %.lr.ph83
  %79 = add nuw i32 %.14982, 1
  %exitcond113.not = icmp eq i32 %.14982, %40
  br i1 %exitcond113.not, label %.outer.outer.preheader, label %.lr.ph83

.outer.outer.preheader:                           ; preds = %78, %.lr.ph83, %._crit_edge, %.preheader65
  %.146.ph.ph.ph132 = phi i32 [ 1, %._crit_edge ], [ 1, %.preheader65 ], [ %42, %78 ], [ %.14982, %.lr.ph83 ]
  %.143.ph.ph.ph133 = phi i32 [ undef, %._crit_edge ], [ undef, %.preheader65 ], [ %74, %.lr.ph83 ], [ %74, %78 ]
  %.3.ph.ph.ph = phi i32 [ 0, %._crit_edge ], [ %.2, %.preheader65 ], [ %.2, %.lr.ph83 ], [ %.2, %78 ]
  br label %.outer.outer.outer

.outer.outer.loopexit:                            ; preds = %103, %.lr.ph93
  %.146.ph.ph.ph = phi i32 [ %.25091, %.lr.ph93 ], [ %.146.ph.ph.ph134, %103 ]
  %.143.ph.ph.ph = phi i32 [ %99, %.lr.ph93 ], [ %.143.ph.ph.ph135, %103 ]
  br label %.outer.outer.outer

.outer.outer.outer:                               ; preds = %.outer.outer.preheader, %.outer.outer.loopexit
  %.146.ph.ph.ph134 = phi i32 [ %.146.ph.ph.ph132, %.outer.outer.preheader ], [ %.146.ph.ph.ph, %.outer.outer.loopexit ]
  %.143.ph.ph.ph135 = phi i32 [ %.143.ph.ph.ph133, %.outer.outer.preheader ], [ %.143.ph.ph.ph, %.outer.outer.loopexit ]
  %.3.ph.ph.ph136 = phi i32 [ %.3.ph.ph.ph, %.outer.outer.preheader ], [ %95, %.outer.outer.loopexit ]
  %80 = sub i32 %12, %.143.ph.ph.ph135
  %81 = sub i32 %40, %.146.ph.ph.ph134
  %82 = icmp sgt i32 %81, 0
  br label %.outer.outer

.outer.outer:                                     ; preds = %.outer.outer.outer, %93
  %.3.ph.ph = phi i32 [ %94, %93 ], [ %.3.ph.ph.ph136, %.outer.outer.outer ]
  br label %.outer

.outer:                                           ; preds = %.outer.outer, %89
  %.153.ph = phi i32 [ %91, %89 ], [ 0, %.outer.outer ]
  %.3.ph = phi i32 [ %90, %89 ], [ %.3.ph.ph, %.outer.outer ]
  %83 = sext i32 %.3.ph to i64
  %smax = call i32 @llvm.smax.i32(i32 %.3.ph, i32 %40)
  %wide.trip.count = sext i32 %smax to i64
  br label %84

84:                                               ; preds = %.outer, %85
  %indvars.iv114 = phi i64 [ %83, %.outer ], [ %indvars.iv.next115, %85 ]
  %exitcond117.not = icmp eq i64 %indvars.iv114, %wide.trip.count
  br i1 %exitcond117.not, label %.preheader, label %85

.preheader:                                       ; preds = %84
  br i1 %41, label %.lr.ph102, label %._crit_edge103

85:                                               ; preds = %84
  %indvars.iv.next115 = add nsw i64 %indvars.iv114, 1
  %86 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %indvars.iv114
  %87 = load i32, ptr %86, align 4, !tbaa !3
  %88 = icmp slt i32 %87, 1
  br i1 %88, label %89, label %84

89:                                               ; preds = %85
  %90 = trunc i64 %indvars.iv.next115 to i32
  store i32 %.143.ph.ph.ph135, ptr %86, align 4, !tbaa !3
  %91 = add i32 %.153.ph, 1
  %92 = icmp eq i32 %91, %80
  br i1 %92, label %93, label %.outer

93:                                               ; preds = %89
  %94 = trunc i64 %indvars.iv.next115 to i32
  br i1 %82, label %.lr.ph93.preheader, label %.outer.outer

.lr.ph93.preheader:                               ; preds = %93
  %95 = trunc i64 %indvars.iv.next115 to i32
  br label %.lr.ph93

.lr.ph93:                                         ; preds = %.lr.ph93.preheader, %103
  %.25091.in = phi i32 [ %.25091, %103 ], [ %.146.ph.ph.ph134, %.lr.ph93.preheader ]
  %.05690 = phi i32 [ %104, %103 ], [ %81, %.lr.ph93.preheader ]
  %.25091 = add i32 %.25091.in, 1
  %96 = sext i32 %.25091 to i64
  %97 = add nsw i64 %96, -1
  %98 = getelementptr [250000 x i32], ptr @_QFEidx, i64 0, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !3
  %100 = icmp sgt i32 %99, 0
  %101 = icmp ne i32 %99, %12
  %102 = and i1 %100, %101
  br i1 %102, label %.outer.outer.loopexit, label %103

103:                                              ; preds = %.lr.ph93
  %104 = add nsw i32 %.05690, -1
  %105 = icmp sgt i32 %.05690, 1
  br i1 %105, label %.lr.ph93, label %.outer.outer.loopexit

.lr.ph102:                                        ; preds = %.preheader, %125
  %.351101 = phi i32 [ %126, %125 ], [ 1, %.preheader ]
  %106 = sext i32 %.351101 to i64
  %107 = add nsw i64 %106, -1
  %108 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %107
  %109 = load i32, ptr %108, align 4, !tbaa !3
  %110 = sext i32 %109 to i64
  %111 = add nsw i64 %110, -1
  %112 = getelementptr [500 x i32], ptr @_QFEnum, i64 0, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !3
  %114 = add i32 %113, 1
  store i32 %114, ptr %112, align 4, !tbaa !3
  %115 = icmp eq i32 %114, %109
  %116 = getelementptr [500 x i32], ptr @_QFEx, i64 0, i64 %111
  %117 = load i32, ptr %116, align 4, !tbaa !3
  %118 = icmp ne i32 %117, %.351101
  %119 = and i1 %115, %118
  br i1 %119, label %120, label %125

120:                                              ; preds = %.lr.ph102
  %121 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 49)
  %122 = call i1 @_FortranAioOutputAscii(ptr %121, ptr nonnull @_QQcl.4E6F, i64 2)
  %123 = call i32 @_FortranAioEndIoStatement(ptr %121)
  %124 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

125:                                              ; preds = %.lr.ph102
  %126 = add nuw i32 %.351101, 1
  %exitcond118.not = icmp eq i32 %.351101, %40
  br i1 %exitcond118.not, label %._crit_edge103, label %.lr.ph102

._crit_edge103:                                   ; preds = %125, %.preheader
  %127 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 53)
  %128 = call i1 @_FortranAioOutputAscii(ptr %127, ptr nonnull @_QQcl.596573, i64 3)
  %129 = call i32 @_FortranAioEndIoStatement(ptr %127)
  %130 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 54)
  %131 = call i1 @_FortranAioSetAdvance(ptr %130, ptr nonnull @_QQcl.6E6F, i64 2)
  %132 = load i32, ptr @_QFEa, align 16, !tbaa !3
  %133 = call i1 @_FortranAioOutputInteger32(ptr %130, i32 %132)
  %134 = call i32 @_FortranAioEndIoStatement(ptr %130)
  %135 = load i32, ptr %2, align 4, !tbaa !3
  %136 = mul i32 %135, %135
  %137 = icmp sgt i32 %136, 1
  br i1 %137, label %.lr.ph105.preheader, label %._crit_edge106

.lr.ph105.preheader:                              ; preds = %._crit_edge103
  %138 = zext i32 %136 to i64
  br label %.lr.ph105

.lr.ph105:                                        ; preds = %.lr.ph105.preheader, %.lr.ph105
  %indvars.iv119 = phi i64 [ 2, %.lr.ph105.preheader ], [ %indvars.iv.next120, %.lr.ph105 ]
  %139 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28782C693029, i64 6, ptr null, i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 56)
  %140 = call i1 @_FortranAioSetAdvance(ptr %139, ptr nonnull @_QQcl.6E6F, i64 2)
  %141 = add nsw i64 %indvars.iv119, -1
  %142 = getelementptr [250000 x i32], ptr @_QFEa, i64 0, i64 %141
  %143 = load i32, ptr %142, align 4, !tbaa !3
  %144 = call i1 @_FortranAioOutputInteger32(ptr %139, i32 %143)
  %145 = call i32 @_FortranAioEndIoStatement(ptr %139)
  %indvars.iv.next120 = add nuw nsw i64 %indvars.iv119, 1
  %exitcond122.not = icmp eq i64 %indvars.iv119, %138
  br i1 %exitcond122.not, label %._crit_edge106, label %.lr.ph105

._crit_edge106:                                   ; preds = %.lr.ph105, %._crit_edge103
  %146 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.042bb4b0a0562d9feb4eb153dbfcb937, i32 58)
  %147 = call i32 @_FortranAioEndIoStatement(ptr %146)
  %148 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable
}

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 @_FortranAioInputDescriptor(ptr, 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

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

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

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

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

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

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