MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  prmlem2 Structured version   Visualization version   GIF version

Theorem prmlem2 16029
Description: Our last proving session got as far as 25 because we started with the two "bootstrap" primes 2 and 3, and the next prime is 5, so knowing that 2 and 3 are prime and 4 is not allows us to cover the numbers less than 5↑2 = 25. Additionally, nonprimes are "easy", so we can extend this range of known prime/nonprimes all the way until 29, which is the first prime larger than 25. Thus, in this lemma we extend another blanket out to 29↑2 = 841, from which we can prove even more primes. If we wanted, we could keep doing this, but the goal is Bertrand's postulate, and for that we only need a few large primes - we don't need to find them all, as we have been doing thus far. So after this blanket runs out, we'll have to switch to another method (see 1259prm 16045).

As a side note, you can see the pattern of the primes in the indentation pattern of this lemma! (Contributed by Mario Carneiro, 18-Feb-2014.) (Proof shortened by Mario Carneiro, 20-Apr-2015.)

Hypotheses
Ref Expression
prmlem2.n 𝑁 ∈ ℕ
prmlem2.lt 𝑁 < 841
prmlem2.gt 1 < 𝑁
prmlem2.2 ¬ 2 ∥ 𝑁
prmlem2.3 ¬ 3 ∥ 𝑁
prmlem2.5 ¬ 5 ∥ 𝑁
prmlem2.7 ¬ 7 ∥ 𝑁
prmlem2.11 ¬ 11 ∥ 𝑁
prmlem2.13 ¬ 13 ∥ 𝑁
prmlem2.17 ¬ 17 ∥ 𝑁
prmlem2.19 ¬ 19 ∥ 𝑁
prmlem2.23 ¬ 23 ∥ 𝑁
Assertion
Ref Expression
prmlem2 𝑁 ∈ ℙ

