program main
  implicit none
  integer :: cnt(26), i, j
  character(100) :: w
  read (*, *) w
  cnt(:) = 0
  do i = 1, len_trim(w)
    j = iachar(w(i:i)) - iachar("a") + 1
    cnt(j) = cnt(j) + 1
  end do
  if (sum(mod(cnt, 2)) == 0) then
    write (*, "(a)") "Yes"
  else
    write (*, "(a)") "No"
  end if
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"

@_QFEcnt = internal unnamed_addr global [26 x i32] undef
@_QFEw = internal global [100 x i8] undef
@_QQcl.2eed36b14226c5f2b29504ce965114d7 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7922/source.f\00"
@_QQcl.286129 = linkonce constant [3 x i8] c"(a)"
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
.preheader.preheader:
  %0 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.2eed36b14226c5f2b29504ce965114d7, i32 5)
  %1 = tail call i1 @_FortranAioInputAscii(ptr %0, ptr nonnull @_QFEw, i64 100)
  %2 = tail call i32 @_FortranAioEndIoStatement(ptr %0)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(104) @_QFEcnt, i8 0, i64 104, i1 false), !tbaa !3
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %.preheader
  %3 = phi i64 [ %7, %.preheader ], [ 99, %.preheader.preheader ]
  %4 = getelementptr [100 x [1 x i8]], ptr @_QFEw, i64 0, i64 %3
  %5 = load i8, ptr %4, align 1, !tbaa !3
  %6 = icmp eq i8 %5, 32
  %7 = add nsw i64 %3, -1
  %8 = icmp ne i64 %3, 0
  %9 = and i1 %6, %8
  br i1 %9, label %.preheader, label %10

10:                                               ; preds = %.preheader
  %11 = shl i64 %3, 32
  %sext = add i64 %11, 4294967296
  %12 = ashr exact i64 %sext, 32
  %spec.select = select i1 %6, i64 0, i64 %12
  %13 = icmp sgt i64 %spec.select, 0
  br i1 %13, label %select.unfold.preheader, label %select.unfold._crit_edge

select.unfold.preheader:                          ; preds = %10
  %xtraiter = and i64 %spec.select, 1
  %14 = icmp eq i64 %spec.select, 1
  br i1 %14, label %select.unfold._crit_edge.loopexit.unr-lcssa, label %select.unfold.preheader.new

select.unfold.preheader.new:                      ; preds = %select.unfold.preheader
  %unroll_iter = and i64 %spec.select, -2
  br label %select.unfold

select.unfold:                                    ; preds = %select.unfold, %select.unfold.preheader.new
  %indvars.iv = phi i64 [ 1, %select.unfold.preheader.new ], [ %indvars.iv.next.1, %select.unfold ]
  %niter = phi i64 [ 0, %select.unfold.preheader.new ], [ %niter.next.1, %select.unfold ]
  %15 = add nsw i64 %indvars.iv, -1
  %16 = getelementptr [100 x [1 x i8]], ptr @_QFEw, i64 0, i64 %15
  %.unpack = load i8, ptr %16, align 1, !tbaa !3
  %17 = zext i8 %.unpack to i64
  %18 = add nsw i64 %17, -97
  %19 = getelementptr [26 x i32], ptr @_QFEcnt, i64 0, i64 %18
  %20 = load i32, ptr %19, align 4, !tbaa !3
  %21 = add i32 %20, 1
  store i32 %21, ptr %19, align 4, !tbaa !3
  %22 = getelementptr [100 x [1 x i8]], ptr @_QFEw, i64 0, i64 %indvars.iv
  %.unpack.1 = load i8, ptr %22, align 1, !tbaa !3
  %23 = zext i8 %.unpack.1 to i64
  %24 = add nsw i64 %23, -97
  %25 = getelementptr [26 x i32], ptr @_QFEcnt, i64 0, i64 %24
  %26 = load i32, ptr %25, align 4, !tbaa !3
  %27 = add i32 %26, 1
  store i32 %27, ptr %25, 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 %select.unfold._crit_edge.loopexit.unr-lcssa.loopexit, label %select.unfold

select.unfold._crit_edge.loopexit.unr-lcssa.loopexit: ; preds = %select.unfold
  %28 = add nuw nsw i64 %indvars.iv, 1
  br label %select.unfold._crit_edge.loopexit.unr-lcssa

select.unfold._crit_edge.loopexit.unr-lcssa:      ; preds = %select.unfold._crit_edge.loopexit.unr-lcssa.loopexit, %select.unfold.preheader
  %indvars.iv.unr = phi i64 [ 0, %select.unfold.preheader ], [ %28, %select.unfold._crit_edge.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %select.unfold._crit_edge.loopexit, label %select.unfold.epil

select.unfold.epil:                               ; preds = %select.unfold._crit_edge.loopexit.unr-lcssa
  %29 = getelementptr [100 x [1 x i8]], ptr @_QFEw, i64 0, i64 %indvars.iv.unr
  %.unpack.epil = load i8, ptr %29, align 1, !tbaa !3
  %30 = zext i8 %.unpack.epil to i64
  %31 = add nsw i64 %30, -97
  %32 = getelementptr [26 x i32], ptr @_QFEcnt, i64 0, i64 %31
  %33 = load i32, ptr %32, align 4, !tbaa !3
  %34 = add i32 %33, 1
  store i32 %34, ptr %32, align 4, !tbaa !3
  br label %select.unfold._crit_edge.loopexit

select.unfold._crit_edge.loopexit:                ; preds = %select.unfold._crit_edge.loopexit.unr-lcssa, %select.unfold.epil
  %.pre = load i32, ptr @_QFEcnt, align 16, !tbaa !3
  %.pre12 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 1), align 4, !tbaa !3
  %.pre13 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 2), align 8, !tbaa !3
  %.pre14 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 3), align 4, !tbaa !3
  %.pre15 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 4), align 16, !tbaa !3
  %.pre16 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 5), align 4, !tbaa !3
  %.pre17 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 6), align 8, !tbaa !3
  %.pre18 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 7), align 4, !tbaa !3
  %.pre19 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 8), align 16, !tbaa !3
  %.pre20 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 9), align 4, !tbaa !3
  %.pre21 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 10), align 8, !tbaa !3
  %.pre22 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 11), align 4, !tbaa !3
  %.pre23 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 12), align 16, !tbaa !3
  %.pre24 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 13), align 4, !tbaa !3
  %.pre25 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 14), align 8, !tbaa !3
  %.pre26 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 15), align 4, !tbaa !3
  %.pre27 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 16), align 16, !tbaa !3
  %.pre28 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 17), align 4, !tbaa !3
  %.pre29 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 18), align 8, !tbaa !3
  %.pre30 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 19), align 4, !tbaa !3
  %.pre31 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 20), align 16, !tbaa !3
  %.pre32 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 21), align 4, !tbaa !3
  %.pre33 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 22), align 8, !tbaa !3
  %.pre34 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 23), align 4, !tbaa !3
  %.pre35 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 24), align 16, !tbaa !3
  %35 = srem i32 %.pre, 2
  %36 = srem i32 %.pre12, 2
  %37 = srem i32 %.pre13, 2
  %38 = srem i32 %.pre14, 2
  %39 = srem i32 %.pre15, 2
  %40 = srem i32 %.pre16, 2
  %41 = srem i32 %.pre17, 2
  %42 = srem i32 %.pre18, 2
  %43 = srem i32 %.pre19, 2
  %44 = srem i32 %.pre20, 2
  %45 = srem i32 %.pre21, 2
  %46 = srem i32 %.pre22, 2
  %47 = srem i32 %.pre23, 2
  %48 = srem i32 %.pre24, 2
  %49 = srem i32 %.pre25, 2
  %50 = srem i32 %.pre26, 2
  %51 = srem i32 %.pre27, 2
  %52 = srem i32 %.pre28, 2
  %53 = srem i32 %.pre29, 2
  %54 = srem i32 %.pre30, 2
  %55 = srem i32 %.pre31, 2
  %56 = srem i32 %.pre32, 2
  %57 = srem i32 %.pre33, 2
  %58 = srem i32 %.pre34, 2
  %59 = srem i32 %.pre35, 2
  %60 = add nsw i32 %36, %35
  %61 = add nsw i32 %37, %60
  %62 = add nsw i32 %38, %61
  %63 = add nsw i32 %39, %62
  %64 = add nsw i32 %40, %63
  %65 = add nsw i32 %41, %64
  %66 = add nsw i32 %42, %65
  %67 = add nsw i32 %43, %66
  %68 = add nsw i32 %44, %67
  %69 = add nsw i32 %45, %68
  %70 = add nsw i32 %46, %69
  %71 = add nsw i32 %47, %70
  %72 = add nsw i32 %48, %71
  %73 = add nsw i32 %49, %72
  %74 = add nsw i32 %50, %73
  %75 = add nsw i32 %51, %74
  %76 = add nsw i32 %52, %75
  %77 = add nsw i32 %53, %76
  %78 = add nsw i32 %54, %77
  %79 = add nsw i32 %55, %78
  %80 = add nsw i32 %56, %79
  %81 = add nsw i32 %57, %80
  %82 = add nsw i32 %58, %81
  %83 = add nsw i32 %59, %82
  br label %select.unfold._crit_edge

select.unfold._crit_edge:                         ; preds = %select.unfold._crit_edge.loopexit, %10
  %84 = phi i32 [ %83, %select.unfold._crit_edge.loopexit ], [ 0, %10 ]
  %85 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEcnt, i64 0, i64 25), align 4, !tbaa !3
  %86 = srem i32 %85, 2
  %87 = sub nsw i32 0, %84
  %88 = icmp eq i32 %86, %87
  br i1 %88, label %89, label %92

89:                                               ; preds = %select.unfold._crit_edge
  %90 = tail call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.2eed36b14226c5f2b29504ce965114d7, i32 12)
  %91 = tail call i1 @_FortranAioOutputAscii(ptr %90, ptr nonnull @_QQcl.596573, i64 3)
  br label %95

92:                                               ; preds = %select.unfold._crit_edge
  %93 = tail call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.2eed36b14226c5f2b29504ce965114d7, i32 14)
  %94 = tail call i1 @_FortranAioOutputAscii(ptr %93, ptr nonnull @_QQcl.4E6F, i64 2)
  br label %95

95:                                               ; preds = %89, %92
  %.sink = phi ptr [ %90, %89 ], [ %93, %92 ]
  %96 = tail call i32 @_FortranAioEndIoStatement(ptr %.sink)
  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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: write) }

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