program main
	implicit none
	integer N, i, ans
	read(*, *) N
	do i = 0, 6
		if(2**i <= N) then
			ans = 2**i
		end if
	end do
	write(*, *) ans
end program main
; 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"

@_QQcl.7822627538bc3c19c2e9be45830d05b4 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7085/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
__mlir_math_ipowi_i32.exit.thread:
  %0 = alloca i32, align 4
  %1 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.7822627538bc3c19c2e9be45830d05b4, i32 4)
  %2 = call i1 @_FortranAioInputInteger(ptr %1, ptr nonnull %0, i32 4)
  %3 = call i32 @_FortranAioEndIoStatement(ptr %1)
  %4 = load i32, ptr %0, align 4
  %.not19.1 = icmp slt i32 %4, 2
  %spec.select22.1 = select i1 %.not19.1, i32 1, i32 2
  %5 = lshr i32 2, 1
  %6 = mul i32 2, 2
  %.not.i.2.inv = icmp ugt i32 2, 1
  %7 = select i1 %.not.i.2.inv, i32 %6, i32 1
  %spec.select.i.2 = mul i32 %7, 1
  %.not.2 = icmp sgt i32 %spec.select.i.2, %4
  br i1 %.not.2, label %.lr.ph.i.3, label %.lr.ph.i11.2

.lr.ph.i11.2:                                     ; preds = %__mlir_math_ipowi_i32.exit.thread
  %8 = lshr i32 2, 1
  %9 = mul i32 2, 2
  %.not.i9.2.inv = icmp ugt i32 2, 1
  %10 = select i1 %.not.i9.2.inv, i32 %9, i32 1
  %spec.select.i10.2 = mul i32 %10, 1
  br label %.lr.ph.i.3

.lr.ph.i.3:                                       ; preds = %__mlir_math_ipowi_i32.exit.thread, %.lr.ph.i11.2
  %.1.2 = phi i32 [ %spec.select22.1, %__mlir_math_ipowi_i32.exit.thread ], [ %spec.select.i10.2, %.lr.ph.i11.2 ]
  %11 = lshr i32 3, 1
  %12 = mul i32 2, 2
  %.not.i.3.inv = icmp ugt i32 3, 1
  %13 = select i1 %.not.i.3.inv, i32 %12, i32 1
  %spec.select.i.3 = mul i32 %13, 2
  %.not.3 = icmp sgt i32 %spec.select.i.3, %4
  br i1 %.not.3, label %.lr.ph.i.preheader.4, label %.lr.ph.i11.3

.lr.ph.i11.3:                                     ; preds = %.lr.ph.i.3
  %14 = lshr i32 3, 1
  %15 = mul i32 2, 2
  %.not.i9.3.inv = icmp ugt i32 3, 1
  %16 = select i1 %.not.i9.3.inv, i32 %15, i32 1
  %spec.select.i10.3 = mul i32 %16, 2
  br label %.lr.ph.i.preheader.4

.lr.ph.i.preheader.4:                             ; preds = %.lr.ph.i11.3, %.lr.ph.i.3
  %.1.3 = phi i32 [ %.1.2, %.lr.ph.i.3 ], [ %spec.select.i10.3, %.lr.ph.i11.3 ]
  br label %.lr.ph.i.4

.lr.ph.i.4:                                       ; preds = %.lr.ph.i.4, %.lr.ph.i.preheader.4
  %spec.select4.i.4 = phi i32 [ %spec.select.i.4, %.lr.ph.i.4 ], [ 1, %.lr.ph.i.preheader.4 ]
  %17 = phi i32 [ %19, %.lr.ph.i.4 ], [ 4, %.lr.ph.i.preheader.4 ]
  %18 = phi i32 [ %20, %.lr.ph.i.4 ], [ 2, %.lr.ph.i.preheader.4 ]
  %19 = lshr i32 %17, 1
  %20 = mul i32 %18, %18
  %21 = and i32 %17, 2
  %.not.i.4 = icmp eq i32 %21, 0
  %22 = select i1 %.not.i.4, i32 1, i32 %20
  %spec.select.i.4 = mul i32 %22, %spec.select4.i.4
  %23 = icmp ult i32 %17, 4
  br i1 %23, label %__mlir_math_ipowi_i32.exit.4, label %.lr.ph.i.4

