; LLVM IR from andreimaximov/algorithms :: codeforces/exam-cheating (main)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::vector" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_reference" = type { ptr, i64 }

@_ZSt3cin = external global %"class.std::basic_istream", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11load_geniusi(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #4 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [2 x [1001 x [50 x [50 x i32]]]], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"struct.std::_Bit_reference", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.std::_Bit_reference", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.std::_Bit_reference", align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"struct.std::_Bit_reference", align 8
  %32 = alloca %"struct.std::_Bit_reference", align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"struct.std::_Bit_reference", align 8
  %37 = alloca %"struct.std::_Bit_reference", align 8
  %38 = alloca i32, align 4
  %39 = alloca %"struct.std::_Bit_reference", align 8
  %40 = alloca %"struct.std::_Bit_reference", align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %50 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %51 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(4) %4)
  call void @llvm.lifetime.start.p0(i64 40, ptr %5) #7
  %52 = load i32, ptr %2, align 4, !tbaa !5
  call void @_Z11load_geniusi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %5, i32 noundef %52)
  call void @llvm.lifetime.start.p0(i64 40, ptr %6) #7
  %53 = load i32, ptr %2, align 4, !tbaa !5
  invoke void @_Z11load_geniusi(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %6, i32 noundef %53)
          to label %54 unwind label %85

54:                                               ; preds = %0
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  %55 = load i32, ptr %2, align 4, !tbaa !5
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = add nsw i32 %55, %56
  %58 = sub nsw i32 %57, 1
  %59 = load i32, ptr %4, align 4, !tbaa !5
  %60 = sdiv i32 %58, %59
  %61 = mul nsw i32 2, %60
  store i32 %61, ptr %9, align 4, !tbaa !5
  %62 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %63 unwind label %89

63:                                               ; preds = %54
  %64 = load i32, ptr %62, align 4, !tbaa !5
  store i32 %64, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 20020000, ptr %10) #7
  %65 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 0
  %66 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %65, i64 0, i64 0
  %67 = getelementptr inbounds [50 x [50 x i32]], ptr %66, i64 0, i64 0
  %68 = getelementptr inbounds [50 x i32], ptr %67, i64 0, i64 0
  %69 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 0
  %70 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %69, i64 0, i64 0
  %71 = getelementptr inbounds [50 x [50 x i32]], ptr %70, i64 0, i64 0
  %72 = getelementptr inbounds [50 x i32], ptr %71, i64 0, i64 0
  %73 = getelementptr inbounds i32, ptr %72, i64 5005000
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  %74 = call noundef i32 @_ZNSt14numeric_limitsIiE3minEv() #7
  store i32 %74, ptr %11, align 4, !tbaa !5
  invoke void @_ZSt4fillIPiiEvT_S1_RKT0_(ptr noundef %68, ptr noundef %73, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %75 unwind label %93

75:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  %76 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 0
  %77 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %76, i64 0, i64 0
  %78 = getelementptr inbounds [50 x [50 x i32]], ptr %77, i64 0, i64 0
  %79 = getelementptr inbounds [50 x i32], ptr %78, i64 0, i64 0
  store i32 0, ptr %79, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %80

80:                                               ; preds = %703, %75
  %81 = load i32, ptr %12, align 4, !tbaa !5
  %82 = load i32, ptr %2, align 4, !tbaa !5
  %83 = icmp sle i32 %81, %82
  br i1 %83, label %97, label %84

84:                                               ; preds = %80
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %707

85:                                               ; preds = %0
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %7, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %8, align 4
  br label %771

89:                                               ; preds = %54
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %7, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %770

93:                                               ; preds = %63
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %7, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %769

97:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %98 = load i32, ptr %12, align 4, !tbaa !5
  %99 = srem i32 %98, 2
  store i32 %99, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %100 = load i32, ptr %14, align 4, !tbaa !5
  %101 = add nsw i32 %100, 1
  %102 = srem i32 %101, 2
  store i32 %102, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %103

103:                                              ; preds = %223, %97
  %104 = load i32, ptr %16, align 4, !tbaa !5
  %105 = load i32, ptr %3, align 4, !tbaa !5
  %106 = icmp sle i32 %104, %105
  br i1 %106, label %108, label %107

107:                                              ; preds = %103
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %226

108:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %109

109:                                              ; preds = %210, %108
  %110 = load i32, ptr %17, align 4, !tbaa !5
  %111 = load i32, ptr %4, align 4, !tbaa !5
  %112 = sub nsw i32 %111, 1
  %113 = icmp slt i32 %110, %112
  br i1 %113, label %115, label %114

114:                                              ; preds = %109
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %222

115:                                              ; preds = %109
  %116 = load i32, ptr %14, align 4, !tbaa !5
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %117
  %119 = load i32, ptr %16, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %118, i64 0, i64 %120
  %122 = load i32, ptr %17, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds [50 x [50 x i32]], ptr %121, i64 0, i64 %123
  %125 = getelementptr inbounds [50 x i32], ptr %124, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %126 = load i32, ptr %15, align 4, !tbaa !5
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %127
  %129 = load i32, ptr %16, align 4, !tbaa !5
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %128, i64 0, i64 %130
  %132 = load i32, ptr %17, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds [50 x [50 x i32]], ptr %131, i64 0, i64 %134
  %136 = getelementptr inbounds [50 x i32], ptr %135, i64 0, i64 0
  %137 = load i32, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  %138 = load i32, ptr %12, align 4, !tbaa !5
  %139 = sub nsw i32 %138, 1
  %140 = sext i32 %139 to i64
  %141 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %140)
          to label %142 unwind label %213

142:                                              ; preds = %115
  %143 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 0
  %144 = extractvalue { ptr, i64 } %141, 0
  store ptr %144, ptr %143, align 8
  %145 = getelementptr inbounds { ptr, i64 }, ptr %19, i32 0, i32 1
  %146 = extractvalue { ptr, i64 } %141, 1
  store i64 %146, ptr %145, align 8
  %147 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  %148 = zext i1 %147 to i32
  %149 = add nsw i32 %137, %148
  store i32 %149, ptr %18, align 4, !tbaa !5
  %150 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %125, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %151 unwind label %213

151:                                              ; preds = %142
  %152 = load i32, ptr %150, align 4, !tbaa !5
  %153 = load i32, ptr %14, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %154
  %156 = load i32, ptr %16, align 4, !tbaa !5
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %155, i64 0, i64 %157
  %159 = load i32, ptr %17, align 4, !tbaa !5
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds [50 x [50 x i32]], ptr %158, i64 0, i64 %160
  %162 = getelementptr inbounds [50 x i32], ptr %161, i64 0, i64 0
  store i32 %152, ptr %162, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  %163 = load i32, ptr %14, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %164
  %166 = load i32, ptr %16, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %165, i64 0, i64 %167
  %169 = getelementptr inbounds [50 x [50 x i32]], ptr %168, i64 0, i64 0
  %170 = load i32, ptr %17, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [50 x i32], ptr %169, i64 0, i64 %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %173 = load i32, ptr %15, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %174
  %176 = load i32, ptr %16, align 4, !tbaa !5
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %175, i64 0, i64 %177
  %179 = getelementptr inbounds [50 x [50 x i32]], ptr %178, i64 0, i64 0
  %180 = load i32, ptr %17, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds [50 x i32], ptr %179, i64 0, i64 %182
  %184 = load i32, ptr %183, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #7
  %185 = load i32, ptr %12, align 4, !tbaa !5
  %186 = sub nsw i32 %185, 1
  %187 = sext i32 %186 to i64
  %188 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %187)
          to label %189 unwind label %217

189:                                              ; preds = %151
  %190 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %191 = extractvalue { ptr, i64 } %188, 0
  store ptr %191, ptr %190, align 8
  %192 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %193 = extractvalue { ptr, i64 } %188, 1
  store i64 %193, ptr %192, align 8
  %194 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  %195 = zext i1 %194 to i32
  %196 = add nsw i32 %184, %195
  store i32 %196, ptr %20, align 4, !tbaa !5
  %197 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %172, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %198 unwind label %217

198:                                              ; preds = %189
  %199 = load i32, ptr %197, align 4, !tbaa !5
  %200 = load i32, ptr %14, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %201
  %203 = load i32, ptr %16, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %202, i64 0, i64 %204
  %206 = getelementptr inbounds [50 x [50 x i32]], ptr %205, i64 0, i64 0
  %207 = load i32, ptr %17, align 4, !tbaa !5
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [50 x i32], ptr %206, i64 0, i64 %208
  store i32 %199, ptr %209, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %210

210:                                              ; preds = %198
  %211 = load i32, ptr %17, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %17, align 4, !tbaa !5
  br label %109, !llvm.loop !9

213:                                              ; preds = %142, %115
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %7, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %221

217:                                              ; preds = %189, %151
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %7, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %221

221:                                              ; preds = %217, %213
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %706

222:                                              ; preds = %114
  br label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %16, align 4, !tbaa !5
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %16, align 4, !tbaa !5
  br label %103, !llvm.loop !11

226:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 1, ptr %22, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %327, %226
  %228 = load i32, ptr %22, align 4, !tbaa !5
  %229 = load i32, ptr %3, align 4, !tbaa !5
  %230 = icmp sle i32 %228, %229
  br i1 %230, label %232, label %231

