; LLVM IR from tangjz/acm-icpc :: loj (2565)

; 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"

%struct.Edge = type { i32, i32, i32 }

@T = external dso_local global i32, align 4
@A = external dso_local global i32, align 4
@B = external dso_local global i32, align 4
@C = external dso_local global i32, align 4
@mx = external dso_local global i32, align 4
@mu = external dso_local global [100001 x i32], align 16
@f = external dso_local global [100001 x i32], align 16
@g = external dso_local global [100001 x i32], align 16
@h = external dso_local global [100001 x i32], align 16
@cnt = external dso_local global i32, align 4
@ord = external dso_local global [100001 x i32], align 16
@rnk = external dso_local global [100001 x i32], align 16
@tot = external dso_local global i32, align 4
@lnk = external dso_local global [100001 x i32], align 16
@pos = external dso_local global [100001 x i32], align 16
@e = external dso_local global [800001 x %struct.Edge], align 16
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z3cmpRKiS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #1 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %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 %struct.Edge, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  %30 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @T)
  br label %31

31:                                               ; preds = %752, %0
  %32 = load i32, ptr @T, align 4, !tbaa !5
  %33 = add nsw i32 %32, -1
  store i32 %33, ptr @T, align 4, !tbaa !5
  %34 = icmp ne i32 %32, 0
  br i1 %34, label %35, label %755

35:                                               ; preds = %31
  %36 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef @A, ptr noundef @B, ptr noundef @C)
  %37 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) @B, ptr noundef nonnull align 4 dereferenceable(4) @C)
  %38 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) @A, ptr noundef nonnull align 4 dereferenceable(4) %37)
  %39 = load i32, ptr %38, align 4, !tbaa !5
  store i32 %39, ptr @mx, align 4, !tbaa !5
  store i32 0, ptr @tot, align 4, !tbaa !5
  store i32 0, ptr @cnt, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #7
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %76, %35
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %42 = load i32, ptr @mx, align 4, !tbaa !5
  %43 = icmp sle i32 %41, %42
  br i1 %43, label %45, label %44

44:                                               ; preds = %40
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  br label %79

45:                                               ; preds = %40
  %46 = load i32, ptr %2, align 4, !tbaa !5
  %47 = icmp eq i32 %46, 1
  %48 = zext i1 %47 to i32
  %49 = load i32, ptr %2, align 4, !tbaa !5
  %50 = sext i32 %49 to i64
  %51 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %50
  store i32 %48, ptr %51, align 4, !tbaa !5
  %52 = load i32, ptr @A, align 4, !tbaa !5
  %53 = load i32, ptr %2, align 4, !tbaa !5
  %54 = sdiv i32 %52, %53
  %55 = load i32, ptr %2, align 4, !tbaa !5
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %56
  store i32 %54, ptr %57, align 4, !tbaa !5
  %58 = load i32, ptr @B, align 4, !tbaa !5
  %59 = load i32, ptr %2, align 4, !tbaa !5
  %60 = sdiv i32 %58, %59
  %61 = load i32, ptr %2, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %62
  store i32 %60, ptr %63, align 4, !tbaa !5
  %64 = load i32, ptr @C, align 4, !tbaa !5
  %65 = load i32, ptr %2, align 4, !tbaa !5
  %66 = sdiv i32 %64, %65
  %67 = load i32, ptr %2, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %68
  store i32 %66, ptr %69, align 4, !tbaa !5
  %70 = load i32, ptr %2, align 4, !tbaa !5
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %71
  store i32 0, ptr %72, align 4, !tbaa !5
  %73 = load i32, ptr %2, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %74
  store i32 0, ptr %75, align 4, !tbaa !5
  br label %76

76:                                               ; preds = %45
  %77 = load i32, ptr %2, align 4, !tbaa !5
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr %2, align 4, !tbaa !5
  br label %40, !llvm.loop !9

79:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  store i32 1, ptr %3, align 4, !tbaa !5
  br label %80

80:                                               ; preds = %136, %79
  %81 = load i32, ptr %3, align 4, !tbaa !5
  %82 = load i32, ptr @mx, align 4, !tbaa !5
  %83 = icmp sle i32 %81, %82
  br i1 %83, label %85, label %84

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

85:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  %86 = load i32, ptr %3, align 4, !tbaa !5
  %87 = load i32, ptr %3, align 4, !tbaa !5
  %88 = add nsw i32 %86, %87
  store i32 %88, ptr %5, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %131, %85
  %90 = load i32, ptr %5, align 4, !tbaa !5
  %91 = load i32, ptr @mx, align 4, !tbaa !5
  %92 = icmp sle i32 %90, %91
  br i1 %92, label %94, label %93

93:                                               ; preds = %89
  store i32 10, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br label %135

94:                                               ; preds = %89
  %95 = load i32, ptr %3, align 4, !tbaa !5
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %96
  %98 = load i32, ptr %97, align 4, !tbaa !5
  %99 = load i32, ptr %5, align 4, !tbaa !5
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %100
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = sub nsw i32 %102, %98
  store i32 %103, ptr %101, align 4, !tbaa !5
  %104 = load i32, ptr %5, align 4, !tbaa !5
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !5
  %108 = load i32, ptr %3, align 4, !tbaa !5
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %109
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = add nsw i32 %111, %107
  store i32 %112, ptr %110, align 4, !tbaa !5
  %113 = load i32, ptr %5, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %114
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = load i32, ptr %3, align 4, !tbaa !5
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %118
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = add nsw i32 %120, %116
  store i32 %121, ptr %119, align 4, !tbaa !5
  %122 = load i32, ptr %5, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = load i32, ptr %3, align 4, !tbaa !5
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = add nsw i32 %129, %125
  store i32 %130, ptr %128, align 4, !tbaa !5
  br label %131

131:                                              ; preds = %94
  %132 = load i32, ptr %3, align 4, !tbaa !5
  %133 = load i32, ptr %5, align 4, !tbaa !5
  %134 = add nsw i32 %133, %132
  store i32 %134, ptr %5, align 4, !tbaa !5
  br label %89, !llvm.loop !11

135:                                              ; preds = %93
  br label %136

136:                                              ; preds = %135
  %137 = load i32, ptr %3, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %3, align 4, !tbaa !5
  br label %80, !llvm.loop !12

139:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %140

140:                                              ; preds = %236, %139
  %141 = load i32, ptr %6, align 4, !tbaa !5
  %142 = load i32, ptr @mx, align 4, !tbaa !5
  %143 = icmp sle i32 %141, %142
  br i1 %143, label %145, label %144

144:                                              ; preds = %140
  store i32 13, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %239

145:                                              ; preds = %140
  %146 = load i32, ptr %6, align 4, !tbaa !5
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %151, label %235

151:                                              ; preds = %145
  %152 = load i32, ptr %6, align 4, !tbaa !5
  %153 = load i32, ptr @cnt, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr @cnt, align 4, !tbaa !5
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %155
  store i32 %152, ptr %156, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %157 = load i32, ptr %6, align 4, !tbaa !5
  %158 = load i32, ptr %6, align 4, !tbaa !5
  %159 = add nsw i32 %157, %158
  store i32 %159, ptr %7, align 4, !tbaa !5
  br label %160

160:                                              ; preds = %230, %151
  %161 = load i32, ptr %7, align 4, !tbaa !5
  %162 = load i32, ptr @mx, align 4, !tbaa !5
  %163 = icmp sle i32 %161, %162
  br i1 %163, label %165, label %164

164:                                              ; preds = %160
  store i32 16, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %234

165:                                              ; preds = %160
  %166 = load i32, ptr %7, align 4, !tbaa !5
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %229

171:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %172 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %172, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  %173 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %173, ptr %9, align 4, !tbaa !5
  br label %174

174:                                              ; preds = %221, %171
  %175 = load i32, ptr %8, align 4, !tbaa !5
  %176 = load i32, ptr %7, align 4, !tbaa !5
  %177 = icmp slt i32 %175, %176
  br i1 %177, label %178, label %182

178:                                              ; preds = %174
  %179 = load i32, ptr %9, align 4, !tbaa !5
  %180 = load i32, ptr @mx, align 4, !tbaa !5
  %181 = icmp sle i32 %179, %180
  br label %182

182:                                              ; preds = %178, %174
  %183 = phi i1 [ false, %174 ], [ %181, %178 ]
  br i1 %183, label %185, label %184

184:                                              ; preds = %182
  store i32 19, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %228

185:                                              ; preds = %182
  %186 = load i32, ptr %9, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %220