__mlir_math_ipowi_i32.exit.4:                     ; preds = %.lr.ph.i.4
  %.not.4 = icmp sgt i32 %spec.select.i.4, %4
  br i1 %.not.4, label %.lr.ph.i.preheader.5, label %.lr.ph.i11.4

.lr.ph.i11.4:                                     ; preds = %__mlir_math_ipowi_i32.exit.4, %.lr.ph.i11.4
  %spec.select4.i8.4 = phi i32 [ %spec.select.i10.4, %.lr.ph.i11.4 ], [ 1, %__mlir_math_ipowi_i32.exit.4 ]
  %24 = phi i32 [ %26, %.lr.ph.i11.4 ], [ 4, %__mlir_math_ipowi_i32.exit.4 ]
  %25 = phi i32 [ %27, %.lr.ph.i11.4 ], [ 2, %__mlir_math_ipowi_i32.exit.4 ]
  %26 = lshr i32 %24, 1
  %27 = mul i32 %25, %25
  %28 = and i32 %24, 2
  %.not.i9.4 = icmp eq i32 %28, 0
  %29 = select i1 %.not.i9.4, i32 1, i32 %27
  %spec.select.i10.4 = mul i32 %29, %spec.select4.i8.4
  %30 = icmp ult i32 %24, 4
  br i1 %30, label %.lr.ph.i.preheader.5, label %.lr.ph.i11.4

.lr.ph.i.preheader.5:                             ; preds = %.lr.ph.i11.4, %__mlir_math_ipowi_i32.exit.4
  %.1.4 = phi i32 [ %.1.3, %__mlir_math_ipowi_i32.exit.4 ], [ %spec.select.i10.4, %.lr.ph.i11.4 ]
  br label %.lr.ph.i.5

.lr.ph.i.5:                                       ; preds = %.lr.ph.i.5, %.lr.ph.i.preheader.5
  %spec.select4.i.5 = phi i32 [ %spec.select.i.5, %.lr.ph.i.5 ], [ 2, %.lr.ph.i.preheader.5 ]
  %31 = phi i32 [ %33, %.lr.ph.i.5 ], [ 5, %.lr.ph.i.preheader.5 ]
  %32 = phi i32 [ %34, %.lr.ph.i.5 ], [ 2, %.lr.ph.i.preheader.5 ]
  %33 = lshr i32 %31, 1
  %34 = mul i32 %32, %32
  %35 = and i32 %31, 2
  %.not.i.5 = icmp eq i32 %35, 0
  %36 = select i1 %.not.i.5, i32 1, i32 %34
  %spec.select.i.5 = mul i32 %36, %spec.select4.i.5
  %37 = icmp ult i32 %31, 4
  br i1 %37, label %__mlir_math_ipowi_i32.exit.5, label %.lr.ph.i.5

__mlir_math_ipowi_i32.exit.5:                     ; preds = %.lr.ph.i.5
  %.not.5 = icmp sgt i32 %spec.select.i.5, %4
  br i1 %.not.5, label %.lr.ph.i.preheader.6, label %.lr.ph.i11.5

.lr.ph.i11.5:                                     ; preds = %__mlir_math_ipowi_i32.exit.5, %.lr.ph.i11.5
  %spec.select4.i8.5 = phi i32 [ %spec.select.i10.5, %.lr.ph.i11.5 ], [ 2, %__mlir_math_ipowi_i32.exit.5 ]
  %38 = phi i32 [ %40, %.lr.ph.i11.5 ], [ 5, %__mlir_math_ipowi_i32.exit.5 ]
  %39 = phi i32 [ %41, %.lr.ph.i11.5 ], [ 2, %__mlir_math_ipowi_i32.exit.5 ]
  %40 = lshr i32 %38, 1
  %41 = mul i32 %39, %39
  %42 = and i32 %38, 2
  %.not.i9.5 = icmp eq i32 %42, 0
  %43 = select i1 %.not.i9.5, i32 1, i32 %41
  %spec.select.i10.5 = mul i32 %43, %spec.select4.i8.5
  %44 = icmp ult i32 %38, 4
  br i1 %44, label %.lr.ph.i.preheader.6, label %.lr.ph.i11.5

