implicit none
integer(8):: i,j,k,n,m,ans
integer(8),allocatable,dimension(:):: num,count

read (5,*) n
 
allocate(num(n))
allocate(count(n))
count=0
ans=0
m=1
count(1)=1
 
do i=1,n
    read (5,*) num(i)
enddo

call heapsort(n,num)

do i = 2,n
    if (num(m)==num(i)) then
        count(m)=count(m)+1
    else
        m=i
        count(m)=1
    endif
enddo

do i = 1,n
    ans=ans+mod(count(i),2)
enddo

write(6,"(i0)") ans
end

!---http://slpr.sakura.ne.jp/qp/sortf90/---
subroutine heapsort(n,array)
    implicit none
    integer(8),intent(in) :: n
    double precision,intent(inout) :: array(1:n)
   
    integer ::i,k,j,l
    double precision :: t
   
    if(n.le.0)then
        write(6,*)"Error, at heapsort"; stop
    endif
    if(n.eq.1)return

    l=n/2+1
    k=n
    do while(k.ne.1)
        if(l.gt.1)then
            l=l-1
            t=array(L)
        else
            t=array(k)
            array(k)=array(1)
            k=k-1
            if(k.eq.1) then
                array(1)=t
                exit
            endif
        endif
        i=l
        j=l+l
        do while(j.le.k)
            if(j.lt.k)then
                if(array(j).lt.array(j+1))j=j+1
            endif
            if (t.lt.array(j))then
                array(i)=array(j)
                i=j
                j=j+j
            else
                j=k+1
            endif
        enddo
        array(i)=t
    enddo

    return
end subroutine heapsort
; 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"

@_QFEcount.0 = internal unnamed_addr global ptr null
@_QFEcount.7 = internal unnamed_addr global i64 1
@_QFEnum.0 = internal unnamed_addr global ptr null
@_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_6932/source.f\00"
@_QQcl.16373402fa3425c6e46827601abb88fa = linkonce constant [76 x i8] c"array left hand side must be allocated when the right hand side is a scalar\00"
@_QQcl.28693029 = linkonce constant [4 x i8] c"(i0)"
@_QQcl.4572726F722C2061742068656170736F7274 = linkonce constant [18 x i8] c"Error, at heapsort"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i64, align 8
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 5, ptr nonnull @_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd, i32 5)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 8)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = load i64, ptr %1, align 8, !tbaa !3
  %6 = call i64 @llvm.smax.i64(i64 %5, i64 0)
  %7 = shl i64 %6, 3
  %8 = call ptr @malloc(i64 %7)
  store ptr %8, ptr @_QFEnum.0, align 8, !tbaa !7
  %9 = call ptr @malloc(i64 %7)
  store ptr %9, ptr @_QFEcount.0, align 8, !tbaa !7
  store i64 1, ptr @_QFEcount.7, align 8, !tbaa !7
  %.not = icmp eq ptr %9, null
  br i1 %.not, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %0
  %.not415 = icmp slt i64 %5, 1
  br i1 %.not415, label %.loopexit.thread423, label %.loopexit.thread

.loopexit.thread423:                              ; preds = %.preheader
  store i64 1, ptr %9, align 8, !tbaa !3
  br label %._crit_edge

.loopexit.thread:                                 ; preds = %.preheader
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %9, i8 0, i64 %7, i1 false), !tbaa !3
  store i64 1, ptr %9, align 8, !tbaa !3
  br label %.lr.ph406.preheader

.loopexit:                                        ; preds = %0
  %10 = call {} @_FortranAReportFatalUserError(ptr nonnull @_QQcl.16373402fa3425c6e46827601abb88fa, ptr nonnull @_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd, i32 9)
  %.unpack392.unpack.unpack = load i64, ptr @_QFEcount.7, align 8, !tbaa !7
  %11 = icmp slt i64 %5, 1
  %12 = select i1 %11, i64 1, i64 %.unpack392.unpack.unpack
  store ptr null, ptr @_QFEcount.0, align 8, !tbaa !7
  store i64 %12, ptr @_QFEcount.7, align 8, !tbaa !7
  %.pre = load i64, ptr %1, align 8, !tbaa !3
  %13 = sub i64 1, %12
  %14 = getelementptr i64, ptr null, i64 %13
  store i64 poison, ptr %14, align 8, !tbaa !3
  %15 = icmp sgt i64 %.pre, 0
  br i1 %15, label %.lr.ph406.preheader, label %._crit_edge