191:                                              ; preds = %185
  %192 = load i32, ptr %9, align 4, !tbaa !5
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %193
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %209, label %197

197:                                              ; preds = %191
  %198 = load i32, ptr %9, align 4, !tbaa !5
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %209, label %203

203:                                              ; preds = %197
  %204 = load i32, ptr %9, align 4, !tbaa !5
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %205
  %207 = load i32, ptr %206, align 4, !tbaa !5
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %209, label %220

209:                                              ; preds = %203, %197, %191
  %210 = load i32, ptr %7, align 4, !tbaa !5
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %212, align 4, !tbaa !5
  %215 = load i32, ptr %8, align 4, !tbaa !5
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %217, align 4, !tbaa !5
  br label %220

220:                                              ; preds = %209, %203, %185
  br label %221

221:                                              ; preds = %220
  %222 = load i32, ptr %6, align 4, !tbaa !5
  %223 = load i32, ptr %8, align 4, !tbaa !5
  %224 = add nsw i32 %223, %222
  store i32 %224, ptr %8, align 4, !tbaa !5
  %225 = load i32, ptr %7, align 4, !tbaa !5
  %226 = load i32, ptr %9, align 4, !tbaa !5
  %227 = add nsw i32 %226, %225
  store i32 %227, ptr %9, align 4, !tbaa !5
  br label %174, !llvm.loop !13

228:                                              ; preds = %184
  br label %229

229:                                              ; preds = %228, %165
  br label %230

230:                                              ; preds = %229
  %231 = load i32, ptr %6, align 4, !tbaa !5
  %232 = load i32, ptr %7, align 4, !tbaa !5
  %233 = add nsw i32 %232, %231
  store i32 %233, ptr %7, align 4, !tbaa !5
  br label %160, !llvm.loop !14

234:                                              ; preds = %164
  br label %235

235:                                              ; preds = %234, %145
  br label %236

236:                                              ; preds = %235
  %237 = load i32, ptr %6, align 4, !tbaa !5
  %238 = add nsw i32 %237, 1
  store i32 %238, ptr %6, align 4, !tbaa !5
  br label %140, !llvm.loop !15

239:                                              ; preds = %144
  %240 = load i32, ptr @cnt, align 4, !tbaa !5
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i32, ptr @ord, i64 %241
  %243 = getelementptr inbounds i32, ptr %242, i64 1
  call void @_ZSt4sortIPiPFbRKiS2_EEvT_S5_T0_(ptr noundef getelementptr inbounds (i32, ptr @ord, i64 1), ptr noundef %243, ptr noundef @_Z3cmpRKiS0_)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %244

244:                                              ; preds = %257, %239
  %245 = load i32, ptr %10, align 4, !tbaa !5
  %246 = load i32, ptr @cnt, align 4, !tbaa !5
  %247 = icmp sle i32 %245, %246
  br i1 %247, label %249, label %248

248:                                              ; preds = %244
  store i32 22, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %260

249:                                              ; preds = %244
  %250 = load i32, ptr %10, align 4, !tbaa !5
  %251 = load i32, ptr %10, align 4, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %255
  store i32 %250, ptr %256, align 4, !tbaa !5
  br label %257

257:                                              ; preds = %249
  %258 = load i32, ptr %10, align 4, !tbaa !5
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %10, align 4, !tbaa !5
  br label %244, !llvm.loop !16

260:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %261

261:                                              ; preds = %372, %260
  %262 = load i32, ptr %11, align 4, !tbaa !5
  %263 = load i32, ptr @mx, align 4, !tbaa !5
  %264 = icmp sle i32 %262, %263
  br i1 %264, label %266, label %265

265:                                              ; preds = %261
  store i32 25, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  br label %375

266:                                              ; preds = %261
  %267 = load i32, ptr %11, align 4, !tbaa !5
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %371

272:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %273 = load i32, ptr %11, align 4, !tbaa !5
  %274 = load i32, ptr %11, align 4, !tbaa !5
  %275 = add nsw i32 %273, %274
  store i32 %275, ptr %12, align 4, !tbaa !5
  br label %276

276:                                              ; preds = %366, %272
  %277 = load i32, ptr %12, align 4, !tbaa !5
  %278 = load i32, ptr @mx, align 4, !tbaa !5
  %279 = icmp sle i32 %277, %278
  br i1 %279, label %281, label %280

280:                                              ; preds = %276
  store i32 28, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %370

281:                                              ; preds = %276
  %282 = load i32, ptr %12, align 4, !tbaa !5
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %287, label %365

287:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %288 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %288, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %289 = load i32, ptr %12, align 4, !tbaa !5
  store i32 %289, ptr %14, align 4, !tbaa !5
  br label %290

290:                                              ; preds = %357, %287
  %291 = load i32, ptr %13, align 4, !tbaa !5
  %292 = load i32, ptr %12, align 4, !tbaa !5
  %293 = icmp slt i32 %291, %292
  br i1 %293, label %294, label %298

294:                                              ; preds = %290
  %295 = load i32, ptr %14, align 4, !tbaa !5
  %296 = load i32, ptr @mx, align 4, !tbaa !5
  %297 = icmp sle i32 %295, %296
  br label %298

298:                                              ; preds = %294, %290
  %299 = phi i1 [ false, %290 ], [ %297, %294 ]
  br i1 %299, label %301, label %300

300:                                              ; preds = %298
  store i32 31, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %364

301:                                              ; preds = %298
  %302 = load i32, ptr %14, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %303
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %356

307:                                              ; preds = %301
  %308 = load i32, ptr %14, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %309
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = icmp ne i32 %311, 0
  br i1 %312, label %325, label %313

313:                                              ; preds = %307
  %314 = load i32, ptr %14, align 4, !tbaa !5
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %325, label %319

319:                                              ; preds = %313
  %320 = load i32, ptr %14, align 4, !tbaa !5
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !5
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %356

325:                                              ; preds = %319, %313, %307
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %326 = load i32, ptr %12, align 4, !tbaa !5
  store i32 %326, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %327 = load i32, ptr %13, align 4, !tbaa !5
  store i32 %327, ptr %16, align 4, !tbaa !5
  %328 = load i32, ptr %15, align 4, !tbaa !5
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !5
  %332 = load i32, ptr %16, align 4, !tbaa !5
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %333
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %336 = icmp slt i32 %331, %335
  br i1 %336, label %337, label %338

337:                                              ; preds = %325
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16) #7
  br label %338

338:                                              ; preds = %337, %325
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #7
  %339 = getelementptr inbounds %struct.Edge, ptr %17, i32 0, i32 0
  %340 = load i32, ptr %15, align 4, !tbaa !5
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !5
  store i32 %343, ptr %339, align 4, !tbaa !17
  %344 = getelementptr inbounds %struct.Edge, ptr %17, i32 0, i32 1
  %345 = load i32, ptr %16, align 4, !tbaa !5
  store i32 %345, ptr %344, align 4, !tbaa !19
  %346 = getelementptr inbounds %struct.Edge, ptr %17, i32 0, i32 2
  %347 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %347, ptr %346, align 4, !tbaa !20
  %348 = load i32, ptr @tot, align 4, !tbaa !5
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr @tot, align 4, !tbaa !5
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %350
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %351, ptr align 4 %17, i64 12, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #7
  %352 = load i32, ptr @tot, align 4, !tbaa !5
  %353 = load i32, ptr %15, align 4, !tbaa !5
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %354
  store i32 %352, ptr %355, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %356

356:                                              ; preds = %338, %319, %301
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %11, align 4, !tbaa !5
  %359 = load i32, ptr %13, align 4, !tbaa !5
  %360 = add nsw i32 %359, %358
  store i32 %360, ptr %13, align 4, !tbaa !5
  %361 = load i32, ptr %12, align 4, !tbaa !5
  %362 = load i32, ptr %14, align 4, !tbaa !5
  %363 = add nsw i32 %362, %361
  store i32 %363, ptr %14, align 4, !tbaa !5
  br label %290, !llvm.loop !22

364:                                              ; preds = %300
  br label %365

365:                                              ; preds = %364, %281
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %11, align 4, !tbaa !5
  %368 = load i32, ptr %12, align 4, !tbaa !5
  %369 = add nsw i32 %368, %367
  store i32 %369, ptr %12, align 4, !tbaa !5
  br label %276, !llvm.loop !23

370:                                              ; preds = %280
  br label %371

371:                                              ; preds = %370, %266
  br label %372

372:                                              ; preds = %371
  %373 = load i32, ptr %11, align 4, !tbaa !5
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %11, align 4, !tbaa !5
  br label %261, !llvm.loop !24

375:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %376 = load i32, ptr @cnt, align 4, !tbaa !5
  store i32 %376, ptr %19, align 4, !tbaa !5
  br label %377

377:                                              ; preds = %741, %375
  %378 = load i32, ptr %19, align 4, !tbaa !5
  %379 = icmp sge i32 %378, 1
  br i1 %379, label %381, label %380

380:                                              ; preds = %377
  store i32 34, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %744

381:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %382 = load i32, ptr %19, align 4, !tbaa !5
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %383
  %385 = load i32, ptr %384, align 4, !tbaa !5
  store i32 %385, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %386 = load i32, ptr %20, align 4, !tbaa !5
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !5
  store i32 %389, ptr %21, align 4, !tbaa !5
  br label %390

390:                                              ; preds = %407, %381
  %391 = load i32, ptr %21, align 4, !tbaa !5
  %392 = icmp ne i32 %391, 0
  br i1 %392, label %394, label %393

393:                                              ; preds = %390
  store i32 37, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %413

394:                                              ; preds = %390
  %395 = load i32, ptr %21, align 4, !tbaa !5
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %396
  %398 = getelementptr inbounds %struct.Edge, ptr %397, i32 0, i32 2
  %399 = load i32, ptr %398, align 4, !tbaa !20
  %400 = load i32, ptr %21, align 4, !tbaa !5
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %401
  %403 = getelementptr inbounds %struct.Edge, ptr %402, i32 0, i32 1
  %404 = load i32, ptr %403, align 4, !tbaa !19
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %405
  store i32 %399, ptr %406, align 4, !tbaa !5
  br label %407

407:                                              ; preds = %394
  %408 = load i32, ptr %21, align 4, !tbaa !5
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %409
  %411 = getelementptr inbounds %struct.Edge, ptr %410, i32 0, i32 0
  %412 = load i32, ptr %411, align 4, !tbaa !17
  store i32 %412, ptr %21, align 4, !tbaa !5
  br label %390, !llvm.loop !25

413:                                              ; preds = %393
  %414 = load i32, ptr %18, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = load i32, ptr %20, align 4, !tbaa !5
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = sext i32 %419 to i64
  %421 = load i32, ptr %20, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = sext i32 %424 to i64
  %426 = mul nsw i64 %420, %425
  %427 = load i32, ptr %20, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !5
  %431 = sext i32 %430 to i64
  %432 = mul nsw i64 %426, %431
  %433 = load i32, ptr %20, align 4, !tbaa !5
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !5
  %437 = sext i32 %436 to i64
  %438 = mul nsw i64 %432, %437
  %439 = add nsw i64 %415, %438
  %440 = srem i64 %439, 1000000007
  %441 = trunc i64 %440 to i32
  store i32 %441, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %442 = load i32, ptr %20, align 4, !tbaa !5
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %443
  %445 = load i32, ptr %444, align 4, !tbaa !5
  store i32 %445, ptr %22, align 4, !tbaa !5
  br label %446

446:                                              ; preds = %711, %413
  %447 = load i32, ptr %22, align 4, !tbaa !5
  %448 = icmp ne i32 %447, 0
  br i1 %448, label %450, label %449

449:                                              ; preds = %446
  store i32 40, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %717

450:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %451 = load i32, ptr %22, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %452
  %454 = getelementptr inbounds %struct.Edge, ptr %453, i32 0, i32 1
  %455 = load i32, ptr %454, align 4, !tbaa !19
  store i32 %455, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %456 = load i32, ptr %22, align 4, !tbaa !5
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %457
  %459 = getelementptr inbounds %struct.Edge, ptr %458, i32 0, i32 2
  %460 = load i32, ptr %459, align 4, !tbaa !20
  store i32 %460, ptr %24, align 4, !tbaa !5
  %461 = load i32, ptr %18, align 4, !tbaa !5
  %462 = sext i32 %461 to i64
  %463 = load i32, ptr %24, align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %464
  %466 = load i32, ptr %465, align 4, !tbaa !5
  %467 = sext i32 %466 to i64
  %468 = load i32, ptr %24, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !5
  %472 = sext i32 %471 to i64
  %473 = mul nsw i64 %467, %472
  %474 = load i32, ptr %20, align 4, !tbaa !5
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = load i32, ptr %23, align 4, !tbaa !5
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %479
  %481 = load i32, ptr %480, align 4, !tbaa !5
  %482 = mul nsw i32 %477, %481
  %483 = load i32, ptr %20, align 4, !tbaa !5
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %484
  %486 = load i32, ptr %485, align 4, !tbaa !5
  %487 = load i32, ptr %23, align 4, !tbaa !5
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %488
  %490 = load i32, ptr %489, align 4, !tbaa !5
  %491 = mul nsw i32 %486, %490
  %492 = add nsw i32 %482, %491
  %493 = sext i32 %492 to i64
  %494 = mul nsw i64 %473, %493
  %495 = add nsw i64 %462, %494
  %496 = load i32, ptr %24, align 4, !tbaa !5
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %497
  %499 = load i32, ptr %498, align 4, !tbaa !5
  %500 = sext i32 %499 to i64
  %501 = load i32, ptr %20, align 4, !tbaa !5
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %502
  %504 = load i32, ptr %503, align 4, !tbaa !5
  %505 = load i32, ptr %23, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %506
  %508 = load i32, ptr %507, align 4, !tbaa !5
  %509 = mul nsw i32 %504, %508
  %510 = load i32, ptr %20, align 4, !tbaa !5
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %511
  %513 = load i32, ptr %512, align 4, !tbaa !5
  %514 = load i32, ptr %23, align 4, !tbaa !5
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %515
  %517 = load i32, ptr %516, align 4, !tbaa !5
  %518 = mul nsw i32 %513, %517
  %519 = add nsw i32 %509, %518
  %520 = sext i32 %519 to i64
  %521 = mul nsw i64 %500, %520
  %522 = load i32, ptr %20, align 4, !tbaa !5
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %523
  %525 = load i32, ptr %524, align 4, !tbaa !5
  %526 = load i32, ptr %23, align 4, !tbaa !5
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !5
  %530 = mul nsw i32 %525, %529
  %531 = load i32, ptr %20, align 4, !tbaa !5
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %532
  %534 = load i32, ptr %533, align 4, !tbaa !5
  %535 = load i32, ptr %23, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %536
  %538 = load i32, ptr %537, align 4, !tbaa !5
  %539 = mul nsw i32 %534, %538
  %540 = add nsw i32 %530, %539
  %541 = sext i32 %540 to i64
  %542 = load i32, ptr %24, align 4, !tbaa !5
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %543
  %545 = load i32, ptr %544, align 4, !tbaa !5
  %546 = sext i32 %545 to i64
  %547 = mul nsw i64 %541, %546
  %548 = add nsw i64 %521, %547
  %549 = load i32, ptr %24, align 4, !tbaa !5
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %550
  %552 = load i32, ptr %551, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = mul nsw i64 %548, %553
  %555 = add nsw i64 %495, %554
  %556 = srem i64 %555, 1000000007
  %557 = trunc i64 %556 to i32
  store i32 %557, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %558 = load i32, ptr %23, align 4, !tbaa !5
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %559
  %561 = load i32, ptr %560, align 4, !tbaa !5
  store i32 %561, ptr %25, align 4, !tbaa !5
  br label %562

562:                                              ; preds = %704, %450
  %563 = load i32, ptr %25, align 4, !tbaa !5
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %566, label %565

565:                                              ; preds = %562
  store i32 43, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %710

566:                                              ; preds = %562
  %567 = load i32, ptr %25, align 4, !tbaa !5
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %568
  %570 = getelementptr inbounds %struct.Edge, ptr %569, i32 0, i32 1
  %571 = load i32, ptr %570, align 4, !tbaa !19
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %577, label %576

576:                                              ; preds = %566
  br label %704

577:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %578 = load i32, ptr %25, align 4, !tbaa !5
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %579
  %581 = getelementptr inbounds %struct.Edge, ptr %580, i32 0, i32 1
  %582 = load i32, ptr %581, align 4, !tbaa !19
  store i32 %582, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %583 = load i32, ptr %25, align 4, !tbaa !5
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %584
  %586 = getelementptr inbounds %struct.Edge, ptr %585, i32 0, i32 2
  %587 = load i32, ptr %586, align 4, !tbaa !20
  store i32 %587, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %588 = load i32, ptr %26, align 4, !tbaa !5
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %589
  %591 = load i32, ptr %590, align 4, !tbaa !5
  store i32 %591, ptr %28, align 4, !tbaa !5
  %592 = load i32, ptr %18, align 4, !tbaa !5
  %593 = sext i32 %592 to i64
  %594 = load i32, ptr %24, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %595
  %597 = load i32, ptr %596, align 4, !tbaa !5
  %598 = sext i32 %597 to i64
  %599 = load i32, ptr %27, align 4, !tbaa !5
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %600
  %602 = load i32, ptr %601, align 4, !tbaa !5
  %603 = sext i32 %602 to i64
  %604 = mul nsw i64 %598, %603
  %605 = load i32, ptr %27, align 4, !tbaa !5
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %606
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = sext i32 %608 to i64
  %610 = load i32, ptr %24, align 4, !tbaa !5
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %611
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = sext i32 %613 to i64
  %615 = mul nsw i64 %609, %614
  %616 = add nsw i64 %604, %615
  %617 = load i32, ptr %28, align 4, !tbaa !5
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %618
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = sext i32 %620 to i64
  %622 = mul nsw i64 %616, %621
  %623 = load i32, ptr %24, align 4, !tbaa !5
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %624
  %626 = load i32, ptr %625, align 4, !tbaa !5
  %627 = sext i32 %626 to i64
  %628 = load i32, ptr %28, align 4, !tbaa !5
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %629
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = mul nsw i64 %627, %632
  %634 = load i32, ptr %28, align 4, !tbaa !5
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %635
  %637 = load i32, ptr %636, align 4, !tbaa !5
  %638 = sext i32 %637 to i64
  %639 = load i32, ptr %24, align 4, !tbaa !5
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %640
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = mul nsw i64 %638, %643
  %645 = add nsw i64 %633, %644
  %646 = load i32, ptr %27, align 4, !tbaa !5
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %647
  %649 = load i32, ptr %648, align 4, !tbaa !5
  %650 = sext i32 %649 to i64
  %651 = mul nsw i64 %645, %650
  %652 = add nsw i64 %622, %651
  %653 = load i32, ptr %27, align 4, !tbaa !5
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %654
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = sext i32 %656 to i64
  %658 = load i32, ptr %28, align 4, !tbaa !5
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %659
  %661 = load i32, ptr %660, align 4, !tbaa !5
  %662 = sext i32 %661 to i64
  %663 = mul nsw i64 %657, %662
  %664 = load i32, ptr %28, align 4, !tbaa !5
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %665
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = sext i32 %667 to i64
  %669 = load i32, ptr %27, align 4, !tbaa !5
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %670
  %672 = load i32, ptr %671, align 4, !tbaa !5
  %673 = sext i32 %672 to i64
  %674 = mul nsw i64 %668, %673
  %675 = add nsw i64 %663, %674
  %676 = load i32, ptr %24, align 4, !tbaa !5
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %677
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = mul nsw i64 %675, %680
  %682 = add nsw i64 %652, %681
  %683 = load i32, ptr %20, align 4, !tbaa !5
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %684
  %686 = load i32, ptr %685, align 4, !tbaa !5
  %687 = sext i32 %686 to i64
  %688 = mul nsw i64 %682, %687
  %689 = load i32, ptr %23, align 4, !tbaa !5
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !5
  %693 = sext i32 %692 to i64
  %694 = mul nsw i64 %688, %693
  %695 = load i32, ptr %26, align 4, !tbaa !5
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %696
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = sext i32 %698 to i64
  %700 = mul nsw i64 %694, %699
  %701 = add nsw i64 %593, %700
  %702 = srem i64 %701, 1000000007
  %703 = trunc i64 %702 to i32
  store i32 %703, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %704

704:                                              ; preds = %577, %576
  %705 = load i32, ptr %25, align 4, !tbaa !5
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %706
  %708 = getelementptr inbounds %struct.Edge, ptr %707, i32 0, i32 0
  %709 = load i32, ptr %708, align 4, !tbaa !17
  store i32 %709, ptr %25, align 4, !tbaa !5
  br label %562, !llvm.loop !26

710:                                              ; preds = %565
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %711

711:                                              ; preds = %710
  %712 = load i32, ptr %22, align 4, !tbaa !5
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %713
  %715 = getelementptr inbounds %struct.Edge, ptr %714, i32 0, i32 0
  %716 = load i32, ptr %715, align 4, !tbaa !17
  store i32 %716, ptr %22, align 4, !tbaa !5
  br label %446, !llvm.loop !27

717:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %718 = load i32, ptr %20, align 4, !tbaa !5
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %719
  %721 = load i32, ptr %720, align 4, !tbaa !5
  store i32 %721, ptr %29, align 4, !tbaa !5
  br label %722

722:                                              ; preds = %734, %717
  %723 = load i32, ptr %29, align 4, !tbaa !5
  %724 = icmp ne i32 %723, 0
  br i1 %724, label %726, label %725

725:                                              ; preds = %722
  store i32 46, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  br label %740

726:                                              ; preds = %722
  %727 = load i32, ptr %29, align 4, !tbaa !5
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %728
  %730 = getelementptr inbounds %struct.Edge, ptr %729, i32 0, i32 1
  %731 = load i32, ptr %730, align 4, !tbaa !19
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %732
  store i32 0, ptr %733, align 4, !tbaa !5
  br label %734

734:                                              ; preds = %726
  %735 = load i32, ptr %29, align 4, !tbaa !5
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %736
  %738 = getelementptr inbounds %struct.Edge, ptr %737, i32 0, i32 0
  %739 = load i32, ptr %738, align 4, !tbaa !17
  store i32 %739, ptr %29, align 4, !tbaa !5
  br label %722, !llvm.loop !28

740:                                              ; preds = %725
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %741

741:                                              ; preds = %740
  %742 = load i32, ptr %19, align 4, !tbaa !5
  %743 = add nsw i32 %742, -1
  store i32 %743, ptr %19, align 4, !tbaa !5
  br label %377, !llvm.loop !29

744:                                              ; preds = %380
  %745 = load i32, ptr %18, align 4, !tbaa !5
  %746 = icmp slt i32 %745, 0
  br i1 %746, label %747, label %750

747:                                              ; preds = %744
  %748 = load i32, ptr %18, align 4, !tbaa !5
  %749 = add nsw i32 %748, 1000000007
  br label %752

750:                                              ; preds = %744
  %751 = load i32, ptr %18, align 4, !tbaa !5
  br label %752

752:                                              ; preds = %750, %747
  %753 = phi i32 [ %749, %747 ], [ %751, %750 ]
  %754 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %753)
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %31, !llvm.loop !30

755:                                              ; preds = %31
  ret i32 0
}

declare i32 @__isoc99_scanf(ptr noundef, ...) #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)) #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPiPFbRKiS2_EEvT_S5_T0_(ptr noundef, ptr noundef, ptr noundef) #5

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

declare i32 @printf(ptr noundef, ...) #2

attributes #0 = { 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 #1 = { 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 #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 = { 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 #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!18, !6, i64 0}
!18 = !{!"_ZTS4Edge", !6, i64 0, !6, i64 4, !6, i64 8}
!19 = !{!18, !6, i64 4}
!20 = !{!18, !6, i64 8}
!21 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !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"

%struct.Edge = type { i32, i32, i32 }

@T = external dso_local global i32, align 4
@A = external dso_local global i32, align 4
@B = external dso_local global i32, align 4
@C = external dso_local global i32, align 4
@mx = external dso_local local_unnamed_addr global i32, align 4
@mu = external dso_local local_unnamed_addr global [100001 x i32], align 16
@f = external dso_local local_unnamed_addr global [100001 x i32], align 16
@g = external dso_local local_unnamed_addr global [100001 x i32], align 16
@h = external dso_local local_unnamed_addr global [100001 x i32], align 16
@cnt = external dso_local local_unnamed_addr global i32, align 4
@ord = external dso_local global [100001 x i32], align 16
@rnk = external dso_local local_unnamed_addr global [100001 x i32], align 16
@tot = external dso_local local_unnamed_addr global i32, align 4
@lnk = external dso_local local_unnamed_addr global [100001 x i32], align 16
@pos = external dso_local local_unnamed_addr global [100001 x i32], align 16
@e = external dso_local local_unnamed_addr global [800001 x %struct.Edge], align 16
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z3cmpRKiS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #1 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @T)
  %4 = load i32, ptr @T, align 4, !tbaa !5
  %5 = add nsw i32 %4, -1
  store i32 %5, ptr @T, align 4, !tbaa !5
  %.not272 = icmp eq i32 %4, 0
  br i1 %.not272, label %._crit_edge275, label %.lr.ph274