231:                                              ; preds = %227
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %339

232:                                              ; preds = %227
  %233 = load i32, ptr %14, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %234
  %236 = load i32, ptr %22, align 4, !tbaa !5
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %235, i64 0, i64 %237
  %239 = load i32, ptr %4, align 4, !tbaa !5
  %240 = sub nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [50 x [50 x i32]], ptr %238, i64 0, i64 %241
  %243 = getelementptr inbounds [50 x i32], ptr %242, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %244 = load i32, ptr %15, align 4, !tbaa !5
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %245
  %247 = load i32, ptr %22, align 4, !tbaa !5
  %248 = sub nsw i32 %247, 1
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %246, i64 0, i64 %249
  %251 = getelementptr inbounds [50 x [50 x i32]], ptr %250, i64 0, i64 0
  %252 = getelementptr inbounds [50 x i32], ptr %251, i64 0, i64 0
  %253 = load i32, ptr %252, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #7
  %254 = load i32, ptr %12, align 4, !tbaa !5
  %255 = sub nsw i32 %254, 1
  %256 = sext i32 %255 to i64
  %257 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %256)
          to label %258 unwind label %330

258:                                              ; preds = %232
  %259 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %260 = extractvalue { ptr, i64 } %257, 0
  store ptr %260, ptr %259, align 8
  %261 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %262 = extractvalue { ptr, i64 } %257, 1
  store i64 %262, ptr %261, align 8
  %263 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  %264 = zext i1 %263 to i32
  %265 = add nsw i32 %253, %264
  store i32 %265, ptr %23, align 4, !tbaa !5
  %266 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %243, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %267 unwind label %330

267:                                              ; preds = %258
  %268 = load i32, ptr %266, align 4, !tbaa !5
  %269 = load i32, ptr %14, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %270
  %272 = load i32, ptr %22, align 4, !tbaa !5
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %271, i64 0, i64 %273
  %275 = load i32, ptr %4, align 4, !tbaa !5
  %276 = sub nsw i32 %275, 1
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [50 x [50 x i32]], ptr %274, i64 0, i64 %277
  %279 = getelementptr inbounds [50 x i32], ptr %278, i64 0, i64 0
  store i32 %268, ptr %279, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  %280 = load i32, ptr %14, align 4, !tbaa !5
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %281
  %283 = load i32, ptr %22, align 4, !tbaa !5
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %282, i64 0, i64 %284
  %286 = getelementptr inbounds [50 x [50 x i32]], ptr %285, i64 0, i64 0
  %287 = load i32, ptr %4, align 4, !tbaa !5
  %288 = sub nsw i32 %287, 1
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds [50 x i32], ptr %286, i64 0, i64 %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %291 = load i32, ptr %15, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %292
  %294 = load i32, ptr %22, align 4, !tbaa !5
  %295 = sub nsw i32 %294, 1
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %293, i64 0, i64 %296
  %298 = getelementptr inbounds [50 x [50 x i32]], ptr %297, i64 0, i64 0
  %299 = getelementptr inbounds [50 x i32], ptr %298, i64 0, i64 0
  %300 = load i32, ptr %299, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #7
  %301 = load i32, ptr %12, align 4, !tbaa !5
  %302 = sub nsw i32 %301, 1
  %303 = sext i32 %302 to i64
  %304 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %303)
          to label %305 unwind label %334

305:                                              ; preds = %267
  %306 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %307 = extractvalue { ptr, i64 } %304, 0
  store ptr %307, ptr %306, align 8
  %308 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %309 = extractvalue { ptr, i64 } %304, 1
  store i64 %309, ptr %308, align 8
  %310 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %26) #7
  %311 = zext i1 %310 to i32
  %312 = add nsw i32 %300, %311
  store i32 %312, ptr %25, align 4, !tbaa !5
  %313 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %290, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %314 unwind label %334

314:                                              ; preds = %305
  %315 = load i32, ptr %313, align 4, !tbaa !5
  %316 = load i32, ptr %14, align 4, !tbaa !5
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %317
  %319 = load i32, ptr %22, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %318, i64 0, i64 %320
  %322 = getelementptr inbounds [50 x [50 x i32]], ptr %321, i64 0, i64 0
  %323 = load i32, ptr %4, align 4, !tbaa !5
  %324 = sub nsw i32 %323, 1
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [50 x i32], ptr %322, i64 0, i64 %325
  store i32 %315, ptr %326, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %327

327:                                              ; preds = %314
  %328 = load i32, ptr %22, align 4, !tbaa !5
  %329 = add nsw i32 %328, 1
  store i32 %329, ptr %22, align 4, !tbaa !5
  br label %227, !llvm.loop !12

330:                                              ; preds = %258, %232
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %7, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %338

334:                                              ; preds = %305, %267
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %7, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %338

338:                                              ; preds = %334, %330
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %706

339:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  store i32 2, ptr %27, align 4, !tbaa !5
  br label %340

340:                                              ; preds = %443, %339
  %341 = load i32, ptr %27, align 4, !tbaa !5
  %342 = load i32, ptr %3, align 4, !tbaa !5
  %343 = icmp sle i32 %341, %342
  br i1 %343, label %345, label %344

344:                                              ; preds = %340
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %446

345:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %346

346:                                              ; preds = %439, %345
  %347 = load i32, ptr %28, align 4, !tbaa !5
  %348 = load i32, ptr %4, align 4, !tbaa !5
  %349 = sub nsw i32 %348, 1
  %350 = icmp slt i32 %347, %349
  br i1 %350, label %352, label %351

351:                                              ; preds = %346
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %442

352:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %353

353:                                              ; preds = %426, %352
  %354 = load i32, ptr %29, align 4, !tbaa !5
  %355 = load i32, ptr %4, align 4, !tbaa !5
  %356 = sub nsw i32 %355, 1
  %357 = icmp slt i32 %354, %356
  br i1 %357, label %359, label %358

358:                                              ; preds = %353
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %438

359:                                              ; preds = %353
  %360 = load i32, ptr %14, align 4, !tbaa !5
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %361
  %363 = load i32, ptr %27, align 4, !tbaa !5
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %362, i64 0, i64 %364
  %366 = load i32, ptr %28, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [50 x [50 x i32]], ptr %365, i64 0, i64 %367
  %369 = load i32, ptr %29, align 4, !tbaa !5
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds [50 x i32], ptr %368, i64 0, i64 %370
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %372 = load i32, ptr %15, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %373
  %375 = load i32, ptr %27, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %374, i64 0, i64 %376
  %378 = load i32, ptr %28, align 4, !tbaa !5
  %379 = add nsw i32 %378, 1
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [50 x [50 x i32]], ptr %377, i64 0, i64 %380
  %382 = load i32, ptr %29, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds [50 x i32], ptr %381, i64 0, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #7
  %387 = load i32, ptr %12, align 4, !tbaa !5
  %388 = sub nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %389)
          to label %391 unwind label %429

391:                                              ; preds = %359
  %392 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 0
  %393 = extractvalue { ptr, i64 } %390, 0
  store ptr %393, ptr %392, align 8
  %394 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 1
  %395 = extractvalue { ptr, i64 } %390, 1
  store i64 %395, ptr %394, align 8
  %396 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %31) #7
  %397 = zext i1 %396 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #7
  %398 = load i32, ptr %12, align 4, !tbaa !5
  %399 = sub nsw i32 %398, 1
  %400 = sext i32 %399 to i64
  %401 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %400)
          to label %402 unwind label %433

402:                                              ; preds = %391
  %403 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 0
  %404 = extractvalue { ptr, i64 } %401, 0
  store ptr %404, ptr %403, align 8
  %405 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 1
  %406 = extractvalue { ptr, i64 } %401, 1
  store i64 %406, ptr %405, align 8
  %407 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  %408 = zext i1 %407 to i32
  %409 = or i32 %397, %408
  %410 = add nsw i32 %386, %409
  store i32 %410, ptr %30, align 4, !tbaa !5
  %411 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %371, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %412 unwind label %433

412:                                              ; preds = %402
  %413 = load i32, ptr %411, align 4, !tbaa !5
  %414 = load i32, ptr %14, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %415
  %417 = load i32, ptr %27, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %416, i64 0, i64 %418
  %420 = load i32, ptr %28, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [50 x [50 x i32]], ptr %419, i64 0, i64 %421
  %423 = load i32, ptr %29, align 4, !tbaa !5
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [50 x i32], ptr %422, i64 0, i64 %424
  store i32 %413, ptr %425, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  br label %426

426:                                              ; preds = %412
  %427 = load i32, ptr %29, align 4, !tbaa !5
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %29, align 4, !tbaa !5
  br label %353, !llvm.loop !13

429:                                              ; preds = %359
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %7, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %8, align 4
  br label %437

433:                                              ; preds = %402, %391
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %7, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  br label %437

437:                                              ; preds = %433, %429
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %706

438:                                              ; preds = %358
  br label %439

439:                                              ; preds = %438
  %440 = load i32, ptr %28, align 4, !tbaa !5
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %28, align 4, !tbaa !5
  br label %346, !llvm.loop !14