.lr.ph406.preheader:                              ; preds = %.loopexit.thread, %.loopexit
  %16 = phi i64 [ %5, %.loopexit.thread ], [ %.pre, %.loopexit ]
  br label %.lr.ph406

.lr.ph406:                                        ; preds = %.lr.ph406.preheader, %.lr.ph406
  %17 = phi i64 [ %23, %.lr.ph406 ], [ 1, %.lr.ph406.preheader ]
  %18 = call ptr @_FortranAioBeginExternalListInput(i32 5, ptr nonnull @_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd, i32 15)
  %.unpack373 = load ptr, ptr @_QFEnum.0, align 8, !tbaa !7
  %19 = add i64 %17, -1
  %20 = getelementptr i64, ptr %.unpack373, i64 %19
  %21 = call i1 @_FortranAioInputInteger(ptr %18, ptr %20, i32 8)
  %22 = call i32 @_FortranAioEndIoStatement(ptr %18)
  %23 = add nuw i64 %17, 1
  %exitcond.not = icmp eq i64 %17, %16
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph406

._crit_edge:                                      ; preds = %.lr.ph406, %.loopexit.thread423, %.loopexit
  %.unpack313 = load ptr, ptr @_QFEnum.0, align 8, !tbaa !7
  call void @heapsort_(ptr nonnull %1, ptr %.unpack313)
  %24 = load i64, ptr %1, align 8, !tbaa !3
  %25 = add i64 %24, -1
  %26 = icmp sgt i64 %25, 0
  br i1 %26, label %.lr.ph409, label %._crit_edge410

.lr.ph409:                                        ; preds = %._crit_edge
  %.unpack337 = load ptr, ptr @_QFEnum.0, align 8, !tbaa !7
  %.unpack349 = load ptr, ptr @_QFEcount.0, align 8
  %.unpack356.unpack.unpack = load i64, ptr @_QFEcount.7, align 8
  br label %27

27:                                               ; preds = %.lr.ph409, %44
  %28 = phi i64 [ 2, %.lr.ph409 ], [ %45, %44 ]
  %.0407 = phi i64 [ 1, %.lr.ph409 ], [ %.1, %44 ]
  %29 = add i64 %.0407, -1
  %30 = getelementptr i64, ptr %.unpack337, i64 %29
  %31 = load i64, ptr %30, align 8, !tbaa !3
  %32 = add i64 %28, -1
  %33 = getelementptr i64, ptr %.unpack337, i64 %32
  %34 = load i64, ptr %33, align 8, !tbaa !3
  %35 = icmp eq i64 %31, %34
  br i1 %35, label %36, label %41

36:                                               ; preds = %27
  %37 = sub i64 %.0407, %.unpack356.unpack.unpack
  %38 = getelementptr i64, ptr %.unpack349, i64 %37
  %39 = load i64, ptr %38, align 8, !tbaa !3
  %40 = add i64 %39, 1
  store i64 %40, ptr %38, align 8, !tbaa !3
  br label %44

41:                                               ; preds = %27
  %42 = sub i64 %28, %.unpack356.unpack.unpack
  %43 = getelementptr i64, ptr %.unpack349, i64 %42
  store i64 1, ptr %43, align 8, !tbaa !3
  br label %44

44:                                               ; preds = %36, %41
  %.1 = phi i64 [ %.0407, %36 ], [ %28, %41 ]
  %45 = add nuw i64 %28, 1
  %exitcond416.not = icmp eq i64 %28, %24
  br i1 %exitcond416.not, label %._crit_edge410.loopexit, label %27

._crit_edge410.loopexit:                          ; preds = %44
  %.pre420 = load i64, ptr %1, align 8, !tbaa !3
  br label %._crit_edge410

._crit_edge410:                                   ; preds = %._crit_edge410.loopexit, %._crit_edge
  %46 = phi i64 [ %.pre420, %._crit_edge410.loopexit ], [ %24, %._crit_edge ]
  %47 = icmp sgt i64 %46, 0
  br i1 %47, label %.lr.ph413, label %._crit_edge414