.lr.ph274:                                        ; preds = %0, %._crit_edge270.thread
  %6 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull @A, ptr noundef nonnull @B, ptr noundef nonnull @C)
  %7 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) @B, ptr noundef nonnull align 4 dereferenceable(4) @C)
  %8 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) @A, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %9 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %9, ptr @mx, align 4, !tbaa !5
  store i32 0, ptr @tot, align 4, !tbaa !5
  store i32 0, ptr @cnt, align 4, !tbaa !5
  %.not168202 = icmp slt i32 %9, 1
  br i1 %.not168202, label %._crit_edge224, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph274
  %10 = load i32, ptr @A, align 4, !tbaa !5
  %11 = load i32, ptr @B, align 4, !tbaa !5
  %12 = load i32, ptr @C, align 4, !tbaa !5
  %13 = zext nneg i32 %9 to i64
  %14 = shl nuw nsw i64 %13, 2
  call void @llvm.memset.p0.i64(ptr nonnull align 4 getelementptr inbounds (i8, ptr @lnk, i64 4), i8 0, i64 %14, i1 false), !tbaa !5
  call void @llvm.memset.p0.i64(ptr nonnull align 4 getelementptr inbounds (i8, ptr @rnk, i64 4), i8 0, i64 %14, i1 false), !tbaa !5
  %15 = add nuw i32 %9, 1
  %wide.trip.count = zext i32 %15 to i64
  br label %18

.preheader201:                                    ; preds = %18
  br i1 %.not168202, label %._crit_edge224, label %.lr.ph211.preheader

.lr.ph211.preheader:                              ; preds = %.preheader201
  %16 = zext nneg i32 %9 to i64
  %17 = add nuw i32 %9, 1
  %wide.trip.count285 = zext i32 %17 to i64
  br label %.lr.ph211

18:                                               ; preds = %.lr.ph, %18
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %18 ]
  %19 = icmp eq i64 %indvars.iv, 1
  %20 = zext i1 %19 to i32
  %21 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv
  store i32 %20, ptr %21, align 4, !tbaa !5
  %22 = trunc nuw nsw i64 %indvars.iv to i32
  %23 = sdiv i32 %10, %22
  %24 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %indvars.iv
  store i32 %23, ptr %24, align 4, !tbaa !5
  %25 = sdiv i32 %11, %22
  %26 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %indvars.iv
  store i32 %25, ptr %26, align 4, !tbaa !5
  %27 = sdiv i32 %12, %22
  %28 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %indvars.iv
  store i32 %27, ptr %28, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.preheader201, label %18, !llvm.loop !9

.preheader200:                                    ; preds = %._crit_edge
  br i1 %.not168202, label %._crit_edge224, label %.lr.ph223.preheader

.lr.ph223.preheader:                              ; preds = %.preheader200
  %29 = add nuw i32 %9, 1
  %wide.trip.count302 = zext i32 %29 to i64
  br label %.lr.ph223

.lr.ph211:                                        ; preds = %.lr.ph211.preheader, %._crit_edge
  %indvars.iv279 = phi i64 [ 1, %.lr.ph211.preheader ], [ %indvars.iv.next280, %._crit_edge ]
  %indvars.iv277 = phi i64 [ 2, %.lr.ph211.preheader ], [ %indvars.iv.next278, %._crit_edge ]
  %30 = shl nuw nsw i64 %indvars.iv279, 1
  %.not192204 = icmp ugt i64 %30, %16
  br i1 %.not192204, label %._crit_edge, label %.lr.ph206

.lr.ph206:                                        ; preds = %.lr.ph211
  %31 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv279
  %32 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %indvars.iv279
  %33 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %indvars.iv279
  %34 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %indvars.iv279
  %.promoted = load i32, ptr %32, align 4, !tbaa !5
  %.promoted207 = load i32, ptr %33, align 4, !tbaa !5
  %.promoted208 = load i32, ptr %34, align 4, !tbaa !5
  br label %35

._crit_edge:                                      ; preds = %35, %.lr.ph211
  %indvars.iv.next280 = add nuw nsw i64 %indvars.iv279, 1
  %indvars.iv.next278 = add nuw nsw i64 %indvars.iv277, 2
  %exitcond286.not = icmp eq i64 %indvars.iv.next280, %wide.trip.count285
  br i1 %exitcond286.not, label %.preheader200, label %.lr.ph211, !llvm.loop !11

35:                                               ; preds = %.lr.ph206, %35
  %indvars.iv281 = phi i64 [ %indvars.iv277, %.lr.ph206 ], [ %indvars.iv.next282, %35 ]
  %36 = phi i32 [ %.promoted208, %.lr.ph206 ], [ %51, %35 ]
  %37 = phi i32 [ %.promoted207, %.lr.ph206 ], [ %48, %35 ]
  %38 = phi i32 [ %.promoted, %.lr.ph206 ], [ %45, %35 ]
  %39 = load i32, ptr %31, align 4, !tbaa !5
  %40 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv281
  %41 = load i32, ptr %40, align 4, !tbaa !5
  %42 = sub nsw i32 %41, %39
  store i32 %42, ptr %40, align 4, !tbaa !5
  %43 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %indvars.iv281
  %44 = load i32, ptr %43, align 4, !tbaa !5
  %45 = add nsw i32 %38, %44
  store i32 %45, ptr %32, align 4, !tbaa !5
  %46 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %indvars.iv281
  %47 = load i32, ptr %46, align 4, !tbaa !5
  %48 = add nsw i32 %37, %47
  store i32 %48, ptr %33, align 4, !tbaa !5
  %49 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %indvars.iv281
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = add nsw i32 %36, %50
  store i32 %51, ptr %34, align 4, !tbaa !5
  %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, %indvars.iv279
  %52 = trunc nuw i64 %indvars.iv.next282 to i32
  %.not192 = icmp slt i32 %9, %52
  br i1 %.not192, label %._crit_edge, label %35, !llvm.loop !12

._crit_edge224:                                   ; preds = %.loopexit198, %.lr.ph274, %.preheader201, %.preheader200
  %53 = phi i32 [ 0, %.preheader200 ], [ 0, %.preheader201 ], [ 0, %.lr.ph274 ], [ %95, %.loopexit198 ]
  %54 = sext i32 %53 to i64
  %gep = getelementptr i32, ptr getelementptr inbounds (i8, ptr @ord, i64 4), i64 %54
  call void @_ZSt4sortIPiPFbRKiS2_EEvT_S5_T0_(ptr noundef nonnull getelementptr inbounds (i8, ptr @ord, i64 4), ptr noundef nonnull %gep, ptr noundef nonnull @_Z3cmpRKiS0_)
  %55 = load i32, ptr @cnt, align 4, !tbaa !5
  %.not171225 = icmp slt i32 %55, 1
  br i1 %.not171225, label %.preheader199, label %.lr.ph228.preheader

.lr.ph228.preheader:                              ; preds = %._crit_edge224
  %56 = zext nneg i32 %55 to i64
  %xtraiter = and i64 %56, 3
  %57 = icmp ult i32 %55, 4
  br i1 %57, label %.preheader199.loopexit.unr-lcssa, label %.lr.ph228.preheader.new

.lr.ph228.preheader.new:                          ; preds = %.lr.ph228.preheader
  %unroll_iter = and i64 %56, 2147483644
  br label %.lr.ph228

.lr.ph223:                                        ; preds = %.lr.ph223.preheader, %.loopexit198
  %indvars.iv291 = phi i64 [ 2, %.lr.ph223.preheader ], [ %indvars.iv.next292, %.loopexit198 ]
  %indvars.iv287 = phi i64 [ 1, %.lr.ph223.preheader ], [ %indvars.iv.next288, %.loopexit198 ]
  %58 = phi i32 [ 0, %.lr.ph223.preheader ], [ %95, %.loopexit198 ]
  %59 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv287
  %60 = load i32, ptr %59, align 4, !tbaa !5
  %.not185 = icmp eq i32 %60, 0
  br i1 %.not185, label %.loopexit198, label %61

61:                                               ; preds = %.lr.ph223
  %62 = add nsw i32 %58, 1
  store i32 %62, ptr @cnt, align 4, !tbaa !5
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %63
  %65 = trunc nuw nsw i64 %indvars.iv287 to i32
  store i32 %65, ptr %64, align 4, !tbaa !5
  %indvars.iv287.tr = trunc i64 %indvars.iv287 to i32
  %66 = shl i32 %indvars.iv287.tr, 1
  %.not186215 = icmp sgt i32 %66, %9
  br i1 %.not186215, label %.loopexit198, label %.lr.ph219