Proof of Theorem prmlem2
Dummy variable 𝑥 is distinct from all other variables.
StepHypRef Expression
1 prmlem2.n . 2 𝑁 ∈ ℕ
2 prmlem2.gt . 2 1 < 𝑁
3 prmlem2.2 . 2 ¬ 2 ∥ 𝑁
4 prmlem2.3 . 2 ¬ 3 ∥ 𝑁
5 eluzelre 11890 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 𝑥 ∈ ℝ)
65resqcld 13229 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (𝑥↑2) ∈ ℝ)
7 eluzle 11892 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 29 ≤ 𝑥)
8 2nn0 11501 . . . . . . . . . . . . . . . . . . . . . . 23 2 ∈ ℕ0
9 9nn0 11508 . . . . . . . . . . . . . . . . . . . . . . 23 9 ∈ ℕ0
108, 9deccl 11704 . . . . . . . . . . . . . . . . . . . . . 22 29 ∈ ℕ0
1110nn0rei 11495 . . . . . . . . . . . . . . . . . . . . 21 29 ∈ ℝ
1210nn0ge0i 11512 . . . . . . . . . . . . . . . . . . . . 21 0 ≤ 29
13 le2sq2 13133 . . . . . . . . . . . . . . . . . . . . 21 (((29 ∈ ℝ ∧ 0 ≤ 29) ∧ (𝑥 ∈ ℝ ∧ 29 ≤ 𝑥)) → (29↑2) ≤ (𝑥↑2))
1411, 12, 13mpanl12 720 . . . . . . . . . . . . . . . . . . . 20 ((𝑥 ∈ ℝ ∧ 29 ≤ 𝑥) → (29↑2) ≤ (𝑥↑2))
155, 7, 14syl2anc 696 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (29↑2) ≤ (𝑥↑2))
161nnrei 11221 . . . . . . . . . . . . . . . . . . . 20 𝑁 ∈ ℝ
1711resqcli 13143 . . . . . . . . . . . . . . . . . . . 20 (29↑2) ∈ ℝ
18 prmlem2.lt . . . . . . . . . . . . . . . . . . . . . 22 𝑁 < 841
1910nn0cni 11496 . . . . . . . . . . . . . . . . . . . . . . . 24 29 ∈ ℂ
2019sqvali 13137 . . . . . . . . . . . . . . . . . . . . . . 23 (29↑2) = (29 · 29)
21 eqid 2760 . . . . . . . . . . . . . . . . . . . . . . . 24 29 = 29
22 1nn0 11500 . . . . . . . . . . . . . . . . . . . . . . . 24 1 ∈ ℕ0
23 6nn0 11505 . . . . . . . . . . . . . . . . . . . . . . . . 25 6 ∈ ℕ0
248, 23deccl 11704 . . . . . . . . . . . . . . . . . . . . . . . 24 26 ∈ ℕ0
25 5nn0 11504 . . . . . . . . . . . . . . . . . . . . . . . . 25 5 ∈ ℕ0
26 8nn0 11507 . . . . . . . . . . . . . . . . . . . . . . . . 25 8 ∈ ℕ0
27192timesi 11339 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (2 · 29) = (29 + 29)
28 2p2e4 11336 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 (2 + 2) = 4
2928oveq1i 6823 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((2 + 2) + 1) = (4 + 1)
30 4p1e5 11346 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 (4 + 1) = 5
3129, 30eqtri 2782 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((2 + 2) + 1) = 5
32 9p9e18 11819 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (9 + 9) = 18
338, 9, 8, 9, 21, 21, 31, 26, 32decaddc 11764 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (29 + 29) = 58
3427, 33eqtri 2782 . . . . . . . . . . . . . . . . . . . . . . . . 25 (2 · 29) = 58
35 eqid 2760 . . . . . . . . . . . . . . . . . . . . . . . . 25 26 = 26
36 5p2e7 11357 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (5 + 2) = 7
3736oveq1i 6823 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((5 + 2) + 1) = (7 + 1)
38 7p1e8 11349 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (7 + 1) = 8
3937, 38eqtri 2782 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((5 + 2) + 1) = 8
40 4nn0 11503 . . . . . . . . . . . . . . . . . . . . . . . . 25 4 ∈ ℕ0
41 8p6e14 11808 . . . . . . . . . . . . . . . . . . . . . . . . 25 (8 + 6) = 14
4225, 26, 8, 23, 34, 35, 39, 40, 41decaddc 11764 . . . . . . . . . . . . . . . . . . . . . . . 24 ((2 · 29) + 26) = 84
43 9t2e18 11855 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (9 · 2) = 18
44 1p1e2 11326 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (1 + 1) = 2
45 8p8e16 11810 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (8 + 8) = 16
4622, 26, 26, 43, 44, 23, 45decaddci 11772 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((9 · 2) + 8) = 26
47 9t9e81 11862 . . . . . . . . . . . . . . . . . . . . . . . . 25 (9 · 9) = 81
489, 8, 9, 21, 22, 26, 46, 47decmul2c 11781 . . . . . . . . . . . . . . . . . . . . . . . 24 (9 · 29) = 261
4910, 8, 9, 21, 22, 24, 42, 48decmul1c 11779 . . . . . . . . . . . . . . . . . . . . . . 23 (29 · 29) = 841
5020, 49eqtri 2782 . . . . . . . . . . . . . . . . . . . . . 22 (29↑2) = 841
5118, 50breqtrri 4831 . . . . . . . . . . . . . . . . . . . . 21 𝑁 < (29↑2)
52 ltletr 10321 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((𝑁 < (29↑2) ∧ (29↑2) ≤ (𝑥↑2)) → 𝑁 < (𝑥↑2)))
5351, 52mpani 714 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
5416, 17, 53mp3an12 1563 . . . . . . . . . . . . . . . . . . 19 ((𝑥↑2) ∈ ℝ → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
556, 15, 54sylc 65 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → 𝑁 < (𝑥↑2))
56 ltnle 10309 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5716, 6, 56sylancr 698 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5855, 57mpbid 222 . . . . . . . . . . . . . . . . 17 (𝑥 ∈ (ℤ29) → ¬ (𝑥↑2) ≤ 𝑁)
5958pm2.21d 118 . . . . . . . . . . . . . . . 16 (𝑥 ∈ (ℤ29) → ((𝑥↑2) ≤ 𝑁 → ¬ 𝑥𝑁))
6059adantld 484 . . . . . . . . . . . . . . 15 (𝑥 ∈ (ℤ29) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
6160adantl 473 . . . . . . . . . . . . . 14 ((¬ 2 ∥ 29 ∧ 𝑥 ∈ (ℤ29)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
62 9nn 11384 . . . . . . . . . . . . . . . 16 9 ∈ ℕ
63 3nn 11378 . . . . . . . . . . . . . . . 16 3 ∈ ℕ
64 1lt9 11421 . . . . . . . . . . . . . . . 16 1 < 9
65 1lt3 11388 . . . . . . . . . . . . . . . 16 1 < 3
66 9t3e27 11856 . . . . . . . . . . . . . . . 16 (9 · 3) = 27
6762, 63, 64, 65, 66nprmi 15604 . . . . . . . . . . . . . . 15 ¬ 27 ∈ ℙ
6867pm2.21i 116 . . . . . . . . . . . . . 14 (27 ∈ ℙ → ¬ 27 ∥ 𝑁)
69 7nn0 11506 . . . . . . . . . . . . . . 15 7 ∈ ℕ0
70 eqid 2760 . . . . . . . . . . . . . . 15 27 = 27
71 7p2e9 11364 . . . . . . . . . . . . . . 15 (7 + 2) = 9
728, 69, 8, 70, 71decaddi 11771 . . . . . . . . . . . . . 14 (27 + 2) = 29
7361, 68, 72prmlem0 16014 . . . . . . . . . . . . 13 ((¬ 2 ∥ 27 ∧ 𝑥 ∈ (ℤ27)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
74 5nn 11380 . . . . . . . . . . . . . . 15 5 ∈ ℕ
75 1lt5 11395 . . . . . . . . . . . . . . 15 1 < 5
76 5t5e25 11831 . . . . . . . . . . . . . . 15 (5 · 5) = 25
7774, 74, 75, 75, 76nprmi 15604 . . . . . . . . . . . . . 14 ¬ 25 ∈ ℙ
7877pm2.21i 116 . . . . . . . . . . . . 13 (25 ∈ ℙ → ¬ 25 ∥ 𝑁)
79 eqid 2760 . . . . . . . . . . . . . 14 25 = 25
808, 25, 8, 79, 36decaddi 11771 . . . . . . . . . . . . 13 (25 + 2) = 27
8173, 78, 80prmlem0 16014 . . . . . . . . . . . 12 ((¬ 2 ∥ 25 ∧ 𝑥 ∈ (ℤ25)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
82 prmlem2.23 . . . . . . . . . . . . 13 ¬ 23 ∥ 𝑁
8382a1i 11 . . . . . . . . . . . 12 (23 ∈ ℙ → ¬ 23 ∥ 𝑁)
84 3nn0 11502 . . . . . . . . . . . . 13 3 ∈ ℕ0
85 eqid 2760 . . . . . . . . . . . . 13 23 = 23
86 3p2e5 11352 . . . . . . . . . . . . 13 (3 + 2) = 5
878, 84, 8, 85, 86decaddi 11771 . . . . . . . . . . . 12 (23 + 2) = 25
8881, 83, 87prmlem0 16014 . . . . . . . . . . 11 ((¬ 2 ∥ 23 ∧ 𝑥 ∈ (ℤ23)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
89 7nn 11382 . . . . . . . . . . . . 13 7 ∈ ℕ
90 1lt7 11406 . . . . . . . . . . . . 13 1 < 7
91 7t3e21 11841 . . . . . . . . . . . . 13 (7 · 3) = 21
9289, 63, 90, 65, 91nprmi 15604 . . . . . . . . . . . 12 ¬ 21 ∈ ℙ
9392pm2.21i 116 . . . . . . . . . . 11 (21 ∈ ℙ → ¬ 21 ∥ 𝑁)
94 eqid 2760 . . . . . . . . . . . 12 21 = 21
95 1p2e3 11344 . . . . . . . . . . . 12 (1 + 2) = 3
968, 22, 8, 94, 95decaddi 11771 . . . . . . . . . . 11 (21 + 2) = 23
9788, 93, 96prmlem0 16014 . . . . . . . . . 10 ((¬ 2 ∥ 21 ∧ 𝑥 ∈ (ℤ21)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
98 prmlem2.19 . . . . . . . . . . 11 ¬ 19 ∥ 𝑁
9998a1i 11 . . . . . . . . . 10 (19 ∈ ℙ → ¬ 19 ∥ 𝑁)
100 eqid 2760 . . . . . . . . . . 11 19 = 19
101 9p2e11 11811 . . . . . . . . . . 11 (9 + 2) = 11
10222, 9, 8, 100, 44, 22, 101decaddci 11772 . . . . . . . . . 10 (19 + 2) = 21
10397, 99, 102prmlem0 16014 . . . . . . . . 9 ((¬ 2 ∥ 19 ∧ 𝑥 ∈ (ℤ19)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
104 prmlem2.17 . . . . . . . . . 10 ¬ 17 ∥ 𝑁
105104a1i 11 . . . . . . . . 9 (17 ∈ ℙ → ¬ 17 ∥ 𝑁)
106 eqid 2760 . . . . . . . . . 10 17 = 17
10722, 69, 8, 106, 71decaddi 11771 . . . . . . . . 9 (17 + 2) = 19
108103, 105, 107prmlem0 16014 . . . . . . . 8 ((¬ 2 ∥ 17 ∧ 𝑥 ∈ (ℤ17)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
109 5t3e15 11827 . . . . . . . . . 10 (5 · 3) = 15
11074, 63, 75, 65, 109nprmi 15604 . . . . . . . . 9 ¬ 15 ∈ ℙ
111110pm2.21i 116 . . . . . . . 8 (15 ∈ ℙ → ¬ 15 ∥ 𝑁)
112 eqid 2760 . . . . . . . . 9 15 = 15
11322, 25, 8, 112, 36decaddi 11771 . . . . . . . 8 (15 + 2) = 17
114108, 111, 113prmlem0 16014 . . . . . . 7 ((¬ 2 ∥ 15 ∧ 𝑥 ∈ (ℤ15)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
115 prmlem2.13 . . . . . . . 8 ¬ 13 ∥ 𝑁
116115a1i 11 . . . . . . 7 (13 ∈ ℙ → ¬ 13 ∥ 𝑁)
117 eqid 2760 . . . . . . . 8 13 = 13
11822, 84, 8, 117, 86decaddi 11771 . . . . . . 7 (13 + 2) = 15
119114, 116, 118prmlem0 16014 . . . . . 6 ((¬ 2 ∥ 13 ∧ 𝑥 ∈ (ℤ13)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
120 prmlem2.11 . . . . . . 7 ¬ 11 ∥ 𝑁
121120a1i 11 . . . . . 6 (11 ∈ ℙ → ¬ 11 ∥ 𝑁)
122 eqid 2760 . . . . . . 7 11 = 11
12322, 22, 8, 122, 95decaddi 11771 . . . . . 6 (11 + 2) = 13
124119, 121, 123prmlem0 16014 . . . . 5 ((¬ 2 ∥ 11 ∧ 𝑥 ∈ (ℤ11)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
125 9nprm 16021 . . . . . 6 ¬ 9 ∈ ℙ
126125pm2.21i 116 . . . . 5 (9 ∈ ℙ → ¬ 9 ∥ 𝑁)
127124, 126, 101prmlem0 16014 . . . 4 ((¬ 2 ∥ 9 ∧ 𝑥 ∈ (ℤ‘9)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
128 prmlem2.7 . . . . 5 ¬ 7 ∥ 𝑁
129128a1i 11 . . . 4 (7 ∈ ℙ → ¬ 7 ∥ 𝑁)
130127, 129, 71prmlem0 16014 . . 3 ((¬ 2 ∥ 7 ∧ 𝑥 ∈ (ℤ‘7)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
131 prmlem2.5 . . . 4 ¬ 5 ∥ 𝑁
132131a1i 11 . . 3 (5 ∈ ℙ → ¬ 5 ∥ 𝑁)
133130, 132, 36prmlem0 16014 . 2 ((¬ 2 ∥ 5 ∧ 𝑥 ∈ (ℤ‘5)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
1341, 2, 3, 4, 133prmlem1a 16015 1 𝑁 ∈ ℙ
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 196  wa 383  w3a 1072  wcel 2139  cdif 3712  {csn 4321   class class class wbr 4804  cfv 6049  (class class class)co 6813  cr 10127  0cc0 10128  1c1 10129   + caddc 10131   · cmul 10133   < clt 10266  cle 10267  cn 11212  2c2 11262  3c3 11263  4c4 11264  5c5 11265  6c6 11266  7c7 11267  8c8 11268  9c9 11269  cdc 11685  cuz 11879  cexp 13054  cdvds 15182  cprime 15587
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1871  ax-4 1886  ax-5 1988  ax-6 2054  ax-7 2090  ax-8 2141  ax-9 2148  ax-10 2168  ax-11 2183  ax-12 2196  ax-13 2391  ax-ext 2740  ax-sep 4933  ax-nul 4941  ax-pow 4992  ax-pr 5055  ax-un 7114  ax-cnex 10184  ax-resscn 10185  ax-1cn 10186  ax-icn 10187  ax-addcl 10188  ax-addrcl 10189  ax-mulcl 10190  ax-mulrcl 10191  ax-mulcom 10192  ax-addass 10193  ax-mulass 10194  ax-distr 10195  ax-i2m1 10196  ax-1ne0 10197  ax-1rid 10198  ax-rnegex 10199  ax-rrecex 10200  ax-cnre 10201  ax-pre-lttri 10202  ax-pre-lttrn 10203  ax-pre-ltadd 10204  ax-pre-mulgt0 10205  ax-pre-sup 10206
This theorem depends on definitions:  df-bi 197  df-or 384  df-an 385  df-3or 1073  df-3an 1074  df-tru 1635  df-ex 1854  df-nf 1859  df-sb 2047  df-eu 2611  df-mo 2612  df-clab 2747  df-cleq 2753  df-clel 2756  df-nfc 2891  df-ne 2933  df-nel 3036  df-ral 3055  df-rex 3056  df-reu 3057  df-rmo 3058  df-rab 3059  df-v 3342  df-sbc 3577  df-csb 3675  df-dif 3718  df-un 3720  df-in 3722  df-ss 3729  df-pss 3731  df-nul 4059  df-if 4231  df-pw 4304  df-sn 4322  df-pr 4324  df-tp 4326  df-op 4328  df-uni 4589  df-iun 4674  df-br 4805  df-opab 4865  df-mpt 4882  df-tr 4905  df-id 5174  df-eprel 5179  df-po 5187  df-so 5188  df-fr 5225  df-we 5227  df-xp 5272  df-rel 5273  df-cnv 5274  df-co 5275  df-dm 5276  df-rn 5277  df-res 5278  df-ima 5279  df-pred 5841  df-ord 5887  df-on 5888  df-lim 5889  df-suc 5890  df-iota 6012  df-fun 6051  df-fn 6052  df-f 6053  df-f1 6054  df-fo 6055  df-f1o 6056  df-fv 6057  df-riota 6774  df-ov 6816  df-oprab 6817  df-mpt2 6818  df-om 7231  df-1st 7333  df-2nd 7334  df-wrecs 7576  df-recs 7637  df-rdg 7675  df-1o 7729  df-2o 7730  df-er 7911  df-en 8122  df-dom 8123  df-sdom 8124  df-fin 8125  df-sup 8513  df-pnf 10268  df-mnf 10269  df-xr 10270  df-ltxr 10271  df-le 10272  df-sub 10460  df-neg 10461  df-div 10877  df-nn 11213  df-2 11271  df-3 11272  df-4 11273  df-5 11274  df-6 11275  df-7 11276  df-8 11277  df-9 11278  df-n0 11485  df-z 11570  df-dec 11686  df-uz 11880  df-rp 12026  df-fz 12520  df-seq 12996  df-exp 13055  df-cj 14038  df-re 14039  df-im 14040  df-sqrt 14174  df-abs 14175  df-dvds 15183  df-prm 15588
This theorem is referenced by:  37prm  16030  43prm  16031  83prm  16032  139prm  16033  163prm  16034  317prm  16035  631prm  16036  257prm  41983  139prmALT  42021  127prm  42025
  Copyright terms: Public domain W3C validator