program nn
  implicit none
  integer :: N,digi,i
  integer :: alle

  read(*,*) N

  digi=int(log(N*1.0)/log(10.0))+1
  alle=0
!  write(*,*) digi                                                              
  if(mod(digi,2).eq.0) then
     do i=1,digi/2
        alle=alle+9*100**(i-1)
!        write(*,*) alle                                                        
     enddo
  else
    do i=1,digi/2
        alle=alle+9*100**(i-1)
     enddo
     alle=alle+N-(10**(digi-1))+1
  endif

  write(*,'(i0)') int(alle)
end program nn
; 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.d8384ccde4021389af71a9e5b8cd1c54 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_3584/source.f\00"
@_QQcl.28693029 = linkonce constant [4 x i8] c"(i0)"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.d8384ccde4021389af71a9e5b8cd1c54, i32 6)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 4)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = load i32, ptr %1, align 4, !tbaa !3
  %6 = sitofp i32 %5 to float
  %7 = call contract float @llvm.log.f32(float %6)
  %8 = fdiv contract float %7, 0x40026BB1C0000000
  %9 = fptosi float %8 to i32
  %10 = add i32 %9, 1
  %11 = and i32 %10, 1
  %12 = icmp eq i32 %11, 0
  %13 = icmp sgt i32 %10, 1
  br i1 %12, label %14, label %36

14:                                               ; preds = %0
  br i1 %13, label %.lr.ph33.preheader, label %.loopexit

.lr.ph33.preheader:                               ; preds = %14
  %15 = lshr i32 %10, 1
  %16 = zext i32 %15 to i64
  br label %.lr.ph33

.lr.ph33:                                         ; preds = %.lr.ph33.preheader, %__mlir_math_ipowi_i32.exit
  %17 = phi i64 [ %34, %__mlir_math_ipowi_i32.exit ], [ %16, %.lr.ph33.preheader ]
  %18 = phi i32 [ %33, %__mlir_math_ipowi_i32.exit ], [ 1, %.lr.ph33.preheader ]
  %.031 = phi i32 [ %32, %__mlir_math_ipowi_i32.exit ], [ 0, %.lr.ph33.preheader ]
  %19 = add nsw i32 %18, -1
  %20 = icmp eq i32 %19, 0
  br i1 %20, label %__mlir_math_ipowi_i32.exit, label %.preheader.i

.preheader.i:                                     ; preds = %.lr.ph33
  %21 = and i32 %19, 1
  %.not3.i = icmp eq i32 %21, 0
  %22 = select i1 %.not3.i, i32 1, i32 100
  %23 = icmp eq i32 %19, 1
  br i1 %23, label %__mlir_math_ipowi_i32.exit, label %.lr.ph.i

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

__mlir_math_ipowi_i32.exit:                       ; preds = %.lr.ph.i, %.lr.ph33, %.preheader.i
  %common.ret.op.i = phi i32 [ 1, %.lr.ph33 ], [ %22, %.preheader.i ], [ %spec.select.i, %.lr.ph.i ]
  %31 = mul i32 %common.ret.op.i, 9
  %32 = add i32 %31, %.031
  %33 = add nuw nsw i32 %18, 1
  %34 = add nsw i64 %17, -1
  %35 = icmp sgt i64 %17, 1
  br i1 %35, label %.lr.ph33, label %.loopexit

36:                                               ; preds = %0
  br i1 %13, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %36
  %37 = lshr i32 %10, 1
  %38 = zext i32 %37 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %__mlir_math_ipowi_i32.exit21
  %39 = phi i64 [ %56, %__mlir_math_ipowi_i32.exit21 ], [ %38, %.lr.ph.preheader ]
  %40 = phi i32 [ %55, %__mlir_math_ipowi_i32.exit21 ], [ 1, %.lr.ph.preheader ]
  %.130 = phi i32 [ %54, %__mlir_math_ipowi_i32.exit21 ], [ 0, %.lr.ph.preheader ]
  %41 = add nsw i32 %40, -1
  %42 = icmp eq i32 %41, 0
  br i1 %42, label %__mlir_math_ipowi_i32.exit21, label %.preheader.i16

.preheader.i16:                                   ; preds = %.lr.ph
  %43 = and i32 %41, 1
  %.not3.i15 = icmp eq i32 %43, 0
  %44 = select i1 %.not3.i15, i32 1, i32 100
  %45 = icmp eq i32 %41, 1
  br i1 %45, label %__mlir_math_ipowi_i32.exit21, label %.lr.ph.i20

.lr.ph.i20:                                       ; preds = %.preheader.i16, %.lr.ph.i20
  %spec.select4.i17 = phi i32 [ %spec.select.i19, %.lr.ph.i20 ], [ %44, %.preheader.i16 ]
  %46 = phi i32 [ %48, %.lr.ph.i20 ], [ %41, %.preheader.i16 ]
  %47 = phi i32 [ %49, %.lr.ph.i20 ], [ 100, %.preheader.i16 ]
  %48 = lshr i32 %46, 1
  %49 = mul i32 %47, %47
  %50 = and i32 %46, 2
  %.not.i18 = icmp eq i32 %50, 0
  %51 = select i1 %.not.i18, i32 1, i32 %49
  %spec.select.i19 = mul i32 %51, %spec.select4.i17
  %52 = icmp ult i32 %46, 4
  br i1 %52, label %__mlir_math_ipowi_i32.exit21, label %.lr.ph.i20

__mlir_math_ipowi_i32.exit21:                     ; preds = %.lr.ph.i20, %.lr.ph, %.preheader.i16
  %common.ret.op.i14 = phi i32 [ 1, %.lr.ph ], [ %44, %.preheader.i16 ], [ %spec.select.i19, %.lr.ph.i20 ]
  %53 = mul i32 %common.ret.op.i14, 9
  %54 = add i32 %53, %.130
  %55 = add nuw nsw i32 %40, 1
  %56 = add nsw i64 %39, -1
  %57 = icmp sgt i64 %39, 1
  br i1 %57, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %__mlir_math_ipowi_i32.exit21, %36
  %.1.lcssa = phi i32 [ 0, %36 ], [ %54, %__mlir_math_ipowi_i32.exit21 ]
  %58 = icmp eq i32 %9, 0
  br i1 %58, label %__mlir_math_ipowi_i32.exit29, label %59

59:                                               ; preds = %._crit_edge
  %60 = icmp slt i32 %9, 1
  br i1 %60, label %__mlir_math_ipowi_i32.exit29, label %.preheader.i24

.preheader.i24:                                   ; preds = %59
  %61 = and i32 %9, 1
  %.not3.i23 = icmp eq i32 %61, 0
  %62 = select i1 %.not3.i23, i32 1, i32 10
  %63 = icmp eq i32 %9, 1
  br i1 %63, label %__mlir_math_ipowi_i32.exit29, label %.lr.ph.i28

.lr.ph.i28:                                       ; preds = %.preheader.i24, %.lr.ph.i28
  %spec.select4.i25 = phi i32 [ %spec.select.i27, %.lr.ph.i28 ], [ %62, %.preheader.i24 ]
  %64 = phi i32 [ %66, %.lr.ph.i28 ], [ %9, %.preheader.i24 ]
  %65 = phi i32 [ %67, %.lr.ph.i28 ], [ 10, %.preheader.i24 ]
  %66 = lshr i32 %64, 1
  %67 = mul i32 %65, %65
  %68 = and i32 %64, 2
  %.not.i26 = icmp eq i32 %68, 0
  %69 = select i1 %.not.i26, i32 1, i32 %67
  %spec.select.i27 = mul i32 %69, %spec.select4.i25
  %70 = icmp ult i32 %64, 4
  br i1 %70, label %__mlir_math_ipowi_i32.exit29, label %.lr.ph.i28

__mlir_math_ipowi_i32.exit29:                     ; preds = %.lr.ph.i28, %59, %._crit_edge, %.preheader.i24
  %common.ret.op.i22 = phi i32 [ 1, %._crit_edge ], [ %62, %.preheader.i24 ], [ 0, %59 ], [ %spec.select.i27, %.lr.ph.i28 ]
  %71 = add i32 %5, 1
  %72 = add i32 %71, %.1.lcssa
  %73 = sub i32 %72, %common.ret.op.i22
  br label %.loopexit

.loopexit:                                        ; preds = %__mlir_math_ipowi_i32.exit, %14, %__mlir_math_ipowi_i32.exit29
  %.2 = phi i32 [ %73, %__mlir_math_ipowi_i32.exit29 ], [ 0, %14 ], [ %32, %__mlir_math_ipowi_i32.exit ]
  %74 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.d8384ccde4021389af71a9e5b8cd1c54, i32 23)
  %75 = call i1 @_FortranAioOutputInteger32(ptr %74, i32 %.2)
  %76 = call i32 @_FortranAioEndIoStatement(ptr %74)
  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 @_FortranAioBeginExternalFormattedOutput(ptr, i64, ptr, i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.log.f32(float) #0

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