.lr.ph413:                                        ; preds = %._crit_edge410
  %.unpack325 = load ptr, ptr @_QFEcount.0, align 8, !tbaa !7
  %.unpack332.unpack.unpack = load i64, ptr @_QFEcount.7, align 8, !tbaa !7
  %min.iters.check = icmp ult i64 %46, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph413
  %n.vec = and i64 %46, -4
  %ind.end = or i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %53, %vector.body ]
  %vec.phi426 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %54, %vector.body ]
  %offset.idx = or i64 %index, 1
  %48 = sub i64 %offset.idx, %.unpack332.unpack.unpack
  %49 = getelementptr i64, ptr %.unpack325, i64 %48
  %wide.load = load <2 x i64>, ptr %49, align 8, !tbaa !3
  %50 = getelementptr i64, ptr %49, i64 2
  %wide.load427 = load <2 x i64>, ptr %50, align 8, !tbaa !3
  %51 = srem <2 x i64> %wide.load, <i64 2, i64 2>
  %52 = srem <2 x i64> %wide.load427, <i64 2, i64 2>
  %53 = add <2 x i64> %51, %vec.phi
  %54 = add <2 x i64> %52, %vec.phi426
  %index.next = add nuw i64 %index, 4
  %55 = icmp eq i64 %index.next, %n.vec
  br i1 %55, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %54, %53
  %56 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %46, %n.vec
  br i1 %cmp.n, label %._crit_edge414, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph413, %middle.block
  %.ph = phi i64 [ 1, %.lr.ph413 ], [ %ind.end, %middle.block ]
  %.0279411.ph = phi i64 [ 0, %.lr.ph413 ], [ %56, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %57 = phi i64 [ %63, %scalar.ph ], [ %.ph, %scalar.ph.preheader ]
  %.0279411 = phi i64 [ %62, %scalar.ph ], [ %.0279411.ph, %scalar.ph.preheader ]
  %58 = sub i64 %57, %.unpack332.unpack.unpack
  %59 = getelementptr i64, ptr %.unpack325, i64 %58
  %60 = load i64, ptr %59, align 8, !tbaa !3
  %61 = srem i64 %60, 2
  %62 = add i64 %61, %.0279411
  %63 = add nuw i64 %57, 1
  %exitcond417.not = icmp eq i64 %57, %46
  br i1 %exitcond417.not, label %._crit_edge414, label %scalar.ph, !llvm.loop !12

._crit_edge414:                                   ; preds = %scalar.ph, %middle.block, %._crit_edge410
  %.0279.lcssa = phi i64 [ 0, %._crit_edge410 ], [ %56, %middle.block ], [ %62, %scalar.ph ]
  %64 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 6, ptr nonnull @_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd, i32 33)
  %65 = call i1 @_FortranAioOutputInteger64(ptr %64, i64 %.0279.lcssa)
  %66 = call i32 @_FortranAioEndIoStatement(ptr %64)
  ret void
}