442:                                              ; preds = %351
  br label %443

443:                                              ; preds = %442
  %444 = load i32, ptr %27, align 4, !tbaa !5
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %27, align 4, !tbaa !5
  br label %340, !llvm.loop !15

446:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 1, ptr %33, align 4, !tbaa !5
  br label %447

447:                                              ; preds = %615, %446
  %448 = load i32, ptr %33, align 4, !tbaa !5
  %449 = load i32, ptr %3, align 4, !tbaa !5
  %450 = icmp sle i32 %448, %449
  br i1 %450, label %452, label %451

451:                                              ; preds = %447
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %618

452:                                              ; preds = %447
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %453

453:                                              ; preds = %592, %452
  %454 = load i32, ptr %34, align 4, !tbaa !5
  %455 = load i32, ptr %4, align 4, !tbaa !5
  %456 = sub nsw i32 %455, 1
  %457 = icmp slt i32 %454, %456
  br i1 %457, label %459, label %458

458:                                              ; preds = %453
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %614

459:                                              ; preds = %453
  %460 = load i32, ptr %14, align 4, !tbaa !5
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %461
  %463 = load i32, ptr %33, align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %462, i64 0, i64 %464
  %466 = load i32, ptr %4, align 4, !tbaa !5
  %467 = sub nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds [50 x [50 x i32]], ptr %465, i64 0, i64 %468
  %470 = load i32, ptr %34, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [50 x i32], ptr %469, i64 0, i64 %471
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %473 = load i32, ptr %15, align 4, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %474
  %476 = load i32, ptr %33, align 4, !tbaa !5
  %477 = sub nsw i32 %476, 1
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %475, i64 0, i64 %478
  %480 = getelementptr inbounds [50 x [50 x i32]], ptr %479, i64 0, i64 0
  %481 = load i32, ptr %34, align 4, !tbaa !5
  %482 = add nsw i32 %481, 1
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [50 x i32], ptr %480, i64 0, i64 %483
  %485 = load i32, ptr %484, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  %486 = load i32, ptr %12, align 4, !tbaa !5
  %487 = sub nsw i32 %486, 1
  %488 = sext i32 %487 to i64
  %489 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %488)
          to label %490 unwind label %595

490:                                              ; preds = %459
  %491 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 0
  %492 = extractvalue { ptr, i64 } %489, 0
  store ptr %492, ptr %491, align 8
  %493 = getelementptr inbounds { ptr, i64 }, ptr %36, i32 0, i32 1
  %494 = extractvalue { ptr, i64 } %489, 1
  store i64 %494, ptr %493, align 8
  %495 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  %496 = zext i1 %495 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %497 = load i32, ptr %12, align 4, !tbaa !5
  %498 = sub nsw i32 %497, 1
  %499 = sext i32 %498 to i64
  %500 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %499)
          to label %501 unwind label %599

501:                                              ; preds = %490
  %502 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 0
  %503 = extractvalue { ptr, i64 } %500, 0
  store ptr %503, ptr %502, align 8
  %504 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 1
  %505 = extractvalue { ptr, i64 } %500, 1
  store i64 %505, ptr %504, align 8
  %506 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  %507 = zext i1 %506 to i32
  %508 = or i32 %496, %507
  %509 = add nsw i32 %485, %508
  store i32 %509, ptr %35, align 4, !tbaa !5
  %510 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %472, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %511 unwind label %599

511:                                              ; preds = %501
  %512 = load i32, ptr %510, align 4, !tbaa !5
  %513 = load i32, ptr %14, align 4, !tbaa !5
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %514
  %516 = load i32, ptr %33, align 4, !tbaa !5
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %515, i64 0, i64 %517
  %519 = load i32, ptr %4, align 4, !tbaa !5
  %520 = sub nsw i32 %519, 1
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [50 x [50 x i32]], ptr %518, i64 0, i64 %521
  %523 = load i32, ptr %34, align 4, !tbaa !5
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds [50 x i32], ptr %522, i64 0, i64 %524
  store i32 %512, ptr %525, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  %526 = load i32, ptr %14, align 4, !tbaa !5
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %527
  %529 = load i32, ptr %33, align 4, !tbaa !5
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %528, i64 0, i64 %530
  %532 = load i32, ptr %34, align 4, !tbaa !5
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [50 x [50 x i32]], ptr %531, i64 0, i64 %533
  %535 = load i32, ptr %4, align 4, !tbaa !5
  %536 = sub nsw i32 %535, 1
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [50 x i32], ptr %534, i64 0, i64 %537
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %539 = load i32, ptr %15, align 4, !tbaa !5
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %540
  %542 = load i32, ptr %33, align 4, !tbaa !5
  %543 = sub nsw i32 %542, 1
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %541, i64 0, i64 %544
  %546 = load i32, ptr %34, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds [50 x [50 x i32]], ptr %545, i64 0, i64 %548
  %550 = getelementptr inbounds [50 x i32], ptr %549, i64 0, i64 0
  %551 = load i32, ptr %550, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #7
  %552 = load i32, ptr %12, align 4, !tbaa !5
  %553 = sub nsw i32 %552, 1
  %554 = sext i32 %553 to i64
  %555 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %554)
          to label %556 unwind label %604

556:                                              ; preds = %511
  %557 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 0
  %558 = extractvalue { ptr, i64 } %555, 0
  store ptr %558, ptr %557, align 8
  %559 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 1
  %560 = extractvalue { ptr, i64 } %555, 1
  store i64 %560, ptr %559, align 8
  %561 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  %562 = zext i1 %561 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #7
  %563 = load i32, ptr %12, align 4, !tbaa !5
  %564 = sub nsw i32 %563, 1
  %565 = sext i32 %564 to i64
  %566 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %6, i64 noundef %565)
          to label %567 unwind label %608

567:                                              ; preds = %556
  %568 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 0
  %569 = extractvalue { ptr, i64 } %566, 0
  store ptr %569, ptr %568, align 8
  %570 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 1
  %571 = extractvalue { ptr, i64 } %566, 1
  store i64 %571, ptr %570, align 8
  %572 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %40) #7
  %573 = zext i1 %572 to i32
  %574 = or i32 %562, %573
  %575 = add nsw i32 %551, %574
  store i32 %575, ptr %38, align 4, !tbaa !5
  %576 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %538, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %577 unwind label %608

577:                                              ; preds = %567
  %578 = load i32, ptr %576, align 4, !tbaa !5
  %579 = load i32, ptr %14, align 4, !tbaa !5
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %580
  %582 = load i32, ptr %33, align 4, !tbaa !5
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %581, i64 0, i64 %583
  %585 = load i32, ptr %34, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [50 x [50 x i32]], ptr %584, i64 0, i64 %586
  %588 = load i32, ptr %4, align 4, !tbaa !5
  %589 = sub nsw i32 %588, 1
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds [50 x i32], ptr %587, i64 0, i64 %590
  store i32 %578, ptr %591, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %592

592:                                              ; preds = %577
  %593 = load i32, ptr %34, align 4, !tbaa !5
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr %34, align 4, !tbaa !5
  br label %453, !llvm.loop !16

595:                                              ; preds = %459
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %7, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %8, align 4
  br label %603

599:                                              ; preds = %501, %490
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %7, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %603

603:                                              ; preds = %599, %595
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %613

604:                                              ; preds = %511
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %7, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %8, align 4
  br label %612

608:                                              ; preds = %567, %556
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %7, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #7
  br label %612

612:                                              ; preds = %608, %604
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %613

613:                                              ; preds = %612, %603
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %706

614:                                              ; preds = %458
  br label %615

615:                                              ; preds = %614
  %616 = load i32, ptr %33, align 4, !tbaa !5
  %617 = add nsw i32 %616, 1
  store i32 %617, ptr %33, align 4, !tbaa !5
  br label %447, !llvm.loop !17

618:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  store i32 0, ptr %41, align 4, !tbaa !5
  br label %619

619:                                              ; preds = %652, %618
  %620 = load i32, ptr %41, align 4, !tbaa !5
  %621 = load i32, ptr %3, align 4, !tbaa !5
  %622 = icmp sle i32 %620, %621
  br i1 %622, label %624, label %623

623:                                              ; preds = %619
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %659

624:                                              ; preds = %619
  %625 = load i32, ptr %14, align 4, !tbaa !5
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %626
  %628 = load i32, ptr %41, align 4, !tbaa !5
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %627, i64 0, i64 %629
  %631 = getelementptr inbounds [50 x [50 x i32]], ptr %630, i64 0, i64 0
  %632 = getelementptr inbounds [50 x i32], ptr %631, i64 0, i64 0
  %633 = load i32, ptr %15, align 4, !tbaa !5
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %634
  %636 = load i32, ptr %41, align 4, !tbaa !5
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %635, i64 0, i64 %637
  %639 = getelementptr inbounds [50 x [50 x i32]], ptr %638, i64 0, i64 0
  %640 = getelementptr inbounds [50 x i32], ptr %639, i64 0, i64 0
  %641 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %632, ptr noundef nonnull align 4 dereferenceable(4) %640)
          to label %642 unwind label %655