.lr.ph219:                                        ; preds = %61, %.loopexit195
  %indvars.iv293 = phi i64 [ %indvars.iv.next294, %.loopexit195 ], [ %indvars.iv291, %61 ]
  %67 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv293
  %68 = load i32, ptr %67, align 4, !tbaa !5
  %.not187 = icmp ne i32 %68, 0
  %69 = icmp ult i64 %indvars.iv287, %indvars.iv293
  %or.cond = and i1 %.not187, %69
  br i1 %or.cond, label %.lr.ph214, label %.loopexit195

.lr.ph214:                                        ; preds = %.lr.ph219
  %70 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %indvars.iv293
  br label %71

71:                                               ; preds = %.lr.ph214, %89
  %indvars.iv295 = phi i64 [ %indvars.iv293, %.lr.ph214 ], [ %indvars.iv.next296, %89 ]
  %indvars.iv289 = phi i64 [ %indvars.iv287, %.lr.ph214 ], [ %indvars.iv.next290, %89 ]
  %72 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv295
  %73 = load i32, ptr %72, align 4, !tbaa !5
  %.not188 = icmp eq i32 %73, 0
  br i1 %.not188, label %89, label %74

74:                                               ; preds = %71
  %75 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %indvars.iv295
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %.not189 = icmp eq i32 %76, 0
  br i1 %.not189, label %77, label %83

77:                                               ; preds = %74
  %78 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %indvars.iv295
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %.not190 = icmp eq i32 %79, 0
  br i1 %.not190, label %80, label %83

80:                                               ; preds = %77
  %81 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %indvars.iv295
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %.not191 = icmp eq i32 %82, 0
  br i1 %.not191, label %89, label %83

83:                                               ; preds = %80, %77, %74
  %84 = load i32, ptr %70, align 4, !tbaa !5
  %85 = add nsw i32 %84, 1
  store i32 %85, ptr %70, align 4, !tbaa !5
  %86 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %indvars.iv289
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %86, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %71, %80, %83
  %indvars.iv.next290 = add nuw nsw i64 %indvars.iv289, %indvars.iv287
  %indvars.iv.next296 = add nuw nsw i64 %indvars.iv295, %indvars.iv293
  %90 = icmp ult i64 %indvars.iv.next290, %indvars.iv293
  %91 = trunc nuw i64 %indvars.iv.next296 to i32
  %92 = icmp sge i32 %9, %91
  %93 = select i1 %90, i1 %92, i1 false
  br i1 %93, label %71, label %.loopexit195, !llvm.loop !13

.loopexit195:                                     ; preds = %89, %.lr.ph219
  %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, %indvars.iv287
  %94 = trunc nuw i64 %indvars.iv.next294 to i32
  %.not186 = icmp slt i32 %9, %94
  br i1 %.not186, label %.loopexit198, label %.lr.ph219, !llvm.loop !14

.loopexit198:                                     ; preds = %.loopexit195, %61, %.lr.ph223
  %95 = phi i32 [ %58, %.lr.ph223 ], [ %62, %61 ], [ %62, %.loopexit195 ]
  %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1
  %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 2
  %exitcond303.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count302
  br i1 %exitcond303.not, label %._crit_edge224, label %.lr.ph223, !llvm.loop !15

.preheader199.loopexit.unr-lcssa:                 ; preds = %.lr.ph228, %.lr.ph228.preheader
  %indvars.iv304.unr = phi i64 [ 1, %.lr.ph228.preheader ], [ %indvars.iv.next305.3, %.lr.ph228 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader199, label %.lr.ph228.epil

.lr.ph228.epil:                                   ; preds = %.preheader199.loopexit.unr-lcssa, %.lr.ph228.epil
  %indvars.iv304.epil = phi i64 [ %indvars.iv.next305.epil, %.lr.ph228.epil ], [ %indvars.iv304.unr, %.preheader199.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph228.epil ], [ 0, %.preheader199.loopexit.unr-lcssa ]
  %96 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv304.epil
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %98
  %100 = trunc nuw nsw i64 %indvars.iv304.epil to i32
  store i32 %100, ptr %99, align 4, !tbaa !5
  %indvars.iv.next305.epil = add nuw nsw i64 %indvars.iv304.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader199, label %.lr.ph228.epil, !llvm.loop !16

.preheader199:                                    ; preds = %.preheader199.loopexit.unr-lcssa, %.lr.ph228.epil, %._crit_edge224
  %101 = load i32, ptr @mx, align 4
  %.not172237 = icmp slt i32 %101, 1
  br i1 %.not172237, label %._crit_edge241, label %.lr.ph240

.lr.ph228:                                        ; preds = %.lr.ph228, %.lr.ph228.preheader.new
  %indvars.iv304 = phi i64 [ 1, %.lr.ph228.preheader.new ], [ %indvars.iv.next305.3, %.lr.ph228 ]
  %niter = phi i64 [ 0, %.lr.ph228.preheader.new ], [ %niter.next.3, %.lr.ph228 ]
  %102 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv304
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %104
  %106 = trunc nuw nsw i64 %indvars.iv304 to i32
  store i32 %106, ptr %105, align 4, !tbaa !5
  %indvars.iv.next305 = add nuw nsw i64 %indvars.iv304, 1
  %107 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv.next305
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %109
  %111 = trunc nuw nsw i64 %indvars.iv.next305 to i32
  store i32 %111, ptr %110, align 4, !tbaa !5
  %indvars.iv.next305.1 = add nuw nsw i64 %indvars.iv304, 2
  %112 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv.next305.1
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %114
  %116 = trunc nuw nsw i64 %indvars.iv.next305.1 to i32
  store i32 %116, ptr %115, align 4, !tbaa !5
  %indvars.iv.next305.2 = add nuw nsw i64 %indvars.iv304, 3
  %117 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv.next305.2
  %118 = load i32, ptr %117, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %119
  %121 = trunc nuw nsw i64 %indvars.iv.next305.2 to i32
  store i32 %121, ptr %120, align 4, !tbaa !5
  %indvars.iv.next305.3 = add nuw nsw i64 %indvars.iv304, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader199.loopexit.unr-lcssa, label %.lr.ph228, !llvm.loop !18

._crit_edge241.loopexit:                          ; preds = %.loopexit197
  %.pre329 = load i32, ptr @cnt, align 4, !tbaa !5
  br label %._crit_edge241

._crit_edge241:                                   ; preds = %._crit_edge241.loopexit, %.preheader199
  %122 = phi i32 [ %.pre329, %._crit_edge241.loopexit ], [ %55, %.preheader199 ]
  %123 = icmp sgt i32 %122, 0
  br i1 %123, label %.lr.ph269.preheader, label %._crit_edge270.thread

.lr.ph269.preheader:                              ; preds = %._crit_edge241
  %124 = zext nneg i32 %122 to i64
  br label %.lr.ph269

.lr.ph240:                                        ; preds = %.preheader199, %.loopexit197
  %.pre328331 = phi i32 [ %.pre328332, %.loopexit197 ], [ %101, %.preheader199 ]
  %125 = phi i32 [ %182, %.loopexit197 ], [ %101, %.preheader199 ]
  %indvars.iv311 = phi i64 [ %indvars.iv.next312, %.loopexit197 ], [ 1, %.preheader199 ]
  %indvars.iv309 = phi i64 [ %indvars.iv.next310, %.loopexit197 ], [ 2, %.preheader199 ]
  %126 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv311
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %.not178 = icmp eq i32 %127, 0
  %indvars.iv311.tr = trunc i64 %indvars.iv311 to i32
  %128 = shl i32 %indvars.iv311.tr, 1
  %.not179232 = icmp sgt i32 %128, %125
  %or.cond344 = or i1 %.not178, %.not179232
  br i1 %or.cond344, label %.loopexit197, label %.lr.ph236

.lr.ph236:                                        ; preds = %.lr.ph240, %.loopexit193
  %.pre328330 = phi i32 [ %.pre328333, %.loopexit193 ], [ %.pre328331, %.lr.ph240 ]
  %129 = phi i32 [ %179, %.loopexit193 ], [ %125, %.lr.ph240 ]
  %130 = phi i32 [ %180, %.loopexit193 ], [ %125, %.lr.ph240 ]
  %indvars.iv313 = phi i64 [ %indvars.iv.next314, %.loopexit193 ], [ %indvars.iv309, %.lr.ph240 ]
  %131 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv313
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %.not180 = icmp eq i32 %132, 0
  br i1 %.not180, label %.loopexit193, label %.preheader

.preheader:                                       ; preds = %.lr.ph236
  %133 = icmp ult i64 %indvars.iv311, %indvars.iv313
  %134 = trunc nuw i64 %indvars.iv313 to i32
  %135 = icmp sge i32 %130, %134
  %136 = select i1 %133, i1 %135, i1 false
  br i1 %136, label %.lr.ph231, label %.loopexit193

.lr.ph231:                                        ; preds = %.preheader
  %137 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %indvars.iv313
  br label %138

138:                                              ; preds = %.lr.ph231, %171
  %.pre328334 = phi i32 [ %.pre328330, %.lr.ph231 ], [ %.pre328335, %171 ]
  %139 = phi i32 [ %129, %.lr.ph231 ], [ %172, %171 ]
  %140 = phi i32 [ %130, %.lr.ph231 ], [ %173, %171 ]
  %141 = phi i32 [ %130, %.lr.ph231 ], [ %174, %171 ]
  %indvars.iv317 = phi i64 [ %indvars.iv311, %.lr.ph231 ], [ %indvars.iv.next318, %171 ]
  %indvars.iv315 = phi i64 [ %indvars.iv313, %.lr.ph231 ], [ %indvars.iv.next316, %171 ]
  %142 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %indvars.iv315
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %.not181 = icmp eq i32 %143, 0
  br i1 %.not181, label %171, label %144

144:                                              ; preds = %138
  %145 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %indvars.iv315
  %146 = load i32, ptr %145, align 4, !tbaa !5
  %.not182 = icmp eq i32 %146, 0
  br i1 %.not182, label %147, label %153

147:                                              ; preds = %144
  %148 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %indvars.iv315
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %.not183 = icmp eq i32 %149, 0
  br i1 %.not183, label %150, label %153

150:                                              ; preds = %147
  %151 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %indvars.iv315
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %.not184 = icmp eq i32 %152, 0
  br i1 %.not184, label %171, label %153

153:                                              ; preds = %150, %147, %144
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #7
  store i32 %134, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #7
  %154 = trunc nuw nsw i64 %indvars.iv317 to i32
  store i32 %154, ptr %2, align 4, !tbaa !5
  %155 = load i32, ptr %137, align 4, !tbaa !5
  %156 = getelementptr inbounds [100001 x i32], ptr @rnk, i64 0, i64 %indvars.iv317
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = icmp slt i32 %155, %157
  br i1 %158, label %159, label %160

159:                                              ; preds = %153
  call void @_ZSt4swapIiENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2) #7
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  %.pre327 = load i32, ptr %2, align 4, !tbaa !5
  %.pre328.pre = load i32, ptr @mx, align 4
  br label %160

