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

Theorem prmlem2 16229
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 16245).

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 12007 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 𝑥 ∈ ℝ)
65resqcld 13360 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (𝑥↑2) ∈ ℝ)
7 eluzle 12009 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 29 ≤ 𝑥)
8 2nn0 11665 . . . . . . . . . . . . . . . . . . . . . . 23 2 ∈ ℕ0
9 9nn0 11672 . . . . . . . . . . . . . . . . . . . . . . 23 9 ∈ ℕ0
108, 9deccl 11864 . . . . . . . . . . . . . . . . . . . . . 22 29 ∈ ℕ0
1110nn0rei 11658 . . . . . . . . . . . . . . . . . . . . 21 29 ∈ ℝ
1210nn0ge0i 11675 . . . . . . . . . . . . . . . . . . . . 21 0 ≤ 29
13 le2sq2 13262 . . . . . . . . . . . . . . . . . . . . 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 11388 . . . . . . . . . . . . . . . . . . . 20 𝑁 ∈ ℝ
1711resqcli 13272 . . . . . . . . . . . . . . . . . . . 20 (29↑2) ∈ ℝ
18 prmlem2.lt . . . . . . . . . . . . . . . . . . . . . 22 𝑁 < 841
1910nn0cni 11659 . . . . . . . . . . . . . . . . . . . . . . . 24 29 ∈ ℂ
2019sqvali 13266 . . . . . . . . . . . . . . . . . . . . . . 23 (29↑2) = (29 · 29)
21 eqid 2778 . . . . . . . . . . . . . . . . . . . . . . . 24 29 = 29
22 1nn0 11664 . . . . . . . . . . . . . . . . . . . . . . . 24 1 ∈ ℕ0
23 6nn0 11669 . . . . . . . . . . . . . . . . . . . . . . . . 25 6 ∈ ℕ0
248, 23deccl 11864 . . . . . . . . . . . . . . . . . . . . . . . 24 26 ∈ ℕ0
25 5nn0 11668 . . . . . . . . . . . . . . . . . . . . . . . . 25 5 ∈ ℕ0
26 8nn0 11671 . . . . . . . . . . . . . . . . . . . . . . . . 25 8 ∈ ℕ0
27192timesi 11524 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (2 · 29) = (29 + 29)
28 2p2e4 11521 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 (2 + 2) = 4
2928oveq1i 6934 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((2 + 2) + 1) = (4 + 1)
30 4p1e5 11532 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 (4 + 1) = 5
3129, 30eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((2 + 2) + 1) = 5
32 9p9e18 11945 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (9 + 9) = 18
338, 9, 8, 9, 21, 21, 31, 26, 32decaddc 11905 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (29 + 29) = 58
3427, 33eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . 25 (2 · 29) = 58
35 eqid 2778 . . . . . . . . . . . . . . . . . . . . . . . . 25 26 = 26
36 5p2e7 11542 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (5 + 2) = 7
3736oveq1i 6934 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((5 + 2) + 1) = (7 + 1)
38 7p1e8 11535 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (7 + 1) = 8
3937, 38eqtri 2802 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((5 + 2) + 1) = 8
40 4nn0 11667 . . . . . . . . . . . . . . . . . . . . . . . . 25 4 ∈ ℕ0
41 8p6e14 11935 . . . . . . . . . . . . . . . . . . . . . . . . 25 (8 + 6) = 14
4225, 26, 8, 23, 34, 35, 39, 40, 41decaddc 11905 . . . . . . . . . . . . . . . . . . . . . . . 24 ((2 · 29) + 26) = 84
43 9t2e18 11973 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (9 · 2) = 18
44 1p1e2 11511 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (1 + 1) = 2
45 8p8e16 11937 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (8 + 8) = 16
4622, 26, 26, 43, 44, 23, 45decaddci 11911 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((9 · 2) + 8) = 26
47 9t9e81 11980 . . . . . . . . . . . . . . . . . . . . . . . . 25 (9 · 9) = 81
489, 8, 9, 21, 22, 26, 46, 47decmul2c 11917 . . . . . . . . . . . . . . . . . . . . . . . 24 (9 · 29) = 261
4910, 8, 9, 21, 22, 24, 42, 48decmul1c 11916 . . . . . . . . . . . . . . . . . . . . . . 23 (29 · 29) = 841
5020, 49eqtri 2802 . . . . . . . . . . . . . . . . . . . . . 22 (29↑2) = 841
5118, 50breqtrri 4915 . . . . . . . . . . . . . . . . . . . . 21 𝑁 < (29↑2)
52 ltletr 10470 . . . . . . . . . . . . . . . . . . . . 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 10458 . . . . . . . . . . . . . . . . . . 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 11483 . . . . . . . . . . . . . . . 16 9 ∈ ℕ
63 3nn 11458 . . . . . . . . . . . . . . . 16 3 ∈ ℕ
64 1lt9 11592 . . . . . . . . . . . . . . . 16 1 < 9
65 1lt3 11559 . . . . . . . . . . . . . . . 16 1 < 3
66 9t3e27 11974 . . . . . . . . . . . . . . . 16 (9 · 3) = 27
6762, 63, 64, 65, 66nprmi 15811 . . . . . . . . . . . . . . 15 ¬ 27 ∈ ℙ
6867pm2.21i 117 . . . . . . . . . . . . . 14 (27 ∈ ℙ → ¬ 27 ∥ 𝑁)
69 7nn0 11670 . . . . . . . . . . . . . . 15 7 ∈ ℕ0
70 eqid 2778 . . . . . . . . . . . . . . 15 27 = 27
71 7p2e9 11547 . . . . . . . . . . . . . . 15 (7 + 2) = 9
728, 69, 8, 70, 71decaddi 11910 . . . . . . . . . . . . . 14 (27 + 2) = 29
7361, 68, 72prmlem0 16215 . . . . . . . . . . . . 13 ((¬ 2 ∥ 27 ∧ 𝑥 ∈ (ℤ27)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
74 5nn 11467 . . . . . . . . . . . . . . 15 5 ∈ ℕ
75 1lt5 11566 . . . . . . . . . . . . . . 15 1 < 5
76 5t5e25 11954 . . . . . . . . . . . . . . 15 (5 · 5) = 25
7774, 74, 75, 75, 76nprmi 15811 . . . . . . . . . . . . . 14 ¬ 25 ∈ ℙ
7877pm2.21i 117 . . . . . . . . . . . . 13 (25 ∈ ℙ → ¬ 25 ∥ 𝑁)
79 eqid 2778 . . . . . . . . . . . . . 14 25 = 25
808, 25, 8, 79, 36decaddi 11910 . . . . . . . . . . . . 13 (25 + 2) = 27
8173, 78, 80prmlem0 16215 . . . . . . . . . . . 12 ((¬ 2 ∥ 25 ∧ 𝑥 ∈ (ℤ25)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
82 prmlem2.23 . . . . . . . . . . . . 13 ¬ 23 ∥ 𝑁
8382a1i 11 . . . . . . . . . . . 12 (23 ∈ ℙ → ¬ 23 ∥ 𝑁)
84 3nn0 11666 . . . . . . . . . . . . 13 3 ∈ ℕ0
85 eqid 2778 . . . . . . . . . . . . 13 23 = 23
86 3p2e5 11537 . . . . . . . . . . . . 13 (3 + 2) = 5
878, 84, 8, 85, 86decaddi 11910 . . . . . . . . . . . 12 (23 + 2) = 25
8881, 83, 87prmlem0 16215 . . . . . . . . . . 11 ((¬ 2 ∥ 23 ∧ 𝑥 ∈ (ℤ23)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
89 7nn 11475 . . . . . . . . . . . . 13 7 ∈ ℕ
90 1lt7 11577 . . . . . . . . . . . . 13 1 < 7
91 7t3e21 11961 . . . . . . . . . . . . 13 (7 · 3) = 21
9289, 63, 90, 65, 91nprmi 15811 . . . . . . . . . . . 12 ¬ 21 ∈ ℙ
9392pm2.21i 117 . . . . . . . . . . 11 (21 ∈ ℙ → ¬ 21 ∥ 𝑁)
94 eqid 2778 . . . . . . . . . . . 12 21 = 21
95 1p2e3 11529 . . . . . . . . . . . 12 (1 + 2) = 3
968, 22, 8, 94, 95decaddi 11910 . . . . . . . . . . 11 (21 + 2) = 23
9788, 93, 96prmlem0 16215 . . . . . . . . . 10 ((¬ 2 ∥ 21 ∧ 𝑥 ∈ (ℤ21)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
98 prmlem2.19 . . . . . . . . . . 11 ¬ 19 ∥ 𝑁
9998a1i 11 . . . . . . . . . 10 (19 ∈ ℙ → ¬ 19 ∥ 𝑁)
100 eqid 2778 . . . . . . . . . . 11 19 = 19
101 9p2e11 11938 . . . . . . . . . . 11 (9 + 2) = 11
10222, 9, 8, 100, 44, 22, 101decaddci 11911 . . . . . . . . . 10 (19 + 2) = 21
10397, 99, 102prmlem0 16215 . . . . . . . . 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 11910 . . . . . . . . 9 (17 + 2) = 19
108103, 105, 107prmlem0 16215 . . . . . . . 8 ((¬ 2 ∥ 17 ∧ 𝑥 ∈ (ℤ17)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
109 5t3e15 11952 . . . . . . . . . 10 (5 · 3) = 15
11074, 63, 75, 65, 109nprmi 15811 . . . . . . . . 9 ¬ 15 ∈ ℙ
111110pm2.21i 117 . . . . . . . 8 (15 ∈ ℙ → ¬ 15 ∥ 𝑁)
112 eqid 2778 . . . . . . . . 9 15 = 15
11322, 25, 8, 112, 36decaddi 11910 . . . . . . . 8 (15 + 2) = 17
114108, 111, 113prmlem0 16215 . . . . . . 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 11910 . . . . . . 7 (13 + 2) = 15
119114, 116, 118prmlem0 16215 . . . . . 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 11910 . . . . . 6 (11 + 2) = 13
124119, 121, 123prmlem0 16215 . . . . 5 ((¬ 2 ∥ 11 ∧ 𝑥 ∈ (ℤ11)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
125 9nprm 16222 . . . . . 6 ¬ 9 ∈ ℙ
126125pm2.21i 117 . . . . 5 (9 ∈ ℙ → ¬ 9 ∥ 𝑁)
127124, 126, 101prmlem0 16215 . . . 4 ((¬ 2 ∥ 9 ∧ 𝑥 ∈ (ℤ‘9)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
128 prmlem2.7 . . . . 5 ¬ 7 ∥ 𝑁
129128a1i 11 . . . 4 (7 ∈ ℙ → ¬ 7 ∥ 𝑁)
130127, 129, 71prmlem0 16215 . . 3 ((¬ 2 ∥ 7 ∧ 𝑥 ∈ (ℤ‘7)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
131 prmlem2.5 . . . 4 ¬ 5 ∥ 𝑁
132131a1i 11 . . 3 (5 ∈ ℙ → ¬ 5 ∥ 𝑁)
133130, 132, 36prmlem0 16215 . 2 ((¬ 2 ∥ 5 ∧ 𝑥 ∈ (ℤ‘5)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
1341, 2, 3, 4, 133prmlem1a 16216 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 4888  cfv 6137  (class class class)co 6924  cr 10273  0cc0 10274  1c1 10275   + caddc 10277   · cmul 10279   < clt 10413  cle 10414  cn 11378  2c2 11434  3c3 11435  4c4 11436  5c5 11437  6c6 11438  7c7 11439  8c8 11440  9c9 11441  cdc 11849  cuz 11996  cexp 13182  cdvds 15391  cprime 15794
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 5019  ax-nul 5027  ax-pow 5079  ax-pr 5140  ax-un 7228  ax-cnex 10330  ax-resscn 10331  ax-1cn 10332  ax-icn 10333  ax-addcl 10334  ax-addrcl 10335  ax-mulcl 10336  ax-mulrcl 10337  ax-mulcom 10338  ax-addass 10339  ax-mulass 10340  ax-distr 10341  ax-i2m1 10342  ax-1ne0 10343  ax-1rid 10344  ax-rnegex 10345  ax-rrecex 10346  ax-cnre 10347  ax-pre-lttri 10348  ax-pre-lttrn 10349  ax-pre-ltadd 10350  ax-pre-mulgt0 10351  ax-pre-sup 10352
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 4674  df-iun 4757  df-br 4889  df-opab 4951  df-mpt 4968  df-tr 4990  df-id 5263  df-eprel 5268  df-po 5276  df-so 5277  df-fr 5316  df-we 5318  df-xp 5363  df-rel 5364  df-cnv 5365  df-co 5366  df-dm 5367  df-rn 5368  df-res 5369  df-ima 5370  df-pred 5935  df-ord 5981  df-on 5982  df-lim 5983  df-suc 5984  df-iota 6101  df-fun 6139  df-fn 6140  df-f 6141  df-f1 6142  df-fo 6143  df-f1o 6144  df-fv 6145  df-riota 6885  df-ov 6927  df-oprab 6928  df-mpt2 6929  df-om 7346  df-1st 7447  df-2nd 7448  df-wrecs 7691  df-recs 7753  df-rdg 7791  df-1o 7845  df-2o 7846  df-er 8028  df-en 8244  df-dom 8245  df-sdom 8246  df-fin 8247  df-sup 8638  df-pnf 10415  df-mnf 10416  df-xr 10417  df-ltxr 10418  df-le 10419  df-sub 10610  df-neg 10611  df-div 11035  df-nn 11379  df-2 11442  df-3 11443  df-4 11444  df-5 11445  df-6 11446  df-7 11447  df-8 11448  df-9 11449  df-n0 11647  df-z 11733  df-dec 11850  df-uz 11997  df-rp 12142  df-fz 12648  df-seq 13124  df-exp 13183  df-cj 14250  df-re 14251  df-im 14252  df-sqrt 14386  df-abs 14387  df-dvds 15392  df-prm 15795
This theorem is referenced by:  37prm  16230  43prm  16231  83prm  16232  139prm  16233  163prm  16234  317prm  16235  631prm  16236  257prm  42504  139prmALT  42542  127prm  42546
  Copyright terms: Public domain W3C validator