642:                                              ; preds = %624
  %643 = load i32, ptr %641, align 4, !tbaa !5
  %644 = load i32, ptr %14, align 4, !tbaa !5
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %645
  %647 = load i32, ptr %41, align 4, !tbaa !5
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %646, i64 0, i64 %648
  %650 = getelementptr inbounds [50 x [50 x i32]], ptr %649, i64 0, i64 0
  %651 = getelementptr inbounds [50 x i32], ptr %650, i64 0, i64 0
  store i32 %643, ptr %651, align 16, !tbaa !5
  br label %652

652:                                              ; preds = %642
  %653 = load i32, ptr %41, align 4, !tbaa !5
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr %41, align 4, !tbaa !5
  br label %619, !llvm.loop !18

655:                                              ; preds = %624
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %7, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %706

659:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !5
  br label %660

660:                                              ; preds = %699, %659
  %661 = load i32, ptr %42, align 4, !tbaa !5
  %662 = load i32, ptr %3, align 4, !tbaa !5
  %663 = icmp sle i32 %661, %662
  br i1 %663, label %665, label %664

664:                                              ; preds = %660
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %702

665:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %666

666:                                              ; preds = %695, %665
  %667 = load i32, ptr %43, align 4, !tbaa !5
  %668 = load i32, ptr %4, align 4, !tbaa !5
  %669 = icmp slt i32 %667, %668
  br i1 %669, label %671, label %670

670:                                              ; preds = %666
  store i32 35, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %698

671:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  store i32 0, ptr %44, align 4, !tbaa !5
  br label %672

672:                                              ; preds = %691, %671
  %673 = load i32, ptr %44, align 4, !tbaa !5
  %674 = load i32, ptr %4, align 4, !tbaa !5
  %675 = icmp slt i32 %673, %674
  br i1 %675, label %677, label %676

676:                                              ; preds = %672
  store i32 38, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %694

677:                                              ; preds = %672
  %678 = call noundef i32 @_ZNSt14numeric_limitsIiE3minEv() #7
  %679 = load i32, ptr %15, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %680
  %682 = load i32, ptr %42, align 4, !tbaa !5
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %681, i64 0, i64 %683
  %685 = load i32, ptr %43, align 4, !tbaa !5
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds [50 x [50 x i32]], ptr %684, i64 0, i64 %686
  %688 = load i32, ptr %44, align 4, !tbaa !5
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds [50 x i32], ptr %687, i64 0, i64 %689
  store i32 %678, ptr %690, align 4, !tbaa !5
  br label %691

691:                                              ; preds = %677
  %692 = load i32, ptr %44, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr %44, align 4, !tbaa !5
  br label %672, !llvm.loop !19

694:                                              ; preds = %676
  br label %695

695:                                              ; preds = %694
  %696 = load i32, ptr %43, align 4, !tbaa !5
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr %43, align 4, !tbaa !5
  br label %666, !llvm.loop !20

698:                                              ; preds = %670
  br label %699

699:                                              ; preds = %698
  %700 = load i32, ptr %42, align 4, !tbaa !5
  %701 = add nsw i32 %700, 1
  store i32 %701, ptr %42, align 4, !tbaa !5
  br label %660, !llvm.loop !21

702:                                              ; preds = %664
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %703

703:                                              ; preds = %702
  %704 = load i32, ptr %12, align 4, !tbaa !5
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr %12, align 4, !tbaa !5
  br label %80, !llvm.loop !22

706:                                              ; preds = %655, %613, %437, %338, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %769

707:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  store i32 0, ptr %45, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  store i32 1, ptr %46, align 4, !tbaa !5
  br label %708

708:                                              ; preds = %754, %707
  %709 = load i32, ptr %46, align 4, !tbaa !5
  %710 = load i32, ptr %3, align 4, !tbaa !5
  %711 = icmp sle i32 %709, %710
  br i1 %711, label %713, label %712

712:                                              ; preds = %708
  store i32 41, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %757

713:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %714

714:                                              ; preds = %750, %713
  %715 = load i32, ptr %47, align 4, !tbaa !5
  %716 = load i32, ptr %4, align 4, !tbaa !5
  %717 = icmp slt i32 %715, %716
  br i1 %717, label %719, label %718

718:                                              ; preds = %714
  store i32 44, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %753

719:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  store i32 0, ptr %48, align 4, !tbaa !5
  br label %720

720:                                              ; preds = %742, %719
  %721 = load i32, ptr %48, align 4, !tbaa !5
  %722 = load i32, ptr %4, align 4, !tbaa !5
  %723 = icmp slt i32 %721, %722
  br i1 %723, label %725, label %724

724:                                              ; preds = %720
  store i32 47, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %749

725:                                              ; preds = %720
  %726 = load i32, ptr %2, align 4, !tbaa !5
  %727 = srem i32 %726, 2
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %10, i64 0, i64 %728
  %730 = load i32, ptr %46, align 4, !tbaa !5
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds [1001 x [50 x [50 x i32]]], ptr %729, i64 0, i64 %731
  %733 = load i32, ptr %47, align 4, !tbaa !5
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds [50 x [50 x i32]], ptr %732, i64 0, i64 %734
  %736 = load i32, ptr %48, align 4, !tbaa !5
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds [50 x i32], ptr %735, i64 0, i64 %737
  %739 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %738)
          to label %740 unwind label %745

740:                                              ; preds = %725
  %741 = load i32, ptr %739, align 4, !tbaa !5
  store i32 %741, ptr %45, align 4, !tbaa !5
  br label %742

742:                                              ; preds = %740
  %743 = load i32, ptr %48, align 4, !tbaa !5
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %48, align 4, !tbaa !5
  br label %720, !llvm.loop !23

745:                                              ; preds = %725
  %746 = landingpad { ptr, i32 }
          cleanup
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %7, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %768

749:                                              ; preds = %724
  br label %750

750:                                              ; preds = %749
  %751 = load i32, ptr %47, align 4, !tbaa !5
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %47, align 4, !tbaa !5
  br label %714, !llvm.loop !24

753:                                              ; preds = %718
  br label %754

754:                                              ; preds = %753
  %755 = load i32, ptr %46, align 4, !tbaa !5
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %46, align 4, !tbaa !5
  br label %708, !llvm.loop !25

757:                                              ; preds = %712
  %758 = load i32, ptr %45, align 4, !tbaa !5
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %758)
          to label %760 unwind label %764

760:                                              ; preds = %757
  %761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %762 unwind label %764

762:                                              ; preds = %760
  store i32 0, ptr %1, align 4
  store i32 1, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 20020000, ptr %10) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  %763 = load i32, ptr %1, align 4
  ret i32 %763

764:                                              ; preds = %760, %757
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %7, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %8, align 4
  br label %768

768:                                              ; preds = %764, %745
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %769

769:                                              ; preds = %768, %706, %93
  call void @llvm.lifetime.end.p0(i64 20020000, ptr %10) #7
  br label %770

770:                                              ; preds = %769, %89
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #7
  br label %771

771:                                              ; preds = %770, %85
  call void @llvm.lifetime.end.p0(i64 40, ptr %6) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  br label %772

772:                                              ; preds = %771
  %773 = load ptr, ptr %7, align 8
  %774 = load i32, ptr %8, align 4
  %775 = insertvalue { ptr, i32 } poison, ptr %773, 0
  %776 = insertvalue { ptr, i32 } %775, i32 %774, 1
  resume { ptr, i32 } %776
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIPiiEvT_S1_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIiE3minEv() #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::vector" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_reference" = type { ptr, i64 }

@_ZSt3cin = external global %"class.std::basic_istream", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z11load_geniusi(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #3 align 2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca i32, align 4
  %7 = alloca [2 x [1001 x [50 x [50 x i32]]]], align 16
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"struct.std::_Bit_reference", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"struct.std::_Bit_reference", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.std::_Bit_reference", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"struct.std::_Bit_reference", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.std::_Bit_reference", align 8
  %19 = alloca %"struct.std::_Bit_reference", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca %"struct.std::_Bit_reference", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"struct.std::_Bit_reference", align 8
  %25 = alloca %"struct.std::_Bit_reference", align 8
  %26 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #7
  %27 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %1)
  %28 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %29 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 4 dereferenceable(4) %3)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #7
  %30 = load i32, ptr %1, align 4, !tbaa !5
  call void @_Z11load_geniusi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %4, i32 noundef %30)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #7
  %31 = load i32, ptr %1, align 4, !tbaa !5
  invoke void @_Z11load_geniusi(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %5, i32 noundef %31)
          to label %32 unwind label %58

