program fifty_fifty
    implicit none
    integer(4):: i,ai,alphabet_counts(26) = 0, count
    character(4):: s

    read*, s

    do i=1,4
        ai=ichar(s(i:i))-64
        alphabet_counts(ai)=alphabet_counts(ai)+1
    end do

    do i=1,26
        count = alphabet_counts(i)
        if (count /= 2 .and. count/= 0) then
            print*, 'No'
            stop
        end if
    end do

    print*, 'Yes'
end program fifty_fifty
; 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"

@_QFEalphabet_counts = internal unnamed_addr global [26 x i32] zeroinitializer
@_QQcl.327aa0fc3b4e68e98d77cc628510d528 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_3852/source.f\00"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
.preheader.preheader:
  %0 = alloca [4 x i8], align 1
  %1 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.327aa0fc3b4e68e98d77cc628510d528, i32 6)
  %2 = call i1 @_FortranAioInputAscii(ptr %1, ptr nonnull %0, i64 4)
  %3 = call i32 @_FortranAioEndIoStatement(ptr %1)
  %.fca.0.load = load i8, ptr %0, align 1, !tbaa !3
  %4 = zext i8 %.fca.0.load to i64
  %5 = add nsw i64 %4, -65
  %6 = getelementptr [26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 %5
  %7 = load i32, ptr %6, align 4, !tbaa !3
  %8 = add i32 %7, 1
  store i32 %8, ptr %6, align 4, !tbaa !3
  %9 = getelementptr inbounds [4 x [1 x i8]], ptr %0, i64 0, i64 1
  %.fca.0.load.1 = load i8, ptr %9, align 1, !tbaa !3
  %10 = zext i8 %.fca.0.load.1 to i64
  %11 = add nsw i64 %10, -65
  %12 = getelementptr [26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 %11
  %13 = load i32, ptr %12, align 4, !tbaa !3
  %14 = add i32 %13, 1
  store i32 %14, ptr %12, align 4, !tbaa !3
  %15 = getelementptr inbounds [4 x [1 x i8]], ptr %0, i64 0, i64 2
  %.fca.0.load.2 = load i8, ptr %15, align 1, !tbaa !3
  %16 = zext i8 %.fca.0.load.2 to i64
  %17 = add nsw i64 %16, -65
  %18 = getelementptr [26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 %17
  %19 = load i32, ptr %18, align 4, !tbaa !3
  %20 = add i32 %19, 1
  store i32 %20, ptr %18, align 4, !tbaa !3
  %21 = getelementptr inbounds [4 x [1 x i8]], ptr %0, i64 0, i64 3
  %.fca.0.load.3 = load i8, ptr %21, align 1, !tbaa !3
  %22 = zext i8 %.fca.0.load.3 to i64
  %23 = add nsw i64 %22, -65
  %24 = getelementptr [26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 %23
  %25 = load i32, ptr %24, align 4, !tbaa !3
  %26 = add i32 %25, 1
  store i32 %26, ptr %24, align 4, !tbaa !3
  %27 = load i32, ptr @_QFEalphabet_counts, align 16, !tbaa !3
  switch i32 %27, label %28 [
    i32 2, label %.preheader.1
    i32 0, label %.preheader.1
  ]

28:                                               ; preds = %.preheader.25, %.preheader.24, %.preheader.23, %.preheader.22, %.preheader.21, %.preheader.20, %.preheader.19, %.preheader.18, %.preheader.17, %.preheader.16, %.preheader.15, %.preheader.14, %.preheader.13, %.preheader.12, %.preheader.11, %.preheader.10, %.preheader.9, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader.preheader
  %29 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.327aa0fc3b4e68e98d77cc628510d528, i32 16)
  %30 = call i1 @_FortranAioOutputAscii(ptr %29, ptr nonnull @_QQcl.4E6F, i64 2)
  %31 = call i32 @_FortranAioEndIoStatement(ptr %29)
  %32 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

.preheader.1:                                     ; preds = %.preheader.preheader, %.preheader.preheader
  %33 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 1), align 4, !tbaa !3
  switch i32 %33, label %28 [
    i32 2, label %.preheader.2
    i32 0, label %.preheader.2
  ]

.preheader.2:                                     ; preds = %.preheader.1, %.preheader.1
  %34 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 2), align 8, !tbaa !3
  switch i32 %34, label %28 [
    i32 2, label %.preheader.3
    i32 0, label %.preheader.3
  ]

.preheader.3:                                     ; preds = %.preheader.2, %.preheader.2
  %35 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 3), align 4, !tbaa !3
  switch i32 %35, label %28 [
    i32 2, label %.preheader.4
    i32 0, label %.preheader.4
  ]

.preheader.4:                                     ; preds = %.preheader.3, %.preheader.3
  %36 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 4), align 16, !tbaa !3
  switch i32 %36, label %28 [
    i32 2, label %.preheader.5
    i32 0, label %.preheader.5
  ]

.preheader.5:                                     ; preds = %.preheader.4, %.preheader.4
  %37 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 5), align 4, !tbaa !3
  switch i32 %37, label %28 [
    i32 2, label %.preheader.6
    i32 0, label %.preheader.6
  ]

.preheader.6:                                     ; preds = %.preheader.5, %.preheader.5
  %38 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 6), align 8, !tbaa !3
  switch i32 %38, label %28 [
    i32 2, label %.preheader.7
    i32 0, label %.preheader.7
  ]