define void @heapsort_(ptr nocapture readonly %0, ptr nocapture %1) local_unnamed_addr {
  %3 = load i64, ptr %0, align 8, !tbaa !3
  %4 = icmp slt i64 %3, 1
  br i1 %4, label %5, label %10

5:                                                ; preds = %2
  %6 = tail call ptr @_FortranAioBeginExternalListOutput(i32 6, ptr nonnull @_QQcl.d7bc97fbfacaa5dc01d094f55175f7bd, i32 46)
  %7 = tail call i1 @_FortranAioOutputAscii(ptr %6, ptr nonnull @_QQcl.4572726F722C2061742068656170736F7274, i64 18)
  %8 = tail call i32 @_FortranAioEndIoStatement(ptr %6)
  %9 = tail call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

10:                                               ; preds = %2
  %11 = icmp eq i64 %3, 1
  br i1 %11, label %.loopexit, label %12

12:                                               ; preds = %10
  %13 = trunc i64 %3 to i32
  %.not51 = icmp eq i32 %13, 1
  br i1 %.not51, label %.loopexit, label %.lr.ph54.preheader

.lr.ph54.preheader:                               ; preds = %12
  %14 = lshr i64 %3, 1
  %15 = trunc i64 %14 to i32
  %16 = add i32 %15, 1
  br label %.lr.ph54

.lr.ph54:                                         ; preds = %.lr.ph54.preheader, %.split49.us
  %.02553 = phi i32 [ %.1, %.split49.us ], [ %16, %.lr.ph54.preheader ]
  %.02652 = phi i32 [ %.127.fr, %.split49.us ], [ %13, %.lr.ph54.preheader ]
  %17 = icmp sgt i32 %.02553, 1
  br i1 %17, label %18, label %24

18:                                               ; preds = %.lr.ph54
  %19 = add nsw i32 %.02553, -1
  %20 = zext i32 %19 to i64
  %21 = add nsw i64 %20, -1
  %22 = getelementptr double, ptr %1, i64 %21
  %23 = load double, ptr %22, align 8, !tbaa !3
  br label %33

24:                                               ; preds = %.lr.ph54
  %25 = sext i32 %.02652 to i64
  %26 = add nsw i64 %25, -1
  %27 = getelementptr double, ptr %1, i64 %26
  %28 = load double, ptr %27, align 8, !tbaa !3
  %29 = load double, ptr %1, align 8, !tbaa !3
  store double %29, ptr %27, align 8, !tbaa !3
  %30 = add i32 %.02652, -1
  %31 = icmp eq i32 %30, 1
  br i1 %31, label %32, label %33

32:                                               ; preds = %24
  store double %28, ptr %1, align 8, !tbaa !3
  br label %.loopexit

33:                                               ; preds = %18, %24
  %.127 = phi i32 [ %.02652, %18 ], [ %30, %24 ]
  %.1 = phi i32 [ %19, %18 ], [ %.02553, %24 ]
  %.0 = phi double [ %23, %18 ], [ %28, %24 ]
  %.127.fr = freeze i32 %.127
  %34 = shl i32 %.1, 1
  %.not343643 = icmp sgt i32 %34, %.127.fr
  br i1 %.not343643, label %.split49.us, label %.lr.ph.lr.ph

.lr.ph.lr.ph:                                     ; preds = %33
  %.not34.not = icmp eq i32 %.127.fr, 2147483647
  br i1 %.not34.not, label %.lr.ph.preheader, label %.lr.ph.us

.lr.ph.preheader:                                 ; preds = %.lr.ph.lr.ph
  %.127.fr.le = freeze i32 %.127
  %35 = add i32 %.127.fr.le, 1
  %.not58 = icmp eq i32 %35, 2147483647
  %36 = sext i32 %35 to i64
  %37 = add nsw i64 %36, -1
  %38 = getelementptr double, ptr %1, i64 %37
  %39 = getelementptr double, ptr %1, i64 %36
  %40 = add i32 %.127.fr.le, 2
  br label %62

.lr.ph.us:                                        ; preds = %.lr.ph.lr.ph, %.split.us.us
  %.028.ph45.us = phi i32 [ %61, %.split.us.us ], [ %34, %.lr.ph.lr.ph ]
  %.030.ph44.us = phi i32 [ %.129.us.us, %.split.us.us ], [ %.1, %.lr.ph.lr.ph ]
  %41 = icmp slt i32 %.028.ph45.us, %.127.fr
  br i1 %41, label %42, label %52

42:                                               ; preds = %.lr.ph.us
  %43 = sext i32 %.028.ph45.us to i64
  %44 = add nsw i64 %43, -1
  %45 = getelementptr double, ptr %1, i64 %44
  %46 = load double, ptr %45, align 8, !tbaa !3
  %47 = getelementptr double, ptr %1, i64 %43
  %48 = load double, ptr %47, align 8, !tbaa !3
  %49 = fcmp olt double %46, %48
  br i1 %49, label %50, label %52

50:                                               ; preds = %42
  %51 = or i32 %.028.ph45.us, 1
  br label %52

52:                                               ; preds = %50, %42, %.lr.ph.us
  %.129.us.us = phi i32 [ %51, %50 ], [ %.028.ph45.us, %42 ], [ %.028.ph45.us, %.lr.ph.us ]
  %53 = sext i32 %.129.us.us to i64
  %54 = add nsw i64 %53, -1
  %55 = getelementptr double, ptr %1, i64 %54
  %56 = load double, ptr %55, align 8, !tbaa !3
  %57 = fcmp olt double %.0, %56
  br i1 %57, label %.split.us.us, label %.split49.us

.split.us.us:                                     ; preds = %52
  %58 = sext i32 %.030.ph44.us to i64
  %59 = add nsw i64 %58, -1
  %60 = getelementptr double, ptr %1, i64 %59
  store double %56, ptr %60, align 8, !tbaa !3
  %61 = shl i32 %.129.us.us, 1
  %.not3436.us = icmp sgt i32 %61, %.127.fr
  br i1 %.not3436.us, label %.split49.us, label %.lr.ph.us

62:                                               ; preds = %.lr.ph.preheader, %.split
  %.028.ph45 = phi i32 [ %90, %.split ], [ %34, %.lr.ph.preheader ]
  %.030.ph44 = phi i32 [ %.129.lcssa, %.split ], [ %.1, %.lr.ph.preheader ]
  %63 = sext i32 %.028.ph45 to i64
  %64 = add nsw i64 %63, -1
  %65 = getelementptr double, ptr %1, i64 %64
  %66 = load double, ptr %65, align 8, !tbaa !3
  %67 = getelementptr double, ptr %1, i64 %63
  %68 = load double, ptr %67, align 8, !tbaa !3
  %69 = fcmp olt double %66, %68
  %70 = zext i1 %69 to i32
  %.129.peel = or i32 %.028.ph45, %70
  %71 = sext i32 %.129.peel to i64
  %72 = add nsw i64 %71, -1
  %73 = getelementptr double, ptr %1, i64 %72
  %74 = load double, ptr %73, align 8, !tbaa !3
  %75 = fcmp olt double %.0, %74
  br i1 %75, label %.split, label %.peel.next

.peel.next:                                       ; preds = %62, %81
  br i1 %.not58, label %81, label %76

76:                                               ; preds = %.peel.next
  %77 = load double, ptr %38, align 8, !tbaa !3
  %78 = load double, ptr %39, align 8, !tbaa !3
  %79 = fcmp olt double %77, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %76
  br label %81

81:                                               ; preds = %80, %76, %.peel.next
  %.129 = phi i32 [ %40, %80 ], [ %35, %76 ], [ 2147483647, %.peel.next ]
  %82 = sext i32 %.129 to i64
  %83 = add nsw i64 %82, -1
  %84 = getelementptr double, ptr %1, i64 %83
  %85 = load double, ptr %84, align 8, !tbaa !3
  %86 = fcmp olt double %.0, %85
  br i1 %86, label %.split, label %.peel.next, !llvm.loop !13

.split:                                           ; preds = %81, %62
  %.129.lcssa = phi i32 [ %.129.peel, %62 ], [ %.129, %81 ]
  %.lcssa = phi double [ %74, %62 ], [ %85, %81 ]
  %87 = sext i32 %.030.ph44 to i64
  %88 = add nsw i64 %87, -1
  %89 = getelementptr double, ptr %1, i64 %88
  store double %.lcssa, ptr %89, align 8, !tbaa !3
  %90 = shl i32 %.129.lcssa, 1
  br label %62

.split49.us:                                      ; preds = %.split.us.us, %52, %33
  %.030.ph.lcssa = phi i32 [ %.1, %33 ], [ %.030.ph44.us, %52 ], [ %.129.us.us, %.split.us.us ]
  %91 = sext i32 %.030.ph.lcssa to i64
  %92 = add nsw i64 %91, -1
  %93 = getelementptr double, ptr %1, i64 %92
  store double %.0, ptr %93, align 8, !tbaa !3
  %.not = icmp eq i32 %.127.fr, 1
  br i1 %.not, label %.loopexit, label %.lr.ph54

.loopexit:                                        ; preds = %.split49.us, %12, %32, %10
  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 {} @_FortranAReportFatalUserError(ptr, ptr, i32) local_unnamed_addr

declare ptr @_FortranAioBeginExternalFormattedOutput(ptr, i64, ptr, i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputInteger64(ptr, i64) 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #3

attributes #0 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nosync nounwind 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"}
!7 = !{!8, !8, i64 0}
!8 = !{!"descriptor member", !5, i64 0}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.isvectorized", i32 1}
!11 = !{!"llvm.loop.unroll.runtime.disable"}
!12 = distinct !{!12, !11, !10}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.peeled.count", i32 1}