32:                                               ; preds = %0
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  %33 = load i32, ptr %1, align 4, !tbaa !5
  %34 = load i32, ptr %3, align 4, !tbaa !5
  %35 = add i32 %33, -1
  %36 = add i32 %35, %34
  %37 = sdiv i32 %36, %34
  %38 = shl nsw i32 %37, 1
  store i32 %38, ptr %6, align 4, !tbaa !5
  %39 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %40 = load i32, ptr %39, align 4, !tbaa !5
  store i32 %40, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 20020000, ptr nonnull %7) #7
  %41 = getelementptr inbounds i8, ptr %7, i64 20020000
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %42 = call noundef i32 @_ZNSt14numeric_limitsIiE3minEv() #7
  store i32 %42, ptr %8, align 4, !tbaa !5
  invoke void @_ZSt4fillIPiiEvT_S1_RKT0_(ptr noundef nonnull %7, ptr noundef nonnull %41, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %43 unwind label %60

43:                                               ; preds = %32
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  store i32 0, ptr %7, align 16, !tbaa !5
  %44 = load i32, ptr %1, align 4, !tbaa !5
  %.not206 = icmp slt i32 %44, 1
  %.pre278 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not206, label %._crit_edge210, label %.lr.ph209

.lr.ph209:                                        ; preds = %43
  %45 = getelementptr inbounds i8, ptr %10, i64 8
  %46 = getelementptr inbounds i8, ptr %12, i64 8
  %47 = getelementptr inbounds i8, ptr %14, i64 8
  %48 = getelementptr inbounds i8, ptr %16, i64 8
  %49 = getelementptr inbounds i8, ptr %18, i64 8
  %50 = getelementptr inbounds i8, ptr %19, i64 8
  %51 = getelementptr inbounds i8, ptr %21, i64 8
  %52 = getelementptr inbounds i8, ptr %22, i64 8
  %53 = getelementptr inbounds i8, ptr %24, i64 8
  %54 = getelementptr inbounds i8, ptr %25, i64 8
  br label %62

._crit_edge210:                                   ; preds = %._crit_edge205, %43
  %55 = phi i32 [ %.pre278, %43 ], [ %318, %._crit_edge205 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  store i32 0, ptr %26, align 4, !tbaa !5
  %.not145216 = icmp sgt i32 %55, 0
  %56 = load i32, ptr %3, align 4
  %57 = icmp sgt i32 %56, 0
  %or.cond = select i1 %.not145216, i1 %57, i1 false
  br i1 %or.cond, label %.preheader165, label %._crit_edge218

58:                                               ; preds = %0
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %374

60:                                               ; preds = %32
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %373

62:                                               ; preds = %.lr.ph209, %._crit_edge205
  %63 = phi i32 [ %.pre278, %.lr.ph209 ], [ %318, %._crit_edge205 ]
  %64 = phi i32 [ %.pre278, %.lr.ph209 ], [ %319, %._crit_edge205 ]
  %indvars.iv259 = phi i64 [ 1, %.lr.ph209 ], [ %indvars.iv.next260, %._crit_edge205 ]
  %65 = trunc nuw nsw i64 %indvars.iv259 to i32
  %66 = and i32 %65, 1
  %67 = xor i32 %66, 1
  %.not146178 = icmp slt i32 %64, 1
  br i1 %.not146178, label %.preheader173, label %.preheader171.lr.ph

.preheader171.lr.ph:                              ; preds = %62
  %68 = zext nneg i32 %67 to i64
  %69 = add nsw i64 %indvars.iv259, -1
  %70 = and i64 %indvars.iv259, 1
  %71 = load i32, ptr %3, align 4, !tbaa !5
  %72 = icmp sgt i32 %71, 1
  br i1 %72, label %.preheader171, label %.lr.ph182

.preheader176:                                    ; preds = %._crit_edge
  %.not147180 = icmp slt i32 %85, 1
  br i1 %.not147180, label %.preheader173, label %.lr.ph182

.lr.ph182:                                        ; preds = %.preheader171.lr.ph, %.preheader176
  %73 = and i64 %indvars.iv259, 1
  %74 = zext nneg i32 %67 to i64
  %75 = add nsw i64 %indvars.iv259, -1
  %.pre272 = load i32, ptr %3, align 4, !tbaa !5
  br label %126

.preheader171:                                    ; preds = %.preheader171.lr.ph, %._crit_edge
  %76 = phi i32 [ %83, %._crit_edge ], [ %63, %.preheader171.lr.ph ]
  %77 = phi i32 [ %84, %._crit_edge ], [ %64, %.preheader171.lr.ph ]
  %78 = phi i32 [ %85, %._crit_edge ], [ %64, %.preheader171.lr.ph ]
  %79 = phi i32 [ %86, %._crit_edge ], [ %71, %.preheader171.lr.ph ]
  %indvars.iv226 = phi i64 [ %indvars.iv.next227, %._crit_edge ], [ 1, %.preheader171.lr.ph ]
  %80 = icmp sgt i32 %79, 1
  br i1 %80, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader171
  %81 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %68, i64 %indvars.iv226
  %82 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %70, i64 %indvars.iv226
  br label %88

._crit_edge.loopexit:                             ; preds = %104
  %.pre271 = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader171
  %83 = phi i32 [ %.pre271, %._crit_edge.loopexit ], [ %76, %.preheader171 ]
  %84 = phi i32 [ %.pre271, %._crit_edge.loopexit ], [ %77, %.preheader171 ]
  %85 = phi i32 [ %.pre271, %._crit_edge.loopexit ], [ %78, %.preheader171 ]
  %86 = phi i32 [ %113, %._crit_edge.loopexit ], [ %79, %.preheader171 ]
  %indvars.iv.next227 = add nuw nsw i64 %indvars.iv226, 1
  %87 = sext i32 %85 to i64
  %.not146.not = icmp slt i64 %indvars.iv226, %87
  br i1 %.not146.not, label %.preheader171, label %.preheader176, !llvm.loop !9

88:                                               ; preds = %.lr.ph, %104
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %104 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %89 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %68, i64 %indvars.iv226, i64 %indvars.iv.next
  %90 = load i32, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  %91 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %69)
          to label %92 unwind label %117

92:                                               ; preds = %88
  %93 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %70, i64 %indvars.iv226, i64 %indvars.iv
  %94 = extractvalue { ptr, i64 } %91, 0
  store ptr %94, ptr %10, align 8
  %95 = extractvalue { ptr, i64 } %91, 1
  store i64 %95, ptr %45, align 8
  %96 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  %97 = zext i1 %96 to i32
  %98 = add nsw i32 %90, %97
  store i32 %98, ptr %9, align 4, !tbaa !5
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %93, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %100 = load i32, ptr %99, align 4, !tbaa !5
  store i32 %100, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %101 = getelementptr inbounds [50 x i32], ptr %81, i64 0, i64 %indvars.iv.next
  %102 = load i32, ptr %101, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  %103 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %69)
          to label %104 unwind label %119

104:                                              ; preds = %92
  %105 = getelementptr inbounds [50 x i32], ptr %82, i64 0, i64 %indvars.iv
  %106 = extractvalue { ptr, i64 } %103, 0
  store ptr %106, ptr %12, align 8
  %107 = extractvalue { ptr, i64 } %103, 1
  store i64 %107, ptr %46, align 8
  %108 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  %109 = zext i1 %108 to i32
  %110 = add nsw i32 %102, %109
  store i32 %110, ptr %11, align 4, !tbaa !5
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %105, ptr noundef nonnull align 4 dereferenceable(4) %11)
  %112 = load i32, ptr %111, align 4, !tbaa !5
  store i32 %112, ptr %105, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  %113 = load i32, ptr %3, align 4, !tbaa !5
  %114 = add nsw i32 %113, -1
  %115 = sext i32 %114 to i64
  %116 = icmp slt i64 %indvars.iv.next, %115
  br i1 %116, label %88, label %._crit_edge.loopexit, !llvm.loop !12

117:                                              ; preds = %88
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %373

119:                                              ; preds = %92
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %373

.preheader175:                                    ; preds = %150
  %.not148188 = icmp slt i32 %163, 2
  br i1 %.not148188, label %.preheader174, label %.preheader170.lr.ph

.preheader170.lr.ph:                              ; preds = %.preheader175
  %121 = and i64 %indvars.iv259, 1
  %122 = zext nneg i32 %67 to i64
  %123 = add nsw i64 %indvars.iv259, -1
  %124 = load i32, ptr %3, align 4, !tbaa !5
  %125 = icmp sgt i32 %124, 1
  br i1 %125, label %.preheader170, label %.preheader169.lr.ph

126:                                              ; preds = %.lr.ph182, %150
  %127 = phi i32 [ %.pre272, %.lr.ph182 ], [ %159, %150 ]
  %indvars.iv229 = phi i64 [ 1, %.lr.ph182 ], [ %indvars.iv.next230, %150 ]
  %128 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %73, i64 %indvars.iv229
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  %129 = add nsw i64 %indvars.iv229, -1
  %130 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %74, i64 %129
  %131 = load i32, ptr %130, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  %132 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %75)
          to label %133 unwind label %165

133:                                              ; preds = %126
  %134 = add nsw i32 %127, -1
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %73, i64 %indvars.iv229, i64 %135
  %137 = extractvalue { ptr, i64 } %132, 0
  store ptr %137, ptr %14, align 8
  %138 = extractvalue { ptr, i64 } %132, 1
  store i64 %138, ptr %47, align 8
  %139 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  %140 = zext i1 %139 to i32
  %141 = add nsw i32 %131, %140
  store i32 %141, ptr %13, align 4, !tbaa !5
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %136, ptr noundef nonnull align 4 dereferenceable(4) %13)
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = load i32, ptr %3, align 4, !tbaa !5
  %145 = add nsw i32 %144, -1
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %73, i64 %indvars.iv229, i64 %146
  store i32 %143, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %148 = load i32, ptr %130, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  %149 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %75)
          to label %150 unwind label %167

