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

Theorem prmlem2 16225
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 16241).

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 12003 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 𝑥 ∈ ℝ)
65resqcld 13356 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (𝑥↑2) ∈ ℝ)
7 eluzle 12005 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 29 ≤ 𝑥)
8 2nn0 11661 . . . . . . . . . . . . . . . . . . . . . . 23 2 ∈ ℕ0
9 9nn0 11668 . . . . . . . . . . . . . . . . . . . . . . 23 9 ∈ ℕ0
108, 9deccl 11860 . . . . . . . . . . . . . . . . . . . . . 22 29 ∈ ℕ0
1110nn0rei 11654 . . . . . . . . . . . . . . . . . . . . 21 29 ∈ ℝ
1210nn0ge0i 11671 . . . . . . . . . . . . . . . . . . . . 21 0 ≤ 29
13 le2sq2 13258 . . . . . . . . . . . . . . . . . . . . 21 (((29 ∈ ℝ ∧ 0 ≤ 29) ∧ (𝑥 ∈ ℝ ∧ 29 ≤ 𝑥)) → (29↑2) ≤ (𝑥↑2))
1411, 12, 13mpanl12 692 . . . . . . . . . . . . . . . . . . . 20 ((𝑥 ∈ ℝ ∧ 29 ≤ 𝑥) → (29↑2) ≤ (𝑥↑2))
155, 7, 14syl2anc 579 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (29↑2) ≤ (𝑥↑2))
161nnrei 11384 . . . . . . . . . . . . . . . . . . . 20 𝑁 ∈ ℝ
1711resqcli 13268 . . . . . . . . . . . . . . . . . . . 20 (29↑2) ∈ ℝ
18 prmlem2.lt . . . . . . . . . . . . . . . . . . . . . 22 𝑁 < 841
1910nn0cni 11655 . . . . . . . . . . . . . . . . . . . . . . . 24 29 ∈ ℂ
2019sqvali 13262 . . . . . . . . . . . . . . . . . . . . . . 23 (29↑2) = (29 · 29)
21 eqid 2778 . . . . . . . . . . . . . . . . . . . . . . . 24 29 = 29
22 1nn0 11660 . . . . . . . . . . . . . . . . . . . . . . . 24 1 ∈ ℕ0
23 6nn0 11665 . . . . . . . . . . . . . . . . . . . . . . . . 25 6 ∈ ℕ0
248, 23deccl 11860 . . . . . . . . . . . . . . . . . . . . . . . 24 26 ∈ ℕ0
25 5nn0 11664 . . . . . . . . . . . . . . . . . . . . . . . . 25 5 ∈ ℕ0
26 8nn0 11667 . . . . . . . . . . . . . . . . . . . . . . . . 25 8 ∈ ℕ0
27192timesi 11520 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (2 · 29) = (29 + 29)
28 2p2e4 11517 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 (2 + 2) = 4
2928oveq1i 6932 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((2 + 2) + 1) = (4 + 1)
30 4p1e5 11528 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 (4 + 1) = 5
3129, 30eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((2 + 2) + 1) = 5
32 9p9e18 11941 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (9 + 9) = 18
338, 9, 8, 9, 21, 21, 31, 26, 32decaddc 11901 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (29 + 29) = 58
3427, 33eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . 25 (2 · 29) = 58
35 eqid 2778 . . . . . . . . . . . . . . . . . . . . . . . . 25 26 = 26
36 5p2e7 11538 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (5 + 2) = 7
3736oveq1i 6932 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((5 + 2) + 1) = (7 + 1)
38 7p1e8 11531 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (7 + 1) = 8
3937, 38eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((5 + 2) + 1) = 8
40 4nn0 11663 . . . . . . . . . . . . . . . . . . . . . . . . 25 4 ∈ ℕ0
41 8p6e14 11931 . . . . . . . . . . . . . . . . . . . . . . . . 25 (8 + 6) = 14
4225, 26, 8, 23, 34, 35, 39, 40, 41decaddc 11901 . . . . . . . . . . . . . . . . . . . . . . . 24 ((2 · 29) + 26) = 84
43 9t2e18 11969 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (9 · 2) = 18
44 1p1e2 11507 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (1 + 1) = 2
45 8p8e16 11933 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (8 + 8) = 16
4622, 26, 26, 43, 44, 23, 45decaddci 11907 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((9 · 2) + 8) = 26
47 9t9e81 11976 . . . . . . . . . . . . . . . . . . . . . . . . 25 (9 · 9) = 81
489, 8, 9, 21, 22, 26, 46, 47decmul2c 11913 . . . . . . . . . . . . . . . . . . . . . . . 24 (9 · 29) = 261
4910, 8, 9, 21, 22, 24, 42, 48decmul1c 11912 . . . . . . . . . . . . . . . . . . . . . . 23 (29 · 29) = 841
5020, 49eqtri 2802 . . . . . . . . . . . . . . . . . . . . . 22 (29↑2) = 841
5118, 50breqtrri 4913 . . . . . . . . . . . . . . . . . . . . 21 𝑁 < (29↑2)
52 ltletr 10468 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((𝑁 < (29↑2) ∧ (29↑2) ≤ (𝑥↑2)) → 𝑁 < (𝑥↑2)))
5351, 52mpani 686 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
5416, 17, 53mp3an12 1524 . . . . . . . . . . . . . . . . . . 19 ((𝑥↑2) ∈ ℝ → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
556, 15, 54sylc 65 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → 𝑁 < (𝑥↑2))
56 ltnle 10456 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5716, 6, 56sylancr 581 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5855, 57mpbid 224 . . . . . . . . . . . . . . . . 17 (𝑥 ∈ (ℤ29) → ¬ (𝑥↑2) ≤ 𝑁)
5958pm2.21d 119 . . . . . . . . . . . . . . . 16 (𝑥 ∈ (ℤ29) → ((𝑥↑2) ≤ 𝑁 → ¬ 𝑥𝑁))
6059adantld 486 . . . . . . . . . . . . . . 15 (𝑥 ∈ (ℤ29) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
6160adantl 475 . . . . . . . . . . . . . 14 ((¬ 2 ∥ 29 ∧ 𝑥 ∈ (ℤ29)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
62 9nn 11479 . . . . . . . . . . . . . . . 16 9 ∈ ℕ
63 3nn 11454 . . . . . . . . . . . . . . . 16 3 ∈ ℕ
64 1lt9 11588 . . . . . . . . . . . . . . . 16 1 < 9
65 1lt3 11555 . . . . . . . . . . . . . . . 16 1 < 3
66 9t3e27 11970 . . . . . . . . . . . . . . . 16 (9 · 3) = 27
6762, 63, 64, 65, 66nprmi 15807 . . . . . . . . . . . . . . 15 ¬ 27 ∈ ℙ
6867pm2.21i 117 . . . . . . . . . . . . . 14 (27 ∈ ℙ → ¬ 27 ∥ 𝑁)
69 7nn0 11666 . . . . . . . . . . . . . . 15 7 ∈ ℕ0
70 eqid 2778 . . . . . . . . . . . . . . 15 27 = 27
71 7p2e9 11543 . . . . . . . . . . . . . . 15 (7 + 2) = 9
728, 69, 8, 70, 71decaddi 11906 . . . . . . . . . . . . . 14 (27 + 2) = 29
7361, 68, 72prmlem0 16211 . . . . . . . . . . . . 13 ((¬ 2 ∥ 27 ∧ 𝑥 ∈ (ℤ27)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
74 5nn 11463 . . . . . . . . . . . . . . 15 5 ∈ ℕ
75 1lt5 11562 . . . . . . . . . . . . . . 15 1 < 5
76 5t5e25 11950 . . . . . . . . . . . . . . 15 (5 · 5) = 25
7774, 74, 75, 75, 76nprmi 15807 . . . . . . . . . . . . . 14 ¬ 25 ∈ ℙ
7877pm2.21i 117 . . . . . . . . . . . . 13 (25 ∈ ℙ → ¬ 25 ∥ 𝑁)
79 eqid 2778 . . . . . . . . . . . . . 14 25 = 25
808, 25, 8, 79, 36decaddi 11906 . . . . . . . . . . . . 13 (25 + 2) = 27
8173, 78, 80prmlem0 16211 . . . . . . . . . . . 12 ((¬ 2 ∥ 25 ∧ 𝑥 ∈ (ℤ25)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
82 prmlem2.23 . . . . . . . . . . . . 13 ¬ 23 ∥ 𝑁
8382a1i 11 . . . . . . . . . . . 12 (23 ∈ ℙ → ¬ 23 ∥ 𝑁)
84 3nn0 11662 . . . . . . . . . . . . 13 3 ∈ ℕ0
85 eqid 2778 . . . . . . . . . . . . 13 23 = 23
86 3p2e5 11533 . . . . . . . . . . . . 13 (3 + 2) = 5
878, 84, 8, 85, 86decaddi 11906 . . . . . . . . . . . 12 (23 + 2) = 25
8881, 83, 87prmlem0 16211 . . . . . . . . . . 11 ((¬ 2 ∥ 23 ∧ 𝑥 ∈ (ℤ23)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
89 7nn 11471 . . . . . . . . . . . . 13 7 ∈ ℕ
90 1lt7 11573 . . . . . . . . . . . . 13 1 < 7
91 7t3e21 11957 . . . . . . . . . . . . 13 (7 · 3) = 21
9289, 63, 90, 65, 91nprmi 15807 . . . . . . . . . . . 12 ¬ 21 ∈ ℙ
9392pm2.21i 117 . . . . . . . . . . 11 (21 ∈ ℙ → ¬ 21 ∥ 𝑁)
94 eqid 2778 . . . . . . . . . . . 12 21 = 21
95 1p2e3 11525 . . . . . . . . . . . 12 (1 + 2) = 3
968, 22, 8, 94, 95decaddi 11906 . . . . . . . . . . 11 (21 + 2) = 23
9788, 93, 96prmlem0 16211 . . . . . . . . . 10 ((¬ 2 ∥ 21 ∧ 𝑥 ∈ (ℤ21)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
98 prmlem2.19 . . . . . . . . . . 11 ¬ 19 ∥ 𝑁
9998a1i 11 . . . . . . . . . 10 (19 ∈ ℙ → ¬ 19 ∥ 𝑁)
100 eqid 2778 . . . . . . . . . . 11 19 = 19
101 9p2e11 11934 . . . . . . . . . . 11 (9 + 2) = 11
10222, 9, 8, 100, 44, 22, 101decaddci 11907 . . . . . . . . . 10 (19 + 2) = 21
10397, 99, 102prmlem0 16211 . . . . . . . . 9 ((¬ 2 ∥ 19 ∧ 𝑥 ∈ (ℤ19)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
104 prmlem2.17 . . . . . . . . . 10 ¬ 17 ∥ 𝑁
105104a1i 11 . . . . . . . . 9 (17 ∈ ℙ → ¬ 17 ∥ 𝑁)
106 eqid 2778 . . . . . . . . . 10 17 = 17
10722, 69, 8, 106, 71decaddi 11906 . . . . . . . . 9 (17 + 2) = 19
108103, 105, 107prmlem0 16211 . . . . . . . 8 ((¬ 2 ∥ 17 ∧ 𝑥 ∈ (ℤ17)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
109 5t3e15 11948 . . . . . . . . . 10 (5 · 3) = 15
11074, 63, 75, 65, 109nprmi 15807 . . . . . . . . 9 ¬ 15 ∈ ℙ
111110pm2.21i 117 . . . . . . . 8 (15 ∈ ℙ → ¬ 15 ∥ 𝑁)
112 eqid 2778 . . . . . . . . 9 15 = 15
11322, 25, 8, 112, 36decaddi 11906 . . . . . . . 8 (15 + 2) = 17
114108, 111, 113prmlem0 16211 . . . . . . 7 ((¬ 2 ∥ 15 ∧ 𝑥 ∈ (ℤ15)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
115 prmlem2.13 . . . . . . . 8 ¬ 13 ∥ 𝑁
116115a1i 11 . . . . . . 7 (13 ∈ ℙ → ¬ 13 ∥ 𝑁)
117 eqid 2778 . . . . . . . 8 13 = 13
11822, 84, 8, 117, 86decaddi 11906 . . . . . . 7 (13 + 2) = 15
119114, 116, 118prmlem0 16211 . . . . . 6 ((¬ 2 ∥ 13 ∧ 𝑥 ∈ (ℤ13)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
120 prmlem2.11 . . . . . . 7 ¬ 11 ∥ 𝑁
121120a1i 11 . . . . . 6 (11 ∈ ℙ → ¬ 11 ∥ 𝑁)
122 eqid 2778 . . . . . . 7 11 = 11
12322, 22, 8, 122, 95decaddi 11906 . . . . . 6 (11 + 2) = 13
124119, 121, 123prmlem0 16211 . . . . 5 ((¬ 2 ∥ 11 ∧ 𝑥 ∈ (ℤ11)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
125 9nprm 16218 . . . . . 6 ¬ 9 ∈ ℙ
126125pm2.21i 117 . . . . 5 (9 ∈ ℙ → ¬ 9 ∥ 𝑁)
127124, 126, 101prmlem0 16211 . . . 4 ((¬ 2 ∥ 9 ∧ 𝑥 ∈ (ℤ‘9)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
128 prmlem2.7 . . . . 5 ¬ 7 ∥ 𝑁
129128a1i 11 . . . 4 (7 ∈ ℙ → ¬ 7 ∥ 𝑁)
130127, 129, 71prmlem0 16211 . . 3 ((¬ 2 ∥ 7 ∧ 𝑥 ∈ (ℤ‘7)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
131 prmlem2.5 . . . 4 ¬ 5 ∥ 𝑁
132131a1i 11 . . 3 (5 ∈ ℙ → ¬ 5 ∥ 𝑁)
133130, 132, 36prmlem0 16211 . 2 ((¬ 2 ∥ 5 ∧ 𝑥 ∈ (ℤ‘5)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
1341, 2, 3, 4, 133prmlem1a 16212 1 𝑁 ∈ ℙ
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 198  wa 386  w3a 1071  wcel 2107  cdif 3789  {csn 4398   class class class wbr 4886  cfv 6135  (class class class)co 6922  cr 10271  0cc0 10272  1c1 10273   + caddc 10275   · cmul 10277   < clt 10411  cle 10412  cn 11374  2c2 11430  3c3 11431  4c4 11432  5c5 11433  6c6 11434  7c7 11435  8c8 11436  9c9 11437  cdc 11845  cuz 11992  cexp 13178  cdvds 15387  cprime 15790
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1839  ax-4 1853  ax-5 1953  ax-6 2021  ax-7 2055  ax-8 2109  ax-9 2116  ax-10 2135  ax-11 2150  ax-12 2163  ax-13 2334  ax-ext 2754  ax-sep 5017  ax-nul 5025  ax-pow 5077  ax-pr 5138  ax-un 7226  ax-cnex 10328  ax-resscn 10329  ax-1cn 10330  ax-icn 10331  ax-addcl 10332  ax-addrcl 10333  ax-mulcl 10334  ax-mulrcl 10335  ax-mulcom 10336  ax-addass 10337  ax-mulass 10338  ax-distr 10339  ax-i2m1 10340  ax-1ne0 10341  ax-1rid 10342  ax-rnegex 10343  ax-rrecex 10344  ax-cnre 10345  ax-pre-lttri 10346  ax-pre-lttrn 10347  ax-pre-ltadd 10348  ax-pre-mulgt0 10349  ax-pre-sup 10350
This theorem depends on definitions:  df-bi 199  df-an 387  df-or 837  df-3or 1072  df-3an 1073  df-tru 1605  df-ex 1824  df-nf 1828  df-sb 2012  df-mo 2551  df-eu 2587  df-clab 2764  df-cleq 2770  df-clel 2774  df-nfc 2921  df-ne 2970  df-nel 3076  df-ral 3095  df-rex 3096  df-reu 3097  df-rmo 3098  df-rab 3099  df-v 3400  df-sbc 3653  df-csb 3752  df-dif 3795  df-un 3797  df-in 3799  df-ss 3806  df-pss 3808  df-nul 4142  df-if 4308  df-pw 4381  df-sn 4399  df-pr 4401  df-tp 4403  df-op 4405  df-uni 4672  df-iun 4755  df-br 4887  df-opab 4949  df-mpt 4966  df-tr 4988  df-id 5261  df-eprel 5266  df-po 5274  df-so 5275  df-fr 5314  df-we 5316  df-xp 5361  df-rel 5362  df-cnv 5363  df-co 5364  df-dm 5365  df-rn 5366  df-res 5367  df-ima 5368  df-pred 5933  df-ord 5979  df-on 5980  df-lim 5981  df-suc 5982  df-iota 6099  df-fun 6137  df-fn 6138  df-f 6139  df-f1 6140  df-fo 6141  df-f1o 6142  df-fv 6143  df-riota 6883  df-ov 6925  df-oprab 6926  df-mpt2 6927  df-om 7344  df-1st 7445  df-2nd 7446  df-wrecs 7689  df-recs 7751  df-rdg 7789  df-1o 7843  df-2o 7844  df-er 8026  df-en 8242  df-dom 8243  df-sdom 8244  df-fin 8245  df-sup 8636  df-pnf 10413  df-mnf 10414  df-xr 10415  df-ltxr 10416  df-le 10417  df-sub 10608  df-neg 10609  df-div 11033  df-nn 11375  df-2 11438  df-3 11439  df-4 11440  df-5 11441  df-6 11442  df-7 11443  df-8 11444  df-9 11445  df-n0 11643  df-z 11729  df-dec 11846  df-uz 11993  df-rp 12138  df-fz 12644  df-seq 13120  df-exp 13179  df-cj 14246  df-re 14247  df-im 14248  df-sqrt 14382  df-abs 14383  df-dvds 15388  df-prm 15791
This theorem is referenced by:  37prm  16226  43prm  16227  83prm  16228  139prm  16229  163prm  16230  317prm  16231  631prm  16232  257prm  42498  139prmALT  42536  127prm  42540
  Copyright terms: Public domain W3C validator