#G00012. Đổ đầy bình (Full Tank?)

Đổ đầy bình (Full Tank?)

Đổ đầy bình (Full Tank?)

Nguồn: UVa Online Judge / Kattis

Phiên bản: Phước Hưng OJ Extended

Đề bài

Có nn thành phố và mm con đường hai chiều. Giá một đơn vị nhiên liệu tại thành phố ii là pip_i.

Xe tiêu thụ đúng một đơn vị nhiên liệu cho mỗi đơn vị khoảng cách và bắt đầu với bình xăng rỗng.

Mỗi truy vấn cho biết:

  • dung tích bình nhiên liệu cc;
  • thành phố xuất phát ss;
  • thành phố đích ee.

Tại một thành phố, bạn có thể mua từng đơn vị nhiên liệu với giá của thành phố đó, miễn lượng nhiên liệu trong bình không vượt quá cc.

Hãy tìm chi phí nhiên liệu nhỏ nhất cho từng truy vấn.

Input

Dòng đầu chứa hai số nguyên n,mn,m.

Dòng thứ hai chứa nn số nguyên p0,p1,…,pn−1p_0,p_1,\ldots,p_{n-1}.

Trong mm dòng tiếp theo, mỗi dòng chứa u,v,du,v,d, mô tả một con đường hai chiều giữa uu và vv có độ dài dd.

Dòng tiếp theo chứa số truy vấn qq.

Trong qq dòng cuối, mỗi dòng chứa c,s,ec,s,e.

Các truy vấn thuộc cùng một đồ thị, vì vậy chúng vẫn nằm trong cùng một test case.

Output

Với mỗi truy vấn, in chi phí nhỏ nhất để đi từ ss đến ee với dung tích bình cc.

Nếu không thể đi được, in impossible.

Subtask

Trong tất cả các Subtask: 0≤u,v,s,e<n0\le u,v,s,e<n; 1≤pi≤1001\le p_i\le100; 1≤d≤1001\le d\le100.

  • Subtask 1 — 20% — 0.75 giây: 1≤n≤301\le n\le30; 0≤m≤2000\le m\le200; 1≤q≤101\le q\le10; 1≤c≤301\le c\le30.
  • Subtask 2 — 30% — 1.50 giây: 1≤n≤3001\le n\le300; 0≤m≤20000\le m\le2000; 1≤q≤501\le q\le50; 1≤c≤1001\le c\le100.
  • Subtask 3 — 50% — 3.00 giây: 1≤n≤10001\le n\le1000; 0≤m≤1040\le m\le10^4; 1≤q≤1001\le q\le100; 1≤c≤1001\le c\le100.

Ví dụ

Input

5 5
10 10 20 12 13
0 1 9
0 2 8
1 2 1
1 3 11
2 3 7
2
10 0 3
20 1 4

Output

170
impossible

Giải thích

Với truy vấn đầu, bình dung tích 1010 đủ để đi qua mạng đường và chi phí nhiên liệu nhỏ nhất là 170170. Với truy vấn thứ hai, không tồn tại hành trình từ 11 đến 44, nên kết quả là impossible.

##Nhãn

  • Shortest Paths -> Dijkstra
  • Dynamic Programming -> State compression
  • Data Structures -> Priority queue