.preheader.7:                                     ; preds = %.preheader.6, %.preheader.6
  %39 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 7), align 4, !tbaa !3
  switch i32 %39, label %28 [
    i32 2, label %.preheader.8
    i32 0, label %.preheader.8
  ]

.preheader.8:                                     ; preds = %.preheader.7, %.preheader.7
  %40 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 8), align 16, !tbaa !3
  switch i32 %40, label %28 [
    i32 2, label %.preheader.9
    i32 0, label %.preheader.9
  ]

.preheader.9:                                     ; preds = %.preheader.8, %.preheader.8
  %41 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 9), align 4, !tbaa !3
  switch i32 %41, label %28 [
    i32 2, label %.preheader.10
    i32 0, label %.preheader.10
  ]

.preheader.10:                                    ; preds = %.preheader.9, %.preheader.9
  %42 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 10), align 8, !tbaa !3
  switch i32 %42, label %28 [
    i32 2, label %.preheader.11
    i32 0, label %.preheader.11
  ]

.preheader.11:                                    ; preds = %.preheader.10, %.preheader.10
  %43 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 11), align 4, !tbaa !3
  switch i32 %43, label %28 [
    i32 2, label %.preheader.12
    i32 0, label %.preheader.12
  ]

.preheader.12:                                    ; preds = %.preheader.11, %.preheader.11
  %44 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 12), align 16, !tbaa !3
  switch i32 %44, label %28 [
    i32 2, label %.preheader.13
    i32 0, label %.preheader.13
  ]

.preheader.13:                                    ; preds = %.preheader.12, %.preheader.12
  %45 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 13), align 4, !tbaa !3
  switch i32 %45, label %28 [
    i32 2, label %.preheader.14
    i32 0, label %.preheader.14
  ]

.preheader.14:                                    ; preds = %.preheader.13, %.preheader.13
  %46 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 14), align 8, !tbaa !3
  switch i32 %46, label %28 [
    i32 2, label %.preheader.15
    i32 0, label %.preheader.15
  ]

.preheader.15:                                    ; preds = %.preheader.14, %.preheader.14
  %47 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 15), align 4, !tbaa !3
  switch i32 %47, label %28 [
    i32 2, label %.preheader.16
    i32 0, label %.preheader.16
  ]

.preheader.16:                                    ; preds = %.preheader.15, %.preheader.15
  %48 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 16), align 16, !tbaa !3
  switch i32 %48, label %28 [
    i32 2, label %.preheader.17
    i32 0, label %.preheader.17
  ]

.preheader.17:                                    ; preds = %.preheader.16, %.preheader.16
  %49 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 17), align 4, !tbaa !3
  switch i32 %49, label %28 [
    i32 2, label %.preheader.18
    i32 0, label %.preheader.18
  ]

.preheader.18:                                    ; preds = %.preheader.17, %.preheader.17
  %50 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 18), align 8, !tbaa !3
  switch i32 %50, label %28 [
    i32 2, label %.preheader.19
    i32 0, label %.preheader.19
  ]

.preheader.19:                                    ; preds = %.preheader.18, %.preheader.18
  %51 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 19), align 4, !tbaa !3
  switch i32 %51, label %28 [
    i32 2, label %.preheader.20
    i32 0, label %.preheader.20
  ]

.preheader.20:                                    ; preds = %.preheader.19, %.preheader.19
  %52 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 20), align 16, !tbaa !3
  switch i32 %52, label %28 [
    i32 2, label %.preheader.21
    i32 0, label %.preheader.21
  ]

.preheader.21:                                    ; preds = %.preheader.20, %.preheader.20
  %53 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 21), align 4, !tbaa !3
  switch i32 %53, label %28 [
    i32 2, label %.preheader.22
    i32 0, label %.preheader.22
  ]

.preheader.22:                                    ; preds = %.preheader.21, %.preheader.21
  %54 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 22), align 8, !tbaa !3
  switch i32 %54, label %28 [
    i32 2, label %.preheader.23
    i32 0, label %.preheader.23
  ]

.preheader.23:                                    ; preds = %.preheader.22, %.preheader.22
  %55 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 23), align 4, !tbaa !3
  switch i32 %55, label %28 [
    i32 2, label %.preheader.24
    i32 0, label %.preheader.24
  ]

.preheader.24:                                    ; preds = %.preheader.23, %.preheader.23
  %56 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 24), align 16, !tbaa !3
  switch i32 %56, label %28 [
    i32 2, label %.preheader.25
    i32 0, label %.preheader.25
  ]

.preheader.25:                                    ; preds = %.preheader.24, %.preheader.24
  %57 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEalphabet_counts, i64 0, i64 25), align 4, !tbaa !3
  switch i32 %57, label %28 [
    i32 2, label %58
    i32 0, label %58
  ]

58:                                               ; preds = %.preheader.25, %.preheader.25
  %59 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.327aa0fc3b4e68e98d77cc628510d528, i32 21)
  %60 = call i1 @_FortranAioOutputAscii(ptr %59, ptr nonnull @_QQcl.596573, i64 3)
  %61 = call i32 @_FortranAioEndIoStatement(ptr %59)
  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 @_FortranAioBeginExternalListOutput(i32, ptr, i32) local_unnamed_addr

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

declare {} @_FortranAStopStatement(i32, i1, i1) 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"}
