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

Theorem prmlem2 16453
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 16469).

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 12251 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 𝑥 ∈ ℝ)
65resqcld 13616 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (𝑥↑2) ∈ ℝ)
7 eluzle 12253 . . . . . . . . . . . . . . . . . . . 20 (𝑥 ∈ (ℤ29) → 29 ≤ 𝑥)
8 2nn0 11911 . . . . . . . . . . . . . . . . . . . . . . 23 2 ∈ ℕ0
9 9nn0 11918 . . . . . . . . . . . . . . . . . . . . . . 23 9 ∈ ℕ0
108, 9deccl 12110 . . . . . . . . . . . . . . . . . . . . . 22 29 ∈ ℕ0
1110nn0rei 11905 . . . . . . . . . . . . . . . . . . . . 21 29 ∈ ℝ
1210nn0ge0i 11921 . . . . . . . . . . . . . . . . . . . . 21 0 ≤ 29
13 le2sq2 13505 . . . . . . . . . . . . . . . . . . . . 21 (((29 ∈ ℝ ∧ 0 ≤ 29) ∧ (𝑥 ∈ ℝ ∧ 29 ≤ 𝑥)) → (29↑2) ≤ (𝑥↑2))
1411, 12, 13mpanl12 701 . . . . . . . . . . . . . . . . . . . 20 ((𝑥 ∈ ℝ ∧ 29 ≤ 𝑥) → (29↑2) ≤ (𝑥↑2))
155, 7, 14syl2anc 587 . . . . . . . . . . . . . . . . . . 19 (𝑥 ∈ (ℤ29) → (29↑2) ≤ (𝑥↑2))
161nnrei 11643 . . . . . . . . . . . . . . . . . . . 20 𝑁 ∈ ℝ
1711resqcli 13554 . . . . . . . . . . . . . . . . . . . 20 (29↑2) ∈ ℝ
18 prmlem2.lt . . . . . . . . . . . . . . . . . . . . . 22 𝑁 < 841
1910nn0cni 11906 . . . . . . . . . . . . . . . . . . . . . . . 24 29 ∈ ℂ
2019sqvali 13548 . . . . . . . . . . . . . . . . . . . . . . 23 (29↑2) = (29 · 29)
21 eqid 2824 . . . . . . . . . . . . . . . . . . . . . . . 24 29 = 29
22 1nn0 11910 . . . . . . . . . . . . . . . . . . . . . . . 24 1 ∈ ℕ0
23 6nn0 11915 . . . . . . . . . . . . . . . . . . . . . . . . 25 6 ∈ ℕ0
248, 23deccl 12110 . . . . . . . . . . . . . . . . . . . . . . . 24 26 ∈ ℕ0
25 5nn0 11914 . . . . . . . . . . . . . . . . . . . . . . . . 25 5 ∈ ℕ0
26 8nn0 11917 . . . . . . . . . . . . . . . . . . . . . . . . 25 8 ∈ ℕ0
27192timesi 11772 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (2 · 29) = (29 + 29)
28 2p2e4 11769 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 (2 + 2) = 4
2928oveq1i 7159 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ((2 + 2) + 1) = (4 + 1)
30 4p1e5 11780 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 (4 + 1) = 5
3129, 30eqtri 2847 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ((2 + 2) + 1) = 5
32 9p9e18 12189 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (9 + 9) = 18
338, 9, 8, 9, 21, 21, 31, 26, 32decaddc 12150 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (29 + 29) = 58
3427, 33eqtri 2847 . . . . . . . . . . . . . . . . . . . . . . . . 25 (2 · 29) = 58
35 eqid 2824 . . . . . . . . . . . . . . . . . . . . . . . . 25 26 = 26
36 5p2e7 11790 . . . . . . . . . . . . . . . . . . . . . . . . . . 27 (5 + 2) = 7
3736oveq1i 7159 . . . . . . . . . . . . . . . . . . . . . . . . . 26 ((5 + 2) + 1) = (7 + 1)
38 7p1e8 11783 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (7 + 1) = 8
3937, 38eqtri 2847 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((5 + 2) + 1) = 8
40 4nn0 11913 . . . . . . . . . . . . . . . . . . . . . . . . 25 4 ∈ ℕ0
41 8p6e14 12179 . . . . . . . . . . . . . . . . . . . . . . . . 25 (8 + 6) = 14
4225, 26, 8, 23, 34, 35, 39, 40, 41decaddc 12150 . . . . . . . . . . . . . . . . . . . . . . . 24 ((2 · 29) + 26) = 84
43 9t2e18 12217 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (9 · 2) = 18
44 1p1e2 11759 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (1 + 1) = 2
45 8p8e16 12181 . . . . . . . . . . . . . . . . . . . . . . . . . 26 (8 + 8) = 16
4622, 26, 26, 43, 44, 23, 45decaddci 12156 . . . . . . . . . . . . . . . . . . . . . . . . 25 ((9 · 2) + 8) = 26
47 9t9e81 12224 . . . . . . . . . . . . . . . . . . . . . . . . 25 (9 · 9) = 81
489, 8, 9, 21, 22, 26, 46, 47decmul2c 12161 . . . . . . . . . . . . . . . . . . . . . . . 24 (9 · 29) = 261
4910, 8, 9, 21, 22, 24, 42, 48decmul1c 12160 . . . . . . . . . . . . . . . . . . . . . . 23 (29 · 29) = 841
5020, 49eqtri 2847 . . . . . . . . . . . . . . . . . . . . . 22 (29↑2) = 841
5118, 50breqtrri 5079 . . . . . . . . . . . . . . . . . . . . 21 𝑁 < (29↑2)
52 ltletr 10730 . . . . . . . . . . . . . . . . . . . . 21 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((𝑁 < (29↑2) ∧ (29↑2) ≤ (𝑥↑2)) → 𝑁 < (𝑥↑2)))
5351, 52mpani 695 . . . . . . . . . . . . . . . . . . . 20 ((𝑁 ∈ ℝ ∧ (29↑2) ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
5416, 17, 53mp3an12 1448 . . . . . . . . . . . . . . . . . . 19 ((𝑥↑2) ∈ ℝ → ((29↑2) ≤ (𝑥↑2) → 𝑁 < (𝑥↑2)))
556, 15, 54sylc 65 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → 𝑁 < (𝑥↑2))
56 ltnle 10718 . . . . . . . . . . . . . . . . . . 19 ((𝑁 ∈ ℝ ∧ (𝑥↑2) ∈ ℝ) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5716, 6, 56sylancr 590 . . . . . . . . . . . . . . . . . 18 (𝑥 ∈ (ℤ29) → (𝑁 < (𝑥↑2) ↔ ¬ (𝑥↑2) ≤ 𝑁))
5855, 57mpbid 235 . . . . . . . . . . . . . . . . 17 (𝑥 ∈ (ℤ29) → ¬ (𝑥↑2) ≤ 𝑁)
5958pm2.21d 121 . . . . . . . . . . . . . . . 16 (𝑥 ∈ (ℤ29) → ((𝑥↑2) ≤ 𝑁 → ¬ 𝑥𝑁))
6059adantld 494 . . . . . . . . . . . . . . 15 (𝑥 ∈ (ℤ29) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
6160adantl 485 . . . . . . . . . . . . . 14 ((¬ 2 ∥ 29 ∧ 𝑥 ∈ (ℤ29)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
62 9nn 11732 . . . . . . . . . . . . . . . 16 9 ∈ ℕ
63 3nn 11713 . . . . . . . . . . . . . . . 16 3 ∈ ℕ
64 1lt9 11840 . . . . . . . . . . . . . . . 16 1 < 9
65 1lt3 11807 . . . . . . . . . . . . . . . 16 1 < 3
66 9t3e27 12218 . . . . . . . . . . . . . . . 16 (9 · 3) = 27
6762, 63, 64, 65, 66nprmi 16031 . . . . . . . . . . . . . . 15 ¬ 27 ∈ ℙ
6867pm2.21i 119 . . . . . . . . . . . . . 14 (27 ∈ ℙ → ¬ 27 ∥ 𝑁)
69 7nn0 11916 . . . . . . . . . . . . . . 15 7 ∈ ℕ0
70 eqid 2824 . . . . . . . . . . . . . . 15 27 = 27
71 7p2e9 11795 . . . . . . . . . . . . . . 15 (7 + 2) = 9
728, 69, 8, 70, 71decaddi 12155 . . . . . . . . . . . . . 14 (27 + 2) = 29
7361, 68, 72prmlem0 16439 . . . . . . . . . . . . 13 ((¬ 2 ∥ 27 ∧ 𝑥 ∈ (ℤ27)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
74 5nn 11720 . . . . . . . . . . . . . . 15 5 ∈ ℕ
75 1lt5 11814 . . . . . . . . . . . . . . 15 1 < 5
76 5t5e25 12198 . . . . . . . . . . . . . . 15 (5 · 5) = 25
7774, 74, 75, 75, 76nprmi 16031 . . . . . . . . . . . . . 14 ¬ 25 ∈ ℙ
7877pm2.21i 119 . . . . . . . . . . . . 13 (25 ∈ ℙ → ¬ 25 ∥ 𝑁)
79 eqid 2824 . . . . . . . . . . . . . 14 25 = 25
808, 25, 8, 79, 36decaddi 12155 . . . . . . . . . . . . 13 (25 + 2) = 27
8173, 78, 80prmlem0 16439 . . . . . . . . . . . 12 ((¬ 2 ∥ 25 ∧ 𝑥 ∈ (ℤ25)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
82 prmlem2.23 . . . . . . . . . . . . 13 ¬ 23 ∥ 𝑁
8382a1i 11 . . . . . . . . . . . 12 (23 ∈ ℙ → ¬ 23 ∥ 𝑁)
84 3nn0 11912 . . . . . . . . . . . . 13 3 ∈ ℕ0
85 eqid 2824 . . . . . . . . . . . . 13 23 = 23
86 3p2e5 11785 . . . . . . . . . . . . 13 (3 + 2) = 5
878, 84, 8, 85, 86decaddi 12155 . . . . . . . . . . . 12 (23 + 2) = 25
8881, 83, 87prmlem0 16439 . . . . . . . . . . 11 ((¬ 2 ∥ 23 ∧ 𝑥 ∈ (ℤ23)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
89 7nn 11726 . . . . . . . . . . . . 13 7 ∈ ℕ
90 1lt7 11825 . . . . . . . . . . . . 13 1 < 7
91 7t3e21 12205 . . . . . . . . . . . . 13 (7 · 3) = 21
9289, 63, 90, 65, 91nprmi 16031 . . . . . . . . . . . 12 ¬ 21 ∈ ℙ
9392pm2.21i 119 . . . . . . . . . . 11 (21 ∈ ℙ → ¬ 21 ∥ 𝑁)
94 eqid 2824 . . . . . . . . . . . 12 21 = 21
95 1p2e3 11777 . . . . . . . . . . . 12 (1 + 2) = 3
968, 22, 8, 94, 95decaddi 12155 . . . . . . . . . . 11 (21 + 2) = 23
9788, 93, 96prmlem0 16439 . . . . . . . . . 10 ((¬ 2 ∥ 21 ∧ 𝑥 ∈ (ℤ21)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
98 prmlem2.19 . . . . . . . . . . 11 ¬ 19 ∥ 𝑁
9998a1i 11 . . . . . . . . . 10 (19 ∈ ℙ → ¬ 19 ∥ 𝑁)
100 eqid 2824 . . . . . . . . . . 11 19 = 19
101 9p2e11 12182 . . . . . . . . . . 11 (9 + 2) = 11
10222, 9, 8, 100, 44, 22, 101decaddci 12156 . . . . . . . . . 10 (19 + 2) = 21
10397, 99, 102prmlem0 16439 . . . . . . . . 9 ((¬ 2 ∥ 19 ∧ 𝑥 ∈ (ℤ19)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
104 prmlem2.17 . . . . . . . . . 10 ¬ 17 ∥ 𝑁
105104a1i 11 . . . . . . . . 9 (17 ∈ ℙ → ¬ 17 ∥ 𝑁)
106 eqid 2824 . . . . . . . . . 10 17 = 17
10722, 69, 8, 106, 71decaddi 12155 . . . . . . . . 9 (17 + 2) = 19
108103, 105, 107prmlem0 16439 . . . . . . . 8 ((¬ 2 ∥ 17 ∧ 𝑥 ∈ (ℤ17)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
109 5t3e15 12196 . . . . . . . . . 10 (5 · 3) = 15
11074, 63, 75, 65, 109nprmi 16031 . . . . . . . . 9 ¬ 15 ∈ ℙ
111110pm2.21i 119 . . . . . . . 8 (15 ∈ ℙ → ¬ 15 ∥ 𝑁)
112 eqid 2824 . . . . . . . . 9 15 = 15
11322, 25, 8, 112, 36decaddi 12155 . . . . . . . 8 (15 + 2) = 17
114108, 111, 113prmlem0 16439 . . . . . . 7 ((¬ 2 ∥ 15 ∧ 𝑥 ∈ (ℤ15)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
115 prmlem2.13 . . . . . . . 8 ¬ 13 ∥ 𝑁
116115a1i 11 . . . . . . 7 (13 ∈ ℙ → ¬ 13 ∥ 𝑁)
117 eqid 2824 . . . . . . . 8 13 = 13
11822, 84, 8, 117, 86decaddi 12155 . . . . . . 7 (13 + 2) = 15
119114, 116, 118prmlem0 16439 . . . . . 6 ((¬ 2 ∥ 13 ∧ 𝑥 ∈ (ℤ13)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
120 prmlem2.11 . . . . . . 7 ¬ 11 ∥ 𝑁
121120a1i 11 . . . . . 6 (11 ∈ ℙ → ¬ 11 ∥ 𝑁)
122 eqid 2824 . . . . . . 7 11 = 11
12322, 22, 8, 122, 95decaddi 12155 . . . . . 6 (11 + 2) = 13
124119, 121, 123prmlem0 16439 . . . . 5 ((¬ 2 ∥ 11 ∧ 𝑥 ∈ (ℤ11)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
125 9nprm 16446 . . . . . 6 ¬ 9 ∈ ℙ
126125pm2.21i 119 . . . . 5 (9 ∈ ℙ → ¬ 9 ∥ 𝑁)
127124, 126, 101prmlem0 16439 . . . 4 ((¬ 2 ∥ 9 ∧ 𝑥 ∈ (ℤ‘9)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
128 prmlem2.7 . . . . 5 ¬ 7 ∥ 𝑁
129128a1i 11 . . . 4 (7 ∈ ℙ → ¬ 7 ∥ 𝑁)
130127, 129, 71prmlem0 16439 . . 3 ((¬ 2 ∥ 7 ∧ 𝑥 ∈ (ℤ‘7)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
131 prmlem2.5 . . . 4 ¬ 5 ∥ 𝑁
132131a1i 11 . . 3 (5 ∈ ℙ → ¬ 5 ∥ 𝑁)
133130, 132, 36prmlem0 16439 . 2 ((¬ 2 ∥ 5 ∧ 𝑥 ∈ (ℤ‘5)) → ((𝑥 ∈ (ℙ ∖ {2}) ∧ (𝑥↑2) ≤ 𝑁) → ¬ 𝑥𝑁))
1341, 2, 3, 4, 133prmlem1a 16440 1 𝑁 ∈ ℙ
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 209  wa 399  w3a 1084  wcel 2115  cdif 3916  {csn 4550   class class class wbr 5052  cfv 6343  (class class class)co 7149  cr 10534  0cc0 10535  1c1 10536   + caddc 10538   · cmul 10540   < clt 10673  cle 10674  cn 11634  2c2 11689  3c3 11690  4c4 11691  5c5 11692  6c6 11693  7c7 11694  8c8 11695  9c9 11696  cdc 12095  cuz 12240  cexp 13434  cdvds 15607  cprime 16013
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1797  ax-4 1811  ax-5 1912  ax-6 1971  ax-7 2016  ax-8 2117  ax-9 2125  ax-10 2146  ax-11 2162  ax-12 2179  ax-ext 2796  ax-sep 5189  ax-nul 5196  ax-pow 5253  ax-pr 5317  ax-un 7455  ax-cnex 10591  ax-resscn 10592  ax-1cn 10593  ax-icn 10594  ax-addcl 10595  ax-addrcl 10596  ax-mulcl 10597  ax-mulrcl 10598  ax-mulcom 10599  ax-addass 10600  ax-mulass 10601  ax-distr 10602  ax-i2m1 10603  ax-1ne0 10604  ax-1rid 10605  ax-rnegex 10606  ax-rrecex 10607  ax-cnre 10608  ax-pre-lttri 10609  ax-pre-lttrn 10610  ax-pre-ltadd 10611  ax-pre-mulgt0 10612  ax-pre-sup 10613
This theorem depends on definitions:  df-bi 210  df-an 400  df-or 845  df-3or 1085  df-3an 1086  df-tru 1541  df-ex 1782  df-nf 1786  df-sb 2071  df-mo 2624  df-eu 2655  df-clab 2803  df-cleq 2817  df-clel 2896  df-nfc 2964  df-ne 3015  df-nel 3119  df-ral 3138  df-rex 3139  df-reu 3140  df-rmo 3141  df-rab 3142  df-v 3482  df-sbc 3759  df-csb 3867  df-dif 3922  df-un 3924  df-in 3926  df-ss 3936  df-pss 3938  df-nul 4277  df-if 4451  df-pw 4524  df-sn 4551  df-pr 4553  df-tp 4555  df-op 4557  df-uni 4825  df-iun 4907  df-br 5053  df-opab 5115  df-mpt 5133  df-tr 5159  df-id 5447  df-eprel 5452  df-po 5461  df-so 5462  df-fr 5501  df-we 5503  df-xp 5548  df-rel 5549  df-cnv 5550  df-co 5551  df-dm 5552  df-rn 5553  df-res 5554  df-ima 5555  df-pred 6135  df-ord 6181  df-on 6182  df-lim 6183  df-suc 6184  df-iota 6302  df-fun 6345  df-fn 6346  df-f 6347  df-f1 6348  df-fo 6349  df-f1o 6350  df-fv 6351  df-riota 7107  df-ov 7152  df-oprab 7153  df-mpo 7154  df-om 7575  df-1st 7684  df-2nd 7685  df-wrecs 7943  df-recs 8004  df-rdg 8042  df-1o 8098  df-2o 8099  df-er 8285  df-en 8506  df-dom 8507  df-sdom 8508  df-fin 8509  df-sup 8903  df-pnf 10675  df-mnf 10676  df-xr 10677  df-ltxr 10678  df-le 10679  df-sub 10870  df-neg 10871  df-div 11296  df-nn 11635  df-2 11697  df-3 11698  df-4 11699  df-5 11700  df-6 11701  df-7 11702  df-8 11703  df-9 11704  df-n0 11895  df-z 11979  df-dec 12096  df-uz 12241  df-rp 12387  df-fz 12895  df-seq 13374  df-exp 13435  df-cj 14458  df-re 14459  df-im 14460  df-sqrt 14594  df-abs 14595  df-dvds 15608  df-prm 16014
This theorem is referenced by:  37prm  16454  43prm  16455  83prm  16456  139prm  16457  163prm  16458  317prm  16459  631prm  16460  257prm  44004  139prmALT  44039  127prm  44042
  Copyright terms: Public domain W3C validator