150:                                              ; preds = %133
  %151 = getelementptr inbounds [50 x i32], ptr %128, i64 0, i64 %146
  %152 = extractvalue { ptr, i64 } %149, 0
  store ptr %152, ptr %16, align 8
  %153 = extractvalue { ptr, i64 } %149, 1
  store i64 %153, ptr %48, align 8
  %154 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  %155 = zext i1 %154 to i32
  %156 = add nsw i32 %148, %155
  store i32 %156, ptr %15, align 4, !tbaa !5
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %151, ptr noundef nonnull align 4 dereferenceable(4) %15)
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = load i32, ptr %3, align 4, !tbaa !5
  %160 = add nsw i32 %159, -1
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds [50 x i32], ptr %128, i64 0, i64 %161
  store i32 %158, ptr %162, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1
  %163 = load i32, ptr %2, align 4, !tbaa !5
  %164 = sext i32 %163 to i64
  %.not147.not = icmp slt i64 %indvars.iv229, %164
  br i1 %.not147.not, label %126, label %.preheader175, !llvm.loop !13

165:                                              ; preds = %126
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  br label %373

167:                                              ; preds = %133
  %168 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  br label %373

.preheader174:                                    ; preds = %._crit_edge187, %.preheader175
  %169 = phi i32 [ %163, %.preheader175 ], [ %190, %._crit_edge187 ]
  %170 = phi i32 [ %163, %.preheader175 ], [ %191, %._crit_edge187 ]
  %171 = phi i32 [ %163, %.preheader175 ], [ %192, %._crit_edge187 ]
  %.not149193 = icmp slt i32 %171, 1
  br i1 %.not149193, label %.preheader173, label %.preheader169.lr.ph

.preheader169.lr.ph:                              ; preds = %.preheader170.lr.ph, %.preheader174
  %172 = phi i32 [ %171, %.preheader174 ], [ %163, %.preheader170.lr.ph ]
  %173 = phi i32 [ %170, %.preheader174 ], [ %163, %.preheader170.lr.ph ]
  %174 = phi i32 [ %169, %.preheader174 ], [ %163, %.preheader170.lr.ph ]
  %175 = and i64 %indvars.iv259, 1
  %176 = zext nneg i32 %67 to i64
  %177 = add nsw i64 %indvars.iv259, -1
  %.pre274 = load i32, ptr %3, align 4, !tbaa !5
  br label %.preheader169

.preheader170:                                    ; preds = %.preheader170.lr.ph, %._crit_edge187
  %178 = phi i32 [ %190, %._crit_edge187 ], [ %163, %.preheader170.lr.ph ]
  %179 = phi i32 [ %191, %._crit_edge187 ], [ %163, %.preheader170.lr.ph ]
  %180 = phi i32 [ %192, %._crit_edge187 ], [ %163, %.preheader170.lr.ph ]
  %181 = phi i32 [ %193, %._crit_edge187 ], [ %124, %.preheader170.lr.ph ]
  %182 = phi i32 [ %194, %._crit_edge187 ], [ %124, %.preheader170.lr.ph ]
  %183 = phi i32 [ %195, %._crit_edge187 ], [ %124, %.preheader170.lr.ph ]
  %indvars.iv238 = phi i64 [ %indvars.iv.next239, %._crit_edge187 ], [ 2, %.preheader170.lr.ph ]
  %184 = icmp sgt i32 %183, 1
  br i1 %184, label %.preheader167.lr.ph, label %._crit_edge187

.preheader167.lr.ph:                              ; preds = %.preheader170
  %185 = icmp sgt i32 %182, 1
  br i1 %185, label %.preheader167, label %._crit_edge187

.preheader167:                                    ; preds = %.preheader167.lr.ph, %._crit_edge185
  %186 = phi i32 [ %197, %._crit_edge185 ], [ %181, %.preheader167.lr.ph ]
  %187 = phi i32 [ %197, %._crit_edge185 ], [ %182, %.preheader167.lr.ph ]
  %indvars.iv235 = phi i64 [ %189, %._crit_edge185 ], [ 0, %.preheader167.lr.ph ]
  %188 = icmp sgt i32 %187, 1
  %189 = add nuw nsw i64 %indvars.iv235, 1
  br i1 %188, label %.lr.ph184, label %.preheader167.._crit_edge185_crit_edge

.preheader167.._crit_edge185_crit_edge:           ; preds = %.preheader167
  %.pre283 = add nsw i32 %186, -1
  %.pre285 = sext i32 %.pre283 to i64
  br label %._crit_edge185

._crit_edge187.loopexit:                          ; preds = %._crit_edge185
  %.pre273 = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge187

._crit_edge187:                                   ; preds = %.preheader167.lr.ph, %._crit_edge187.loopexit, %.preheader170
  %190 = phi i32 [ %.pre273, %._crit_edge187.loopexit ], [ %178, %.preheader170 ], [ %178, %.preheader167.lr.ph ]
  %191 = phi i32 [ %.pre273, %._crit_edge187.loopexit ], [ %179, %.preheader170 ], [ %179, %.preheader167.lr.ph ]
  %192 = phi i32 [ %.pre273, %._crit_edge187.loopexit ], [ %180, %.preheader170 ], [ %180, %.preheader167.lr.ph ]
  %193 = phi i32 [ %197, %._crit_edge187.loopexit ], [ %181, %.preheader170 ], [ %181, %.preheader167.lr.ph ]
  %194 = phi i32 [ %197, %._crit_edge187.loopexit ], [ %182, %.preheader170 ], [ %182, %.preheader167.lr.ph ]
  %195 = phi i32 [ %197, %._crit_edge187.loopexit ], [ %183, %.preheader170 ], [ %182, %.preheader167.lr.ph ]
  %indvars.iv.next239 = add nuw nsw i64 %indvars.iv238, 1
  %196 = sext i32 %192 to i64
  %.not148.not = icmp slt i64 %indvars.iv238, %196
  br i1 %.not148.not, label %.preheader170, label %.preheader174, !llvm.loop !14

._crit_edge185:                                   ; preds = %208, %.preheader167.._crit_edge185_crit_edge
  %.pre-phi286 = phi i64 [ %.pre285, %.preheader167.._crit_edge185_crit_edge ], [ %219, %208 ]
  %197 = phi i32 [ %186, %.preheader167.._crit_edge185_crit_edge ], [ %217, %208 ]
  %198 = icmp slt i64 %189, %.pre-phi286
  br i1 %198, label %.preheader167, label %._crit_edge187.loopexit, !llvm.loop !15

.lr.ph184:                                        ; preds = %.preheader167, %208
  %indvars.iv232 = phi i64 [ %indvars.iv.next233, %208 ], [ 0, %.preheader167 ]
  %199 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %121, i64 %indvars.iv238, i64 %indvars.iv235, i64 %indvars.iv232
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  %indvars.iv.next233 = add nuw nsw i64 %indvars.iv232, 1
  %200 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %122, i64 %indvars.iv238, i64 %189, i64 %indvars.iv.next233
  %201 = load i32, ptr %200, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  %202 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %123)
          to label %203 unwind label %221

203:                                              ; preds = %.lr.ph184
  %204 = extractvalue { ptr, i64 } %202, 0
  store ptr %204, ptr %18, align 8
  %205 = extractvalue { ptr, i64 } %202, 1
  store i64 %205, ptr %49, align 8
  %206 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  %207 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %123)
          to label %208 unwind label %223

208:                                              ; preds = %203
  %209 = extractvalue { ptr, i64 } %207, 0
  store ptr %209, ptr %19, align 8
  %210 = extractvalue { ptr, i64 } %207, 1
  store i64 %210, ptr %50, align 8
  %211 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  %212 = or i1 %206, %211
  %213 = zext i1 %212 to i32
  %214 = add nsw i32 %201, %213
  store i32 %214, ptr %17, align 4, !tbaa !5
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %199, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %216 = load i32, ptr %215, align 4, !tbaa !5
  store i32 %216, ptr %199, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  %217 = load i32, ptr %3, align 4, !tbaa !5
  %218 = add nsw i32 %217, -1
  %219 = sext i32 %218 to i64
  %220 = icmp slt i64 %indvars.iv.next233, %219
  br i1 %220, label %.lr.ph184, label %._crit_edge185, !llvm.loop !16

221:                                              ; preds = %.lr.ph184
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %203
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  br label %225

225:                                              ; preds = %223, %221
  %.pn156 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  br label %373

.preheader173:                                    ; preds = %._crit_edge192, %.preheader176, %62, %.preheader174
  %226 = phi i32 [ %169, %.preheader174 ], [ %83, %.preheader176 ], [ %63, %62 ], [ %239, %._crit_edge192 ]
  %227 = phi i32 [ %170, %.preheader174 ], [ %84, %.preheader176 ], [ %64, %62 ], [ %240, %._crit_edge192 ]
  %228 = phi i32 [ %171, %.preheader174 ], [ %85, %.preheader176 ], [ %64, %62 ], [ %241, %._crit_edge192 ]
  %.not150195 = icmp slt i32 %228, 0
  br i1 %.not150195, label %.preheader172, label %.lr.ph197