.lr.ph.i.preheader.6:                             ; preds = %.lr.ph.i11.5, %__mlir_math_ipowi_i32.exit.5
  %.1.5 = phi i32 [ %.1.4, %__mlir_math_ipowi_i32.exit.5 ], [ %spec.select.i10.5, %.lr.ph.i11.5 ]
  br label %.lr.ph.i.6

.lr.ph.i.6:                                       ; preds = %.lr.ph.i.6, %.lr.ph.i.preheader.6
  %spec.select4.i.6 = phi i32 [ %spec.select.i.6, %.lr.ph.i.6 ], [ 1, %.lr.ph.i.preheader.6 ]
  %45 = phi i32 [ %47, %.lr.ph.i.6 ], [ 6, %.lr.ph.i.preheader.6 ]
  %46 = phi i32 [ %48, %.lr.ph.i.6 ], [ 2, %.lr.ph.i.preheader.6 ]
  %47 = lshr i32 %45, 1
  %48 = mul i32 %46, %46
  %49 = and i32 %45, 2
  %.not.i.6 = icmp eq i32 %49, 0
  %50 = select i1 %.not.i.6, i32 1, i32 %48
  %spec.select.i.6 = mul i32 %50, %spec.select4.i.6
  %51 = icmp ult i32 %45, 4
  br i1 %51, label %__mlir_math_ipowi_i32.exit.6, label %.lr.ph.i.6

__mlir_math_ipowi_i32.exit.6:                     ; preds = %.lr.ph.i.6
  %.not.6 = icmp sgt i32 %spec.select.i.6, %4
  br i1 %.not.6, label %__mlir_math_ipowi_i32.exit12.6, label %.lr.ph.i11.6

.lr.ph.i11.6:                                     ; preds = %__mlir_math_ipowi_i32.exit.6, %.lr.ph.i11.6
  %spec.select4.i8.6 = phi i32 [ %spec.select.i10.6, %.lr.ph.i11.6 ], [ 1, %__mlir_math_ipowi_i32.exit.6 ]
  %52 = phi i32 [ %54, %.lr.ph.i11.6 ], [ 6, %__mlir_math_ipowi_i32.exit.6 ]
  %53 = phi i32 [ %55, %.lr.ph.i11.6 ], [ 2, %__mlir_math_ipowi_i32.exit.6 ]
  %54 = lshr i32 %52, 1
  %55 = mul i32 %53, %53
  %56 = and i32 %52, 2
  %.not.i9.6 = icmp eq i32 %56, 0
  %57 = select i1 %.not.i9.6, i32 1, i32 %55
  %spec.select.i10.6 = mul i32 %57, %spec.select4.i8.6
  %58 = icmp ult i32 %52, 4
  br i1 %58, label %__mlir_math_ipowi_i32.exit12.6, label %.lr.ph.i11.6

__mlir_math_ipowi_i32.exit12.6:                   ; preds = %.lr.ph.i11.6, %__mlir_math_ipowi_i32.exit.6
  %.1.6 = phi i32 [ %.1.5, %__mlir_math_ipowi_i32.exit.6 ], [ %spec.select.i10.6, %.lr.ph.i11.6 ]
  %59 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.7822627538bc3c19c2e9be45830d05b4, i32 10)
  %60 = call i1 @_FortranAioOutputInteger32(ptr %59, i32 %.1.6)
  %61 = call i32 @_FortranAioEndIoStatement(ptr %59)
  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}