160:                                              ; preds = %159, %153
  %.pre328 = phi i32 [ %.pre328.pre, %159 ], [ %.pre328334, %153 ]
  %161 = phi i32 [ %.pre327, %159 ], [ %154, %153 ]
  %162 = phi i32 [ %.pre, %159 ], [ %134, %153 ]
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = load i32, ptr @tot, align 4, !tbaa !5
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr @tot, align 4, !tbaa !5
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %168
  store i32 %165, ptr %169, align 4, !tbaa !5
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %169, i64 4
  store i32 %161, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !5
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %169, i64 8
  %170 = trunc nuw i64 %indvars.iv315 to i32
  store i32 %170, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !5
  store i32 %167, ptr %164, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #7
  br label %171

171:                                              ; preds = %138, %150, %160
  %.pre328335 = phi i32 [ %.pre328334, %138 ], [ %.pre328334, %150 ], [ %.pre328, %160 ]
  %172 = phi i32 [ %139, %138 ], [ %139, %150 ], [ %.pre328, %160 ]
  %173 = phi i32 [ %140, %138 ], [ %140, %150 ], [ %.pre328, %160 ]
  %174 = phi i32 [ %141, %138 ], [ %141, %150 ], [ %.pre328, %160 ]
  %indvars.iv.next318 = add nuw nsw i64 %indvars.iv317, %indvars.iv311
  %indvars.iv.next316 = add nuw nsw i64 %indvars.iv315, %indvars.iv313
  %175 = icmp ult i64 %indvars.iv.next318, %indvars.iv313
  %176 = trunc nuw i64 %indvars.iv.next316 to i32
  %177 = icmp sge i32 %174, %176
  %178 = select i1 %175, i1 %177, i1 false
  br i1 %178, label %138, label %.loopexit193, !llvm.loop !19

.loopexit193:                                     ; preds = %171, %.preheader, %.lr.ph236
  %.pre328333 = phi i32 [ %.pre328330, %.preheader ], [ %.pre328330, %.lr.ph236 ], [ %.pre328335, %171 ]
  %179 = phi i32 [ %129, %.preheader ], [ %129, %.lr.ph236 ], [ %172, %171 ]
  %180 = phi i32 [ %130, %.preheader ], [ %130, %.lr.ph236 ], [ %173, %171 ]
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, %indvars.iv311
  %181 = trunc nuw i64 %indvars.iv.next314 to i32
  %.not179 = icmp slt i32 %180, %181
  br i1 %.not179, label %.loopexit197, label %.lr.ph236, !llvm.loop !20

.loopexit197:                                     ; preds = %.loopexit193, %.lr.ph240
  %.pre328332 = phi i32 [ %.pre328331, %.lr.ph240 ], [ %.pre328333, %.loopexit193 ]
  %182 = phi i32 [ %125, %.lr.ph240 ], [ %179, %.loopexit193 ]
  %indvars.iv.next312 = add nuw nsw i64 %indvars.iv311, 1
  %183 = sext i32 %182 to i64
  %.not172.not = icmp slt i64 %indvars.iv311, %183
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 2
  br i1 %.not172.not, label %.lr.ph240, label %._crit_edge241.loopexit, !llvm.loop !21

._crit_edge270:                                   ; preds = %._crit_edge265
  %184 = icmp slt i32 %.1.lcssa340.fr, 0
  %185 = add nsw i32 %.1.lcssa340.fr, 1000000007
  %spec.select = select i1 %184, i32 %185, i32 %.1.lcssa340.fr
  br label %._crit_edge270.thread

._crit_edge270.thread:                            ; preds = %._crit_edge270, %._crit_edge241
  %186 = phi i32 [ 0, %._crit_edge241 ], [ %spec.select, %._crit_edge270 ]
  %187 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %186)
  %188 = load i32, ptr @T, align 4, !tbaa !5
  %189 = add nsw i32 %188, -1
  store i32 %189, ptr @T, align 4, !tbaa !5
  %.not = icmp eq i32 %188, 0
  br i1 %.not, label %._crit_edge275, label %.lr.ph274, !llvm.loop !22

.lr.ph269:                                        ; preds = %.lr.ph269.preheader, %._crit_edge265
  %indvars.iv324 = phi i64 [ %124, %.lr.ph269.preheader ], [ %indvars.iv.next325, %._crit_edge265 ]
  %.0159266 = phi i32 [ 0, %.lr.ph269.preheader ], [ %.1.lcssa340.fr, %._crit_edge265 ]
  %190 = getelementptr inbounds [100001 x i32], ptr @ord, i64 0, i64 %indvars.iv324
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %192
  %.0156242 = load i32, ptr %193, align 4, !tbaa !5
  %.not173243 = icmp eq i32 %.0156242, 0
  br i1 %.not173243, label %._crit_edge247, label %.lr.ph246

._crit_edge247:                                   ; preds = %.lr.ph246, %.lr.ph269
  %194 = sext i32 %.0159266 to i64
  %195 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %192
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %192
  %199 = load i32, ptr %198, align 4, !tbaa !5
  %200 = sext i32 %199 to i64
  %201 = mul nsw i64 %200, %197
  %202 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %192
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = mul nsw i64 %201, %204
  %206 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %192
  %207 = load i32, ptr %206, align 4, !tbaa !5
  %208 = sext i32 %207 to i64
  %209 = mul nsw i64 %205, %208
  %210 = add nsw i64 %209, %194
  %211 = srem i64 %210, 1000000007
  %212 = trunc nsw i64 %211 to i32
  br i1 %.not173243, label %._crit_edge265, label %.lr.ph259