.lr.ph197:                                        ; preds = %.preheader173
  %229 = and i64 %indvars.iv259, 1
  %230 = zext nneg i32 %67 to i64
  br label %305

.preheader169:                                    ; preds = %.preheader169.lr.ph, %._crit_edge192
  %231 = phi i32 [ %174, %.preheader169.lr.ph ], [ %239, %._crit_edge192 ]
  %232 = phi i32 [ %173, %.preheader169.lr.ph ], [ %240, %._crit_edge192 ]
  %233 = phi i32 [ %172, %.preheader169.lr.ph ], [ %241, %._crit_edge192 ]
  %234 = phi i32 [ %.pre274, %.preheader169.lr.ph ], [ %242, %._crit_edge192 ]
  %indvars.iv244 = phi i64 [ 1, %.preheader169.lr.ph ], [ %indvars.iv.next245, %._crit_edge192 ]
  %235 = icmp sgt i32 %234, 1
  br i1 %235, label %.lr.ph191, label %._crit_edge192

.lr.ph191:                                        ; preds = %.preheader169
  %236 = add nsw i32 %234, -1
  %237 = add nsw i64 %indvars.iv244, -1
  %238 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %176, i64 %237
  br label %244

._crit_edge192.loopexit:                          ; preds = %278
  %.pre275 = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge192

._crit_edge192:                                   ; preds = %._crit_edge192.loopexit, %.preheader169
  %239 = phi i32 [ %.pre275, %._crit_edge192.loopexit ], [ %231, %.preheader169 ]
  %240 = phi i32 [ %.pre275, %._crit_edge192.loopexit ], [ %232, %.preheader169 ]
  %241 = phi i32 [ %.pre275, %._crit_edge192.loopexit ], [ %233, %.preheader169 ]
  %242 = phi i32 [ %287, %._crit_edge192.loopexit ], [ %234, %.preheader169 ]
  %indvars.iv.next245 = add nuw nsw i64 %indvars.iv244, 1
  %243 = sext i32 %241 to i64
  %.not149.not = icmp slt i64 %indvars.iv244, %243
  br i1 %.not149.not, label %.preheader169, label %.preheader173, !llvm.loop !17

244:                                              ; preds = %.lr.ph191, %278
  %indvars.iv241 = phi i64 [ 0, %.lr.ph191 ], [ %indvars.iv.next242, %278 ]
  %245 = phi i32 [ %236, %.lr.ph191 ], [ %288, %278 ]
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %175, i64 %indvars.iv244, i64 %246, i64 %indvars.iv241
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1
  %248 = getelementptr inbounds [50 x i32], ptr %238, i64 0, i64 %indvars.iv.next242
  %249 = load i32, ptr %248, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #7
  %250 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %177)
          to label %251 unwind label %292

251:                                              ; preds = %244
  %252 = extractvalue { ptr, i64 } %250, 0
  store ptr %252, ptr %21, align 8
  %253 = extractvalue { ptr, i64 } %250, 1
  store i64 %253, ptr %51, align 8
  %254 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  %255 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %177)
          to label %256 unwind label %294

256:                                              ; preds = %251
  %257 = extractvalue { ptr, i64 } %255, 0
  store ptr %257, ptr %22, align 8
  %258 = extractvalue { ptr, i64 } %255, 1
  store i64 %258, ptr %52, align 8
  %259 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  %260 = or i1 %254, %259
  %261 = zext i1 %260 to i32
  %262 = add nsw i32 %249, %261
  store i32 %262, ptr %20, align 4, !tbaa !5
  %263 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %247, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %264 = load i32, ptr %263, align 4, !tbaa !5
  %265 = load i32, ptr %3, align 4, !tbaa !5
  %266 = add nsw i32 %265, -1
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %175, i64 %indvars.iv244, i64 %267, i64 %indvars.iv241
  store i32 %264, ptr %268, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  %269 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %175, i64 %indvars.iv244, i64 %indvars.iv241, i64 %267
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %270 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %176, i64 %237, i64 %indvars.iv.next242
  %271 = load i32, ptr %270, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  %272 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %4, i64 noundef %177)
          to label %273 unwind label %297

273:                                              ; preds = %256
  %274 = extractvalue { ptr, i64 } %272, 0
  store ptr %274, ptr %24, align 8
  %275 = extractvalue { ptr, i64 } %272, 1
  store i64 %275, ptr %53, align 8
  %276 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #7
  %277 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %5, i64 noundef %177)
          to label %278 unwind label %299

278:                                              ; preds = %273
  %279 = extractvalue { ptr, i64 } %277, 0
  store ptr %279, ptr %25, align 8
  %280 = extractvalue { ptr, i64 } %277, 1
  store i64 %280, ptr %54, align 8
  %281 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #7
  %282 = or i1 %276, %281
  %283 = zext i1 %282 to i32
  %284 = add nsw i32 %271, %283
  store i32 %284, ptr %23, align 4, !tbaa !5
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %269, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = load i32, ptr %3, align 4, !tbaa !5
  %288 = add nsw i32 %287, -1
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %175, i64 %indvars.iv244, i64 %indvars.iv241, i64 %289
  store i32 %286, ptr %290, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  %291 = icmp slt i64 %indvars.iv.next242, %289
  br i1 %291, label %244, label %._crit_edge192.loopexit, !llvm.loop !18

292:                                              ; preds = %244
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %296

294:                                              ; preds = %251
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  br label %296

296:                                              ; preds = %294, %292
  %.pn = phi { ptr, i32 } [ %295, %294 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  br label %373

297:                                              ; preds = %256
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %301

299:                                              ; preds = %273
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #7
  br label %301

301:                                              ; preds = %299, %297
  %.pn153 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  br label %373

.preheader172:                                    ; preds = %305, %.preheader173
  %302 = phi i32 [ %226, %.preheader173 ], [ %310, %305 ]
  %303 = phi i32 [ %227, %.preheader173 ], [ %310, %305 ]
  %.not151203 = icmp slt i32 %303, 0
  br i1 %.not151203, label %._crit_edge205, label %.preheader168.lr.ph

.preheader168.lr.ph:                              ; preds = %.preheader172
  %304 = zext nneg i32 %67 to i64
  %.pre276 = load i32, ptr %3, align 4, !tbaa !5
  br label %.preheader168

305:                                              ; preds = %.lr.ph197, %305
  %indvars.iv247 = phi i64 [ 0, %.lr.ph197 ], [ %indvars.iv.next248, %305 ]
  %306 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %229, i64 %indvars.iv247
  %307 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %230, i64 %indvars.iv247
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %306, ptr noundef nonnull align 4 dereferenceable(4) %307)
  %309 = load i32, ptr %308, align 4, !tbaa !5
  store i32 %309, ptr %306, align 16, !tbaa !5
  %indvars.iv.next248 = add nuw nsw i64 %indvars.iv247, 1
  %310 = load i32, ptr %2, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %.not150.not = icmp slt i64 %indvars.iv247, %311
  br i1 %.not150.not, label %305, label %.preheader172, !llvm.loop !19

.preheader168:                                    ; preds = %.preheader168.lr.ph, %._crit_edge202
  %312 = phi i32 [ %302, %.preheader168.lr.ph ], [ %325, %._crit_edge202 ]
  %313 = phi i32 [ %.pre276, %.preheader168.lr.ph ], [ %326, %._crit_edge202 ]
  %314 = phi i32 [ %.pre276, %.preheader168.lr.ph ], [ %327, %._crit_edge202 ]
  %315 = phi i32 [ %.pre276, %.preheader168.lr.ph ], [ %328, %._crit_edge202 ]
  %indvars.iv256 = phi i64 [ 0, %.preheader168.lr.ph ], [ %indvars.iv.next257, %._crit_edge202 ]
  %316 = icmp sgt i32 %315, 0
  br i1 %316, label %.preheader166.lr.ph, label %._crit_edge202

.preheader166.lr.ph:                              ; preds = %.preheader168
  %317 = icmp sgt i32 %314, 0
  br i1 %317, label %.preheader166, label %._crit_edge202

._crit_edge205:                                   ; preds = %._crit_edge202, %.preheader172
  %318 = phi i32 [ %302, %.preheader172 ], [ %325, %._crit_edge202 ]
  %319 = phi i32 [ %303, %.preheader172 ], [ %325, %._crit_edge202 ]
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1
  %320 = load i32, ptr %1, align 4, !tbaa !5
  %321 = sext i32 %320 to i64
  %.not.not = icmp slt i64 %indvars.iv259, %321
  br i1 %.not.not, label %62, label %._crit_edge210, !llvm.loop !20

.preheader166:                                    ; preds = %.preheader166.lr.ph, %._crit_edge200
  %322 = phi i32 [ %330, %._crit_edge200 ], [ %313, %.preheader166.lr.ph ]
  %323 = phi i32 [ %330, %._crit_edge200 ], [ %314, %.preheader166.lr.ph ]
  %indvars.iv253 = phi i64 [ %indvars.iv.next254, %._crit_edge200 ], [ 0, %.preheader166.lr.ph ]
  %324 = icmp sgt i32 %323, 0
  br i1 %324, label %.lr.ph199, label %.preheader166.._crit_edge200_crit_edge

