program abc
	implicit none
	integer :: n
	integer :: an(32)=1 

	an(4) = 2
    an(6) = 2
    an(8) = 5
    an(9) = 2
    an(10) = 2
    an(12) = 5
    an(14) = 2
    an(16) = 14
    an(18) = 5
    an(20) = 5
    an(21) = 2
	an(22) = 2
    an(24) = 15
    an(25) = 2
    an(26) = 2
    an(27) = 5
    an(28) = 4
    an(30) = 4
    an(32) = 51
    
	read(*,*) n
	
	write(*,*) an(n)
    
end program abc
; 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"

@_QFEan = internal unnamed_addr global [32 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1]
@_QQcl.3b5bd2a9ac5269fcec2a3b38e3c2c896 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_2097/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 3), align 4, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 5), align 4, !tbaa !3
  store i32 5, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 7), align 4, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 8), align 16, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 9), align 4, !tbaa !3
  store i32 5, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 11), align 4, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 13), align 4, !tbaa !3
  store i32 14, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 15), align 4, !tbaa !3
  store i32 5, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 17), align 4, !tbaa !3
  store i32 5, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 19), align 4, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 20), align 16, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 21), align 4, !tbaa !3
  store i32 15, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 23), align 4, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 24), align 16, !tbaa !3
  store i32 2, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 25), align 4, !tbaa !3
  store i32 5, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 26), align 8, !tbaa !3
  store i32 4, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 27), align 4, !tbaa !3
  store i32 4, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 29), align 4, !tbaa !3
  store i32 51, ptr getelementptr inbounds ([32 x i32], ptr @_QFEan, i64 0, i64 31), align 4, !tbaa !3
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.3b5bd2a9ac5269fcec2a3b38e3c2c896, i32 26)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 4)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.3b5bd2a9ac5269fcec2a3b38e3c2c896, i32 28)
  %6 = load i32, ptr %1, align 4, !tbaa !3
  %7 = sext i32 %6 to i64
  %8 = add nsw i64 %7, -1
  %9 = getelementptr [32 x i32], ptr @_QFEan, i64 0, i64 %8
  %10 = load i32, ptr %9, align 4, !tbaa !3
  %11 = call i1 @_FortranAioOutputInteger32(ptr %5, i32 %10)
  %12 = call i32 @_FortranAioEndIoStatement(ptr %5)
  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 ptr @_FortranAioBeginExternalListOutput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

!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"}