.lr.ph246:                                        ; preds = %.lr.ph269, %.lr.ph246
  %.0156244 = phi i32 [ %.0156, %.lr.ph246 ], [ %.0156242, %.lr.ph269 ]
  %213 = sext i32 %.0156244 to i64
  %214 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %213
  %215 = getelementptr inbounds i8, ptr %214, i64 8
  %216 = load i32, ptr %215, align 4, !tbaa !23
  %217 = getelementptr inbounds i8, ptr %214, i64 4
  %218 = load i32, ptr %217, align 4, !tbaa !25
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %219
  store i32 %216, ptr %220, align 4, !tbaa !5
  %.0156 = load i32, ptr %214, align 4, !tbaa !5
  %.not173 = icmp eq i32 %.0156, 0
  br i1 %.not173, label %._crit_edge247, label %.lr.ph246, !llvm.loop !26

.loopexit:                                        ; preds = %326, %.lr.ph259
  %.2.lcssa = phi i32 [ %268, %.lr.ph259 ], [ %.3, %326 ]
  %.0155 = load i32, ptr %222, align 4, !tbaa !5
  %.not174 = icmp eq i32 %.0155, 0
  br i1 %.not174, label %.preheader196, label %.lr.ph259, !llvm.loop !27

.preheader196:                                    ; preds = %.loopexit
  br i1 %.not173243, label %._crit_edge265, label %.lr.ph264

.lr.ph259:                                        ; preds = %._crit_edge247, %.loopexit
  %.0155257 = phi i32 [ %.0155, %.loopexit ], [ %.0156242, %._crit_edge247 ]
  %.1256 = phi i32 [ %.2.lcssa, %.loopexit ], [ %212, %._crit_edge247 ]
  %221 = sext i32 %.0155257 to i64
  %222 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %221
  %223 = getelementptr inbounds i8, ptr %222, i64 4
  %224 = load i32, ptr %223, align 4, !tbaa !25
  %225 = getelementptr inbounds i8, ptr %222, i64 8
  %226 = load i32, ptr %225, align 4, !tbaa !23
  %227 = sext i32 %.1256 to i64
  %228 = sext i32 %226 to i64
  %229 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %228
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %228
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = mul nsw i64 %234, %231
  %236 = sext i32 %224 to i64
  %237 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = mul nsw i32 %238, %203
  %240 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %236
  %241 = load i32, ptr %240, align 4, !tbaa !5
  %242 = mul nsw i32 %241, %207
  %243 = add nsw i32 %242, %239
  %244 = sext i32 %243 to i64
  %245 = mul nsw i64 %235, %244
  %246 = add nsw i64 %245, %227
  %247 = mul nsw i32 %238, %199
  %248 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %236
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = mul nsw i32 %249, %207
  %251 = add nsw i32 %250, %247
  %252 = sext i32 %251 to i64
  %253 = mul nsw i64 %252, %231
  %254 = mul nsw i32 %238, %196
  %255 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %236
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = mul nsw i32 %256, %207
  %258 = add nsw i32 %257, %254
  %259 = sext i32 %258 to i64
  %260 = mul nsw i64 %259, %234
  %261 = add nsw i64 %260, %253
  %262 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %228
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = sext i32 %263 to i64
  %265 = mul nsw i64 %261, %264
  %266 = add nsw i64 %246, %265
  %267 = srem i64 %266, 1000000007
  %268 = trunc nsw i64 %267 to i32
  %269 = getelementptr inbounds [100001 x i32], ptr @lnk, i64 0, i64 %236
  %.0152248 = load i32, ptr %269, align 4, !tbaa !5
  %.not176249 = icmp eq i32 %.0152248, 0
  br i1 %.not176249, label %.loopexit, label %.lr.ph253

.lr.ph253:                                        ; preds = %.lr.ph259
  %270 = sext i32 %238 to i64
  %271 = mul nsw i64 %270, %208
  br label %272

272:                                              ; preds = %.lr.ph253, %326
  %.0152251 = phi i32 [ %.0152248, %.lr.ph253 ], [ %.0152, %326 ]
  %.2250 = phi i32 [ %268, %.lr.ph253 ], [ %.3, %326 ]
  %273 = sext i32 %.0152251 to i64
  %274 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %273
  %275 = getelementptr inbounds i8, ptr %274, i64 4
  %276 = load i32, ptr %275, align 4, !tbaa !25
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %.not177 = icmp eq i32 %279, 0
  br i1 %.not177, label %326, label %280

280:                                              ; preds = %272
  %281 = getelementptr inbounds i8, ptr %274, i64 8
  %282 = load i32, ptr %281, align 4, !tbaa !23
  %283 = sext i32 %.2250 to i64
  %284 = sext i32 %282 to i64
  %285 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %284
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = sext i32 %286 to i64
  %288 = mul nsw i64 %287, %231
  %289 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %284
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %292 = mul nsw i64 %291, %234
  %293 = add nsw i64 %292, %288
  %294 = sext i32 %279 to i64
  %295 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !5
  %297 = sext i32 %296 to i64
  %298 = mul nsw i64 %293, %297
  %299 = getelementptr inbounds [100001 x i32], ptr @g, i64 0, i64 %294
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = sext i32 %300 to i64
  %302 = mul nsw i64 %301, %231
  %303 = getelementptr inbounds [100001 x i32], ptr @f, i64 0, i64 %294
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = mul nsw i64 %305, %234
  %307 = add nsw i64 %306, %302
  %308 = getelementptr inbounds [100001 x i32], ptr @h, i64 0, i64 %284
  %309 = load i32, ptr %308, align 4, !tbaa !5
  %310 = sext i32 %309 to i64
  %311 = mul nsw i64 %307, %310
  %312 = add nsw i64 %311, %298
  %313 = mul nsw i64 %301, %291
  %314 = mul nsw i64 %305, %287
  %315 = add nsw i64 %314, %313
  %316 = mul nsw i64 %315, %264
  %317 = add nsw i64 %312, %316
  %318 = getelementptr inbounds [100001 x i32], ptr @mu, i64 0, i64 %277
  %319 = load i32, ptr %318, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = mul i64 %271, %320
  %322 = mul i64 %321, %317
  %323 = add nsw i64 %322, %283
  %324 = srem i64 %323, 1000000007
  %325 = trunc nsw i64 %324 to i32
  br label %326

326:                                              ; preds = %272, %280
  %.3 = phi i32 [ %325, %280 ], [ %.2250, %272 ]
  %.0152 = load i32, ptr %274, align 4, !tbaa !5
  %.not176 = icmp eq i32 %.0152, 0
  br i1 %.not176, label %.loopexit, label %272, !llvm.loop !28

._crit_edge265:                                   ; preds = %.lr.ph264, %._crit_edge247, %.preheader196
  %.1.lcssa340 = phi i32 [ %.2.lcssa, %.preheader196 ], [ %212, %._crit_edge247 ], [ %.2.lcssa, %.lr.ph264 ]
  %.1.lcssa340.fr = freeze i32 %.1.lcssa340
  %indvars.iv.next325 = add nsw i64 %indvars.iv324, -1
  %327 = icmp sgt i64 %indvars.iv324, 1
  br i1 %327, label %.lr.ph269, label %._crit_edge270, !llvm.loop !29

.lr.ph264:                                        ; preds = %.preheader196, %.lr.ph264
  %.0263 = phi i32 [ %.0, %.lr.ph264 ], [ %.0156242, %.preheader196 ]
  %328 = sext i32 %.0263 to i64
  %329 = getelementptr inbounds [800001 x %struct.Edge], ptr @e, i64 0, i64 %328
  %330 = getelementptr inbounds i8, ptr %329, i64 4
  %331 = load i32, ptr %330, align 4, !tbaa !25
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds [100001 x i32], ptr @pos, i64 0, i64 %332
  store i32 0, ptr %333, align 4, !tbaa !5
  %.0 = load i32, ptr %329, align 4, !tbaa !5
  %.not175 = icmp eq i32 %.0, 0
  br i1 %.not175, label %._crit_edge265, label %.lr.ph264, !llvm.loop !30

._crit_edge275:                                   ; preds = %._crit_edge270.thread, %0
  ret i32 0
}

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_scanf(ptr nocapture noundef readonly, ...) local_unnamed_addr #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 #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIPiPFbRKiS2_EEvT_S5_T0_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

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

attributes #0 = { 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 #1 = { 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 #2 = { nofree nounwind "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 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !17}
!17 = !{!"llvm.loop.unroll.disable"}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = !{!24, !6, i64 8}
!24 = !{!"_ZTS4Edge", !6, i64 0, !6, i64 4, !6, i64 8}
!25 = !{!24, !6, i64 4}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}


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