.preheader166.._crit_edge200_crit_edge:           ; preds = %.preheader166
  %.pre280 = sext i32 %322 to i64
  br label %._crit_edge200

._crit_edge202.loopexit:                          ; preds = %._crit_edge200
  %.pre277 = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge202

._crit_edge202:                                   ; preds = %.preheader166.lr.ph, %._crit_edge202.loopexit, %.preheader168
  %325 = phi i32 [ %.pre277, %._crit_edge202.loopexit ], [ %312, %.preheader168 ], [ %312, %.preheader166.lr.ph ]
  %326 = phi i32 [ %330, %._crit_edge202.loopexit ], [ %313, %.preheader168 ], [ %313, %.preheader166.lr.ph ]
  %327 = phi i32 [ %330, %._crit_edge202.loopexit ], [ %314, %.preheader168 ], [ %314, %.preheader166.lr.ph ]
  %328 = phi i32 [ %330, %._crit_edge202.loopexit ], [ %315, %.preheader168 ], [ %314, %.preheader166.lr.ph ]
  %indvars.iv.next257 = add nuw nsw i64 %indvars.iv256, 1
  %329 = sext i32 %325 to i64
  %.not151.not = icmp slt i64 %indvars.iv256, %329
  br i1 %.not151.not, label %.preheader168, label %._crit_edge205, !llvm.loop !21

._crit_edge200:                                   ; preds = %.lr.ph199, %.preheader166.._crit_edge200_crit_edge
  %.pre-phi281 = phi i64 [ %.pre280, %.preheader166.._crit_edge200_crit_edge ], [ %335, %.lr.ph199 ]
  %330 = phi i32 [ %322, %.preheader166.._crit_edge200_crit_edge ], [ %334, %.lr.ph199 ]
  %indvars.iv.next254 = add nuw nsw i64 %indvars.iv253, 1
  %331 = icmp slt i64 %indvars.iv.next254, %.pre-phi281
  br i1 %331, label %.preheader166, label %._crit_edge202.loopexit, !llvm.loop !22

.lr.ph199:                                        ; preds = %.preheader166, %.lr.ph199
  %indvars.iv250 = phi i64 [ %indvars.iv.next251, %.lr.ph199 ], [ 0, %.preheader166 ]
  %332 = call noundef i32 @_ZNSt14numeric_limitsIiE3minEv() #7
  %333 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %304, i64 %indvars.iv256, i64 %indvars.iv253, i64 %indvars.iv250
  store i32 %332, ptr %333, align 4, !tbaa !5
  %indvars.iv.next251 = add nuw nsw i64 %indvars.iv250, 1
  %334 = load i32, ptr %3, align 4, !tbaa !5
  %335 = sext i32 %334 to i64
  %336 = icmp slt i64 %indvars.iv.next251, %335
  br i1 %336, label %.lr.ph199, label %._crit_edge200, !llvm.loop !23

.preheader165:                                    ; preds = %._crit_edge210, %._crit_edge215
  %337 = phi i32 [ %350, %._crit_edge215 ], [ 0, %._crit_edge210 ]
  %338 = phi i32 [ %351, %._crit_edge215 ], [ %55, %._crit_edge210 ]
  %339 = phi i32 [ %352, %._crit_edge215 ], [ %56, %._crit_edge210 ]
  %340 = phi i32 [ %353, %._crit_edge215 ], [ %56, %._crit_edge210 ]
  %341 = phi i32 [ %354, %._crit_edge215 ], [ %56, %._crit_edge210 ]
  %indvars.iv268 = phi i64 [ %indvars.iv.next269, %._crit_edge215 ], [ 1, %._crit_edge210 ]
  %342 = icmp sgt i32 %341, 0
  br i1 %342, label %.preheader.lr.ph, label %._crit_edge215

.preheader.lr.ph:                                 ; preds = %.preheader165
  %343 = icmp sgt i32 %340, 0
  br i1 %343, label %.preheader, label %._crit_edge215

._crit_edge218:                                   ; preds = %._crit_edge215, %._crit_edge210
  %344 = phi i32 [ 0, %._crit_edge210 ], [ %350, %._crit_edge215 ]
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %344)
          to label %368 unwind label %371

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge213
  %346 = phi i32 [ %356, %._crit_edge213 ], [ %337, %.preheader.lr.ph ]
  %347 = phi i32 [ %357, %._crit_edge213 ], [ %339, %.preheader.lr.ph ]
  %348 = phi i32 [ %357, %._crit_edge213 ], [ %340, %.preheader.lr.ph ]
  %indvars.iv265 = phi i64 [ %indvars.iv.next266, %._crit_edge213 ], [ 0, %.preheader.lr.ph ]
  %349 = icmp sgt i32 %348, 0
  br i1 %349, label %.lr.ph212, label %.preheader.._crit_edge213_crit_edge

.preheader.._crit_edge213_crit_edge:              ; preds = %.preheader
  %.pre279 = sext i32 %347 to i64
  br label %._crit_edge213

._crit_edge215.loopexit:                          ; preds = %._crit_edge213
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge215

._crit_edge215:                                   ; preds = %.preheader.lr.ph, %._crit_edge215.loopexit, %.preheader165
  %350 = phi i32 [ %356, %._crit_edge215.loopexit ], [ %337, %.preheader165 ], [ %337, %.preheader.lr.ph ]
  %351 = phi i32 [ %.pre, %._crit_edge215.loopexit ], [ %338, %.preheader165 ], [ %338, %.preheader.lr.ph ]
  %352 = phi i32 [ %357, %._crit_edge215.loopexit ], [ %339, %.preheader165 ], [ %339, %.preheader.lr.ph ]
  %353 = phi i32 [ %357, %._crit_edge215.loopexit ], [ %340, %.preheader165 ], [ %340, %.preheader.lr.ph ]
  %354 = phi i32 [ %357, %._crit_edge215.loopexit ], [ %341, %.preheader165 ], [ %340, %.preheader.lr.ph ]
  %indvars.iv.next269 = add nuw nsw i64 %indvars.iv268, 1
  %355 = sext i32 %351 to i64
  %.not145.not = icmp slt i64 %indvars.iv268, %355
  br i1 %.not145.not, label %.preheader165, label %._crit_edge218, !llvm.loop !24

._crit_edge213:                                   ; preds = %.lr.ph212, %.preheader.._crit_edge213_crit_edge
  %.pre-phi = phi i64 [ %.pre279, %.preheader.._crit_edge213_crit_edge ], [ %366, %.lr.ph212 ]
  %356 = phi i32 [ %346, %.preheader.._crit_edge213_crit_edge ], [ %364, %.lr.ph212 ]
  %357 = phi i32 [ %347, %.preheader.._crit_edge213_crit_edge ], [ %365, %.lr.ph212 ]
  %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1
  %358 = icmp slt i64 %indvars.iv.next266, %.pre-phi
  br i1 %358, label %.preheader, label %._crit_edge215.loopexit, !llvm.loop !25

.lr.ph212:                                        ; preds = %.preheader, %.lr.ph212
  %indvars.iv262 = phi i64 [ %indvars.iv.next263, %.lr.ph212 ], [ 0, %.preheader ]
  %359 = load i32, ptr %1, align 4, !tbaa !5
  %360 = srem i32 %359, 2
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [2 x [1001 x [50 x [50 x i32]]]], ptr %7, i64 0, i64 %361, i64 %indvars.iv268, i64 %indvars.iv265, i64 %indvars.iv262
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %362)
  %364 = load i32, ptr %363, align 4, !tbaa !5
  store i32 %364, ptr %26, align 4, !tbaa !5
  %indvars.iv.next263 = add nuw nsw i64 %indvars.iv262, 1
  %365 = load i32, ptr %3, align 4, !tbaa !5
  %366 = sext i32 %365 to i64
  %367 = icmp slt i64 %indvars.iv.next263, %366
  br i1 %367, label %.lr.ph212, label %._crit_edge213, !llvm.loop !26

368:                                              ; preds = %._crit_edge218
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %370 unwind label %371

370:                                              ; preds = %368
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 20020000, ptr nonnull %7) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  ret i32 0

371:                                              ; preds = %368, %._crit_edge218
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  br label %373

373:                                              ; preds = %225, %119, %117, %167, %165, %301, %296, %371, %60
  %.pn160.pn.pn = phi { ptr, i32 } [ %372, %371 ], [ %61, %60 ], [ %.pn156, %225 ], [ %120, %119 ], [ %118, %117 ], [ %168, %167 ], [ %166, %165 ], [ %.pn153, %301 ], [ %.pn, %296 ]
  call void @llvm.lifetime.end.p0(i64 20020000, ptr nonnull %7) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  br label %374

374:                                              ; preds = %373, %58
  %.pn160.pn.pn.pn = phi { ptr, i32 } [ %.pn160.pn.pn, %373 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  resume { ptr, i32 } %.pn160.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIPiiEvT_S1_RKT0_(ptr noundef, ptr noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIiE3minEv() local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.unswitch.partial.disable"}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10, !11}
!15 = distinct !{!15, !10, !11}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10, !11}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10, !11}
!25 = distinct !{!25, !10, !11}
!26 = distinct !{!26, !10}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass