From ad67514d8fd1ffca03a158f09fceef51e48fc5f7 Mon Sep 17 00:00:00 2001 From: Gianluca Finocchiaro Date: Mon, 21 Aug 2017 10:27:36 +0200 Subject: [PATCH 01/46] Remove synchronized from nextSerialNumber Here I guess that the synchronized keyword is a typo. --- lowlevel/AtomicSerialNumbers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lowlevel/AtomicSerialNumbers.java b/lowlevel/AtomicSerialNumbers.java index 53547bccb..ed063c86e 100644 --- a/lowlevel/AtomicSerialNumbers.java +++ b/lowlevel/AtomicSerialNumbers.java @@ -8,7 +8,7 @@ AtomicSerialNumbers extends SerialNumbers { private AtomicInteger serialNumber = new AtomicInteger(); - public synchronized int nextSerialNumber() { + public int nextSerialNumber() { return serialNumber.getAndIncrement(); } public static void main(String[] args) { From bccbbf309c4aa0f3b3ed2898cf6f6a39014d1081 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 5 Oct 2020 12:43:41 -0600 Subject: [PATCH 02/46] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a2a607a91..5ea98a321 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-3.5-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-6.6.1-bin.zip From 0b9d0341fea1d855915be7c87372e844f264d86e Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 5 Oct 2020 13:07:22 -0600 Subject: [PATCH 03/46] Trying to upgrade build parts --- build.gradle | 4 ++-- gradle/junit-jupiter.gradle | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index afd39a4a6..545eada12 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { classpath 'me.champeau.gradle:jmh-gradle-plugin:0.3.1' - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M2' + classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' } } @@ -21,4 +21,4 @@ subprojects { apply plugin: 'com.mindviewinc.tagging' } -apply from: 'gradle/subprojects.gradle' \ No newline at end of file +apply from: 'gradle/subprojects.gradle' diff --git a/gradle/junit-jupiter.gradle b/gradle/junit-jupiter.gradle index ccdd4ec02..08c1f2556 100644 --- a/gradle/junit-jupiter.gradle +++ b/gradle/junit-jupiter.gradle @@ -3,16 +3,18 @@ import org.apache.tools.ant.util.TeeOutputStream apply plugin: 'org.junit.platform.gradle.plugin' ext { - junitJupiterVersion = '5.0.0-M2' + junitJupiterVersion = '5.3.1' } dependencies { - testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}" - testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}" + // testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}" + // testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}" + testImplementation 'org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}' } junitPlatform { - platformVersion '1.0.0-M2' + platformVersion '1.0.3' includeClassNamePattern '.*' } From 2ab352d970c6f5f3ecf8895f5ed211ab996d64f1 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 5 Oct 2020 13:08:25 -0600 Subject: [PATCH 04/46] Revert "Trying to upgrade build parts" This reverts commit 0b9d0341fea1d855915be7c87372e844f264d86e. --- build.gradle | 4 ++-- gradle/junit-jupiter.gradle | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index 545eada12..afd39a4a6 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { classpath 'me.champeau.gradle:jmh-gradle-plugin:0.3.1' - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.3' + classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M2' } } @@ -21,4 +21,4 @@ subprojects { apply plugin: 'com.mindviewinc.tagging' } -apply from: 'gradle/subprojects.gradle' +apply from: 'gradle/subprojects.gradle' \ No newline at end of file diff --git a/gradle/junit-jupiter.gradle b/gradle/junit-jupiter.gradle index 08c1f2556..ccdd4ec02 100644 --- a/gradle/junit-jupiter.gradle +++ b/gradle/junit-jupiter.gradle @@ -3,18 +3,16 @@ import org.apache.tools.ant.util.TeeOutputStream apply plugin: 'org.junit.platform.gradle.plugin' ext { - junitJupiterVersion = '5.3.1' + junitJupiterVersion = '5.0.0-M2' } dependencies { - // testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}" - // testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}" - testImplementation 'org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}' + testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}" + testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}" } junitPlatform { - platformVersion '1.0.3' + platformVersion '1.0.0-M2' includeClassNamePattern '.*' } From 37e6a2aabb816ea577442233e95cc921456025d3 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 5 Oct 2020 13:51:37 -0600 Subject: [PATCH 05/46] Revert "Update gradle-wrapper.properties" This reverts commit bccbbf309c4aa0f3b3ed2898cf6f6a39014d1081. --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5ea98a321..a2a607a91 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-6.6.1-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-3.5-bin.zip From d4ff6fe1b2b1cf727406b79d1b58cbed519376c4 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 5 Oct 2020 14:09:12 -0600 Subject: [PATCH 06/46] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a2a607a91..5ea98a321 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-3.5-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-6.6.1-bin.zip From c26727d7a7fb1e3ab9485a8a5a55d9bab503b4c7 Mon Sep 17 00:00:00 2001 From: James Ward Date: Tue, 6 Oct 2020 12:05:43 -0600 Subject: [PATCH 07/46] gradle updates --- build.gradle | 7 +++---- gradle/findbugs.gradle | 4 +++- gradle/junit-jupiter.gradle | 36 +++++++++++++++++++++++------------- 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index afd39a4a6..09683e46a 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,7 @@ buildscript { } } dependencies { - classpath 'me.champeau.gradle:jmh-gradle-plugin:0.3.1' - classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-M2' + classpath 'me.champeau.gradle:jmh-gradle-plugin:0.5.2' } } @@ -18,7 +17,7 @@ subprojects { apply from: "$rootProject.projectDir/gradle/jmh.gradle" apply from: "$rootProject.projectDir/gradle/checkstyle.gradle" apply from: "$rootProject.projectDir/gradle/findbugs.gradle" - apply plugin: 'com.mindviewinc.tagging' + //apply plugin: 'com.mindviewinc.tagging' } -apply from: 'gradle/subprojects.gradle' \ No newline at end of file +apply from: 'gradle/subprojects.gradle' diff --git a/gradle/findbugs.gradle b/gradle/findbugs.gradle index f7e6383ba..ac628cb29 100644 --- a/gradle/findbugs.gradle +++ b/gradle/findbugs.gradle @@ -1,3 +1,4 @@ +/* apply plugin: 'findbugs' findbugs { @@ -10,4 +11,5 @@ tasks.withType(FindBugs) { xml.enabled = false html.enabled = true } -} \ No newline at end of file +} +*/ diff --git a/gradle/junit-jupiter.gradle b/gradle/junit-jupiter.gradle index ccdd4ec02..98a778434 100644 --- a/gradle/junit-jupiter.gradle +++ b/gradle/junit-jupiter.gradle @@ -1,19 +1,15 @@ import org.apache.tools.ant.util.TeeOutputStream -apply plugin: 'org.junit.platform.gradle.plugin' - -ext { - junitJupiterVersion = '5.0.0-M2' -} - dependencies { - testCompile "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}" - testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}" + testImplementation(platform('org.junit:junit-bom:5.7.0')) + testImplementation('org.junit.jupiter:junit-jupiter') } -junitPlatform { - platformVersion '1.0.0-M2' - includeClassNamePattern '.*' +test { + useJUnitPlatform() + testLogging { + events "passed", "skipped", "failed" + } } /* NEW: (REQUIRES CODE REWRITES IN BOOK AND TEST CODE) @@ -45,14 +41,28 @@ junitPlatform { JUnit 5's junitPlatformTest runs as a "javaExec" rather than a "test", so we can't hook into the before/after test behavior. */ -tasks.findByPath(":$name:junitPlatformTest").configure { +tasks.findByPath(":$name:test").configure { File testDir = file("tests") if(testDir.exists()) { File outFile = new File(testDir, 'report.txt') + + Writer taskOutput + doFirst { - standardOutput = new TeeOutputStream(new FileOutputStream(outFile, true), System.out) + taskOutput = project.file(outFile).newWriter() } + + testLogging.showStandardStreams = true + + onOutput { descriptor, event -> + taskOutput.append(event.message) + } + doLast { + // WARNING: if the task fails, this won't be executed and the file remains open. + // The memory cache version doesn't have this problem. + taskOutput.close() + if(outFile.size() == 0) outFile.delete() else if(outFile.text.contains("0 tests found")) From 7fb818dc241d024f44b89f50e1214cfa08f7b3ec Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 6 Oct 2020 15:41:25 -0600 Subject: [PATCH 08/46] Update build.gradle com.mindviewinc.tagging seems to work now so I've re-enabled it, and this eliminates almost all the errors under JDK8. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 09683e46a..5349c1480 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ subprojects { apply from: "$rootProject.projectDir/gradle/jmh.gradle" apply from: "$rootProject.projectDir/gradle/checkstyle.gradle" apply from: "$rootProject.projectDir/gradle/findbugs.gradle" - //apply plugin: 'com.mindviewinc.tagging' + apply plugin: 'com.mindviewinc.tagging' } apply from: 'gradle/subprojects.gradle' From c7a29b9b47756a62720f86d9b71106d6e881dc97 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 6 Oct 2020 16:06:14 -0600 Subject: [PATCH 09/46] Should work with JDK8 now --- Copyright.txt | 2 +- lowlevel/NotAtomic.java | 3 +-- patterns/SingletonPattern.java | 4 ++-- staticchecking/NoBasePetSpeak.py | 2 +- staticchecking/PetSpeak.py | 2 +- validating/tests/StringInverterTests.java | 4 ++-- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Copyright.txt b/Copyright.txt index 8cc3bb56a..f0d35035f 100644 --- a/Copyright.txt +++ b/Copyright.txt @@ -1,5 +1,5 @@ // Copyright.txt -This computer source code is Copyright ©2017 MindView LLC. +This computer source code is Copyright ©2020 MindView LLC. All Rights Reserved. Permission to use, copy, modify, and distribute this diff --git a/lowlevel/NotAtomic.java b/lowlevel/NotAtomic.java index f77eb128f..e3fa47847 100644 --- a/lowlevel/NotAtomic.java +++ b/lowlevel/NotAtomic.java @@ -18,8 +18,7 @@ public class NotAtomic { public NotAtomic(); Code: 0: aload_0 - 1: invokespecial #1 // Method -java/lang/Object."":()V + 1: invokespecial #1 // Method java/lang/Object."":()V 4: return void f1(); diff --git a/patterns/SingletonPattern.java b/patterns/SingletonPattern.java index f2e46e301..0e466a766 100644 --- a/patterns/SingletonPattern.java +++ b/patterns/SingletonPattern.java @@ -8,8 +8,8 @@ interface Resource { void setValue(int x); } -// Since this isn't inherited from a Cloneable -// base class and cloneability isn't added, +// This isn't inherited from a Cloneable +// base class and cloneability isn't added so // making it final prevents cloneability from // being added through inheritance. This also // implements thread-safe lazy initialization: diff --git a/staticchecking/NoBasePetSpeak.py b/staticchecking/NoBasePetSpeak.py index e148614d6..80c771c5f 100644 --- a/staticchecking/NoBasePetSpeak.py +++ b/staticchecking/NoBasePetSpeak.py @@ -2,7 +2,7 @@ # (c)2017 MindView LLC: see Copyright.txt # We make no guarantees that this code is fit for any purpose. # Visit http://OnJava8.com for more book information. -# Speaking pets without base classes +#- Speaking pets without base classes class Cat: def speak(self): diff --git a/staticchecking/PetSpeak.py b/staticchecking/PetSpeak.py index 57a05bd6b..998a678ee 100644 --- a/staticchecking/PetSpeak.py +++ b/staticchecking/PetSpeak.py @@ -2,7 +2,7 @@ # (c)2017 MindView LLC: see Copyright.txt # We make no guarantees that this code is fit for any purpose. # Visit http://OnJava8.com for more book information. -# Speaking pets in Python +#- Speaking pets in Python class Pet: def speak(self): pass diff --git a/validating/tests/StringInverterTests.java b/validating/tests/StringInverterTests.java index 142512177..817253731 100644 --- a/validating/tests/StringInverterTests.java +++ b/validating/tests/StringInverterTests.java @@ -22,7 +22,7 @@ void basicInversion1() { } @Test void basicInversion2() { - expectThrows(Error.class, () -> { + assertThrows(Error.class, () -> { assertEquals(inverter.invert("X"), "X"); }); } @@ -52,7 +52,7 @@ void allowedCharacters() { void lengthNoGreaterThan30() { String str = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; assertTrue(str.length() > 30); - expectThrows(RuntimeException.class, () -> { + assertThrows(RuntimeException.class, () -> { inverter.invert(str); }); } From 3b5b23fb37897883a1e75ba952add999feeb598d Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 6 Oct 2020 16:20:57 -0600 Subject: [PATCH 10/46] After running 'gradle wrapper' to fix up gradlew files --- gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 111 ++++++++++++++--------- gradlew.bat | 53 ++++++----- 4 files changed, 95 insertions(+), 71 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 941144813d241db74e1bf25b6804c679fbe7f0a3..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch literal 59203 zcma&O1CT9Y(k9%tZQHhO+qUh#ZQHhO+qmuS+qP|E@9xZO?0h@l{(r>DQ>P;GjjD{w zH}lENr;dU&FbEU?00aa80D$0M0RRB{U*7-#kbjS|qAG&4l5%47zyJ#WrfA#1$1Ctx zf&Z_d{GW=lf^w2#qRJ|CvSJUi(^E3iv~=^Z(zH}F)3Z%V3`@+rNB7gTVU{Bb~90p|f+0(v;nz01EG7yDMX9@S~__vVgv%rS$+?IH+oZ03D5zYrv|^ zC1J)SruYHmCki$jLBlTaE5&dFG9-kq3!^i>^UQL`%gn6)jz54$WDmeYdsBE9;PqZ_ zoGd=P4+|(-u4U1dbAVQrFWoNgNd;0nrghPFbQrJctO>nwDdI`Q^i0XJDUYm|T|RWc zZ3^Qgo_Qk$%Fvjj-G}1NB#ZJqIkh;kX%V{THPqOyiq)d)0+(r9o(qKlSp*hmK#iIY zA^)Vr$-Hz<#SF=0@tL@;dCQsm`V9s1vYNq}K1B)!XSK?=I1)tX+bUV52$YQu*0%fnWEukW>mxkz+%3-S!oguE8u#MGzST8_Dy^#U?fA@S#K$S@9msUiX!gd_ow>08w5)nX{-KxqMOo7d?k2&?Vf z&diGDtZr(0cwPe9z9FAUSD9KC)7(n^lMWuayCfxzy8EZsns%OEblHFSzP=cL6}?J| z0U$H!4S_TVjj<`6dy^2j`V`)mC;cB%* z8{>_%E1^FH!*{>4a7*C1v>~1*@TMcLK{7nEQ!_igZC}ikJ$*<$yHy>7)oy79A~#xE zWavoJOIOC$5b6*q*F_qN1>2#MY)AXVyr$6x4b=$x^*aqF*L?vmj>Mgv+|ITnw_BoW zO?jwHvNy^prH{9$rrik1#fhyU^MpFqF2fYEt(;4`Q&XWOGDH8k6M=%@fics4ajI;st# zCU^r1CK&|jzUhRMv;+W~6N;u<;#DI6cCw-otsc@IsN3MoSD^O`eNflIoR~l4*&-%RBYk@gb^|-JXs&~KuSEmMxB}xSb z@K76cXD=Y|=I&SNC2E+>Zg?R6E%DGCH5J1nU!A|@eX9oS(WPaMm==k2s_ueCqdZw| z&hqHp)47`c{BgwgvY2{xz%OIkY1xDwkw!<0veB#yF4ZKJyabhyyVS`gZepcFIk%e2 zTcrmt2@-8`7i-@5Nz>oQWFuMC_KlroCl(PLSodswHqJ3fn<;gxg9=}~3x_L3P`9Sn zChIf}8vCHvTriz~T2~FamRi?rh?>3bX1j}%bLH+uFX+p&+^aXbOK7clZxdU~6Uxgy z8R=obwO4dL%pmVo*Ktf=lH6hnlz_5k3cG;m8lgaPp~?eD!Yn2kf)tU6PF{kLyn|oI@eQ`F z3IF7~Blqg8-uwUuWZScRKn%c2_}dXB6Dx_&xR*n9M9LXasJhtZdr$vBY!rP{c@=)& z#!?L$2UrkvClwQO>U*fSMs67oSj2mxiJ$t;E|>q%Kh_GzzWWO&3;ufU%2z%ucBU8H z3WIwr$n)cfCXR&>tyB7BcSInK>=ByZA%;cVEJhcg<#6N{aZC4>K41XF>ZgjG`z_u& zGY?;Ad?-sgiOnI`oppF1o1Gurqbi*;#x2>+SSV6|1^G@ooVy@fg?wyf@0Y!UZ4!}nGuLeC^l)6pwkh|oRY`s1Pm$>zZ3u-83T|9 zGaKJIV3_x+u1>cRibsaJpJqhcm%?0-L;2 zitBrdRxNmb0OO2J%Y&Ym(6*`_P3&&5Bw157{o7LFguvxC$4&zTy#U=W*l&(Q2MNO} zfaUwYm{XtILD$3864IA_nn34oVa_g^FRuHL5wdUd)+W-p-iWCKe8m_cMHk+=? zeKX)M?Dt(|{r5t7IenkAXo%&EXIb-i^w+0CX0D=xApC=|Xy(`xy+QG^UyFe z+#J6h_&T5i#sV)hj3D4WN%z;2+jJcZxcI3*CHXGmOF3^)JD5j&wfX)e?-|V0GPuA+ zQFot%aEqGNJJHn$!_}#PaAvQ^{3-Ye7b}rWwrUmX53(|~i0v{}G_sI9uDch_brX&6 zWl5Ndj-AYg(W9CGfQf<6!YmY>Ey)+uYd_JNXH=>|`OH-CDCmcH(0%iD_aLlNHKH z7bcW-^5+QV$jK?R*)wZ>r9t}loM@XN&M-Pw=F#xn(;u3!(3SXXY^@=aoj70;_=QE9 zGghsG3ekq#N||u{4We_25U=y#T*S{4I{++Ku)> zQ!DZW;pVcn>b;&g2;YE#+V`v*Bl&Y-i@X6D*OpNA{G@JAXho&aOk(_j^weW{#3X5Y z%$q_wpb07EYPdmyH(1^09i$ca{O<}7) zRWncXdSPgBE%BM#by!E>tdnc$8RwUJg1*x($6$}ae$e9Knj8gvVZe#bLi!<+&BkFj zg@nOpDneyc+hU9P-;jmOSMN|*H#>^Ez#?;%C3hg_65leSUm;iz)UkW)jX#p)e&S&M z1|a?wDzV5NVnlhRBCd_;F87wp>6c<&nkgvC+!@KGiIqWY4l}=&1w7|r6{oBN8xyzh zG$b#2=RJp_iq6)#t5%yLkKx(0@D=C3w+oiXtSuaQ%I1WIb-eiE$d~!)b@|4XLy!CZ z9p=t=%3ad@Ep+<9003D2KZ5VyP~_n$=;~r&YUg5UZ0KVD&tR1DHy9x)qWtKJp#Kq# zP*8p#W(8JJ_*h_3W}FlvRam?<4Z+-H77^$Lvi+#vmhL9J zJ<1SV45xi;SrO2f=-OB(7#iNA5)x1uNC-yNxUw|!00vcW2PufRm>e~toH;M0Q85MQLWd?3O{i8H+5VkR@l9Dg-ma ze2fZ%>G(u5(k9EHj2L6!;(KZ8%8|*-1V|B#EagbF(rc+5iL_5;Eu)L4Z-V;0HfK4d z*{utLse_rvHZeQ>V5H=f78M3Ntg1BPxFCVD{HbNA6?9*^YIq;B-DJd{Ca2L#)qWP? zvX^NhFmX?CTWw&Ns}lgs;r3i+Bq@y}Ul+U%pzOS0Fcv9~aB(0!>GT0)NO?p=25LjN z2bh>6RhgqD7bQj#k-KOm@JLgMa6>%-ok1WpOe)FS^XOU{c?d5shG(lIn3GiVBxmg`u%-j=)^v&pX1JecJics3&jvPI)mDut52? z3jEA)DM%}BYbxxKrizVYwq?(P&19EXlwD9^-6J+4!}9{ywR9Gk42jjAURAF&EO|~N z)?s>$Da@ikI4|^z0e{r`J8zIs>SpM~Vn^{3fArRu;?+43>lD+^XtUcY1HidJwnR6+ z!;oG2=B6Z_=M%*{z-RaHc(n|1RTKQdNjjV!Pn9lFt^4w|AeN06*j}ZyhqZ^!-=cyGP_ShV1rGxkx8t zB;8`h!S{LD%ot``700d0@Grql(DTt4Awgmi+Yr0@#jbe=2#UkK%rv=OLqF)9D7D1j z!~McAwMYkeaL$~kI~90)5vBhBzWYc3Cj1WI0RS`z000R8-@ET0dA~*r(gSiCJmQMN&4%1D zyVNf0?}sBH8zNbBLn>~(W{d3%@kL_eQ6jEcR{l>C|JK z(R-fA!z|TTRG40|zv}7E@PqCAXP3n`;%|SCQ|ZS%ym$I{`}t3KPL&^l5`3>yah4*6 zifO#{VNz3)?ZL$be;NEaAk9b#{tV?V7 zP|wf5YA*1;s<)9A4~l3BHzG&HH`1xNr#%){4xZ!jq%o=7nN*wMuXlFV{HaiQLJ`5G zBhDi#D(m`Q1pLh@Tq+L;OwuC52RdW7b8}~60WCOK5iYMUad9}7aWBuILb({5=z~YF zt?*Jr5NG+WadM{mDL>GyiByCuR)hd zA=HM?J6l1Xv0Dl+LW@w$OTcEoOda^nFCw*Sy^I@$sSuneMl{4ys)|RY#9&NxW4S)9 zq|%83IpslTLoz~&vTo!Ga@?rj_kw{|k{nv+w&Ku?fyk4Ki4I?);M|5Axm)t+BaE)D zm(`AQ#k^DWrjbuXoJf2{Aj^KT zFb1zMSqxq|vceV+Mf-)$oPflsO$@*A0n0Z!R{&(xh8s}=;t(lIy zv$S8x>m;vQNHuRzoaOo?eiWFe{0;$s`Bc+Osz~}Van${u;g(su`3lJ^TEfo~nERfP z)?aFzpDgnLYiERsKPu|0tq4l2wT)Atr6Qb%m-AUn6HnCue*yWICp7TjW$@sO zm5rm4aTcPQ(rfi7a`xP7cKCFrJD}*&_~xgLyr^-bmsL}y;A5P|al8J3WUoBSjqu%v zxC;mK!g(7r6RRJ852Z~feoC&sD3(6}^5-uLK8o)9{8L_%%rItZK9C){UxB|;G>JbP zsRRtS4-3B*5c+K2kvmgZK8472%l>3cntWUOVHxB|{Ay~aOg5RN;{PJgeVD*H%ac+y!h#wi%o2bF2Ca8IyMyH{>4#{E_8u^@+l-+n=V}Sq?$O z{091@v%Bd*3pk0^2UtiF9Z+(a@wy6 zUdw8J*ze$K#=$48IBi1U%;hmhO>lu!uU;+RS}p&6@rQila7WftH->*A4=5W|Fmtze z)7E}jh@cbmr9iup^i%*(uF%LG&!+Fyl@LFA-}Ca#bxRfDJAiR2dt6644TaYw1Ma79 zt8&DYj31j^5WPNf5P&{)J?WlCe@<3u^78wnd(Ja4^a>{^Tw}W>|Cjt^If|7l^l)^Q zbz|7~CF(k_9~n|h;ysZ+jHzkXf(*O*@5m zLzUmbHp=x!Q|!9NVXyipZ3)^GuIG$k;D)EK!a5=8MFLI_lpf`HPKl=-Ww%z8H_0$j ztJ||IfFG1lE9nmQ0+jPQy zCBdKkjArH@K7jVcMNz);Q(Q^R{d5G?-kk;Uu_IXSyWB)~KGIizZL(^&qF;|1PI7!E zTP`%l)gpX|OFn&)M%txpQ2F!hdA~hX1Cm5)IrdljqzRg!f{mN%G~H1&oqe`5eJCIF zHdD7O;AX-{XEV(a`gBFJ9ews#CVS2y!&>Cm_dm3C8*n3MA*e67(WC?uP@8TXuMroq z{#w$%z@CBIkRM7?}Xib+>hRjy?%G!fiw8! z8(gB+8J~KOU}yO7UGm&1g_MDJ$IXS!`+*b*QW2x)9>K~Y*E&bYMnjl6h!{17_8d!%&9D`a7r&LKZjC<&XOvTRaKJ1 zUY@hl5^R&kZl3lU3njk`3dPzxj$2foOL26r(9zsVF3n_F#v)s5vv3@dgs|lP#eylq62{<-vczqP!RpVBTgI>@O6&sU>W|do17+#OzQ7o5A$ICH z?GqwqnK^n2%LR;$^oZM;)+>$X3s2n}2jZ7CdWIW0lnGK-b#EG01)P@aU`pg}th&J-TrU`tIpb5t((0eu|!u zQz+3ZiOQ^?RxxK4;zs=l8q!-n7X{@jSwK(iqNFiRColuEOg}!7cyZi`iBX4g1pNBj zAPzL?P^Ljhn;1$r8?bc=#n|Ed7wB&oHcw()&*k#SS#h}jO?ZB246EGItsz*;^&tzp zu^YJ0=lwsi`eP_pU8}6JA7MS;9pfD;DsSsLo~ogzMNP70@@;Fm8f0^;>$Z>~}GWRw!W5J3tNX*^2+1f3hz{~rIzJo z6W%J(H!g-eI_J1>0juX$X4Cl6i+3wbc~k146UIX&G22}WE>0ga#WLsn9tY(&29zBvH1$`iWtTe zG2jYl@P!P)eb<5DsR72BdI7-zP&cZNI{7q3e@?N8IKc4DE#UVr->|-ryuJXk^u^>4 z$3wE~=q390;XuOQP~TNoDR?#|NSPJ%sTMInA6*rJ%go|=YjGe!B>z6u$IhgQSwoV* zjy3F2#I>uK{42{&IqP59)Y(1*Z>>#W8rCf4_eVsH)`v!P#^;BgzKDR`ARGEZzkNX+ zJUQu=*-ol=Xqqt5=`=pA@BIn@6a9G8C{c&`i^(i+BxQO9?YZ3iu%$$da&Kb?2kCCo zo7t$UpSFWqmydXf@l3bVJ=%K?SSw)|?srhJ-1ZdFu*5QhL$~-IQS!K1s@XzAtv6*Y zl8@(5BlWYLt1yAWy?rMD&bwze8bC3-GfNH=p zynNFCdxyX?K&G(ZZ)afguQ2|r;XoV^=^(;Cku#qYn4Lus`UeKt6rAlFo_rU`|Rq z&G?~iWMBio<78of-2X(ZYHx~=U0Vz4btyXkctMKdc9UM!vYr~B-(>)(Hc|D zMzkN4!PBg%tZoh+=Gba!0++d193gbMk2&krfDgcbx0jI92cq?FFESVg0D$>F+bil} zY~$)|>1HZsX=5sAZ2WgPB5P=8X#TI+NQ(M~GqyVB53c6IdX=k>Wu@A0Svf5#?uHaF zsYn|koIi3$(%GZ2+G+7Fv^lHTb#5b8sAHSTnL^qWZLM<(1|9|QFw9pnRU{svj}_Al zL)b9>fN{QiA($8peNEJyy`(a{&uh-T4_kdZFIVsKKVM(?05}76EEz?#W za^fiZOAd14IJ4zLX-n7Lq0qlQ^lW8Cvz4UKkV9~P}>sq0?xD3vg+$4vLm~C(+ zM{-3Z#qnZ09bJ>}j?6ry^h+@PfaD7*jZxBEY4)UG&daWb??6)TP+|3#Z&?GL?1i+280CFsE|vIXQbm| zM}Pk!U`U5NsNbyKzkrul-DzwB{X?n3E6?TUHr{M&+R*2%yOiXdW-_2Yd6?38M9Vy^ z*lE%gA{wwoSR~vN0=no}tP2Ul5Gk5M(Xq`$nw#ndFk`tcpd5A=Idue`XZ!FS>Q zG^0w#>P4pPG+*NC9gLP4x2m=cKP}YuS!l^?sHSFftZy{4CoQrb_ z^20(NnG`wAhMI=eq)SsIE~&Gp9Ne0nD4%Xiu|0Fj1UFk?6avDqjdXz{O1nKao*46y zT8~iA%Exu=G#{x=KD;_C&M+Zx4+n`sHT>^>=-1YM;H<72k>$py1?F3#T1*ef9mLZw z5naLQr?n7K;2l+{_uIw*_1nsTn~I|kkCgrn;|G~##hM;9l7Jy$yJfmk+&}W@JeKcF zx@@Woiz8qdi|D%aH3XTx5*wDlbs?dC1_nrFpm^QbG@wM=i2?Zg;$VK!c^Dp8<}BTI zyRhAq@#%2pGV49*Y5_mV4+OICP|%I(dQ7x=6Ob}>EjnB_-_18*xrY?b%-yEDT(wrO z9RY2QT0`_OpGfMObKHV;QLVnrK%mc?$WAdIT`kJQT^n%GuzE7|9@k3ci5fYOh(287 zuIbg!GB3xLg$YN=n)^pHGB0jH+_iIiC=nUcD;G6LuJsjn2VI1cyZx=a?ShCsF==QK z;q~*m&}L<-cb+mDDXzvvrRsybcgQ;Vg21P(uLv5I+eGc7o7tc6`;OA9{soHFOz zT~2?>Ts}gprIX$wRBb4yE>ot<8+*Bv`qbSDv*VtRi|cyWS>)Fjs>fkNOH-+PX&4(~ z&)T8Zam2L6puQl?;5zg9h<}k4#|yH9czHw;1jw-pwBM*O2hUR6yvHATrI%^mvs9q_ z&ccT0>f#eDG<^WG^q@oVqlJrhxH)dcq2cty@l3~|5#UDdExyXUmLQ}f4#;6fI{f^t zDCsgIJ~0`af%YR%Ma5VQq-p21k`vaBu6WE?66+5=XUd%Ay%D$irN>5LhluRWt7 zov-=f>QbMk*G##&DTQyou$s7UqjjW@k6=!I@!k+S{pP8R(2=e@io;N8E`EOB;OGoI zw6Q+{X1_I{OO0HPpBz!X!@`5YQ2)t{+!?M_iH25X(d~-Zx~cXnS9z>u?+If|iNJbx zyFU2d1!ITX64D|lE0Z{dLRqL1Ajj=CCMfC4lD3&mYR_R_VZ>_7_~|<^o*%_&jevU+ zQ4|qzci=0}Jydw|LXLCrOl1_P6Xf@c0$ieK2^7@A9UbF{@V_0p%lqW|L?5k>bVM8|p5v&2g;~r>B8uo<4N+`B zH{J)h;SYiIVx@#jI&p-v3dwL5QNV1oxPr8J%ooezTnLW>i*3Isb49%5i!&ac_dEXv zvXmVUck^QHmyrF8>CGXijC_R-y(Qr{3Zt~EmW)-nC!tiH`wlw5D*W7Pip;T?&j%kX z6DkZX4&}iw>hE(boLyjOoupf6JpvBG8}jIh!!VhnD0>}KSMMo{1#uU6kiFcA04~|7 zVO8eI&x1`g4CZ<2cYUI(n#wz2MtVFHx47yE5eL~8bot~>EHbevSt}LLMQX?odD{Ux zJMnam{d)W4da{l7&y-JrgiU~qY3$~}_F#G7|MxT)e;G{U`In&?`j<5D->}cb{}{T(4DF0BOk-=1195KB-E*o@c?`>y#4=dMtYtSY=&L{!TAjFVcq0y@AH`vH! z$41+u!Ld&}F^COPgL(EE{0X7LY&%D7-(?!kjFF7=qw<;`V{nwWBq<)1QiGJgUc^Vz ztMUlq1bZqKn17|6x6iAHbWc~l1HcmAxr%$Puv!znW)!JiukwIrqQ00|H$Z)OmGG@= zv%A8*4cq}(?qn4rN6o`$Y))(MyXr8R<2S^J+v(wmFmtac!%VOfN?&(8Nr!T@kV`N; z*Q33V3t`^rN&aBiHet)18wy{*wi1=W!B%B-Q6}SCrUl$~Hl{@!95ydml@FK8P=u4s z4e*7gV2s=YxEvskw2Ju!2%{8h01rx-3`NCPc(O zH&J0VH5etNB2KY6k4R@2Wvl^Ck$MoR3=)|SEclT2ccJ!RI9Nuter7u9@;sWf-%um;GfI!=eEIQ2l2p_YWUd{|6EG ze{yO6;lMc>;2tPrsNdi@&1K6(1;|$xe8vLgiouj%QD%gYk`4p{Ktv9|j+!OF-P?@p z;}SV|oIK)iwlBs+`ROXkhd&NK zzo__r!B>tOXpBJMDcv!Mq54P+n4(@dijL^EpO1wdg~q+!DT3lB<>9AANSe!T1XgC=J^)IP0XEZ()_vpu!!3HQyJhwh?r`Ae%Yr~b% zO*NY9t9#qWa@GCPYOF9aron7thfWT`eujS4`t2uG6)~JRTI;f(ZuoRQwjZjp5Pg34 z)rp$)Kr?R+KdJ;IO;pM{$6|2y=k_siqvp%)2||cHTe|b5Ht8&A{wazGNca zX$Ol?H)E_R@SDi~4{d-|8nGFhZPW;Cts1;08TwUvLLv&_2$O6Vt=M)X;g%HUr$&06 zISZb(6)Q3%?;3r~*3~USIg=HcJhFtHhIV(siOwV&QkQe#J%H9&E21!C*d@ln3E@J* zVqRO^<)V^ky-R|%{(9`l-(JXq9J)1r$`uQ8a}$vr9E^nNiI*thK8=&UZ0dsFN_eSl z(q~lnD?EymWLsNa3|1{CRPW60>DSkY9YQ;$4o3W7Ms&@&lv9eH!tk~N&dhqX&>K@} zi1g~GqglxkZ5pEFkllJ)Ta1I^c&Bt6#r(QLQ02yHTaJB~- zCcE=5tmi`UA>@P=1LBfBiqk)HB4t8D?02;9eXj~kVPwv?m{5&!&TFYhu>3=_ zsGmYZ^mo*-j69-42y&Jj0cBLLEulNRZ9vXE)8~mt9C#;tZs;=#M=1*hebkS;7(aGf zcs7zH(I8Eui9UU4L--))yy`&d&$In&VA2?DAEss4LAPCLd>-$i?lpXvn!gu^JJ$(DoUlc6wE98VLZ*z`QGQov5l4Fm_h?V-;mHLYDVOwKz7>e4+%AzeO>P6v}ndPW| zM>m#6Tnp7K?0mbK=>gV}=@k*0Mr_PVAgGMu$j+pWxzq4MAa&jpCDU&-5eH27Iz>m^ zax1?*HhG%pJ((tkR(V(O(L%7v7L%!_X->IjS3H5kuXQT2!ow(;%FDE>16&3r){!ex zhf==oJ!}YU89C9@mfDq!P3S4yx$aGB?rbtVH?sHpg?J5C->!_FHM%Hl3#D4eplxzQ zRA+<@LD%LKSkTk2NyWCg7u=$%F#;SIL44~S_OGR}JqX}X+=bc@swpiClB`Zbz|f!4 z7Ysah7OkR8liXfI`}IIwtEoL}(URrGe;IM8%{>b1SsqXh)~w}P>yiFRaE>}rEnNkT z!HXZUtxUp1NmFm)Dm@-{FI^aRQqpSkz}ZSyKR%Y}YHNzBk)ZIp} zMtS=aMvkgWKm9&oTcU0?S|L~CDqA+sHpOxwnswF-fEG)cXCzUR?ps@tZa$=O)=L+5 zf%m58cq8g_o}3?Bhh+c!w4(7AjxwQ3>WnVi<{{38g7yFboo>q|+7qs<$8CPXUFAN< zG&}BHbbyQ5n|qqSr?U~GY{@GJ{(Jny{bMaOG{|IkUj7tj^9pa9|FB_<+KHLxSxR;@ zHpS$4V)PP+tx}22fWx(Ku9y+}Ap;VZqD0AZW4gCDTPCG=zgJmF{|x;(rvdM|2|9a}cex6xrMkERnkE;}jvU-kmzd%_J50$M`lIPCKf+^*zL=@LW`1SaEc%=m zQ+lT06Gw+wVwvQ9fZ~#qd430v2HndFsBa9WjD0P}K(rZYdAt^5WQIvb%D^Q|pkVE^ zte$&#~zmULFACGfS#g=2OLOnIf2Of-k!(BIHjs77nr!5Q1*I9 z1%?=~#Oss!rV~?-6Gm~BWJiA4mJ5TY&iPm_$)H1_rTltuU1F3I(qTQ^U$S>%$l z)Wx1}R?ij0idp@8w-p!Oz{&*W;v*IA;JFHA9%nUvVDy7Q8woheC#|8QuDZb-L_5@R zOqHwrh|mVL9b=+$nJxM`3eE{O$sCt$UK^2@L$R(r^-_+z?lOo+me-VW=Zw z-Bn>$4ovfWd%SPY`ab-u9{INc*k2h+yH%toDHIyqQ zO68=u`N}RIIs7lsn1D){)~%>ByF<>i@qFb<-axvu(Z+6t7v<^z&gm9McRB~BIaDn$ z#xSGT!rzgad8o>~kyj#h1?7g96tOcCJniQ+*#=b7wPio>|6a1Z?_(TS{)KrPe}(8j z!#&A=k(&Pj^F;r)CI=Z{LVu>uj!_W1q4b`N1}E(i%;BWjbEcnD=mv$FL$l?zS6bW!{$7j1GR5ocn94P2u{ z70tAAcpqtQo<@cXw~@i-@6B23;317|l~S>CB?hR5qJ%J3EFgyBdJd^fHZu7AzHF(BQ!tyAz^L0`X z23S4Fe{2X$W0$zu9gm%rg~A>ijaE#GlYlrF9$ds^QtaszE#4M(OLVP2O-;XdT(XIC zatwzF*)1c+t~c{L=fMG8Z=k5lv>U0;C{caN1NItnuSMp)6G3mbahu>E#sj&oy94KC zpH}8oEw{G@N3pvHhp{^-YaZeH;K+T_1AUv;IKD<=mv^&Ueegrb!yf`4VlRl$M?wsl zZyFol(2|_QM`e_2lYSABpKR{{NlxlDSYQNkS;J66aT#MSiTx~;tUmvs-b*CrR4w=f z8+0;*th6kfZ3|5!Icx3RV11sp=?`0Jy3Fs0N4GZQMN=8HmT6%x9@{Dza)k}UwL6JT zHRDh;%!XwXr6yuuy`4;Xsn0zlR$k%r%9abS1;_v?`HX_hI|+EibVnlyE@3aL5vhQq zlIG?tN^w@0(v9M*&L+{_+RQZw=o|&BRPGB>e5=ys7H`nc8nx)|-g;s7mRc7hg{GJC zAe^vCIJhajmm7C6g! zL&!WAQ~5d_5)00?w_*|*H>3$loHrvFbitw#WvLB!JASO?#5Ig5$Ys10n>e4|3d;tS zELJ0|R4n3Az(Fl3-r^QiV_C;)lQ1_CW{5bKS15U|E9?ZgLec@%kXr84>5jV2a5v=w z?pB1GPdxD$IQL4)G||B_lI+A=08MUFFR4MxfGOu07vfIm+j=z9tp~5i_6jb`tR>qV z$#`=BQ*jpCjm$F0+F)L%xRlnS%#&gro6PiRfu^l!EVan|r3y}AHJQOORGx4~ z&<)3=K-tx518DZyp%|!EqpU!+X3Et7n2AaC5(AtrkW>_57i}$eqs$rupubg0a1+WO zGHZKLN2L0D;ab%{_S1Plm|hx8R?O14*w*f&2&bB050n!R2by zw!@XOQx$SqZ5I<(Qu$V6g>o#A!JVwErWv#(Pjx=KeS0@hxr4?13zj#oWwPS(7Ro|v z>Mp@Kmxo79q|}!5qtX2-O@U&&@6s~!I&)1WQIl?lTnh6UdKT_1R640S4~f=_xoN3- zI+O)$R@RjV$F=>Ti7BlnG1-cFKCC(t|Qjm{SalS~V-tX#+2ekRhwmN zZr`8{QF6y~Z!D|{=1*2D-JUa<(1Z=;!Ei!KiRNH?o{p5o3crFF=_pX9O-YyJchr$~ zRC`+G+8kx~fD2k*ZIiiIGR<8r&M@3H?%JVOfE>)})7ScOd&?OjgAGT@WVNSCZ8N(p zuQG~76GE3%(%h1*vUXg$vH{ua0b`sQ4f0*y=u~lgyb^!#CcPJa2mkSEHGLsnO^kb$ zru5_l#nu=Y{rSMWiYx?nO{8I!gH+?wEj~UM?IrG}E|bRIBUM>UlY<`T1EHpRr36vv zBi&dG8oxS|J$!zoaq{+JpJy+O^W(nt*|#g32bd&K^w-t>!Vu9N!k9eA8r!Xc{utY> zg9aZ(D2E0gL#W0MdjwES-7~Wa8iubPrd?8-$C4BP?*wok&O8+ykOx{P=Izx+G~hM8 z*9?BYz!T8~dzcZr#ux8kS7u7r@A#DogBH8km8Ry4slyie^n|GrTbO|cLhpqgMdsjX zJ_LdmM#I&4LqqsOUIXK8gW;V0B(7^$y#h3h>J0k^WJfAMeYek%Y-Dcb_+0zPJez!GM zAmJ1u;*rK=FNM0Nf}Y!!P9c4)HIkMnq^b;JFd!S3?_Qi2G#LIQ)TF|iHl~WKK6JmK zbv7rPE6VkYr_%_BT}CK8h=?%pk@3cz(UrZ{@h40%XgThP*-Oeo`T0eq9 zA8BnWZKzCy5e&&_GEsU4*;_k}(8l_&al5K-V*BFM=O~;MgRkYsOs%9eOY6s6AtE*<7GQAR2ulC3RAJrG_P1iQK5Z~&B z&f8X<>yJV6)oDGIlS$Y*D^Rj(cszTy5c81a5IwBr`BtnC6_e`ArI8CaTX_%rx7;cn zR-0?J_LFg*?(#n~G8cXut(1nVF0Oka$A$1FGcERU<^ggx;p@CZc?3UB41RY+wLS`LWFNSs~YP zuw1@DNN3lTd|jDL7gjBsd9}wIw}4xT2+8dBQzI00m<@?c2L%>}QLfK5%r!a-iII`p zX@`VEUH)uj^$;7jVUYdADQ2k*!1O3WdfgF?OMtUXNpQ1}QINamBTKDuv19^{$`8A1 zeq%q*O0mi@(%sZU>Xdb0Ru96CFqk9-L3pzLVsMQ`Xpa~N6CR{9Rm2)A|CI21L(%GW zh&)Y$BNHa=FD+=mBw3{qTgw)j0b!Eahs!rZnpu)z!!E$*eXE~##yaXz`KE5(nQM`s zD!$vW9XH)iMxu9R>r$VlLk9oIR%HxpUiW=BK@4U)|1WNQ=mz9a z^!KkO=>GaJ!GBXm{KJj^;kh-MkUlEQ%lza`-G&}C5y1>La1sR6hT=d*NeCnuK%_LV zOXt$}iP6(YJKc9j-Fxq~*ItVUqljQ8?oaysB-EYtFQp9oxZ|5m0^Hq(qV!S+hq#g( z?|i*H2MIr^Kxgz+3vIljQ*Feejy6S4v~jKEPTF~Qhq!(ms5>NGtRgO5vfPPc4Z^AM zTj!`5xEreIN)vaNxa|q6qWdg>+T`Ol0Uz)ckXBXEGvPNEL3R8hB3=C5`@=SYgAju1 z!)UBr{2~=~xa{b8>x2@C7weRAEuatC)3pkRhT#pMPTpSbA|tan%U7NGMvzmF?c!V8 z=pEWxbdXbTAGtWTyI?Fml%lEr-^AE}w#l(<7OIw;ctw}imYax&vR4UYNJZK6P7ZOd zP87XfhnUHxCUHhM@b*NbTi#(-8|wcv%3BGNs#zRCVV(W?1Qj6^PPQa<{yaBwZ`+<`w|;rqUY_C z&AeyKwwf*q#OW-F()lir=T^<^wjK65Lif$puuU5+tk$;e_EJ;Lu+pH>=-8=PDhkBg z8cWt%@$Sc#C6F$Vd+0507;{OOyT7Hs%nKS88q-W!$f~9*WGBpHGgNp}=C*7!RiZ5s zn1L_DbKF@B8kwhDiLKRB@lsXVVLK|ph=w%_`#owlf@s@V(pa`GY$8h%;-#h@TsO|Y8V=n@*!Rog7<7Cid%apR|x zOjhHCyfbIt%+*PCveTEcuiDi%Wx;O;+K=W?OFUV%)%~6;gl?<0%)?snDDqIvkHF{ zyI02)+lI9ov42^hL>ZRrh*HhjF9B$A@=H94iaBESBF=eC_KT$8A@uB^6$~o?3Wm5t1OIaqF^~><2?4e3c&)@wKn9bD? zoeCs;H>b8DL^F&>Xw-xjZEUFFTv>JD^O#1E#)CMBaG4DX9bD(Wtc8Rzq}9soQ8`jf zeSnHOL}<+WVSKp4kkq&?SbETjq6yr@4%SAqOG=9E(3YeLG9dtV+8vmzq+6PFPk{L; z(&d++iu=^F%b+ea$i2UeTC{R*0Isk;vFK!no<;L+(`y`3&H-~VTdKROkdyowo1iqR zbVW(3`+(PQ2>TKY>N!jGmGo7oeoB8O|P_!Ic@ zZ^;3dnuXo;WJ?S+)%P>{Hcg!Jz#2SI(s&dY4QAy_vRlmOh)QHvs_7c&zkJCmJGVvV zX;Mtb>QE+xp`KyciG$Cn*0?AK%-a|=o!+7x&&yzHQOS>8=B*R=niSnta^Pxp1`=md z#;$pS$4WCT?mbiCYU?FcHGZ#)kHVJTTBt^%XE(Q};aaO=Zik0UgLcc0I(tUpt(>|& zcxB_|fxCF7>&~5eJ=Dpn&5Aj{A^cV^^}(7w#p;HG&Q)EaN~~EqrE1qKrMAc&WXIE;>@<&)5;gD2?={Xf@Mvn@OJKw=8Mgn z!JUFMwD+s==JpjhroT&d{$kQAy%+d`a*XxDEVxy3`NHzmITrE`o!;5ClXNPb4t*8P zzAivdr{j_v!=9!^?T3y?gzmqDWX6mkzhIzJ-3S{T5bcCFMr&RPDryMcdwbBuZbsgN zGrp@^i?rcfN7v0NKGzDPGE#4yszxu=I_`MI%Z|10nFjU-UjQXXA?k8Pk|OE<(?ae) zE%vG#eZAlj*E7_3dx#Zz4kMLj>H^;}33UAankJiDy5ZvEhrjr`!9eMD8COp}U*hP+ zF}KIYx@pkccIgyxFm#LNw~G&`;o&5)2`5aogs`1~7cMZQ7zj!%L4E`2yzlQN6REX20&O<9 zKV6fyr)TScJPPzNTC2gL+0x#=u>(({{D7j)c-%tvqls3#Y?Z1m zV5WUE)zdJ{$p>yX;^P!UcXP?UD~YM;IRa#Rs5~l+*$&nO(;Ers`G=0D!twR(0GF@c zHl9E5DQI}Oz74n zfKP>&$q0($T4y$6w(p=ERAFh+>n%iaeRA%!T%<^+pg?M)@ucY<&59$x9M#n+V&>}=nO9wCV{O~lg&v#+jcUj(tQ z`0u1YH)-`U$15a{pBkGyPL0THv1P|4e@pf@3IBZS4dVJPo#H>pWq%Lr0YS-SeWash z8R7=jb28KPMI|_lo#GEO|5B?N_e``H*23{~a!AmUJ+fb4HX-%QI@lSEUxKlGV7z7Q zSKw@-TR>@1RL%w{x}dW#k1NgW+q4yt2Xf1J62Bx*O^WG8OJ|FqI4&@d3_o8Id@*)4 zYrk=>@!wv~mh7YWv*bZhxqSmFh2Xq)o=m;%n$I?GSz49l1$xRpPu_^N(vZ>*>Z<04 z2+rP70oM=NDysd!@fQdM2OcyT?3T^Eb@lIC-UG=Bw{BjQ&P`KCv$AcJ;?`vdZ4){d z&gkoUK{$!$$K`3*O-jyM1~p-7T*qb)Ys>Myt^;#1&a%O@x8A+E>! zY8=eD`ZG)LVagDLBeHg>=atOG?Kr%h4B%E6m@J^C+U|y)XX@f z8oyJDW|9g=<#f<{JRr{y#~euMnv)`7j=%cHWLc}ngjq~7k**6%4u>Px&W%4D94(r* z+akunK}O0DC2A%Xo9jyF;DobX?!1I(7%}@7F>i%&nk*LMO)bMGg2N+1iqtg+r(70q zF5{Msgsm5GS7DT`kBsjMvOrkx&|EU!{{~gL4d2MWrAT=KBQ-^zQCUq{5PD1orxlIL zq;CvlWx#f1NWvh`hg011I%?T_s!e38l*lWVt|~z-PO4~~1g)SrJ|>*tXh=QfXT)%( z+ex+inPvD&O4Ur;JGz>$sUOnWdpSLcm1X%aQDw4{dB!cnj`^muI$CJ2%p&-kULVCE z>$eMR36kN$wCPR+OFDM3-U(VOrp9k3)lI&YVFqd;Kpz~K)@Fa&FRw}L(SoD z9B4a+hQzZT-BnVltst&=kq6Y(f^S4hIGNKYBgMxGJ^;2yrO}P3;r)(-I-CZ)26Y6? z&rzHI_1GCvGkgy-t1E;r^3Le30|%$ebDRu2+gdLG)r=A~Qz`}~&L@aGJ{}vVs_GE* zVUjFnzHiXfKQbpv&bR&}l2bzIjAooB)=-XNcYmrGmBh(&iu@o!^hn0^#}m2yZZUK8 zufVm7Gq0y`Mj;9b>`c?&PZkU0j4>IL=UL&-Lp3j&47B5pAW4JceG{!XCA)kT<%2nqCxj<)uy6XR_uws~>_MEKPOpAQ!H zkn>FKh)<9DwwS*|Y(q?$^N!6(51O0 z^JM~Ax{AI1Oj$fs-S5d4T7Z_i1?{%0SsIuQ&r8#(JA=2iLcTN+?>wOL532%&dMYkT z*T5xepC+V6zxhS@vNbMoi|i)=rpli@R9~P!39tWbSSb904ekv7D#quKbgFEMTb48P zuq(VJ+&L8aWU(_FCD$3^uD!YM%O^K(dvy~Wm2hUuh6bD|#(I39Xt>N1Y{ZqXL`Fg6 zKQ?T2htHN!(Bx;tV2bfTtIj7e)liN-29s1kew>v(D^@)#v;}C4-G=7x#;-dM4yRWm zyY`cS21ulzMK{PoaQ6xChEZ}o_#}X-o}<&0)$1#3we?+QeLt;aVCjeA)hn!}UaKt< zat1fHEx13y-rXNMvpUUmCVzocPmN~-Y4(YJvQ#db)4|%B!rBsgAe+*yor~}FrNH08 z3V!97S}D7d$zbSD{$z;@IYMxM6aHdypIuS*pr_U6;#Y!_?0i|&yU*@16l z*dcMqDQgfNBf}?quiu4e>H)yTVfsp#f+Du0@=Kc41QockXkCkvu>FBd6Q+@FL!(Yx z2`YuX#eMEiLEDhp+9uFqME_E^faV&~9qjBHJkIp~%$x^bN=N)K@kvSVEMdDuzA0sn z88CBG?`RX1@#hQNd`o^V{37)!w|nA)QfiYBE^m=yQKv-fQF+UCMcuEe1d4BH7$?>b zJl-r9@0^Ie=)guO1vOd=i$_4sz>y3x^R7n4ED!5oXL3@5**h(xr%Hv)_gILarO46q+MaDOF%ChaymKoI6JU5Pg;7#2n9-18|S1;AK+ zgsn6;k6-%!QD>D?cFy}8F;r@z8H9xN1jsOBw2vQONVqBVEbkiNUqgw~*!^##ht>w0 zUOykwH=$LwX2j&nLy=@{hr)2O&-wm-NyjW7n~Zs9UlH;P7iP3 zI}S(r0YFVYacnKH(+{*)Tbw)@;6>%=&Th=+Z6NHo_tR|JCI8TJiXv2N7ei7M^Q+RM z?9o`meH$5Yi;@9XaNR#jIK^&{N|DYNNbtdb)XW1Lv2k{E>;?F`#Pq|&_;gm~&~Zc9 zf+6ZE%{x4|{YdtE?a^gKyzr}dA>OxQv+pq|@IXL%WS0CiX!V zm$fCePA%lU{%pTKD7|5NJHeXg=I0jL@$tOF@K*MI$)f?om)D63K*M|r`gb9edD1~Y zc|w7N)Y%do7=0{RC|AziW7#am$)9jciRJ?IWl9PE{G3U+$%FcyKs_0Cgq`=K3@ttV z9g;M!3z~f_?P%y3-ph%vBMeS@p7P&Ea8M@97+%XEj*(1E6vHj==d zjsoviB>j^$_^OI_DEPvFkVo(BGRo%cJeD){6Uckei=~1}>sp299|IRjhXe)%?uP0I zF5+>?0#Ye}T^Y$u_rc4=lPcq4K^D(TZG-w30-YiEM=dcK+4#o*>lJ8&JLi+3UcpZk z!^?95S^C0ja^jwP`|{<+3cBVog$(mRdQmadS+Vh~z zS@|P}=|z3P6uS+&@QsMp0no9Od&27O&14zHXGAOEy zh~OKpymK5C%;LLb467@KgIiVwYbYd6wFxI{0-~MOGfTq$nBTB!{SrWmL9Hs}C&l&l#m?s*{tA?BHS4mVKHAVMqm63H<|c5n0~k)-kbg zXidai&9ZUy0~WFYYKT;oe~rytRk?)r8bptITsWj(@HLI;@=v5|XUnSls7$uaxFRL+ zRVMGuL3w}NbV1`^=Pw*0?>bm8+xfeY(1PikW*PB>>Tq(FR`91N0c2&>lL2sZo5=VD zQY{>7dh_TX98L2)n{2OV=T10~*YzX27i2Q7W86M4$?gZIXZaBq#sA*{PH8){|GUi;oM>e?ua7eF4WFuFYZSG| zze?srg|5Ti8Og{O zeFxuw9!U+zhyk?@w zjsA6(oKD=Ka;A>Ca)oPORxK+kxH#O@zhC!!XS4@=swnuMk>t+JmLmFiE^1aX3f<)D@`%K0FGK^gg1a1j>zi z2KhV>sjU7AX3F$SEqrXSC}fRx64GDoc%!u2Yag68Lw@w9v;xOONf@o)Lc|Uh3<21ctTYu-mFZuHk*+R{GjXHIGq3p)tFtQp%TYqD=j1&y)>@zxoxUJ!G@ zgI0XKmP6MNzw>nRxK$-Gbzs}dyfFzt>#5;f6oR27ql!%+{tr+(`(>%51|k`ML} zY4eE)Lxq|JMas(;JibNQds1bUB&r}ydMQXBY4x(^&fY_&LlQC)3hylc$~8&~|06-D z#T+%66rYbHX%^KuqJED_wuGB+=h`nWA!>1n0)3wZrBG3%`b^Ozv6__dNa@%V14|!D zQ?o$z5u0^8`giv%qE!BzZ!3j;BlDlJDk)h@9{nSQeEk!z9RGW) z${RSF3phEM*ce*>Xdp}585vj$|40=&S{S-GTiE?Op*vY&Lvr9}BO$XWy80IF+6@%n z5*2ueT_g@ofP#u5pxb7n*fv^Xtt7&?SRc{*2Ka-*!BuOpf}neHGCiHy$@Ka1^Dint z;DkmIL$-e)rj4o2WQV%Gy;Xg(_Bh#qeOsTM2f@KEe~4kJ8kNLQ+;(!j^bgJMcNhvklP5Z6I+9Fq@c&D~8Fb-4rmDT!MB5QC{Dsb;BharP*O;SF4& zc$wj-7Oep7#$WZN!1nznc@Vb<_Dn%ga-O#J(l=OGB`dy=Sy&$(5-n3zzu%d7E#^8`T@}V+5B;PP8J14#4cCPw-SQTdGa2gWL0*zKM z#DfSXs_iWOMt)0*+Y>Lkd=LlyoHjublNLefhKBv@JoC>P7N1_#> zv=mLWe96%EY;!ZGSQDbZWb#;tzqAGgx~uk+-$+2_8U`!ypbwXl z^2E-FkM1?lY@yt8=J3%QK+xaZ6ok=-y%=KXCD^0r!5vUneW>95PzCkOPO*t}p$;-> ze5j-BLT_;)cZQzR2CEsm@rU7GZfFtdp*a|g4wDr%8?2QkIGasRfDWT-Dvy*U{?IHT z*}wGnzdlSptl#ZF^sf)KT|BJs&kLG91^A6ls{CzFprZ6-Y!V0Xysh%9p%iMd7HLsS zN+^Un$tDV)T@i!v?3o0Fsx2qI(AX_$dDkBzQ@fRM%n zRXk6hb9Py#JXUs+7)w@eo;g%QQ95Yq!K_d=z{0dGS+pToEI6=Bo8+{k$7&Z zo4>PH(`ce8E-Ps&uv`NQ;U$%t;w~|@E3WVOCi~R4oj5wP?%<*1C%}Jq%a^q~T7u>K zML5AKfQDv6>PuT`{SrKHRAF+^&edg6+5R_#H?Lz3iGoWo#PCEd0DS;)2U({{X#zU^ zw_xv{4x7|t!S)>44J;KfA|DC?;uQ($l+5Vp7oeqf7{GBF9356nx|&B~gs+@N^gSdd zvb*>&W)|u#F{Z_b`f#GVtQ`pYv3#||N{xj1NgB<#=Odt6{eB%#9RLt5v zIi|0u70`#ai}9fJjKv7dE!9ZrOIX!3{$z_K5FBd-Kp-&e4(J$LD-)NMTp^_pB`RT; zftVVlK2g@+1Ahv2$D){@Y#cL#dUj9*&%#6 zd2m9{1NYp>)6=oAvqdCn5#cx{AJ%S8skUgMglu2*IAtd+z1>B&`MuEAS(D(<6X#Lj z?f4CFx$)M&$=7*>9v1ER4b6!SIz-m0e{o0BfkySREchp?WdVPpQCh!q$t>?rL!&Jg zd#heM;&~A}VEm8Dvy&P|J*eAV&w!&Nx6HFV&B8jJFVTmgLaswn!cx$&%JbTsloz!3 zMEz1d`k==`Ueub_JAy_&`!ogbwx27^ZXgFNAbx=g_I~5nO^r)}&myw~+yY*cJl4$I znNJ32M&K=0(2Dj_>@39`3=FX!v3nZHno_@q^!y}%(yw0PqOo=);6Y@&ylVe>nMOZ~ zd>j#QQSBn3oaWd;qy$&5(5H$Ayi)0haAYO6TH>FR?rhqHmNOO+(})NB zLI@B@v0)eq!ug`>G<@htRlp3n!EpU|n+G+AvXFrWSUsLMBfL*ZB`CRsIVHNTR&b?K zxBgsN0BjfB>UVcJ|x%=-zb%OV7lmZc& zxiupadZVF7)6QuhoY;;FK2b*qL0J-Rn-8!X4ZY$-ZSUXV5DFd7`T41c(#lAeLMoeT z4%g655v@7AqT!i@)Edt5JMbN(=Q-6{=L4iG8RA%}w;&pKmtWvI4?G9pVRp|RTw`g0 zD5c12B&A2&P6Ng~8WM2eIW=wxd?r7A*N+&!Be7PX3s|7~z=APxm=A?5 zt>xB4WG|*Td@VX{Rs)PV0|yK`oI3^xn(4c_j&vgxk_Y3o(-`_5o`V zRTghg6%l@(qodXN;dB#+OKJEEvhfcnc#BeO2|E(5df-!fKDZ!%9!^BJ_4)9P+9Dq5 zK1=(v?KmIp34r?z{NEWnLB3Px{XYwy-akun4F7xTRr2^zeYW{gcK9)>aJDdU5;w5@ zak=<+-PLH-|04pelTb%ULpuuuJC7DgyT@D|p{!V!0v3KpDnRjANN12q6SUR3mb9<- z>2r~IApQGhstZ!3*?5V z8#)hJ0TdZg0M-BK#nGFP>$i=qk82DO z7h;Ft!D5E15OgW)&%lej*?^1~2=*Z5$2VX>V{x8SC+{i10BbtUk9@I#Vi&hX)q
Q!LwySI{Bnv%Sm)yh{^sSVJ8&h_D-BJ_YZe5eCaAWU9b$O2c z$T|{vWVRtOL!xC0DTc(Qbe`ItNtt5hr<)VijD0{U;T#bUEp381_y`%ZIav?kuYG{iyYdEBPW=*xNSc;Rlt6~F4M`5G+VtOjc z*0qGzCb@gME5udTjJA-9O<&TWd~}ysBd(eVT1-H82-doyH9RST)|+Pb{o*;$j9Tjs zhU!IlsPsj8=(x3bAKJTopW3^6AKROHR^7wZ185wJGVhA~hEc|LP;k7NEz-@4p5o}F z`AD6naG3(n=NF9HTH81=F+Q|JOz$7wm9I<+#BSmB@o_cLt2GkW9|?7mM;r!JZp89l zbo!Hp8=n!XH1{GwaDU+k)pGp`C|cXkCU5%vcH)+v@0eK>%7gWxmuMu9YLlChA|_D@ zi#5zovN_!a-0?~pUV-Rj*1P)KwdU-LguR>YM&*Nen+ln8Q$?WFCJg%DY%K}2!!1FE zDv-A%Cbwo^p(lzac&_TZ-l#9kq`mhLcY3h9ZTUVCM(Ad&=EriQY5{jJv<5K&g|*Lk zgV%ILnf1%8V2B0E&;Sp4sYbYOvvMebLwYwzkRQ#F8GpTQq#uv=J`uaSJ34OWITeSGo6+-8Xw znCk*n{kdDEi)Hi&u^)~cs@iyCkFWB2SWZU|Uc%^43ZIZQ-vWNExCCtDWjqHs;;tWf$v{}0{p0Rvxkq``)*>+Akq%|Na zA`@~-Vfe|+(AIlqru+7Ceh4nsVmO9p9jc8}HX^W&ViBDXT+uXbT#R#idPn&L>+#b6 zflC-4C5-X;kUnR~L>PSLh*gvL68}RBsu#2l`s_9KjUWRhiqF`j)`y`2`YU(>3bdBj z?>iyjEhe-~$^I5!nn%B6Wh+I`FvLNvauve~eX<+Ipl&04 zT}};W&1a3%W?dJ2=N#0t?e+aK+%t}5q%jSLvp3jZ%?&F}nOOWr>+{GFIa%wO_2`et z=JzoRR~}iKuuR+azPI8;Gf9)z3kyA4EIOSl!sRR$DlW}0>&?GbgPojmjmnln;cTqCt=ADbE zZ8GAnoM+S1(5$i8^O4t`ue;vO4i}z0wz-QEIVe5_u03;}-!G1NyY8;h^}y;tzY}i5 zqQr#Ur3Fy8sSa$Q0ys+f`!`+>9WbvU_I`Sj;$4{S>O3?#inLHCrtLy~!s#WXV=oVP zeE93*Nc`PBi4q@%Ao$x4lw9vLHM!6mn3-b_cebF|n-2vt-zYVF_&sDE--J-P;2WHo z+@n2areE0o$LjvjlV2X7ZU@j+`{*8zq`JR3gKF#EW|#+{nMyo-a>nFFTg&vhyT=b} zDa8+v0(Dgx0yRL@ZXOYIlVSZ0|MFizy0VPW8;AfA5|pe!#j zX}Py^8fl5SyS4g1WSKKtnyP+_PoOwMMwu`(i@Z)diJp~U54*-miOchy7Z35eL>^M z4p<-aIxH4VUZgS783@H%M7P9hX>t{|RU7$n4T(brCG#h9e9p! z+o`i;EGGq3&pF;~5V~eBD}lC)>if$w%Vf}AFxGqO88|ApfHf&Bvu+xdG)@vuF}Yvk z)o;~k-%+0K0g+L`Wala!$=ZV|z$e%>f0%XoLib%)!R^RoS+{!#X?h-6uu zF&&KxORdZU&EwQFITIRLo(7TA3W}y6X{?Y%y2j0It!ekU#<)$qghZtpcS>L3uh`Uj z7GY;6f$9qKynP#oS3$$a{p^{D+0oJQ71`1?OAn_m8)UGZmj3l*ZI)`V-a>MKGGFG< z&^jg#Ok%(hhm>hSrZ5;Qga4u(?^i>GiW_j9%_7M>j(^|Om$#{k+^*ULnEgzW_1gCICtAD^WpC`A z{9&DXkG#01Xo)U$OC(L5Y$DQ|Q4C6CjUKk1UkPj$nXH##J{c8e#K|&{mA*;b$r0E4 zUNo0jthwA(c&N1l=PEe8Rw_8cEl|-eya9z&H3#n`B$t#+aJ03RFMzrV@gowbe8v(c zIFM60^0&lCFO10NU4w@|61xiZ4CVXeaKjd;d?sv52XM*lS8XiVjgWpRB;&U_C0g+`6B5V&w|O6B*_q zsATxL!M}+$He)1eOWECce#eS@2n^xhlB4<_Nn?yCVEQWDs(r`|@2GqLe<#(|&P0U? z$7V5IgpWf09uIf_RazRwC?qEqRaHyL?iiS05UiGesJy%^>-C{{ypTBI&B0-iUYhk> zIk<5xpsuV@g|z(AZD+C-;A!fTG=df1=<%nxy(a(IS+U{ME4ZbDEBtcD_3V=icT6*_ z)>|J?>&6%nvHhZERBtjK+s4xnut*@>GAmA5m*OTp$!^CHTr}vM4n(X1Q*;{e-Rd2BCF-u@1ZGm z!S8hJ6L=Gl4T_SDa7Xx|-{4mxveJg=ctf`BJ*fy!yF6Dz&?w(Q_6B}WQVtNI!BVBC zKfX<>7vd6C96}XAQmF-Jd?1Q4eTfRB3q7hCh0f!(JkdWT5<{iAE#dKy*Jxq&3a1@~ z8C||Dn2mFNyrUV|<-)C^_y7@8c2Fz+2jrae9deBDu;U}tJ{^xAdxCD248(k;dCJ%o z`y3sADe>U%suxwwv~8A1+R$VB=Q?%U?4joI$um;aH+eCrBqpn- z%79D_7rb;R-;-9RTrwi9dPlg8&@tfWhhZ(Vx&1PQ+6(huX`;M9x~LrW~~#3{j0Bh2kDU$}@!fFQej4VGkJv?M4rU^x!RU zEwhu$!CA_iDjFjrJa`aocySDX16?~;+wgav;}Zut6Mg%C4>}8FL?8)Kgwc(Qlj{@#2Pt0?G`$h7P#M+qoXtlV@d}%c&OzO+QYKK`kyXaK{U(O^2DyIXCZlNQjt0^8~8JzNGrIxhj}}M z&~QZlbx%t;MJ(Vux;2tgNKGlAqphLq%pd}JG9uoVHUo?|hN{pLQ6Em%r*+7t^<);X zm~6=qChlNAVXNN*Sow->*4;}T;l;D1I-5T{Bif@4_}=>l`tK;qqDdt5zvisCKhMAH z#r}`)7VW?LZqfdmXQ%zo5bJ00{Xb9^YKrk0Nf|oIW*K@(=`o2Vndz}ZDyk{!u}PVx zzd--+_WC*U{~DH3{?GI64IB+@On&@9X>EUAo&L+G{L^dozaI4C3G#2wr~hseW@K&g zKWs{uHu-9Je!3;4pE>eBltKUXb^*hG8I&413)$J&{D4N%7PcloU6bn%jPxJyQL?g* z9g+YFFEDiE`8rW^laCNzQmi7CTnPfwyg3VDHRAl>h=In6jeaVOP@!-CP60j3+#vpL zEYmh_oP0{-gTe7Or`L6x)6w?77QVi~jD8lWN@3RHcm80iV%M1A!+Y6iHM)05iC64tb$X2lV_%Txk@0l^hZqi^%Z?#- zE;LE0uFx)R08_S-#(wC=dS&}vj6P4>5ZWjhthP=*Hht&TdLtKDR;rXEX4*z0h74FA zMCINqrh3Vq;s%3MC1YL`{WjIAPkVL#3rj^9Pj9Ss7>7duy!9H0vYF%>1jh)EPqvlr6h%R%CxDsk| z!BACz7E%j?bm=pH6Eaw{+suniuY7C9Ut~1cWfOX9KW9=H><&kQlinPV3h9R>3nJvK z4L9(DRM=x;R&d#a@oFY7mB|m8h4692U5eYfcw|QKwqRsshN(q^v$4$)HgPpAJDJ`I zkqjq(8Cd!K!+wCd=d@w%~e$=gdUgD&wj$LQ1r>-E=O@c ze+Z$x{>6(JA-fNVr)X;*)40Eym1TtUZI1Pwwx1hUi+G1Jlk~vCYeXMNYtr)1?qwyg zsX_e*$h?380O00ou?0R@7-Fc59o$UvyVs4cUbujHUA>sH!}L54>`e` zHUx#Q+Hn&Og#YVOuo*niy*GU3rH;%f``nk#NN5-xrZ34NeH$l`4@t);4(+0|Z#I>Y z)~Kzs#exIAaf--65L0UHT_SvV8O2WYeD>Mq^Y6L!Xu8%vnpofG@w!}R7M28?i1*T&zp3X4^OMCY6(Dg<-! zXmcGQrRgHXGYre7GfTJ)rhl|rs%abKT_Nt24_Q``XH{88NVPW+`x4ZdrMuO0iZ0g` z%p}y};~T5gbb9SeL8BSc`SO#ixC$@QhXxZ=B}L`tP}&k?1oSPS=4%{UOHe0<_XWln zwbl5cn(j-qK`)vGHY5B5C|QZd5)W7c@{bNVXqJ!!n$^ufc?N9C-BF2QK1(kv++h!>$QbAjq)_b$$PcJdV+F7hz0Hu@ zqj+}m0qn{t^tD3DfBb~0B36|Q`bs*xs|$i^G4uNUEBl4g;op-;Wl~iThgga?+dL7s zUP(8lMO?g{GcYpDS{NM!UA8Hco?#}eNEioRBHy4`mq!Pd-9@-97|k$hpEX>xoX+dY zDr$wfm^P&}Wu{!%?)U_(%Mn79$(ywvu*kJ9r4u|MyYLI_67U7%6Gd_vb##Nerf@>& z8W11z$$~xEZt$dPG}+*IZky+os5Ju2eRi;1=rUEeIn>t-AzC_IGM-IXWK3^6QNU+2pe=MBn4I*R@A%-iLDCOHTE-O^wo$sL_h{dcPl=^muAQb`_BRm};=cy{qSkui;`WSsj9%c^+bIDQ z0`_?KX0<-=o!t{u(Ln)v>%VGL z0pC=GB7*AQ?N7N{ut*a%MH-tdtNmNC+Yf$|KS)BW(gQJ*z$d{+{j?(e&hgTy^2|AR9vx1Xre2fagGv0YXWqtNkg*v%40v?BJBt|f9wX5 z{QTlCM}b-0{mV?IG>TW_BdviUKhtosrBqdfq&Frdz>cF~yK{P@(w{Vr7z2qKFwLhc zQuogKO@~YwyS9%+d-zD7mJG~@?EFJLSn!a&mhE5$_4xBl&6QHMzL?CdzEnC~C3$X@ zvY!{_GR06ep5;<#cKCSJ%srxX=+pn?ywDwtJ2{TV;0DKBO2t++B(tIO4)Wh`rD13P z4fE$#%zkd=UzOB74gi=-*CuID&Z3zI^-`4U^S?dHxK8fP*;fE|a(KYMgMUo`THIS1f!*6dOI2 zFjC3O=-AL`6=9pp;`CYPTdVX z8(*?V&%QoipuH0>WKlL8A*zTKckD!paN@~hh zmXzm~qZhMGVdQGd=AG8&20HW0RGV8X{$9LldFZYm zE?}`Q3i?xJRz43S?VFMmqRyvWaS#(~Lempg9nTM$EFDP(Gzx#$r)W&lpFKqcAoJh-AxEw$-bjW>`_+gEi z2w`99#UbFZGiQjS8kj~@PGqpsPX`T{YOj`CaEqTFag;$jY z8_{Wzz>HXx&G*Dx<5skhpETxIdhKH?DtY@b9l8$l?UkM#J-Snmts7bd7xayKTFJ(u zyAT&@6cAYcs{PBfpqZa%sxhJ5nSZBPji?Zlf&}#L?t)vC4X5VLp%~fz2Sx<*oN<7` z?ge=k<=X7r<~F7Tvp9#HB{!mA!QWBOf%EiSJ6KIF8QZNjg&x~-%e*tflL(ji_S^sO ztmib1rp09uon}RcsFi#k)oLs@$?vs(i>5k3YN%$T(5Or(TZ5JW9mA6mIMD08=749$ z!d+l*iu{Il7^Yu}H;lgw=En1sJpCKPSqTCHy4(f&NPelr31^*l%KHq^QE>z>Ks_bH zjbD?({~8Din7IvZeJ>8Ey=e;I?thpzD=zE5UHeO|neioJwG;IyLk?xOz(yO&0DTU~ z^#)xcs|s>Flgmp;SmYJ4g(|HMu3v7#;c*Aa8iF#UZo7CvDq4>8#qLJ|YdZ!AsH%^_7N1IQjCro

K7UpUK$>l@ zw`1S}(D?mUXu_C{wupRS-jiX~w=Uqqhf|Vb3Cm9L=T+w91Cu^ z*&Ty%sN?x*h~mJc4g~k{xD4ZmF%FXZNC;oVDwLZ_WvrnzY|{v8hc1nmx4^}Z;yriXsAf+Lp+OFLbR!&Ox?xABwl zu8w&|5pCxmu#$?Cv2_-Vghl2LZ6m7}VLEfR5o2Ou$x02uA-%QB2$c(c1rH3R9hesc zfpn#oqpbKuVsdfV#cv@5pV4^f_!WS+F>SV6N0JQ9E!T90EX((_{bSSFv9ld%I0&}9 zH&Jd4MEX1e0iqDtq~h?DBrxQX1iI0lIs<|kB$Yrh&cpeK0-^K%=FBsCBT46@h#yi!AyDq1V(#V}^;{{V*@T4WJ&U-NTq43w=|K>z8%pr_nC>%C(Wa_l78Ufib$r8Od)IIN=u>417 z`Hl{9A$mI5A(;+-Q&$F&h-@;NR>Z<2U;Y21>>Z;s@0V@SbkMQQj%_;~+qTuQ?c|AV zcWm3XZQHhP&R%QWarS%mJ!9R^&!_)*s(v+VR@I#QrAT}`17Y+l<`b-nvmDNW`De%y zrwTZ9EJrj1AFA>B`1jYDow}~*dfPs}IZMO3=a{Fy#IOILc8F0;JS4x(k-NSpbN@qM z`@aE_e}5{!$v3+qVs7u?sOV(y@1Os*Fgu`fCW9=G@F_#VQ%xf$hj0~wnnP0$hFI+@ zkQj~v#V>xn)u??YutKsX>pxKCl^p!C-o?+9;!Nug^ z{rP!|+KsP5%uF;ZCa5F;O^9TGac=M|=V z_H(PfkV1rz4jl?gJ(ArXMyWT4y(86d3`$iI4^l9`vLdZkzpznSd5Ikfrs8qcSy&>z zTIZgWZGXw0n9ibQxYWE@gI0(3#KA-dAdPcsL_|hg2@~C!VZDM}5;v_Nykfq!*@*Zf zE_wVgx82GMDryKO{U{D>vSzSc%B~|cjDQrt5BN=Ugpsf8H8f1lR4SGo#hCuXPL;QQ z#~b?C4MoepT3X`qdW2dNn& zo8)K}%Lpu>0tQei+{>*VGErz|qjbK#9 zvtd8rcHplw%YyQCKR{kyo6fgg!)6tHUYT(L>B7er5)41iG`j$qe*kSh$fY!PehLcD zWeKZHn<492B34*JUQh=CY1R~jT9Jt=k=jCU2=SL&&y5QI2uAG2?L8qd2U(^AW#{(x zThSy=C#>k+QMo^7caQcpU?Qn}j-`s?1vXuzG#j8(A+RUAY})F@=r&F(8nI&HspAy4 z4>(M>hI9c7?DCW8rw6|23?qQMSq?*Vx?v30U%luBo)B-k2mkL)Ljk5xUha3pK>EEj z@(;tH|M@xkuN?gsz;*bygizwYR!6=(Xgcg^>WlGtRYCozY<rFX2E>kaZo)O<^J7a`MX8Pf`gBd4vrtD|qKn&B)C&wp0O-x*@-|m*0egT=-t@%dD zgP2D+#WPptnc;_ugD6%zN}Z+X4=c61XNLb7L1gWd8;NHrBXwJ7s0ce#lWnnFUMTR& z1_R9Fin4!d17d4jpKcfh?MKRxxQk$@)*hradH2$3)nyXep5Z;B z?yX+-Bd=TqO2!11?MDtG0n(*T^!CIiF@ZQymqq1wPM_X$Iu9-P=^}v7npvvPBu!d$ z7K?@CsA8H38+zjA@{;{kG)#AHME>Ix<711_iQ@WWMObXyVO)a&^qE1GqpP47Q|_AG zP`(AD&r!V^MXQ^e+*n5~Lp9!B+#y3#f8J^5!iC@3Y@P`;FoUH{G*pj*q7MVV)29+j z>BC`a|1@U_v%%o9VH_HsSnM`jZ-&CDvbiqDg)tQEnV>b%Ptm)T|1?TrpIl)Y$LnG_ zzKi5j2Fx^K^PG1=*?GhK;$(UCF-tM~^=Z*+Wp{FSuy7iHt9#4n(sUuHK??@v+6*|10Csdnyg9hAsC5_OrSL;jVkLlf zHXIPukLqbhs~-*oa^gqgvtpgTk_7GypwH><53riYYL*M=Q@F-yEPLqQ&1Sc zZB%w}T~RO|#jFjMWcKMZccxm-SL)s_ig?OC?y_~gLFj{n8D$J_Kw%{r0oB8?@dWzn zB528d-wUBQzrrSSLq?fR!K%59Zv9J4yCQhhDGwhptpA5O5U?Hjqt>8nOD zi{)0CI|&Gu%zunGI*XFZh(ix)q${jT8wnnzbBMPYVJc4HX*9d^mz|21$=R$J$(y7V zo0dxdbX3N#=F$zjstTf*t8vL)2*{XH!+<2IJ1VVFa67|{?LP&P41h$2i2;?N~RA30LV`BsUcj zfO9#Pg1$t}7zpv#&)8`mis3~o+P(DxOMgz-V*(?wWaxi?R=NhtW}<#^Z?(BhSwyar zG|A#Q7wh4OfK<|DAcl9THc-W4*>J4nTevsD%dkj`U~wSUCh15?_N@uMdF^Kw+{agk zJ`im^wDqj`Ev)W3k3stasP`88-M0ZBs7;B6{-tSm3>I@_e-QfT?7|n0D~0RRqDb^G zyHb=is;IwuQ&ITzL4KsP@Z`b$d%B0Wuhioo1CWttW8yhsER1ZUZzA{F*K=wmi-sb#Ju+j z-l@In^IKnb{bQG}Ps>+Vu_W#grNKNGto+yjA)?>0?~X`4I3T@5G1)RqGUZuP^NJCq&^HykuYtMDD8qq+l8RcZNJsvN(10{ zQ1$XcGt}QH-U^WU!-wRR1d--{B$%vY{JLWIV%P4-KQuxxDeJaF#{eu&&r!3Qu{w}0f--8^H|KwE>)ORrcR+2Qf zb})DRcH>k0zWK8@{RX}NYvTF;E~phK{+F;MkIP$)T$93Ba2R2TvKc>`D??#mv9wg$ zd~|-`Qx5LwwsZ2hb*Rt4S9dsF%Cny5<1fscy~)d;0m2r$f=83<->c~!GNyb!U)PA; zq^!`@@)UaG)Ew(9V?5ZBq#c%dCWZrplmuM`o~TyHjAIMh0*#1{B>K4po-dx$Tk-Cq z=WZDkP5x2W&Os`N8KiYHRH#UY*n|nvd(U>yO=MFI-2BEp?x@=N<~CbLJBf6P)}vLS?xJXYJ2^<3KJUdrwKnJnTp{ zjIi|R=L7rn9b*D#Xxr4*R<3T5AuOS+#U8hNlfo&^9JO{VbH!v9^JbK=TCGR-5EWR@ zN8T-_I|&@A}(hKeL4_*eb!1G8p~&_Im8|wc>Cdir+gg90n1dw?QaXcx6Op_W1r=axRw>4;rM*UOpT#Eb9xU1IiWo@h?|5uP zka>-XW0Ikp@dIe;MN8B01a7+5V@h3WN{J=HJ*pe0uwQ3S&MyWFni47X32Q7SyCTNQ z+sR!_9IZa5!>f&V$`q!%H8ci!a|RMx5}5MA_kr+bhtQy{-^)(hCVa@I!^TV4RBi zAFa!Nsi3y37I5EK;0cqu|9MRj<^r&h1lF}u0KpKQD^5Y+LvFEwM zLU@@v4_Na#Axy6tn3P%sD^5P#<7F;sd$f4a7LBMk zGU^RZHBcxSA%kCx*eH&wgA?Qwazm8>9SCSz_!;MqY-QX<1@p$*T8lc?@`ikEqJ>#w zcG``^CoFMAhdEXT9qt47g0IZkaU)4R7wkGs^Ax}usqJ5HfDYAV$!=6?>J6+Ha1I<5 z|6=9soU4>E))tW$<#>F ziZ$6>KJf0bPfbx_)7-}tMINlc=}|H+$uX)mhC6-Hz+XZxsKd^b?RFB6et}O#+>Wmw9Ec9) z{q}XFWp{3@qmyK*Jvzpyqv57LIR;hPXKsrh{G?&dRjF%Zt5&m20Ll?OyfUYC3WRn{cgQ?^V~UAv+5 z&_m#&nIwffgX1*Z2#5^Kl4DbE#NrD&Hi4|7SPqZ}(>_+JMz=s|k77aEL}<=0Zfb)a z%F(*L3zCA<=xO)2U3B|pcTqDbBoFp>QyAEU(jMu8(jLA61-H!ucI804+B!$E^cQQa z)_ERrW3g!B9iLb3nn3dlkvD7KsY?sRvls3QC0qPi>o<)GHx%4Xb$5a3GBTJ(k@`e@ z$RUa^%S15^1oLEmA=sayrP5;9qtf!Z1*?e$ORVPsXpL{jL<6E)0sj&swP3}NPmR%FM?O>SQgN5XfHE< zo(4#Cv11(%Nnw_{_Ro}r6=gKd{k?NebJ~<~Kv0r(r0qe4n3LFx$5%x(BKvrz$m?LG zjLIc;hbj0FMdb9aH9Lpsof#yG$(0sG2%RL;d(n>;#jb!R_+dad+K;Ccw!|RY?uS(a zj~?=&M!4C(5LnlH6k%aYvz@7?xRa^2gml%vn&eKl$R_lJ+e|xsNfXzr#xuh(>`}9g zLHSyiFwK^-p!;p$yt7$F|3*IfO3Mlu9e>Dpx8O`37?fA`cj`C0B-m9uRhJjs^mRp# zWB;Aj6|G^1V6`jg7#7V9UFvnB4((nIwG?k%c7h`?0tS8J3Bn0t#pb#SA}N-|45$-j z$R>%7cc2ebAClXc(&0UtHX<>pd)akR3Kx_cK+n<}FhzmTx!8e9^u2e4%x{>T6pQ`6 zO182bh$-W5A3^wos0SV_TgPmF4WUP-+D25KjbC{y_6W_9I2_vNKwU(^qSdn&>^=*t z&uvp*@c8#2*paD!ZMCi3;K{Na;I4Q35zw$YrW5U@Kk~)&rw;G?d7Q&c9|x<Hg|CNMsxovmfth*|E*GHezPTWa^Hd^F4!B3sF;)? z(NaPyAhocu1jUe(!5Cy|dh|W2=!@fNmuNOzxi^tE_jAtzNJ0JR-avc_H|ve#KO}#S z#a(8secu|^Tx553d4r@3#6^MHbH)vmiBpn0X^29xEv!Vuh1n(Sr5I0V&`jA2;WS|Y zbf0e}X|)wA-Pf5gBZ>r4YX3Mav1kKY(ulAJ0Q*jB)YhviHK)w!TJsi3^dMa$L@^{` z_De`fF4;M87vM3Ph9SzCoCi$#Fsd38u!^0#*sPful^p5oI(xGU?yeYjn;Hq1!wzFk zG&2w}W3`AX4bxoVm03y>ts{KaDf!}b&7$(P4KAMP=vK5?1In^-YYNtx1f#}+2QK@h zeSeAI@E6Z8a?)>sZ`fbq9_snl6LCu6g>o)rO;ijp3|$vig+4t} zylEo7$SEW<_U+qgVcaVhk+4k+C9THI5V10qV*dOV6pPtAI$)QN{!JRBKh-D zk2^{j@bZ}yqW?<#VVuI_27*cI-V~sJiqQv&m07+10XF+#ZnIJdr8t`9s_EE;T2V;B z4UnQUH9EdX%zwh-5&wflY#ve!IWt0UE-My3?L#^Bh%kcgP1q{&26eXLn zTkjJ*w+(|_>Pq0v8{%nX$QZbf)tbJaLY$03;MO=Ic-uqYUmUCuXD>J>o6BCRF=xa% z3R4SK9#t1!K4I_d>tZgE>&+kZ?Q}1qo4&h%U$GfY058s%*=!kac{0Z+4Hwm!)pFLR zJ+5*OpgWUrm0FPI2ib4NPJ+Sk07j(`diti^i#kh&f}i>P4~|d?RFb#!JN)~D@)beox}bw?4VCf^y*`2{4`-@%SFTry2h z>9VBc9#JxEs1+0i2^LR@B1J`B9Ac=#FW=(?2;5;#U$0E0UNag_!jY$&2diQk_n)bT zl5Me_SUvqUjwCqmVcyb`igygB_4YUB*m$h5oeKv3uIF0sk}~es!{D>4r%PC*F~FN3owq5e0|YeUTSG#Vq%&Gk7uwW z0lDo#_wvflqHeRm*}l?}o;EILszBt|EW*zNPmq#?4A+&i0xx^?9obLyY4xx=Y9&^G;xYXYPxG)DOpPg!i_Ccl#3L}6xAAZzNhPK1XaC_~ z!A|mlo?Be*8Nn=a+FhgpOj@G7yYs(Qk(8&|h@_>w8Y^r&5nCqe0V60rRz?b5%J;GYeBqSAjo|K692GxD4` zRZyM2FdI+-jK2}WAZTZ()w_)V{n5tEb@>+JYluDozCb$fA4H)$bzg(Ux{*hXurjO^ zwAxc+UXu=&JV*E59}h3kzQPG4M)X8E*}#_&}w*KEgtX)cU{vm9b$atHa;s>| z+L6&cn8xUL*OSjx4YGjf6{Eq+Q3{!ZyhrL&^6Vz@jGbI%cAM9GkmFlamTbcQGvOlL zmJ?(FI)c86=JEs|*;?h~o)88>12nXlpMR4@yh%qdwFNpct;vMlc=;{FSo*apJ;p}! zAX~t;3tb~VuP|ZW;z$=IHf->F@Ml)&-&Bnb{iQyE#;GZ@C$PzEf6~q}4D>9jic@mTO5x76ulDz@+XAcm35!VSu zT*Gs>;f0b2TNpjU_BjHZ&S6Sqk6V1370+!eppV2H+FY!q*n=GHQ!9Rn6MjY!Jc77A zG7Y!lFp8?TIHN!LXO?gCnsYM-gQxsm=Ek**VmZu7vnuufD7K~GIxfxbsQ@qv2T zPa`tvHB$fFCyZl>3oYg?_wW)C>^_iDOc^B7klnTOoytQH18WkOk)L2BSD0r%xgRSW zQS9elF^?O=_@|58zKLK;(f77l-Zzu}4{fXed2saq!5k#UZAoDBqYQS{sn@j@Vtp|$ zG%gnZ$U|9@u#w1@11Sjl8ze^Co=)7yS(}=;68a3~g;NDe_X^}yJj;~s8xq9ahQ5_r zxAlTMnep*)w1e(TG%tWsjo3RR;yVGPEO4V{Zp?=a_0R#=V^ioQu4YL=BO4r0$$XTX zZfnw#_$V}sDAIDrezGQ+h?q24St0QNug_?{s-pI(^jg`#JRxM1YBV;a@@JQvH8*>> zIJvku74E0NlXkYe_624>znU0J@L<-c=G#F3k4A_)*;ky!C(^uZfj%WB3-*{*B$?9+ zDm$WFp=0(xnt6`vDQV3Jl5f&R(Mp};;q8d3I%Kn>Kx=^;uSVCw0L=gw53%Bp==8Sw zxtx=cs!^-_+i{2OK`Q;913+AXc_&Z5$@z3<)So0CU3;JAv=H?@Zpi~riQ{z-zLtVL z!oF<}@IgJp)Iyz1zVJ42!SPHSkjYNS4%ulVVIXdRuiZ@5Mx8LJS}J#qD^Zi_xQ@>DKDr-_e#>5h3dtje*NcwH_h;i{Sx7}dkdpuW z(yUCjckQsagv*QGMSi9u1`Z|V^}Wjf7B@q%j2DQXyd0nOyqg%m{CK_lAoKlJ7#8M} z%IvR?Vh$6aDWK2W!=i?*<77q&B8O&3?zP(Cs@kapc)&p7En?J;t-TX9abGT#H?TW? ztO5(lPKRuC7fs}zwcUKbRh=7E8wzTsa#Z{a`WR}?UZ%!HohN}d&xJ=JQhpO1PI#>X zHkb>pW04pU%Bj_mf~U}1F1=wxdBZu1790>3Dm44bQ#F=T4V3&HlOLsGH)+AK$cHk6 zia$=$kog?)07HCL*PI6}DRhpM^*%I*kHM<#1Se+AQ!!xyhcy6j7`iDX7Z-2i73_n# zas*?7LkxS-XSqv;YBa zW_n*32D(HTYQ0$feV_Fru1ZxW0g&iwqixPX3=9t4o)o|kOo79V$?$uh?#8Q8e>4e)V6;_(x&ViUVxma+i25qea;d-oK7ouuDsB^ab{ zu1qjQ%`n56VtxBE#0qAzb7lph`Eb-}TYpXB!H-}3Ykqyp`otprp7{VEuW*^IR2n$Fb99*nAtqT&oOFIf z@w*6>YvOGw@Ja?Pp1=whZqydzx@9X4n^2!n83C5{C?G@|E?&$?p*g68)kNvUTJ)I6 z1Q|(#UuP6pj78GUxq11m-GSszc+)X{C2eo-?8ud9sB=3(D47v?`JAa{V(IF zPZQ_0AY*9M97>Jf<o%#O_%Wq}8>YM=q0|tGY+hlXcpE=Z4Od z`NT7Hu2hnvRoqOw@g1f=bv`+nba{GwA$Ak0INlqI1k<9!x_!sL()h?hEWoWrdU3w` zZ%%)VR+Bc@_v!C#koM1p-3v_^L6)_Ktj4HE>aUh%2XZE@JFMOn)J~c`_7VWNb9c-N z2b|SZMR4Z@E7j&q&9(6H3yjEu6HV7{2!1t0lgizD;mZ9$r(r7W5G$ky@w(T_dFnOD z*p#+z$@pKE+>o@%eT(2-p_C}wbQ5s(%Sn_{$HDN@MB+Ev?t@3dPy`%TZ!z}AThZSu zN<1i$siJhXFdjV zP*y|V<`V8t=h#XTRUR~5`c`Z9^-`*BZf?WAehGdg)E2Je)hqFa!k{V(u+(hTf^Yq& zoruUh2(^3pe)2{bvt4&4Y9CY3js)PUHtd4rVG57}uFJL)D(JfSIo^{P=7liFXG zq5yqgof0V8paQcP!gy+;^pp-DA5pj=gbMN0eW=-eY+N8~y+G>t+x}oa!5r>tW$xhI zPQSv=pi;~653Gvf6~*JcQ%t1xOrH2l3Zy@8AoJ+wz@daW@m7?%LXkr!bw9GY@ns3e zSfuWF_gkWnesv?s3I`@}NgE2xwgs&rj?kH-FEy82=O8`+szN ziHch`vvS`zNfap14!&#i9H@wF7}yIPm=UB%(o(}F{wsZ(wA0nJ2aD^@B41>>o-_U6 zUqD~vdo48S8~FTb^+%#zcbQiiYoDKYcj&$#^;Smmb+Ljp(L=1Kt_J!;0s%1|JK}Wi z;={~oL!foo5n8=}rs6MmUW~R&;SIJO3TL4Ky?kh+b2rT9B1Jl4>#Uh-Bec z`Hsp<==#UEW6pGPhNk8H!!DUQR~#F9jEMI6T*OWfN^Ze&X(4nV$wa8QUJ>oTkruH# zm~O<`J7Wxseo@FqaZMl#Y(mrFW9AHM9Kb|XBMqaZ2a)DvJgYipkDD_VUF_PKd~dT7 z#02}bBfPn9a!X!O#83=lbJSK#E}K&yx-HI#T6ua)6o0{|={*HFusCkHzs|Fn&|C3H zBck1cmfcWVUN&i>X$YU^Sn6k2H;r3zuXbJFz)r5~3$d$tUj(l1?o={MM){kjgqXRO zc5R*#{;V7AQh|G|)jLM@wGAK&rm2~@{Pewv#06pHbKn#wL0P6F1!^qw9g&cW3Z=9} zj)POhOlwsh@eF=>z?#sIs*C-Nl(yU!#DaiaxhEs#iJqQ8w%(?+6lU02MYSeDkr!B- zPjMv+on6OLXgGnAtl(ao>|X2Y8*Hb}GRW5}-IzXnoo-d0!m4Vy$GS!XOLy>3_+UGs z2D|YcQx@M#M|}TDOetGi{9lGo9m-=0-^+nKE^*?$^uHkxZh}I{#UTQd;X!L+W@jm( zDg@N4+lUqI92o_rNk{3P>1gxAL=&O;x)ZT=q1mk0kLlE$WeWuY_$0`0jY-Kkt zP*|m3AF}Ubd=`<>(Xg0har*_@x2YH}bn0Wk*OZz3*e5;Zc;2uBdnl8?&XjupbkOeNZsNh6pvsq_ydmJI+*z**{I{0K)-;p1~k8cpJXL$^t!-`E}=*4G^-E8>H!LjTPxSx zcF+cS`ommfKMhNSbas^@YbTpH1*RFrBuATUR zt{oFWSk^$xU&kbFQ;MCX22RAN5F6eq9UfR$ut`Jw--p2YX)A*J69m^!oYfj2y7NYcH6&r+0~_sH^c^nzeN1AU4Ga7=FlR{S|Mm~MpzY0$Z+p2W(a={b-pR9EO1Rs zB%KY|@wLcAA@)KXi!d2_BxrkhDn`DT1=Dec}V!okd{$+wK z4E{n8R*xKyci1(CnNdhf$Dp2(Jpof0-0%-38X=Dd9PQgT+w%Lshx9+loPS~MOm%ZT zt%2B2iL_KU_ita%N>xjB!#71_3=3c}o zgeW~^U_ZTJQ2!PqXulQd=3b=XOQhwATK$y(9$#1jOQ4}4?~l#&nek)H(04f(Sr=s| zWv7Lu1=%WGk4FSw^;;!8&YPM)pQDCY9DhU`hMty1@sq1=Tj7bFsOOBZOFlpR`W>-J$-(kezWJj;`?x-v>ev{*8V z8p|KXJPV$HyQr1A(9LVrM47u-XpcrIyO`yWvx1pVYc&?154aneRpLqgx)EMvRaa#|9?Wwqs2+W8n5~79G z(}iCiLk;?enn}ew`HzhG+tu+Ru@T+K5juvZN)wY;x6HjvqD!&!)$$;1VAh~7fg0K| zEha#aN=Yv|3^~YFH}cc38ovVb%L|g@9W6fo(JtT6$fa?zf@Ct88e}m?i)b*Jgc{fl zExfdvw-BYDmH6>(4QMt#p0;FUIQqkhD}aH?a7)_%JtA~soqj{ppP_82yi9kaxuK>~ ze_)Zt>1?q=ZH*kF{1iq9sr*tVuy=u>Zev}!gEZx@O6-fjyu9X00gpIl-fS_pzjpqJ z1yqBmf9NF!jaF<+YxgH6oXBdK)sH(>VZ)1siyA$P<#KDt;8NT*l_0{xit~5j1P)FN zI8hhYKhQ)i z37^aP13B~u65?sg+_@2Kr^iWHN=U;EDSZ@2W2!5ALhGNWXnFBY%7W?1 z=HI9JzQ-pLKZDYTv<0-lt|6c-RwhxZ)mU2Os{bsX_i^@*fKUj8*aDO5pks=qn3Dv6 zwggpKLuyRCTVPwmw1r}B#AS}?X7b837UlXwp~E2|PJw2SGVueL7){Y&z!jL!XN=0i zU^Eig`S2`{+gU$68aRdWx?BZ{sU_f=8sn~>s~M?GU~`fH5kCc; z8ICp+INM3(3{#k32RZdv6b9MQYdZXNuk7ed8;G?S2nT+NZBG=Tar^KFl2SvhW$bGW#kdWL-I)s_IqVnCDDM9fm8g;P;8 z7t4yZn3^*NQfx7SwmkzP$=fwdC}bafQSEF@pd&P8@H#`swGy_rz;Z?Ty5mkS%>m#% zp_!m9e<()sfKiY(nF<1zBz&&`ZlJf6QLvLhl`_``%RW&{+O>Xhp;lwSsyRqGf=RWd zpftiR`={2(siiPAS|p}@q=NhVc0ELprt%=fMXO3B)4ryC2LT(o=sLM7hJC!}T1@)E zA3^J$3&1*M6Xq>03FX`R&w*NkrZE?FwU+Muut;>qNhj@bX17ZJxnOlPSZ=Zeiz~T_ zOu#yc3t6ONHB;?|r4w+pI)~KGN;HOGC)txxiUN8#mexj+W(cz%9a4sx|IRG=}ia zuEBuba3AHsV2feqw-3MvuL`I+2|`Ud4~7ZkN=JZ;L20|Oxna5vx1qbIh#k2O4$RQF zo`tL()zxaqibg^GbB+BS5#U{@K;WWQj~GcB1zb}zJkPwH|5hZ9iH2308!>_;%msji zJHSL~s)YHBR=Koa1mLEOHos*`gp=s8KA-C zu0aE+W!#iJ*0xqKm3A`fUGy#O+X+5W36myS>Uh2!R*s$aCU^`K&KKLCCDkejX2p=5 z%o7-fl03x`gaSNyr?3_JLv?2RLS3F*8ub>Jd@^Cc17)v8vYEK4aqo?OS@W9mt%ITJ z9=S2%R8M){CugT@k~~0x`}Vl!svYqX=E)c_oU6o}#Hb^%G1l3BudxA{F*tbjG;W_>=xV73pKY53v%>I)@D36I_@&p$h|Aw zonQS`07z_F#@T-%@-Tb|)7;;anoD_WH>9ewFy(ZcEOM$#Y)8>qi7rCnsH9GO-_7zF zu*C87{Df1P4TEOsnzZ@H%&lvV(3V@;Q!%+OYRp`g05PjY^gL$^$-t0Y>H*CDDs?FZly*oZ&dxvsxaUWF!{em4{A>n@vpXg$dwvt@_rgmHF z-MER`ABa8R-t_H*kv>}CzOpz;!>p^^9ztHMsHL|SRnS<-y5Z*r(_}c4=fXF`l^-i}>e7v!qs_jv zqvWhX^F=2sDNWA9c@P0?lUlr6ecrTKM%pNQ^?*Lq?p-0~?_j50xV%^(+H>sMul#Tw zeciF*1=?a7cI(}352%>LO96pD+?9!fNyl^9v3^v&Y4L)mNGK0FN43&Xf8jUlxW1Bw zyiu2;qW-aGNhs=zbuoxnxiwZ3{PFZM#Kw)9H@(hgX23h(`Wm~m4&TvoZoYp{plb^> z_#?vXcxd>r7K+1HKJvhed>gtK`TAbJUazUWQY6T~t2af%#<+Veyr%7-#*A#@&*;@g58{i|E%6yC_InGXCOd{L0;$)z#?n7M`re zh!kO{6=>7I?*}czyF7_frt#)s1CFJ_XE&VrDA?Dp3XbvF{qsEJgb&OLSNz_5g?HpK z9)8rsr4JN!Af3G9!#Qn(6zaUDqLN(g2g8*M)Djap?WMK9NKlkC)E2|-g|#-rp%!Gz zAHd%`iq|81efi93m3yTBw3g0j#;Yb2X{mhRAI?&KDmbGqou(2xiRNb^sV}%%Wu0?< z?($L>(#BO*)^)rSgyNRni$i`R4v;GhlCZ8$@e^ROX(p=2_v6Y!%^As zu022)fHdv_-~Yu_H6WVPLpHQx!W%^6j)cBhS`O3QBW#x(eX54d&I22op(N59b*&$v zFiSRY6rOc^(dgSV1>a7-5C;(5S5MvKcM2Jm-LD9TGqDpP097%52V+0>Xqq!! zq4e3vj53SE6i8J`XcQB|MZPP8j;PAOnpGnllH6#Ku~vS42xP*Nz@~y%db7Xi8s09P z1)e%8ys6&M8D=Dt6&t`iKG_4X=!kgRQoh%Z`dc&mlOUqXk-k`jKv9@(a^2-Upw>?< zt5*^DV~6Zedbec4NVl($2T{&b)zA@b#dUyd>`2JC0=xa_fIm8{5um zr-!ApXZhC8@=vC2WyxO|!@0Km)h8ep*`^he92$@YwP>VcdoS5OC^s38e#7RPsg4j+ zbVGG}WRSET&ZfrcR(x~k8n1rTP%CnfUNKUonD$P?FtNFF#cn!wEIab-;jU=B1dHK@ z(;(yAQJ`O$sMn>h;pf^8{JISW%d+@v6@CnXh9n5TXGC}?FI9i-D0OMaIg&mAg=0Kn zNJ7oz5*ReJukD55fUsMuaP+H4tDN&V9zfqF@ zr=#ecUk9wu{0;!+gl;3Bw=Vn^)z$ahVhhw)io!na&9}LmWurLb0zubxK=UEnU*{5P z+SP}&*(iBKSO4{alBHaY^)5Q=mZ+2OwIooJ7*Q5XJ+2|q`9#f?6myq!&oz?klihLq z4C)$XP!BNS0G_Z1&TM>?Jk{S~{F3n83ioli=IO6f%wkvCl(RFFw~j0tb{GvXTx>*sB0McY0s&SNvj4+^h`9nJ_wM>F!Uc>X}9PifQekn0sKI2SAJP!a4h z5cyGTuCj3ZBM^&{dRelIlT^9zcfaAuL5Y~bl!ppSf`wZbK$z#6U~rdclk``e+!qhe z6Qspo*%<)eu6?C;Bp<^VuW6JI|Ncvyn+LlSl;Mp22Bl7ARQ0Xc24%29(ZrdsIPw&-=yHQ7_Vle|5h>AST0 zUGX2Zk34vp?U~IHT|;$U86T+UUHl_NE4m|}>E~6q``7hccCaT^#y+?wD##Q%HwPd8 zV3x4L4|qqu`B$4(LXqDJngNy-{&@aFBvVsywt@X^}iH7P%>bR?ciC$I^U-4Foa`YKI^qDyGK7k%E%c_P=yzAi`YnxGA%DeNd++j3*h^ z=rn>oBd0|~lZ<6YvmkKY*ZJlJ;Im0tqgWu&E92eqt;+NYdxx`eS(4Hw_Jb5|yVvBg z*tbdY^!AN;luEyN4VRhS@-_DC{({ziH{&Z}iGElSV~qvT>L-8G%+yEL zX#MFOhj{InyKG=mvW-<1B@c-}x$vA(nU?>S>0*eN#!SLzQ)Ex7fvQ)S4D<8|I#N$3 zT5Ei`Z?cxBODHX8(Xp73v`IsAYC@9b;t}z0wxVuQSY1J^GRwDPN@qbM-ZF48T$GZ< z8WU+;Pqo?{ghI-KZ-i*ydXu`Ep0Xw^McH_KE9J0S7G;x8Fe`DVG?j3Pv=0YzJ}yZR z%2=oqHiUjvuk0~Ca>Kol4CFi0_xQT~;_F?=u+!kIDl-9g`#ZNZ9HCy17Ga1v^Jv9# z{T4Kb1-AzUxq*MutfOWWZgD*HnFfyYg0&e9f(5tZ>krPF6{VikNeHoc{linPPt#Si z&*g>(c54V8rT_AX!J&bNm-!umPvOR}vDai#`CX___J#=zeB*{4<&2WpaDncZsOkp* zsg<%@@rbrMkR_ux9?LsQxzoBa1s%$BBn6vk#{&&zUwcfzeCBJUwFYSF$08qDsB;gWQN*g!p8pxjofWbqNSZOEKOaTx@+* zwdt5*Q47@EOZ~EZL9s?1o?A%9TJT=Ob_13yyugvPg*e&ZU(r6^k4=2+D-@n=Hv5vu zSXG|hM(>h9^zn=eQ=$6`JO&70&2|%V5Lsx>)(%#;pcOfu>*nk_3HB_BNaH$`jM<^S zcSftDU1?nL;jy)+sfonQN}(}gUW?d_ikr*3=^{G)=tjBtEPe>TO|0ddVB zTklrSHiW+!#26frPXQQ(YN8DG$PZo?(po(QUCCf_OJC`pw*uey00%gmH!`WJkrKXj2!#6?`T25mTu9OJp2L8z3! z=arrL$ZqxuE{%yV)14Kd>k}j7pxZ6#$Dz8$@WV5p8kTqN<-7W)Q7Gt2{KoOPK_tZ| zf2WG~O5@{qPI+W<4f_;reuFVdO^5`ADC1!JQE|N`s3cq@(0WB!n0uh@*c{=LAd;~} zyGK@hbF-Oo+!nN)@i*O(`@FA#u?o=~e{`4O#5}z&=UkU*50fOrzi11D^&FOqe>wii z?*k+2|EcUs;Gx{!@KBT~>PAwLrIDT7Th=Utu?~?np@t^gFs?zgX=D${RwOY^WGh-+ z+#4$066ISh8eYW#FXWp~S`<*%O^ZuItL1Tyqt8#tZ zY120E;^VG`!lZn&3sPd$RkdHpU#|w+bYV)pJC|SH9g%|5IkxVTQcBA4CL0}$&}ef@ zW^Vtj%M;;_1xxP9x#ex17&4N*{ksO*_4O}xYu(p*JkL#yr}@7b)t5X?%CY<+s5_MJ zuiqt+N_;A(_)%lumoyRFixWa-M7qK_9s6<1X?JDa9fP!+_6u~~M$5L=ipB=7(j#f< zZ34J%=bs549%~_mA(|={uZNs_0?o7;-LBP(ZRnkd{-^|2|=4vUTmtByHL8 zEph`(LSEzQj68a+`d$V<45J7cyv^#|^|%fD#si1Nx!4NW*`l*{->HEWNh6-|g>-=r zXmQ|-i}Ku$ndUeHQ^&ieT!Lf}vf6GaqW9$DJ2NWrqwPY%%4nip$@vK$nRp*_C-v<| zuKz~ZyN&<%!NS26&x?jhy+@awJipMQ-8(X4#Ae5??U<1QMt1l9R=w9fAnEF}NYu$2 z>6}Vkc zIb*A?G*z8^IvibmBKn_u^5&T_1oey0gZS2~obf(#xk=erZGTEdQnt3DMGM+0oPwss zj5zXD;(oWhB_T@~Ig#9@v)AKtXu3>Inmgf@A|-lD-1U>cNyl3h?ADD9)GG4}zUGPk zZzaXe!~Kf?<~@$G?Uql3t8jy9{2!doq4=J}j9ktTxss{p6!9UdjyDERlA*xZ!=Q)KDs5O)phz>Vq3BNGoM(H|=1*Q4$^2fTZw z(%nq1P|5Rt81}SYJpEEzMPl5VJsV5&4e)ZWKDyoZ>1EwpkHx-AQVQc8%JMz;{H~p{=FXV>jIxvm4X*qv52e?Y-f%DJ zxEA165GikEASQ^fH6K#d!Tpu2HP{sFs%E=e$gYd$aj$+xue6N+Wc(rAz~wUsk2`(b z8Kvmyz%bKQxpP}~baG-rwYcYCvkHOi zlkR<=>ZBTU*8RF_d#Bl@zZsRIhx<%~Z@Z=ik z>adw3!DK(8R|q$vy{FTxw%#xliD~6qXmY^7_9kthVPTF~Xy1CfBqbU~?1QmxmU=+k z(ggxvEuA;0e&+ci-zQR{-f7aO{O(Pz_OsEjLh_K>MbvoZ4nxtk5u{g@nPv)cgW_R} z9}EA4K4@z0?7ue}Z(o~R(X&FjejUI2g~08PH1E4w>9o{)S(?1>Z0XMvTb|;&EuyOE zGvWNpYX)Nv<8|a^;1>bh#&znEcl-r!T#pn= z4$?Yudha6F%4b>*8@=BdtXXY4N+`U4Dmx$}>HeVJk-QdTG@t!tVT#0(LeV0gvqyyw z2sEp^9eY0N`u10Tm4n8No&A=)IeEC|gnmEXoNSzu!1<4R<%-9kY_8~5Ej?zRegMn78wuMs#;i&eUA0Zk_RXQ3b&TT} z;SCI=7-FUB@*&;8|n>(_g^HGf3@QODE3LpmX~ELnymQm{Sx9xrKS zK29p~?v@R$0=v6Dr5aW>-!{+h@?Q58|Kz8{{W`%J+lDAdb&M5VHrX_mDY;1-JLnf)ezmPau$)1;=`-FU=-r-83tX=C`S#}GZufju zQ>sXNT0Ny=k@nc%cFnvA_i4SC)?_ORXHq8B4D%el1uPX`c~uG#S1M7C+*MMqLw78E zhY2dI8@+N^qrMI1+;TUda(vGqGSRyU{Fnm`aqrr7bz42c5xsOO-~oZpkzorD1g}Y<6rk&3>PsSGy}W?MtqFky@A(X# zIuNZK0cK?^=;PUAu>j0#HtjbHCV*6?jzA&OoE$*Jlga*}LF`SF?WLhv1O|zqC<>*> zYB;#lsYKx0&kH@BFpW8n*yDcc6?;_zaJs<-jPSkCsSX-!aV=P5kUgF@Nu<{a%#K*F z134Q{9|YX7X(v$62_cY3^G%t~rD>Q0z@)1|zs)vjJ6Jq9;7#Ki`w+eS**En?7;n&7 zu==V3T&eFboN3ZiMx3D8qYc;VjFUk_H-WWCau(VFXSQf~viH0L$gwD$UfFHqNcgN`x}M+YQ6RnN<+@t>JUp#)9YOkqst-Ga?{FsDpEeX0(5v{0J~SEbWiL zXC2}M4?UH@u&|;%0y`eb33ldo4~z-x8zY!oVmV=c+f$m?RfDC35mdQ2E>Pze7KWP- z>!Bh<&57I+O_^s}9Tg^k)h7{xx@0a0IA~GAOt2yy!X%Q$1rt~LbTB6@Du!_0%HV>N zlf)QI1&gvERKwso23mJ!Ou6ZS#zCS5W`gxE5T>C#E|{i<1D35C222I33?Njaz`On7 zi<+VWFP6D{e-{yiN#M|Jgk<44u1TiMI78S5W`Sdb5f+{zu34s{CfWN7a3Cf^@L%!& zN$?|!!9j2c)j$~+R6n#891w-z8(!oBpL2K=+%a$r2|~8-(vQj5_XT`<0Ksf;oP+tz z9CObS!0m)Tgg`K#xBM8B(|Z)Wb&DYL{WTYv`;A=q6~Nnx2+!lTIXtj8J7dZE!P_{z z#f8w6F}^!?^KE#+ZDv+xd5O&3EmomZzsv?>E-~ygGum45fk!SBN&|eo1rKw^?aZJ4 E2O(~oYXATM literal 53636 zcmafaW0a=B^559DjdyI@wr$%scWm3Xy<^+Pj_sKpY&N+!|K#4>Bz;ajPk*RBjZ;RV75EK-Uv!Ig%(BB5~-#>pF^k0$_Qx&35mhPeng zP5V`%P1S)(UiPcRczm!G=UnT-`Q91$f1A+!-&O|pcR~kei+@?vzw^NUlgGl@$kf*C z|H+E_udE)q?&-+Q}NKDTwWGi9|EhSaen+=P&UpS2Bbjf?dM==%4Q|xN(%II>dI89;ro*BL4Red4p@gCHx)jxu84C!g zjsX&OW)$y=#n_cmkmSKx8wB`wsWLl2JqjeaVk7bSmJ^1~lfVg!V?hu`#16r`(c%03 z+bNIihOMIg6#&P-M=bjP*`tb=i>sNPqO-%_!*aDUbNSoz^b&G&wKTJLwK6esb#VU2 zA(X1vIiLt3`C|Yg#ug4M4Qo?3SG`q_qZ}3taiC*=Kr_iz$;k@X8G%~Vd6+sRKGZ)& z+p*q5z7@wb3#JkQquvh9UhzIo^YV1R9-Xe;0!?~alf(u?!-9j_P;Ij}#>Jwst7xv? z;G^nv*pMKM4YURMz)fK4?^o)Dcc}21N-htU8ERJf1bHs;abY~r3A|7luMI)GB6dDK z`J>5Jv|%#U5I&KT%fFbdBP)B6kleNyTvxS0rL65!r@*aV5+OC6JOWULy|fU`rtGA4 zpTf41dqh+{7_Pwm$Fs8^Vb!tHbcC-}I`skBCK;FzaJce~-$4Pt?1@r%_$rO}`9UT7 zSX5*>iy%>Xc8mbiQl^ZEgLSr%8hHc?Cm_^TR2a;fB{(joOtfvO7b)Do$8Sl9;dvVr zgJnGKAUpQ0O~(W`21R%m@d)wFTZN=-_R3{~N+V)|9y!dZ2Gsh{a2TeDzb zE)?K2{8YP0s$G;TlctY`(Kd(lAuA83rJWo?G-jqM3oPEqBA0;lXmC;h`uW)Emx=o#*Gr)Fk2?4Mg z6Pv$Em4?wXI^;1nmKpw+G5PO$dwQkmQuSBbw*C^yf0jC_|EXI4kSVd)pMMn#F8t5* z`3V|w4~+h^@qJG<45*OelYTohyEM;*D}Od5;XnimPbxOlMEd9ZqwfwO5XPC$nKu-a ze-RBin*vnwImM~QYzkn*2s6xJl2yk-IkcISSaZi%DJ4_g0+DaZ$B(J8;x$yLAj=-SHG10>KEOA-l@d@Fj#6XX3mlhc4o2;4mNI%|JZb_ijD$~5ZbqR zqTcGWat)xh%~}UcXG8m1ZE1L_>W3;65wwD77<3(dx2cxxr$#TCwe{i{|C0n8-;grR zcu4m|=Zr_6%gOZgt$=_(h~{8bu+sE|XVE@Yo>U|il%c-3?%NL}@dl!U&fo-~UL-Sh2-bb+?VoQ!yPZyIoVjJ8mhHtUF5pECK-2P zY0R3=WAbJ&WqiC7jVzZMar2CPz=y1z5BtN`USauJJIpuBUK0xi@&Jrr?71-HF(tCu zw;VPR+cUTk7?^&XW<%6ibyT13jQjYR@ZqA9PSx5gY}6QQ{N3WcvwC*r#{{e$-IvRr zlTPwkZq|Mso5&Vev6P>5S#fQ4+Bu95+8fp$rN45@bWV(eh&Q8IsFKt~8HIHDy_%#V ze<2Hz^(Z&SphG;H!vhD%-Q6@+c!r>(zap7uoaKFpFSSr_n?dOp;;6b|G^-KP~%Si8yQ@p7;xW^eXO!dKDBgVOnA;#$UBS-1ApYUWL%5_RO>+q8f zx16bCq}~0|#0TUgn0FL`bu;F(JW9LsTge;$D>BL|34H|1YA|_6A^`1()6hUC0We`m!x;xjrbZY@#Y=`i$V$+fte|cB#5&}ce#UU~73>`*m{;U=Kk_;3W;~9w>1I|1oZnaGGO`7Vk+ioV(aE&8dV{C9O zmV15?rW!PQ8+%ojSa&s%khFBgY<5>3tL+MoimT95t97_JVVWX=90l%gGEY?Vv?w;J z8O84C;*hFTbqF`LHx`zt-Ez&Wj`T=~kB}TEnOVGUF%Pv_jdA3@NpG8Gn9!+QJj);v3m; z?>J}t7FrdV*}}mM^;@Vuh8v;RUcR-K8%sBTzVlldaa$Zv8{AYfGgg#4GZ*61T2|G` zCwlW)#S7PwY0Hl1lnpW-;)QaNw5laxpQ zV|O>G1oH|=V>1jSH8|ay;!|0BtGAk>8BPI=W3C%D=3>UNFhc?K;~4|d{yk(zW<4ZE zOVVQL`;DV!y2I7}x=Hsq`ss-SD*iphM{=@F1~>0FR5-@Ir%l9#%-3-)!+23pcn(fa zBxzNq;VZVLx(l|(v2dB{rgfd9H#uUqEX<;>PF20v!v16N9%eleuU~J1qY>jD_lYs_ zi57Y3RAHfIA6ZTaLx*`uiWul@^^=t^&|*&tR@O!E(GhbBiS}kG)6Wax#{}H@cMhgM zsJl{nRf|;xnQGh4lgO?#+eR?4Q1H3AlU8biLBFSiE4(RT+PEjf8RS9$^66!lSv1q- zfN@5YX3{=8_9V4%-^(hH>1aE-lAP1)AoSW)f(|dirJ*b2ld7JAYU<0&SOV0<6|v-M zv#Rj@EeO~${gxHfD86ZIJ^D4j<_ZmO+_QMZ^uCT1m-^R})FH!xw5n?9An{fDOh1TU zya=C~5^tcBNTcpoKzpLQyig=$6uGAfSnd+S#+Mw9cE9Wbna#FsaLS3<>^or;Om@^# z^qf*Wc&zp7wmR%3z~MEP?g*4g>Tt3eFdgLwV}Ip@k|NGAT@|D4cwW2}rUOr~fZh(= zP^HWba4^CP#0OESh6d}FDRRMgcK_I>Qq4^})Th$-hhLfDry_uY?2~|GXzd$iILK7x z|AL!gslc{`sm&bS?BKY{6$a=NlwEL3{JxnpqOM2u=~OJWeZXPY?c*W6Vx1{)F90KI zNz4nIpt6Mt^P(u4X*O)z-gd!vLpek@D%!rlBBL0iIM{JPs(T|L(AB5#WYOnRXn3Gt zdFLu~iq7l`+spMM^dH1O{cdkg=gRDl^sej9cm=qu56E&TH$g*Y+=uX%zH!tNe!M$e zAj2hc2ahF4u_=H5PB~&s{l)c83HU=srLTPPL;Yz7xs9$LsuY87YUils%%j4(=kJB08_wYtX379w zU2)Q8O&1GFDRoWW8=u3v)w%~=lE%EUy@g$|RU&~+%|vwG!TUn^ui#}GUSB-%FL-%} z_`iY|jeqz~A`bTERu*o~My^&4_WuMg$#x2;LP%qOwoX?=_=5wBib$@Ba|-rZpb^!W z)Zox1eMRaV(@2lww)NQVRjf#u?!yQN5Y2LWbqZ>>hB;W8SswGhu5~{?=H?85PVN8^ zG8q$w?9q5Ja5qi@V>7%Qubo~4Gr~C0R=lS3FLnZVSLz%MdJ#qqPL}@6@MADBwKLD< zaACW@qt12UN-N4uxb2Fi*vjc%ds#w2!wYv+9|v*_G;Q7Eu@()kjx15)i*}b;wi-jo z!#!KuW)d{rUMuq)*5jVre3qMfUd^jfcdu_UbM2Oz-?hk4e+FH%EaTLzv2W&e?ls2D z<$3wqdX38e($G6C-nsFnupr*{-GW)A@99yjop6}@a8_ybZj5M7D^*%pqAow8udBSO z&Wfn|^HL=)(Vb)=x`ABTZgD{Bzo#6hN+>TNF?-7=nrhim5h=2C?d`J)n|MM9I<#HE>M@V4cMf6O%;o zQjaBwl1hQHR6@$k<1XZqYVb)(LTOUXi;yK`g4WUrEpW;j!DrTg|4s5)Ykq>0Ag0{Q z+h4H%D%(na_*Tb%K{@tc#KZWX5zoK-yOKuse|~@NVGYcVd;9@B zdvFxaL~ojV-}Iik&AsQk%w6sM`FzI={Cd+GqK~QY6cIrcXU!R|h~i*-BY#YRKsR|{ zr1wCjrcldKzfTKSj{$QMuY;DFm3Ed7iK`@7BvL}B2s47C4tT=(N&K27Pr+b{4<1fMh=Ri3sn!$a()#pH26izHyN0pNZJ z!(JY$L!;Kf!tB1$VLmL&!)|OY+SBby+hI<@ZvV>?leISV5{k5%NVSy5`WVJuN|Y@u zsFh(#f-(X#iR3h^O-$<%y%FGYUxGa(Jz{CDO%=6Vb3m~)sO5gMa}}AQx&M_XIcmsR zDXgw(-w7qNKqYZX>hx+NY#hHQ;I?~ER3 zSBq2+M8z_JP4Cc(W9HmN7A5mo6-rnrj`Hf0<#YxwCzyKg{?_i)19>2kW0*QBm$(D zlrBEFZZhx;&3cAG_osC#(DF+^NH2;E0%r5}IUYTxX3l0^0;mK< zz2R0=#RHoRd;qh_X(p^o*DNfvRp+^Jr?<1=rsmN+@BXY42Jaus^eEK5=$Oebm6t|ahyzT+6 zbpmWV&9K;3-oqqh^+`D&cn;~Tr1#se{ND_xO29cBf!Q08FbEus2FW74b9?mT{S*La z{=}ODs!_Fri+KLfhi=MU8JxR}t;Tp&1}dUp`?^acF~nBO8s0!ep@(lx;iV@L)_Ae# zyDyM{xi9j!38)wbq1>|5eNhJkZ}8Nxj0 z2xT3pxJaWE7ZH)$^wO`$aReZXbI(ZLR_J0mIgh_|NvhV)?@)TEE0v^&_y^04|NY;SCx9C1L{*@H5a{eyG`^H<6S%kx8VOk{;SC>^L{CmnhPVQ5$?c55pD{NObBgG@ll(S zT__9x0=}D}^Ko%;ocOjWC_x-g#%7(K%hBBF@8v=t?gf4T5TZpcZKOsIl*ds++ej?{V6wPHR{+W?nl$ zo@|xEB-~gNPlP39<2+RP2vx&v_=!8^CyibCCc?8h4xe4P>0BN+jsWxUy7IRzf~YJG zHeOkxu(mKutWO8Sfe;R&l4NnDgfK70A@nhHF7wdnpHGM17P`eC?XxsLtm~p08Qxy` z<#hQ=V11;O!23~$)OQzQbhW`WB9K6!L3S}PjCx|`U@(5LsO*t6FsEXK(R~KkxD->8?RGHBXi9?^!!MJ zA(}30|mD~xL@?Xcx zL);hMD%~Z?Ym?Akmhq(PNneCpwB`<5WCN67FUo{*qxWv#9lrbl{#TKlb-s*3hXew$ zM*sq%_|GD#Xyj@s8{zJ~FL4uqSWjqM`VX9st5vA~Bfb2$_X(P%=w9~Ls0=^Cz zC4|O_GM>_Q%C!!2jd&x*n2;}7T>NB!#l12dVf5jVlP^eq%z=uNFHU~qh=o`e{>Z86 zw=dqkYfT6B#d_ijY<~Q=t@|g4#Y!_cG z9h%!c!@dRER)SjtwsSgM(G6bXmGG)ZYOk3M4NX^W?)-MCzj&*xTy`8niF+4@!v}0v zHw)oorFUE2y@j~X4j{!=&UMbCzjh7PL8{}Ity4ETxZBLKTLn>D0oU&giXSn@R;!rV zwo}GfZT(S`gu391=q6%6Juhlkd@!9>D}7r`F&S)TQOHl`(+TR1N^cH&r@D?T!TrVo zXK~d9LmJLcBT050HX94q0V)DL4JR->xOE5sMXaMjJM{<+%;!`h0pu~4pM#sfo7_|g z_1)Z-?icZxd#?b~;YlX5!IK|cmv9N$UD>&r)7L0XB`%}%_KBV<*`peo?%+;1_=aIU zR~|QcvD6WY%=WnED(=3|x!fa-;T+5PRN=MdHQpCC~!~^VMpO)X)Qd8lbm$ zN~E3B^BAHzmsMkeJ=+vH0@uSHHU)>cWfTzQcny;yt{s8OFJmmO22OKz7K z)un8gDCF`t>KTaxwukmqx5vVx`enp#qPtHvAu12yd!(Gfa^o?Zht1d0Ij#T%6>kw} zXCU8F_Ao57B!s*c3n)?E(xBF*36#zPNG5U_+I0Xuy?&0}ki4ZT~{TPn>V zN!b9>HM;CjmAfGBM1B0qW5+N4`}sds=Ke<$UhyX+CcM2q;vU!GOy|u0B5(6IsGnx)M{9Ey<4-28(D^pRXQ)5UNH81mZ1H|-xqIgOj?jU zk6mL_bha-CLzTLI{SVe)SBnO;R$}F&yXL|5S2asnM;BB6D3rF*XpU>{z|7G{pS#?X z4&CA{hhLs>HPjmLuU6Af)6z*r<$_melrl63gi?s)j0YpGjHxnY%Y9~DV`QE({aJ|R}*mAYe7WC?OY zR14{`2-@rBrKJ2ov3tFn2PCiZuP*6`k3q!Eghd|np_64Rq&WHdxq|As{6MW)n1IYX zKB9F$jjMTf!4pJfVom1GrFF-gqI;WV?t|K7`azXvX>4A`Btol~VsRgXDYu95o8Na` zWRJ)I9C*=Y8KbDx6a_Ke=|cEJFO=mnbM%E-d8LP}$1=}2R@~AnrIXQqh#`B^xIFg#jNlsiB&Ta#D1z^j55MqqN>YQ5z}(bO)kwUAxy*bt zndsYEZL_VX&4^%bNdhaPz)M%j%Wt?}HEfSF=uf(rJTr5O6q3*!{_tXbp%Gv5*|YkL z@T=$^pDB&!ZC48UzV9LHc`kBY{>HC&Qbg+newi|UiTX9o5U(7fxQj6SO=0d(Uq#>@ zo&fyYN6oQ_)K*`#$v^*=7v|h;+rj;tC%>Ws0wVg)7ps)Li>r~X?LVSDxmvKkXveJr zl-(N}v_mvVgOfI*Bwi65I7skP3F}A+cZ@_ArXEQ#SEM(yNussd(b6k@iaHDGHSxxD zYD!Y`fOTuXwwJ=z*47nu8;8s5-rm=j-K`Jm*8p>Oj%-t;Lx%n@^An$((?2=4z6SbV zA4?KHEQte<3ixN!M=4`TVhyr_L0EyUMkmT~3YZD%@4yi6v**A81E^-UNvz4By5lM( znK=6-c^Cye9hzC^Fp!|EsTSj(nJ{w?k5@o*Msf#BpsqM`@ORj}3f|HsTq+0ez*$2_ zpt_T0z*R@i?==Z!%2`!Tx-)Dr40n&hVVDy!Bfwd6G9>|(`RNlbosm9iF}e5!#&yq+ zFkW@E`!1epfpf=?AfDAKo^F9@A(*2VrB(@LN`M+(a8FnVwKtNmEz`v|pxV=GVC#cu^j+iv^@FX! z^tX5A_YT=C>ab^^R;TX4LLj?ScY%m6+qX`UU)Qwz^z35QQ(rwQdC15VRgScR_zh%P zZ=5$LG$m4i9JqOT`;^h7A5>u;RNJTp_L;b+`dagpQTo{X)o<4CJ=(kcbo`y#2R0eO z@Ub=*>>LhVErpeCOQU5g*&J-O4xO$dJ7ul1VKeEM-A`GO1eY~dttjR-F5pXVzddQK z&Y5hY38aJ`Y%+ZlJuS);4YL;T6kJzbDV`jME6%0Pc6P*z$~Fjwr2{y3QKN^S8JBF^ zf5^d~I~^?6>gc&mlpx#1LmhY8!?ORH{aLgWv#Us!%Ibk_Gaadf34=ZHi<_@(t7)Y} z$&&W~B;m1^)ugO7>O5&Ne&OhObQ9n z=kOe%uzC@X$8md#Rw@k8+en1sK}H#Q>nE?`NI@hqFe^q>E$j%{g3TsdmhNNRGH}}% zd#yCpHrbZjE;sq(<&f$D7tBya;0tYSUJq_SwKGD`UBM$Cey;V9e~(Pdc*@bSo+#N{@qDN_v6Gmi$N zP!1gLb*V%t8axFpEuzhuwP94Hou(`3T_|OoGuL)fzEdnW5fb_dcelwH&Xk72g_H$U z(_yUe$LEcGokZ}U-Xbc9v>&P*G5I{?`((kb_kgn)5B`gzg$e?ZluAuxg_W zll8KK*76oxT(lTU9ak+aBzBVUlBLk-Qbr}Iva4&*hr=nti(q4D(D}Tk9k#n6VSoU7 z_hRUwi>?XP8uGjNwDgmipV1b!j7>r^j+tl@8eZZIFbXF&$)(Hhu-2JHTy|3v#n3t` zt!B;$XA@d6o=bAKD#EHEU3@Hsf+#KKyj}FH zPJSS#Ya|=d( z&Z?A)O!z8Fp&A>8_EtCsL+S`--r!;5$x6@eh=^_)bUM0;yN7*?sU#g?b6Zo#iu@_U z;mT8wb!OS(<5RG7f1!sOx9k`7SB`(-A`xHlqT3U8YF(j?ns+FH+PQciLClz{<7ClX zRZF(L;<@+ln!#?hz90wHcZ%KOyVGAs=BW+`I%?m%dr{Z#!_qULHBx7OLdOgb=>=kS zNl<62t!`=+DrnzLlRoe4VD2}eIga4S-a-dkYJDO7MGqS9@~N-)dgJsrW+8(f)t_wN zU6ZeO{;9Xe4w5eUldsVzh!vkiUvRiT=MQ5mGt9(eZ3oS}u6%VU>DtxjPtwUwZ4NpT zmyMldM1-u*&1IKN{4&x8{BhIq)N9$wI1FZ@Z15$2Wi3SeaW9tBP0wCdi)S(o2l#y) zpQ*oR`wGInBuwrde#!F414OetP-qXepOU2t9)>>cQg4Ve&WHjejwKAyZ<=W6SWL_H z=ynS`C*})>gbtQujL93>2bSIBRd1KNp7g?3?Xj3<7K?Y9ENuA7R@C%Rnq{6uRhzq9 zVPgwtJm>~aZFYWeVrcu}(C$$7;5Dd~{#4H;h}g_puFc8}bwVj3#Y0Ua&&mt5JP(D4 zS-)DGYK;@+tvb(2l_Ve0mxouQi?Zq*DGP6^Qm2th8)nW_N{&(t&$+1?5jlUTTXjbp zw{&xlWw#bQmH>~9uk?*1)OdqV%|{y}Jn_F;70GO-Pn`cC^Q+<&6i|7G5-5FGdSHjj zU&s#rCD@HE16eq5ifubjS>+V|lU~LDG@`4>X_+|hSSG#dllB&wT0)I~bdKs%FSVc2 zkd^@7#wtp?+6dSv(^>wKpz5?G&a+58`OHWE08{mwUm)ejrcxN5%Dh>%`>3jaq5(>! ze%eW@5ym8jH+BD{kD^MX09l&;lq{}(L**xECi};c4SU(cZ%=BJHW5BA6!1nJhe#}M zWyi9KPEBJJd5Pgne0B(*rwsCij6uAg2HeK%9K^_gds8>K!iIV~+`4yik z{-7p&^5hi{*>L&&BLWiG7uw$yPsD$O58BnfOAC%PKIKOjiziuA1KlqX_iS*n26I3M@##{82yNyMLzcpYtGT&-2s~e9t~lOpusqx4eQpjvm6LnO35e1F1K>GL;>ianTWyT<1fP>q9OE^Yr*#q3v?g1Px}Iy^i1IJQ z3Lii~R6xA2|TgP5IG+*@V92>yoEn>{h3?1alaOzKOByMuzIXs@TY2^O!sX|R`i z4?%z|>vPlwbFj+PO_C+Z%e?X#a#Hubp7)bdvP!1e_2q1I)z)*zgJNiG#$&WdS&h%j z?=`OEZLG6j`cmg59Sc1`=TBiyj$N>al@K+E$W6O;nFd^JNpz2?<&$ts{3>I%(uYR% z-fvPG9q-z*&<#S%!4o1Ml9ykZHQM~~-SuM1o74pNqx>M-l#m+qZ6Sn?=b zR^I76oU7}YhD1X~yxz)Z{hqV$YFUFwg9XI$3DC!_-CkZeqI;Ou^GR zmDEGm&@94O9uED~wE93JW@%^cwP+=!u<%JP@#!}?UiS56L8^)HNrepgMEV8~?gRnu zVkz}fX1Qq+I(7~hFj=JzeI&`CKBdIlDP}#zN=$ zgO~?*d*e@Hj<~Lx%8AyW4bc^-2WC~cbd`amPE6MRh|JwWxvna zFbEa-a%cC+`UsH=%AB#UuZ6T8yYlQn&zK9&`MF}6&y;4ma_ss(vDLg7AFnk+oT^C> z+6x;1k#eBP3kd&o3vt!f83CHHyr+GX&l8<{vw4i}@%pebS7YqYH>ZEZ@Ve#tPMMruL?h z{1+n%2}CtP0VMH==%(0S2`HltG5I-h&0Vl~XrCD3P)+r~^Ooo1L1z@gqQ`!jE~tQT zd>QZ~oH&>@-Eo7Bzs!n?E5#7U5~P*Cj#1^S7PZZzY8wG@LH8k+I8CDTOL;`KID$`J z(FLzG=y)<{0nI!Gkqb(J958=(MV_}y;BL}N%LoL-mP7nc5--ipG=zntf>*E!Gt_dQ zJW+)@`G`t^+NI`(Ku5b8@5GBK8pw*WRUPsQ14m3c2qFx7I^B}>B8`?duZ6~rR=WPG z))~yFDC*Yt_$8E|OUk#%+U#h}E_UU*@ZoFooSeqgButT-ys$<25m>fB4-Rc60}=eG z5Jdj`=6SIdJ(KFqOx5P3d}gP3UZ|g^8x9IvPD$0vM0mddiQs}~SfTn)ZyV6Ph= zmP`b#bZQdmUVKvz(Ma&GiRx-8{S~X2PtQwHekJMg(tz93saDH)g+o!yLhjVxXVh5KkM7W)ZMB7T&m;q^lwVvLV9S|1qgYd@_(a=_w_elkJQ|!!ZDBL|y*SwTt*6s~uJzw4P9J%Yt zY4M}7x3h?GS>d1u60qkp@4|@d9mXDCJTS+U1<@i0X)PLJg%HN-kV-MH7h%mCSYr+co`9{iS3dFH%dtQ0_}Yp>tAIq<~q9La%k}z2d#WHlBu=Z-i>{k=vO~CkDTSUCx)_ssVeH zi(*8f6;SM#z#&3nABy%iqfdqX{a>p(^OQ(bnO9RV{m%iTinMMy=L_=lS zKc=TkHId1mPjdw~k?WCM1iYyaFt(Q8h04Pgs5wR~%Q;j}3|8SVUpAW*Frq0ltljN_ zZwBXkOT@|{<IOLGlbXs%I$qH z{9X=NaIZ5B;dod<^vKNQahaX&HTimWTTA zU@(#jhh)N@(mWXY^5)%7ig?ycMM`HRD@L|KSv9jYR2hVPmUQHZe`^?t7<+zG9F=&} z9He|!e0SCn$4o*|2JuzND%@BC;Vrxi2XY#fWde?6nlYs5oMvxcUAD_5`_9NzeTH9I zeCs1ZyVj$lA;M#+b!D}yq{Lxy&fivp-`&dCRq*_mvPB@T{t2WiXJiM&)bYqBYtDS9WTzbEBeIZ6wb_RPw&z#HDTNvG|%9Q@b zQr=B<>VgtdN6kAIy95aXY}u+M;mCYex{2#l^>6%+WIH67sE*1LvK`D-H-Q^ix>Ecn z!Xk=0y5)NEooG;83`hu~PzK5ix-X235QZzI_Zg1Zc9qx@$k8~T#ats`{2*}taT&EX z>Wa!UN(5N$^zdWLM->`c0)~I+RLnGtbv|sZ)h_N37Tn;F27K<0?cRAP9%Cq8Je&a4 zOJdoAyi@3d0Wq^R@ps)|qEDYF8D2uJ;Zm#S~4eVnd9Y z*64UsEy>!5c6(VSzQE)rt;%;p6alpYXMNHJqG~j@>aAlVBpRunV-!blQdixzwrr_| z2UTWsNAY1_D{T$U@qY7kUgiBKk4Qb#TESA+-8ZE0%1n8bVUTts`F5R?dG&?tn_BGA zq!_pLW|os7e<6==HEWE|-qawP=z(=&U|$rwa!5%sR9Bwv9Ig>ScSVMbq_^k+LO1Wb znPNwks+a|Pr7S{_V9UDn1sQppiH^C7NRu?44JuEp?%Wr2?d;Dg;`gKAK3(kSWlQuT z?fex!clcc}hTB>3!YLHbyh8CIjv-L}l59LGanoVM9}1oyCo_eKCd;)sgULt%5gB(e zCkHb_m;ym55?@R>6vL?Fz)bOLAVmffM~k5x`_Bdxm!qNO;Bxo8S(LuO`GP0`gDkQi zX)~Az+6d)i(5MBDxh=PYjCICvJ5Mw7B7{J_2-9Ae(!dl3VNAaS_sBkwgRh1}Viu!5 z@I*p8qFG-LApBB2Cp1v)59OM0XcFAr91`tw$VjAiDHxs<6vua%#GV#ruqYNi)aq|waI*gZ%m#( zoz#QeVPIiUOLhRrJwlgGlYHgeaz-Iw9>L?DPMH^fvnSkZvcLAoYa{pr>yG%ef8gzE zNvGwA-UaWuA8x-R{%ZnXa2C=hDHaeA;6LXX{#jxw=4oc)_Fr$zQZ>8`@zk*Y z$TdyavoD3(C$&*g(URLO&WKIzq>)Og;Eb=>E@l<2PTa6+tzU(1Y!E=f007iQcqC|| zVzuo;=Ma&BMHnNvw;%lXgP;y~uQRgj&0BWx0aw|ty|2BuZ+>GwAHQ4>1z-$&Q67%y z{I`(@bV2|>bN#o`MX?be3is``I>+MM!5!-f9S{%kJuQ&XI~XFR@t%(KgjA0V!MXP6 zhI~vp$%cH6pFT`I`x|_T0ud))MVcOrGX2N`vEO$Yh9p4WGJFXWu7{YXAQ)-(Ak91h zff2_%ltW`*o@9X%BT-|aU#LPkaSBnn@l#hS%pa~m`N)KEZ}*{hc!{|mrY~9o{FuWV zoLB?N4`04O22lIaz`j(043KxJKz-Cx3h(!=L|viRmk(dza0+UN*>7o*?`?#8&_$Sg z=;V8_haYc2881Ub{-K1B_o$z&f%#MwdyBaE*f-ZW_~-a|>wMhX?LL;CjujT3rm{j6 zx6F3+tBK3XsQ5}#vLzJkRGN!+C5vfkP41QxF?EJ!d4YAamhlq8-zSQvSLv%EGQt}O;XAM|=fx{FCehWNrz_;|n%gO|#fYO~da6=*b1GV&TxCgKXWxo7IN z_cya77r&_^Sd3hu=n!s}rqTTHr!|+bX(%Vf3tham6-HW}vKx8LOJ2w*&}uGOrhmji zt3*>i$N80sQ#6~DKVG+a{Y|8i$DkpuTrtVwxMmVGw~@)lg?kD99GQ7nN7L})<>UK! z)(ju47+kX(KG$?JASp#OEgN-n5sj1Kjm=2gF3f~3+z|_!X$>bXbgLUE1j(7?pj3vw z^aVdfZ*4_7H}Px`2@*DP%e&6|V)EM*8?%t3!0H_x;p(#8TrOu**-MgS;TdBgF_|qSUk`GMT{M>#swfz)61GyNvEFw|3AiVzDJpAMkod%a{HQ1Rn9Q zLDU5Y%2}nAW^lC{k;s0fMq3Tdh>&L4{8iP~wSWd-XHB^o1NY^utm&OMc76wf|T z2>Ac3P&iA&L=66!+C!^4zxXMvyjs7NfZ8pS&A``1j+VSkLr0QH+qGtfg>k)9_Q7^9 z$pTL9G+&;HDq2z&iGY*nC`xU~nI{b1dL;IXuvk1gYcR%fy$xICsWa)WGtsbTjh)bL zyUX~c%08cqvEWCFOH__dO-VDATe?ktg(B4%!wi*OnsVd2 z^`?>)Z*2ZU+OIfZeoc0N_*y@^lbBk6MGqmG4 zc2c2f1Cq~ z3wdz9>AU}oZ#jbfQDOfk$7K`qW=*_eXP)SYO?zs(>mwP+8cl(>?H+h`Ku>%7O^Ezy zz*~OkHH$W2*dBG-dQ*b+`TO11Nv9<$rh%Se`m|1#1Ur54#bWvwBaN0CT4`wJjuKFY zN{}=z-vj;a{7lRB0`sl4hq4L!l~kmm0Z*Y)sxmJNqPV|<#@(CKQq(PIbSyc3+$nu* zLtYWJGh3%PM{9UCOe~$Q3!NQ|O{M4eY;ddG^+BQ(Uv0!IdD6sP2Lbytl?elS89eC< z0fF=doDXNRyIivUq)n|Kyvmc+$f?F8Sg$jBJIwb~@AE~cF_!#DJvDIYU_F>xsWQwR zI^$-4y}LsJn9>&xYBz(|z8O%p{*i&m-dD6FDvZF&c=7}(qScs!A;{i6Yz4cQg;Pw^Ayas zyr^?8^W!gAE$xJd7a3`87Lirmr(DZZwM2LjG#MO}w$w3yBc>Q8W}TPft-6>IezJHN zl}4GC_2?M)QaYZ%Sh2l)@S7vF?~htABvHOLlMK}qRp`}Zg8O+I$$0NGh(#XWr->2| z?=uyt{&A6dF-d#(SrO;XErZ?Lm-IFMezl6gaHqV;L>xgb1z?)ff|!{?Q(6@2+%N|O zGm~b3LuOdOXd3RR<}8aKi)-9ej>@{pWkRNViYhvb$B*})fWrbXLcUWooMQRI(7)6BV`W#hQ2 zzF|YjWkbnhV`S_ujZvLDqLMozp6wLd+_tJ^)3la_SZGu{7fyOOut4It{9(TEu>R$0 z0)I2er+Es}__qe#J}~}rg%iJ(Gek)MmGXeLE++(Pmb?|YcU_c|eQ4OL1Nc-$oU&9m z(8r0m>8uTyH)MW0`nUrwU4=kM7)6CWrJ21ViZ2^Yf;QQUo4GfnAGH$ zL)M47{HwbUJkq*I;j@-4XK<+tXRcPaKZeEh;WW0ko4OGKywb6I*;!<*vYTiJb#D|i zm)IQh#_=zB={>wzbC6tA=v*0iEn7IdLnLTB_sU1xi%;GQko2wu5sX~41u^8Eui8R7 zGx-{BaYG<+D$ytGO@>Wl-x+Xo3>8>n+zU%GprXT}ovw_Om??L(0`%s?! zuB!P=o9##Zn|Ed|1J5_=xr3(d0~@E@XsIM|nRMt@?oCMc-<#SOnJ*!)n5KJd!w=eN zcW#{^Db5)T-AMXkPv}1Ge5A_8bNV4`54H*BdyOK+XyfVc?E74`YqUfB zg(CVl97VGs7rdnCqvo)?a4wZ1^D@y;uf@IXQFbs(aGN%*d0_2COX%W++oU? zIuvTv*U;Fk9+!Sc=XP$hFL;0&S20&y3yTE3c3F#R%(kT0^LGR!s>^5)b*ABO_D9^Y zkxgE0_6!6X8crtJy$g=xZU~lYDgf`3JE)FIqZ zN6`L2$gVF~sBl0P4kUuWEXGdzMb-5pY9JHFBIcU-TX$xnpWU9RZeA(uCmWQkhAoKK zC2;V{?xSXMkgtWyT%wZ8x_aD9opo`)nz}l3ZP5z;>_(Wn>U96;a=(F-<9oO*09uZS zqH5lwL&LdcYU|XdtC7EzL<2+C_EV$eI2ft;aEsdPQXRUmYaw`kx$^+Cl~*9E8^0BG zcdH3!-Kt+}(_C~BhIC(X%YiPhGu`nkh`%fliFJTGpE0nc=m07q zM0HVIGSn}gL8gLNakaT{n? zNkTGXGd&4agun(1mOI69E1K~;kMOz!py4!BH+xcF3WM{hsM3sv2PDOXtMjewlFl*G z1$}rj4yo)?L|5Uo9zjCwSddE=D=yI(xn~&0*N!dO$#bMEl+ju?n2#s(0>nSbxuJm3 zlN_Xi%K$e@?J#%cWY{6DLZ&(LzMY3fKz9O9Z?m@l1A@y_ZiMzjSyX@j#ZX%7HA?~u zL#2Hljalz|Je%lIV`OH9TfczaHHeA?rUY|RC}x$!KIU6$?|!6B*4<{4cMZXC|Ta2dsJ_6;ChB`LLIepcipHgW=(NE zW2j5_o?ik1KlbII|5WbLzfdPw91C8}ClqYGwE}wfZm_?|A{OHN@Ngw}R&eOo%D41z zpToYO$sVmWO3O#;kr>klwOc$`F==lMmVS;7iUSY!8ISwS4O?t7b#g7DS_u+{k!Y+$ zcYh{=>G-Q4?o}$yB_eRJa&)CyqR<3s^vaD(Af}utGEB$wjXLC!_+(H+1!X8AOK+7} z6@oU@MXU8&QCNY8*1ij(4aLhEwx!BNsR@UXNs6QqkF(Z^gQ6r+uWsr%6j^V)mR)ghP6mA5>fcsv0XMe;hWr%}1R~qJ=AGV?p zYpsrwvdbn?neu#q&b8M$B&=u~dqsrKEcY~G8~T9#D9s*~-v0K=vMso<^z1Nmrw5PD zyWs2;UB7t1M329eP!$%pn2OXwSEvc7$%Kj)6;p)Ltz>mKX5YbFyNA9kGwfb=iw4s$ za+x!v#%8R%tXAjUs=J2(8_F^Stxgv!7~St5Z!O|8r4K1hT%xMb&85Rg8LsZWr4TT7 z$AEC;?og_7@sveuKC2pxL6~q~=*T#dqiMLBI`ep~yTup5ID)4P(qShztWjm$g6EMl zRq@gCGgwufB?{@RA65!lh~k;)Y!9YA*?;KZo&bZxr*Z7Kp(B%*h8IDboP?1Byt*5k zHfHZyJ2B-^G^Efj);^s(7%d_XyGf@MND_|)PB}k77pyR-asN?8)R%Ue z%oY10`7Kabj|g)CYlNC7zm<@)$vOK( zQS(k(fNv_~_SJnxwYxu%fCMQlt=^brGOM5gByQv3-hw-DAe(*blV@u<)#{h>hhQf& zp2O8U!z*FIz~<-tEw-KOw8xf9+A&<2{czs3-UpDXK1lPoTcXgf9JX+GdIuQAz7K_E zje{?P<Kov(I^&O_B z^-UBvKJm5!w^z(PC#Pf#`W}(+E2+>uAwhD1x;W?a0r+5O6Tt{0fTPQYx63A8iilHN z$_yCVxXGRZFF0qO?QSlaxP^J~0#ufXxWtMRcx7}se$UbBJ}u4-$XWbYp?6P%)PjC$%@CiaH#vFf>3S2pq< zu7>-H)hC$I{bSe&Rg9W(RgNg$QmPX?ZmN3$ zENsR0=GZAkb>=hP6ldxE$9cn0+V;^*n!sA~s~!mDqzraNH%L}Enya(iVOJ<_%baRy z%TU_R%gHLTJKEP4^#M$Ny8YmgS3;z3XokyQ;6udu72&{>+@zi3%8(>R^D8=q%I83t}d*K2|7{!(=0BoH5tRJB#g^fM+#~S zYv}GF?E&46o|g?>ou|Afqu!*=vwibp)=%`cSz|j>H(O6NhBM%ADDPDH$D}mhRHO@& zq=&GJ9Z9@#ic@Oz7F!ssU77Wt88nKb;1XxWrEE*C>Lr`@!Q6=UsG+=(64VhJQt{pD z@Cv?P+g)v&me75yB2q{i?rfDh#V2KanB&IspUH>mQ)IX!= z|3zKPQnPf$Swh=d!PW@pk-+`-O(6u7fslGt5*F&atRM=vp8z9~?EbKf*6=)G40E=E z7zueELT+b2$t-YDsw)AanG}v@B}XA#j7wGZlFy}>514PRF+r5kMEyS5FHOGZZRV5g zh8xb`e2+7qUJm%ZqVL{V?e^+}uEJhwgU`Y|g#Dp;5Qa!bhM~k5{#Zh=hD>hq9& zP-8;h<}iH%Mhx7v_apbiD6%8>DbKPI?;0n4$wV7xL~pf0$w}OF^SsAvxvkkPR|{14 zWGC3rRE@|YDM_r`%(0#+8^dI#sop@6OYAhP4>b%)cO0@nvU%CZ7(X8Uy#q5FB`52v zA99oE-2tnVPR82wIn$n^(`*Z3yan<_~t}ibVLJ4RGW+ z_{IJSCqb&dn^Z0~@~39##<=M9_ z+=gx@L(XG)bBD>tCmch?5I50rhuK>iEVZQcO2u!`Z@C8y0oJGyWUMP+_sOTDv|B_? zX_P(dE9$x#ed`(2KICP?Hw~PrwDB>Se!FD_s- z_V5}EBVW7JH)|Q`Kd1g_op9VO;qn1sI9v6p;^EXPh}DE@*;Pc#tX3YdZB`c`(9fxP zQ{d4Xw)7`O1+A&nUuK@2y>RNz-NAH@d;Dq@bCRBDMW{J*!?QhgQySFD_r$rO2=asm zoLsyVmHGz%WY(-QaB7$3`5+5$b?yvN;@Td8Kzdglxw-YkBiKja`V+c<dj zaFL4i!}#(+Ji_Mhy<9s* zdnGT@BPTC{BRhjfel+cdl=ulUQLM`94Ms>%4nE_!=BU-(cDMmk9>seZAcxug$;A*N z3$)#4w!!iBBPk~`zBNR(!27}+_)KI|qU+NHCi@$EKIgJ*oUG_&<(<2Or8nSI!50Zr zvQ@(eB~w)Ji;`;o6L6arXds!?VU8#2b4^m+Z7a7UX_zD#tPwn>?6-we+V@cFMqj3z z#S~Q9P4(W5WsdIZfe1{tTZI`oH z2uqy$8(?m|KcP{_$L*F0aB6b_kFT@Uh|SJ#TM*~jxXvv{?*pPW z1T#V#-)FCTAkBVFwxz;p!qjR2KYr}kCVQy0=r~{>!NNoj5nmC}Q7*}@(#GqLS8CRwcr~fh@EU8O}CLP}$Fm7mlcVb}v zgH60nX_j||w~(qn|B2@KC!~EsotK!;)ZTcB!3XV!Qc+S|t_qeK#7+-U`*p)9WFEI& zvq>Sq1bqeeZb37+N>h*GT2eS)biiqottF=l`=;h~tw#4y%Zv4W zEhzzHP@=|QbOJ95>3Aa9_BFT!nTSuxKKa|cAH4)BJj{UkQbe!SG{@g`j;j+r7`{NA zLlvBpdR34Jax#yTxHI0Jj|yZj)~us3$~g=>r{Ouosv4a&$ge(|<^?MUx)LIXt83E|7^&!8N2wNiMYnr3M9e0R!}vW5TjfK}-rWx+els4suRtz;nGwx8ye%@qYv#!%H*TvJ zy_gn>{3DL+qeqb7qY3D9m6%^3^UVzBZ7{-7sFYHQJY}!7Pk-{v|^H*tte*qRg`%&t5mh#G2Ss2PcpVH zkyIz?U!$LYZy$K(oOqs0B>Cp}g7vz*D;XOG*Me})ZPH_F86QyCsT|r%59dRJji_Yy zf>7}VAw(RL7|aAx;rELfdr1$EsIVNMP^I5WpdlP68N4n)<12i*ZK^CeN_XyF0z(*g zq;ovj`Bx*TUK&Gcx2=&iR4?h_Q!gGs+cUx)0k)-Xz&px!w3*7aO48l5k(tQxO3>NL zw|HPXD!05~J8HKeU~*$GdEpB$agim)JR}Dr$bAOX;FUOV z#F9`IqQxV_PcnF6Bk)%RW?BtFddrd}aGGlzHfv}8ja4P}!@c=cC#Uv$n_9T>vxDxc z9FywDLEU=dkTC>HF=rqeTha)FI^2fEZM51=*2A@UE>8BA!;`I^-y?-<4h}ROS0vj_ zzQ2f7p>DB9nMxZH_b^zlLOiZjV#FpbHZZqmAw9&;-b|aOj>!DNy=g+9sw^tOe1?;l z$ebvAXs%=G+lIoSj5f}@w#kSnqp$h#R{uM#FQ z=CB#2S+l8JO3Jr04r+GbNpNRRaZU3O`kCwe!*S4U zWyOtjLYjm!;0XRF;G)X-BUPgcpNwP7OVu^%?1+N2GRkGCAWqV6{83>DfHfcuRb4|R zD=9^rR0O?2QzAYad!!5#a&^cPHB{A^#UfnpE|!cnOMhv$8etFDa=?oXV9eK7W^pyl z49jxe()N{=7Xqa}D8cptn37($!B^S*`E*rl^^zUNf}1%2!=ks~hzJ0XW-c&9L1EFG zbHuZgakzXG*=#KewQ6Ud)FNx5N06gB}n@nxf`A}(vMsq+5XL~?}Rs+JIU)F$KL1WvF z&)rO4GX0>H)Lw2D4r{O=V45vY>F(>uzo2N^1cFo_JW7)JmLxKaWJI(4Ia& z@5-55hANPh{^VpVP~{bc*86jEk`0Tflt5=&ri!1na@8tcnZ{xv&U<-X@ zI}C_Tj~$#7f4^fkM2oYh%Ay-W|IT}lgNBb$_s99KZ`W%P-c}SbT?J)+Yj{a zBuM@cPw^?&d*{~>AjBE;mF8n&_H)%o zb1@)si9@*|lk8|?8l6LIv%`to83@{r26fL%KzWXXgKv8wTzi33dZp0kkTBs9vEdP7 z$sq-zmp|Y!u2FOeu3w?>46JW~0szs9#Z=s4n%Kp@N5;=Q&&Np9-<0GCfx2aOATWm` z9);ZUjjMc9#X7DqPOVASd)lMr6N-+7$8&=sFsk&)zLJ?F9_vmA_1aBTrxDMsT}c!F zbZgB}?k3+Ha3S8DaG52zM$sYMq;J=A<9Bj+Nj5n$wvuC!uOQ04eI7*d7bnby6b-lw z!i_tCDq_zzgMX?cvfe+rjXoJKySc@kp1tdm767K@+4jJ9hCygc8o4|m5)Lm8_fLYy z-95)u>XYMjUf3S8(g!~7ilD5v1(5uxirl661a4#%E)`AP=0ne}OwlDk@8pmcq?L?_ znY{r@M|)cr=w15!4_!fy6+|Wfr6**+UVnk>|B1w>b^Rx+k@g>?db=+y4xQcqVYw?! zPsveENvMcR$V^O5(2Pya94Nw5%Bb8<&?_;ps4>*mGBGqWv8dX)z$q{=F|Zs_QH;+> z%Ft0Z%g{?ok4Y@aOphH>QB6^gP0BPK0soCApz+1~*0UR$o&NeD*k7{u>pT<4z}ei& zh}OZ_(AeD0>2IHcRZhTWfDp0sA&JTi!_bhR^-#5JoK&F(4G<+{)C+9&>(x2k$d;MA zftkD7$EAcdGSOK&ZuNzbj!(Xfj7AfvIkc4Dpa0jl-wYXox4#z76kMW|gb-8%66VLN zRi>YS^3lriJk1CB;dIw%ldxq7ugrw_j1NrqDdi?p99g8=ippzD=mxJ%n0FE*RYVF&SaaWrR!+NS2<+@b$I-&!mMfz4woK2LGB>U}$CjZ^H-vdVB2XV=~VdY)k12 zw#E40-!5SAS3=y-NyygP`U^`aZEj=y#o%=L0`vb@Ry;{r=ZnIR$_oM$LERi`U9~fd za8%&5!Ivf|4moEgSdKJ5IAV;oVy%|~D^%dyzmreTGB-%D8^g4%5i6hE_^5xf&FOj5 z=6Jll^~2Zq54c?@2?*5X=_)H?U-UP;nWSeycTPNaJTN>FfZNb7Z4Kkl|Jp$pju+yl5UBYW;E)VmT@;g-%_`CvTp~15w+_yF$t@ZGWdei zznQ|^h(Xu8&i!Y5H~Vbeh+V}QS2k%#K=q}bIa~fXgcAW()j@5z1!lXTbSaGJ0s(YJ zkBbUHgW50apGy+`z1Dz9=anR3sNWK)9OC=<@L1vOsfd8ZPBOq1sc`Vbr0`M@^QFC< zY=$6Q9@6_Emw=FqQ}CFyvD ziHpGq%|?|ZF$-3-4_e)Zyt`R|rZy6AhpJrgAt_bHJdvfMw9VSC?d_103(8k=^9xC= zn2v+uU?V@l9Qlzx{G<4V{LnIpXQ+YS1CU*pGNh{4@^{GAUrUkcr*Ta2*AhJadi_U6 z_pg=vw4O|1VoMI8xxRVHhHxW=)zfE=TR5mO?Y~sGuT!D1$DgwC2DPzwGFE z{6dhGwA=0Y9)1v*Y+ro10gobvKne*5om$y6?^;)-){e?-Na|c$PLZ4AZ8($M#DBG; zf>>%7=e=7?i9{wrMRiG~l{9D(f=l}+?ny}ep{|+@Q%O$IctmG$f)YAm2St1NB!!>i z66c&CUZ$sDJHU}%;Fz8{Z&B}Xzi89E{-aVU3PRzPer>zwF9VwAzi+$${#|9v9UaYW zOy%tUYRm;3Ouz1HI2r#dh>@ftx1fhQ@;SrSUUgxVOW4hXk=R9O80zOo7C_G^%hIP8 zpoUPH#=506kG@0Sc{hynL8vR9Pjc6fup7dZT|(=KBQ=~%cEu_8#Rgqz{09dwHwX=l z@la(@AvA%7bg6<0IW^f-gmOxl5od@Md}!SnPD+?@gyC^DA;)fG?g}oYgDdcfA972V zx$WQ-en5MzzGA3+in>^LlQC*PU8TZaff7gX`GYK)KbdkooCx+AeL%38fZry8sNO_{ zB1gcywOegt`KrWgqcCBwzG+}e#s)_b0iNU&C!X%46=+CuL z_k4=>nTd^H@)$JHd=eTURJ>=a5g3AkgTY*=4aLEp-s=RAMv4hkzW#X%)h|y$XP$i8 z<_AbWyD&)O8*=y*7y=wyh057)b(B){P3n2+BhQ-*YKmb}h_PnG<=C-CqLbdF_$+|1JcK;u_(T&A4Lf-Q?9Ha7dUIbaTqafy%|Ji>{bQ zg3T5Il^?=53wN`+K_4pmTJ2N7MF%i*T-cjQ0Z$8s%V80wefrzsfdrRvCEi%K%Hh*p z;jr0_0g;m?6(WvdFyQ;yfhY^2MsvbtG2p?gr|1eTyHqA|lP#tMQZY{o%q zhV+U;tq*#Sq1rDp&-^G%_4Kzy{$IPjvr>lXFX(gN*Mo=mf3pMrx%8F3+$kH=ul-@C z|3!iRuTd~r$}?XOXw*L@?Z*1ndG`f+O#zyD@S>u?z^$JK!*~;RfHtyD66{K}!n`r|pdAZugrF+wI4Z8TuU{)Vs-E#A7&2i@Ca7 z!#O_yX;Ug!vP!y@!bo_u3c#QCY*a6UC^_ec-t4%|mH}p&_=v|6PqpSYjzSY9lcv38 zKObVY@^6Y#u#kCE@tZ8rdFLk(Ij*RBPcLE~q*i<(gB5$48Y`Hc7RVM2`!2xRt?*X! zWIC-(KR!%Jb$SgQrogojkn%Hpo}{o`|f!{%~O~&iKu7=6EXSX_v=u6d(h@55EkIc zcmPR2DXjh%efbps`Y{1%OMCEYvEp#|#-qhDOqmVq){>0`o+P2a5wKicwPE0%`_E|O zJ*|#tTh4CS!?Gn_`~`2s@`D0UvRD&wos+3r`vLQI#Y$TA0XO<4O#G)FsC3K?2kbum z7l0YI$y-(*6R%*P=sr5H2AnpOREPe0nvuCC;?GvlPigoO$SM%3Q6=%X95WC*oCA4B zk$d5gA4H<|dL?#W_XfVTKOt#adEVV@wI}liGUjEGOlz$<9%U0%H+2hoPS7FIBYNa6 znS15@5$Y9VoE(WgI!HZ28GVpIeMMDuC;Q&GY=e!Yxc$9YFrK?r2%p@cVsw{oZh|<( z^U%Buk2pIjw5L!y(#j$47VnMtgN|YK{Ph>JwO)xvJcVq?RD5EFDg!I4!k$b$Pkh3! zWace!C+Oiaz36*J9{9V4R2XY~LnCHX0>N(uhrEOli-cQx-{fLn!Tw#7osz)ai+yQQ zsjv0^KZvZqRr{~X?ri-v=jdw+hVeg2{Xa{5Qrwgz2qS8++#7R2Q?sTu^?CnwqYA`I zQb1?`Lu+l(Zzt^HxHMrV=5xz7s@B_YUKETHQfRaR8k>jNo4>bE?*H7qf$zdjAw#b+ z>2HW^i3Ij?o&=Qe2E66@$`O=dC?I)!DBB~s!~j5pr8rGMRdQflGKNTs!JSaei;gG! zM1{&*$4(50vTlQR2UDmX1w}@X9s)u=Q<$R5FmXnMp&L@e9?v=T5GYgfrFMsDB+Sgp zdbAN6Q`~+R!;(qzrM)iOG3ILIOZ+NA11;*FRPL>AyW4o1SS|aOs1Rf*7@YeMqlR?p zGu1O8JZ{+BDh%WP0b_E+KM9Jbll99fd!b|DT3SH&@*_N&w1Um~2wwG98Dqu#TY3=( zg`o~JYz33))+v^ISI5=#9co)nE$>#Ntv*CUJ=kQ{z+_oCoTdGO%L?D$4D!D!&<_l= z&yg>vXUG?S?0;2(q-?&%aQ(9k{ZoPb?IFCSZs~@4gyz#@l%PQd0tg23S1n18HF8Aw z7BSmMlwSzo$B~X~T-SG%24`p9NLvHF9Fo+!+R~k6Q}wKaT=(#oL>BB^)UD0`wVW^a z`Q-k__esV>*3D+Oi+b56VgsC()&IA8=l|2 zRE9mgcq2WHtp>cAzHmABV=YEsAw>QD8^9g!@a9kdn*)f>clrL9mlqC#AA|>(_=&fM zSkATmFHpYZ?(P(kIrq={STVb%(!U>|-+`Z{UPvq4mHTVH+;aKKLQC~yKTDkB(4d5% zwUppI>l*WO7db&k+$|)ttA@+CWhAW#^2cTMezU8(;b9i$ZPU~@pD7oo4zdj25dO9r zf!*^jC;^YK4pN2~y561gU;}1Y(WE`AT8dqGt2YWbCef_o<}!^3o3pl5;Y)IocSw_c z73&dp*fQUM{h8H}AESYV%{W;fD@?TO+wUNg=tl78YXkf1(!Iq-oj=FjVA5R+3~(({ zyMo^K_r{`mttS!O9`4gtn5dAy)a~z=(WK{du(=C2AR2|B`i0*rQoL$+VPuU{cYj-u24POJ`>-N80I1=n1@~ zD{lcTDhc|=Gi%-YBN4t)M5q`T{@tBVgforI_ARNscoOT*#)tX733Od9_qB0vJtzYT zJrLFL=reZA%;SrDGffUN=%-w@KDgGnJaW+G$&mVu=B9#8)0fi~XqP;(K2<9D(2*%9F0~KUs^ujvXN%2wyro9%rKRgdl_})~ ztR2A*d%lBbJg&--(fXZT3AP(bFu4OP|E#Uz@)**s0xULXLC3{H>nI$1-s)}rH47`G zC0b-zYL37is#Y*|YBzKt=xGD-{>0wqe7YS=4tV3F98RaBTwi6h!G@`Y?@c>zgaE44 zK2E3x=xIaQK1Vmv{s(B?-Uw))k-pRQ49QmTB@5B^0@>5%ZlhQFy=UYgb2K4#oR`b0XZYJG@?suSZvFW7#qf)uou@3OuJr>uan6)s^#W3MDMoC^TUOqdfs z7GuzR`?v3RF`2O}uA9@ASYa-dF4)rFisD^rsXISfp}BdKLwDKI@Z@EXT$h$qr0Aw> zVgY6~dAj|$s{p!Lki4Q>VL_~M?lGrz$*`vE7_Y`C13e|ZeWV;DpLe?DAk>ZO(yp25 zPt$A`YrIm+NmxM8ZVr1z_qur4Fk|LtC6CR((e!^BkD|aLczcz*qwO)yHal6snW7EY zFe4k|-T?1;E{0^KXM9O$o3%)hh>vDR45m@&ab7gWL#4;Jn?m3j+osmuLOzQ2qx*NS zd&S{aZG2_|Mjx>z8M->hOr{12Vb7}3&rhVVr2d!#7F%*mn?xBmBY`c+(&uDFK8}5T zc5x={hTlH&(KzJ@T&kQJG?aQ#9kkgeomCQE)FPh^F0+`CP1>c)3pca}vp!Uz5&!VadS3ptc+!4pn(hshS6&?=cJSmlNrwGZ`(Btt%~&i7XAESK=Bq)sDKAjJ*6YroPp(7F3*67KEJ95&V(7{bm`?*LIl z?tslgLdp$WC85;ByFs0tAuP#J{m10=mK~ScFRJctz48b7A;)a4Aq>>gFTM!4Bo|Ln zuGx!Z_T(s~X{Q@y#E;Cq9#ZQ3wop7XOzx0WwM2TC0!(Tw-*7TY6dcb#d|wSL=yL;e z;~iIdLbxPH-oyu3@@cHGqvFU2Oaudp1v+W}bUUM4Ye2IVqBTB0$b?oOEdKudE}xCi z?~Do_3ZqVokY?qOl3C097tV3t1;q{~g|- zv97F*OIe2v#NI?8mEf-N`tFQLqih#(spU3TU0xr0Um%!rHV|6LE<{ZqHcD^t0s>I7 z$G~?^s=?X3hglsQ8ME+=Li7jc64Tfl%BF;#YCv6Xr^f%&oEtDAc>i}g>0b%~*Al&M z>Pxe2e0AyU|N9>0Kf9A86>GT#c~l>pl{p12Ok1T}Fkx66TVp>$Sfoq?bPR?xqB}#Z zDVj6Qd6&VQJ%qi8pS|J+FPAaI*&A$*wUT>6o-@2BoHK3DosGWLJ|E!nz0r{@$3~C$ zY6xEmyHUhC3PY#~WL-)1xVZh_sJasB2e-~pB2YNUy39`2n8|zAOy3<|y}|2@2+m=> z(FW#SGonDYUMulZ3$aR9S*JEva073IicY;*wE>gcb*8JTV>Y;!(Z_4>fr`yETa;<( z7w19h<*TwfRov@&WfiOo@=zPIl|uN(3CFGN%pgH_h3a9T`qw$T^lbJ;J-|k?z z#qP=5>4>hTT}qdSUK3aaT!7s+8!ZeJ`yT-p(HjR zII|5Ry-H3E4!(z_S#xbQ+&U4A33iIh&1mPFCTBBKl*FmwBKTG5nM)&bJ`_pB2f@Bz z1`k>`LhDbfJ5ASr%N0re-jBP6GWz?)eDdXj27i`Iz+GC2vOaMQqmej)I7;$Iy~3M7 znflP_&wuZ14h@#b_r7+B&6ke;Yi#dd({umkHvg@&`Il#>Vq^LLqoTW1CKSK=cwXMI z@A^#qkcfA|p%i0?kb8N=p~OW+DyW*l^?EDcl@3mg0O`_+KW~3(i=)L*Vfgrc?hdc? zN8zxy*LL!zK_dy0+V352UvE5Tc6(n>9e&)j+yEWgYYD&}Kyxw72~=bEBe_nrcaQYi=OX3z!F_!!;U4HzJtwZY_d66W?Qa<;|;-tr~~#2Ci&#*qH_r2z!uoL zM8J8yGwV17Jcmq|vHB-u)dRq9i3+coo^R)^ckNmA;O{&o{Q?V?CL&%vzx=4*fD!=&wsGgy1Q)K);ID}O6#Ul>K9{)YJOXoSk4UB zn!QQO|0px$MA?s`@|Yu^>14;ZRn4%zAhT^}uB294X5{6RNTXOkPWO%?0GBS z|DyvX_88NQ|MI`m;DG*fti*pf-v8`6|K<0pYB?^bBK}FloTw8)h8^6)C-gH!*+d6U zER=_A;TQKSln}}lsZ$YCj?>mSp8wtT0n_GU=zWco(_CbaG&rfRfS zFIAinHl4kcy=Cj#!+THQ`}v0BmvU!~%gsP)$Q8{d?X1VWecB6a68u=~Hc4s+@&L6t zNPFidHM{|}37|3*5ao-WJ}(Q1Wg+S!Da?1H8O|NC6QkIP>O(9iwO>X>kP?*`_Cz+S zI6O_(NSbjj~F0#7gV@1 zFqUA>I)fm^Uq`IPW?ghhBg?>cCc(02QkWfg*K+L>7YA%9Y0OGCC#waIRa#^$N`_vT zbl3A|t%|clwwq}s%~xL2NOEjKuGdGj-M~S-6`woqhOx z)0VGR8mY%(-KROf?9aw9tgOk4krI^iwrlPMnWc$A$D6EPQ(Yv|UCbO)0k#%L2%>1L zQCK0iGEkt+d1@umr@$kg?$tbZ;Bk_TwUiP2yqLp=lgZ>lGjBUPE(V^ zke-Q_pzVyZQ$a2ixYN9ARztyAZ4GOlH1e|fK*f=1D5IaM(zGI0dissp93jUgOn8pCruCSxt?;P=drityM$Kr zjp%#%nz}})VBB?5q8k2zUC>XVVxneL(AWFfk-wqw^`!fLzwisX8p;`YmF|*wO~Nm0 z$6OdUb1&s@KtJjC1jyZ%1%L>?!RACr>Y7mF*-CZ5xiq;RY9^oVnS{q%*1kXWe2v)!$U{l&KpI1fU#adt7SpA z4C2(z^FvOi-4V$4c(tPpG~JtvhR-l5vU}`3k%f;KH?cOoakk(%kI=@ZQsWPS?+?t& zyaJ8IaSha=60Ht)V0g&*1~|d3gAZY0lk}mm)%@lImj%9m-om!m;|?4V47{!jKT+Ff zBk+&wGt>cLM?6K0nw`QCu(W`<-J7%zp0wi(HM`W8P-rm*(AIfbT+(~PM6_y^Df=Ha zYLr>IDHf`n*FjTU->&K`V;v(X5`S;zs*qoF0;!ObEOr4BvJ)(|!5}#k(30FPPtaVK zKzK6kb$%&Nc~#c0q+zS(ojuoOI}CJAmq0p3V(Tx&t%VL+HzX#lqLmu0cB1 z_@gt-sZH*FY!}xfNDnq%;|?`s7vXZE4V*awM&G2=r|S|@&fKRf+k9G-O0{=M{Hp2f z(ogNe?ilGH+Z}@I9wh!d22MBwda+}p=DFzDXSIbu^Civt{KVnmFh1|_IBjzZeGKn5 zUh20r_C5bt+9*n);Iz#`8g?(qZ?|D@e6SMwH4bmhgfoz87CfD{yV`9BC-O~Cqj|@C zcQgqo^3K-gdkbU(6R-`6Rx1ef`p|yU=_*NRmJTgEgaLlv9|-Sq+z_vq@2qojCh@0L93ZdWb-&J3X=hd%OV2^>f?#8ec*C zICmV^fLA5O;;|^~R2w{RBG&QtW0}e`nN$zjFGCT{z;1cKUjDk*;f_0^JsLP|K@s$Y z67_UQzxLgsO46j4IF7=R()Y;Q+5sTI*16HuK>Jn@b0wqlpAeZS%{zYAp`u19%I*W) zRVc^QubIHXduDGc45+#~?N>bEba1cE*eRIf31a#bGQ@499{qHeDZz%O#A>|lU_nNV zCQrV7uM+-&Yl%kQpZ*A_C!(M)FOaQ`Y&3mXT`kX`gQy4Uk#xy>Hr;$TzJwp*B z{o*`Ps&&c9RVD9m76{|Ur&jvYzv9Sg5Pism^`HL3>eq6!Nlp9`!y`!l<0Jha|G3fL zWbwcJeYG`T95u8*q8p?0!gVSm(OYCH3mnPDoPh7MZeeZp4uYrtZ|;I(pLC=oBL_PJbIrdoPjBpV0?scRng+ zon*2;tYI~K_3A!4Kwd(_7xtZT{0QA?gBfm8r(RM#-L&|&V=vJ`S0-!AG6fDs?#sP^4qcN;bF<7SyEFyNM|HPeF`|;X8{Gm#}?71OKJ8& zNSdozN#V7GFNy3s7Bs<|O4dN0cHuO$^+iXW18ia>PA8WsGizC;cz@1|zDB2uzdTv}lt)gKQdw9Yj_NNggUJs}AaG(*y^A$gD}}tSaA~uUI2i6 zDKTFL&0Sa-tkh^aZZd2)yNxD$`RF$X3%O&1(jh-<)zsJx&esF_oxx{!OWkRUK*13N zf_$y<$z`K)UQejrCw8lVrH0lS=xXex*7r4G4D3fQ0;$pUF*|cJt19Z(EwkO~mKQuR_pM0164WKdsfq%%W7e3EtZKQm?QBWg zVTLPdfsWo&nBOA9bfc|bd>~b{&X5w+cl?T}LpDZoqD(aBIGb#R%z<{-raEQp^y2Gr zDfSx&b%(dfSS^UGDm=zakpl+TuXwd>BUGrt*^~(iPPIzs|k_sIFw|n&9s4?gaPX?jg7)xVyW%yK9i( z?i$>KySo#DLjwQJH<_0ik~eSaKUKHRy;Zl@YCGM1cJE%Bz&*mx{Gx=6*9yD7IBeeu zw1*JV93eFiwv}>!9>boJazt@!e#=FccEdS`L7Q6MT8aSSvx+H&m#|ngIvxU)pJu>k zqVk3P$9uxLAhy!)Ux-NWc*BW?y1iMv8T3zEV_U$eoN#iQG$7ab{dMDYkHNPc7-g#h zbT`3cznQ%zmEN1Hl<87R&x?-ztYV(k6rp@r3nvC{N!%9bMhYv|lAEb5Djuo(U`>0& zORQB@K7j4$Z{xT#)}egb>Xb3&&)Bv1g3{fQc^mI**_uF69N(xD)3zI9$OA)|R%I0q z{ibKDKdd&n#QRq^=`R+m{E{4T z>IxC!e&3!p@4%L|deYjQ>rnD}ekh}3&ua70jCbWBV`yIpmy>i~BoQsis0>ekyqnY` z-N7*(Ro2!hm6iMzI;c?uip9tc<_2l{1JJxP z!!fCj+$z|$#H*d1Lz#9k5D(BLg*l>?I(U<;!766_)=*=82S6iqmv};RiRXSOw0u() zM0%WG(RQhtJcd-81`p+zYryQea(#DtxuH;cbKi`{opo*U4VFyXQTr=eu75zJu@F}a zyYQZR;e}WC*wTKA)L9tE%rZUnHM;9l?AwaPS`-~0nF9HCehLg+3g(yZGK608QPr0k zw;}FaB;O=s+b4tM=1Q>D3m27><>F`Ki1^4wh^|oLUsZpAL==rNxYAsU?qrgBc%uc3 zwk7~3(l5XOv?9dP3VLd}ZXg=3wVGn=!NOR1YBdC{T=OGchH4zSrHk$DN?qC=OdB^5HbO zq?k8C+=+}9L9ifDPm(I+FTcKcq})O+W}Fw^qCGuG=UlsVEU-GGuK>EP(%?tOaWUVm zN)V$8I>B{>TtGpB_7D{Z98&g|R%lMITt+79zz5eVw^W;BA5)j&8tKrJ6uy`r+0Vp8 zj8uQ)QeT*SWVdu4u%i6MhkH>xi-ztto665Sz_Qj%A&^AR)ek5EeQHiH&_BYo z?5b0AI&dgl~zAvE4Sf=zh5?Cz-ROtFoWy* z=mj5P&Ec2f1fgEF#-YeybjpW~_4-n$U@R@gB0hZVgvT#)L=OZ7t=a5@j6ski%*z^R!c!y)^oz^N%BG*BPzoG6N}p1B|~nXA-G0*sfS z027SpuWkC5Cj7Bb7t*ma0E8nmu(UI=H*qxhy)RO}!XFN?%)YQ3R}^ey@K zx`Yvux`L#pf>Spyz|##EEF6;n;XA$7dy`Uc-??9lVV%+9NW*}m2qnAijWz9!@i<-Y zRamXPVEOzC1VoNW{D91dr!5{%(Z10%+j70g$0JZ*ij$f{H#mWY0`|O~J02ECYiGb| zO5&|+f3B4R>6!yX7cWxgD^o^u(Wu?|lW@GbxMtq& z>rjY1h*a%ttk9!<31mNB_Muz^2KaJ^+zbisFj_c*kVBQv^xM|@CNhVFa+_RtySUzP z+c{ZK5}0IBka!en6*KgR+>3YNJ!8@j=L^166-ciFNaaYnnHid}s+IRrkV>xWes22+)=>3^VSTP=y0WvVi zSzI>OXHYsh1xWrw?lkq4d`a#*50#=aWf6&B`O>m8U5gTr6<+hRldDyYB{wU#C08?z zgO2Nzlo4ro^6RawV;;APw%Ns_^Rqgq)vvcrD8ejZa=Vl8_g;5jMR*AY_bRZz(Iq{~ z5*%&kC~%#;n=A@Z+rrJTH__t4I-XtV)=rsaxi(2p>*v}#Q0xqpy?Z6N6~l#g{^8Zw zp6{!d+sxa{>RZGa@SiaWqGn89MNQ3DOp)TBZ87iMfZj=?hDva0b;o&V(vlbr8ij^S zU!AiU4^DZw*Y`2oLo(fr%s{uR>$|X5AG%=G&bEn=9d^!R#%O(b93Vt;32?o9JuAYG8pE*z7G#IeJHJ zjS0_;HUpu@7+h~;_TIu2+O5bULPOq-rNGADq!yc#4>O_{r=?!70-kvp7<{;NR(yI0 zd#;h$zL5D3&Wj?C9_ki zlGgdV57ef0YAq$oX*R}a+5;@qx->1N+=F_G*bZ$AP^rs(?=S!VK;Ntt54JkLdw&Sj2aqeV8IQY^<;Ce;`?JO@akCA8wtBhNLKhu z64Ud!MGsCKhG7Cf)%F<=CEZe?Jz=g8CX1BugVS0bBBSZOfKnOffF0*ojIp z<&B`(?*j+;(}nO3IR^A?JZ&*qNSNaTZ8H%|eP(BLP7PC2Ed&4orW5OOrlRTW7Xzml zw;Ekf$NS^9xNhpj5s~UYkXm?Xk)l?oCiG_rF1{#z#X;UPcpzSHdc?+nw5$+U6;D%b z(22%Kqcq^$;8<55D%S^xTq`{q+^9@N!1U?nMPS&FzMfQu6KP!c@^sq%SDj5IRX$lC<-tdrJV2$nTiCFzAe${O<&yhF9w3xiz0=)rNNc$&( zf>z=7B5Cs7P?1qsJ-Kf%G3_x{EXDA3n@G-))ZWfUk8yz_urJy!&kNRm9I~j~mFCOiC{wDzrDj z0DNr_B4Gce-`TDZkOeFK6q8g?kBLi2Rp@Aff%q^Bhm3OC@cRkz>Gkg1%lVILIIwl% z0F5RG1h2t$w>w_HGYp|uolclv3HkItce@X)(@*h$^L0g;y7#PCKsJ~|zz?zc5o}eE zgAk*1ka@OeY^>MG5BvJ17{b+f<21^KICPL_^}~7kc4RIa0Z(@?l_e@#kKvGC980Bt zl>4H9rBM_iI%>(u#NvtVgG9-;pL9v%7Zv&NT>ZCIf&_@f81 z&FMka!A5vz4ddea-YvM_!<`FcN_p!gFff&}CM^ssFOdmHA65jbr~H104>4JpD9B=c z3K43H79K~bLI8&;z1vYQb3wl$DuiCIAtdDZq}H-8F`;>#VkkO&NJ@vv=LS+7)58&K z4rF>Z4fRkG6Em4oI0~^;i&WL+@V+o7u&t9`W@e6YX-gYbhW@Is=Ty~-H3p(P6yT*N?h$Xp^61S)>30 z)U{2kb$00|t`ACTe6HhkUVhEHMmgw1JQY|d$Fb1HTkFl0_SPwU#30R`{Agd-S<3S+ z?epJ1u>_Rtv&`Q0MWvi{Q~C$COTv3#Waj6g!OsF;DKgj?K-3zV)1Oek<#0xAT(<1P zE?u#?%JyrXz*FWEO^WA2Tf4(Eyismy6WbbG(w7erQfm=drEs)Q$x%fYnA9RvWgIYl zYL#J0pBO#aTwYe4n^h&w4U<&nNZceL-Jhzj{HO!-G;*?Zo?)mjn2f2`HaCLXXU9KV z6NC=ipxUyd)fquohDcChy_#B1C`m>$#Y8dZuD;+B!c5~>wVc{k(0mE3h3k@4pdRPT zhcB_RB896&uwd9Le+B!YVhK%Q0GZ_?u+&?#nij4ZGg{h@7x7dNt`MN!Go9%Ej0F zDC-ahxq3oHL4LmBxD5pFL=B0vEygcORqa@k-A|6eqA$bo1Ho$?dvFH@}zFBuY3ua0|E-@ewY7jxV2Klg`Bu+P)F#vTCHDd@PO1- zzOyL3nB`f|rN~SN-jhv?$~V7ax_CEU`A3c>n#~)4IK*P)S<+`S#-@pGV>LdP)X3O| zq+0DSJY|^6VHJ^y##9k`b_cwduxaV1g%H80B@ig3Y;j@}vb0C}nw3*&u2g53P2;So zLo018o0#W7TY}=`>Vap#l_l??>@$%W`V35&St+J-(P9w)ZP~R6phZ~}g9p)?u zzG?{?i*YoK_;hxZ!x{8p{7lLcqj>xUR_4-r(HPwjTAUJ}@I@8P*I19y4-?F4hfs;G zp*zcg06(bh>0vQrD*HhR6?R51{{n>kB*cRugA43P_g6K!LAwy7nVQs@k#B(3B3L5X zCKP*|>9k}qCeYQTRH8$?mP}|I6qvPS=Ji&`^D1`~$ zKxE`HL}f!p<;!M@b2ldEYD(HUXOgnBA^Q#2whU0=J1p zn==&%Fn4DLykyG&H&NI>x+Fco6&m9UKx-N|ElIr+u(Zrok*t`S%AU&hYnu(q`1WGf z6}iLgj?)#K2O;5tyRwH-;tJP^31Pww^nPQuvqQuZPb^V(=dC;e4@BAx1*51uPgYDB zTTh$!Ba|zn50@PyF;+!F6H$RV5TyBfGma##B*;rTFinUIwQX2k8+z5{y-r<%*l%QM zU@bXKfmJfTIBm7r?X5YR!gWhZCsbchn+OCY(OnGZoIwVciw8eCV(gCJf5Y!NqX+h= z4KB**0!P8ti0O>&^=0tESGV1selP%GxL@ z0WY}KPZBOe_%1?N=Q8*87D#i{pFvW;Xnd=!Eow~~19P7RR!(Al0e0ki&>9$u+I~G@ zo1B|97Ig6PgN+KM*)&i$@-+ulo4-ISTN+HjD0HQ~cyM?J<>0n1gIdVQtoh5P$7RqY zhe;{^+LwfHPCUH}Zari%r^K$_Ir@_$NXucq@;H?5sHoiFDDy@AP^muOF6k0_qcaIT z_pbBg)76oOeTdY)5i#L*wsAa9n4>lnc>W6M0a@)-=qq2jnSK+CI*1J-sh4=IdCYbC z8LBx^vn4x{w<$hd!^`xq72<%6r<)^qYLRf%5yel9Q0m`+jxT9CH?>j8fxEE zJ|y?wNGwz!awY?o;wQ&|Iu?UY5^PxzU!Q@5K{3G*O+6J%l}ubgD3c|;d<1)OZRbDn z0GYH#S5O{jYDPLubaXD7#jq zSoMYCA*$iPJhA28nApIM&x1EU@wSCkv95pUBmEF(;6zjw%qNO`d#82} z#bP~S-VU+2Dr$Lr40c~6$t;n|X>7scl{k5^2c)DiOV40<;Y`xI#gmu+l72YkelN*5 z2SRIFPNg%&u+2^4&TN}bv!=Q1SAg*Z3xk z@0kg|38l(;`B?Dg4)0r05nF~e0Ps(+R^S_hVtpt z3(}4u^r5kfVLEY1-h?R|o6RlStw-`@ZW!IoTGW?McdN~3--^g@RKT6wW)gAf@g;hd zz!^&MHj?88cPi21Gr;bsnWb?Jp#17LtiqbVb;gu2F77bXhmDW~wYqB!zb8lyB@5gU zzGptG+v~V+O<$eYQDEwGKx6-++9wm(q<2NweQZ;orE`9}BEZh!qJmY>EPGjbK}~kY z=)OO5^pvBsS$11-;MkjwGeURtC`;&^(6V$*MBqa$dD%N6SpQUcOci^dJ-|yc3}k{J zpf@eK?Ifp80Z$ zO&A`>0{VP9U^C%g_4z-#`yYD}~p?09m$f*1j{KszeM$>gAX9U?e51C!!O+5&5pOsz@lx7{Ft95-pOO?5nvF&gkr zX|sm=OO|#iI-O=g^?R{3x-E{4Lkt?nJacJO7L25(+CmKabLJ|gXAO@2Pl;z7f{tGf zmlrnM>9#0SAe~OU1=e1}aT`#&?=*K+aK3^BJyAEyT&qpxwc_Y1=B`(|P^UX((+^`` zM(}^j5kc`Hr2z8nyui{%)|^Y&eK@+*H~#{`iY+te0ieJ+j7b;Xtm0IW<0)SjB@=Wk zXpE1Hu;;E?paMC~wfvve&tnfCpk=IFA3U{MYj?)`-Ka;Tf+KY>xok0Gc4H!GVRf~O zjGY02p=e-HR`RpXmSlx)xia4=^}|UsR)$6%B~N~i&#|RCgzW=(y>h$d;xmn;^D(;) zi*Q=LPs2Na7d#F6$j!ZMfO%xslz($MDY(QdDjDb(Z&Zs*^bIZUi7jx< z+?{)ah0v@@r&s7~I>MRZ4mCFuz08*01Yh6`JSq#Ag8Q9N=&0B_T&!4EPRdS`UJrcp zda7?)1_=f8I0N1&e|LDQ&!uIKcVkSK#qxoU=w@?@iBYml$t2?lwMI`~b1de{DUYTI zHoHkc%stHCcOaa}Hx=IjVv1tJ00D9TI;{Vx74vU4K>@mePS{GQkMOY4Oewp*IjrPm z60m5%aAox-bS#on)9(gFib70i9KE4ZPz|jOgN2{`&dPV(-X6hNXiBMMeZzZ%cgXS~ z)UV7}>)O=3UNAbd@_I=3xZSFF>jhyA#wX4Zv_zapmfnlES}NWcCP!9EJX)A_KEVTp zRVty{--pO{euvo3pU8d#@i`w9p&q=F$KS@imx8<1g>aK-?Mb|6j@TCVF|WYv8rhE> zcR?31F(P+}A$G#vp-p+PWY>f2Ex81t9%}rTL|s$&Rb=SvOhZP^Pnd>O+Dr+$Y7rPi z>aP+S%oV8S(+cF3WHc1Y4Bo$yza(aFG2e$ERU8HFR+ZpU=34%+n3}^J9z>GjvBMvd zgw}@oX|bRnN!+0;-&L#*t*jIstH8BX4NSpI4VM=4zFfID1(Xw&7pfj)u|QYdKMZA~ zf=e%OVeTlde!}*O`h=Wm5*06oP#_JuLW6#$+TWMvVv+xc)KT^NrjaXidII# zH5cEKYA3b%O+{+40cSLD+x(@mU5|ZG5eu1c6&!x}JZ#?~QUng3pQ43P3PF0@{+J^{ zdiUY^M$>Frs(rV;RAOUCf~$Z9G3q&-0eeY;eXnEn!xqlPLgCT?)yMK{xPgVHm^Bp` zN8(L%`Juxk7rT7!_a{4>URqt+D)cVJ*0|R-qNB7QoLDovjJ+^Ce3oJXp=~flApcS$^LHK@iA`uDH7h3p&rr-g{p(0zm@P!^!eZ9U8gFah>Uu8`MfJY9G>z zdUSlO*~+l$Oj|+vfKm;2JF5$KJEzNnhJ!i(IA;a~To(swAKJc$L>z_t(SAxD#fKSs zA}VGTQYo9^#IV&l8vW*x!sSLGE6lb74wj7&PbXOC+a!{HU{IktQPYR6RQ*sMn}xI3Lg)!MoTh&`40Am5-cg>*7oGq_R{JCB|(;wrP{@EZ4|eaG+UNBNlOLMJH;4)jMik zbb>1f{Zn5q8F_8)r}_RqaK&Y`qO}6%W^C}{kjv`Bpe-3f8N zCaM4>Mh@LjC`Rk+5>Q4Wlb$?qKPw?_wZQL_G98i^^e6K6+w2g@Xkib)mj0*Xm-(m? z?kO3Z4;g3fYn;p-Pwr1I-XYOY>A!w0FHPhth;Yx4mAexdnkGS;7ww(dM@LI;qv3h> zp^>KJX1h9Xvpp078rf~c+(t#9pnCW^dG(8bk&6Ej9nF3bbhobd@CLMDvuBcT%^L=!n-YCWvL5YHDC8yQy$H~1(eXB*U%qiZ^W16EYLVr%-fDH;#6 zrSs5Nf0Dsp2MnapR0TKaL~0QGK4!)muLhc2wxm3boIP3XD!G4db++-7NU%4HN<&jx zjX8Zo_qB7R+5_hk6YYSY0yVy=GidB9>@EqH@(CuM2^JS`dnolTz2;XdvaIpv!rcl~ z#@A1ME`bJmZb@?=f|AA}15bl#R>9gd3KIfp#Hv;~?+Fv^#Z2C5`9VJowwH8inX$Ba zNKd8>j{D{M48ELn@|Hz{C6;wF5^&wF#U)WnjZb1Yr4}w4iij94wNu;m7 z*F{=3$t=F6MT+mUZu^S_@lo(*k``zBsqoKBj_hNfHe;{iX*VDWxns9avNsaydqYWsbGaVt3-X}~LI0~> zQr{hX#6tZ?PJ)D|XVZ6mXQf>-;3+5uoM!!3dKZ5@1_Dkxwg!JV!2Ct;qD%>}R+UHO zX#lugJ656Pc&TQieiZZIKuvHM=yK(`l(hJ*My^%?U~t(26C)97BzOeobdXj|&9D1fpHOhSpdElN_?QCr%lm)+e(*3OOY1(*Q+oVP4q->RJ4f?f=S-3!p*&=z0$aY2j@s@K8FSF()PF> zLGK)}M0Y_ytay-rC|{Uzp+0)qdfbJpwH$(?Dbkcj|2Uk$bFg53^C2VC>=kZd_yo?I zLMJ28ZrffTd-az*BDt@PqXLbq_XcQ?h$Y!9q|f}Yj%kQRJqae{1n52_exXH(7$xjA zWE8A|-T4rBERy|=l$E&01?v5a3+Ov!H0FX1{=4ywFoANVsxXS#jgSqd^4FOg)P2C2 zJg~L$B3sP4!mRv>9zw@>Oc1Y~@+p|7UB2?Xfe=3iFTbvOUnBuuAIza~I7#PdALe5T zI=95S)yO|fxI^mkc8mszYZ$kj>I+SrP$nW&HP~jG2>QXT)!zqx3Q%!aEP&UZ(RX9S zuLJ*IJiMMc=|#xPNOkigdH{T|rz?snJ`uA(i&n@`iOZt`Lqn}L95kCtuvf3dKe8b_ z0(r$Z%H)8?31TE>xYV4r>Fn;^9N~2GjN#eir6Z@4D!`P(<*dOJnt%KnPqop3S-!xr zBLL-wC+DIITmg;56*cVdg`HB=wJxz>84W< zK+lqvw=DPOpo5WTFHW8s$p@5$4JlBz7z`tzmSZ|MZ?OcgoI550bp{qfNov)8Qt-q4}my znQqsQS7%oAKzTNA`_x7TWE5@dMyE80Jd|Qk*IcIF zoXj2(n>~!EJ#m_rSYM#w&@xWR>cK>b6PTm6P^?~I2AXz3igj`rEQ?J^z~2%)<$@k4 zFhx0EY_LbL&}?GuKE|*exuRNY99NMsxD0Xy!K$PbAzA!Rqgj5?UcI2T$my0G-gBlH z@__5>L<2M4tB`H@Ww6v;1Q~@ka7#{n(>Ut2a2rjwres(#pBJzQYm(G1HL~0XyKYP* zskO$2Sh;P-deJb3-P8)H!MM1mozgH(XzAU-zB;YLHbF!##8|z%EztGnVEswZq4PSy z&JrKi@!NHiZ^G^8oQ;#CB3=$UpMD?%!(bp+^%zFv>~2t}B3l{}Xgy`Da2SobKOK6>1OfWS-!Us6n#-%ZN_ z;yS(TGrj5FxbAW1c>JrGJ7*@7`OHwNLwF<~Gmo=5z)gf8|QL{hb8m&R9R z;?s6wbdK4|9oF6G84QdVlhECaQise&_Jb2r;V-xJ_S`gW+% z>lm%zVrOq)@o#Jj8L`8X-TbJ5pXN&}>gs1rXGE4+1yO{10x+V{G2YO>KJZM%pNb(x zA)gXll~nPCA?OT3rZ7P)66jG&XTJFKG@9Pj>ebr*qVt7$5+Onau{mmvn*S)UIa;;| zq1VtW@=s9ui}%s|^~3$**^5T_tI{h-p>ABZ@o&!T!nlN}RasZ|KLRoy75?5w5Vu^YUs1eH>zg}YT$bso$Oz3PZJ6b4hw1`+|z6U)Z!dEKvq z>a+Di(xTkhv%0L0fQ3`w#MHU0ZlV&dY|5_N7$7@iG@X)biOBJ_pS5U7EBmFW59)Mm zhg~HE=heFWFmT9N?q)T13N=cC-2**8V8;PUl6qIK3f=&X#?EhuhOr%b2K1EFx}g2C z)|;&(Cxzag4s4V*m%GRqaDSPr4qeP^cC7vc`u8TKLo@b;05oR{z*xleYm@$E+Wp~J z{mb$)L1E2m@-^zCEEOt@UFWhQ3ko|f1KXiHGo}n_YI3v%lp%s!3x9WWyoTKp-96vk zW*9l|EyOM0jmu&|-w)JeGLzsY{mgwYeQC|h^AXq@s9zL&iH&J~EZ1}k%aL}Pjs-GB zCG#?O&R?<3Mv#H~<2YHVBhLZ8cKAd2J>@;Go8-zn!mlVfuPo%!4efUW{Fkd<=ajg{ z1ka~D5$2b0wL=OeA!w}dN2JFf3#~bTx9{2eo~sVzlt*tX6;3Yscd5D`w3rv|?<;JB z#a3#cWrj&@+zLjfYv;Y;HSfs#y;DNsR#ne0{$;(RE0l@m zer}jy#?}S&)&@wvY8xFiAm3COE+L(voaSv+zlcV!etWTnLj!L9XjmIJG*Fc(2dr8S zOwKI82u@uk&A*s#V7zZgb%nP(r@@fMI3kK1+u5^-ed>d0jfbGS9z-ehHd1WvIJIi@ z%)*dcVT96$)_7o4VpA%yFRv_R`wME;C2JN-W;SvmPsCP(b&>%V6>pJFZ!PEhzz14_ z8eyUbjK6m)(R#=m9>8j22o2l1`kFpw&c`qcvdbo8BvgvBU zkSd+2lwQ7}R27+co700$2^9x^j^+-u24ZCYI>qMeUU<}|5XY$mG^$iu7sFOojho|* zyOC2(3unip`vW{-pa{}vFv}z|+JtYgc(nk1ptV$IrT3C1Gqqr6vNtzypNO-KoPY2G zFg~O>!*rU}v>@Toc*bOeCaKXti3?fmXh}?7dlivc36+upy8ioYOq*(a71o*7eukMN z^T&z+GHtr5Fo5Q?bL@R_*LWA$g$52y=((cyU|dhuWR0z-1e;tOj$i4hjc}Ev%oCSh_zKEfyyxALF1bRp;PF6vgU(-u4jOIn@+V3hQLc<%+9O z%YO|SE?OiRWNIAF+rr!+%}S6G$9^}>L7WXgMnx_pcMvUJQA(v|_heoq-U%F0Op?>a zXW5!Az@0djqMqhdUm&kSvv{Ten|X+)J=)4~^{8^#MIj)9@oh(ApQqEEmv=nauDf>+ zXY`0|QD$mYMiDxYw;K&Mz-i-A+zn&V#A27LKA7toR69`sVvtK*?3yDg%)56&pBSqf zt$9@Rn>V;~Fu8Bm`aQ7REzP0kt+apH$- zDr_gXjhlPk$DHa5Fts%Xpz}1t8QC5aKHN~6V(d*Hn{axXDEBFW8=)Ga-e00?Nh=tC z&3o5707Y{X+$&<& z;I27-3SG<>UZ%Z>6m3cSTA#(#VNvig3_}WDZNB~cQ`t|UK>Gdkj4q5-Djd$-(`yw0Uy-w|NL>~`Fwv{{7*6&0a*!A5e3DUGNOM)FnmS~nC*UC zh(O;2QUTw;%OU+!3czdAUsAOHNby5J>7Nn;BuoF2@Zj$We*|Foh1u9w-|#))uQPxT z$&cjUZ?!(Sfc4j3q?`T(_%kZhpGxb`bJV*UFpCP9=dA%H|K9w6UbQ~o8{?kpN!`0S9|yfcCA4-cMoY=Zt&Ds&>TynkB%8_)j{(z1GJOkcZzeO8i-dKVCAQ;UJ=L`}>M1oZR_?CfN8EOm_jjI{7P?;~*9qTdy??*R6^ zzvmqf5YqHF1S)?7<^Y&F3{8w20P@)YDf!>$UETxFWCu_sSb)4U{F!mUz1HUr@wd>= z+fy76EW-T1Wjx=7p;;M_aUekLd>=9XylQ=D(SM6BZDsUdYhldxC=?CgXJQE`^Y>#> ze_pjd9e@xZzo~`41-<)y@i|uOS8xE2*fC%fAp8>$aIf{j1pNFBCg4z@y^gv0@6lE| zr9*lEm6-q-nEu{QHh_Nd8#F;HEBo(ZH>_oJOe_I5*Pp>Qo_7K9*#^=nKpT+&iuyfd z!k<^Ik2fIX-*2FQbO8}(13icTsHZ{gaq7ceNu#ei~7ey@dNvN zrhi`%&m->s30>-`XC!pcG{~iM8Im-7`-yg~E*Y~h7e_Y?^ zF;kttmGZlU&GW?1gUI}u9MEBYP5h^uz+aZ@&y26n;hzTv`3X;||4ZKf0{i3TlJVEx z_`Tkqhv4{$ifHgJQ2!wy$MgI@4|VX93EB8xF#Xk02v9ofzXm>dPW4=A{wLL==|55Z z7v1^i@XsaFf5OL`{}cR=miQ+D_2*R2wO4;q)!Y9Isy{02e^u9W`O2Rp^G^SQbIj*jQ$I0}z5faGM}zzU{l|~LZ0 z)pMWPpO~jP{~Pl+9=6Xj{oH}^C&6akzaaSQDE0diJa-@aNzhyP3&EeW#J@58J}=30 zcaNV$o~6GK{nB0k>2Z6$h5i%Szv36VM3o&v)#8 z!p_zF6YP%x;~)0#o)_S`UH>N&PUA03&)*;ZQg{EOK+kQ>KWR>zexdmb?2iKdar=j{ z@43tAD1qOHv{2pC~5eN|=J*VCI{n!5k DXC5Z7 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5ea98a321..6c9a22477 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-6.6.1-bin.zip diff --git a/gradlew b/gradlew index 9d82f7891..4f906e0c8 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,20 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## ## @@ -6,20 +22,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +64,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,28 +75,14 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -85,7 +106,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -105,10 +126,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -134,27 +156,30 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282aa..107acd32c 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -8,20 +24,23 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,34 +64,14 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell From 1c7a101b47399f9bb49daf9125a70f506b7a5b84 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Wed, 7 Oct 2020 13:28:11 -0600 Subject: [PATCH 11/46] gradlew run now working with Java 8 and Gradle 6.6 Apparently gradle changed the paths at some point from build/classes/main/ to build/classes/java/main --- annotations/AUComposition.java | 2 +- annotations/AUExternalTest.java | 2 +- annotations/AtUnitExample1.java | 2 +- annotations/AtUnitExample2.java | 2 +- annotations/AtUnitExample3.java | 2 +- annotations/AtUnitExample4.java | 2 +- annotations/AtUnitExample5.java | 2 +- annotations/HashSetTest.java | 2 +- annotations/StackLStringTst.java | 2 +- enums/Reflection.java | 2 +- standardio/OSExecuteDemo.java | 2 +- strings/Hex.java | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/annotations/AUComposition.java b/annotations/AUComposition.java index 451af4cc6..88de7d7e6 100644 --- a/annotations/AUComposition.java +++ b/annotations/AUComposition.java @@ -4,7 +4,7 @@ // Visit http://OnJava8.com for more book information. // Creating non-embedded tests // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AUComposition.class} +// build/classes/java/main/annotations/AUComposition.class} package annotations; import onjava.atunit.*; import onjava.*; diff --git a/annotations/AUExternalTest.java b/annotations/AUExternalTest.java index d2f4e5ca9..c18eb6b30 100644 --- a/annotations/AUExternalTest.java +++ b/annotations/AUExternalTest.java @@ -4,7 +4,7 @@ // Visit http://OnJava8.com for more book information. // Creating non-embedded tests // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AUExternalTest.class} +// build/classes/java/main/annotations/AUExternalTest.class} package annotations; import onjava.atunit.*; import onjava.*; diff --git a/annotations/AtUnitExample1.java b/annotations/AtUnitExample1.java index 2c42aad4f..03e7e06bf 100644 --- a/annotations/AtUnitExample1.java +++ b/annotations/AtUnitExample1.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AtUnitExample1.class} +// build/classes/java/main/annotations/AtUnitExample1.class} package annotations; import onjava.atunit.*; import onjava.*; diff --git a/annotations/AtUnitExample2.java b/annotations/AtUnitExample2.java index 79c04bfd6..3757ca928 100644 --- a/annotations/AtUnitExample2.java +++ b/annotations/AtUnitExample2.java @@ -4,7 +4,7 @@ // Visit http://OnJava8.com for more book information. // Assertions and exceptions can be used in @Tests // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AtUnitExample2.class} +// build/classes/java/main/annotations/AtUnitExample2.class} package annotations; import java.io.*; import onjava.atunit.*; diff --git a/annotations/AtUnitExample3.java b/annotations/AtUnitExample3.java index b4d13d6ef..64c29dd7f 100644 --- a/annotations/AtUnitExample3.java +++ b/annotations/AtUnitExample3.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AtUnitExample3.class} +// build/classes/java/main/annotations/AtUnitExample3.class} package annotations; import onjava.atunit.*; import onjava.*; diff --git a/annotations/AtUnitExample4.java b/annotations/AtUnitExample4.java index f2114c441..2ad04c5cb 100644 --- a/annotations/AtUnitExample4.java +++ b/annotations/AtUnitExample4.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AtUnitExample4.class} +// build/classes/java/main/annotations/AtUnitExample4.class} // {VisuallyInspectOutput} package annotations; import java.util.*; diff --git a/annotations/AtUnitExample5.java b/annotations/AtUnitExample5.java index 20f608601..80a1588cf 100644 --- a/annotations/AtUnitExample5.java +++ b/annotations/AtUnitExample5.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit -// build/classes/main/annotations/AtUnitExample5.class} +// build/classes/java/main/annotations/AtUnitExample5.class} package annotations; import java.io.*; import onjava.atunit.*; diff --git a/annotations/HashSetTest.java b/annotations/HashSetTest.java index 62fc7a162..dc2ed34cf 100644 --- a/annotations/HashSetTest.java +++ b/annotations/HashSetTest.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit -// build/classes/main/annotations/HashSetTest.class} +// build/classes/java/main/annotations/HashSetTest.class} package annotations; import java.util.*; import onjava.atunit.*; diff --git a/annotations/StackLStringTst.java b/annotations/StackLStringTst.java index 98531711f..c60f3802a 100644 --- a/annotations/StackLStringTst.java +++ b/annotations/StackLStringTst.java @@ -4,7 +4,7 @@ // Visit http://OnJava8.com for more book information. // Applying @Unit to generics // {java onjava.atunit.AtUnit -// build/classes/main/annotations/StackLStringTst.class} +// build/classes/java/main/annotations/StackLStringTst.class} package annotations; import onjava.atunit.*; import onjava.*; diff --git a/enums/Reflection.java b/enums/Reflection.java index 92799a941..c78c4a7c9 100644 --- a/enums/Reflection.java +++ b/enums/Reflection.java @@ -38,7 +38,7 @@ public static void main(String[] args) { System.out.println(exploreMethods); // Decompile the code for the enum: OSExecute.command( - "javap -cp build/classes/main Explore"); + "javap -cp build/classes/java/main Explore"); } } /* Output: diff --git a/standardio/OSExecuteDemo.java b/standardio/OSExecuteDemo.java index 57ec2468a..83186478c 100644 --- a/standardio/OSExecuteDemo.java +++ b/standardio/OSExecuteDemo.java @@ -3,7 +3,7 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates standard I/O redirection -// {javap -cp build/classes/main OSExecuteDemo} +// {javap -cp build/classes/java/main OSExecuteDemo} import onjava.*; public class OSExecuteDemo {} diff --git a/strings/Hex.java b/strings/Hex.java index 9257d87f5..c28f95086 100644 --- a/strings/Hex.java +++ b/strings/Hex.java @@ -27,7 +27,7 @@ public static String format(byte[] data) { // Test by displaying this class file: System.out.println(format( Files.readAllBytes(Paths.get( - "build/classes/main/onjava/Hex.class")))); + "build/classes/java/main/onjava/Hex.class")))); else System.out.println(format( Files.readAllBytes(Paths.get(args[0])))); From 6457a1dee58c38b8b4d3d66c54b7311f4e0e5908 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Wed, 7 Oct 2020 13:35:40 -0600 Subject: [PATCH 12/46] Update copyright date --- annotations/AUComposition.java | 2 +- annotations/AUExternalTest.java | 2 +- annotations/AtUnitExample1.java | 2 +- annotations/AtUnitExample2.java | 2 +- annotations/AtUnitExample3.java | 2 +- annotations/AtUnitExample4.java | 2 +- annotations/AtUnitExample5.java | 2 +- annotations/DemoProcessFiles.java | 2 +- annotations/HashSetTest.java | 2 +- annotations/PasswordUtils.java | 2 +- annotations/SimulatingNull.java | 2 +- annotations/StackL.java | 2 +- annotations/StackLStringTst.java | 2 +- annotations/Testable.java | 2 +- annotations/UseCase.java | 2 +- annotations/UseCaseTracker.java | 2 +- annotations/database/Constraints.java | 2 +- annotations/database/DBTable.java | 2 +- annotations/database/Member.java | 2 +- annotations/database/SQLInteger.java | 2 +- annotations/database/SQLString.java | 2 +- annotations/database/TableCreator.java | 2 +- annotations/database/Uniqueness.java | 2 +- annotations/ifx/ExtractInterface.java | 2 +- annotations/ifx/IfaceExtractorProcessor.java | 2 +- annotations/ifx/Multiplier.java | 2 +- annotations/simplest/Simple.java | 2 +- annotations/simplest/SimpleProcessor.java | 2 +- annotations/simplest/SimpleTest.java | 2 +- arrays/AlphabeticSearch.java | 2 +- arrays/ArrayCopying.java | 2 +- arrays/ArrayOfGenericType.java | 2 +- arrays/ArrayOfGenerics.java | 2 +- arrays/ArrayOptions.java | 2 +- arrays/ArraySearching.java | 2 +- arrays/AssemblingMultidimensionalArrays.java | 2 +- arrays/AutoboxingArrays.java | 2 +- arrays/CollectionComparison.java | 2 +- arrays/CompType.java | 2 +- arrays/ComparatorTest.java | 2 +- arrays/ComparingArrays.java | 2 +- arrays/CountUpward.java | 2 +- arrays/FillingArrays.java | 2 +- arrays/IceCreamFlavors.java | 2 +- arrays/ModifyExisting.java | 2 +- arrays/MultiDimWrapperArray.java | 2 +- arrays/MultidimensionalObjectArrays.java | 2 +- arrays/MultidimensionalPrimitiveArray.java | 2 +- arrays/ParallelPrefix1.java | 2 +- arrays/ParallelPrefix2.java | 2 +- arrays/ParallelPrefix3.java | 2 +- arrays/ParallelSetAll.java | 2 +- arrays/ParameterizedArrayType.java | 2 +- arrays/PythonLists.py | 2 +- arrays/RaggedArray.java | 2 +- arrays/Reverse.java | 2 +- arrays/SimpleSetAll.java | 2 +- arrays/StreamFromArray.java | 2 +- arrays/StringSorting.java | 2 +- arrays/TestConvertTo.java | 2 +- arrays/TestCount.java | 2 +- arrays/TestRand.java | 2 +- arrays/ThreeDWithNew.java | 2 +- arrays/jmh/ParallelSort.java | 2 +- collections/AdapterMethodIdiom.java | 2 +- collections/AddingGroups.java | 2 +- collections/ApplesAndOrangesWithGenerics.java | 2 +- collections/ApplesAndOrangesWithoutGenerics.java | 2 +- collections/ArrayIsNotIterable.java | 2 +- collections/AsListInference.java | 2 +- collections/CollectionDifferences.java | 2 +- collections/CollectionSequence.java | 2 +- collections/CrossCollectionIteration.java | 2 +- collections/CrossCollectionIteration2.java | 2 +- collections/EnvironmentVariables.java | 2 +- collections/ForInCollections.java | 2 +- collections/GenericsAndUpcasting.java | 2 +- collections/InterfaceVsIterator.java | 2 +- collections/IterableClass.java | 2 +- collections/LinkedListFeatures.java | 2 +- collections/ListFeatures.java | 2 +- collections/ListIteration.java | 2 +- collections/MapOfList.java | 2 +- collections/ModifyingArraysAsList.java | 2 +- collections/MultiIterableClass.java | 2 +- collections/NonCollectionSequence.java | 2 +- collections/PetMap.java | 2 +- collections/PrintingCollections.java | 2 +- collections/PriorityQueueDemo.java | 2 +- collections/QueueDemo.java | 2 +- collections/SetOfInteger.java | 2 +- collections/SetOfString.java | 2 +- collections/SetOperations.java | 2 +- collections/SimpleCollection.java | 2 +- collections/SimpleIteration.java | 2 +- collections/SortedSetOfString.java | 2 +- collections/StackCollision.java | 2 +- collections/StackTest.java | 2 +- collections/StackTest2.java | 2 +- collections/Statistics.java | 2 +- collections/UniqueWords.java | 2 +- collections/UniqueWordsAlphabetic.java | 2 +- collectiontopics/AssociativeArray.java | 2 +- collectiontopics/Bits.java | 2 +- collectiontopics/CanonicalMapping.java | 2 +- collectiontopics/CollectionMethods.java | 2 +- collectiontopics/Enumerations.java | 2 +- collectiontopics/FailFast.java | 2 +- collectiontopics/FillMapTest.java | 2 +- collectiontopics/FillingLists.java | 2 +- collectiontopics/FunctionalMap.java | 2 +- collectiontopics/HTMLColorTest.java | 2 +- collectiontopics/LinkedHashMapDemo.java | 2 +- collectiontopics/ListOps.java | 2 +- collectiontopics/ListSortSearch.java | 2 +- collectiontopics/MapOps.java | 2 +- collectiontopics/NavMap.java | 2 +- collectiontopics/QueueBehavior.java | 2 +- collectiontopics/ReadOnly.java | 2 +- collectiontopics/References.java | 2 +- collectiontopics/SetOrder.java | 2 +- collectiontopics/SimpleDeques.java | 2 +- collectiontopics/SortedMapDemo.java | 2 +- collectiontopics/SortedSetDemo.java | 2 +- collectiontopics/Stacks.java | 2 +- collectiontopics/StreamFillMaps.java | 2 +- collectiontopics/SuppliersCollectionTest.java | 2 +- collectiontopics/Synchronization.java | 2 +- collectiontopics/ToDoList.java | 2 +- collectiontopics/TypesForSets.java | 2 +- collectiontopics/Unsupported.java | 2 +- collectiontopics/Utilities.java | 2 +- com/mindviewinc/simple/List.java | 2 +- com/mindviewinc/simple/Vector.java | 2 +- compression/GZIPcompress.java | 2 +- compression/ZipCompress.java | 2 +- concurrent/Baked.java | 2 +- concurrent/Batter.java | 2 +- concurrent/Breakable.java | 2 +- concurrent/CachedThreadPool.java | 2 +- concurrent/CachedThreadPool2.java | 2 +- concurrent/CachedThreadPool3.java | 2 +- concurrent/CatchCompletableExceptions.java | 2 +- concurrent/CollectionIntoStream.java | 2 +- concurrent/CompletableApply.java | 2 +- concurrent/CompletableApplyAsync.java | 2 +- concurrent/CompletableApplyChained.java | 2 +- concurrent/CompletableExceptions.java | 2 +- concurrent/CompletableOperations.java | 2 +- concurrent/CompletablePizza.java | 2 +- concurrent/CompletableUtilities.java | 2 +- concurrent/CompletedMachina.java | 2 +- concurrent/CountingStream.java | 2 +- concurrent/CountingTask.java | 2 +- concurrent/DiningPhilosophers.java | 2 +- concurrent/DualCompletableOperations.java | 2 +- concurrent/FrostedCake.java | 2 +- concurrent/Futures.java | 2 +- concurrent/GuardedIDField.java | 2 +- concurrent/HasID.java | 2 +- concurrent/IDChecker.java | 2 +- concurrent/InterferingTask.java | 2 +- concurrent/LambdasAndMethodReferences.java | 2 +- concurrent/Machina.java | 2 +- concurrent/MoreTasksAfterShutdown.java | 2 +- concurrent/NapTask.java | 2 +- concurrent/OnePizza.java | 2 +- concurrent/ParallelPrime.java | 2 +- concurrent/ParallelStreamPuzzle.java | 2 +- concurrent/ParallelStreamPuzzle2.java | 2 +- concurrent/ParallelStreamPuzzle3.java | 2 +- concurrent/Philosopher.java | 2 +- concurrent/Pizza.java | 2 +- concurrent/PizzaParallelSteps.java | 2 +- concurrent/PizzaStreams.java | 2 +- concurrent/QuittableTask.java | 2 +- concurrent/QuittingCompletable.java | 2 +- concurrent/QuittingTasks.java | 2 +- concurrent/SharedConstructorArgument.java | 2 +- concurrent/SingleThreadExecutor.java | 2 +- concurrent/SingleThreadExecutor2.java | 2 +- concurrent/SingleThreadExecutor3.java | 2 +- concurrent/StaticIDField.java | 2 +- concurrent/StickHolder.java | 2 +- concurrent/StreamExceptions.java | 2 +- concurrent/Summing.java | 2 +- concurrent/Summing2.java | 2 +- concurrent/Summing3.java | 2 +- concurrent/Summing4.java | 2 +- concurrent/SynchronizedConstructor.java | 2 +- concurrent/SynchronizedFactory.java | 2 +- concurrent/TestStaticIDField.java | 2 +- concurrent/ThrowsChecked.java | 2 +- concurrent/Workable.java | 2 +- control/BreakAndContinue.java | 2 +- control/CommaOperator.java | 2 +- control/ForInFloat.java | 2 +- control/ForInInt.java | 2 +- control/ForInString.java | 2 +- control/IfElse.java | 2 +- control/LabeledFor.java | 2 +- control/LabeledWhile.java | 2 +- control/ListCharacters.java | 2 +- control/RandomBounds.java | 2 +- control/StringSwitch.java | 2 +- control/TestWithReturn.java | 2 +- control/TrueFalse.java | 2 +- control/VowelsAndConsonants.java | 2 +- control/WhileTest.java | 2 +- enums/AlarmPoints.java | 2 +- enums/BigEnumSet.java | 2 +- enums/Burrito2.java | 2 +- enums/CarWash.java | 2 +- enums/Competitor.java | 2 +- enums/ConstantSpecificMethod.java | 2 +- enums/EnumClass.java | 2 +- enums/EnumMaps.java | 2 +- enums/EnumSets.java | 2 +- enums/Input.java | 2 +- enums/NonEnum.java | 2 +- enums/NotClasses.java | 2 +- enums/Outcome.java | 2 +- enums/OverrideConstantSpecific.java | 2 +- enums/OzWitch.java | 2 +- enums/PostOffice.java | 2 +- enums/RandomTest.java | 2 +- enums/Reflection.java | 2 +- enums/RoShamBo.java | 2 +- enums/RoShamBo1.java | 2 +- enums/RoShamBo2.java | 2 +- enums/RoShamBo3.java | 2 +- enums/RoShamBo4.java | 2 +- enums/RoShamBo5.java | 2 +- enums/RoShamBo6.java | 2 +- enums/SecurityCategory.java | 2 +- enums/SpaceShip.java | 2 +- enums/SpicinessEnum.java | 2 +- enums/TrafficLight.java | 2 +- enums/UpcastEnum.java | 2 +- enums/VendingMachine.java | 2 +- enums/cartoons/EnumImplementation.java | 2 +- enums/menu/Course.java | 2 +- enums/menu/Food.java | 2 +- enums/menu/Meal.java | 2 +- enums/menu/Meal2.java | 2 +- enums/menu/TypeOfFood.java | 2 +- equalshashcode/ComposedEquality.java | 2 +- equalshashcode/CountedString.java | 2 +- equalshashcode/DefaultComparison.java | 2 +- equalshashcode/Equality.java | 2 +- equalshashcode/EqualityFactory.java | 2 +- equalshashcode/Groundhog.java | 2 +- equalshashcode/Groundhog2.java | 2 +- equalshashcode/IndividualTest.java | 2 +- equalshashcode/MapEntry.java | 2 +- equalshashcode/Prediction.java | 2 +- equalshashcode/SimpleHashMap.java | 2 +- equalshashcode/SlowMap.java | 2 +- equalshashcode/SpringDetector.java | 2 +- equalshashcode/SpringDetector2.java | 2 +- equalshashcode/StringHashCode.java | 2 +- equalshashcode/SubtypeEquality.java | 2 +- equalshashcode/SubtypeEquality2.java | 2 +- equalshashcode/SuccinctEquality.java | 2 +- exceptions/AlwaysFinally.java | 2 +- exceptions/AutoCloseableDetails.java | 2 +- exceptions/BodyException.java | 2 +- exceptions/Cleanup.java | 2 +- exceptions/CleanupIdiom.java | 2 +- exceptions/CloseExceptions.java | 2 +- exceptions/ConstructorException.java | 2 +- exceptions/DynamicFields.java | 2 +- exceptions/ExceptionMethods.java | 2 +- exceptions/ExceptionSilencer.java | 2 +- exceptions/ExtraFeatures.java | 2 +- exceptions/FinallyWorks.java | 2 +- exceptions/FullConstructors.java | 2 +- exceptions/Human.java | 2 +- exceptions/InheritingExceptions.java | 2 +- exceptions/InputFile.java | 2 +- exceptions/InputFile2.java | 2 +- exceptions/LoggingExceptions.java | 2 +- exceptions/LoggingExceptions2.java | 2 +- exceptions/LostMessage.java | 2 +- exceptions/MainException.java | 2 +- exceptions/MessyExceptions.java | 2 +- exceptions/MultiCatch.java | 2 +- exceptions/MultiCatch2.java | 2 +- exceptions/MultipleReturns.java | 2 +- exceptions/NeverCaught.java | 2 +- exceptions/OnOffException1.java | 2 +- exceptions/OnOffException2.java | 2 +- exceptions/OnOffSwitch.java | 2 +- exceptions/PreciseRethrow.java | 2 +- exceptions/RethrowNew.java | 2 +- exceptions/Rethrowing.java | 2 +- exceptions/SameHandler.java | 2 +- exceptions/StormyInning.java | 2 +- exceptions/StreamsAreAutoCloseable.java | 2 +- exceptions/Switch.java | 2 +- exceptions/TryAnything.java | 2 +- exceptions/TryWithResources.java | 2 +- exceptions/TurnOffChecking.java | 2 +- exceptions/WhoCalled.java | 2 +- exceptions/WithFinally.java | 2 +- files/AddAndSubtractPaths.java | 2 +- files/Directories.java | 2 +- files/FileSystemDemo.java | 2 +- files/Find.java | 2 +- files/ListOfLines.java | 2 +- files/PartsOfPaths.java | 2 +- files/PathAnalysis.java | 2 +- files/PathInfo.java | 2 +- files/PathWatcher.java | 2 +- files/ReadLineStream.java | 2 +- files/StreamInAndOut.java | 2 +- files/TreeWatcher.java | 2 +- files/Writing.java | 2 +- functional/AnonymousClosure.java | 2 +- functional/BiConsumerPermutations.java | 2 +- functional/ClassFunctionals.java | 2 +- functional/Closure1.java | 2 +- functional/Closure2.java | 2 +- functional/Closure3.java | 2 +- functional/Closure4.java | 2 +- functional/Closure5.java | 2 +- functional/Closure6.java | 2 +- functional/Closure7.java | 2 +- functional/Closure8.java | 2 +- functional/Closure9.java | 2 +- functional/ConsumeFunction.java | 2 +- functional/CtorReference.java | 2 +- functional/CurriedIntAdd.java | 2 +- functional/Curry3Args.java | 2 +- functional/CurryingAndPartials.java | 2 +- functional/FunctionComposition.java | 2 +- functional/FunctionVariants.java | 2 +- functional/FunctionWithWrapped.java | 2 +- functional/FunctionalAnnotation.java | 2 +- functional/IntCall.java | 2 +- functional/LambdaExpressions.java | 2 +- functional/MethodConversion.java | 2 +- functional/MethodReferences.java | 2 +- functional/MultiUnbound.java | 2 +- functional/PredicateComposition.java | 2 +- functional/ProduceFunction.java | 2 +- functional/RecursiveFactorial.java | 2 +- functional/RecursiveFibonacci.java | 2 +- functional/RunnableMethodReference.java | 2 +- functional/SharedStorage.java | 2 +- functional/Strategize.java | 2 +- functional/TransformFunction.java | 2 +- functional/TriFunction.java | 2 +- functional/TriFunctionTest.java | 2 +- functional/UnboundMethodReference.java | 2 +- generics/Amphibian.java | 2 +- generics/Apply.java | 2 +- generics/ApplyFunctional.java | 2 +- generics/ApplyTest.java | 2 +- generics/ArrayMaker.java | 2 +- generics/ArrayOfGeneric.java | 2 +- generics/ArrayOfGenericReference.java | 2 +- generics/BankTeller.java | 2 +- generics/BasicBounds.java | 2 +- generics/BasicHolder.java | 2 +- generics/BasicSupplierDemo.java | 2 +- generics/ByteSet.java | 2 +- generics/CRGWithBasicHolder.java | 2 +- generics/CaptureConversion.java | 2 +- generics/CheckedList.java | 2 +- generics/ClassCasting.java | 2 +- generics/ClassTypeCapture.java | 2 +- generics/ComparablePet.java | 2 +- generics/CompilerIntelligence.java | 2 +- generics/CountedObject.java | 2 +- generics/CovariantArrays.java | 2 +- generics/CovariantReturnTypes.java | 2 +- generics/CreatorGeneric.java | 2 +- generics/CuriouslyRecurringGeneric.java | 2 +- generics/Diamond.java | 2 +- generics/DogsAndRobotMethodReferences.java | 2 +- generics/DogsAndRobots.cpp | 2 +- generics/DogsAndRobots.java | 2 +- generics/DogsAndRobots.py | 2 +- generics/DynamicProxyMixin.java | 2 +- generics/EpicBattle.java | 2 +- generics/Erased.java | 2 +- generics/ErasedTypeEquivalence.java | 2 +- generics/ErasureAndInheritance.java | 2 +- generics/FactoryConstraint.java | 2 +- generics/Fibonacci.java | 2 +- generics/FilledList.java | 2 +- generics/GenericArray.java | 2 +- generics/GenericArray2.java | 2 +- generics/GenericArrayWithTypeToken.java | 2 +- generics/GenericCast.java | 2 +- generics/GenericHolder.java | 2 +- generics/GenericHolder2.java | 2 +- generics/GenericMethods.java | 2 +- generics/GenericReading.java | 2 +- generics/GenericVarargs.java | 2 +- generics/GenericsAndCovariance.java | 2 +- generics/GenericsAndReturnTypes.java | 2 +- generics/HasF.java | 2 +- generics/HijackedInterface.java | 2 +- generics/Holder.java | 2 +- generics/Holder1.java | 2 +- generics/InheritBounds.java | 2 +- generics/InstantiateGenericType.cpp | 2 +- generics/InstantiateGenericType.java | 2 +- generics/IterableFibonacci.java | 2 +- generics/LatentReflection.java | 2 +- generics/LinkedStack.java | 2 +- generics/ListMaker.java | 2 +- generics/ListOfGenerics.java | 2 +- generics/ListOfInt.java | 2 +- generics/LostInformation.java | 2 +- generics/Manipulation.java | 2 +- generics/Manipulator2.java | 2 +- generics/Manipulator3.java | 2 +- generics/Mixins.cpp | 2 +- generics/Mixins.java | 2 +- generics/MultipleInterfaceVariants.java | 2 +- generics/NeedCasting.java | 2 +- generics/NonCovariantGenerics.java | 2 +- generics/NotSelfBounded.java | 2 +- generics/ObjectHolder.java | 2 +- generics/OrdinaryArguments.java | 2 +- generics/Performs.java | 2 +- generics/PlainGenericInheritance.java | 2 +- generics/PrimitiveGenericTest.java | 2 +- generics/RandomList.java | 2 +- generics/RestrictedComparablePets.java | 2 +- generics/ReturnGenericType.java | 2 +- generics/SelfBounding.java | 2 +- generics/SelfBoundingAndCovariantArguments.java | 2 +- generics/SelfBoundingMethods.java | 2 +- generics/Shape.java | 2 +- generics/SimpleDogsAndRobots.java | 2 +- generics/SimpleHolder.java | 2 +- generics/SimpleQueue.java | 2 +- generics/Square.java | 2 +- generics/Store.java | 2 +- generics/SuperTypeWildcards.java | 2 +- generics/Templates.cpp | 2 +- generics/ThrowGenericException.java | 2 +- generics/TupleList.java | 2 +- generics/TupleTest.java | 2 +- generics/TupleTest2.java | 2 +- generics/UnboundedWildcards1.java | 2 +- generics/UnboundedWildcards2.java | 2 +- generics/Unconstrained.java | 2 +- generics/UseList.java | 2 +- generics/UseList2.java | 2 +- generics/Vehicle.java | 2 +- generics/WatercolorSets.java | 2 +- generics/Wildcards.java | 2 +- generics/coffee/Americano.java | 2 +- generics/coffee/Breve.java | 2 +- generics/coffee/Cappuccino.java | 2 +- generics/coffee/Coffee.java | 2 +- generics/coffee/CoffeeSupplier.java | 2 +- generics/coffee/Latte.java | 2 +- generics/coffee/Mocha.java | 2 +- generics/decorator/Decoration.java | 2 +- generics/dogsandrobots.go | 2 +- generics/watercolors/Watercolors.java | 2 +- hiding/Cake.java | 2 +- hiding/ChocolateChip.java | 2 +- hiding/ChocolateChip2.java | 2 +- hiding/CreatePackageAccessObject.java | 2 +- hiding/Dinner.java | 2 +- hiding/FullQualification.java | 2 +- hiding/IceCream.java | 2 +- hiding/ImportedMyClass.java | 2 +- hiding/LibTest.java | 2 +- hiding/Lunch.java | 2 +- hiding/OrganizedByAccess.java | 2 +- hiding/Pie.java | 2 +- hiding/QualifiedMyClass.java | 2 +- hiding/SingleImport.java | 2 +- hiding/cookie2/Cookie.java | 2 +- hiding/dessert/Cookie.java | 2 +- hiding/mypackage/MyClass.java | 2 +- hiding/packageaccess/PublicConstructor.java | 2 +- housekeeping/Apricot.java | 2 +- housekeeping/ArrayClassObj.java | 2 +- housekeeping/ArrayInit.java | 2 +- housekeeping/ArrayNew.java | 2 +- housekeeping/ArraysOfPrimitives.java | 2 +- housekeeping/AutoboxingVarargs.java | 2 +- housekeeping/BananaPeel.java | 2 +- housekeeping/Burrito.java | 2 +- housekeeping/Counter.java | 2 +- housekeeping/DefaultConstructor.java | 2 +- housekeeping/Demotion.java | 2 +- housekeeping/DynamicArray.java | 2 +- housekeeping/EnumOrder.java | 2 +- housekeeping/ExplicitStatic.java | 2 +- housekeeping/Flower.java | 2 +- housekeeping/InitialValues.java | 2 +- housekeeping/InitialValues2.java | 2 +- housekeeping/Leaf.java | 2 +- housekeeping/Measurement.java | 2 +- housekeeping/MethodInit.java | 2 +- housekeeping/MethodInit2.java | 2 +- housekeeping/MethodInit3.java | 2 +- housekeeping/Mugs.java | 2 +- housekeeping/NewVarArgs.java | 2 +- housekeeping/NoSynthesis.java | 2 +- housekeeping/OptionalTrailingArguments.java | 2 +- housekeeping/OrderOfInitialization.java | 2 +- housekeeping/Overloading.java | 2 +- housekeeping/OverloadingOrder.java | 2 +- housekeeping/OverloadingVarargs.java | 2 +- housekeeping/OverloadingVarargs2.java | 2 +- housekeeping/OverloadingVarargs3.java | 2 +- housekeeping/PassingThis.java | 2 +- housekeeping/PrimitiveOverloading.java | 2 +- housekeeping/SimpleConstructor.java | 2 +- housekeeping/SimpleConstructor2.java | 2 +- housekeeping/SimpleEnumUse.java | 2 +- housekeeping/Spiciness.java | 2 +- housekeeping/Spoon.java | 2 +- housekeeping/StaticInitialization.java | 2 +- housekeeping/TerminationCondition.java | 2 +- housekeeping/VarArgs.java | 2 +- housekeeping/VarargType.java | 2 +- innerclasses/AnonymousConstructor.java | 2 +- innerclasses/BigEgg.java | 2 +- innerclasses/BigEgg2.java | 2 +- innerclasses/Callbacks.java | 2 +- innerclasses/ClassInInterface.java | 2 +- innerclasses/Contents.java | 2 +- innerclasses/Destination.java | 2 +- innerclasses/DotNew.java | 2 +- innerclasses/DotThis.java | 2 +- innerclasses/GreenhouseController.java | 2 +- innerclasses/GreenhouseControls.java | 2 +- innerclasses/InheritInner.java | 2 +- innerclasses/LocalInnerClass.java | 2 +- innerclasses/MultiImplementation.java | 2 +- innerclasses/MultiNestingAccess.java | 2 +- innerclasses/Parcel1.java | 2 +- innerclasses/Parcel10.java | 2 +- innerclasses/Parcel11.java | 2 +- innerclasses/Parcel2.java | 2 +- innerclasses/Parcel3.java | 2 +- innerclasses/Parcel5.java | 2 +- innerclasses/Parcel6.java | 2 +- innerclasses/Parcel7.java | 2 +- innerclasses/Parcel7b.java | 2 +- innerclasses/Parcel8.java | 2 +- innerclasses/Parcel9.java | 2 +- innerclasses/Sequence.java | 2 +- innerclasses/TestBed.java | 2 +- innerclasses/TestParcel.java | 2 +- innerclasses/Wrapping.java | 2 +- innerclasses/controller/Controller.java | 2 +- innerclasses/controller/Event.java | 2 +- innerclasses/mui/MultiInterfaces.java | 2 +- interfaces/AbstractAccess.java | 2 +- interfaces/AbstractWithoutAbstracts.java | 2 +- interfaces/AdaptedRandomDoubles.java | 2 +- interfaces/Adventure.java | 2 +- interfaces/AnImplementation.java | 2 +- interfaces/AnInterface.java | 2 +- interfaces/Applicator.java | 2 +- interfaces/AttemptToUseBasic.java | 2 +- interfaces/Basic.java | 2 +- interfaces/Basic2.java | 2 +- interfaces/Factories.java | 2 +- interfaces/Games.java | 2 +- interfaces/HorrorShow.java | 2 +- interfaces/Implementation2.java | 2 +- interfaces/ImplementingAnInterface.java | 2 +- interfaces/Instantiable.java | 2 +- interfaces/InterfaceCollision.java | 2 +- interfaces/InterfaceWithDefault.java | 2 +- interfaces/Jim.java | 2 +- interfaces/MICollision.java | 2 +- interfaces/Machine.java | 2 +- interfaces/Months.java | 2 +- interfaces/MultipleInheritance.java | 2 +- interfaces/PureInterface.java | 2 +- interfaces/RandVals.java | 2 +- interfaces/RandomDoubles.java | 2 +- interfaces/RandomStrings.java | 2 +- interfaces/TestRandVals.java | 2 +- interfaces/filters/BandPass.java | 2 +- interfaces/filters/Filter.java | 2 +- interfaces/filters/HighPass.java | 2 +- interfaces/filters/LowPass.java | 2 +- interfaces/filters/Waveform.java | 2 +- interfaces/interfaceprocessor/Applicator.java | 2 +- interfaces/interfaceprocessor/FilterProcessor.java | 2 +- interfaces/interfaceprocessor/Processor.java | 2 +- interfaces/interfaceprocessor/StringProcessor.java | 2 +- interfaces/music4/Music4.java | 2 +- interfaces/music5/Music5.java | 2 +- interfaces/nesting/NestingInterfaces.java | 2 +- iostreams/BasicFileOutput.java | 2 +- iostreams/BufferedInputFile.java | 2 +- iostreams/FileOutputShortcut.java | 2 +- iostreams/FormattedMemoryInput.java | 2 +- iostreams/MemoryInput.java | 2 +- iostreams/StoringAndRecoveringData.java | 2 +- iostreams/TestEOF.java | 2 +- iostreams/UsingRandomAccessFile.java | 2 +- javadoc/Documentation1.java | 2 +- javadoc/Documentation2.java | 2 +- javadoc/Documentation3.java | 2 +- javadoc/HelloDateDoc.java | 2 +- lowlevel/AtomicEvenProducer.java | 2 +- lowlevel/AtomicIntegerTest.java | 2 +- lowlevel/AtomicSerialNumbers.java | 2 +- lowlevel/Atomicity.java | 2 +- lowlevel/AttemptLocking.java | 2 +- lowlevel/CaptureUncaughtException.java | 2 +- lowlevel/CircularSet.java | 2 +- lowlevel/DelayQueueDemo.java | 2 +- lowlevel/EvenChecker.java | 2 +- lowlevel/EvenProducer.java | 2 +- lowlevel/ExceptionThread.java | 2 +- lowlevel/IntGenerator.java | 2 +- lowlevel/IntTestable.java | 2 +- lowlevel/MutexEvenProducer.java | 2 +- lowlevel/NaiveExceptionHandling.java | 2 +- lowlevel/NotAtomic.java | 2 +- lowlevel/NumberOfProcessors.java | 2 +- lowlevel/PriorityBlockingQueueDemo.java | 2 +- lowlevel/ReOrdering.java | 2 +- lowlevel/SafeReturn.java | 2 +- lowlevel/SerialNumberChecker.java | 2 +- lowlevel/SerialNumberTest.java | 2 +- lowlevel/SerialNumbers.java | 2 +- lowlevel/SettingDefaultHandler.java | 2 +- lowlevel/SwallowedException.java | 2 +- lowlevel/SyncOnObject.java | 2 +- lowlevel/SynchronizedComparison.java | 2 +- lowlevel/SynchronizedEvenProducer.java | 2 +- lowlevel/SynchronizedSerialNumbers.java | 2 +- lowlevel/TestAbort.java | 2 +- lowlevel/ThreadSize.java | 2 +- lowlevel/UnsafeReturn.java | 2 +- lowlevel/WorkStealingPool.java | 2 +- newio/AvailableCharSets.java | 2 +- newio/BufferToText.java | 2 +- newio/ChannelCopy.java | 2 +- newio/Endians.java | 2 +- newio/FileLocking.java | 2 +- newio/GetChannel.java | 2 +- newio/GetData.java | 2 +- newio/IntBufferDemo.java | 2 +- newio/LargeMappedFiles.java | 2 +- newio/LockingMappedFiles.java | 2 +- newio/MappedIO.java | 2 +- newio/TransferTo.java | 2 +- newio/UsingBuffers.java | 2 +- newio/ViewBuffers.java | 2 +- objects/HelloDate.java | 2 +- objects/ShowProperties.java | 2 +- onjava/ArrayShow.java | 2 +- onjava/BasicSupplier.java | 2 +- onjava/CollectionMethodDifferences.java | 2 +- onjava/ConvertTo.java | 2 +- onjava/Count.java | 2 +- onjava/CountMap.java | 2 +- onjava/CountingIntegerList.java | 2 +- onjava/Countries.java | 2 +- onjava/Enums.java | 2 +- onjava/FillMap.java | 2 +- onjava/HTMLColors.java | 2 +- onjava/MouseClick.java | 2 +- onjava/Nap.java | 2 +- onjava/Null.java | 2 +- onjava/OSExecute.java | 2 +- onjava/OSExecuteException.java | 2 +- onjava/Operations.java | 2 +- onjava/Pair.java | 2 +- onjava/ProcessFiles.java | 2 +- onjava/Rand.java | 2 +- onjava/Range.java | 2 +- onjava/Repeat.java | 2 +- onjava/RmDir.java | 2 +- onjava/Sets.java | 2 +- onjava/Stack.java | 2 +- onjava/Suppliers.java | 2 +- onjava/TimedAbort.java | 2 +- onjava/Timer.java | 2 +- onjava/Tuple.java | 2 +- onjava/Tuple2.java | 2 +- onjava/Tuple3.java | 2 +- onjava/Tuple4.java | 2 +- onjava/Tuple5.java | 2 +- onjava/TypeCounter.java | 2 +- onjava/atunit/AtUnit.java | 2 +- onjava/atunit/ClassNameFinder.java | 2 +- onjava/atunit/Test.java | 2 +- onjava/atunit/TestObjectCleanup.java | 2 +- onjava/atunit/TestObjectCreate.java | 2 +- onjava/atunit/TestProperty.java | 2 +- operators/AllOps.java | 2 +- operators/Assignment.java | 2 +- operators/AutoInc.java | 2 +- operators/BitManipulation.java | 2 +- operators/Bool.java | 2 +- operators/Casting.java | 2 +- operators/CastingNumbers.java | 2 +- operators/EqualsMethod.java | 2 +- operators/EqualsMethod2.java | 2 +- operators/Equivalence.java | 2 +- operators/Exponents.java | 2 +- operators/Literals.java | 2 +- operators/MathOps.java | 2 +- operators/Overflow.java | 2 +- operators/PassObject.java | 2 +- operators/Precedence.java | 2 +- operators/RoundingNumbers.java | 2 +- operators/ShortCircuit.java | 2 +- operators/StringOperators.java | 2 +- operators/TernaryIfElse.java | 2 +- operators/URShift.java | 2 +- operators/Underscores.java | 2 +- patterns/BoxObserver.java | 2 +- patterns/CommandPattern.java | 2 +- patterns/Facade.java | 2 +- patterns/PaperScissorsRock.java | 2 +- patterns/ProxyDemo.java | 2 +- patterns/ShapeFactory1.java | 2 +- patterns/ShapeFactory2.java | 2 +- patterns/ShapeFactory3.java | 2 +- patterns/SingletonPattern.java | 2 +- patterns/StateDemo.java | 2 +- patterns/TemplateMethod.java | 2 +- patterns/abstractfactory/GameEnvironment.java | 2 +- patterns/adapt/Adapter.java | 2 +- patterns/chain/ChainOfResponsibility.java | 2 +- patterns/doubledispatch/Aluminum.java | 2 +- patterns/doubledispatch/Cardboard.java | 2 +- patterns/doubledispatch/DoubleDispatch.java | 2 +- patterns/doubledispatch/Glass.java | 2 +- patterns/doubledispatch/Paper.java | 2 +- patterns/doubledispatch/TypedBin.java | 2 +- patterns/doubledispatch/TypedBinMember.java | 2 +- patterns/dynatrash/DynaTrash.java | 2 +- patterns/observer/ObservedFlower.java | 2 +- patterns/recyclea/RecycleA.java | 2 +- patterns/recycleb/RecycleB.java | 2 +- patterns/recyclec/RecycleC.java | 2 +- patterns/shapes/BadShapeCreation.java | 2 +- patterns/shapes/Circle.java | 2 +- patterns/shapes/FactoryMethod.java | 2 +- patterns/shapes/FactoryTest.java | 2 +- patterns/shapes/Shape.java | 2 +- patterns/shapes/Square.java | 2 +- patterns/shapes/Triangle.java | 2 +- patterns/state/StateMachineDemo.java | 2 +- patterns/strategy/StrategyPattern.java | 2 +- patterns/strategy/StrategyPattern2.java | 2 +- patterns/trash/Aluminum.java | 2 +- patterns/trash/Cardboard.java | 2 +- patterns/trash/Fillable.java | 2 +- patterns/trash/FillableList.java | 2 +- patterns/trash/Glass.java | 2 +- patterns/trash/Paper.java | 2 +- patterns/trash/ParseTrash.java | 2 +- patterns/trash/Trash.java | 2 +- patterns/trashvisitor/Aluminum.java | 2 +- patterns/trashvisitor/Cardboard.java | 2 +- patterns/trashvisitor/Glass.java | 2 +- patterns/trashvisitor/Paper.java | 2 +- patterns/trashvisitor/TrashVisitor.java | 2 +- patterns/trashvisitor/Visitable.java | 2 +- patterns/trashvisitor/Visitor.java | 2 +- patterns/visitor/BeeAndFlowers.java | 2 +- polymorphism/CovariantReturn.java | 2 +- polymorphism/FieldAccess.java | 2 +- polymorphism/Frog.java | 2 +- polymorphism/PolyConstructors.java | 2 +- polymorphism/PrivateOverride.java | 2 +- polymorphism/PrivateOverride2.java | 2 +- polymorphism/RTTI.java | 2 +- polymorphism/ReferenceCounting.java | 2 +- polymorphism/Sandwich.java | 2 +- polymorphism/Shapes.java | 2 +- polymorphism/StaticPolymorphism.java | 2 +- polymorphism/Transmogrify.java | 2 +- polymorphism/music/Instrument.java | 2 +- polymorphism/music/Music.java | 2 +- polymorphism/music/Music2.java | 2 +- polymorphism/music/Note.java | 2 +- polymorphism/music/Wind.java | 2 +- polymorphism/music3/Music3.java | 2 +- polymorphism/shape/Circle.java | 2 +- polymorphism/shape/RandomShapes.java | 2 +- polymorphism/shape/Shape.java | 2 +- polymorphism/shape/Square.java | 2 +- polymorphism/shape/Triangle.java | 2 +- references/AddingClone.java | 2 +- references/Alias1.java | 2 +- references/Alias2.java | 2 +- references/CheckCloneable.java | 2 +- references/CloneArrayList.java | 2 +- references/Compete.java | 2 +- references/CopyConstructor.java | 2 +- references/DepthReading.java | 2 +- references/HorrorFlick.java | 2 +- references/Immutable1.java | 2 +- references/Immutable2.java | 2 +- references/ImmutableInteger.java | 2 +- references/ImmutableStrings.java | 2 +- references/LocalCopy.java | 2 +- references/MutableInteger.java | 2 +- references/OceanReading.java | 2 +- references/PassReferences.java | 2 +- references/SimplerMutableInteger.java | 2 +- references/Snake.java | 2 +- references/Stringer.java | 2 +- references/TemperatureReading.java | 2 +- references/tests/DeepCopyTest.java | 2 +- reuse/Bath.java | 2 +- reuse/Beetle.java | 2 +- reuse/BlankFinal.java | 2 +- reuse/CADSystem.java | 2 +- reuse/Car.java | 2 +- reuse/Cartoon.java | 2 +- reuse/Chess.java | 2 +- reuse/DerivedSpaceShip.java | 2 +- reuse/Detergent.java | 2 +- reuse/FinalArguments.java | 2 +- reuse/FinalData.java | 2 +- reuse/FinalOverridingIllusion.java | 2 +- reuse/Hide.java | 2 +- reuse/Jurassic.java | 2 +- reuse/Lisa.java | 2 +- reuse/Orc.java | 2 +- reuse/PlaceSetting.java | 2 +- reuse/SpaceShipControls.java | 2 +- reuse/SpaceShipDelegation.java | 2 +- reuse/SprinklerSystem.java | 2 +- reuse/Wind.java | 2 +- serialization/APerson.java | 2 +- serialization/AStoreCADState.java | 2 +- serialization/Alien.java | 2 +- serialization/Blip3.java | 2 +- serialization/Blips.java | 2 +- serialization/FreezeAlien.java | 2 +- serialization/Logon.java | 2 +- serialization/MyWorld.java | 2 +- serialization/People.java | 2 +- serialization/RecoverCADState.java | 2 +- serialization/SerialCtl.java | 2 +- serialization/Worm.java | 2 +- serialization/xfiles/ThawAlien.java | 2 +- standardio/ChangeSystemOut.java | 2 +- standardio/Echo.java | 2 +- standardio/OSExecuteDemo.java | 2 +- standardio/Redirecting.java | 2 +- staticchecking/DogsAndRobots.cpp | 2 +- staticchecking/DogsAndRobots.py | 2 +- staticchecking/NoBasePetSpeak.py | 2 +- staticchecking/PetSpeak.py | 2 +- staticchecking/dogsandrobots.go | 2 +- staticchecking/dr/DogsAndRobots.java | 2 +- staticchecking/drc/DogAndRobotCollections.java | 2 +- staticchecking/latent/Latent.java | 2 +- staticchecking/petspeak.go | 2 +- staticchecking/petspeak/PetSpeak.java | 2 +- streams/ArrayStreams.java | 2 +- streams/Bubble.java | 2 +- streams/Bubbles.java | 2 +- streams/CollectionToStream.java | 2 +- streams/CreatingOptionals.java | 2 +- streams/Duplicator.java | 2 +- streams/Fibonacci.java | 2 +- streams/FileToWords.java | 2 +- streams/FileToWordsBuilder.java | 2 +- streams/FileToWordsRegexp.java | 2 +- streams/FileToWordsTest.java | 2 +- streams/FlatMap.java | 2 +- streams/ForEach.java | 2 +- streams/FunctionMap.java | 2 +- streams/FunctionMap2.java | 2 +- streams/FunctionMap3.java | 2 +- streams/Generator.java | 2 +- streams/ImperativeRandoms.java | 2 +- streams/Informational.java | 2 +- streams/LastElement.java | 2 +- streams/Looping.java | 2 +- streams/Machine2.java | 2 +- streams/MapCollector.java | 2 +- streams/Matching.java | 2 +- streams/NumericStreamInfo.java | 2 +- streams/OptionalBasics.java | 2 +- streams/OptionalFilter.java | 2 +- streams/OptionalFlatMap.java | 2 +- streams/OptionalMap.java | 2 +- streams/Optionals.java | 2 +- streams/OptionalsFromEmptyStreams.java | 2 +- streams/Peeking.java | 2 +- streams/Prime.java | 2 +- streams/RandInts.java | 2 +- streams/RandomGenerators.java | 2 +- streams/RandomWords.java | 2 +- streams/Randoms.java | 2 +- streams/Ranges.java | 2 +- streams/Reduce.java | 2 +- streams/SelectElement.java | 2 +- streams/Signal.java | 2 +- streams/SortedComparator.java | 2 +- streams/SpecialCollector.java | 2 +- streams/StreamOf.java | 2 +- streams/StreamOfOptionals.java | 2 +- streams/StreamOfRandoms.java | 2 +- streams/StreamOfStreams.java | 2 +- streams/TreeSetOfWords.java | 2 +- strings/ArrayListDisplay.java | 2 +- strings/BetterRead.java | 2 +- strings/Concatenation.java | 2 +- strings/Conversion.java | 2 +- strings/DatabaseException.java | 2 +- strings/Finding.java | 2 +- strings/Groups.java | 2 +- strings/Hex.java | 2 +- strings/Immutable.java | 2 +- strings/InfiniteRecursion.java | 2 +- strings/IntegerMatch.java | 2 +- strings/JGrep.java | 2 +- strings/ReFlags.java | 2 +- strings/ReceiptBuilder.java | 2 +- strings/Replacing.java | 2 +- strings/ReplacingStringTokenizer.java | 2 +- strings/Resetting.java | 2 +- strings/Rudolph.java | 2 +- strings/ScannerDelimiter.java | 2 +- strings/SimpleFormat.java | 2 +- strings/SimpleRead.java | 2 +- strings/SplitDemo.java | 2 +- strings/Splitting.java | 2 +- strings/StartEnd.java | 2 +- strings/TestRegularExpression.java | 2 +- strings/TheReplacements.java | 2 +- strings/ThreatAnalyzer.java | 2 +- strings/Turtle.java | 2 +- strings/UsingStringBuilder.java | 2 +- strings/WhitherStringBuilder.java | 2 +- typeinfo/AnonymousImplementation.java | 2 +- typeinfo/BoundedClassReferences.java | 2 +- typeinfo/ClassCasts.java | 2 +- typeinfo/ClassInitialization.java | 2 +- typeinfo/DynamicSupplier.java | 2 +- typeinfo/FamilyVsExactType.java | 2 +- typeinfo/GenericClassReferences.java | 2 +- typeinfo/HiddenImplementation.java | 2 +- typeinfo/InnerImplementation.java | 2 +- typeinfo/InterfaceViolation.java | 2 +- typeinfo/ModifyingPrivateFields.java | 2 +- typeinfo/NullRobot.java | 2 +- typeinfo/Operation.java | 2 +- typeinfo/Person.java | 2 +- typeinfo/PetCount.java | 2 +- typeinfo/PetCount2.java | 2 +- typeinfo/PetCount3.java | 2 +- typeinfo/PetCount4.java | 2 +- typeinfo/Position.java | 2 +- typeinfo/RegisteredFactories.java | 2 +- typeinfo/Robot.java | 2 +- typeinfo/SelectingMethods.java | 2 +- typeinfo/Shapes.java | 2 +- typeinfo/ShowMethods.java | 2 +- typeinfo/SimpleDynamicProxy.java | 2 +- typeinfo/SimpleProxyDemo.java | 2 +- typeinfo/SnowRemovalRobot.java | 2 +- typeinfo/Staff.java | 2 +- typeinfo/SweetShop.java | 2 +- typeinfo/WildcardClassReferences.java | 2 +- typeinfo/interfacea/A.java | 2 +- typeinfo/packageaccess/HiddenC.java | 2 +- typeinfo/pets/Cat.java | 2 +- typeinfo/pets/Cymric.java | 2 +- typeinfo/pets/Dog.java | 2 +- typeinfo/pets/EgyptianMau.java | 2 +- typeinfo/pets/ForNameCreator.java | 2 +- typeinfo/pets/Hamster.java | 2 +- typeinfo/pets/Individual.java | 2 +- typeinfo/pets/LiteralPetCreator.java | 2 +- typeinfo/pets/Manx.java | 2 +- typeinfo/pets/Mouse.java | 2 +- typeinfo/pets/Mutt.java | 2 +- typeinfo/pets/Person.java | 2 +- typeinfo/pets/Pet.java | 2 +- typeinfo/pets/PetCreator.java | 2 +- typeinfo/pets/Pets.java | 2 +- typeinfo/pets/Pug.java | 2 +- typeinfo/pets/Rat.java | 2 +- typeinfo/pets/Rodent.java | 2 +- typeinfo/toys/GenericToyTest.java | 2 +- typeinfo/toys/ToyTest.java | 2 +- validating/Assert1.java | 2 +- validating/Assert2.java | 2 +- validating/BadMicroBenchmark.java | 2 +- validating/BadMicroBenchmark2.java | 2 +- validating/CircularQueue.java | 2 +- validating/CircularQueueException.java | 2 +- validating/CountedList.java | 2 +- validating/GuavaAssertions.java | 2 +- validating/GuavaPreconditions.java | 2 +- validating/Inverter1.java | 2 +- validating/Inverter2.java | 2 +- validating/Inverter3.java | 2 +- validating/Inverter4.java | 2 +- validating/LoaderAssertions.java | 2 +- validating/NonNullConstruction.java | 2 +- validating/SLF4JLevels.java | 2 +- validating/SLF4JLogging.java | 2 +- validating/SimpleDebugging.java | 2 +- validating/StringInverter.java | 2 +- validating/jmh/JMH1.java | 2 +- validating/jmh/JMH2.java | 2 +- validating/jmh/JMH3.java | 2 +- validating/tests/CircularQueueTest.java | 2 +- validating/tests/CountedListTest.java | 2 +- validating/tests/DynamicStringInverterTests.java | 2 +- validating/tests/StringInverterTests.java | 2 +- 1025 files changed, 1025 insertions(+), 1025 deletions(-) diff --git a/annotations/AUComposition.java b/annotations/AUComposition.java index 88de7d7e6..ee43e88d3 100644 --- a/annotations/AUComposition.java +++ b/annotations/AUComposition.java @@ -1,5 +1,5 @@ // annotations/AUComposition.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating non-embedded tests diff --git a/annotations/AUExternalTest.java b/annotations/AUExternalTest.java index c18eb6b30..cce5c4292 100644 --- a/annotations/AUExternalTest.java +++ b/annotations/AUExternalTest.java @@ -1,5 +1,5 @@ // annotations/AUExternalTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating non-embedded tests diff --git a/annotations/AtUnitExample1.java b/annotations/AtUnitExample1.java index 03e7e06bf..3b1f6fece 100644 --- a/annotations/AtUnitExample1.java +++ b/annotations/AtUnitExample1.java @@ -1,5 +1,5 @@ // annotations/AtUnitExample1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit diff --git a/annotations/AtUnitExample2.java b/annotations/AtUnitExample2.java index 3757ca928..bf3f1d5cb 100644 --- a/annotations/AtUnitExample2.java +++ b/annotations/AtUnitExample2.java @@ -1,5 +1,5 @@ // annotations/AtUnitExample2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Assertions and exceptions can be used in @Tests diff --git a/annotations/AtUnitExample3.java b/annotations/AtUnitExample3.java index 64c29dd7f..02092591b 100644 --- a/annotations/AtUnitExample3.java +++ b/annotations/AtUnitExample3.java @@ -1,5 +1,5 @@ // annotations/AtUnitExample3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit diff --git a/annotations/AtUnitExample4.java b/annotations/AtUnitExample4.java index 2ad04c5cb..6b644b178 100644 --- a/annotations/AtUnitExample4.java +++ b/annotations/AtUnitExample4.java @@ -1,5 +1,5 @@ // annotations/AtUnitExample4.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit diff --git a/annotations/AtUnitExample5.java b/annotations/AtUnitExample5.java index 80a1588cf..d7cf95dfc 100644 --- a/annotations/AtUnitExample5.java +++ b/annotations/AtUnitExample5.java @@ -1,5 +1,5 @@ // annotations/AtUnitExample5.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit diff --git a/annotations/DemoProcessFiles.java b/annotations/DemoProcessFiles.java index 8462c59e7..6e2505373 100644 --- a/annotations/DemoProcessFiles.java +++ b/annotations/DemoProcessFiles.java @@ -1,5 +1,5 @@ // annotations/DemoProcessFiles.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.ProcessFiles; diff --git a/annotations/HashSetTest.java b/annotations/HashSetTest.java index dc2ed34cf..8dfa8a9c6 100644 --- a/annotations/HashSetTest.java +++ b/annotations/HashSetTest.java @@ -1,5 +1,5 @@ // annotations/HashSetTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java onjava.atunit.AtUnit diff --git a/annotations/PasswordUtils.java b/annotations/PasswordUtils.java index 20c83cf74..74a6df78e 100644 --- a/annotations/PasswordUtils.java +++ b/annotations/PasswordUtils.java @@ -1,5 +1,5 @@ // annotations/PasswordUtils.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/annotations/SimulatingNull.java b/annotations/SimulatingNull.java index d9fc66484..8166802bc 100644 --- a/annotations/SimulatingNull.java +++ b/annotations/SimulatingNull.java @@ -1,5 +1,5 @@ // annotations/SimulatingNull.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.annotation.*; diff --git a/annotations/StackL.java b/annotations/StackL.java index 02050132b..6ff806aff 100644 --- a/annotations/StackL.java +++ b/annotations/StackL.java @@ -1,5 +1,5 @@ // annotations/StackL.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A stack built on a LinkedList diff --git a/annotations/StackLStringTst.java b/annotations/StackLStringTst.java index c60f3802a..49aef9b76 100644 --- a/annotations/StackLStringTst.java +++ b/annotations/StackLStringTst.java @@ -1,5 +1,5 @@ // annotations/StackLStringTst.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Applying @Unit to generics diff --git a/annotations/Testable.java b/annotations/Testable.java index b0dd168d8..bc48f4161 100644 --- a/annotations/Testable.java +++ b/annotations/Testable.java @@ -1,5 +1,5 @@ // annotations/Testable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations; diff --git a/annotations/UseCase.java b/annotations/UseCase.java index 21220d6a2..dfce31490 100644 --- a/annotations/UseCase.java +++ b/annotations/UseCase.java @@ -1,5 +1,5 @@ // annotations/UseCase.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.annotation.*; diff --git a/annotations/UseCaseTracker.java b/annotations/UseCaseTracker.java index 2376d695a..5489b762b 100644 --- a/annotations/UseCaseTracker.java +++ b/annotations/UseCaseTracker.java @@ -1,5 +1,5 @@ // annotations/UseCaseTracker.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/annotations/database/Constraints.java b/annotations/database/Constraints.java index 48c270c51..4e4e40fc8 100644 --- a/annotations/database/Constraints.java +++ b/annotations/database/Constraints.java @@ -1,5 +1,5 @@ // annotations/database/Constraints.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations.database; diff --git a/annotations/database/DBTable.java b/annotations/database/DBTable.java index 0dc0ba500..9aa5562f4 100644 --- a/annotations/database/DBTable.java +++ b/annotations/database/DBTable.java @@ -1,5 +1,5 @@ // annotations/database/DBTable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations.database; diff --git a/annotations/database/Member.java b/annotations/database/Member.java index be415758a..d722a3b10 100644 --- a/annotations/database/Member.java +++ b/annotations/database/Member.java @@ -1,5 +1,5 @@ // annotations/database/Member.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations.database; diff --git a/annotations/database/SQLInteger.java b/annotations/database/SQLInteger.java index 645adbc58..635a907cd 100644 --- a/annotations/database/SQLInteger.java +++ b/annotations/database/SQLInteger.java @@ -1,5 +1,5 @@ // annotations/database/SQLInteger.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations.database; diff --git a/annotations/database/SQLString.java b/annotations/database/SQLString.java index 627aa3c12..dac9919f5 100644 --- a/annotations/database/SQLString.java +++ b/annotations/database/SQLString.java @@ -1,5 +1,5 @@ // annotations/database/SQLString.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package annotations.database; diff --git a/annotations/database/TableCreator.java b/annotations/database/TableCreator.java index a9b12066f..53322fc72 100644 --- a/annotations/database/TableCreator.java +++ b/annotations/database/TableCreator.java @@ -1,5 +1,5 @@ // annotations/database/TableCreator.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Reflection-based annotation processor diff --git a/annotations/database/Uniqueness.java b/annotations/database/Uniqueness.java index d0ab204c7..1aa1a36c9 100644 --- a/annotations/database/Uniqueness.java +++ b/annotations/database/Uniqueness.java @@ -1,5 +1,5 @@ // annotations/database/Uniqueness.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sample of nested annotations diff --git a/annotations/ifx/ExtractInterface.java b/annotations/ifx/ExtractInterface.java index ed61be171..70a94bf58 100644 --- a/annotations/ifx/ExtractInterface.java +++ b/annotations/ifx/ExtractInterface.java @@ -1,5 +1,5 @@ // annotations/ifx/ExtractInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // javac-based annotation processing diff --git a/annotations/ifx/IfaceExtractorProcessor.java b/annotations/ifx/IfaceExtractorProcessor.java index 4869d4945..d17156f88 100644 --- a/annotations/ifx/IfaceExtractorProcessor.java +++ b/annotations/ifx/IfaceExtractorProcessor.java @@ -1,5 +1,5 @@ // annotations/ifx/IfaceExtractorProcessor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // javac-based annotation processing diff --git a/annotations/ifx/Multiplier.java b/annotations/ifx/Multiplier.java index ad0847976..b5b99a1b8 100644 --- a/annotations/ifx/Multiplier.java +++ b/annotations/ifx/Multiplier.java @@ -1,5 +1,5 @@ // annotations/ifx/Multiplier.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // javac-based annotation processing diff --git a/annotations/simplest/Simple.java b/annotations/simplest/Simple.java index 6e3a13ab2..0dc555ce5 100644 --- a/annotations/simplest/Simple.java +++ b/annotations/simplest/Simple.java @@ -1,5 +1,5 @@ // annotations/simplest/Simple.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A bare-bones annotation diff --git a/annotations/simplest/SimpleProcessor.java b/annotations/simplest/SimpleProcessor.java index c62bcc767..a85d8987a 100644 --- a/annotations/simplest/SimpleProcessor.java +++ b/annotations/simplest/SimpleProcessor.java @@ -1,5 +1,5 @@ // annotations/simplest/SimpleProcessor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A bare-bones annotation processor diff --git a/annotations/simplest/SimpleTest.java b/annotations/simplest/SimpleTest.java index e281e42b7..689d12fdc 100644 --- a/annotations/simplest/SimpleTest.java +++ b/annotations/simplest/SimpleTest.java @@ -1,5 +1,5 @@ // annotations/simplest/SimpleTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Test the "Simple" annotation diff --git a/arrays/AlphabeticSearch.java b/arrays/AlphabeticSearch.java index 305b07db7..70adc8ff5 100644 --- a/arrays/AlphabeticSearch.java +++ b/arrays/AlphabeticSearch.java @@ -1,5 +1,5 @@ // arrays/AlphabeticSearch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Searching with a Comparator import diff --git a/arrays/ArrayCopying.java b/arrays/ArrayCopying.java index 5669bf1d4..c68c2a0d6 100644 --- a/arrays/ArrayCopying.java +++ b/arrays/ArrayCopying.java @@ -1,5 +1,5 @@ // arrays/ArrayCopying.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrate Arrays.copy() and Arrays.copyOf() diff --git a/arrays/ArrayOfGenericType.java b/arrays/ArrayOfGenericType.java index 6466df1fd..68f9e8de1 100644 --- a/arrays/ArrayOfGenericType.java +++ b/arrays/ArrayOfGenericType.java @@ -1,5 +1,5 @@ // arrays/ArrayOfGenericType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/arrays/ArrayOfGenerics.java b/arrays/ArrayOfGenerics.java index d41ce8658..79971d7ab 100644 --- a/arrays/ArrayOfGenerics.java +++ b/arrays/ArrayOfGenerics.java @@ -1,5 +1,5 @@ // arrays/ArrayOfGenerics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/ArrayOptions.java b/arrays/ArrayOptions.java index 0aaa85d53..bb6cbfbb6 100644 --- a/arrays/ArrayOptions.java +++ b/arrays/ArrayOptions.java @@ -1,5 +1,5 @@ // arrays/ArrayOptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Initialization & re-assignment of arrays diff --git a/arrays/ArraySearching.java b/arrays/ArraySearching.java index e08a694a7..fb4085e9b 100644 --- a/arrays/ArraySearching.java +++ b/arrays/ArraySearching.java @@ -1,5 +1,5 @@ // arrays/ArraySearching.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using Arrays.binarySearch() diff --git a/arrays/AssemblingMultidimensionalArrays.java b/arrays/AssemblingMultidimensionalArrays.java index 2a4c4b99e..e79302b30 100644 --- a/arrays/AssemblingMultidimensionalArrays.java +++ b/arrays/AssemblingMultidimensionalArrays.java @@ -1,5 +1,5 @@ // arrays/AssemblingMultidimensionalArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating multidimensional arrays diff --git a/arrays/AutoboxingArrays.java b/arrays/AutoboxingArrays.java index 30589cc43..25b3a0e88 100644 --- a/arrays/AutoboxingArrays.java +++ b/arrays/AutoboxingArrays.java @@ -1,5 +1,5 @@ // arrays/AutoboxingArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/CollectionComparison.java b/arrays/CollectionComparison.java index 66958372f..fc703c0a1 100644 --- a/arrays/CollectionComparison.java +++ b/arrays/CollectionComparison.java @@ -1,5 +1,5 @@ // arrays/CollectionComparison.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/CompType.java b/arrays/CompType.java index a93b6aee4..621b33d18 100644 --- a/arrays/CompType.java +++ b/arrays/CompType.java @@ -1,5 +1,5 @@ // arrays/CompType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Implementing Comparable in a class diff --git a/arrays/ComparatorTest.java b/arrays/ComparatorTest.java index 79eb3c721..68f7e3805 100644 --- a/arrays/ComparatorTest.java +++ b/arrays/ComparatorTest.java @@ -1,5 +1,5 @@ // arrays/ComparatorTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Implementing a Comparator for a class diff --git a/arrays/ComparingArrays.java b/arrays/ComparingArrays.java index 9a2851f67..9ddad69d0 100644 --- a/arrays/ComparingArrays.java +++ b/arrays/ComparingArrays.java @@ -1,5 +1,5 @@ // arrays/ComparingArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using Arrays.equals() diff --git a/arrays/CountUpward.java b/arrays/CountUpward.java index e512104f0..bbeb02ba7 100644 --- a/arrays/CountUpward.java +++ b/arrays/CountUpward.java @@ -1,5 +1,5 @@ // arrays/CountUpward.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/FillingArrays.java b/arrays/FillingArrays.java index 6c416a0ff..df54e62f3 100644 --- a/arrays/FillingArrays.java +++ b/arrays/FillingArrays.java @@ -1,5 +1,5 @@ // arrays/FillingArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using Arrays.fill() diff --git a/arrays/IceCreamFlavors.java b/arrays/IceCreamFlavors.java index 73c0813af..5e9d2b610 100644 --- a/arrays/IceCreamFlavors.java +++ b/arrays/IceCreamFlavors.java @@ -1,5 +1,5 @@ // arrays/IceCreamFlavors.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Returning arrays from methods diff --git a/arrays/ModifyExisting.java b/arrays/ModifyExisting.java index b5a0e8bc7..d74df78e2 100644 --- a/arrays/ModifyExisting.java +++ b/arrays/ModifyExisting.java @@ -1,5 +1,5 @@ // arrays/ModifyExisting.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/MultiDimWrapperArray.java b/arrays/MultiDimWrapperArray.java index 4f173ddd5..1185d0f93 100644 --- a/arrays/MultiDimWrapperArray.java +++ b/arrays/MultiDimWrapperArray.java @@ -1,5 +1,5 @@ // arrays/MultiDimWrapperArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Multidimensional arrays of "wrapper" objects diff --git a/arrays/MultidimensionalObjectArrays.java b/arrays/MultidimensionalObjectArrays.java index ab147767b..998e7c991 100644 --- a/arrays/MultidimensionalObjectArrays.java +++ b/arrays/MultidimensionalObjectArrays.java @@ -1,5 +1,5 @@ // arrays/MultidimensionalObjectArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/MultidimensionalPrimitiveArray.java b/arrays/MultidimensionalPrimitiveArray.java index 0294c8b02..8ed5884f9 100644 --- a/arrays/MultidimensionalPrimitiveArray.java +++ b/arrays/MultidimensionalPrimitiveArray.java @@ -1,5 +1,5 @@ // arrays/MultidimensionalPrimitiveArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/ParallelPrefix1.java b/arrays/ParallelPrefix1.java index 7a34d52ac..e180d019a 100644 --- a/arrays/ParallelPrefix1.java +++ b/arrays/ParallelPrefix1.java @@ -1,5 +1,5 @@ // arrays/ParallelPrefix1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/ParallelPrefix2.java b/arrays/ParallelPrefix2.java index 08dc8f448..5288d3cea 100644 --- a/arrays/ParallelPrefix2.java +++ b/arrays/ParallelPrefix2.java @@ -1,5 +1,5 @@ // arrays/ParallelPrefix2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/ParallelPrefix3.java b/arrays/ParallelPrefix3.java index cf7c1551d..ed2751dca 100644 --- a/arrays/ParallelPrefix3.java +++ b/arrays/ParallelPrefix3.java @@ -1,5 +1,5 @@ // arrays/ParallelPrefix3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromTravisCI} diff --git a/arrays/ParallelSetAll.java b/arrays/ParallelSetAll.java index 6d8c0e974..f6c47ff5f 100644 --- a/arrays/ParallelSetAll.java +++ b/arrays/ParallelSetAll.java @@ -1,5 +1,5 @@ // arrays/ParallelSetAll.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/ParameterizedArrayType.java b/arrays/ParameterizedArrayType.java index cb84b1375..06c1021ce 100644 --- a/arrays/ParameterizedArrayType.java +++ b/arrays/ParameterizedArrayType.java @@ -1,5 +1,5 @@ // arrays/ParameterizedArrayType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/arrays/PythonLists.py b/arrays/PythonLists.py index d22df21cd..910daf180 100644 --- a/arrays/PythonLists.py +++ b/arrays/PythonLists.py @@ -1,5 +1,5 @@ # arrays/PythonLists.py -# (c)2017 MindView LLC: see Copyright.txt +# (c)2020 MindView LLC: see Copyright.txt # We make no guarantees that this code is fit for any purpose. # Visit http://OnJava8.com for more book information. diff --git a/arrays/RaggedArray.java b/arrays/RaggedArray.java index 0877f954c..bd7d625bb 100644 --- a/arrays/RaggedArray.java +++ b/arrays/RaggedArray.java @@ -1,5 +1,5 @@ // arrays/RaggedArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/Reverse.java b/arrays/Reverse.java index a6553e7df..9a7de6785 100644 --- a/arrays/Reverse.java +++ b/arrays/Reverse.java @@ -1,5 +1,5 @@ // arrays/Reverse.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The Collections.reverseOrder() Comparator diff --git a/arrays/SimpleSetAll.java b/arrays/SimpleSetAll.java index 1234eb592..70336e793 100644 --- a/arrays/SimpleSetAll.java +++ b/arrays/SimpleSetAll.java @@ -1,5 +1,5 @@ // arrays/SimpleSetAll.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/StreamFromArray.java b/arrays/StreamFromArray.java index b7022478b..69628703c 100644 --- a/arrays/StreamFromArray.java +++ b/arrays/StreamFromArray.java @@ -1,5 +1,5 @@ // arrays/StreamFromArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/StringSorting.java b/arrays/StringSorting.java index 7972c7cce..0da5c7337 100644 --- a/arrays/StringSorting.java +++ b/arrays/StringSorting.java @@ -1,5 +1,5 @@ // arrays/StringSorting.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sorting an array of Strings diff --git a/arrays/TestConvertTo.java b/arrays/TestConvertTo.java index c7d8fa1b2..8ecb72a62 100644 --- a/arrays/TestConvertTo.java +++ b/arrays/TestConvertTo.java @@ -1,5 +1,5 @@ // arrays/TestConvertTo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/TestCount.java b/arrays/TestCount.java index 9f1b137f2..a77e00f76 100644 --- a/arrays/TestCount.java +++ b/arrays/TestCount.java @@ -1,5 +1,5 @@ // arrays/TestCount.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Test counting generators diff --git a/arrays/TestRand.java b/arrays/TestRand.java index 26da84b45..17e0718f3 100644 --- a/arrays/TestRand.java +++ b/arrays/TestRand.java @@ -1,5 +1,5 @@ // arrays/TestRand.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Test random generators diff --git a/arrays/ThreeDWithNew.java b/arrays/ThreeDWithNew.java index 4d093f3ac..7aaef0694 100644 --- a/arrays/ThreeDWithNew.java +++ b/arrays/ThreeDWithNew.java @@ -1,5 +1,5 @@ // arrays/ThreeDWithNew.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/arrays/jmh/ParallelSort.java b/arrays/jmh/ParallelSort.java index 0475ae142..fe0b505b5 100644 --- a/arrays/jmh/ParallelSort.java +++ b/arrays/jmh/ParallelSort.java @@ -1,5 +1,5 @@ // arrays/jmh/ParallelSort.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package arrays.jmh; diff --git a/collections/AdapterMethodIdiom.java b/collections/AdapterMethodIdiom.java index a7ebc6167..a97abb411 100644 --- a/collections/AdapterMethodIdiom.java +++ b/collections/AdapterMethodIdiom.java @@ -1,5 +1,5 @@ // collections/AdapterMethodIdiom.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The "Adapter Method" idiom uses for-in diff --git a/collections/AddingGroups.java b/collections/AddingGroups.java index 3561f459d..ecfc8a5a1 100644 --- a/collections/AddingGroups.java +++ b/collections/AddingGroups.java @@ -1,5 +1,5 @@ // collections/AddingGroups.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Adding groups of elements to Collection objects diff --git a/collections/ApplesAndOrangesWithGenerics.java b/collections/ApplesAndOrangesWithGenerics.java index bd8cb646a..c251672ce 100644 --- a/collections/ApplesAndOrangesWithGenerics.java +++ b/collections/ApplesAndOrangesWithGenerics.java @@ -1,5 +1,5 @@ // collections/ApplesAndOrangesWithGenerics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/ApplesAndOrangesWithoutGenerics.java b/collections/ApplesAndOrangesWithoutGenerics.java index 1832b85ac..6afacd12b 100644 --- a/collections/ApplesAndOrangesWithoutGenerics.java +++ b/collections/ApplesAndOrangesWithoutGenerics.java @@ -1,5 +1,5 @@ // collections/ApplesAndOrangesWithoutGenerics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Simple collection use (suppressing compiler warnings) diff --git a/collections/ArrayIsNotIterable.java b/collections/ArrayIsNotIterable.java index 1f1e68140..d496feb16 100644 --- a/collections/ArrayIsNotIterable.java +++ b/collections/ArrayIsNotIterable.java @@ -1,5 +1,5 @@ // collections/ArrayIsNotIterable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/AsListInference.java b/collections/AsListInference.java index 97f04a4e8..ef8137083 100644 --- a/collections/AsListInference.java +++ b/collections/AsListInference.java @@ -1,5 +1,5 @@ // collections/AsListInference.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/CollectionDifferences.java b/collections/CollectionDifferences.java index f3100ad91..711f7bd79 100644 --- a/collections/CollectionDifferences.java +++ b/collections/CollectionDifferences.java @@ -1,5 +1,5 @@ // collections/CollectionDifferences.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/collections/CollectionSequence.java b/collections/CollectionSequence.java index eafa63683..6a12ed69f 100644 --- a/collections/CollectionSequence.java +++ b/collections/CollectionSequence.java @@ -1,5 +1,5 @@ // collections/CollectionSequence.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/CrossCollectionIteration.java b/collections/CrossCollectionIteration.java index 572fba6bb..99769fe24 100644 --- a/collections/CrossCollectionIteration.java +++ b/collections/CrossCollectionIteration.java @@ -1,5 +1,5 @@ // collections/CrossCollectionIteration.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/CrossCollectionIteration2.java b/collections/CrossCollectionIteration2.java index 1e51ed3ac..c7da143ff 100644 --- a/collections/CrossCollectionIteration2.java +++ b/collections/CrossCollectionIteration2.java @@ -1,5 +1,5 @@ // collections/CrossCollectionIteration2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/EnvironmentVariables.java b/collections/EnvironmentVariables.java index 2ee865f2c..af89e5a28 100644 --- a/collections/EnvironmentVariables.java +++ b/collections/EnvironmentVariables.java @@ -1,5 +1,5 @@ // collections/EnvironmentVariables.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/collections/ForInCollections.java b/collections/ForInCollections.java index 2dfbe1b6f..a8ddd7923 100644 --- a/collections/ForInCollections.java +++ b/collections/ForInCollections.java @@ -1,5 +1,5 @@ // collections/ForInCollections.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // All collections work with for-in diff --git a/collections/GenericsAndUpcasting.java b/collections/GenericsAndUpcasting.java index 0ba792c67..ed8d3f557 100644 --- a/collections/GenericsAndUpcasting.java +++ b/collections/GenericsAndUpcasting.java @@ -1,5 +1,5 @@ // collections/GenericsAndUpcasting.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/InterfaceVsIterator.java b/collections/InterfaceVsIterator.java index 8404bfa43..b5a8663d8 100644 --- a/collections/InterfaceVsIterator.java +++ b/collections/InterfaceVsIterator.java @@ -1,5 +1,5 @@ // collections/InterfaceVsIterator.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/IterableClass.java b/collections/IterableClass.java index 8ef2b65ad..260edc7d4 100644 --- a/collections/IterableClass.java +++ b/collections/IterableClass.java @@ -1,5 +1,5 @@ // collections/IterableClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Anything Iterable works with for-in diff --git a/collections/LinkedListFeatures.java b/collections/LinkedListFeatures.java index 8a7b1b79f..3c10ff4ea 100644 --- a/collections/LinkedListFeatures.java +++ b/collections/LinkedListFeatures.java @@ -1,5 +1,5 @@ // collections/LinkedListFeatures.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/ListFeatures.java b/collections/ListFeatures.java index b002d9a8f..b4ee16ab4 100644 --- a/collections/ListFeatures.java +++ b/collections/ListFeatures.java @@ -1,5 +1,5 @@ // collections/ListFeatures.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/ListIteration.java b/collections/ListIteration.java index 4daa54fd9..95d2786cc 100644 --- a/collections/ListIteration.java +++ b/collections/ListIteration.java @@ -1,5 +1,5 @@ // collections/ListIteration.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/MapOfList.java b/collections/MapOfList.java index 224017f86..3a985dd9f 100644 --- a/collections/MapOfList.java +++ b/collections/MapOfList.java @@ -1,5 +1,5 @@ // collections/MapOfList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java collections.MapOfList} diff --git a/collections/ModifyingArraysAsList.java b/collections/ModifyingArraysAsList.java index 15104eaaa..fea3da423 100644 --- a/collections/ModifyingArraysAsList.java +++ b/collections/ModifyingArraysAsList.java @@ -1,5 +1,5 @@ // collections/ModifyingArraysAsList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/MultiIterableClass.java b/collections/MultiIterableClass.java index f90e543d4..1d7376e5f 100644 --- a/collections/MultiIterableClass.java +++ b/collections/MultiIterableClass.java @@ -1,5 +1,5 @@ // collections/MultiIterableClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Adding several Adapter Methods diff --git a/collections/NonCollectionSequence.java b/collections/NonCollectionSequence.java index 8ed7a2de5..ed1ae6f63 100644 --- a/collections/NonCollectionSequence.java +++ b/collections/NonCollectionSequence.java @@ -1,5 +1,5 @@ // collections/NonCollectionSequence.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/PetMap.java b/collections/PetMap.java index 8a9a90962..18d02ef0b 100644 --- a/collections/PetMap.java +++ b/collections/PetMap.java @@ -1,5 +1,5 @@ // collections/PetMap.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/PrintingCollections.java b/collections/PrintingCollections.java index 72e39b6df..c5746fc3e 100644 --- a/collections/PrintingCollections.java +++ b/collections/PrintingCollections.java @@ -1,5 +1,5 @@ // collections/PrintingCollections.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Collections print themselves automatically diff --git a/collections/PriorityQueueDemo.java b/collections/PriorityQueueDemo.java index 024ec51f6..4f71ab0e8 100644 --- a/collections/PriorityQueueDemo.java +++ b/collections/PriorityQueueDemo.java @@ -1,5 +1,5 @@ // collections/PriorityQueueDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/QueueDemo.java b/collections/QueueDemo.java index 31a5a5e2a..f807e89a9 100644 --- a/collections/QueueDemo.java +++ b/collections/QueueDemo.java @@ -1,5 +1,5 @@ // collections/QueueDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Upcasting to a Queue from a LinkedList diff --git a/collections/SetOfInteger.java b/collections/SetOfInteger.java index 68553c65b..78157d5cd 100644 --- a/collections/SetOfInteger.java +++ b/collections/SetOfInteger.java @@ -1,5 +1,5 @@ // collections/SetOfInteger.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/SetOfString.java b/collections/SetOfString.java index d6f980e06..01d9455e6 100644 --- a/collections/SetOfString.java +++ b/collections/SetOfString.java @@ -1,5 +1,5 @@ // collections/SetOfString.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/SetOperations.java b/collections/SetOperations.java index 492658773..f716f9651 100644 --- a/collections/SetOperations.java +++ b/collections/SetOperations.java @@ -1,5 +1,5 @@ // collections/SetOperations.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/SimpleCollection.java b/collections/SimpleCollection.java index e0187dc86..8915e2591 100644 --- a/collections/SimpleCollection.java +++ b/collections/SimpleCollection.java @@ -1,5 +1,5 @@ // collections/SimpleCollection.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/SimpleIteration.java b/collections/SimpleIteration.java index d47e4711f..a65a2a714 100644 --- a/collections/SimpleIteration.java +++ b/collections/SimpleIteration.java @@ -1,5 +1,5 @@ // collections/SimpleIteration.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import typeinfo.pets.*; diff --git a/collections/SortedSetOfString.java b/collections/SortedSetOfString.java index b2a0603bd..a043b7911 100644 --- a/collections/SortedSetOfString.java +++ b/collections/SortedSetOfString.java @@ -1,5 +1,5 @@ // collections/SortedSetOfString.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/StackCollision.java b/collections/StackCollision.java index 11fd340e8..67ee4d907 100644 --- a/collections/StackCollision.java +++ b/collections/StackCollision.java @@ -1,5 +1,5 @@ // collections/StackCollision.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/collections/StackTest.java b/collections/StackTest.java index bc9e9305c..dc1663cc4 100644 --- a/collections/StackTest.java +++ b/collections/StackTest.java @@ -1,5 +1,5 @@ // collections/StackTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/StackTest2.java b/collections/StackTest2.java index 303f856d6..2464d7a9c 100644 --- a/collections/StackTest2.java +++ b/collections/StackTest2.java @@ -1,5 +1,5 @@ // collections/StackTest2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/collections/Statistics.java b/collections/Statistics.java index 38a42ef3c..f888db585 100644 --- a/collections/Statistics.java +++ b/collections/Statistics.java @@ -1,5 +1,5 @@ // collections/Statistics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Simple demonstration of HashMap diff --git a/collections/UniqueWords.java b/collections/UniqueWords.java index 355accc75..c6c3681d4 100644 --- a/collections/UniqueWords.java +++ b/collections/UniqueWords.java @@ -1,5 +1,5 @@ // collections/UniqueWords.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collections/UniqueWordsAlphabetic.java b/collections/UniqueWordsAlphabetic.java index e0db4a163..66a7fecfa 100644 --- a/collections/UniqueWordsAlphabetic.java +++ b/collections/UniqueWordsAlphabetic.java @@ -1,5 +1,5 @@ // collections/UniqueWordsAlphabetic.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Producing an alphabetic listing diff --git a/collectiontopics/AssociativeArray.java b/collectiontopics/AssociativeArray.java index 772f36d3e..e7488489c 100644 --- a/collectiontopics/AssociativeArray.java +++ b/collectiontopics/AssociativeArray.java @@ -1,5 +1,5 @@ // collectiontopics/AssociativeArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Associates keys with values diff --git a/collectiontopics/Bits.java b/collectiontopics/Bits.java index f3c4d3904..16afb3617 100644 --- a/collectiontopics/Bits.java +++ b/collectiontopics/Bits.java @@ -1,5 +1,5 @@ // collectiontopics/Bits.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstration of BitSet diff --git a/collectiontopics/CanonicalMapping.java b/collectiontopics/CanonicalMapping.java index fecd6d3cb..7ad7eb29e 100644 --- a/collectiontopics/CanonicalMapping.java +++ b/collectiontopics/CanonicalMapping.java @@ -1,5 +1,5 @@ // collectiontopics/CanonicalMapping.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates WeakHashMap diff --git a/collectiontopics/CollectionMethods.java b/collectiontopics/CollectionMethods.java index 1bf8691ea..e32e5982a 100644 --- a/collectiontopics/CollectionMethods.java +++ b/collectiontopics/CollectionMethods.java @@ -1,5 +1,5 @@ // collectiontopics/CollectionMethods.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Things you can do with all Collections diff --git a/collectiontopics/Enumerations.java b/collectiontopics/Enumerations.java index e66385932..22b83e52a 100644 --- a/collectiontopics/Enumerations.java +++ b/collectiontopics/Enumerations.java @@ -1,5 +1,5 @@ // collectiontopics/Enumerations.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Java 1.0/1.1 Vector and Enumeration diff --git a/collectiontopics/FailFast.java b/collectiontopics/FailFast.java index 8a93867c9..0b0ce253f 100644 --- a/collectiontopics/FailFast.java +++ b/collectiontopics/FailFast.java @@ -1,5 +1,5 @@ // collectiontopics/FailFast.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates the "fail-fast" behavior diff --git a/collectiontopics/FillMapTest.java b/collectiontopics/FillMapTest.java index 0259a2738..5cfd612bc 100644 --- a/collectiontopics/FillMapTest.java +++ b/collectiontopics/FillMapTest.java @@ -1,5 +1,5 @@ // collectiontopics/FillMapTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collectiontopics/FillingLists.java b/collectiontopics/FillingLists.java index af158de1f..32bdb8ef0 100644 --- a/collectiontopics/FillingLists.java +++ b/collectiontopics/FillingLists.java @@ -1,5 +1,5 @@ // collectiontopics/FillingLists.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Collections.fill() & Collections.nCopies() diff --git a/collectiontopics/FunctionalMap.java b/collectiontopics/FunctionalMap.java index 16abb45b0..404a1a641 100644 --- a/collectiontopics/FunctionalMap.java +++ b/collectiontopics/FunctionalMap.java @@ -1,5 +1,5 @@ // collectiontopics/FunctionalMap.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Functional operations on a Map diff --git a/collectiontopics/HTMLColorTest.java b/collectiontopics/HTMLColorTest.java index 517ee575c..99037ced9 100644 --- a/collectiontopics/HTMLColorTest.java +++ b/collectiontopics/HTMLColorTest.java @@ -1,5 +1,5 @@ // collectiontopics/HTMLColorTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import static onjava.HTMLColors.*; diff --git a/collectiontopics/LinkedHashMapDemo.java b/collectiontopics/LinkedHashMapDemo.java index 70e1db15c..d0b933932 100644 --- a/collectiontopics/LinkedHashMapDemo.java +++ b/collectiontopics/LinkedHashMapDemo.java @@ -1,5 +1,5 @@ // collectiontopics/LinkedHashMapDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // What you can do with a LinkedHashMap diff --git a/collectiontopics/ListOps.java b/collectiontopics/ListOps.java index 760652b57..824ffba98 100644 --- a/collectiontopics/ListOps.java +++ b/collectiontopics/ListOps.java @@ -1,5 +1,5 @@ // collectiontopics/ListOps.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Things you can do with Lists diff --git a/collectiontopics/ListSortSearch.java b/collectiontopics/ListSortSearch.java index d59bc6439..4d1fbcf8c 100644 --- a/collectiontopics/ListSortSearch.java +++ b/collectiontopics/ListSortSearch.java @@ -1,5 +1,5 @@ // collectiontopics/ListSortSearch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sorting/searching Lists with Collections utilities diff --git a/collectiontopics/MapOps.java b/collectiontopics/MapOps.java index c49cb84a2..b214fa2d6 100644 --- a/collectiontopics/MapOps.java +++ b/collectiontopics/MapOps.java @@ -1,5 +1,5 @@ // collectiontopics/MapOps.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Things you can do with Maps diff --git a/collectiontopics/NavMap.java b/collectiontopics/NavMap.java index 0f682b8a3..076ae841e 100644 --- a/collectiontopics/NavMap.java +++ b/collectiontopics/NavMap.java @@ -1,5 +1,5 @@ // collectiontopics/NavMap.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // NavigableMap produces pieces of a Map diff --git a/collectiontopics/QueueBehavior.java b/collectiontopics/QueueBehavior.java index 923eab610..136fbaf8a 100644 --- a/collectiontopics/QueueBehavior.java +++ b/collectiontopics/QueueBehavior.java @@ -1,5 +1,5 @@ // collectiontopics/QueueBehavior.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Compares basic behavior diff --git a/collectiontopics/ReadOnly.java b/collectiontopics/ReadOnly.java index 925cb8198..93c336c4f 100644 --- a/collectiontopics/ReadOnly.java +++ b/collectiontopics/ReadOnly.java @@ -1,5 +1,5 @@ // collectiontopics/ReadOnly.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using the Collections.unmodifiable methods diff --git a/collectiontopics/References.java b/collectiontopics/References.java index e95cce2d5..ca505606a 100644 --- a/collectiontopics/References.java +++ b/collectiontopics/References.java @@ -1,5 +1,5 @@ // collectiontopics/References.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates Reference objects diff --git a/collectiontopics/SetOrder.java b/collectiontopics/SetOrder.java index fb4fcf4de..543db94c2 100644 --- a/collectiontopics/SetOrder.java +++ b/collectiontopics/SetOrder.java @@ -1,5 +1,5 @@ // collectiontopics/SetOrder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collectiontopics/SimpleDeques.java b/collectiontopics/SimpleDeques.java index 119ecc5b7..fbb4a5ff6 100644 --- a/collectiontopics/SimpleDeques.java +++ b/collectiontopics/SimpleDeques.java @@ -1,5 +1,5 @@ // collectiontopics/SimpleDeques.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Very basic test of Deques diff --git a/collectiontopics/SortedMapDemo.java b/collectiontopics/SortedMapDemo.java index 90e1e297e..4d57d34a7 100644 --- a/collectiontopics/SortedMapDemo.java +++ b/collectiontopics/SortedMapDemo.java @@ -1,5 +1,5 @@ // collectiontopics/SortedMapDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // What you can do with a TreeMap diff --git a/collectiontopics/SortedSetDemo.java b/collectiontopics/SortedSetDemo.java index 837978d46..6ed81fb16 100644 --- a/collectiontopics/SortedSetDemo.java +++ b/collectiontopics/SortedSetDemo.java @@ -1,5 +1,5 @@ // collectiontopics/SortedSetDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collectiontopics/Stacks.java b/collectiontopics/Stacks.java index da56e8b7f..79a684cbb 100644 --- a/collectiontopics/Stacks.java +++ b/collectiontopics/Stacks.java @@ -1,5 +1,5 @@ // collectiontopics/Stacks.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstration of Stack Class diff --git a/collectiontopics/StreamFillMaps.java b/collectiontopics/StreamFillMaps.java index 6e568e9fb..816a74b31 100644 --- a/collectiontopics/StreamFillMaps.java +++ b/collectiontopics/StreamFillMaps.java @@ -1,5 +1,5 @@ // collectiontopics/StreamFillMaps.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collectiontopics/SuppliersCollectionTest.java b/collectiontopics/SuppliersCollectionTest.java index f8b42a874..b30f1490d 100644 --- a/collectiontopics/SuppliersCollectionTest.java +++ b/collectiontopics/SuppliersCollectionTest.java @@ -1,5 +1,5 @@ // collectiontopics/SuppliersCollectionTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/collectiontopics/Synchronization.java b/collectiontopics/Synchronization.java index 768f013df..c7d3b7323 100644 --- a/collectiontopics/Synchronization.java +++ b/collectiontopics/Synchronization.java @@ -1,5 +1,5 @@ // collectiontopics/Synchronization.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using the Collections.synchronized methods diff --git a/collectiontopics/ToDoList.java b/collectiontopics/ToDoList.java index 1da979ba2..b288e8e1e 100644 --- a/collectiontopics/ToDoList.java +++ b/collectiontopics/ToDoList.java @@ -1,5 +1,5 @@ // collectiontopics/ToDoList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A more complex use of PriorityQueue diff --git a/collectiontopics/TypesForSets.java b/collectiontopics/TypesForSets.java index b7840f64c..9950b0032 100644 --- a/collectiontopics/TypesForSets.java +++ b/collectiontopics/TypesForSets.java @@ -1,5 +1,5 @@ // collectiontopics/TypesForSets.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Methods necessary to put your own type in a Set diff --git a/collectiontopics/Unsupported.java b/collectiontopics/Unsupported.java index fba5dafd1..a66b1cfdb 100644 --- a/collectiontopics/Unsupported.java +++ b/collectiontopics/Unsupported.java @@ -1,5 +1,5 @@ // collectiontopics/Unsupported.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Unsupported operations in Java collections diff --git a/collectiontopics/Utilities.java b/collectiontopics/Utilities.java index c2b94bac9..a2acc4278 100644 --- a/collectiontopics/Utilities.java +++ b/collectiontopics/Utilities.java @@ -1,5 +1,5 @@ // collectiontopics/Utilities.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Simple demonstrations of the Collections utilities diff --git a/com/mindviewinc/simple/List.java b/com/mindviewinc/simple/List.java index 065ff8437..84b30315b 100644 --- a/com/mindviewinc/simple/List.java +++ b/com/mindviewinc/simple/List.java @@ -1,5 +1,5 @@ // com/mindviewinc/simple/List.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating a package diff --git a/com/mindviewinc/simple/Vector.java b/com/mindviewinc/simple/Vector.java index db50ba121..19824ccec 100644 --- a/com/mindviewinc/simple/Vector.java +++ b/com/mindviewinc/simple/Vector.java @@ -1,5 +1,5 @@ // com/mindviewinc/simple/Vector.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating a package diff --git a/compression/GZIPcompress.java b/compression/GZIPcompress.java index 0a669a913..c9022e780 100644 --- a/compression/GZIPcompress.java +++ b/compression/GZIPcompress.java @@ -1,5 +1,5 @@ // compression/GZIPcompress.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java GZIPcompress GZIPcompress.java} diff --git a/compression/ZipCompress.java b/compression/ZipCompress.java index a8168e7c4..f9ce76705 100644 --- a/compression/ZipCompress.java +++ b/compression/ZipCompress.java @@ -1,5 +1,5 @@ // compression/ZipCompress.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Uses Zip compression to compress any diff --git a/concurrent/Baked.java b/concurrent/Baked.java index c4b1ed0da..d616d94b8 100644 --- a/concurrent/Baked.java +++ b/concurrent/Baked.java @@ -1,5 +1,5 @@ // concurrent/Baked.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/Batter.java b/concurrent/Batter.java index 8a814ae75..9fe14c4f5 100644 --- a/concurrent/Batter.java +++ b/concurrent/Batter.java @@ -1,5 +1,5 @@ // concurrent/Batter.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/Breakable.java b/concurrent/Breakable.java index a3b632d7f..facd70951 100644 --- a/concurrent/Breakable.java +++ b/concurrent/Breakable.java @@ -1,5 +1,5 @@ // concurrent/Breakable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CachedThreadPool.java b/concurrent/CachedThreadPool.java index 15dac382f..e0b825a25 100644 --- a/concurrent/CachedThreadPool.java +++ b/concurrent/CachedThreadPool.java @@ -1,5 +1,5 @@ // concurrent/CachedThreadPool.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CachedThreadPool2.java b/concurrent/CachedThreadPool2.java index a5b29a52a..9d7636560 100644 --- a/concurrent/CachedThreadPool2.java +++ b/concurrent/CachedThreadPool2.java @@ -1,5 +1,5 @@ // concurrent/CachedThreadPool2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CachedThreadPool3.java b/concurrent/CachedThreadPool3.java index 550914e1a..4b6e6d2e0 100644 --- a/concurrent/CachedThreadPool3.java +++ b/concurrent/CachedThreadPool3.java @@ -1,5 +1,5 @@ // concurrent/CachedThreadPool3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/CatchCompletableExceptions.java b/concurrent/CatchCompletableExceptions.java index ed180ee8c..67451ed46 100644 --- a/concurrent/CatchCompletableExceptions.java +++ b/concurrent/CatchCompletableExceptions.java @@ -1,5 +1,5 @@ // concurrent/CatchCompletableExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CollectionIntoStream.java b/concurrent/CollectionIntoStream.java index 2ddf4ed2d..2dc51a7e0 100644 --- a/concurrent/CollectionIntoStream.java +++ b/concurrent/CollectionIntoStream.java @@ -1,5 +1,5 @@ // concurrent/CollectionIntoStream.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/concurrent/CompletableApply.java b/concurrent/CompletableApply.java index 3173d0260..2f5bd9b48 100644 --- a/concurrent/CompletableApply.java +++ b/concurrent/CompletableApply.java @@ -1,5 +1,5 @@ // concurrent/CompletableApply.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CompletableApplyAsync.java b/concurrent/CompletableApplyAsync.java index 2698595ad..fa7c92711 100644 --- a/concurrent/CompletableApplyAsync.java +++ b/concurrent/CompletableApplyAsync.java @@ -1,5 +1,5 @@ // concurrent/CompletableApplyAsync.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CompletableApplyChained.java b/concurrent/CompletableApplyChained.java index acb6f8a7c..aa6828d56 100644 --- a/concurrent/CompletableApplyChained.java +++ b/concurrent/CompletableApplyChained.java @@ -1,5 +1,5 @@ // concurrent/CompletableApplyChained.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CompletableExceptions.java b/concurrent/CompletableExceptions.java index e7bac94bc..624815d5f 100644 --- a/concurrent/CompletableExceptions.java +++ b/concurrent/CompletableExceptions.java @@ -1,5 +1,5 @@ // concurrent/CompletableExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CompletableOperations.java b/concurrent/CompletableOperations.java index 745b2bb38..d03e8422a 100644 --- a/concurrent/CompletableOperations.java +++ b/concurrent/CompletableOperations.java @@ -1,5 +1,5 @@ // concurrent/CompletableOperations.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CompletablePizza.java b/concurrent/CompletablePizza.java index f81391d2b..97b68545f 100644 --- a/concurrent/CompletablePizza.java +++ b/concurrent/CompletablePizza.java @@ -1,5 +1,5 @@ // concurrent/CompletablePizza.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/CompletableUtilities.java b/concurrent/CompletableUtilities.java index 3ee2ab6dc..8f3a0e51a 100644 --- a/concurrent/CompletableUtilities.java +++ b/concurrent/CompletableUtilities.java @@ -1,5 +1,5 @@ // concurrent/CompletableUtilities.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package onjava; diff --git a/concurrent/CompletedMachina.java b/concurrent/CompletedMachina.java index efba32c4e..06a787109 100644 --- a/concurrent/CompletedMachina.java +++ b/concurrent/CompletedMachina.java @@ -1,5 +1,5 @@ // concurrent/CompletedMachina.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/CountingStream.java b/concurrent/CountingStream.java index 1d0adc665..4cebb24e1 100644 --- a/concurrent/CountingStream.java +++ b/concurrent/CountingStream.java @@ -1,5 +1,5 @@ // concurrent/CountingStream.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/concurrent/CountingTask.java b/concurrent/CountingTask.java index 1f3bbc2f1..b1fb7b89f 100644 --- a/concurrent/CountingTask.java +++ b/concurrent/CountingTask.java @@ -1,5 +1,5 @@ // concurrent/CountingTask.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/DiningPhilosophers.java b/concurrent/DiningPhilosophers.java index 45801d831..5c2b2f1b2 100644 --- a/concurrent/DiningPhilosophers.java +++ b/concurrent/DiningPhilosophers.java @@ -1,5 +1,5 @@ // concurrent/DiningPhilosophers.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Hidden deadlock diff --git a/concurrent/DualCompletableOperations.java b/concurrent/DualCompletableOperations.java index 71eb4dab2..420523121 100644 --- a/concurrent/DualCompletableOperations.java +++ b/concurrent/DualCompletableOperations.java @@ -1,5 +1,5 @@ // concurrent/DualCompletableOperations.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/FrostedCake.java b/concurrent/FrostedCake.java index 0d5a84b4d..1be8b661d 100644 --- a/concurrent/FrostedCake.java +++ b/concurrent/FrostedCake.java @@ -1,5 +1,5 @@ // concurrent/FrostedCake.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/Futures.java b/concurrent/Futures.java index 138614a33..888e7f0d9 100644 --- a/concurrent/Futures.java +++ b/concurrent/Futures.java @@ -1,5 +1,5 @@ // concurrent/Futures.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/GuardedIDField.java b/concurrent/GuardedIDField.java index 88e5ad940..e570a5d32 100644 --- a/concurrent/GuardedIDField.java +++ b/concurrent/GuardedIDField.java @@ -1,5 +1,5 @@ // concurrent/GuardedIDField.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.atomic.*; diff --git a/concurrent/HasID.java b/concurrent/HasID.java index 4e679a59f..e5e134388 100644 --- a/concurrent/HasID.java +++ b/concurrent/HasID.java @@ -1,5 +1,5 @@ // concurrent/HasID.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/concurrent/IDChecker.java b/concurrent/IDChecker.java index f21a63d3c..845c9e6a4 100644 --- a/concurrent/IDChecker.java +++ b/concurrent/IDChecker.java @@ -1,5 +1,5 @@ // concurrent/IDChecker.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/InterferingTask.java b/concurrent/InterferingTask.java index 4c564acc7..da08f6539 100644 --- a/concurrent/InterferingTask.java +++ b/concurrent/InterferingTask.java @@ -1,5 +1,5 @@ // concurrent/InterferingTask.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/concurrent/LambdasAndMethodReferences.java b/concurrent/LambdasAndMethodReferences.java index 08316a986..10552499a 100644 --- a/concurrent/LambdasAndMethodReferences.java +++ b/concurrent/LambdasAndMethodReferences.java @@ -1,5 +1,5 @@ // concurrent/LambdasAndMethodReferences.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/Machina.java b/concurrent/Machina.java index 1275391fc..e70cd2b4c 100644 --- a/concurrent/Machina.java +++ b/concurrent/Machina.java @@ -1,5 +1,5 @@ // concurrent/Machina.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.Nap; diff --git a/concurrent/MoreTasksAfterShutdown.java b/concurrent/MoreTasksAfterShutdown.java index 56b925ea6..28b96af83 100644 --- a/concurrent/MoreTasksAfterShutdown.java +++ b/concurrent/MoreTasksAfterShutdown.java @@ -1,5 +1,5 @@ // concurrent/MoreTasksAfterShutdown.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/NapTask.java b/concurrent/NapTask.java index 26e17bf7a..92df6b602 100644 --- a/concurrent/NapTask.java +++ b/concurrent/NapTask.java @@ -1,5 +1,5 @@ // concurrent/NapTask.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.Nap; diff --git a/concurrent/OnePizza.java b/concurrent/OnePizza.java index 265b2b419..f4f27249f 100644 --- a/concurrent/OnePizza.java +++ b/concurrent/OnePizza.java @@ -1,5 +1,5 @@ // concurrent/OnePizza.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.Timer; diff --git a/concurrent/ParallelPrime.java b/concurrent/ParallelPrime.java index 1359ebf58..97c025756 100644 --- a/concurrent/ParallelPrime.java +++ b/concurrent/ParallelPrime.java @@ -1,5 +1,5 @@ // concurrent/ParallelPrime.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/ParallelStreamPuzzle.java b/concurrent/ParallelStreamPuzzle.java index bf3a9dfa3..f57dec24a 100644 --- a/concurrent/ParallelStreamPuzzle.java +++ b/concurrent/ParallelStreamPuzzle.java @@ -1,5 +1,5 @@ // concurrent/ParallelStreamPuzzle.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/ParallelStreamPuzzle2.java b/concurrent/ParallelStreamPuzzle2.java index b02baafaf..2fc11d482 100644 --- a/concurrent/ParallelStreamPuzzle2.java +++ b/concurrent/ParallelStreamPuzzle2.java @@ -1,5 +1,5 @@ // concurrent/ParallelStreamPuzzle2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/ParallelStreamPuzzle3.java b/concurrent/ParallelStreamPuzzle3.java index 92d2c851d..757bddd5b 100644 --- a/concurrent/ParallelStreamPuzzle3.java +++ b/concurrent/ParallelStreamPuzzle3.java @@ -1,5 +1,5 @@ // concurrent/ParallelStreamPuzzle3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/concurrent/Philosopher.java b/concurrent/Philosopher.java index 29552954b..48facb382 100644 --- a/concurrent/Philosopher.java +++ b/concurrent/Philosopher.java @@ -1,5 +1,5 @@ // concurrent/Philosopher.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/concurrent/Pizza.java b/concurrent/Pizza.java index a2dfad92e..8cd5ff30b 100644 --- a/concurrent/Pizza.java +++ b/concurrent/Pizza.java @@ -1,5 +1,5 @@ // concurrent/Pizza.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/concurrent/PizzaParallelSteps.java b/concurrent/PizzaParallelSteps.java index a289da367..605e99853 100644 --- a/concurrent/PizzaParallelSteps.java +++ b/concurrent/PizzaParallelSteps.java @@ -1,5 +1,5 @@ // concurrent/PizzaParallelSteps.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/PizzaStreams.java b/concurrent/PizzaStreams.java index 6d3e5f29e..16be983a7 100644 --- a/concurrent/PizzaStreams.java +++ b/concurrent/PizzaStreams.java @@ -1,5 +1,5 @@ // concurrent/PizzaStreams.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/QuittableTask.java b/concurrent/QuittableTask.java index 2e473f4ea..3cf2a62e4 100644 --- a/concurrent/QuittableTask.java +++ b/concurrent/QuittableTask.java @@ -1,5 +1,5 @@ // concurrent/QuittableTask.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.atomic.AtomicBoolean; diff --git a/concurrent/QuittingCompletable.java b/concurrent/QuittingCompletable.java index e57ec0f31..e41e38999 100644 --- a/concurrent/QuittingCompletable.java +++ b/concurrent/QuittingCompletable.java @@ -1,5 +1,5 @@ // concurrent/QuittingCompletable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/QuittingTasks.java b/concurrent/QuittingTasks.java index dc863f426..326e24ce1 100644 --- a/concurrent/QuittingTasks.java +++ b/concurrent/QuittingTasks.java @@ -1,5 +1,5 @@ // concurrent/QuittingTasks.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/concurrent/SharedConstructorArgument.java b/concurrent/SharedConstructorArgument.java index df8ec4574..4b09cc26c 100644 --- a/concurrent/SharedConstructorArgument.java +++ b/concurrent/SharedConstructorArgument.java @@ -1,5 +1,5 @@ // concurrent/SharedConstructorArgument.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.atomic.*; diff --git a/concurrent/SingleThreadExecutor.java b/concurrent/SingleThreadExecutor.java index 58047d26a..ef89e3a53 100644 --- a/concurrent/SingleThreadExecutor.java +++ b/concurrent/SingleThreadExecutor.java @@ -1,5 +1,5 @@ // concurrent/SingleThreadExecutor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/SingleThreadExecutor2.java b/concurrent/SingleThreadExecutor2.java index 113fb6393..08467df5a 100644 --- a/concurrent/SingleThreadExecutor2.java +++ b/concurrent/SingleThreadExecutor2.java @@ -1,5 +1,5 @@ // concurrent/SingleThreadExecutor2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/SingleThreadExecutor3.java b/concurrent/SingleThreadExecutor3.java index 46e384280..581494238 100644 --- a/concurrent/SingleThreadExecutor3.java +++ b/concurrent/SingleThreadExecutor3.java @@ -1,5 +1,5 @@ // concurrent/SingleThreadExecutor3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/StaticIDField.java b/concurrent/StaticIDField.java index 9e563dfdb..22623faaf 100644 --- a/concurrent/StaticIDField.java +++ b/concurrent/StaticIDField.java @@ -1,5 +1,5 @@ // concurrent/StaticIDField.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/concurrent/StickHolder.java b/concurrent/StickHolder.java index 413e69dc8..719a1c635 100644 --- a/concurrent/StickHolder.java +++ b/concurrent/StickHolder.java @@ -1,5 +1,5 @@ // concurrent/StickHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/StreamExceptions.java b/concurrent/StreamExceptions.java index facae761e..493daee1f 100644 --- a/concurrent/StreamExceptions.java +++ b/concurrent/StreamExceptions.java @@ -1,5 +1,5 @@ // concurrent/StreamExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/concurrent/Summing.java b/concurrent/Summing.java index 8f44563e1..321dcb573 100644 --- a/concurrent/Summing.java +++ b/concurrent/Summing.java @@ -1,5 +1,5 @@ // concurrent/Summing.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.stream.*; diff --git a/concurrent/Summing2.java b/concurrent/Summing2.java index f5d75be97..c046721f0 100644 --- a/concurrent/Summing2.java +++ b/concurrent/Summing2.java @@ -1,5 +1,5 @@ // concurrent/Summing2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromTravisCI} diff --git a/concurrent/Summing3.java b/concurrent/Summing3.java index 5477dc617..252e96f7e 100644 --- a/concurrent/Summing3.java +++ b/concurrent/Summing3.java @@ -1,5 +1,5 @@ // concurrent/Summing3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromTravisCI} diff --git a/concurrent/Summing4.java b/concurrent/Summing4.java index 4df903234..bb4fe2ea2 100644 --- a/concurrent/Summing4.java +++ b/concurrent/Summing4.java @@ -1,5 +1,5 @@ // concurrent/Summing4.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromTravisCI} diff --git a/concurrent/SynchronizedConstructor.java b/concurrent/SynchronizedConstructor.java index 520829ee3..95aa6a542 100644 --- a/concurrent/SynchronizedConstructor.java +++ b/concurrent/SynchronizedConstructor.java @@ -1,5 +1,5 @@ // concurrent/SynchronizedConstructor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.atomic.*; diff --git a/concurrent/SynchronizedFactory.java b/concurrent/SynchronizedFactory.java index 4f682082b..669d4d76b 100644 --- a/concurrent/SynchronizedFactory.java +++ b/concurrent/SynchronizedFactory.java @@ -1,5 +1,5 @@ // concurrent/SynchronizedFactory.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.atomic.*; diff --git a/concurrent/TestStaticIDField.java b/concurrent/TestStaticIDField.java index 772958aad..5df298b76 100644 --- a/concurrent/TestStaticIDField.java +++ b/concurrent/TestStaticIDField.java @@ -1,5 +1,5 @@ // concurrent/TestStaticIDField.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/concurrent/ThrowsChecked.java b/concurrent/ThrowsChecked.java index bbebadd18..59177b35a 100644 --- a/concurrent/ThrowsChecked.java +++ b/concurrent/ThrowsChecked.java @@ -1,5 +1,5 @@ // concurrent/ThrowsChecked.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.stream.*; diff --git a/concurrent/Workable.java b/concurrent/Workable.java index a04bc113c..fcdbbbf80 100644 --- a/concurrent/Workable.java +++ b/concurrent/Workable.java @@ -1,5 +1,5 @@ // concurrent/Workable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.concurrent.*; diff --git a/control/BreakAndContinue.java b/control/BreakAndContinue.java index 83ad25e06..1faaaa034 100644 --- a/control/BreakAndContinue.java +++ b/control/BreakAndContinue.java @@ -1,5 +1,5 @@ // control/BreakAndContinue.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Break and continue keywords diff --git a/control/CommaOperator.java b/control/CommaOperator.java index d4337c036..eae2df824 100644 --- a/control/CommaOperator.java +++ b/control/CommaOperator.java @@ -1,5 +1,5 @@ // control/CommaOperator.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/ForInFloat.java b/control/ForInFloat.java index 4027b2f79..cee845b57 100644 --- a/control/ForInFloat.java +++ b/control/ForInFloat.java @@ -1,5 +1,5 @@ // control/ForInFloat.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/control/ForInInt.java b/control/ForInInt.java index 0abc762f6..f6b283a35 100644 --- a/control/ForInInt.java +++ b/control/ForInInt.java @@ -1,5 +1,5 @@ // control/ForInInt.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import static onjava.Range.*; diff --git a/control/ForInString.java b/control/ForInString.java index 320f17004..73e16538b 100644 --- a/control/ForInString.java +++ b/control/ForInString.java @@ -1,5 +1,5 @@ // control/ForInString.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/IfElse.java b/control/IfElse.java index 1347bcd1d..f40a07b7f 100644 --- a/control/IfElse.java +++ b/control/IfElse.java @@ -1,5 +1,5 @@ // control/IfElse.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/LabeledFor.java b/control/LabeledFor.java index 7535b2163..2df79bad3 100644 --- a/control/LabeledFor.java +++ b/control/LabeledFor.java @@ -1,5 +1,5 @@ // control/LabeledFor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // For loops with "labeled break"/"labeled continue." diff --git a/control/LabeledWhile.java b/control/LabeledWhile.java index 8fded1940..961f5ff38 100644 --- a/control/LabeledWhile.java +++ b/control/LabeledWhile.java @@ -1,5 +1,5 @@ // control/LabeledWhile.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // "While" with "labeled break" and "labeled continue." diff --git a/control/ListCharacters.java b/control/ListCharacters.java index c846270d6..43efce9f5 100644 --- a/control/ListCharacters.java +++ b/control/ListCharacters.java @@ -1,5 +1,5 @@ // control/ListCharacters.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // List all the lowercase ASCII letters diff --git a/control/RandomBounds.java b/control/RandomBounds.java index 81a0dc13b..6befc6f45 100644 --- a/control/RandomBounds.java +++ b/control/RandomBounds.java @@ -1,5 +1,5 @@ // control/RandomBounds.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Does Math.random() produce 0.0 and 1.0? diff --git a/control/StringSwitch.java b/control/StringSwitch.java index 3ad7236d7..638cc4276 100644 --- a/control/StringSwitch.java +++ b/control/StringSwitch.java @@ -1,5 +1,5 @@ // control/StringSwitch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/TestWithReturn.java b/control/TestWithReturn.java index 6df7a5df1..efe05c907 100644 --- a/control/TestWithReturn.java +++ b/control/TestWithReturn.java @@ -1,5 +1,5 @@ // control/TestWithReturn.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/TrueFalse.java b/control/TrueFalse.java index b4d25db06..e87dade4f 100644 --- a/control/TrueFalse.java +++ b/control/TrueFalse.java @@ -1,5 +1,5 @@ // control/TrueFalse.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/control/VowelsAndConsonants.java b/control/VowelsAndConsonants.java index 79ea2bfc5..d3a192d0d 100644 --- a/control/VowelsAndConsonants.java +++ b/control/VowelsAndConsonants.java @@ -1,5 +1,5 @@ // control/VowelsAndConsonants.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates the switch statement diff --git a/control/WhileTest.java b/control/WhileTest.java index becb35682..075068cfe 100644 --- a/control/WhileTest.java +++ b/control/WhileTest.java @@ -1,5 +1,5 @@ // control/WhileTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates the while loop diff --git a/enums/AlarmPoints.java b/enums/AlarmPoints.java index ddca40188..a87311373 100644 --- a/enums/AlarmPoints.java +++ b/enums/AlarmPoints.java @@ -1,5 +1,5 @@ // enums/AlarmPoints.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package enums; diff --git a/enums/BigEnumSet.java b/enums/BigEnumSet.java index 1c0544640..52ac34458 100644 --- a/enums/BigEnumSet.java +++ b/enums/BigEnumSet.java @@ -1,5 +1,5 @@ // enums/BigEnumSet.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/enums/Burrito2.java b/enums/Burrito2.java index 5999ce0e4..8b92ab0da 100644 --- a/enums/Burrito2.java +++ b/enums/Burrito2.java @@ -1,5 +1,5 @@ // enums/Burrito2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java enums.Burrito2} diff --git a/enums/CarWash.java b/enums/CarWash.java index 8111cb305..95800e8fb 100644 --- a/enums/CarWash.java +++ b/enums/CarWash.java @@ -1,5 +1,5 @@ // enums/CarWash.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/enums/Competitor.java b/enums/Competitor.java index 2f1514681..09bf71413 100644 --- a/enums/Competitor.java +++ b/enums/Competitor.java @@ -1,5 +1,5 @@ // enums/Competitor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Switching one enum on another diff --git a/enums/ConstantSpecificMethod.java b/enums/ConstantSpecificMethod.java index c8f6ef0ff..913aa2919 100644 --- a/enums/ConstantSpecificMethod.java +++ b/enums/ConstantSpecificMethod.java @@ -1,5 +1,5 @@ // enums/ConstantSpecificMethod.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/enums/EnumClass.java b/enums/EnumClass.java index 1999c6f43..061f8abfa 100644 --- a/enums/EnumClass.java +++ b/enums/EnumClass.java @@ -1,5 +1,5 @@ // enums/EnumClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Capabilities of the Enum class diff --git a/enums/EnumMaps.java b/enums/EnumMaps.java index 79b5e6c88..f75c5cd46 100644 --- a/enums/EnumMaps.java +++ b/enums/EnumMaps.java @@ -1,5 +1,5 @@ // enums/EnumMaps.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Basics of EnumMaps diff --git a/enums/EnumSets.java b/enums/EnumSets.java index 838b26991..0e749cadc 100644 --- a/enums/EnumSets.java +++ b/enums/EnumSets.java @@ -1,5 +1,5 @@ // enums/EnumSets.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Operations on EnumSets diff --git a/enums/Input.java b/enums/Input.java index e9a178d82..3dc0ec440 100644 --- a/enums/Input.java +++ b/enums/Input.java @@ -1,5 +1,5 @@ // enums/Input.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/enums/NonEnum.java b/enums/NonEnum.java index a1ef0ac8b..344407307 100644 --- a/enums/NonEnum.java +++ b/enums/NonEnum.java @@ -1,5 +1,5 @@ // enums/NonEnum.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/enums/NotClasses.java b/enums/NotClasses.java index c58a16c47..8e0c941f8 100644 --- a/enums/NotClasses.java +++ b/enums/NotClasses.java @@ -1,5 +1,5 @@ // enums/NotClasses.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {javap -c LikeClasses} diff --git a/enums/Outcome.java b/enums/Outcome.java index da1cf8401..0e2a25d60 100644 --- a/enums/Outcome.java +++ b/enums/Outcome.java @@ -1,5 +1,5 @@ // enums/Outcome.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package enums; diff --git a/enums/OverrideConstantSpecific.java b/enums/OverrideConstantSpecific.java index 6ea818eea..28e3343be 100644 --- a/enums/OverrideConstantSpecific.java +++ b/enums/OverrideConstantSpecific.java @@ -1,5 +1,5 @@ // enums/OverrideConstantSpecific.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/enums/OzWitch.java b/enums/OzWitch.java index 67aea7f5e..c9eedb4fd 100644 --- a/enums/OzWitch.java +++ b/enums/OzWitch.java @@ -1,5 +1,5 @@ // enums/OzWitch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The witches in the land of Oz diff --git a/enums/PostOffice.java b/enums/PostOffice.java index 2209d9ac7..056348206 100644 --- a/enums/PostOffice.java +++ b/enums/PostOffice.java @@ -1,5 +1,5 @@ // enums/PostOffice.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Modeling a post office diff --git a/enums/RandomTest.java b/enums/RandomTest.java index 9d74531fa..92f2e481b 100644 --- a/enums/RandomTest.java +++ b/enums/RandomTest.java @@ -1,5 +1,5 @@ // enums/RandomTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/enums/Reflection.java b/enums/Reflection.java index c78c4a7c9..822a134e8 100644 --- a/enums/Reflection.java +++ b/enums/Reflection.java @@ -1,5 +1,5 @@ // enums/Reflection.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Analyzing enums using reflection diff --git a/enums/RoShamBo.java b/enums/RoShamBo.java index 09ef7fc03..76b3d76fe 100644 --- a/enums/RoShamBo.java +++ b/enums/RoShamBo.java @@ -1,5 +1,5 @@ // enums/RoShamBo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Common tools for RoShamBo examples diff --git a/enums/RoShamBo1.java b/enums/RoShamBo1.java index 7fba68962..abf52c9c9 100644 --- a/enums/RoShamBo1.java +++ b/enums/RoShamBo1.java @@ -1,5 +1,5 @@ // enums/RoShamBo1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstration of multiple dispatching diff --git a/enums/RoShamBo2.java b/enums/RoShamBo2.java index db52d4589..ec8ab25b1 100644 --- a/enums/RoShamBo2.java +++ b/enums/RoShamBo2.java @@ -1,5 +1,5 @@ // enums/RoShamBo2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Switching one enum on another diff --git a/enums/RoShamBo3.java b/enums/RoShamBo3.java index 046912dd4..ffcd2cf17 100644 --- a/enums/RoShamBo3.java +++ b/enums/RoShamBo3.java @@ -1,5 +1,5 @@ // enums/RoShamBo3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using constant-specific methods diff --git a/enums/RoShamBo4.java b/enums/RoShamBo4.java index b129e09da..f0b473aef 100644 --- a/enums/RoShamBo4.java +++ b/enums/RoShamBo4.java @@ -1,5 +1,5 @@ // enums/RoShamBo4.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java enums.RoShamBo4} diff --git a/enums/RoShamBo5.java b/enums/RoShamBo5.java index eabddd3de..69885c017 100644 --- a/enums/RoShamBo5.java +++ b/enums/RoShamBo5.java @@ -1,5 +1,5 @@ // enums/RoShamBo5.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Multiple dispatching using an EnumMap of EnumMaps diff --git a/enums/RoShamBo6.java b/enums/RoShamBo6.java index d1e2e0268..164911d52 100644 --- a/enums/RoShamBo6.java +++ b/enums/RoShamBo6.java @@ -1,5 +1,5 @@ // enums/RoShamBo6.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Enums using "tables" instead of multiple dispatch diff --git a/enums/SecurityCategory.java b/enums/SecurityCategory.java index 908ebe9cb..884cb56a2 100644 --- a/enums/SecurityCategory.java +++ b/enums/SecurityCategory.java @@ -1,5 +1,5 @@ // enums/SecurityCategory.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // More succinct subcategorization of enums diff --git a/enums/SpaceShip.java b/enums/SpaceShip.java index 95e23f4e5..3623389e0 100644 --- a/enums/SpaceShip.java +++ b/enums/SpaceShip.java @@ -1,5 +1,5 @@ // enums/SpaceShip.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.stream.*; diff --git a/enums/SpicinessEnum.java b/enums/SpicinessEnum.java index 78f4518a7..eef6f89a4 100644 --- a/enums/SpicinessEnum.java +++ b/enums/SpicinessEnum.java @@ -1,5 +1,5 @@ // enums/SpicinessEnum.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package enums; diff --git a/enums/TrafficLight.java b/enums/TrafficLight.java index 9be9d3e8a..b018e02c7 100644 --- a/enums/TrafficLight.java +++ b/enums/TrafficLight.java @@ -1,5 +1,5 @@ // enums/TrafficLight.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Enums in switch statements diff --git a/enums/UpcastEnum.java b/enums/UpcastEnum.java index 31995bd64..a5df2a862 100644 --- a/enums/UpcastEnum.java +++ b/enums/UpcastEnum.java @@ -1,5 +1,5 @@ // enums/UpcastEnum.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // No values() method if you upcast an enum diff --git a/enums/VendingMachine.java b/enums/VendingMachine.java index fbc976df6..bc7d7c19e 100644 --- a/enums/VendingMachine.java +++ b/enums/VendingMachine.java @@ -1,5 +1,5 @@ // enums/VendingMachine.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java VendingMachine VendingMachineInput.txt} diff --git a/enums/cartoons/EnumImplementation.java b/enums/cartoons/EnumImplementation.java index cb3abaa0f..58902e3fc 100644 --- a/enums/cartoons/EnumImplementation.java +++ b/enums/cartoons/EnumImplementation.java @@ -1,5 +1,5 @@ // enums/cartoons/EnumImplementation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // An enum can implement an interface diff --git a/enums/menu/Course.java b/enums/menu/Course.java index a11fdace9..96481f1eb 100644 --- a/enums/menu/Course.java +++ b/enums/menu/Course.java @@ -1,5 +1,5 @@ // enums/menu/Course.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package enums.menu; diff --git a/enums/menu/Food.java b/enums/menu/Food.java index bfe8dd553..4b97f69ec 100644 --- a/enums/menu/Food.java +++ b/enums/menu/Food.java @@ -1,5 +1,5 @@ // enums/menu/Food.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Subcategorization of enums within interfaces diff --git a/enums/menu/Meal.java b/enums/menu/Meal.java index 3bd12ed21..64bc496d6 100644 --- a/enums/menu/Meal.java +++ b/enums/menu/Meal.java @@ -1,5 +1,5 @@ // enums/menu/Meal.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java enums.menu.Meal} diff --git a/enums/menu/Meal2.java b/enums/menu/Meal2.java index 17bbdf6e9..df1b90a58 100644 --- a/enums/menu/Meal2.java +++ b/enums/menu/Meal2.java @@ -1,5 +1,5 @@ // enums/menu/Meal2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java enums.menu.Meal2} diff --git a/enums/menu/TypeOfFood.java b/enums/menu/TypeOfFood.java index 7909f1f4a..5e59e78bb 100644 --- a/enums/menu/TypeOfFood.java +++ b/enums/menu/TypeOfFood.java @@ -1,5 +1,5 @@ // enums/menu/TypeOfFood.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java enums.menu.TypeOfFood} diff --git a/equalshashcode/ComposedEquality.java b/equalshashcode/ComposedEquality.java index 01fe792e3..c224231ca 100644 --- a/equalshashcode/ComposedEquality.java +++ b/equalshashcode/ComposedEquality.java @@ -1,5 +1,5 @@ // equalshashcode/ComposedEquality.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/equalshashcode/CountedString.java b/equalshashcode/CountedString.java index f3c5823ec..5a6ec5fab 100644 --- a/equalshashcode/CountedString.java +++ b/equalshashcode/CountedString.java @@ -1,5 +1,5 @@ // equalshashcode/CountedString.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating a good hashCode() diff --git a/equalshashcode/DefaultComparison.java b/equalshashcode/DefaultComparison.java index 541e918ea..d855de369 100644 --- a/equalshashcode/DefaultComparison.java +++ b/equalshashcode/DefaultComparison.java @@ -1,5 +1,5 @@ // equalshashcode/DefaultComparison.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/equalshashcode/Equality.java b/equalshashcode/Equality.java index 1565b33f8..6ab13e5e9 100644 --- a/equalshashcode/Equality.java +++ b/equalshashcode/Equality.java @@ -1,5 +1,5 @@ // equalshashcode/Equality.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/equalshashcode/EqualityFactory.java b/equalshashcode/EqualityFactory.java index 0f391cbd8..378b56b0d 100644 --- a/equalshashcode/EqualityFactory.java +++ b/equalshashcode/EqualityFactory.java @@ -1,5 +1,5 @@ // equalshashcode/EqualityFactory.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/equalshashcode/Groundhog.java b/equalshashcode/Groundhog.java index 2f0513f43..55c775633 100644 --- a/equalshashcode/Groundhog.java +++ b/equalshashcode/Groundhog.java @@ -1,5 +1,5 @@ // equalshashcode/Groundhog.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Looks plausible, but doesn't work as a HashMap key diff --git a/equalshashcode/Groundhog2.java b/equalshashcode/Groundhog2.java index 70f253d81..5348d1e52 100644 --- a/equalshashcode/Groundhog2.java +++ b/equalshashcode/Groundhog2.java @@ -1,5 +1,5 @@ // equalshashcode/Groundhog2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A class that's used as a key in a HashMap diff --git a/equalshashcode/IndividualTest.java b/equalshashcode/IndividualTest.java index 9a6e8112e..d8f509743 100644 --- a/equalshashcode/IndividualTest.java +++ b/equalshashcode/IndividualTest.java @@ -1,5 +1,5 @@ // equalshashcode/IndividualTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import collections.MapOfList; diff --git a/equalshashcode/MapEntry.java b/equalshashcode/MapEntry.java index a6c106036..c6e28bf4e 100644 --- a/equalshashcode/MapEntry.java +++ b/equalshashcode/MapEntry.java @@ -1,5 +1,5 @@ // equalshashcode/MapEntry.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A simple Map.Entry for sample Map implementations diff --git a/equalshashcode/Prediction.java b/equalshashcode/Prediction.java index 7706aec1f..c8ff97773 100644 --- a/equalshashcode/Prediction.java +++ b/equalshashcode/Prediction.java @@ -1,5 +1,5 @@ // equalshashcode/Prediction.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Predicting the weather diff --git a/equalshashcode/SimpleHashMap.java b/equalshashcode/SimpleHashMap.java index 4658ec53e..f82022a19 100644 --- a/equalshashcode/SimpleHashMap.java +++ b/equalshashcode/SimpleHashMap.java @@ -1,5 +1,5 @@ // equalshashcode/SimpleHashMap.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A demonstration hashed Map diff --git a/equalshashcode/SlowMap.java b/equalshashcode/SlowMap.java index 91c9967dd..63f17092d 100644 --- a/equalshashcode/SlowMap.java +++ b/equalshashcode/SlowMap.java @@ -1,5 +1,5 @@ // equalshashcode/SlowMap.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A Map implemented with ArrayLists diff --git a/equalshashcode/SpringDetector.java b/equalshashcode/SpringDetector.java index 713d032c1..9b41bd3e2 100644 --- a/equalshashcode/SpringDetector.java +++ b/equalshashcode/SpringDetector.java @@ -1,5 +1,5 @@ // equalshashcode/SpringDetector.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // What will the weather be? diff --git a/equalshashcode/SpringDetector2.java b/equalshashcode/SpringDetector2.java index ed9db7249..1e136e477 100644 --- a/equalshashcode/SpringDetector2.java +++ b/equalshashcode/SpringDetector2.java @@ -1,5 +1,5 @@ // equalshashcode/SpringDetector2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A working key diff --git a/equalshashcode/StringHashCode.java b/equalshashcode/StringHashCode.java index 69b3df468..222fa612a 100644 --- a/equalshashcode/StringHashCode.java +++ b/equalshashcode/StringHashCode.java @@ -1,5 +1,5 @@ // equalshashcode/StringHashCode.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/equalshashcode/SubtypeEquality.java b/equalshashcode/SubtypeEquality.java index 4dc1d060a..90320c88e 100644 --- a/equalshashcode/SubtypeEquality.java +++ b/equalshashcode/SubtypeEquality.java @@ -1,5 +1,5 @@ // equalshashcode/SubtypeEquality.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/equalshashcode/SubtypeEquality2.java b/equalshashcode/SubtypeEquality2.java index 881749293..c0ac50573 100644 --- a/equalshashcode/SubtypeEquality2.java +++ b/equalshashcode/SubtypeEquality2.java @@ -1,5 +1,5 @@ // equalshashcode/SubtypeEquality2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/equalshashcode/SuccinctEquality.java b/equalshashcode/SuccinctEquality.java index a1734dadb..55a0d8de6 100644 --- a/equalshashcode/SuccinctEquality.java +++ b/equalshashcode/SuccinctEquality.java @@ -1,5 +1,5 @@ // equalshashcode/SuccinctEquality.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/exceptions/AlwaysFinally.java b/exceptions/AlwaysFinally.java index 38b15a12d..bb2270f77 100644 --- a/exceptions/AlwaysFinally.java +++ b/exceptions/AlwaysFinally.java @@ -1,5 +1,5 @@ // exceptions/AlwaysFinally.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Finally is always executed diff --git a/exceptions/AutoCloseableDetails.java b/exceptions/AutoCloseableDetails.java index e6f8f77d4..24a22e9d6 100644 --- a/exceptions/AutoCloseableDetails.java +++ b/exceptions/AutoCloseableDetails.java @@ -1,5 +1,5 @@ // exceptions/AutoCloseableDetails.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/BodyException.java b/exceptions/BodyException.java index 6e5d47777..3e907f8ab 100644 --- a/exceptions/BodyException.java +++ b/exceptions/BodyException.java @@ -1,5 +1,5 @@ // exceptions/BodyException.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/Cleanup.java b/exceptions/Cleanup.java index 7eeebe32c..3d072304f 100644 --- a/exceptions/Cleanup.java +++ b/exceptions/Cleanup.java @@ -1,5 +1,5 @@ // exceptions/Cleanup.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Guaranteeing proper cleanup of a resource diff --git a/exceptions/CleanupIdiom.java b/exceptions/CleanupIdiom.java index 9b9e18668..e8dd62c46 100644 --- a/exceptions/CleanupIdiom.java +++ b/exceptions/CleanupIdiom.java @@ -1,5 +1,5 @@ // exceptions/CleanupIdiom.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Disposable objects must be followed by a try-finally diff --git a/exceptions/CloseExceptions.java b/exceptions/CloseExceptions.java index 6a1a51b0d..4309a888f 100644 --- a/exceptions/CloseExceptions.java +++ b/exceptions/CloseExceptions.java @@ -1,5 +1,5 @@ // exceptions/CloseExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/ConstructorException.java b/exceptions/ConstructorException.java index 3c48ecf77..54eaaba35 100644 --- a/exceptions/ConstructorException.java +++ b/exceptions/ConstructorException.java @@ -1,5 +1,5 @@ // exceptions/ConstructorException.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/DynamicFields.java b/exceptions/DynamicFields.java index dffc67166..da3b9617f 100644 --- a/exceptions/DynamicFields.java +++ b/exceptions/DynamicFields.java @@ -1,5 +1,5 @@ // exceptions/DynamicFields.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A Class that dynamically adds fields to itself to diff --git a/exceptions/ExceptionMethods.java b/exceptions/ExceptionMethods.java index 3220c1974..bd6e82598 100644 --- a/exceptions/ExceptionMethods.java +++ b/exceptions/ExceptionMethods.java @@ -1,5 +1,5 @@ // exceptions/ExceptionMethods.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrating the Exception Methods diff --git a/exceptions/ExceptionSilencer.java b/exceptions/ExceptionSilencer.java index bb57a939a..e418e9de8 100644 --- a/exceptions/ExceptionSilencer.java +++ b/exceptions/ExceptionSilencer.java @@ -1,5 +1,5 @@ // exceptions/ExceptionSilencer.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/ExtraFeatures.java b/exceptions/ExtraFeatures.java index 57bb967b0..8aa922afd 100644 --- a/exceptions/ExtraFeatures.java +++ b/exceptions/ExtraFeatures.java @@ -1,5 +1,5 @@ // exceptions/ExtraFeatures.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Further embellishment of exception classes diff --git a/exceptions/FinallyWorks.java b/exceptions/FinallyWorks.java index c406400da..fc4fec0a4 100644 --- a/exceptions/FinallyWorks.java +++ b/exceptions/FinallyWorks.java @@ -1,5 +1,5 @@ // exceptions/FinallyWorks.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The finally clause is always executed diff --git a/exceptions/FullConstructors.java b/exceptions/FullConstructors.java index c67b4e2f5..f5b4c9ff2 100644 --- a/exceptions/FullConstructors.java +++ b/exceptions/FullConstructors.java @@ -1,5 +1,5 @@ // exceptions/FullConstructors.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/Human.java b/exceptions/Human.java index fa067a9e4..7ee7dcaae 100644 --- a/exceptions/Human.java +++ b/exceptions/Human.java @@ -1,5 +1,5 @@ // exceptions/Human.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Catching exception hierarchies diff --git a/exceptions/InheritingExceptions.java b/exceptions/InheritingExceptions.java index 7a6a4dff2..abb80c3b6 100644 --- a/exceptions/InheritingExceptions.java +++ b/exceptions/InheritingExceptions.java @@ -1,5 +1,5 @@ // exceptions/InheritingExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating your own exceptions diff --git a/exceptions/InputFile.java b/exceptions/InputFile.java index 0de1fbe9e..5c269851d 100644 --- a/exceptions/InputFile.java +++ b/exceptions/InputFile.java @@ -1,5 +1,5 @@ // exceptions/InputFile.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Paying attention to exceptions in constructors diff --git a/exceptions/InputFile2.java b/exceptions/InputFile2.java index 2cb71a4c1..74a68c3f1 100644 --- a/exceptions/InputFile2.java +++ b/exceptions/InputFile2.java @@ -1,5 +1,5 @@ // exceptions/InputFile2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/exceptions/LoggingExceptions.java b/exceptions/LoggingExceptions.java index 26e9be687..0120ee17f 100644 --- a/exceptions/LoggingExceptions.java +++ b/exceptions/LoggingExceptions.java @@ -1,5 +1,5 @@ // exceptions/LoggingExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // An exception that reports through a Logger diff --git a/exceptions/LoggingExceptions2.java b/exceptions/LoggingExceptions2.java index 326c20089..21a921379 100644 --- a/exceptions/LoggingExceptions2.java +++ b/exceptions/LoggingExceptions2.java @@ -1,5 +1,5 @@ // exceptions/LoggingExceptions2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Logging caught exceptions diff --git a/exceptions/LostMessage.java b/exceptions/LostMessage.java index b0f7c318f..1446d9033 100644 --- a/exceptions/LostMessage.java +++ b/exceptions/LostMessage.java @@ -1,5 +1,5 @@ // exceptions/LostMessage.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // How an exception can be lost diff --git a/exceptions/MainException.java b/exceptions/MainException.java index 4c6477ec2..7a7e26387 100644 --- a/exceptions/MainException.java +++ b/exceptions/MainException.java @@ -1,5 +1,5 @@ // exceptions/MainException.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/exceptions/MessyExceptions.java b/exceptions/MessyExceptions.java index e79f929d9..e8f7fc9df 100644 --- a/exceptions/MessyExceptions.java +++ b/exceptions/MessyExceptions.java @@ -1,5 +1,5 @@ // exceptions/MessyExceptions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/exceptions/MultiCatch.java b/exceptions/MultiCatch.java index 64b954e24..f97bde133 100644 --- a/exceptions/MultiCatch.java +++ b/exceptions/MultiCatch.java @@ -1,5 +1,5 @@ // exceptions/MultiCatch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/MultiCatch2.java b/exceptions/MultiCatch2.java index 2ba042919..4629e93f8 100644 --- a/exceptions/MultiCatch2.java +++ b/exceptions/MultiCatch2.java @@ -1,5 +1,5 @@ // exceptions/MultiCatch2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/MultipleReturns.java b/exceptions/MultipleReturns.java index e6caf3c18..3f667b335 100644 --- a/exceptions/MultipleReturns.java +++ b/exceptions/MultipleReturns.java @@ -1,5 +1,5 @@ // exceptions/MultipleReturns.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/NeverCaught.java b/exceptions/NeverCaught.java index a584d0612..c8bb0a2f7 100644 --- a/exceptions/NeverCaught.java +++ b/exceptions/NeverCaught.java @@ -1,5 +1,5 @@ // exceptions/NeverCaught.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Ignoring RuntimeExceptions diff --git a/exceptions/OnOffException1.java b/exceptions/OnOffException1.java index b15243285..3333d815d 100644 --- a/exceptions/OnOffException1.java +++ b/exceptions/OnOffException1.java @@ -1,5 +1,5 @@ // exceptions/OnOffException1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class OnOffException1 extends Exception {} diff --git a/exceptions/OnOffException2.java b/exceptions/OnOffException2.java index 878ea833f..0bb5e1644 100644 --- a/exceptions/OnOffException2.java +++ b/exceptions/OnOffException2.java @@ -1,5 +1,5 @@ // exceptions/OnOffException2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class OnOffException2 extends Exception {} diff --git a/exceptions/OnOffSwitch.java b/exceptions/OnOffSwitch.java index 7f4f35b50..fe05fa351 100644 --- a/exceptions/OnOffSwitch.java +++ b/exceptions/OnOffSwitch.java @@ -1,5 +1,5 @@ // exceptions/OnOffSwitch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Why use finally? diff --git a/exceptions/PreciseRethrow.java b/exceptions/PreciseRethrow.java index 8e9749380..f8849a3d4 100644 --- a/exceptions/PreciseRethrow.java +++ b/exceptions/PreciseRethrow.java @@ -1,5 +1,5 @@ // exceptions/PreciseRethrow.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/RethrowNew.java b/exceptions/RethrowNew.java index e03f75099..daa4ad418 100644 --- a/exceptions/RethrowNew.java +++ b/exceptions/RethrowNew.java @@ -1,5 +1,5 @@ // exceptions/RethrowNew.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Rethrow a different object from the one you caught diff --git a/exceptions/Rethrowing.java b/exceptions/Rethrowing.java index 2a82dafef..5bf1a6357 100644 --- a/exceptions/Rethrowing.java +++ b/exceptions/Rethrowing.java @@ -1,5 +1,5 @@ // exceptions/Rethrowing.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrating fillInStackTrace() diff --git a/exceptions/SameHandler.java b/exceptions/SameHandler.java index 5229dc66e..8c6805679 100644 --- a/exceptions/SameHandler.java +++ b/exceptions/SameHandler.java @@ -1,5 +1,5 @@ // exceptions/SameHandler.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/StormyInning.java b/exceptions/StormyInning.java index 1656d062e..644c10ba8 100644 --- a/exceptions/StormyInning.java +++ b/exceptions/StormyInning.java @@ -1,5 +1,5 @@ // exceptions/StormyInning.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Overridden methods can throw only the exceptions diff --git a/exceptions/StreamsAreAutoCloseable.java b/exceptions/StreamsAreAutoCloseable.java index 40317d88c..c55bf417b 100644 --- a/exceptions/StreamsAreAutoCloseable.java +++ b/exceptions/StreamsAreAutoCloseable.java @@ -1,5 +1,5 @@ // exceptions/StreamsAreAutoCloseable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/exceptions/Switch.java b/exceptions/Switch.java index ea1323ce4..7d491d004 100644 --- a/exceptions/Switch.java +++ b/exceptions/Switch.java @@ -1,5 +1,5 @@ // exceptions/Switch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/exceptions/TryAnything.java b/exceptions/TryAnything.java index 88e78a898..9eeee07b1 100644 --- a/exceptions/TryAnything.java +++ b/exceptions/TryAnything.java @@ -1,5 +1,5 @@ // exceptions/TryAnything.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/exceptions/TryWithResources.java b/exceptions/TryWithResources.java index daf97a55a..cdc83a5cf 100644 --- a/exceptions/TryWithResources.java +++ b/exceptions/TryWithResources.java @@ -1,5 +1,5 @@ // exceptions/TryWithResources.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/exceptions/TurnOffChecking.java b/exceptions/TurnOffChecking.java index 8412b5c8a..898431b64 100644 --- a/exceptions/TurnOffChecking.java +++ b/exceptions/TurnOffChecking.java @@ -1,5 +1,5 @@ // exceptions/TurnOffChecking.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // "Turning off" Checked exceptions diff --git a/exceptions/WhoCalled.java b/exceptions/WhoCalled.java index 8e5f611c3..4c4e01041 100644 --- a/exceptions/WhoCalled.java +++ b/exceptions/WhoCalled.java @@ -1,5 +1,5 @@ // exceptions/WhoCalled.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Programmatic access to stack trace information diff --git a/exceptions/WithFinally.java b/exceptions/WithFinally.java index fc893d6e7..9d3efc3a4 100644 --- a/exceptions/WithFinally.java +++ b/exceptions/WithFinally.java @@ -1,5 +1,5 @@ // exceptions/WithFinally.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Finally Guarantees cleanup diff --git a/files/AddAndSubtractPaths.java b/files/AddAndSubtractPaths.java index c13121bab..f3984d19c 100644 --- a/files/AddAndSubtractPaths.java +++ b/files/AddAndSubtractPaths.java @@ -1,5 +1,5 @@ // files/AddAndSubtractPaths.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/Directories.java b/files/Directories.java index fe41a2321..10ad9beec 100644 --- a/files/Directories.java +++ b/files/Directories.java @@ -1,5 +1,5 @@ // files/Directories.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/files/FileSystemDemo.java b/files/FileSystemDemo.java index 883c7537e..3d9024ca8 100644 --- a/files/FileSystemDemo.java +++ b/files/FileSystemDemo.java @@ -1,5 +1,5 @@ // files/FileSystemDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/Find.java b/files/Find.java index c9bafd0bc..ac97ebdce 100644 --- a/files/Find.java +++ b/files/Find.java @@ -1,5 +1,5 @@ // files/Find.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromGradle} diff --git a/files/ListOfLines.java b/files/ListOfLines.java index 0e948545b..6f9ef467d 100644 --- a/files/ListOfLines.java +++ b/files/ListOfLines.java @@ -1,5 +1,5 @@ // files/ListOfLines.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/files/PartsOfPaths.java b/files/PartsOfPaths.java index 9f27e035c..1170fc688 100644 --- a/files/PartsOfPaths.java +++ b/files/PartsOfPaths.java @@ -1,5 +1,5 @@ // files/PartsOfPaths.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/PathAnalysis.java b/files/PathAnalysis.java index fc617639a..117119cdd 100644 --- a/files/PathAnalysis.java +++ b/files/PathAnalysis.java @@ -1,5 +1,5 @@ // files/PathAnalysis.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/PathInfo.java b/files/PathInfo.java index d963ee294..96af9d938 100644 --- a/files/PathInfo.java +++ b/files/PathInfo.java @@ -1,5 +1,5 @@ // files/PathInfo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/PathWatcher.java b/files/PathWatcher.java index d880219ae..162641d72 100644 --- a/files/PathWatcher.java +++ b/files/PathWatcher.java @@ -1,5 +1,5 @@ // files/PathWatcher.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromGradle} diff --git a/files/ReadLineStream.java b/files/ReadLineStream.java index 1409fbee1..64b0f562d 100644 --- a/files/ReadLineStream.java +++ b/files/ReadLineStream.java @@ -1,5 +1,5 @@ // files/ReadLineStream.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.nio.file.*; diff --git a/files/StreamInAndOut.java b/files/StreamInAndOut.java index 74a721e9b..ec17c7008 100644 --- a/files/StreamInAndOut.java +++ b/files/StreamInAndOut.java @@ -1,5 +1,5 @@ // files/StreamInAndOut.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/files/TreeWatcher.java b/files/TreeWatcher.java index ea36be3fb..f0660888d 100644 --- a/files/TreeWatcher.java +++ b/files/TreeWatcher.java @@ -1,5 +1,5 @@ // files/TreeWatcher.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {ExcludeFromGradle} diff --git a/files/Writing.java b/files/Writing.java index a72816700..68a04fbcd 100644 --- a/files/Writing.java +++ b/files/Writing.java @@ -1,5 +1,5 @@ // files/Writing.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/functional/AnonymousClosure.java b/functional/AnonymousClosure.java index 92c232c74..497a1a526 100644 --- a/functional/AnonymousClosure.java +++ b/functional/AnonymousClosure.java @@ -1,5 +1,5 @@ // functional/AnonymousClosure.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/BiConsumerPermutations.java b/functional/BiConsumerPermutations.java index 90e2f3dc4..75b7c32d5 100644 --- a/functional/BiConsumerPermutations.java +++ b/functional/BiConsumerPermutations.java @@ -1,5 +1,5 @@ // functional/BiConsumerPermutations.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/ClassFunctionals.java b/functional/ClassFunctionals.java index 06d43a236..e5101df4f 100644 --- a/functional/ClassFunctionals.java +++ b/functional/ClassFunctionals.java @@ -1,5 +1,5 @@ // functional/ClassFunctionals.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/functional/Closure1.java b/functional/Closure1.java index f0dfdf060..2f504f42c 100644 --- a/functional/Closure1.java +++ b/functional/Closure1.java @@ -1,5 +1,5 @@ // functional/Closure1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Closure2.java b/functional/Closure2.java index f42c77342..825cf4233 100644 --- a/functional/Closure2.java +++ b/functional/Closure2.java @@ -1,5 +1,5 @@ // functional/Closure2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Closure3.java b/functional/Closure3.java index 4719f90cf..811179fb8 100644 --- a/functional/Closure3.java +++ b/functional/Closure3.java @@ -1,5 +1,5 @@ // functional/Closure3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/functional/Closure4.java b/functional/Closure4.java index 947417607..148aaf649 100644 --- a/functional/Closure4.java +++ b/functional/Closure4.java @@ -1,5 +1,5 @@ // functional/Closure4.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Closure5.java b/functional/Closure5.java index ad98bad24..fb9aad779 100644 --- a/functional/Closure5.java +++ b/functional/Closure5.java @@ -1,5 +1,5 @@ // functional/Closure5.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/functional/Closure6.java b/functional/Closure6.java index 459dc6c8c..178f9b4a6 100644 --- a/functional/Closure6.java +++ b/functional/Closure6.java @@ -1,5 +1,5 @@ // functional/Closure6.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Closure7.java b/functional/Closure7.java index 5dc34986d..9facdc062 100644 --- a/functional/Closure7.java +++ b/functional/Closure7.java @@ -1,5 +1,5 @@ // functional/Closure7.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/functional/Closure8.java b/functional/Closure8.java index 70ed1e248..7ec059b2a 100644 --- a/functional/Closure8.java +++ b/functional/Closure8.java @@ -1,5 +1,5 @@ // functional/Closure8.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/functional/Closure9.java b/functional/Closure9.java index af3cb8f4b..4eddb47a0 100644 --- a/functional/Closure9.java +++ b/functional/Closure9.java @@ -1,5 +1,5 @@ // functional/Closure9.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/functional/ConsumeFunction.java b/functional/ConsumeFunction.java index bbab0aa0d..ea84a24a1 100644 --- a/functional/ConsumeFunction.java +++ b/functional/ConsumeFunction.java @@ -1,5 +1,5 @@ // functional/ConsumeFunction.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/CtorReference.java b/functional/CtorReference.java index 0ea701774..4c22bdf1c 100644 --- a/functional/CtorReference.java +++ b/functional/CtorReference.java @@ -1,5 +1,5 @@ // functional/CtorReference.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/CurriedIntAdd.java b/functional/CurriedIntAdd.java index 7b89d59cb..e89ac8e28 100644 --- a/functional/CurriedIntAdd.java +++ b/functional/CurriedIntAdd.java @@ -1,5 +1,5 @@ // functional/CurriedIntAdd.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Curry3Args.java b/functional/Curry3Args.java index e27fd0adb..0fd376bc2 100644 --- a/functional/Curry3Args.java +++ b/functional/Curry3Args.java @@ -1,5 +1,5 @@ // functional/Curry3Args.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/CurryingAndPartials.java b/functional/CurryingAndPartials.java index 795a1afda..0addb8115 100644 --- a/functional/CurryingAndPartials.java +++ b/functional/CurryingAndPartials.java @@ -1,5 +1,5 @@ // functional/CurryingAndPartials.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/FunctionComposition.java b/functional/FunctionComposition.java index 74a66ddd4..a183039d0 100644 --- a/functional/FunctionComposition.java +++ b/functional/FunctionComposition.java @@ -1,5 +1,5 @@ // functional/FunctionComposition.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/FunctionVariants.java b/functional/FunctionVariants.java index d09476ca6..a62054620 100644 --- a/functional/FunctionVariants.java +++ b/functional/FunctionVariants.java @@ -1,5 +1,5 @@ // functional/FunctionVariants.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/FunctionWithWrapped.java b/functional/FunctionWithWrapped.java index 99dd8743b..b654da654 100644 --- a/functional/FunctionWithWrapped.java +++ b/functional/FunctionWithWrapped.java @@ -1,5 +1,5 @@ // functional/FunctionWithWrapped.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/FunctionalAnnotation.java b/functional/FunctionalAnnotation.java index 0116d87b6..84cec6498 100644 --- a/functional/FunctionalAnnotation.java +++ b/functional/FunctionalAnnotation.java @@ -1,5 +1,5 @@ // functional/FunctionalAnnotation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/IntCall.java b/functional/IntCall.java index 73b985803..a8256a00c 100644 --- a/functional/IntCall.java +++ b/functional/IntCall.java @@ -1,5 +1,5 @@ // functional/IntCall.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/LambdaExpressions.java b/functional/LambdaExpressions.java index 3f2b3f734..fe7e3acb1 100644 --- a/functional/LambdaExpressions.java +++ b/functional/LambdaExpressions.java @@ -1,5 +1,5 @@ // functional/LambdaExpressions.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/MethodConversion.java b/functional/MethodConversion.java index 184f01b38..008ecfc0c 100644 --- a/functional/MethodConversion.java +++ b/functional/MethodConversion.java @@ -1,5 +1,5 @@ // functional/MethodConversion.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/MethodReferences.java b/functional/MethodReferences.java index dde6ba0e0..63bc365d8 100644 --- a/functional/MethodReferences.java +++ b/functional/MethodReferences.java @@ -1,5 +1,5 @@ // functional/MethodReferences.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/functional/MultiUnbound.java b/functional/MultiUnbound.java index ce50b2f4d..4209fb040 100644 --- a/functional/MultiUnbound.java +++ b/functional/MultiUnbound.java @@ -1,5 +1,5 @@ // functional/MultiUnbound.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Unbound methods with multiple arguments diff --git a/functional/PredicateComposition.java b/functional/PredicateComposition.java index 5ebe4e77d..f95bbcbdd 100644 --- a/functional/PredicateComposition.java +++ b/functional/PredicateComposition.java @@ -1,5 +1,5 @@ // functional/PredicateComposition.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/ProduceFunction.java b/functional/ProduceFunction.java index 6682be9d9..034716011 100644 --- a/functional/ProduceFunction.java +++ b/functional/ProduceFunction.java @@ -1,5 +1,5 @@ // functional/ProduceFunction.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/RecursiveFactorial.java b/functional/RecursiveFactorial.java index 0a32d3346..2d6104413 100644 --- a/functional/RecursiveFactorial.java +++ b/functional/RecursiveFactorial.java @@ -1,5 +1,5 @@ // functional/RecursiveFactorial.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/RecursiveFibonacci.java b/functional/RecursiveFibonacci.java index 8cb2c7d24..9be43dc62 100644 --- a/functional/RecursiveFibonacci.java +++ b/functional/RecursiveFibonacci.java @@ -1,5 +1,5 @@ // functional/RecursiveFibonacci.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/RunnableMethodReference.java b/functional/RunnableMethodReference.java index 92f2e2906..5fb8cd002 100644 --- a/functional/RunnableMethodReference.java +++ b/functional/RunnableMethodReference.java @@ -1,5 +1,5 @@ // functional/RunnableMethodReference.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Method references with interface Runnable diff --git a/functional/SharedStorage.java b/functional/SharedStorage.java index 20da6917b..c2a41f66a 100644 --- a/functional/SharedStorage.java +++ b/functional/SharedStorage.java @@ -1,5 +1,5 @@ // functional/SharedStorage.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/Strategize.java b/functional/Strategize.java index c101fd1d3..e46c91434 100644 --- a/functional/Strategize.java +++ b/functional/Strategize.java @@ -1,5 +1,5 @@ // functional/Strategize.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/TransformFunction.java b/functional/TransformFunction.java index 8a8c4928d..1a046eb12 100644 --- a/functional/TransformFunction.java +++ b/functional/TransformFunction.java @@ -1,5 +1,5 @@ // functional/TransformFunction.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/functional/TriFunction.java b/functional/TriFunction.java index 47895dc95..760496214 100644 --- a/functional/TriFunction.java +++ b/functional/TriFunction.java @@ -1,5 +1,5 @@ // functional/TriFunction.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/TriFunctionTest.java b/functional/TriFunctionTest.java index f87b4421e..fccf8b9a2 100644 --- a/functional/TriFunctionTest.java +++ b/functional/TriFunctionTest.java @@ -1,5 +1,5 @@ // functional/TriFunctionTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/functional/UnboundMethodReference.java b/functional/UnboundMethodReference.java index 88c9d3d33..da2c78729 100644 --- a/functional/UnboundMethodReference.java +++ b/functional/UnboundMethodReference.java @@ -1,5 +1,5 @@ // functional/UnboundMethodReference.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Method reference without an object diff --git a/generics/Amphibian.java b/generics/Amphibian.java index fbff20b56..5e76d8b18 100644 --- a/generics/Amphibian.java +++ b/generics/Amphibian.java @@ -1,5 +1,5 @@ // generics/Amphibian.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Amphibian {} diff --git a/generics/Apply.java b/generics/Apply.java index d1923a279..c93786113 100644 --- a/generics/Apply.java +++ b/generics/Apply.java @@ -1,5 +1,5 @@ // generics/Apply.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.reflect.*; diff --git a/generics/ApplyFunctional.java b/generics/ApplyFunctional.java index 2dd8aa1c8..4cce156e8 100644 --- a/generics/ApplyFunctional.java +++ b/generics/ApplyFunctional.java @@ -1,5 +1,5 @@ // generics/ApplyFunctional.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/ApplyTest.java b/generics/ApplyTest.java index ea50a98bd..62ef4eecf 100644 --- a/generics/ApplyTest.java +++ b/generics/ApplyTest.java @@ -1,5 +1,5 @@ // generics/ApplyTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/ArrayMaker.java b/generics/ArrayMaker.java index 9b495d4e4..f1bb6b9a4 100644 --- a/generics/ArrayMaker.java +++ b/generics/ArrayMaker.java @@ -1,5 +1,5 @@ // generics/ArrayMaker.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.reflect.*; diff --git a/generics/ArrayOfGeneric.java b/generics/ArrayOfGeneric.java index 210d01368..67e6cb97c 100644 --- a/generics/ArrayOfGeneric.java +++ b/generics/ArrayOfGeneric.java @@ -1,5 +1,5 @@ // generics/ArrayOfGeneric.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/ArrayOfGenericReference.java b/generics/ArrayOfGenericReference.java index a1484e2f9..1cb2f3455 100644 --- a/generics/ArrayOfGenericReference.java +++ b/generics/ArrayOfGenericReference.java @@ -1,5 +1,5 @@ // generics/ArrayOfGenericReference.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/BankTeller.java b/generics/BankTeller.java index c0116a6ae..68301996d 100644 --- a/generics/BankTeller.java +++ b/generics/BankTeller.java @@ -1,5 +1,5 @@ // generics/BankTeller.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A very simple bank teller simulation diff --git a/generics/BasicBounds.java b/generics/BasicBounds.java index 321e571e0..434d0fd8f 100644 --- a/generics/BasicBounds.java +++ b/generics/BasicBounds.java @@ -1,5 +1,5 @@ // generics/BasicBounds.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/BasicHolder.java b/generics/BasicHolder.java index 8d8838391..2b8b8a9b1 100644 --- a/generics/BasicHolder.java +++ b/generics/BasicHolder.java @@ -1,5 +1,5 @@ // generics/BasicHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/BasicSupplierDemo.java b/generics/BasicSupplierDemo.java index 1d34c2337..1ce95ca19 100644 --- a/generics/BasicSupplierDemo.java +++ b/generics/BasicSupplierDemo.java @@ -1,5 +1,5 @@ // generics/BasicSupplierDemo.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/generics/ByteSet.java b/generics/ByteSet.java index ae1a2573b..19b27091a 100644 --- a/generics/ByteSet.java +++ b/generics/ByteSet.java @@ -1,5 +1,5 @@ // generics/ByteSet.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/CRGWithBasicHolder.java b/generics/CRGWithBasicHolder.java index 4db0784a3..eb85868a4 100644 --- a/generics/CRGWithBasicHolder.java +++ b/generics/CRGWithBasicHolder.java @@ -1,5 +1,5 @@ // generics/CRGWithBasicHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CaptureConversion.java b/generics/CaptureConversion.java index 190140008..163484682 100644 --- a/generics/CaptureConversion.java +++ b/generics/CaptureConversion.java @@ -1,5 +1,5 @@ // generics/CaptureConversion.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CheckedList.java b/generics/CheckedList.java index b18abf2ee..6e330cf6b 100644 --- a/generics/CheckedList.java +++ b/generics/CheckedList.java @@ -1,5 +1,5 @@ // generics/CheckedList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using Collection.checkedList() diff --git a/generics/ClassCasting.java b/generics/ClassCasting.java index 714e9610b..c6da592a6 100644 --- a/generics/ClassCasting.java +++ b/generics/ClassCasting.java @@ -1,5 +1,5 @@ // generics/ClassCasting.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/generics/ClassTypeCapture.java b/generics/ClassTypeCapture.java index d98210c2c..ab193dfe6 100644 --- a/generics/ClassTypeCapture.java +++ b/generics/ClassTypeCapture.java @@ -1,5 +1,5 @@ // generics/ClassTypeCapture.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/ComparablePet.java b/generics/ComparablePet.java index 356cc6472..3646e66aa 100644 --- a/generics/ComparablePet.java +++ b/generics/ComparablePet.java @@ -1,5 +1,5 @@ // generics/ComparablePet.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CompilerIntelligence.java b/generics/CompilerIntelligence.java index 437b44e14..6e4cd0e81 100644 --- a/generics/CompilerIntelligence.java +++ b/generics/CompilerIntelligence.java @@ -1,5 +1,5 @@ // generics/CompilerIntelligence.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/CountedObject.java b/generics/CountedObject.java index 81777402d..ab4caecdb 100644 --- a/generics/CountedObject.java +++ b/generics/CountedObject.java @@ -1,5 +1,5 @@ // generics/CountedObject.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CovariantArrays.java b/generics/CovariantArrays.java index 3d30a4202..e202ca079 100644 --- a/generics/CovariantArrays.java +++ b/generics/CovariantArrays.java @@ -1,5 +1,5 @@ // generics/CovariantArrays.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CovariantReturnTypes.java b/generics/CovariantReturnTypes.java index 5a1c4797e..04178ad4b 100644 --- a/generics/CovariantReturnTypes.java +++ b/generics/CovariantReturnTypes.java @@ -1,5 +1,5 @@ // generics/CovariantReturnTypes.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CreatorGeneric.java b/generics/CreatorGeneric.java index 98bf7c161..7fd90df46 100644 --- a/generics/CreatorGeneric.java +++ b/generics/CreatorGeneric.java @@ -1,5 +1,5 @@ // generics/CreatorGeneric.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/CuriouslyRecurringGeneric.java b/generics/CuriouslyRecurringGeneric.java index 1d3a69cd1..ee1f3a615 100644 --- a/generics/CuriouslyRecurringGeneric.java +++ b/generics/CuriouslyRecurringGeneric.java @@ -1,5 +1,5 @@ // generics/CuriouslyRecurringGeneric.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/Diamond.java b/generics/Diamond.java index 3af10a18b..32c3ff1ae 100644 --- a/generics/Diamond.java +++ b/generics/Diamond.java @@ -1,5 +1,5 @@ // generics/Diamond.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/DogsAndRobotMethodReferences.java b/generics/DogsAndRobotMethodReferences.java index 81b2c078f..7c3fa3575 100644 --- a/generics/DogsAndRobotMethodReferences.java +++ b/generics/DogsAndRobotMethodReferences.java @@ -1,5 +1,5 @@ // generics/DogsAndRobotMethodReferences.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // "Assisted Latent Typing" diff --git a/generics/DogsAndRobots.cpp b/generics/DogsAndRobots.cpp index 212893a6d..81ced5d99 100644 --- a/generics/DogsAndRobots.cpp +++ b/generics/DogsAndRobots.cpp @@ -1,5 +1,5 @@ // generics/DogsAndRobots.cpp -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. #include diff --git a/generics/DogsAndRobots.java b/generics/DogsAndRobots.java index 95ee18a30..b61511227 100644 --- a/generics/DogsAndRobots.java +++ b/generics/DogsAndRobots.java @@ -1,5 +1,5 @@ // generics/DogsAndRobots.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // No (direct) latent typing in Java diff --git a/generics/DogsAndRobots.py b/generics/DogsAndRobots.py index d09b24139..c9ca6fef9 100644 --- a/generics/DogsAndRobots.py +++ b/generics/DogsAndRobots.py @@ -1,5 +1,5 @@ # generics/DogsAndRobots.py -# (c)2017 MindView LLC: see Copyright.txt +# (c)2020 MindView LLC: see Copyright.txt # We make no guarantees that this code is fit for any purpose. # Visit http://OnJava8.com for more book information. diff --git a/generics/DynamicProxyMixin.java b/generics/DynamicProxyMixin.java index 5aaf96b7d..008efb12a 100644 --- a/generics/DynamicProxyMixin.java +++ b/generics/DynamicProxyMixin.java @@ -1,5 +1,5 @@ // generics/DynamicProxyMixin.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.reflect.*; diff --git a/generics/EpicBattle.java b/generics/EpicBattle.java index f1453c9e5..908a33437 100644 --- a/generics/EpicBattle.java +++ b/generics/EpicBattle.java @@ -1,5 +1,5 @@ // generics/EpicBattle.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Bounds in Java generics diff --git a/generics/Erased.java b/generics/Erased.java index 0c60fbfd4..911839c39 100644 --- a/generics/Erased.java +++ b/generics/Erased.java @@ -1,5 +1,5 @@ // generics/Erased.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/ErasedTypeEquivalence.java b/generics/ErasedTypeEquivalence.java index 9b3827df3..6034b3048 100644 --- a/generics/ErasedTypeEquivalence.java +++ b/generics/ErasedTypeEquivalence.java @@ -1,5 +1,5 @@ // generics/ErasedTypeEquivalence.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/ErasureAndInheritance.java b/generics/ErasureAndInheritance.java index 9a723c1b5..44a07b625 100644 --- a/generics/ErasureAndInheritance.java +++ b/generics/ErasureAndInheritance.java @@ -1,5 +1,5 @@ // generics/ErasureAndInheritance.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/FactoryConstraint.java b/generics/FactoryConstraint.java index c2960da1d..f06510732 100644 --- a/generics/FactoryConstraint.java +++ b/generics/FactoryConstraint.java @@ -1,5 +1,5 @@ // generics/FactoryConstraint.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/Fibonacci.java b/generics/Fibonacci.java index 25d123589..115400617 100644 --- a/generics/Fibonacci.java +++ b/generics/Fibonacci.java @@ -1,5 +1,5 @@ // generics/Fibonacci.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Generate a Fibonacci sequence diff --git a/generics/FilledList.java b/generics/FilledList.java index 064715f06..e24423cef 100644 --- a/generics/FilledList.java +++ b/generics/FilledList.java @@ -1,5 +1,5 @@ // generics/FilledList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/GenericArray.java b/generics/GenericArray.java index c272afcf1..f0ffba3d2 100644 --- a/generics/GenericArray.java +++ b/generics/GenericArray.java @@ -1,5 +1,5 @@ // generics/GenericArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/GenericArray2.java b/generics/GenericArray2.java index 50c9434d0..7ef4179ec 100644 --- a/generics/GenericArray2.java +++ b/generics/GenericArray2.java @@ -1,5 +1,5 @@ // generics/GenericArray2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/GenericArrayWithTypeToken.java b/generics/GenericArrayWithTypeToken.java index 41fcd124e..6ea36a767 100644 --- a/generics/GenericArrayWithTypeToken.java +++ b/generics/GenericArrayWithTypeToken.java @@ -1,5 +1,5 @@ // generics/GenericArrayWithTypeToken.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.lang.reflect.*; diff --git a/generics/GenericCast.java b/generics/GenericCast.java index ddf5deae1..c3f82dac7 100644 --- a/generics/GenericCast.java +++ b/generics/GenericCast.java @@ -1,5 +1,5 @@ // generics/GenericCast.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/GenericHolder.java b/generics/GenericHolder.java index 72cf4f2ce..6d998a1cb 100644 --- a/generics/GenericHolder.java +++ b/generics/GenericHolder.java @@ -1,5 +1,5 @@ // generics/GenericHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/GenericHolder2.java b/generics/GenericHolder2.java index b71543191..9747f49b9 100644 --- a/generics/GenericHolder2.java +++ b/generics/GenericHolder2.java @@ -1,5 +1,5 @@ // generics/GenericHolder2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/GenericMethods.java b/generics/GenericMethods.java index 50db2061b..66f40e72d 100644 --- a/generics/GenericMethods.java +++ b/generics/GenericMethods.java @@ -1,5 +1,5 @@ // generics/GenericMethods.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/GenericReading.java b/generics/GenericReading.java index 2bb83cf83..5709c7a92 100644 --- a/generics/GenericReading.java +++ b/generics/GenericReading.java @@ -1,5 +1,5 @@ // generics/GenericReading.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/GenericVarargs.java b/generics/GenericVarargs.java index 94f679a90..3a6e348ca 100644 --- a/generics/GenericVarargs.java +++ b/generics/GenericVarargs.java @@ -1,5 +1,5 @@ // generics/GenericVarargs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/GenericsAndCovariance.java b/generics/GenericsAndCovariance.java index 31cdc6605..f16b837be 100644 --- a/generics/GenericsAndCovariance.java +++ b/generics/GenericsAndCovariance.java @@ -1,5 +1,5 @@ // generics/GenericsAndCovariance.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/GenericsAndReturnTypes.java b/generics/GenericsAndReturnTypes.java index c64d6a18b..de661864b 100644 --- a/generics/GenericsAndReturnTypes.java +++ b/generics/GenericsAndReturnTypes.java @@ -1,5 +1,5 @@ // generics/GenericsAndReturnTypes.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/HasF.java b/generics/HasF.java index 70f8c0606..f967386e3 100644 --- a/generics/HasF.java +++ b/generics/HasF.java @@ -1,5 +1,5 @@ // generics/HasF.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/HijackedInterface.java b/generics/HijackedInterface.java index c417ecab2..868e1d465 100644 --- a/generics/HijackedInterface.java +++ b/generics/HijackedInterface.java @@ -1,5 +1,5 @@ // generics/HijackedInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/Holder.java b/generics/Holder.java index 0d8e85d00..e4301dc66 100644 --- a/generics/Holder.java +++ b/generics/Holder.java @@ -1,5 +1,5 @@ // generics/Holder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.Objects; diff --git a/generics/Holder1.java b/generics/Holder1.java index dc9f7a115..0c222cb57 100644 --- a/generics/Holder1.java +++ b/generics/Holder1.java @@ -1,5 +1,5 @@ // generics/Holder1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/InheritBounds.java b/generics/InheritBounds.java index 7f535f3b7..fddd25431 100644 --- a/generics/InheritBounds.java +++ b/generics/InheritBounds.java @@ -1,5 +1,5 @@ // generics/InheritBounds.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/InstantiateGenericType.cpp b/generics/InstantiateGenericType.cpp index 6197e5c31..1799d05ba 100644 --- a/generics/InstantiateGenericType.cpp +++ b/generics/InstantiateGenericType.cpp @@ -1,5 +1,5 @@ // generics/InstantiateGenericType.cpp -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // C++, not Java! diff --git a/generics/InstantiateGenericType.java b/generics/InstantiateGenericType.java index 4c46b04ba..5bd42e84f 100644 --- a/generics/InstantiateGenericType.java +++ b/generics/InstantiateGenericType.java @@ -1,5 +1,5 @@ // generics/InstantiateGenericType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.function.*; diff --git a/generics/IterableFibonacci.java b/generics/IterableFibonacci.java index 69708eb28..b5ccf285a 100644 --- a/generics/IterableFibonacci.java +++ b/generics/IterableFibonacci.java @@ -1,5 +1,5 @@ // generics/IterableFibonacci.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Adapt the Fibonacci class to make it Iterable diff --git a/generics/LatentReflection.java b/generics/LatentReflection.java index 9ee02bf18..0e9511a34 100644 --- a/generics/LatentReflection.java +++ b/generics/LatentReflection.java @@ -1,5 +1,5 @@ // generics/LatentReflection.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using reflection for latent typing diff --git a/generics/LinkedStack.java b/generics/LinkedStack.java index 31f7fd0fd..5142bcc73 100644 --- a/generics/LinkedStack.java +++ b/generics/LinkedStack.java @@ -1,5 +1,5 @@ // generics/LinkedStack.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A stack implemented with an internal linked structure diff --git a/generics/ListMaker.java b/generics/ListMaker.java index 7de76a847..582cbaea8 100644 --- a/generics/ListMaker.java +++ b/generics/ListMaker.java @@ -1,5 +1,5 @@ // generics/ListMaker.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/ListOfGenerics.java b/generics/ListOfGenerics.java index c0f5fae80..10a480318 100644 --- a/generics/ListOfGenerics.java +++ b/generics/ListOfGenerics.java @@ -1,5 +1,5 @@ // generics/ListOfGenerics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/ListOfInt.java b/generics/ListOfInt.java index 50491f8f2..f8ac8e11d 100644 --- a/generics/ListOfInt.java +++ b/generics/ListOfInt.java @@ -1,5 +1,5 @@ // generics/ListOfInt.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Autoboxing compensates for the inability diff --git a/generics/LostInformation.java b/generics/LostInformation.java index 031a166c1..e27430d2e 100644 --- a/generics/LostInformation.java +++ b/generics/LostInformation.java @@ -1,5 +1,5 @@ // generics/LostInformation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/Manipulation.java b/generics/Manipulation.java index ff9cb384d..f365cf199 100644 --- a/generics/Manipulation.java +++ b/generics/Manipulation.java @@ -1,5 +1,5 @@ // generics/Manipulation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/Manipulator2.java b/generics/Manipulator2.java index 7d044ef87..7c7c648bb 100644 --- a/generics/Manipulator2.java +++ b/generics/Manipulator2.java @@ -1,5 +1,5 @@ // generics/Manipulator2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/Manipulator3.java b/generics/Manipulator3.java index 7b7b833fb..2201d474c 100644 --- a/generics/Manipulator3.java +++ b/generics/Manipulator3.java @@ -1,5 +1,5 @@ // generics/Manipulator3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/Mixins.cpp b/generics/Mixins.cpp index 3178f357c..89949d46b 100644 --- a/generics/Mixins.cpp +++ b/generics/Mixins.cpp @@ -1,5 +1,5 @@ // generics/Mixins.cpp -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. #include diff --git a/generics/Mixins.java b/generics/Mixins.java index 3c3b94482..af58b81e0 100644 --- a/generics/Mixins.java +++ b/generics/Mixins.java @@ -1,5 +1,5 @@ // generics/Mixins.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/MultipleInterfaceVariants.java b/generics/MultipleInterfaceVariants.java index aca655945..70a535a23 100644 --- a/generics/MultipleInterfaceVariants.java +++ b/generics/MultipleInterfaceVariants.java @@ -1,5 +1,5 @@ // generics/MultipleInterfaceVariants.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/NeedCasting.java b/generics/NeedCasting.java index 910be732d..8801f5d8b 100644 --- a/generics/NeedCasting.java +++ b/generics/NeedCasting.java @@ -1,5 +1,5 @@ // generics/NeedCasting.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/generics/NonCovariantGenerics.java b/generics/NonCovariantGenerics.java index c532708ed..c219a0d3a 100644 --- a/generics/NonCovariantGenerics.java +++ b/generics/NonCovariantGenerics.java @@ -1,5 +1,5 @@ // generics/NonCovariantGenerics.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/NotSelfBounded.java b/generics/NotSelfBounded.java index b691a397d..76aa593cb 100644 --- a/generics/NotSelfBounded.java +++ b/generics/NotSelfBounded.java @@ -1,5 +1,5 @@ // generics/NotSelfBounded.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/ObjectHolder.java b/generics/ObjectHolder.java index 02f81bd19..f1dafd308 100644 --- a/generics/ObjectHolder.java +++ b/generics/ObjectHolder.java @@ -1,5 +1,5 @@ // generics/ObjectHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/OrdinaryArguments.java b/generics/OrdinaryArguments.java index 351316bd0..6e50550d9 100644 --- a/generics/OrdinaryArguments.java +++ b/generics/OrdinaryArguments.java @@ -1,5 +1,5 @@ // generics/OrdinaryArguments.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/Performs.java b/generics/Performs.java index 9a9f248e1..ace095235 100644 --- a/generics/Performs.java +++ b/generics/Performs.java @@ -1,5 +1,5 @@ // generics/Performs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/PlainGenericInheritance.java b/generics/PlainGenericInheritance.java index 4ef82c8d1..93eb61c68 100644 --- a/generics/PlainGenericInheritance.java +++ b/generics/PlainGenericInheritance.java @@ -1,5 +1,5 @@ // generics/PlainGenericInheritance.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/PrimitiveGenericTest.java b/generics/PrimitiveGenericTest.java index 6072b7e82..793564379 100644 --- a/generics/PrimitiveGenericTest.java +++ b/generics/PrimitiveGenericTest.java @@ -1,5 +1,5 @@ // generics/PrimitiveGenericTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/generics/RandomList.java b/generics/RandomList.java index c87aa1624..d4f198bcf 100644 --- a/generics/RandomList.java +++ b/generics/RandomList.java @@ -1,5 +1,5 @@ // generics/RandomList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/RestrictedComparablePets.java b/generics/RestrictedComparablePets.java index a9e9ad742..16146d7b5 100644 --- a/generics/RestrictedComparablePets.java +++ b/generics/RestrictedComparablePets.java @@ -1,5 +1,5 @@ // generics/RestrictedComparablePets.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/ReturnGenericType.java b/generics/ReturnGenericType.java index 3d159679d..bf46ae157 100644 --- a/generics/ReturnGenericType.java +++ b/generics/ReturnGenericType.java @@ -1,5 +1,5 @@ // generics/ReturnGenericType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/SelfBounding.java b/generics/SelfBounding.java index 0a5dfa7c0..c8ecf0ff4 100644 --- a/generics/SelfBounding.java +++ b/generics/SelfBounding.java @@ -1,5 +1,5 @@ // generics/SelfBounding.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/SelfBoundingAndCovariantArguments.java b/generics/SelfBoundingAndCovariantArguments.java index ac5b70721..34262b0ed 100644 --- a/generics/SelfBoundingAndCovariantArguments.java +++ b/generics/SelfBoundingAndCovariantArguments.java @@ -1,5 +1,5 @@ // generics/SelfBoundingAndCovariantArguments.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/SelfBoundingMethods.java b/generics/SelfBoundingMethods.java index 76f0fb775..e6cb79493 100644 --- a/generics/SelfBoundingMethods.java +++ b/generics/SelfBoundingMethods.java @@ -1,5 +1,5 @@ // generics/SelfBoundingMethods.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/Shape.java b/generics/Shape.java index 68a67ea70..dd2458c2b 100644 --- a/generics/Shape.java +++ b/generics/Shape.java @@ -1,5 +1,5 @@ // generics/Shape.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/SimpleDogsAndRobots.java b/generics/SimpleDogsAndRobots.java index c659a9988..b9cee77b9 100644 --- a/generics/SimpleDogsAndRobots.java +++ b/generics/SimpleDogsAndRobots.java @@ -1,5 +1,5 @@ // generics/SimpleDogsAndRobots.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Removing the generic; code still works diff --git a/generics/SimpleHolder.java b/generics/SimpleHolder.java index b8673b243..a73af0abe 100644 --- a/generics/SimpleHolder.java +++ b/generics/SimpleHolder.java @@ -1,5 +1,5 @@ // generics/SimpleHolder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/SimpleQueue.java b/generics/SimpleQueue.java index e74db48d3..76fb4f3e7 100644 --- a/generics/SimpleQueue.java +++ b/generics/SimpleQueue.java @@ -1,5 +1,5 @@ // generics/SimpleQueue.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A different kind of Iterable collection diff --git a/generics/Square.java b/generics/Square.java index f12071f6c..e3bcad934 100644 --- a/generics/Square.java +++ b/generics/Square.java @@ -1,5 +1,5 @@ // generics/Square.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Square extends Shape {} diff --git a/generics/Store.java b/generics/Store.java index 45120db26..c165926a3 100644 --- a/generics/Store.java +++ b/generics/Store.java @@ -1,5 +1,5 @@ // generics/Store.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Building a complex model using generic collections diff --git a/generics/SuperTypeWildcards.java b/generics/SuperTypeWildcards.java index c06a0d86f..f8672a4fc 100644 --- a/generics/SuperTypeWildcards.java +++ b/generics/SuperTypeWildcards.java @@ -1,5 +1,5 @@ // generics/SuperTypeWildcards.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/Templates.cpp b/generics/Templates.cpp index 7434912a8..ab2a3b64a 100644 --- a/generics/Templates.cpp +++ b/generics/Templates.cpp @@ -1,5 +1,5 @@ // generics/Templates.cpp -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. #include diff --git a/generics/ThrowGenericException.java b/generics/ThrowGenericException.java index 5152c00b3..994c7f885 100644 --- a/generics/ThrowGenericException.java +++ b/generics/ThrowGenericException.java @@ -1,5 +1,5 @@ // generics/ThrowGenericException.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/TupleList.java b/generics/TupleList.java index 830b77421..fe93330ba 100644 --- a/generics/TupleList.java +++ b/generics/TupleList.java @@ -1,5 +1,5 @@ // generics/TupleList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Combining generic types to make complex generic types diff --git a/generics/TupleTest.java b/generics/TupleTest.java index 7b22af561..e207da405 100644 --- a/generics/TupleTest.java +++ b/generics/TupleTest.java @@ -1,5 +1,5 @@ // generics/TupleTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/generics/TupleTest2.java b/generics/TupleTest2.java index 73e0e0ce4..3a0c8d148 100644 --- a/generics/TupleTest2.java +++ b/generics/TupleTest2.java @@ -1,5 +1,5 @@ // generics/TupleTest2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import onjava.*; diff --git a/generics/UnboundedWildcards1.java b/generics/UnboundedWildcards1.java index 2a8ce8ae3..6b163a4c2 100644 --- a/generics/UnboundedWildcards1.java +++ b/generics/UnboundedWildcards1.java @@ -1,5 +1,5 @@ // generics/UnboundedWildcards1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/UnboundedWildcards2.java b/generics/UnboundedWildcards2.java index 159bab7b0..ee80d5552 100644 --- a/generics/UnboundedWildcards2.java +++ b/generics/UnboundedWildcards2.java @@ -1,5 +1,5 @@ // generics/UnboundedWildcards2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/Unconstrained.java b/generics/Unconstrained.java index 223c5f8c1..f683d53f3 100644 --- a/generics/Unconstrained.java +++ b/generics/Unconstrained.java @@ -1,5 +1,5 @@ // generics/Unconstrained.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/generics/UseList.java b/generics/UseList.java index ff0262b03..924d3b560 100644 --- a/generics/UseList.java +++ b/generics/UseList.java @@ -1,5 +1,5 @@ // generics/UseList.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/generics/UseList2.java b/generics/UseList2.java index 4e7dcf294..83d3b5d35 100644 --- a/generics/UseList2.java +++ b/generics/UseList2.java @@ -1,5 +1,5 @@ // generics/UseList2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/generics/Vehicle.java b/generics/Vehicle.java index e45b5219c..301a84e4d 100644 --- a/generics/Vehicle.java +++ b/generics/Vehicle.java @@ -1,5 +1,5 @@ // generics/Vehicle.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Vehicle {} diff --git a/generics/WatercolorSets.java b/generics/WatercolorSets.java index 04c7adc6e..7956778d9 100644 --- a/generics/WatercolorSets.java +++ b/generics/WatercolorSets.java @@ -1,5 +1,5 @@ // generics/WatercolorSets.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import generics.watercolors.*; diff --git a/generics/Wildcards.java b/generics/Wildcards.java index aa1a9163a..65348ecbb 100644 --- a/generics/Wildcards.java +++ b/generics/Wildcards.java @@ -1,5 +1,5 @@ // generics/Wildcards.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Exploring the meaning of wildcards diff --git a/generics/coffee/Americano.java b/generics/coffee/Americano.java index be25727ff..96cd4a1fd 100644 --- a/generics/coffee/Americano.java +++ b/generics/coffee/Americano.java @@ -1,5 +1,5 @@ // generics/coffee/Americano.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/coffee/Breve.java b/generics/coffee/Breve.java index f5b521178..329c406b0 100644 --- a/generics/coffee/Breve.java +++ b/generics/coffee/Breve.java @@ -1,5 +1,5 @@ // generics/coffee/Breve.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/coffee/Cappuccino.java b/generics/coffee/Cappuccino.java index 5804b7711..3ce89b50f 100644 --- a/generics/coffee/Cappuccino.java +++ b/generics/coffee/Cappuccino.java @@ -1,5 +1,5 @@ // generics/coffee/Cappuccino.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/coffee/Coffee.java b/generics/coffee/Coffee.java index 760788d40..c90d88c19 100644 --- a/generics/coffee/Coffee.java +++ b/generics/coffee/Coffee.java @@ -1,5 +1,5 @@ // generics/coffee/Coffee.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/coffee/CoffeeSupplier.java b/generics/coffee/CoffeeSupplier.java index f980c15d2..8973dfbc1 100644 --- a/generics/coffee/CoffeeSupplier.java +++ b/generics/coffee/CoffeeSupplier.java @@ -1,5 +1,5 @@ // generics/coffee/CoffeeSupplier.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java generics.coffee.CoffeeSupplier} diff --git a/generics/coffee/Latte.java b/generics/coffee/Latte.java index 99bbfa70a..d735cc876 100644 --- a/generics/coffee/Latte.java +++ b/generics/coffee/Latte.java @@ -1,5 +1,5 @@ // generics/coffee/Latte.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/coffee/Mocha.java b/generics/coffee/Mocha.java index 87ef0f7ee..cc567be1e 100644 --- a/generics/coffee/Mocha.java +++ b/generics/coffee/Mocha.java @@ -1,5 +1,5 @@ // generics/coffee/Mocha.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.coffee; diff --git a/generics/decorator/Decoration.java b/generics/decorator/Decoration.java index d7f963253..96611a75a 100644 --- a/generics/decorator/Decoration.java +++ b/generics/decorator/Decoration.java @@ -1,5 +1,5 @@ // generics/decorator/Decoration.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java generics.decorator.Decoration} diff --git a/generics/dogsandrobots.go b/generics/dogsandrobots.go index 3b49bc52f..f65b9c18f 100644 --- a/generics/dogsandrobots.go +++ b/generics/dogsandrobots.go @@ -1,5 +1,5 @@ // generics/dogsandrobots.go -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package main diff --git a/generics/watercolors/Watercolors.java b/generics/watercolors/Watercolors.java index 205ed6ee7..0625e5326 100644 --- a/generics/watercolors/Watercolors.java +++ b/generics/watercolors/Watercolors.java @@ -1,5 +1,5 @@ // generics/watercolors/Watercolors.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package generics.watercolors; diff --git a/hiding/Cake.java b/hiding/Cake.java index ebb19720e..d20e2cbf1 100644 --- a/hiding/Cake.java +++ b/hiding/Cake.java @@ -1,5 +1,5 @@ // hiding/Cake.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Accesses a class in a separate compilation unit diff --git a/hiding/ChocolateChip.java b/hiding/ChocolateChip.java index 0ba2066a2..1467fff42 100644 --- a/hiding/ChocolateChip.java +++ b/hiding/ChocolateChip.java @@ -1,5 +1,5 @@ // hiding/ChocolateChip.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Can't use package-access member from another package diff --git a/hiding/ChocolateChip2.java b/hiding/ChocolateChip2.java index 7245a279f..03c9d1ab2 100644 --- a/hiding/ChocolateChip2.java +++ b/hiding/ChocolateChip2.java @@ -1,5 +1,5 @@ // hiding/ChocolateChip2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import hiding.cookie2.*; diff --git a/hiding/CreatePackageAccessObject.java b/hiding/CreatePackageAccessObject.java index 3e057ea3f..8442b51f7 100644 --- a/hiding/CreatePackageAccessObject.java +++ b/hiding/CreatePackageAccessObject.java @@ -1,5 +1,5 @@ // hiding/CreatePackageAccessObject.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/hiding/Dinner.java b/hiding/Dinner.java index 3c4d9e1a7..7a7b97d59 100644 --- a/hiding/Dinner.java +++ b/hiding/Dinner.java @@ -1,5 +1,5 @@ // hiding/Dinner.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Uses the library diff --git a/hiding/FullQualification.java b/hiding/FullQualification.java index 39e7cc343..2fadb28cd 100644 --- a/hiding/FullQualification.java +++ b/hiding/FullQualification.java @@ -1,5 +1,5 @@ // hiding/FullQualification.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/hiding/IceCream.java b/hiding/IceCream.java index b9381f018..d91619a26 100644 --- a/hiding/IceCream.java +++ b/hiding/IceCream.java @@ -1,5 +1,5 @@ // hiding/IceCream.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates "private" keyword diff --git a/hiding/ImportedMyClass.java b/hiding/ImportedMyClass.java index 63cb2bd5c..a644f5d83 100644 --- a/hiding/ImportedMyClass.java +++ b/hiding/ImportedMyClass.java @@ -1,5 +1,5 @@ // hiding/ImportedMyClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import hiding.mypackage.*; diff --git a/hiding/LibTest.java b/hiding/LibTest.java index c75fa9379..c439352a5 100644 --- a/hiding/LibTest.java +++ b/hiding/LibTest.java @@ -1,5 +1,5 @@ // hiding/LibTest.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Uses the library diff --git a/hiding/Lunch.java b/hiding/Lunch.java index 1e4019205..eca4baf03 100644 --- a/hiding/Lunch.java +++ b/hiding/Lunch.java @@ -1,5 +1,5 @@ // hiding/Lunch.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates class access specifiers. Make a class diff --git a/hiding/OrganizedByAccess.java b/hiding/OrganizedByAccess.java index 67437c8f5..46af158fc 100644 --- a/hiding/OrganizedByAccess.java +++ b/hiding/OrganizedByAccess.java @@ -1,5 +1,5 @@ // hiding/OrganizedByAccess.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/hiding/Pie.java b/hiding/Pie.java index ce5abfee1..1470fbc33 100644 --- a/hiding/Pie.java +++ b/hiding/Pie.java @@ -1,5 +1,5 @@ // hiding/Pie.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The other class diff --git a/hiding/QualifiedMyClass.java b/hiding/QualifiedMyClass.java index 3b642f561..58a097ccd 100644 --- a/hiding/QualifiedMyClass.java +++ b/hiding/QualifiedMyClass.java @@ -1,5 +1,5 @@ // hiding/QualifiedMyClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/hiding/SingleImport.java b/hiding/SingleImport.java index 4959fb541..5168ebe88 100644 --- a/hiding/SingleImport.java +++ b/hiding/SingleImport.java @@ -1,5 +1,5 @@ // hiding/SingleImport.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.ArrayList; diff --git a/hiding/cookie2/Cookie.java b/hiding/cookie2/Cookie.java index a3753a2e6..aff5bb172 100644 --- a/hiding/cookie2/Cookie.java +++ b/hiding/cookie2/Cookie.java @@ -1,5 +1,5 @@ // hiding/cookie2/Cookie.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package hiding.cookie2; diff --git a/hiding/dessert/Cookie.java b/hiding/dessert/Cookie.java index 58ac34bb7..803e504c2 100644 --- a/hiding/dessert/Cookie.java +++ b/hiding/dessert/Cookie.java @@ -1,5 +1,5 @@ // hiding/dessert/Cookie.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creates a library diff --git a/hiding/mypackage/MyClass.java b/hiding/mypackage/MyClass.java index 5fd8c33a4..5245d4796 100644 --- a/hiding/mypackage/MyClass.java +++ b/hiding/mypackage/MyClass.java @@ -1,5 +1,5 @@ // hiding/mypackage/MyClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package hiding.mypackage; diff --git a/hiding/packageaccess/PublicConstructor.java b/hiding/packageaccess/PublicConstructor.java index 2e7c050ff..533c28a0a 100644 --- a/hiding/packageaccess/PublicConstructor.java +++ b/hiding/packageaccess/PublicConstructor.java @@ -1,5 +1,5 @@ // hiding/packageaccess/PublicConstructor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package hiding.packageaccess; diff --git a/housekeeping/Apricot.java b/housekeeping/Apricot.java index da4c600f7..dae8f33de 100644 --- a/housekeeping/Apricot.java +++ b/housekeeping/Apricot.java @@ -1,5 +1,5 @@ // housekeeping/Apricot.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Apricot { diff --git a/housekeeping/ArrayClassObj.java b/housekeeping/ArrayClassObj.java index bd90c0f05..44e31b59e 100644 --- a/housekeeping/ArrayClassObj.java +++ b/housekeeping/ArrayClassObj.java @@ -1,5 +1,5 @@ // housekeeping/ArrayClassObj.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating an array of nonprimitive objects diff --git a/housekeeping/ArrayInit.java b/housekeeping/ArrayInit.java index 5ccc56889..4186bd24e 100644 --- a/housekeeping/ArrayInit.java +++ b/housekeeping/ArrayInit.java @@ -1,5 +1,5 @@ // housekeeping/ArrayInit.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Array initialization diff --git a/housekeeping/ArrayNew.java b/housekeeping/ArrayNew.java index c37122b8e..022cec168 100644 --- a/housekeeping/ArrayNew.java +++ b/housekeeping/ArrayNew.java @@ -1,5 +1,5 @@ // housekeeping/ArrayNew.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating arrays with new diff --git a/housekeeping/ArraysOfPrimitives.java b/housekeeping/ArraysOfPrimitives.java index 0952aa7bf..165afe896 100644 --- a/housekeeping/ArraysOfPrimitives.java +++ b/housekeeping/ArraysOfPrimitives.java @@ -1,5 +1,5 @@ // housekeeping/ArraysOfPrimitives.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/AutoboxingVarargs.java b/housekeeping/AutoboxingVarargs.java index 61cf17740..c670fa670 100644 --- a/housekeeping/AutoboxingVarargs.java +++ b/housekeeping/AutoboxingVarargs.java @@ -1,5 +1,5 @@ // housekeeping/AutoboxingVarargs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/BananaPeel.java b/housekeeping/BananaPeel.java index badf828a6..b3e01b273 100644 --- a/housekeeping/BananaPeel.java +++ b/housekeeping/BananaPeel.java @@ -1,5 +1,5 @@ // housekeeping/BananaPeel.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/Burrito.java b/housekeeping/Burrito.java index 316f3324a..e3fd028bd 100644 --- a/housekeeping/Burrito.java +++ b/housekeeping/Burrito.java @@ -1,5 +1,5 @@ // housekeeping/Burrito.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/Counter.java b/housekeeping/Counter.java index 3db917be2..d0a58ecc6 100644 --- a/housekeeping/Counter.java +++ b/housekeeping/Counter.java @@ -1,5 +1,5 @@ // housekeeping/Counter.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Counter { diff --git a/housekeeping/DefaultConstructor.java b/housekeeping/DefaultConstructor.java index a64294ead..22e3787dd 100644 --- a/housekeeping/DefaultConstructor.java +++ b/housekeeping/DefaultConstructor.java @@ -1,5 +1,5 @@ // housekeeping/DefaultConstructor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/Demotion.java b/housekeeping/Demotion.java index e03ee8cca..ad2c4e86b 100644 --- a/housekeeping/Demotion.java +++ b/housekeeping/Demotion.java @@ -1,5 +1,5 @@ // housekeeping/Demotion.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demotion of primitives diff --git a/housekeeping/DynamicArray.java b/housekeeping/DynamicArray.java index 7c2cdf811..726ec034a 100644 --- a/housekeeping/DynamicArray.java +++ b/housekeeping/DynamicArray.java @@ -1,5 +1,5 @@ // housekeeping/DynamicArray.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Array initialization diff --git a/housekeeping/EnumOrder.java b/housekeeping/EnumOrder.java index 71e7855a0..a3c962847 100644 --- a/housekeeping/EnumOrder.java +++ b/housekeeping/EnumOrder.java @@ -1,5 +1,5 @@ // housekeeping/EnumOrder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/ExplicitStatic.java b/housekeeping/ExplicitStatic.java index 885886486..7d9cb31ad 100644 --- a/housekeeping/ExplicitStatic.java +++ b/housekeeping/ExplicitStatic.java @@ -1,5 +1,5 @@ // housekeeping/ExplicitStatic.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Explicit static initialization with "static" clause diff --git a/housekeeping/Flower.java b/housekeeping/Flower.java index 5f2766d82..a62d7cbe5 100644 --- a/housekeeping/Flower.java +++ b/housekeeping/Flower.java @@ -1,5 +1,5 @@ // housekeeping/Flower.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Calling constructors with "this" diff --git a/housekeeping/InitialValues.java b/housekeeping/InitialValues.java index c91360431..dced4dd2e 100644 --- a/housekeeping/InitialValues.java +++ b/housekeeping/InitialValues.java @@ -1,5 +1,5 @@ // housekeeping/InitialValues.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Shows default initial values diff --git a/housekeeping/InitialValues2.java b/housekeeping/InitialValues2.java index ab0759534..1cb509744 100644 --- a/housekeeping/InitialValues2.java +++ b/housekeeping/InitialValues2.java @@ -1,5 +1,5 @@ // housekeeping/InitialValues2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Providing explicit initial values diff --git a/housekeeping/Leaf.java b/housekeeping/Leaf.java index 761de2074..f9c560b24 100644 --- a/housekeeping/Leaf.java +++ b/housekeeping/Leaf.java @@ -1,5 +1,5 @@ // housekeeping/Leaf.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Simple use of the "this" keyword diff --git a/housekeeping/Measurement.java b/housekeeping/Measurement.java index a783e2c01..8a920779e 100644 --- a/housekeeping/Measurement.java +++ b/housekeeping/Measurement.java @@ -1,5 +1,5 @@ // housekeeping/Measurement.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. class Depth {} diff --git a/housekeeping/MethodInit.java b/housekeeping/MethodInit.java index 6b8261aa7..84e15fcef 100644 --- a/housekeeping/MethodInit.java +++ b/housekeeping/MethodInit.java @@ -1,5 +1,5 @@ // housekeeping/MethodInit.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class MethodInit { diff --git a/housekeeping/MethodInit2.java b/housekeeping/MethodInit2.java index a6024f01b..24750fb2d 100644 --- a/housekeeping/MethodInit2.java +++ b/housekeeping/MethodInit2.java @@ -1,5 +1,5 @@ // housekeeping/MethodInit2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class MethodInit2 { diff --git a/housekeeping/MethodInit3.java b/housekeeping/MethodInit3.java index 4361b7c5b..2a6524aba 100644 --- a/housekeeping/MethodInit3.java +++ b/housekeeping/MethodInit3.java @@ -1,5 +1,5 @@ // housekeeping/MethodInit3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class MethodInit3 { diff --git a/housekeeping/Mugs.java b/housekeeping/Mugs.java index d9b928024..e4ebba695 100644 --- a/housekeeping/Mugs.java +++ b/housekeeping/Mugs.java @@ -1,5 +1,5 @@ // housekeeping/Mugs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Instance initialization diff --git a/housekeeping/NewVarArgs.java b/housekeeping/NewVarArgs.java index 28eb2a9c5..291dd1346 100644 --- a/housekeeping/NewVarArgs.java +++ b/housekeeping/NewVarArgs.java @@ -1,5 +1,5 @@ // housekeeping/NewVarArgs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using array syntax to create variable argument lists diff --git a/housekeeping/NoSynthesis.java b/housekeeping/NoSynthesis.java index 88219e006..217c20230 100644 --- a/housekeeping/NoSynthesis.java +++ b/housekeeping/NoSynthesis.java @@ -1,5 +1,5 @@ // housekeeping/NoSynthesis.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/OptionalTrailingArguments.java b/housekeeping/OptionalTrailingArguments.java index f385bdd34..d7ee9fbbf 100644 --- a/housekeeping/OptionalTrailingArguments.java +++ b/housekeeping/OptionalTrailingArguments.java @@ -1,5 +1,5 @@ // housekeeping/OptionalTrailingArguments.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/OrderOfInitialization.java b/housekeeping/OrderOfInitialization.java index 7048f6202..c715ed7c5 100644 --- a/housekeeping/OrderOfInitialization.java +++ b/housekeeping/OrderOfInitialization.java @@ -1,5 +1,5 @@ // housekeeping/OrderOfInitialization.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstrates initialization order diff --git a/housekeeping/Overloading.java b/housekeeping/Overloading.java index 00f9e0477..99d21bf80 100644 --- a/housekeeping/Overloading.java +++ b/housekeeping/Overloading.java @@ -1,5 +1,5 @@ // housekeeping/Overloading.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Both constructor and ordinary method overloading diff --git a/housekeeping/OverloadingOrder.java b/housekeeping/OverloadingOrder.java index 694fff9a5..42f6466ec 100644 --- a/housekeeping/OverloadingOrder.java +++ b/housekeeping/OverloadingOrder.java @@ -1,5 +1,5 @@ // housekeeping/OverloadingOrder.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Overloading based on the order of the arguments diff --git a/housekeeping/OverloadingVarargs.java b/housekeeping/OverloadingVarargs.java index fb96bad10..c13b7406f 100644 --- a/housekeeping/OverloadingVarargs.java +++ b/housekeeping/OverloadingVarargs.java @@ -1,5 +1,5 @@ // housekeeping/OverloadingVarargs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/OverloadingVarargs2.java b/housekeeping/OverloadingVarargs2.java index a9b779d8d..c3a098451 100644 --- a/housekeeping/OverloadingVarargs2.java +++ b/housekeeping/OverloadingVarargs2.java @@ -1,5 +1,5 @@ // housekeeping/OverloadingVarargs2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/housekeeping/OverloadingVarargs3.java b/housekeeping/OverloadingVarargs3.java index 6245ea742..23e757ec5 100644 --- a/housekeeping/OverloadingVarargs3.java +++ b/housekeeping/OverloadingVarargs3.java @@ -1,5 +1,5 @@ // housekeeping/OverloadingVarargs3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/PassingThis.java b/housekeeping/PassingThis.java index c6769a53f..ce725eabf 100644 --- a/housekeeping/PassingThis.java +++ b/housekeeping/PassingThis.java @@ -1,5 +1,5 @@ // housekeeping/PassingThis.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/PrimitiveOverloading.java b/housekeeping/PrimitiveOverloading.java index c54df4395..1d8c1e2c6 100644 --- a/housekeeping/PrimitiveOverloading.java +++ b/housekeeping/PrimitiveOverloading.java @@ -1,5 +1,5 @@ // housekeeping/PrimitiveOverloading.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Promotion of primitives and overloading diff --git a/housekeeping/SimpleConstructor.java b/housekeeping/SimpleConstructor.java index e6da947c5..c6917c33d 100644 --- a/housekeeping/SimpleConstructor.java +++ b/housekeeping/SimpleConstructor.java @@ -1,5 +1,5 @@ // housekeeping/SimpleConstructor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Demonstration of a simple constructor diff --git a/housekeeping/SimpleConstructor2.java b/housekeeping/SimpleConstructor2.java index e2449f500..4a191af78 100644 --- a/housekeeping/SimpleConstructor2.java +++ b/housekeeping/SimpleConstructor2.java @@ -1,5 +1,5 @@ // housekeeping/SimpleConstructor2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Constructors can have arguments diff --git a/housekeeping/SimpleEnumUse.java b/housekeeping/SimpleEnumUse.java index c5e4b6a90..cc0de33b2 100644 --- a/housekeeping/SimpleEnumUse.java +++ b/housekeeping/SimpleEnumUse.java @@ -1,5 +1,5 @@ // housekeeping/SimpleEnumUse.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/Spiciness.java b/housekeeping/Spiciness.java index e4988d88e..a134a822d 100644 --- a/housekeeping/Spiciness.java +++ b/housekeeping/Spiciness.java @@ -1,5 +1,5 @@ // housekeeping/Spiciness.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/housekeeping/Spoon.java b/housekeeping/Spoon.java index b8ce57882..fd3448159 100644 --- a/housekeeping/Spoon.java +++ b/housekeeping/Spoon.java @@ -1,5 +1,5 @@ // housekeeping/Spoon.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Spoon { diff --git a/housekeeping/StaticInitialization.java b/housekeeping/StaticInitialization.java index 27952629e..0cfe99aea 100644 --- a/housekeeping/StaticInitialization.java +++ b/housekeeping/StaticInitialization.java @@ -1,5 +1,5 @@ // housekeeping/StaticInitialization.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Specifying initial values in a class definition diff --git a/housekeeping/TerminationCondition.java b/housekeeping/TerminationCondition.java index 2ef78ecba..393540ac0 100644 --- a/housekeeping/TerminationCondition.java +++ b/housekeeping/TerminationCondition.java @@ -1,5 +1,5 @@ // housekeeping/TerminationCondition.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using finalize() to detect an object that diff --git a/housekeeping/VarArgs.java b/housekeeping/VarArgs.java index 36dfb5a0a..73a94c392 100644 --- a/housekeeping/VarArgs.java +++ b/housekeeping/VarArgs.java @@ -1,5 +1,5 @@ // housekeeping/VarArgs.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using array syntax to create variable argument lists diff --git a/housekeeping/VarargType.java b/housekeeping/VarargType.java index 311b0487d..5b25b0536 100644 --- a/housekeeping/VarargType.java +++ b/housekeeping/VarargType.java @@ -1,5 +1,5 @@ // housekeeping/VarargType.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/innerclasses/AnonymousConstructor.java b/innerclasses/AnonymousConstructor.java index 7395a3355..d8e08e7c9 100644 --- a/innerclasses/AnonymousConstructor.java +++ b/innerclasses/AnonymousConstructor.java @@ -1,5 +1,5 @@ // innerclasses/AnonymousConstructor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating a constructor for an anonymous inner class diff --git a/innerclasses/BigEgg.java b/innerclasses/BigEgg.java index c1572c594..7b2c36246 100644 --- a/innerclasses/BigEgg.java +++ b/innerclasses/BigEgg.java @@ -1,5 +1,5 @@ // innerclasses/BigEgg.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // An inner class cannot be overridden like a method diff --git a/innerclasses/BigEgg2.java b/innerclasses/BigEgg2.java index 0eb0abce4..1631008d2 100644 --- a/innerclasses/BigEgg2.java +++ b/innerclasses/BigEgg2.java @@ -1,5 +1,5 @@ // innerclasses/BigEgg2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Proper inheritance of an inner class diff --git a/innerclasses/Callbacks.java b/innerclasses/Callbacks.java index 214019c5f..d16593322 100644 --- a/innerclasses/Callbacks.java +++ b/innerclasses/Callbacks.java @@ -1,5 +1,5 @@ // innerclasses/Callbacks.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using inner classes for callbacks diff --git a/innerclasses/ClassInInterface.java b/innerclasses/ClassInInterface.java index a2e34ccb4..c3cc0589b 100644 --- a/innerclasses/ClassInInterface.java +++ b/innerclasses/ClassInInterface.java @@ -1,5 +1,5 @@ // innerclasses/ClassInInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java ClassInInterface$Test} diff --git a/innerclasses/Contents.java b/innerclasses/Contents.java index 98360c794..0cebe1a0d 100644 --- a/innerclasses/Contents.java +++ b/innerclasses/Contents.java @@ -1,5 +1,5 @@ // innerclasses/Contents.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public interface Contents { diff --git a/innerclasses/Destination.java b/innerclasses/Destination.java index 4b5ded927..bf221526b 100644 --- a/innerclasses/Destination.java +++ b/innerclasses/Destination.java @@ -1,5 +1,5 @@ // innerclasses/Destination.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public interface Destination { diff --git a/innerclasses/DotNew.java b/innerclasses/DotNew.java index e587e461e..317400e80 100644 --- a/innerclasses/DotNew.java +++ b/innerclasses/DotNew.java @@ -1,5 +1,5 @@ // innerclasses/DotNew.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating an inner class directly using .new syntax diff --git a/innerclasses/DotThis.java b/innerclasses/DotThis.java index 6ef93b930..b87cb1f4c 100644 --- a/innerclasses/DotThis.java +++ b/innerclasses/DotThis.java @@ -1,5 +1,5 @@ // innerclasses/DotThis.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Accessing the outer-class object diff --git a/innerclasses/GreenhouseController.java b/innerclasses/GreenhouseController.java index cdec74565..cf3ec6530 100644 --- a/innerclasses/GreenhouseController.java +++ b/innerclasses/GreenhouseController.java @@ -1,5 +1,5 @@ // innerclasses/GreenhouseController.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Configure and execute the greenhouse system diff --git a/innerclasses/GreenhouseControls.java b/innerclasses/GreenhouseControls.java index 534deb9ac..57458d66f 100644 --- a/innerclasses/GreenhouseControls.java +++ b/innerclasses/GreenhouseControls.java @@ -1,5 +1,5 @@ // innerclasses/GreenhouseControls.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // This produces a specific application of the diff --git a/innerclasses/InheritInner.java b/innerclasses/InheritInner.java index 410e2864a..ffc868946 100644 --- a/innerclasses/InheritInner.java +++ b/innerclasses/InheritInner.java @@ -1,5 +1,5 @@ // innerclasses/InheritInner.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Inheriting an inner class diff --git a/innerclasses/LocalInnerClass.java b/innerclasses/LocalInnerClass.java index 533a25d04..015108545 100644 --- a/innerclasses/LocalInnerClass.java +++ b/innerclasses/LocalInnerClass.java @@ -1,5 +1,5 @@ // innerclasses/LocalInnerClass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Holds a sequence of Objects diff --git a/innerclasses/MultiImplementation.java b/innerclasses/MultiImplementation.java index 0b6db9e62..6eb6c494f 100644 --- a/innerclasses/MultiImplementation.java +++ b/innerclasses/MultiImplementation.java @@ -1,5 +1,5 @@ // innerclasses/MultiImplementation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // For concrete or abstract classes, inner classes diff --git a/innerclasses/MultiNestingAccess.java b/innerclasses/MultiNestingAccess.java index a05eb0447..bf9e3cb02 100644 --- a/innerclasses/MultiNestingAccess.java +++ b/innerclasses/MultiNestingAccess.java @@ -1,5 +1,5 @@ // innerclasses/MultiNestingAccess.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Nested classes can access all members of all diff --git a/innerclasses/Parcel1.java b/innerclasses/Parcel1.java index 33467b1e8..94464cbcd 100644 --- a/innerclasses/Parcel1.java +++ b/innerclasses/Parcel1.java @@ -1,5 +1,5 @@ // innerclasses/Parcel1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating inner classes diff --git a/innerclasses/Parcel10.java b/innerclasses/Parcel10.java index 77684e413..7150c1929 100644 --- a/innerclasses/Parcel10.java +++ b/innerclasses/Parcel10.java @@ -1,5 +1,5 @@ // innerclasses/Parcel10.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using "instance initialization" to perform diff --git a/innerclasses/Parcel11.java b/innerclasses/Parcel11.java index 40d8da484..720981f0e 100644 --- a/innerclasses/Parcel11.java +++ b/innerclasses/Parcel11.java @@ -1,5 +1,5 @@ // innerclasses/Parcel11.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Nested classes (static inner classes) diff --git a/innerclasses/Parcel2.java b/innerclasses/Parcel2.java index 1f4f8274d..1eca5cba2 100644 --- a/innerclasses/Parcel2.java +++ b/innerclasses/Parcel2.java @@ -1,5 +1,5 @@ // innerclasses/Parcel2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Returning a reference to an inner class diff --git a/innerclasses/Parcel3.java b/innerclasses/Parcel3.java index 6ee03313b..2e0733e05 100644 --- a/innerclasses/Parcel3.java +++ b/innerclasses/Parcel3.java @@ -1,5 +1,5 @@ // innerclasses/Parcel3.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using .new to create instances of inner classes diff --git a/innerclasses/Parcel5.java b/innerclasses/Parcel5.java index 643322d1b..622b3fd08 100644 --- a/innerclasses/Parcel5.java +++ b/innerclasses/Parcel5.java @@ -1,5 +1,5 @@ // innerclasses/Parcel5.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Nesting a class within a method diff --git a/innerclasses/Parcel6.java b/innerclasses/Parcel6.java index 118ff6f51..7a2c866e7 100644 --- a/innerclasses/Parcel6.java +++ b/innerclasses/Parcel6.java @@ -1,5 +1,5 @@ // innerclasses/Parcel6.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Nesting a class within a scope diff --git a/innerclasses/Parcel7.java b/innerclasses/Parcel7.java index 7ed0ef514..3a4aefbb6 100644 --- a/innerclasses/Parcel7.java +++ b/innerclasses/Parcel7.java @@ -1,5 +1,5 @@ // innerclasses/Parcel7.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Returning an instance of an anonymous inner class diff --git a/innerclasses/Parcel7b.java b/innerclasses/Parcel7b.java index 6c4a40484..bee95727e 100644 --- a/innerclasses/Parcel7b.java +++ b/innerclasses/Parcel7b.java @@ -1,5 +1,5 @@ // innerclasses/Parcel7b.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Expanded version of Parcel7.java diff --git a/innerclasses/Parcel8.java b/innerclasses/Parcel8.java index ead289089..1e615ac5a 100644 --- a/innerclasses/Parcel8.java +++ b/innerclasses/Parcel8.java @@ -1,5 +1,5 @@ // innerclasses/Parcel8.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Calling the base-class constructor diff --git a/innerclasses/Parcel9.java b/innerclasses/Parcel9.java index 599599c9c..775390f13 100644 --- a/innerclasses/Parcel9.java +++ b/innerclasses/Parcel9.java @@ -1,5 +1,5 @@ // innerclasses/Parcel9.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/innerclasses/Sequence.java b/innerclasses/Sequence.java index ebcbdeea6..b5a870b98 100644 --- a/innerclasses/Sequence.java +++ b/innerclasses/Sequence.java @@ -1,5 +1,5 @@ // innerclasses/Sequence.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Holds a sequence of Objects diff --git a/innerclasses/TestBed.java b/innerclasses/TestBed.java index fb969a1fe..d4bc16dda 100644 --- a/innerclasses/TestBed.java +++ b/innerclasses/TestBed.java @@ -1,5 +1,5 @@ // innerclasses/TestBed.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Putting test code in a nested class diff --git a/innerclasses/TestParcel.java b/innerclasses/TestParcel.java index c1549a631..f1ec5d47f 100644 --- a/innerclasses/TestParcel.java +++ b/innerclasses/TestParcel.java @@ -1,5 +1,5 @@ // innerclasses/TestParcel.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/innerclasses/Wrapping.java b/innerclasses/Wrapping.java index 15b2e76f1..651c07488 100644 --- a/innerclasses/Wrapping.java +++ b/innerclasses/Wrapping.java @@ -1,5 +1,5 @@ // innerclasses/Wrapping.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. public class Wrapping { diff --git a/innerclasses/controller/Controller.java b/innerclasses/controller/Controller.java index 794dfaa37..9a3625b36 100644 --- a/innerclasses/controller/Controller.java +++ b/innerclasses/controller/Controller.java @@ -1,5 +1,5 @@ // innerclasses/controller/Controller.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The reusable framework for control systems diff --git a/innerclasses/controller/Event.java b/innerclasses/controller/Event.java index ed46f48cb..5523168f4 100644 --- a/innerclasses/controller/Event.java +++ b/innerclasses/controller/Event.java @@ -1,5 +1,5 @@ // innerclasses/controller/Event.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The common methods for any control event diff --git a/innerclasses/mui/MultiInterfaces.java b/innerclasses/mui/MultiInterfaces.java index cdfc0cdab..127a6c80b 100644 --- a/innerclasses/mui/MultiInterfaces.java +++ b/innerclasses/mui/MultiInterfaces.java @@ -1,5 +1,5 @@ // innerclasses/mui/MultiInterfaces.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Two ways a class can implement multiple interfaces diff --git a/interfaces/AbstractAccess.java b/interfaces/AbstractAccess.java index cb155163f..c2e43da3a 100644 --- a/interfaces/AbstractAccess.java +++ b/interfaces/AbstractAccess.java @@ -1,5 +1,5 @@ // interfaces/AbstractAccess.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/AbstractWithoutAbstracts.java b/interfaces/AbstractWithoutAbstracts.java index 428590d1c..2e6b700c9 100644 --- a/interfaces/AbstractWithoutAbstracts.java +++ b/interfaces/AbstractWithoutAbstracts.java @@ -1,5 +1,5 @@ // interfaces/AbstractWithoutAbstracts.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/AdaptedRandomDoubles.java b/interfaces/AdaptedRandomDoubles.java index dc80a5798..6c7866554 100644 --- a/interfaces/AdaptedRandomDoubles.java +++ b/interfaces/AdaptedRandomDoubles.java @@ -1,5 +1,5 @@ // interfaces/AdaptedRandomDoubles.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creating an adapter with inheritance diff --git a/interfaces/Adventure.java b/interfaces/Adventure.java index 0691fd732..1a7135d13 100644 --- a/interfaces/Adventure.java +++ b/interfaces/Adventure.java @@ -1,5 +1,5 @@ // interfaces/Adventure.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Multiple interfaces diff --git a/interfaces/AnImplementation.java b/interfaces/AnImplementation.java index f22ae3610..3ff13a30c 100644 --- a/interfaces/AnImplementation.java +++ b/interfaces/AnImplementation.java @@ -1,5 +1,5 @@ // interfaces/AnImplementation.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/AnInterface.java b/interfaces/AnInterface.java index 070af2ca8..30f82b3a0 100644 --- a/interfaces/AnInterface.java +++ b/interfaces/AnInterface.java @@ -1,5 +1,5 @@ // interfaces/AnInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Applicator.java b/interfaces/Applicator.java index 1c57d8a68..a6aa172f9 100644 --- a/interfaces/Applicator.java +++ b/interfaces/Applicator.java @@ -1,5 +1,5 @@ // interfaces/Applicator.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/AttemptToUseBasic.java b/interfaces/AttemptToUseBasic.java index 25901d865..0d2655279 100644 --- a/interfaces/AttemptToUseBasic.java +++ b/interfaces/AttemptToUseBasic.java @@ -1,5 +1,5 @@ // interfaces/AttemptToUseBasic.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {WillNotCompile} diff --git a/interfaces/Basic.java b/interfaces/Basic.java index 9643027d0..19c1c75b2 100644 --- a/interfaces/Basic.java +++ b/interfaces/Basic.java @@ -1,5 +1,5 @@ // interfaces/Basic.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Basic2.java b/interfaces/Basic2.java index a0e8e9b26..4c8f0c93c 100644 --- a/interfaces/Basic2.java +++ b/interfaces/Basic2.java @@ -1,5 +1,5 @@ // interfaces/Basic2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Factories.java b/interfaces/Factories.java index 508df208f..87e282513 100644 --- a/interfaces/Factories.java +++ b/interfaces/Factories.java @@ -1,5 +1,5 @@ // interfaces/Factories.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Games.java b/interfaces/Games.java index 9d0afbc45..867efe0cc 100644 --- a/interfaces/Games.java +++ b/interfaces/Games.java @@ -1,5 +1,5 @@ // interfaces/Games.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // A Game framework using Factory Methods diff --git a/interfaces/HorrorShow.java b/interfaces/HorrorShow.java index 90f84129d..b1c687dac 100644 --- a/interfaces/HorrorShow.java +++ b/interfaces/HorrorShow.java @@ -1,5 +1,5 @@ // interfaces/HorrorShow.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Extending an interface with inheritance diff --git a/interfaces/Implementation2.java b/interfaces/Implementation2.java index b94bc2cf1..61c6efa01 100644 --- a/interfaces/Implementation2.java +++ b/interfaces/Implementation2.java @@ -1,5 +1,5 @@ // interfaces/Implementation2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/ImplementingAnInterface.java b/interfaces/ImplementingAnInterface.java index bded0ac5d..6a13ebb63 100644 --- a/interfaces/ImplementingAnInterface.java +++ b/interfaces/ImplementingAnInterface.java @@ -1,5 +1,5 @@ // interfaces/ImplementingAnInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Instantiable.java b/interfaces/Instantiable.java index b09dcd3e8..427b6ca39 100644 --- a/interfaces/Instantiable.java +++ b/interfaces/Instantiable.java @@ -1,5 +1,5 @@ // interfaces/Instantiable.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/InterfaceCollision.java b/interfaces/InterfaceCollision.java index 5d85b6149..0f7de1ac6 100644 --- a/interfaces/InterfaceCollision.java +++ b/interfaces/InterfaceCollision.java @@ -1,5 +1,5 @@ // interfaces/InterfaceCollision.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/InterfaceWithDefault.java b/interfaces/InterfaceWithDefault.java index 7d59408e1..a87f02db9 100644 --- a/interfaces/InterfaceWithDefault.java +++ b/interfaces/InterfaceWithDefault.java @@ -1,5 +1,5 @@ // interfaces/InterfaceWithDefault.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/Jim.java b/interfaces/Jim.java index 66c0ea7cf..515db6e52 100644 --- a/interfaces/Jim.java +++ b/interfaces/Jim.java @@ -1,5 +1,5 @@ // interfaces/Jim.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/MICollision.java b/interfaces/MICollision.java index fddfdbd9c..c96e5696b 100644 --- a/interfaces/MICollision.java +++ b/interfaces/MICollision.java @@ -1,5 +1,5 @@ // interfaces/MICollision.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/Machine.java b/interfaces/Machine.java index 7e1733a9a..2b1144aef 100644 --- a/interfaces/Machine.java +++ b/interfaces/Machine.java @@ -1,5 +1,5 @@ // interfaces/Machine.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/Months.java b/interfaces/Months.java index 75158ed6d..27317dd5d 100644 --- a/interfaces/Months.java +++ b/interfaces/Months.java @@ -1,5 +1,5 @@ // interfaces/Months.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using interfaces to create groups of constants diff --git a/interfaces/MultipleInheritance.java b/interfaces/MultipleInheritance.java index 0a7028e7c..6ce9c91e0 100644 --- a/interfaces/MultipleInheritance.java +++ b/interfaces/MultipleInheritance.java @@ -1,5 +1,5 @@ // interfaces/MultipleInheritance.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/PureInterface.java b/interfaces/PureInterface.java index b795fdccb..37bf9f0bd 100644 --- a/interfaces/PureInterface.java +++ b/interfaces/PureInterface.java @@ -1,5 +1,5 @@ // interfaces/PureInterface.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Interface only looked like this before Java 8 diff --git a/interfaces/RandVals.java b/interfaces/RandVals.java index fc2516f33..0221c851d 100644 --- a/interfaces/RandVals.java +++ b/interfaces/RandVals.java @@ -1,5 +1,5 @@ // interfaces/RandVals.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Initializing interface fields with diff --git a/interfaces/RandomDoubles.java b/interfaces/RandomDoubles.java index 7898a023b..99154d953 100644 --- a/interfaces/RandomDoubles.java +++ b/interfaces/RandomDoubles.java @@ -1,5 +1,5 @@ // interfaces/RandomDoubles.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.util.*; diff --git a/interfaces/RandomStrings.java b/interfaces/RandomStrings.java index b9984011a..82f982308 100644 --- a/interfaces/RandomStrings.java +++ b/interfaces/RandomStrings.java @@ -1,5 +1,5 @@ // interfaces/RandomStrings.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Implementing an interface to conform to a method diff --git a/interfaces/TestRandVals.java b/interfaces/TestRandVals.java index ff4f60d5c..df3490b26 100644 --- a/interfaces/TestRandVals.java +++ b/interfaces/TestRandVals.java @@ -1,5 +1,5 @@ // interfaces/TestRandVals.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/interfaces/filters/BandPass.java b/interfaces/filters/BandPass.java index 8e8367e98..7d09ed285 100644 --- a/interfaces/filters/BandPass.java +++ b/interfaces/filters/BandPass.java @@ -1,5 +1,5 @@ // interfaces/filters/BandPass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.filters; diff --git a/interfaces/filters/Filter.java b/interfaces/filters/Filter.java index 5657a0de2..72e29a9e9 100644 --- a/interfaces/filters/Filter.java +++ b/interfaces/filters/Filter.java @@ -1,5 +1,5 @@ // interfaces/filters/Filter.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.filters; diff --git a/interfaces/filters/HighPass.java b/interfaces/filters/HighPass.java index 07a0e174b..7bf047df5 100644 --- a/interfaces/filters/HighPass.java +++ b/interfaces/filters/HighPass.java @@ -1,5 +1,5 @@ // interfaces/filters/HighPass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.filters; diff --git a/interfaces/filters/LowPass.java b/interfaces/filters/LowPass.java index d85d7bd79..e9320a82a 100644 --- a/interfaces/filters/LowPass.java +++ b/interfaces/filters/LowPass.java @@ -1,5 +1,5 @@ // interfaces/filters/LowPass.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.filters; diff --git a/interfaces/filters/Waveform.java b/interfaces/filters/Waveform.java index 3d246c3c0..406446770 100644 --- a/interfaces/filters/Waveform.java +++ b/interfaces/filters/Waveform.java @@ -1,5 +1,5 @@ // interfaces/filters/Waveform.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.filters; diff --git a/interfaces/interfaceprocessor/Applicator.java b/interfaces/interfaceprocessor/Applicator.java index 15ca1f4af..77d7a9a66 100644 --- a/interfaces/interfaceprocessor/Applicator.java +++ b/interfaces/interfaceprocessor/Applicator.java @@ -1,5 +1,5 @@ // interfaces/interfaceprocessor/Applicator.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.interfaceprocessor; diff --git a/interfaces/interfaceprocessor/FilterProcessor.java b/interfaces/interfaceprocessor/FilterProcessor.java index 45b2ef754..33689ed46 100644 --- a/interfaces/interfaceprocessor/FilterProcessor.java +++ b/interfaces/interfaceprocessor/FilterProcessor.java @@ -1,5 +1,5 @@ // interfaces/interfaceprocessor/FilterProcessor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java interfaces.interfaceprocessor.FilterProcessor} diff --git a/interfaces/interfaceprocessor/Processor.java b/interfaces/interfaceprocessor/Processor.java index d016f25c4..6315da300 100644 --- a/interfaces/interfaceprocessor/Processor.java +++ b/interfaces/interfaceprocessor/Processor.java @@ -1,5 +1,5 @@ // interfaces/interfaceprocessor/Processor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package interfaces.interfaceprocessor; diff --git a/interfaces/interfaceprocessor/StringProcessor.java b/interfaces/interfaceprocessor/StringProcessor.java index 553899f50..37cb49469 100644 --- a/interfaces/interfaceprocessor/StringProcessor.java +++ b/interfaces/interfaceprocessor/StringProcessor.java @@ -1,5 +1,5 @@ // interfaces/interfaceprocessor/StringProcessor.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java interfaces.interfaceprocessor.StringProcessor} diff --git a/interfaces/music4/Music4.java b/interfaces/music4/Music4.java index 22fcad72f..710341494 100644 --- a/interfaces/music4/Music4.java +++ b/interfaces/music4/Music4.java @@ -1,5 +1,5 @@ // interfaces/music4/Music4.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Abstract classes and methods diff --git a/interfaces/music5/Music5.java b/interfaces/music5/Music5.java index 14bfc9620..2326bdbc9 100644 --- a/interfaces/music5/Music5.java +++ b/interfaces/music5/Music5.java @@ -1,5 +1,5 @@ // interfaces/music5/Music5.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java interfaces.music5.Music5} diff --git a/interfaces/nesting/NestingInterfaces.java b/interfaces/nesting/NestingInterfaces.java index b728253b3..99b466bb0 100644 --- a/interfaces/nesting/NestingInterfaces.java +++ b/interfaces/nesting/NestingInterfaces.java @@ -1,5 +1,5 @@ // interfaces/nesting/NestingInterfaces.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {java interfaces.nesting.NestingInterfaces} diff --git a/iostreams/BasicFileOutput.java b/iostreams/BasicFileOutput.java index 8c1184de2..1da5c6fdc 100644 --- a/iostreams/BasicFileOutput.java +++ b/iostreams/BasicFileOutput.java @@ -1,5 +1,5 @@ // iostreams/BasicFileOutput.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/iostreams/BufferedInputFile.java b/iostreams/BufferedInputFile.java index 76dc960fa..bfe6396f1 100644 --- a/iostreams/BufferedInputFile.java +++ b/iostreams/BufferedInputFile.java @@ -1,5 +1,5 @@ // iostreams/BufferedInputFile.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/iostreams/FileOutputShortcut.java b/iostreams/FileOutputShortcut.java index 7e949a4d0..5a160ec00 100644 --- a/iostreams/FileOutputShortcut.java +++ b/iostreams/FileOutputShortcut.java @@ -1,5 +1,5 @@ // iostreams/FileOutputShortcut.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/iostreams/FormattedMemoryInput.java b/iostreams/FormattedMemoryInput.java index b6b7e3168..055dd8826 100644 --- a/iostreams/FormattedMemoryInput.java +++ b/iostreams/FormattedMemoryInput.java @@ -1,5 +1,5 @@ // iostreams/FormattedMemoryInput.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/iostreams/MemoryInput.java b/iostreams/MemoryInput.java index 4989d0778..1326965c6 100644 --- a/iostreams/MemoryInput.java +++ b/iostreams/MemoryInput.java @@ -1,5 +1,5 @@ // iostreams/MemoryInput.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // {VisuallyInspectOutput} diff --git a/iostreams/StoringAndRecoveringData.java b/iostreams/StoringAndRecoveringData.java index 664eecc07..761f022eb 100644 --- a/iostreams/StoringAndRecoveringData.java +++ b/iostreams/StoringAndRecoveringData.java @@ -1,5 +1,5 @@ // iostreams/StoringAndRecoveringData.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/iostreams/TestEOF.java b/iostreams/TestEOF.java index dee0ba18d..956cb1a03 100644 --- a/iostreams/TestEOF.java +++ b/iostreams/TestEOF.java @@ -1,5 +1,5 @@ // iostreams/TestEOF.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Testing for end of file diff --git a/iostreams/UsingRandomAccessFile.java b/iostreams/UsingRandomAccessFile.java index 256db78c4..dde6d1ee8 100644 --- a/iostreams/UsingRandomAccessFile.java +++ b/iostreams/UsingRandomAccessFile.java @@ -1,5 +1,5 @@ // iostreams/UsingRandomAccessFile.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. import java.io.*; diff --git a/javadoc/Documentation1.java b/javadoc/Documentation1.java index 906df8dd7..7838fbd95 100644 --- a/javadoc/Documentation1.java +++ b/javadoc/Documentation1.java @@ -1,5 +1,5 @@ // javadoc/Documentation1.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. /** A class comment */ diff --git a/javadoc/Documentation2.java b/javadoc/Documentation2.java index a19594726..237755f4c 100644 --- a/javadoc/Documentation2.java +++ b/javadoc/Documentation2.java @@ -1,5 +1,5 @@ // javadoc/Documentation2.java -// (c)2017 MindView LLC: see Copyright.txt +// (c)2020 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. /**

diff --git a/javadoc/Documentation3.java b/javadoc/Documentation3.java
index 34f62ac3d..a3063c3d1 100644
--- a/javadoc/Documentation3.java
+++ b/javadoc/Documentation3.java
@@ -1,5 +1,5 @@
 // javadoc/Documentation3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 /** You can even insert a list:
diff --git a/javadoc/HelloDateDoc.java b/javadoc/HelloDateDoc.java
index 6c248966e..54b505a44 100644
--- a/javadoc/HelloDateDoc.java
+++ b/javadoc/HelloDateDoc.java
@@ -1,5 +1,5 @@
 // javadoc/HelloDateDoc.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/lowlevel/AtomicEvenProducer.java b/lowlevel/AtomicEvenProducer.java
index 806b4503c..8c45b61c9 100644
--- a/lowlevel/AtomicEvenProducer.java
+++ b/lowlevel/AtomicEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicEvenProducer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Atomic classes: occasionally useful in regular code
diff --git a/lowlevel/AtomicIntegerTest.java b/lowlevel/AtomicIntegerTest.java
index 31c6a106c..09db1ca83 100644
--- a/lowlevel/AtomicIntegerTest.java
+++ b/lowlevel/AtomicIntegerTest.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicIntegerTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/AtomicSerialNumbers.java b/lowlevel/AtomicSerialNumbers.java
index ed063c86e..2e30e9c4a 100644
--- a/lowlevel/AtomicSerialNumbers.java
+++ b/lowlevel/AtomicSerialNumbers.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicSerialNumbers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
diff --git a/lowlevel/Atomicity.java b/lowlevel/Atomicity.java
index 380a5f1be..632631bf4 100644
--- a/lowlevel/Atomicity.java
+++ b/lowlevel/Atomicity.java
@@ -1,5 +1,5 @@
 // lowlevel/Atomicity.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/AttemptLocking.java b/lowlevel/AttemptLocking.java
index 969143e6c..9dbe2b28e 100644
--- a/lowlevel/AttemptLocking.java
+++ b/lowlevel/AttemptLocking.java
@@ -1,5 +1,5 @@
 // lowlevel/AttemptLocking.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Locks in the concurrent library allow you
diff --git a/lowlevel/CaptureUncaughtException.java b/lowlevel/CaptureUncaughtException.java
index b540e341f..33261667d 100644
--- a/lowlevel/CaptureUncaughtException.java
+++ b/lowlevel/CaptureUncaughtException.java
@@ -1,5 +1,5 @@
 // lowlevel/CaptureUncaughtException.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/CircularSet.java b/lowlevel/CircularSet.java
index 8f76fd197..225eaeca4 100644
--- a/lowlevel/CircularSet.java
+++ b/lowlevel/CircularSet.java
@@ -1,5 +1,5 @@
 // lowlevel/CircularSet.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Reuses storage so we don't run out of memory
diff --git a/lowlevel/DelayQueueDemo.java b/lowlevel/DelayQueueDemo.java
index c0d85b020..c5575c681 100644
--- a/lowlevel/DelayQueueDemo.java
+++ b/lowlevel/DelayQueueDemo.java
@@ -1,5 +1,5 @@
 // lowlevel/DelayQueueDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/lowlevel/EvenChecker.java b/lowlevel/EvenChecker.java
index 75c89e0fb..5e27a39eb 100644
--- a/lowlevel/EvenChecker.java
+++ b/lowlevel/EvenChecker.java
@@ -1,5 +1,5 @@
 // lowlevel/EvenChecker.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/lowlevel/EvenProducer.java b/lowlevel/EvenProducer.java
index adb7153d8..301577557 100644
--- a/lowlevel/EvenProducer.java
+++ b/lowlevel/EvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/EvenProducer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // When threads collide
diff --git a/lowlevel/ExceptionThread.java b/lowlevel/ExceptionThread.java
index 859e86a32..518b9f5f1 100644
--- a/lowlevel/ExceptionThread.java
+++ b/lowlevel/ExceptionThread.java
@@ -1,5 +1,5 @@
 // lowlevel/ExceptionThread.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
diff --git a/lowlevel/IntGenerator.java b/lowlevel/IntGenerator.java
index c9714d5d0..e1dd0f629 100644
--- a/lowlevel/IntGenerator.java
+++ b/lowlevel/IntGenerator.java
@@ -1,5 +1,5 @@
 // lowlevel/IntGenerator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/lowlevel/IntTestable.java b/lowlevel/IntTestable.java
index a2a033fea..1989ff4db 100644
--- a/lowlevel/IntTestable.java
+++ b/lowlevel/IntTestable.java
@@ -1,5 +1,5 @@
 // lowlevel/IntTestable.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/lowlevel/MutexEvenProducer.java b/lowlevel/MutexEvenProducer.java
index c3f98866a..ae82df827 100644
--- a/lowlevel/MutexEvenProducer.java
+++ b/lowlevel/MutexEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/MutexEvenProducer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Preventing thread collisions with mutexes
diff --git a/lowlevel/NaiveExceptionHandling.java b/lowlevel/NaiveExceptionHandling.java
index 14a76d850..3681337ef 100644
--- a/lowlevel/NaiveExceptionHandling.java
+++ b/lowlevel/NaiveExceptionHandling.java
@@ -1,5 +1,5 @@
 // lowlevel/NaiveExceptionHandling.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
diff --git a/lowlevel/NotAtomic.java b/lowlevel/NotAtomic.java
index e3fa47847..e07954510 100644
--- a/lowlevel/NotAtomic.java
+++ b/lowlevel/NotAtomic.java
@@ -1,5 +1,5 @@
 // lowlevel/NotAtomic.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {javap -c NotAtomic}
diff --git a/lowlevel/NumberOfProcessors.java b/lowlevel/NumberOfProcessors.java
index 103d6c1d2..44abeb5dd 100644
--- a/lowlevel/NumberOfProcessors.java
+++ b/lowlevel/NumberOfProcessors.java
@@ -1,5 +1,5 @@
 // lowlevel/NumberOfProcessors.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/PriorityBlockingQueueDemo.java b/lowlevel/PriorityBlockingQueueDemo.java
index c62bf46f2..099a53497 100644
--- a/lowlevel/PriorityBlockingQueueDemo.java
+++ b/lowlevel/PriorityBlockingQueueDemo.java
@@ -1,5 +1,5 @@
 // lowlevel/PriorityBlockingQueueDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/lowlevel/ReOrdering.java b/lowlevel/ReOrdering.java
index 9de9c4b81..8209ac40f 100644
--- a/lowlevel/ReOrdering.java
+++ b/lowlevel/ReOrdering.java
@@ -1,5 +1,5 @@
 // lowlevel/ReOrdering.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/SafeReturn.java b/lowlevel/SafeReturn.java
index 829a1f98e..751c96be9 100644
--- a/lowlevel/SafeReturn.java
+++ b/lowlevel/SafeReturn.java
@@ -1,5 +1,5 @@
 // lowlevel/SafeReturn.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/lowlevel/SerialNumberChecker.java b/lowlevel/SerialNumberChecker.java
index 72ab795f0..9c2b92ad2 100644
--- a/lowlevel/SerialNumberChecker.java
+++ b/lowlevel/SerialNumberChecker.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumberChecker.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test SerialNumbers implementations for thread-safety
diff --git a/lowlevel/SerialNumberTest.java b/lowlevel/SerialNumberTest.java
index 7da47cd8d..cdeddcd95 100644
--- a/lowlevel/SerialNumberTest.java
+++ b/lowlevel/SerialNumberTest.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumberTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/SerialNumbers.java b/lowlevel/SerialNumbers.java
index bf046b7ae..3f6101c73 100644
--- a/lowlevel/SerialNumbers.java
+++ b/lowlevel/SerialNumbers.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumbers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/SettingDefaultHandler.java b/lowlevel/SettingDefaultHandler.java
index 9b13362bf..56a046426 100644
--- a/lowlevel/SettingDefaultHandler.java
+++ b/lowlevel/SettingDefaultHandler.java
@@ -1,5 +1,5 @@
 // lowlevel/SettingDefaultHandler.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/SwallowedException.java b/lowlevel/SwallowedException.java
index 33c824306..60edd0d6c 100644
--- a/lowlevel/SwallowedException.java
+++ b/lowlevel/SwallowedException.java
@@ -1,5 +1,5 @@
 // lowlevel/SwallowedException.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/SyncOnObject.java b/lowlevel/SyncOnObject.java
index 0d0ff1526..846c5573a 100644
--- a/lowlevel/SyncOnObject.java
+++ b/lowlevel/SyncOnObject.java
@@ -1,5 +1,5 @@
 // lowlevel/SyncOnObject.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Synchronizing on another object
diff --git a/lowlevel/SynchronizedComparison.java b/lowlevel/SynchronizedComparison.java
index 11afebd2d..6fbcd1f3d 100644
--- a/lowlevel/SynchronizedComparison.java
+++ b/lowlevel/SynchronizedComparison.java
@@ -1,5 +1,5 @@
 // lowlevel/SynchronizedComparison.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Synchronizing blocks instead of entire methods
diff --git a/lowlevel/SynchronizedEvenProducer.java b/lowlevel/SynchronizedEvenProducer.java
index b6f4f4843..377aeecbb 100644
--- a/lowlevel/SynchronizedEvenProducer.java
+++ b/lowlevel/SynchronizedEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/SynchronizedEvenProducer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simplifying mutexes with the synchronized keyword
diff --git a/lowlevel/SynchronizedSerialNumbers.java b/lowlevel/SynchronizedSerialNumbers.java
index fff565e23..1739d8401 100644
--- a/lowlevel/SynchronizedSerialNumbers.java
+++ b/lowlevel/SynchronizedSerialNumbers.java
@@ -1,5 +1,5 @@
 // lowlevel/SynchronizedSerialNumbers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/TestAbort.java b/lowlevel/TestAbort.java
index c5dc1069d..a9efe5285 100644
--- a/lowlevel/TestAbort.java
+++ b/lowlevel/TestAbort.java
@@ -1,5 +1,5 @@
 // lowlevel/TestAbort.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/lowlevel/ThreadSize.java b/lowlevel/ThreadSize.java
index d518b2ac3..0f00023d3 100644
--- a/lowlevel/ThreadSize.java
+++ b/lowlevel/ThreadSize.java
@@ -1,5 +1,5 @@
 // lowlevel/ThreadSize.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle} Takes a long time or hangs
diff --git a/lowlevel/UnsafeReturn.java b/lowlevel/UnsafeReturn.java
index d8463f32f..c2481fc0f 100644
--- a/lowlevel/UnsafeReturn.java
+++ b/lowlevel/UnsafeReturn.java
@@ -1,5 +1,5 @@
 // lowlevel/UnsafeReturn.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/lowlevel/WorkStealingPool.java b/lowlevel/WorkStealingPool.java
index b488cf2b4..984de7067 100644
--- a/lowlevel/WorkStealingPool.java
+++ b/lowlevel/WorkStealingPool.java
@@ -1,5 +1,5 @@
 // lowlevel/WorkStealingPool.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/newio/AvailableCharSets.java b/newio/AvailableCharSets.java
index b46b3dfb1..eda3b93c2 100644
--- a/newio/AvailableCharSets.java
+++ b/newio/AvailableCharSets.java
@@ -1,5 +1,5 @@
 // newio/AvailableCharSets.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Displays Charsets and aliases
diff --git a/newio/BufferToText.java b/newio/BufferToText.java
index 81d541a22..2f38c2c6a 100644
--- a/newio/BufferToText.java
+++ b/newio/BufferToText.java
@@ -1,5 +1,5 @@
 // newio/BufferToText.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Converting text to and from ByteBuffers
diff --git a/newio/ChannelCopy.java b/newio/ChannelCopy.java
index 6aed504fe..846961310 100644
--- a/newio/ChannelCopy.java
+++ b/newio/ChannelCopy.java
@@ -1,5 +1,5 @@
 // newio/ChannelCopy.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Copying a file using channels and buffers
diff --git a/newio/Endians.java b/newio/Endians.java
index 5ff8d7208..11d660760 100644
--- a/newio/Endians.java
+++ b/newio/Endians.java
@@ -1,5 +1,5 @@
 // newio/Endians.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Endian differences and data storage
diff --git a/newio/FileLocking.java b/newio/FileLocking.java
index 8a8f776a8..e8c74d2a9 100644
--- a/newio/FileLocking.java
+++ b/newio/FileLocking.java
@@ -1,5 +1,5 @@
 // newio/FileLocking.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.channels.*;
diff --git a/newio/GetChannel.java b/newio/GetChannel.java
index 73bfe683d..16caa3400 100644
--- a/newio/GetChannel.java
+++ b/newio/GetChannel.java
@@ -1,5 +1,5 @@
 // newio/GetChannel.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Getting channels from streams
diff --git a/newio/GetData.java b/newio/GetData.java
index b05073db0..b2518b101 100644
--- a/newio/GetData.java
+++ b/newio/GetData.java
@@ -1,5 +1,5 @@
 // newio/GetData.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Getting different representations from a ByteBuffer
diff --git a/newio/IntBufferDemo.java b/newio/IntBufferDemo.java
index 4b3838856..31ffaa8f8 100644
--- a/newio/IntBufferDemo.java
+++ b/newio/IntBufferDemo.java
@@ -1,5 +1,5 @@
 // newio/IntBufferDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Manipulating ints in a ByteBuffer with an IntBuffer
diff --git a/newio/LargeMappedFiles.java b/newio/LargeMappedFiles.java
index 980896021..c4976e450 100644
--- a/newio/LargeMappedFiles.java
+++ b/newio/LargeMappedFiles.java
@@ -1,5 +1,5 @@
 // newio/LargeMappedFiles.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a very large file using mapping
diff --git a/newio/LockingMappedFiles.java b/newio/LockingMappedFiles.java
index f8ebcb5e3..6fe8fee52 100644
--- a/newio/LockingMappedFiles.java
+++ b/newio/LockingMappedFiles.java
@@ -1,5 +1,5 @@
 // newio/LockingMappedFiles.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Locking portions of a mapped file
diff --git a/newio/MappedIO.java b/newio/MappedIO.java
index beeadf3c1..82f3cca7c 100644
--- a/newio/MappedIO.java
+++ b/newio/MappedIO.java
@@ -1,5 +1,5 @@
 // newio/MappedIO.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/newio/TransferTo.java b/newio/TransferTo.java
index d0cac844f..f3095b71e 100644
--- a/newio/TransferTo.java
+++ b/newio/TransferTo.java
@@ -1,5 +1,5 @@
 // newio/TransferTo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using transferTo() between channels
diff --git a/newio/UsingBuffers.java b/newio/UsingBuffers.java
index e4c493992..3f3a6bd14 100644
--- a/newio/UsingBuffers.java
+++ b/newio/UsingBuffers.java
@@ -1,5 +1,5 @@
 // newio/UsingBuffers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.*;
diff --git a/newio/ViewBuffers.java b/newio/ViewBuffers.java
index c199101e1..d7bb1adfb 100644
--- a/newio/ViewBuffers.java
+++ b/newio/ViewBuffers.java
@@ -1,5 +1,5 @@
 // newio/ViewBuffers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.*;
diff --git a/objects/HelloDate.java b/objects/HelloDate.java
index fa5b3d2c4..1f613e8e1 100644
--- a/objects/HelloDate.java
+++ b/objects/HelloDate.java
@@ -1,5 +1,5 @@
 // objects/HelloDate.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/objects/ShowProperties.java b/objects/ShowProperties.java
index dcf7c737b..ac2bf41ee 100644
--- a/objects/ShowProperties.java
+++ b/objects/ShowProperties.java
@@ -1,5 +1,5 @@
 // objects/ShowProperties.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/onjava/ArrayShow.java b/onjava/ArrayShow.java
index 4ccc5737d..6edd148fa 100644
--- a/onjava/ArrayShow.java
+++ b/onjava/ArrayShow.java
@@ -1,5 +1,5 @@
 // onjava/ArrayShow.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/BasicSupplier.java b/onjava/BasicSupplier.java
index 097375b61..377d74d18 100644
--- a/onjava/BasicSupplier.java
+++ b/onjava/BasicSupplier.java
@@ -1,5 +1,5 @@
 // onjava/BasicSupplier.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Supplier from a class with a no-arg constructor
diff --git a/onjava/CollectionMethodDifferences.java b/onjava/CollectionMethodDifferences.java
index d31a30f93..375d4e419 100644
--- a/onjava/CollectionMethodDifferences.java
+++ b/onjava/CollectionMethodDifferences.java
@@ -1,5 +1,5 @@
 // onjava/CollectionMethodDifferences.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.CollectionMethodDifferences}
diff --git a/onjava/ConvertTo.java b/onjava/ConvertTo.java
index e14697a5b..cc8febd70 100644
--- a/onjava/ConvertTo.java
+++ b/onjava/ConvertTo.java
@@ -1,5 +1,5 @@
 // onjava/ConvertTo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Count.java b/onjava/Count.java
index 1e2f90b5b..1f380f87c 100644
--- a/onjava/Count.java
+++ b/onjava/Count.java
@@ -1,5 +1,5 @@
 // onjava/Count.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Generate incremental values of different types
diff --git a/onjava/CountMap.java b/onjava/CountMap.java
index c3208e71a..e3759053c 100644
--- a/onjava/CountMap.java
+++ b/onjava/CountMap.java
@@ -1,5 +1,5 @@
 // onjava/CountMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Unlimited-length Map containing sample data
diff --git a/onjava/CountingIntegerList.java b/onjava/CountingIntegerList.java
index 20e11fa25..7d5d4f79b 100644
--- a/onjava/CountingIntegerList.java
+++ b/onjava/CountingIntegerList.java
@@ -1,5 +1,5 @@
 // onjava/CountingIntegerList.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // List of any length, containing sample data
diff --git a/onjava/Countries.java b/onjava/Countries.java
index aff022731..ec42b5922 100644
--- a/onjava/Countries.java
+++ b/onjava/Countries.java
@@ -1,5 +1,5 @@
 // onjava/Countries.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Flyweight" Maps and Lists of sample data
diff --git a/onjava/Enums.java b/onjava/Enums.java
index f7df73a2e..0440802f9 100644
--- a/onjava/Enums.java
+++ b/onjava/Enums.java
@@ -1,5 +1,5 @@
 // onjava/Enums.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/FillMap.java b/onjava/FillMap.java
index 9b87bc1f2..eadc5495e 100644
--- a/onjava/FillMap.java
+++ b/onjava/FillMap.java
@@ -1,5 +1,5 @@
 // onjava/FillMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/HTMLColors.java b/onjava/HTMLColors.java
index e84b9c90b..bdc3458f0 100644
--- a/onjava/HTMLColors.java
+++ b/onjava/HTMLColors.java
@@ -1,5 +1,5 @@
 // onjava/HTMLColors.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sample data for collection examples
diff --git a/onjava/MouseClick.java b/onjava/MouseClick.java
index 7d57022cd..70d982f76 100644
--- a/onjava/MouseClick.java
+++ b/onjava/MouseClick.java
@@ -1,5 +1,5 @@
 // onjava/MouseClick.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Helper interface to allow lambda expressions
diff --git a/onjava/Nap.java b/onjava/Nap.java
index ba9df34a2..2b89745b1 100644
--- a/onjava/Nap.java
+++ b/onjava/Nap.java
@@ -1,5 +1,5 @@
 // onjava/Nap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Null.java b/onjava/Null.java
index 4f8659310..f3bb70d69 100644
--- a/onjava/Null.java
+++ b/onjava/Null.java
@@ -1,5 +1,5 @@
 // onjava/Null.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/OSExecute.java b/onjava/OSExecute.java
index 7dc19f616..25ac7f0ce 100644
--- a/onjava/OSExecute.java
+++ b/onjava/OSExecute.java
@@ -1,5 +1,5 @@
 // onjava/OSExecute.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Run an operating system command
diff --git a/onjava/OSExecuteException.java b/onjava/OSExecuteException.java
index 6a7b13e56..17d803e15 100644
--- a/onjava/OSExecuteException.java
+++ b/onjava/OSExecuteException.java
@@ -1,5 +1,5 @@
 // onjava/OSExecuteException.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Operations.java b/onjava/Operations.java
index 442dd1acc..33b644c65 100644
--- a/onjava/Operations.java
+++ b/onjava/Operations.java
@@ -1,5 +1,5 @@
 // onjava/Operations.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Pair.java b/onjava/Pair.java
index 657aa56bb..784ef8ac4 100644
--- a/onjava/Pair.java
+++ b/onjava/Pair.java
@@ -1,5 +1,5 @@
 // onjava/Pair.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/ProcessFiles.java b/onjava/ProcessFiles.java
index 4072d6fc3..edcea73a0 100644
--- a/onjava/ProcessFiles.java
+++ b/onjava/ProcessFiles.java
@@ -1,5 +1,5 @@
 // onjava/ProcessFiles.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Rand.java b/onjava/Rand.java
index 019bac408..d21c0e2b2 100644
--- a/onjava/Rand.java
+++ b/onjava/Rand.java
@@ -1,5 +1,5 @@
 // onjava/Rand.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Generate random values of different types
diff --git a/onjava/Range.java b/onjava/Range.java
index 05e27fd8d..e075c9ba9 100644
--- a/onjava/Range.java
+++ b/onjava/Range.java
@@ -1,5 +1,5 @@
 // onjava/Range.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Array creation methods that can be used without
diff --git a/onjava/Repeat.java b/onjava/Repeat.java
index 59aad0522..7ab61facf 100644
--- a/onjava/Repeat.java
+++ b/onjava/Repeat.java
@@ -1,5 +1,5 @@
 // onjava/Repeat.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/RmDir.java b/onjava/RmDir.java
index f080f8cc3..be7ea4940 100644
--- a/onjava/RmDir.java
+++ b/onjava/RmDir.java
@@ -1,5 +1,5 @@
 // onjava/RmDir.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Sets.java b/onjava/Sets.java
index 71afe50f8..62258f155 100644
--- a/onjava/Sets.java
+++ b/onjava/Sets.java
@@ -1,5 +1,5 @@
 // onjava/Sets.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Stack.java b/onjava/Stack.java
index 84b08a4e3..a51081768 100644
--- a/onjava/Stack.java
+++ b/onjava/Stack.java
@@ -1,5 +1,5 @@
 // onjava/Stack.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A Stack class built with an ArrayDeque
diff --git a/onjava/Suppliers.java b/onjava/Suppliers.java
index c746637a2..226a70cb5 100644
--- a/onjava/Suppliers.java
+++ b/onjava/Suppliers.java
@@ -1,5 +1,5 @@
 // onjava/Suppliers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A utility to use with Suppliers
diff --git a/onjava/TimedAbort.java b/onjava/TimedAbort.java
index b378738d4..3715cf2ee 100644
--- a/onjava/TimedAbort.java
+++ b/onjava/TimedAbort.java
@@ -1,5 +1,5 @@
 // onjava/TimedAbort.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Terminate a program after t seconds
diff --git a/onjava/Timer.java b/onjava/Timer.java
index e1c3fc9ba..a695f79fa 100644
--- a/onjava/Timer.java
+++ b/onjava/Timer.java
@@ -1,5 +1,5 @@
 // onjava/Timer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Tuple.java b/onjava/Tuple.java
index 05da09f25..73cfaa3ce 100644
--- a/onjava/Tuple.java
+++ b/onjava/Tuple.java
@@ -1,5 +1,5 @@
 // onjava/Tuple.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tuple library using type argument inference
diff --git a/onjava/Tuple2.java b/onjava/Tuple2.java
index 862affe74..7ca8d1994 100644
--- a/onjava/Tuple2.java
+++ b/onjava/Tuple2.java
@@ -1,5 +1,5 @@
 // onjava/Tuple2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Tuple3.java b/onjava/Tuple3.java
index c7b1007e8..26780642c 100644
--- a/onjava/Tuple3.java
+++ b/onjava/Tuple3.java
@@ -1,5 +1,5 @@
 // onjava/Tuple3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Tuple4.java b/onjava/Tuple4.java
index 0fdaf2be6..5ab51dc98 100644
--- a/onjava/Tuple4.java
+++ b/onjava/Tuple4.java
@@ -1,5 +1,5 @@
 // onjava/Tuple4.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Tuple5.java b/onjava/Tuple5.java
index 58a80c03d..1df88bfdc 100644
--- a/onjava/Tuple5.java
+++ b/onjava/Tuple5.java
@@ -1,5 +1,5 @@
 // onjava/Tuple5.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/TypeCounter.java b/onjava/TypeCounter.java
index 9c0fae021..d8b262b72 100644
--- a/onjava/TypeCounter.java
+++ b/onjava/TypeCounter.java
@@ -1,5 +1,5 @@
 // onjava/TypeCounter.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Counts instances of a type family
diff --git a/onjava/atunit/AtUnit.java b/onjava/atunit/AtUnit.java
index fcd19aa45..a6c621277 100644
--- a/onjava/atunit/AtUnit.java
+++ b/onjava/atunit/AtUnit.java
@@ -1,5 +1,5 @@
 // onjava/atunit/AtUnit.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An annotation-based unit-test framework
diff --git a/onjava/atunit/ClassNameFinder.java b/onjava/atunit/ClassNameFinder.java
index af7f2aef6..3fef7faff 100644
--- a/onjava/atunit/ClassNameFinder.java
+++ b/onjava/atunit/ClassNameFinder.java
@@ -1,5 +1,5 @@
 // onjava/atunit/ClassNameFinder.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.ClassNameFinder}
diff --git a/onjava/atunit/Test.java b/onjava/atunit/Test.java
index fd4558f6c..314dce9b3 100644
--- a/onjava/atunit/Test.java
+++ b/onjava/atunit/Test.java
@@ -1,5 +1,5 @@
 // onjava/atunit/Test.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Test tag
diff --git a/onjava/atunit/TestObjectCleanup.java b/onjava/atunit/TestObjectCleanup.java
index 55937f9cd..522311778 100644
--- a/onjava/atunit/TestObjectCleanup.java
+++ b/onjava/atunit/TestObjectCleanup.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestObjectCleanup.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestObjectCleanup tag
diff --git a/onjava/atunit/TestObjectCreate.java b/onjava/atunit/TestObjectCreate.java
index 55c7a73ac..f8b43a09d 100644
--- a/onjava/atunit/TestObjectCreate.java
+++ b/onjava/atunit/TestObjectCreate.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestObjectCreate.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestObjectCreate tag
diff --git a/onjava/atunit/TestProperty.java b/onjava/atunit/TestProperty.java
index e8873fcc8..4e09cf95d 100644
--- a/onjava/atunit/TestProperty.java
+++ b/onjava/atunit/TestProperty.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestProperty.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestProperty tag
diff --git a/operators/AllOps.java b/operators/AllOps.java
index 27a62f354..bb94e8709 100644
--- a/operators/AllOps.java
+++ b/operators/AllOps.java
@@ -1,5 +1,5 @@
 // operators/AllOps.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tests all operators on all primitive data types
diff --git a/operators/Assignment.java b/operators/Assignment.java
index a341f38ff..7a573a392 100644
--- a/operators/Assignment.java
+++ b/operators/Assignment.java
@@ -1,5 +1,5 @@
 // operators/Assignment.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assignment with objects is a bit tricky
diff --git a/operators/AutoInc.java b/operators/AutoInc.java
index 71309a02d..835875de6 100644
--- a/operators/AutoInc.java
+++ b/operators/AutoInc.java
@@ -1,5 +1,5 @@
 // operators/AutoInc.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the ++ and -- operators
diff --git a/operators/BitManipulation.java b/operators/BitManipulation.java
index 2ec1b985c..dc30c4428 100644
--- a/operators/BitManipulation.java
+++ b/operators/BitManipulation.java
@@ -1,5 +1,5 @@
 // operators/BitManipulation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the bitwise operators
diff --git a/operators/Bool.java b/operators/Bool.java
index 79c3eac39..e9984adb7 100644
--- a/operators/Bool.java
+++ b/operators/Bool.java
@@ -1,5 +1,5 @@
 // operators/Bool.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Relational and logical operators
diff --git a/operators/Casting.java b/operators/Casting.java
index 96ec6c7f8..337b24fd8 100644
--- a/operators/Casting.java
+++ b/operators/Casting.java
@@ -1,5 +1,5 @@
 // operators/Casting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/CastingNumbers.java b/operators/CastingNumbers.java
index 2397496ad..a6c04c6ea 100644
--- a/operators/CastingNumbers.java
+++ b/operators/CastingNumbers.java
@@ -1,5 +1,5 @@
 // operators/CastingNumbers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // What happens when you cast a float
diff --git a/operators/EqualsMethod.java b/operators/EqualsMethod.java
index 50c5a8ff2..f55b1b579 100644
--- a/operators/EqualsMethod.java
+++ b/operators/EqualsMethod.java
@@ -1,5 +1,5 @@
 // operators/EqualsMethod.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/EqualsMethod2.java b/operators/EqualsMethod2.java
index 490d3f8cb..213930602 100644
--- a/operators/EqualsMethod2.java
+++ b/operators/EqualsMethod2.java
@@ -1,5 +1,5 @@
 // operators/EqualsMethod2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Default equals() does not compare contents
diff --git a/operators/Equivalence.java b/operators/Equivalence.java
index 268a75be8..cef07d646 100644
--- a/operators/Equivalence.java
+++ b/operators/Equivalence.java
@@ -1,5 +1,5 @@
 // operators/Equivalence.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/Exponents.java b/operators/Exponents.java
index 1f7269cb3..924340dfb 100644
--- a/operators/Exponents.java
+++ b/operators/Exponents.java
@@ -1,5 +1,5 @@
 // operators/Exponents.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "e" means "10 to the power."
diff --git a/operators/Literals.java b/operators/Literals.java
index dbf19822d..ad00e0b8f 100644
--- a/operators/Literals.java
+++ b/operators/Literals.java
@@ -1,5 +1,5 @@
 // operators/Literals.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/MathOps.java b/operators/MathOps.java
index 32587fd74..a9b089382 100644
--- a/operators/MathOps.java
+++ b/operators/MathOps.java
@@ -1,5 +1,5 @@
 // operators/MathOps.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The mathematical operators
diff --git a/operators/Overflow.java b/operators/Overflow.java
index 798d849e8..851c1456b 100644
--- a/operators/Overflow.java
+++ b/operators/Overflow.java
@@ -1,5 +1,5 @@
 // operators/Overflow.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Surprise! Java lets you overflow
diff --git a/operators/PassObject.java b/operators/PassObject.java
index 153efd857..af53ab566 100644
--- a/operators/PassObject.java
+++ b/operators/PassObject.java
@@ -1,5 +1,5 @@
 // operators/PassObject.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Passing objects to methods might not be
diff --git a/operators/Precedence.java b/operators/Precedence.java
index f16942c33..f0f8140cd 100644
--- a/operators/Precedence.java
+++ b/operators/Precedence.java
@@ -1,5 +1,5 @@
 // operators/Precedence.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/RoundingNumbers.java b/operators/RoundingNumbers.java
index 7ecc68299..e46a20561 100644
--- a/operators/RoundingNumbers.java
+++ b/operators/RoundingNumbers.java
@@ -1,5 +1,5 @@
 // operators/RoundingNumbers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Rounding floats and doubles
diff --git a/operators/ShortCircuit.java b/operators/ShortCircuit.java
index c60ef20fb..8fc96711e 100644
--- a/operators/ShortCircuit.java
+++ b/operators/ShortCircuit.java
@@ -1,5 +1,5 @@
 // operators/ShortCircuit.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Short-circuiting behavior with logical operators
diff --git a/operators/StringOperators.java b/operators/StringOperators.java
index 1719fae58..b1eb211fb 100644
--- a/operators/StringOperators.java
+++ b/operators/StringOperators.java
@@ -1,5 +1,5 @@
 // operators/StringOperators.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/TernaryIfElse.java b/operators/TernaryIfElse.java
index 53361557a..d11d4e24c 100644
--- a/operators/TernaryIfElse.java
+++ b/operators/TernaryIfElse.java
@@ -1,5 +1,5 @@
 // operators/TernaryIfElse.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/URShift.java b/operators/URShift.java
index 46bdbaa82..8d24f94b5 100644
--- a/operators/URShift.java
+++ b/operators/URShift.java
@@ -1,5 +1,5 @@
 // operators/URShift.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test of unsigned right shift
diff --git a/operators/Underscores.java b/operators/Underscores.java
index cd862fb88..4d78cd503 100644
--- a/operators/Underscores.java
+++ b/operators/Underscores.java
@@ -1,5 +1,5 @@
 // operators/Underscores.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/patterns/BoxObserver.java b/patterns/BoxObserver.java
index 0076eac21..355c4086e 100644
--- a/patterns/BoxObserver.java
+++ b/patterns/BoxObserver.java
@@ -1,5 +1,5 @@
 // patterns/BoxObserver.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Observer pattern using
diff --git a/patterns/CommandPattern.java b/patterns/CommandPattern.java
index 277b1fb9f..f84533aa9 100644
--- a/patterns/CommandPattern.java
+++ b/patterns/CommandPattern.java
@@ -1,5 +1,5 @@
 // patterns/CommandPattern.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/patterns/Facade.java b/patterns/Facade.java
index 005acf13f..0c1accf27 100644
--- a/patterns/Facade.java
+++ b/patterns/Facade.java
@@ -1,5 +1,5 @@
 // patterns/Facade.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/patterns/PaperScissorsRock.java b/patterns/PaperScissorsRock.java
index f5c5e6148..e7a7c44e8 100644
--- a/patterns/PaperScissorsRock.java
+++ b/patterns/PaperScissorsRock.java
@@ -1,5 +1,5 @@
 // patterns/PaperScissorsRock.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of multiple dispatching
diff --git a/patterns/ProxyDemo.java b/patterns/ProxyDemo.java
index 198117adb..58b0e3a8f 100644
--- a/patterns/ProxyDemo.java
+++ b/patterns/ProxyDemo.java
@@ -1,5 +1,5 @@
 // patterns/ProxyDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of the Proxy pattern
diff --git a/patterns/ShapeFactory1.java b/patterns/ShapeFactory1.java
index 2a4108879..dc6f86907 100644
--- a/patterns/ShapeFactory1.java
+++ b/patterns/ShapeFactory1.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A simple static factory method
diff --git a/patterns/ShapeFactory2.java b/patterns/ShapeFactory2.java
index 0253fc864..4f2134c4e 100644
--- a/patterns/ShapeFactory2.java
+++ b/patterns/ShapeFactory2.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/patterns/ShapeFactory3.java b/patterns/ShapeFactory3.java
index 123d27fa4..b735a81d0 100644
--- a/patterns/ShapeFactory3.java
+++ b/patterns/ShapeFactory3.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Polymorphic factory methods
diff --git a/patterns/SingletonPattern.java b/patterns/SingletonPattern.java
index 0e466a766..c2ca1a5f5 100644
--- a/patterns/SingletonPattern.java
+++ b/patterns/SingletonPattern.java
@@ -1,5 +1,5 @@
 // patterns/SingletonPattern.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/patterns/StateDemo.java b/patterns/StateDemo.java
index 041b4b98f..9efab5b4e 100644
--- a/patterns/StateDemo.java
+++ b/patterns/StateDemo.java
@@ -1,5 +1,5 @@
 // patterns/StateDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of the State pattern
diff --git a/patterns/TemplateMethod.java b/patterns/TemplateMethod.java
index 0efbd71ce..eff6d2790 100644
--- a/patterns/TemplateMethod.java
+++ b/patterns/TemplateMethod.java
@@ -1,5 +1,5 @@
 // patterns/TemplateMethod.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of Template Method
diff --git a/patterns/abstractfactory/GameEnvironment.java b/patterns/abstractfactory/GameEnvironment.java
index 16acdc681..8c0abf7b3 100644
--- a/patterns/abstractfactory/GameEnvironment.java
+++ b/patterns/abstractfactory/GameEnvironment.java
@@ -1,5 +1,5 @@
 // patterns/abstractfactory/GameEnvironment.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An example of the Abstract Factory pattern
diff --git a/patterns/adapt/Adapter.java b/patterns/adapt/Adapter.java
index 956740e58..5bfcd6bf5 100644
--- a/patterns/adapt/Adapter.java
+++ b/patterns/adapt/Adapter.java
@@ -1,5 +1,5 @@
 // patterns/adapt/Adapter.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Variations on the Adapter pattern
diff --git a/patterns/chain/ChainOfResponsibility.java b/patterns/chain/ChainOfResponsibility.java
index 208d52e31..b733e71cc 100644
--- a/patterns/chain/ChainOfResponsibility.java
+++ b/patterns/chain/ChainOfResponsibility.java
@@ -1,5 +1,5 @@
 // patterns/chain/ChainOfResponsibility.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the Functional interface
diff --git a/patterns/doubledispatch/Aluminum.java b/patterns/doubledispatch/Aluminum.java
index b17f1d91f..5037fac56 100644
--- a/patterns/doubledispatch/Aluminum.java
+++ b/patterns/doubledispatch/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Aluminum.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aluminum for double dispatching
diff --git a/patterns/doubledispatch/Cardboard.java b/patterns/doubledispatch/Cardboard.java
index c5e9d382d..5046ddaa2 100644
--- a/patterns/doubledispatch/Cardboard.java
+++ b/patterns/doubledispatch/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Cardboard.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cardboard for double dispatching
diff --git a/patterns/doubledispatch/DoubleDispatch.java b/patterns/doubledispatch/DoubleDispatch.java
index 4b82310a2..91bee562e 100644
--- a/patterns/doubledispatch/DoubleDispatch.java
+++ b/patterns/doubledispatch/DoubleDispatch.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/DoubleDispatch.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using multiple dispatching to handle more
diff --git a/patterns/doubledispatch/Glass.java b/patterns/doubledispatch/Glass.java
index 2f26540a0..79cf7fa26 100644
--- a/patterns/doubledispatch/Glass.java
+++ b/patterns/doubledispatch/Glass.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Glass.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Glass for double dispatching
diff --git a/patterns/doubledispatch/Paper.java b/patterns/doubledispatch/Paper.java
index 47eea3171..b542dfd64 100644
--- a/patterns/doubledispatch/Paper.java
+++ b/patterns/doubledispatch/Paper.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Paper.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Paper for double dispatching
diff --git a/patterns/doubledispatch/TypedBin.java b/patterns/doubledispatch/TypedBin.java
index 72c84e4c5..265874cc4 100644
--- a/patterns/doubledispatch/TypedBin.java
+++ b/patterns/doubledispatch/TypedBin.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/TypedBin.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A List that can grab the right type
diff --git a/patterns/doubledispatch/TypedBinMember.java b/patterns/doubledispatch/TypedBinMember.java
index 456d02c01..c7ce960a9 100644
--- a/patterns/doubledispatch/TypedBinMember.java
+++ b/patterns/doubledispatch/TypedBinMember.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/TypedBinMember.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An interface for adding the double dispatching
diff --git a/patterns/dynatrash/DynaTrash.java b/patterns/dynatrash/DynaTrash.java
index 59b366407..6ce33d8f0 100644
--- a/patterns/dynatrash/DynaTrash.java
+++ b/patterns/dynatrash/DynaTrash.java
@@ -1,5 +1,5 @@
 // patterns/dynatrash/DynaTrash.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using a Map of Lists and RTTI to automatically
diff --git a/patterns/observer/ObservedFlower.java b/patterns/observer/ObservedFlower.java
index a15e8e35c..f759a105d 100644
--- a/patterns/observer/ObservedFlower.java
+++ b/patterns/observer/ObservedFlower.java
@@ -1,5 +1,5 @@
 // patterns/observer/ObservedFlower.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of "Observer" pattern
diff --git a/patterns/recyclea/RecycleA.java b/patterns/recyclea/RecycleA.java
index 702fdb973..a73f39e7f 100644
--- a/patterns/recyclea/RecycleA.java
+++ b/patterns/recyclea/RecycleA.java
@@ -1,5 +1,5 @@
 // patterns/recyclea/RecycleA.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Recycling with RTTI
diff --git a/patterns/recycleb/RecycleB.java b/patterns/recycleb/RecycleB.java
index 19e92f9d2..1ca38314d 100644
--- a/patterns/recycleb/RecycleB.java
+++ b/patterns/recycleb/RecycleB.java
@@ -1,5 +1,5 @@
 // patterns/recycleb/RecycleB.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.recycleb.RecycleB}
diff --git a/patterns/recyclec/RecycleC.java b/patterns/recyclec/RecycleC.java
index abdc25d56..239e8e793 100644
--- a/patterns/recyclec/RecycleC.java
+++ b/patterns/recyclec/RecycleC.java
@@ -1,5 +1,5 @@
 // patterns/recyclec/RecycleC.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adding more objects to the recycling problem
diff --git a/patterns/shapes/BadShapeCreation.java b/patterns/shapes/BadShapeCreation.java
index daa3f7f57..2ebda8e52 100644
--- a/patterns/shapes/BadShapeCreation.java
+++ b/patterns/shapes/BadShapeCreation.java
@@ -1,5 +1,5 @@
 // patterns/shapes/BadShapeCreation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Circle.java b/patterns/shapes/Circle.java
index b50d5abfe..461d55e29 100644
--- a/patterns/shapes/Circle.java
+++ b/patterns/shapes/Circle.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Circle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/FactoryMethod.java b/patterns/shapes/FactoryMethod.java
index b03c8239c..c3b22b1ff 100644
--- a/patterns/shapes/FactoryMethod.java
+++ b/patterns/shapes/FactoryMethod.java
@@ -1,5 +1,5 @@
 // patterns/shapes/FactoryMethod.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/FactoryTest.java b/patterns/shapes/FactoryTest.java
index 2a9e671ee..301bb1abd 100644
--- a/patterns/shapes/FactoryTest.java
+++ b/patterns/shapes/FactoryTest.java
@@ -1,5 +1,5 @@
 // patterns/shapes/FactoryTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Shape.java b/patterns/shapes/Shape.java
index dfff783cc..12fdf3e77 100644
--- a/patterns/shapes/Shape.java
+++ b/patterns/shapes/Shape.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Shape.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Square.java b/patterns/shapes/Square.java
index 602b3282c..610dd3e4c 100644
--- a/patterns/shapes/Square.java
+++ b/patterns/shapes/Square.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Square.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Triangle.java b/patterns/shapes/Triangle.java
index 11559f896..9fed3d93c 100644
--- a/patterns/shapes/Triangle.java
+++ b/patterns/shapes/Triangle.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Triangle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/state/StateMachineDemo.java b/patterns/state/StateMachineDemo.java
index 3911fe019..29f8a8761 100644
--- a/patterns/state/StateMachineDemo.java
+++ b/patterns/state/StateMachineDemo.java
@@ -1,5 +1,5 @@
 // patterns/state/StateMachineDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The StateMachine pattern and Template method
diff --git a/patterns/strategy/StrategyPattern.java b/patterns/strategy/StrategyPattern.java
index fbc8daa49..52561b4b1 100644
--- a/patterns/strategy/StrategyPattern.java
+++ b/patterns/strategy/StrategyPattern.java
@@ -1,5 +1,5 @@
 // patterns/strategy/StrategyPattern.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.strategy.StrategyPattern}
diff --git a/patterns/strategy/StrategyPattern2.java b/patterns/strategy/StrategyPattern2.java
index e8db61547..09465f3a5 100644
--- a/patterns/strategy/StrategyPattern2.java
+++ b/patterns/strategy/StrategyPattern2.java
@@ -1,5 +1,5 @@
 // patterns/strategy/StrategyPattern2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.strategy.StrategyPattern2}
diff --git a/patterns/trash/Aluminum.java b/patterns/trash/Aluminum.java
index 210e57014..0065e964a 100644
--- a/patterns/trash/Aluminum.java
+++ b/patterns/trash/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/trash/Aluminum.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
diff --git a/patterns/trash/Cardboard.java b/patterns/trash/Cardboard.java
index bb7f84a86..0b54d135f 100644
--- a/patterns/trash/Cardboard.java
+++ b/patterns/trash/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/trash/Cardboard.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
diff --git a/patterns/trash/Fillable.java b/patterns/trash/Fillable.java
index 9ac0da0de..a61cb1112 100644
--- a/patterns/trash/Fillable.java
+++ b/patterns/trash/Fillable.java
@@ -1,5 +1,5 @@
 // patterns/trash/Fillable.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Any object that can be filled with Trash
diff --git a/patterns/trash/FillableList.java b/patterns/trash/FillableList.java
index d6e638c28..989a33ec5 100644
--- a/patterns/trash/FillableList.java
+++ b/patterns/trash/FillableList.java
@@ -1,5 +1,5 @@
 // patterns/trash/FillableList.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adapter that makes a List Fillable
diff --git a/patterns/trash/Glass.java b/patterns/trash/Glass.java
index 83c4b3f87..f7563dc42 100644
--- a/patterns/trash/Glass.java
+++ b/patterns/trash/Glass.java
@@ -1,5 +1,5 @@
 // patterns/trash/Glass.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
diff --git a/patterns/trash/Paper.java b/patterns/trash/Paper.java
index 448383c72..2f0b36664 100644
--- a/patterns/trash/Paper.java
+++ b/patterns/trash/Paper.java
@@ -1,5 +1,5 @@
 // patterns/trash/Paper.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
diff --git a/patterns/trash/ParseTrash.java b/patterns/trash/ParseTrash.java
index 709ad1a85..fc0c04168 100644
--- a/patterns/trash/ParseTrash.java
+++ b/patterns/trash/ParseTrash.java
@@ -1,5 +1,5 @@
 // patterns/trash/ParseTrash.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Open a file and parse its contents into
diff --git a/patterns/trash/Trash.java b/patterns/trash/Trash.java
index e8d9d3517..40be944ab 100644
--- a/patterns/trash/Trash.java
+++ b/patterns/trash/Trash.java
@@ -1,5 +1,5 @@
 // patterns/trash/Trash.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Base class for Trash recycling examples
diff --git a/patterns/trashvisitor/Aluminum.java b/patterns/trashvisitor/Aluminum.java
index c89592c33..85d5fa145 100644
--- a/patterns/trashvisitor/Aluminum.java
+++ b/patterns/trashvisitor/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Aluminum.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aluminum for the visitor pattern
diff --git a/patterns/trashvisitor/Cardboard.java b/patterns/trashvisitor/Cardboard.java
index 23fcb1a44..978202ef1 100644
--- a/patterns/trashvisitor/Cardboard.java
+++ b/patterns/trashvisitor/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Cardboard.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cardboard for the visitor pattern
diff --git a/patterns/trashvisitor/Glass.java b/patterns/trashvisitor/Glass.java
index 70e5d2105..fbcf4949f 100644
--- a/patterns/trashvisitor/Glass.java
+++ b/patterns/trashvisitor/Glass.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Glass.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Glass for the visitor pattern
diff --git a/patterns/trashvisitor/Paper.java b/patterns/trashvisitor/Paper.java
index d42cb0610..6e9999f1d 100644
--- a/patterns/trashvisitor/Paper.java
+++ b/patterns/trashvisitor/Paper.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Paper.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Paper for the visitor pattern
diff --git a/patterns/trashvisitor/TrashVisitor.java b/patterns/trashvisitor/TrashVisitor.java
index bb0eeec18..8f9566236 100644
--- a/patterns/trashvisitor/TrashVisitor.java
+++ b/patterns/trashvisitor/TrashVisitor.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/TrashVisitor.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.trashvisitor.TrashVisitor}
diff --git a/patterns/trashvisitor/Visitable.java b/patterns/trashvisitor/Visitable.java
index 7d736b3e9..f1f9f1da1 100644
--- a/patterns/trashvisitor/Visitable.java
+++ b/patterns/trashvisitor/Visitable.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Visitable.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An interface to add visitor functionality to the
diff --git a/patterns/trashvisitor/Visitor.java b/patterns/trashvisitor/Visitor.java
index 0a97e3a2d..07ef4622d 100644
--- a/patterns/trashvisitor/Visitor.java
+++ b/patterns/trashvisitor/Visitor.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Visitor.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The base interface for visitors
diff --git a/patterns/visitor/BeeAndFlowers.java b/patterns/visitor/BeeAndFlowers.java
index 3f05cd5e0..aa86ebfc5 100644
--- a/patterns/visitor/BeeAndFlowers.java
+++ b/patterns/visitor/BeeAndFlowers.java
@@ -1,5 +1,5 @@
 // patterns/visitor/BeeAndFlowers.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of "visitor" pattern
diff --git a/polymorphism/CovariantReturn.java b/polymorphism/CovariantReturn.java
index b30e0b640..e88fe5908 100644
--- a/polymorphism/CovariantReturn.java
+++ b/polymorphism/CovariantReturn.java
@@ -1,5 +1,5 @@
 // polymorphism/CovariantReturn.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/polymorphism/FieldAccess.java b/polymorphism/FieldAccess.java
index 2ab7e02cb..95e47c5e2 100644
--- a/polymorphism/FieldAccess.java
+++ b/polymorphism/FieldAccess.java
@@ -1,5 +1,5 @@
 // polymorphism/FieldAccess.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Direct field access is determined at compile time
diff --git a/polymorphism/Frog.java b/polymorphism/Frog.java
index c9231de38..9226910d5 100644
--- a/polymorphism/Frog.java
+++ b/polymorphism/Frog.java
@@ -1,5 +1,5 @@
 // polymorphism/Frog.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cleanup and inheritance
diff --git a/polymorphism/PolyConstructors.java b/polymorphism/PolyConstructors.java
index d217e4a08..3a99f08b2 100644
--- a/polymorphism/PolyConstructors.java
+++ b/polymorphism/PolyConstructors.java
@@ -1,5 +1,5 @@
 // polymorphism/PolyConstructors.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructors and polymorphism
diff --git a/polymorphism/PrivateOverride.java b/polymorphism/PrivateOverride.java
index a072095e1..9873e03da 100644
--- a/polymorphism/PrivateOverride.java
+++ b/polymorphism/PrivateOverride.java
@@ -1,5 +1,5 @@
 // polymorphism/PrivateOverride.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Trying to override a private method
diff --git a/polymorphism/PrivateOverride2.java b/polymorphism/PrivateOverride2.java
index 1d0c07c81..664672bc4 100644
--- a/polymorphism/PrivateOverride2.java
+++ b/polymorphism/PrivateOverride2.java
@@ -1,5 +1,5 @@
 // polymorphism/PrivateOverride2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Detecting a mistaken override using @Override
diff --git a/polymorphism/RTTI.java b/polymorphism/RTTI.java
index 5ddfa82f5..39c9029b9 100644
--- a/polymorphism/RTTI.java
+++ b/polymorphism/RTTI.java
@@ -1,5 +1,5 @@
 // polymorphism/RTTI.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Downcasting & Runtime type information (RTTI)
diff --git a/polymorphism/ReferenceCounting.java b/polymorphism/ReferenceCounting.java
index a175fcade..b378117f1 100644
--- a/polymorphism/ReferenceCounting.java
+++ b/polymorphism/ReferenceCounting.java
@@ -1,5 +1,5 @@
 // polymorphism/ReferenceCounting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cleaning up shared member objects
diff --git a/polymorphism/Sandwich.java b/polymorphism/Sandwich.java
index a13a61929..97f80d53e 100644
--- a/polymorphism/Sandwich.java
+++ b/polymorphism/Sandwich.java
@@ -1,5 +1,5 @@
 // polymorphism/Sandwich.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Order of constructor calls
diff --git a/polymorphism/Shapes.java b/polymorphism/Shapes.java
index 42e13f112..4d051e707 100644
--- a/polymorphism/Shapes.java
+++ b/polymorphism/Shapes.java
@@ -1,5 +1,5 @@
 // polymorphism/Shapes.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Polymorphism in Java
diff --git a/polymorphism/StaticPolymorphism.java b/polymorphism/StaticPolymorphism.java
index 40e4f794d..1ebe733b2 100644
--- a/polymorphism/StaticPolymorphism.java
+++ b/polymorphism/StaticPolymorphism.java
@@ -1,5 +1,5 @@
 // polymorphism/StaticPolymorphism.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Static methods are not polymorphic
diff --git a/polymorphism/Transmogrify.java b/polymorphism/Transmogrify.java
index dd45b9bd4..09877d530 100644
--- a/polymorphism/Transmogrify.java
+++ b/polymorphism/Transmogrify.java
@@ -1,5 +1,5 @@
 // polymorphism/Transmogrify.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Dynamically changing the behavior of an object
diff --git a/polymorphism/music/Instrument.java b/polymorphism/music/Instrument.java
index 959c2dd3d..fb6c77e37 100644
--- a/polymorphism/music/Instrument.java
+++ b/polymorphism/music/Instrument.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Instrument.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.music;
diff --git a/polymorphism/music/Music.java b/polymorphism/music/Music.java
index 2338543b2..8e903ec0a 100644
--- a/polymorphism/music/Music.java
+++ b/polymorphism/music/Music.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Music.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance & upcasting
diff --git a/polymorphism/music/Music2.java b/polymorphism/music/Music2.java
index e16eb1799..a5bff54be 100644
--- a/polymorphism/music/Music2.java
+++ b/polymorphism/music/Music2.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Music2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overloading instead of upcasting
diff --git a/polymorphism/music/Note.java b/polymorphism/music/Note.java
index 34f55bd8e..414367a96 100644
--- a/polymorphism/music/Note.java
+++ b/polymorphism/music/Note.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Note.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Notes to play on musical instruments
diff --git a/polymorphism/music/Wind.java b/polymorphism/music/Wind.java
index fcec34ae4..c38ac4970 100644
--- a/polymorphism/music/Wind.java
+++ b/polymorphism/music/Wind.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Wind.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.music;
diff --git a/polymorphism/music3/Music3.java b/polymorphism/music3/Music3.java
index 4c7c70f84..da3eb3647 100644
--- a/polymorphism/music3/Music3.java
+++ b/polymorphism/music3/Music3.java
@@ -1,5 +1,5 @@
 // polymorphism/music3/Music3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An extensible program
diff --git a/polymorphism/shape/Circle.java b/polymorphism/shape/Circle.java
index 305d0411b..fc8579506 100644
--- a/polymorphism/shape/Circle.java
+++ b/polymorphism/shape/Circle.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/Circle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
diff --git a/polymorphism/shape/RandomShapes.java b/polymorphism/shape/RandomShapes.java
index 3a5fa9063..c1419f4e1 100644
--- a/polymorphism/shape/RandomShapes.java
+++ b/polymorphism/shape/RandomShapes.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/RandomShapes.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A "factory" that randomly creates shapes
diff --git a/polymorphism/shape/Shape.java b/polymorphism/shape/Shape.java
index 3d42f1218..4be93c866 100644
--- a/polymorphism/shape/Shape.java
+++ b/polymorphism/shape/Shape.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/Shape.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
diff --git a/polymorphism/shape/Square.java b/polymorphism/shape/Square.java
index c04d68320..4938335b3 100644
--- a/polymorphism/shape/Square.java
+++ b/polymorphism/shape/Square.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/Square.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
diff --git a/polymorphism/shape/Triangle.java b/polymorphism/shape/Triangle.java
index 7bc9a961a..db7394a3c 100644
--- a/polymorphism/shape/Triangle.java
+++ b/polymorphism/shape/Triangle.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/Triangle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
diff --git a/references/AddingClone.java b/references/AddingClone.java
index d8b1106fb..4f03cf06d 100644
--- a/references/AddingClone.java
+++ b/references/AddingClone.java
@@ -1,5 +1,5 @@
 // references/AddingClone.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // You must go through a few gyrations
diff --git a/references/Alias1.java b/references/Alias1.java
index a40966355..1af594ec4 100644
--- a/references/Alias1.java
+++ b/references/Alias1.java
@@ -1,5 +1,5 @@
 // references/Alias1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aliasing two references to one object
diff --git a/references/Alias2.java b/references/Alias2.java
index 928d9c7bf..aa37e1a23 100644
--- a/references/Alias2.java
+++ b/references/Alias2.java
@@ -1,5 +1,5 @@
 // references/Alias2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Method calls implicitly alias their arguments
diff --git a/references/CheckCloneable.java b/references/CheckCloneable.java
index b9e7eb078..137937a94 100644
--- a/references/CheckCloneable.java
+++ b/references/CheckCloneable.java
@@ -1,5 +1,5 @@
 // references/CheckCloneable.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Check to see if a reference can be cloned
diff --git a/references/CloneArrayList.java b/references/CloneArrayList.java
index 13bc77951..601673c2c 100644
--- a/references/CloneArrayList.java
+++ b/references/CloneArrayList.java
@@ -1,5 +1,5 @@
 // references/CloneArrayList.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The clone() operation works for only a few
diff --git a/references/Compete.java b/references/Compete.java
index 3c825d387..9e77f3a7f 100644
--- a/references/Compete.java
+++ b/references/Compete.java
@@ -1,5 +1,5 @@
 // references/Compete.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/references/CopyConstructor.java b/references/CopyConstructor.java
index 46e1ee212..2617f48b0 100644
--- a/references/CopyConstructor.java
+++ b/references/CopyConstructor.java
@@ -1,5 +1,5 @@
 // references/CopyConstructor.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A constructor to copy an object of the same
diff --git a/references/DepthReading.java b/references/DepthReading.java
index d9f3f1ae6..00d9dfda6 100644
--- a/references/DepthReading.java
+++ b/references/DepthReading.java
@@ -1,5 +1,5 @@
 // references/DepthReading.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
diff --git a/references/HorrorFlick.java b/references/HorrorFlick.java
index ea310ca4f..709d15bf3 100644
--- a/references/HorrorFlick.java
+++ b/references/HorrorFlick.java
@@ -1,5 +1,5 @@
 // references/HorrorFlick.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Insert Cloneability at any level of inheritance
diff --git a/references/Immutable1.java b/references/Immutable1.java
index c4f538916..55ac1f6aa 100644
--- a/references/Immutable1.java
+++ b/references/Immutable1.java
@@ -1,5 +1,5 @@
 // references/Immutable1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Immutable objects are immune to aliasing
diff --git a/references/Immutable2.java b/references/Immutable2.java
index 8f35edaa6..a565f86a6 100644
--- a/references/Immutable2.java
+++ b/references/Immutable2.java
@@ -1,5 +1,5 @@
 // references/Immutable2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A companion class to modify immutable objects
diff --git a/references/ImmutableInteger.java b/references/ImmutableInteger.java
index 3dc86a28a..ed4594b90 100644
--- a/references/ImmutableInteger.java
+++ b/references/ImmutableInteger.java
@@ -1,5 +1,5 @@
 // references/ImmutableInteger.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The Integer class cannot be changed
diff --git a/references/ImmutableStrings.java b/references/ImmutableStrings.java
index 538ab6efc..ad954e3f3 100644
--- a/references/ImmutableStrings.java
+++ b/references/ImmutableStrings.java
@@ -1,5 +1,5 @@
 // references/ImmutableStrings.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating StringBuilder
diff --git a/references/LocalCopy.java b/references/LocalCopy.java
index d7462981a..9c01c09e8 100644
--- a/references/LocalCopy.java
+++ b/references/LocalCopy.java
@@ -1,5 +1,5 @@
 // references/LocalCopy.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating local copies with clone()
diff --git a/references/MutableInteger.java b/references/MutableInteger.java
index 7f6e47d21..dfe0cc7b7 100644
--- a/references/MutableInteger.java
+++ b/references/MutableInteger.java
@@ -1,5 +1,5 @@
 // references/MutableInteger.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A changeable wrapper class
diff --git a/references/OceanReading.java b/references/OceanReading.java
index b8466fa04..b89f1b046 100644
--- a/references/OceanReading.java
+++ b/references/OceanReading.java
@@ -1,5 +1,5 @@
 // references/OceanReading.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
diff --git a/references/PassReferences.java b/references/PassReferences.java
index effa9ca69..2a1630087 100644
--- a/references/PassReferences.java
+++ b/references/PassReferences.java
@@ -1,5 +1,5 @@
 // references/PassReferences.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/references/SimplerMutableInteger.java b/references/SimplerMutableInteger.java
index c49ceb5eb..191068ca6 100644
--- a/references/SimplerMutableInteger.java
+++ b/references/SimplerMutableInteger.java
@@ -1,5 +1,5 @@
 // references/SimplerMutableInteger.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A trivial wrapper class
diff --git a/references/Snake.java b/references/Snake.java
index 624855490..004f7e765 100644
--- a/references/Snake.java
+++ b/references/Snake.java
@@ -1,5 +1,5 @@
 // references/Snake.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tests cloning to see if reference
diff --git a/references/Stringer.java b/references/Stringer.java
index 89ceff1e6..72663bb57 100644
--- a/references/Stringer.java
+++ b/references/Stringer.java
@@ -1,5 +1,5 @@
 // references/Stringer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/references/TemperatureReading.java b/references/TemperatureReading.java
index 8ca47e90f..9b77cfb24 100644
--- a/references/TemperatureReading.java
+++ b/references/TemperatureReading.java
@@ -1,5 +1,5 @@
 // references/TemperatureReading.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
diff --git a/references/tests/DeepCopyTest.java b/references/tests/DeepCopyTest.java
index 977376520..b65a8d89d 100644
--- a/references/tests/DeepCopyTest.java
+++ b/references/tests/DeepCopyTest.java
@@ -1,5 +1,5 @@
 // references/tests/DeepCopyTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package references;
diff --git a/reuse/Bath.java b/reuse/Bath.java
index 31a70e8b9..38e5e8195 100644
--- a/reuse/Bath.java
+++ b/reuse/Bath.java
@@ -1,5 +1,5 @@
 // reuse/Bath.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructor initialization with composition
diff --git a/reuse/Beetle.java b/reuse/Beetle.java
index c73419540..0a41bc176 100644
--- a/reuse/Beetle.java
+++ b/reuse/Beetle.java
@@ -1,5 +1,5 @@
 // reuse/Beetle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The full process of initialization
diff --git a/reuse/BlankFinal.java b/reuse/BlankFinal.java
index 9a45fe6b3..93818a06a 100644
--- a/reuse/BlankFinal.java
+++ b/reuse/BlankFinal.java
@@ -1,5 +1,5 @@
 // reuse/BlankFinal.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Blank" final fields
diff --git a/reuse/CADSystem.java b/reuse/CADSystem.java
index 530e0de1d..55fbe0d85 100644
--- a/reuse/CADSystem.java
+++ b/reuse/CADSystem.java
@@ -1,5 +1,5 @@
 // reuse/CADSystem.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Ensuring proper cleanup
diff --git a/reuse/Car.java b/reuse/Car.java
index 4e3fe86cc..1bc4377b5 100644
--- a/reuse/Car.java
+++ b/reuse/Car.java
@@ -1,5 +1,5 @@
 // reuse/Car.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Composition with public objects
diff --git a/reuse/Cartoon.java b/reuse/Cartoon.java
index 51d6f4a5d..48741bafb 100644
--- a/reuse/Cartoon.java
+++ b/reuse/Cartoon.java
@@ -1,5 +1,5 @@
 // reuse/Cartoon.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructor calls during inheritance
diff --git a/reuse/Chess.java b/reuse/Chess.java
index 55a1cc9c9..30f2685bc 100644
--- a/reuse/Chess.java
+++ b/reuse/Chess.java
@@ -1,5 +1,5 @@
 // reuse/Chess.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance, constructors and arguments
diff --git a/reuse/DerivedSpaceShip.java b/reuse/DerivedSpaceShip.java
index 737e23e16..dfbe20ac3 100644
--- a/reuse/DerivedSpaceShip.java
+++ b/reuse/DerivedSpaceShip.java
@@ -1,5 +1,5 @@
 // reuse/DerivedSpaceShip.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/reuse/Detergent.java b/reuse/Detergent.java
index 6f1c08520..99f4e7cc3 100644
--- a/reuse/Detergent.java
+++ b/reuse/Detergent.java
@@ -1,5 +1,5 @@
 // reuse/Detergent.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance syntax & properties
diff --git a/reuse/FinalArguments.java b/reuse/FinalArguments.java
index 9942a2104..46efed7e1 100644
--- a/reuse/FinalArguments.java
+++ b/reuse/FinalArguments.java
@@ -1,5 +1,5 @@
 // reuse/FinalArguments.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using "final" with method arguments
diff --git a/reuse/FinalData.java b/reuse/FinalData.java
index b233c408b..4376f5c3f 100644
--- a/reuse/FinalData.java
+++ b/reuse/FinalData.java
@@ -1,5 +1,5 @@
 // reuse/FinalData.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The effect of final on fields
diff --git a/reuse/FinalOverridingIllusion.java b/reuse/FinalOverridingIllusion.java
index 1b475194a..e5c19ece5 100644
--- a/reuse/FinalOverridingIllusion.java
+++ b/reuse/FinalOverridingIllusion.java
@@ -1,5 +1,5 @@
 // reuse/FinalOverridingIllusion.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // It only looks like you can override
diff --git a/reuse/Hide.java b/reuse/Hide.java
index 882da64d9..f718e4b08 100644
--- a/reuse/Hide.java
+++ b/reuse/Hide.java
@@ -1,5 +1,5 @@
 // reuse/Hide.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overloading a base-class method name in a derived
diff --git a/reuse/Jurassic.java b/reuse/Jurassic.java
index af63bea9a..04b7d61c5 100644
--- a/reuse/Jurassic.java
+++ b/reuse/Jurassic.java
@@ -1,5 +1,5 @@
 // reuse/Jurassic.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Making an entire class final
diff --git a/reuse/Lisa.java b/reuse/Lisa.java
index 6d175fe5d..85ec5cc90 100644
--- a/reuse/Lisa.java
+++ b/reuse/Lisa.java
@@ -1,5 +1,5 @@
 // reuse/Lisa.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/reuse/Orc.java b/reuse/Orc.java
index 9974c685b..c3ba40a8e 100644
--- a/reuse/Orc.java
+++ b/reuse/Orc.java
@@ -1,5 +1,5 @@
 // reuse/Orc.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The protected keyword
diff --git a/reuse/PlaceSetting.java b/reuse/PlaceSetting.java
index 5723a1100..b57d6383a 100644
--- a/reuse/PlaceSetting.java
+++ b/reuse/PlaceSetting.java
@@ -1,5 +1,5 @@
 // reuse/PlaceSetting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Combining composition & inheritance
diff --git a/reuse/SpaceShipControls.java b/reuse/SpaceShipControls.java
index 2272713d8..6fde70867 100644
--- a/reuse/SpaceShipControls.java
+++ b/reuse/SpaceShipControls.java
@@ -1,5 +1,5 @@
 // reuse/SpaceShipControls.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/reuse/SpaceShipDelegation.java b/reuse/SpaceShipDelegation.java
index 9046a4a48..c31316b29 100644
--- a/reuse/SpaceShipDelegation.java
+++ b/reuse/SpaceShipDelegation.java
@@ -1,5 +1,5 @@
 // reuse/SpaceShipDelegation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/reuse/SprinklerSystem.java b/reuse/SprinklerSystem.java
index 77a175184..e0ccbe661 100644
--- a/reuse/SprinklerSystem.java
+++ b/reuse/SprinklerSystem.java
@@ -1,5 +1,5 @@
 // reuse/SprinklerSystem.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Composition for code reuse
diff --git a/reuse/Wind.java b/reuse/Wind.java
index 46fc3e948..3e9a05f6b 100644
--- a/reuse/Wind.java
+++ b/reuse/Wind.java
@@ -1,5 +1,5 @@
 // reuse/Wind.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance & upcasting
diff --git a/serialization/APerson.java b/serialization/APerson.java
index fa9f2b951..1f67eb1cb 100644
--- a/serialization/APerson.java
+++ b/serialization/APerson.java
@@ -1,5 +1,5 @@
 // serialization/APerson.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Use the XOM library to write and read XML
diff --git a/serialization/AStoreCADState.java b/serialization/AStoreCADState.java
index 46fca27bc..0ce8858a0 100644
--- a/serialization/AStoreCADState.java
+++ b/serialization/AStoreCADState.java
@@ -1,5 +1,5 @@
 // serialization/AStoreCADState.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Saving the state of a fictitious CAD system
diff --git a/serialization/Alien.java b/serialization/Alien.java
index b7db23f2e..d0b0f5bfb 100644
--- a/serialization/Alien.java
+++ b/serialization/Alien.java
@@ -1,5 +1,5 @@
 // serialization/Alien.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A serializable class
diff --git a/serialization/Blip3.java b/serialization/Blip3.java
index 4c141def2..6741298c0 100644
--- a/serialization/Blip3.java
+++ b/serialization/Blip3.java
@@ -1,5 +1,5 @@
 // serialization/Blip3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Reconstructing an externalizable object
diff --git a/serialization/Blips.java b/serialization/Blips.java
index 4a98f1237..88116d844 100644
--- a/serialization/Blips.java
+++ b/serialization/Blips.java
@@ -1,5 +1,5 @@
 // serialization/Blips.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple use of Externalizable & a pitfall
diff --git a/serialization/FreezeAlien.java b/serialization/FreezeAlien.java
index ec046d8b8..0fe8e8314 100644
--- a/serialization/FreezeAlien.java
+++ b/serialization/FreezeAlien.java
@@ -1,5 +1,5 @@
 // serialization/FreezeAlien.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Create a serialized output file
diff --git a/serialization/Logon.java b/serialization/Logon.java
index 7d27e4d15..3b9109681 100644
--- a/serialization/Logon.java
+++ b/serialization/Logon.java
@@ -1,5 +1,5 @@
 // serialization/Logon.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the "transient" keyword
diff --git a/serialization/MyWorld.java b/serialization/MyWorld.java
index 5cdf5778d..99e39de34 100644
--- a/serialization/MyWorld.java
+++ b/serialization/MyWorld.java
@@ -1,5 +1,5 @@
 // serialization/MyWorld.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/serialization/People.java b/serialization/People.java
index 6205bfabd..0e588749a 100644
--- a/serialization/People.java
+++ b/serialization/People.java
@@ -1,5 +1,5 @@
 // serialization/People.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // nu.xom.Node comes from http://www.xom.nu
diff --git a/serialization/RecoverCADState.java b/serialization/RecoverCADState.java
index 6f3b50670..612f501cf 100644
--- a/serialization/RecoverCADState.java
+++ b/serialization/RecoverCADState.java
@@ -1,5 +1,5 @@
 // serialization/RecoverCADState.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Restoring the state of the fictitious CAD system
diff --git a/serialization/SerialCtl.java b/serialization/SerialCtl.java
index 56add3431..ed891633d 100644
--- a/serialization/SerialCtl.java
+++ b/serialization/SerialCtl.java
@@ -1,5 +1,5 @@
 // serialization/SerialCtl.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Controlling serialization by adding your own
diff --git a/serialization/Worm.java b/serialization/Worm.java
index 261988863..666beb87b 100644
--- a/serialization/Worm.java
+++ b/serialization/Worm.java
@@ -1,5 +1,5 @@
 // serialization/Worm.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates object serialization
diff --git a/serialization/xfiles/ThawAlien.java b/serialization/xfiles/ThawAlien.java
index d60d6f375..1de6ce6af 100644
--- a/serialization/xfiles/ThawAlien.java
+++ b/serialization/xfiles/ThawAlien.java
@@ -1,5 +1,5 @@
 // serialization/xfiles/ThawAlien.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Recover a serialized file
diff --git a/standardio/ChangeSystemOut.java b/standardio/ChangeSystemOut.java
index def290419..2b37acb86 100644
--- a/standardio/ChangeSystemOut.java
+++ b/standardio/ChangeSystemOut.java
@@ -1,5 +1,5 @@
 // standardio/ChangeSystemOut.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Turn System.out into a PrintWriter
diff --git a/standardio/Echo.java b/standardio/Echo.java
index 3a222c93c..d1a6103e9 100644
--- a/standardio/Echo.java
+++ b/standardio/Echo.java
@@ -1,5 +1,5 @@
 // standardio/Echo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // How to read from standard input
diff --git a/standardio/OSExecuteDemo.java b/standardio/OSExecuteDemo.java
index 83186478c..9ce8c8ef2 100644
--- a/standardio/OSExecuteDemo.java
+++ b/standardio/OSExecuteDemo.java
@@ -1,5 +1,5 @@
 // standardio/OSExecuteDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates standard I/O redirection
diff --git a/standardio/Redirecting.java b/standardio/Redirecting.java
index 72abc4ae2..c2986a2bd 100644
--- a/standardio/Redirecting.java
+++ b/standardio/Redirecting.java
@@ -1,5 +1,5 @@
 // standardio/Redirecting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates standard I/O redirection
diff --git a/staticchecking/DogsAndRobots.cpp b/staticchecking/DogsAndRobots.cpp
index b4f2a1f12..03b69a969 100644
--- a/staticchecking/DogsAndRobots.cpp
+++ b/staticchecking/DogsAndRobots.cpp
@@ -1,5 +1,5 @@
 // staticchecking/DogsAndRobots.cpp
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 #include 
diff --git a/staticchecking/DogsAndRobots.py b/staticchecking/DogsAndRobots.py
index 6327222cb..a6b239dab 100644
--- a/staticchecking/DogsAndRobots.py
+++ b/staticchecking/DogsAndRobots.py
@@ -1,5 +1,5 @@
 # staticchecking/DogsAndRobots.py
-# (c)2017 MindView LLC: see Copyright.txt
+# (c)2020 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 
diff --git a/staticchecking/NoBasePetSpeak.py b/staticchecking/NoBasePetSpeak.py
index 80c771c5f..cbe6c82b6 100644
--- a/staticchecking/NoBasePetSpeak.py
+++ b/staticchecking/NoBasePetSpeak.py
@@ -1,5 +1,5 @@
 # staticchecking/NoBasePetSpeak.py
-# (c)2017 MindView LLC: see Copyright.txt
+# (c)2020 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 #- Speaking pets without base classes
diff --git a/staticchecking/PetSpeak.py b/staticchecking/PetSpeak.py
index 998a678ee..e3734e2fc 100644
--- a/staticchecking/PetSpeak.py
+++ b/staticchecking/PetSpeak.py
@@ -1,5 +1,5 @@
 # staticchecking/PetSpeak.py
-# (c)2017 MindView LLC: see Copyright.txt
+# (c)2020 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 #- Speaking pets in Python
diff --git a/staticchecking/dogsandrobots.go b/staticchecking/dogsandrobots.go
index a352865e4..d3dd10cb6 100644
--- a/staticchecking/dogsandrobots.go
+++ b/staticchecking/dogsandrobots.go
@@ -1,5 +1,5 @@
 // staticchecking/dogsandrobots.go
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package main
diff --git a/staticchecking/dr/DogsAndRobots.java b/staticchecking/dr/DogsAndRobots.java
index c5afa6f98..9bede8045 100644
--- a/staticchecking/dr/DogsAndRobots.java
+++ b/staticchecking/dr/DogsAndRobots.java
@@ -1,5 +1,5 @@
 // staticchecking/dr/DogsAndRobots.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.dr.DogsAndRobots}
diff --git a/staticchecking/drc/DogAndRobotCollections.java b/staticchecking/drc/DogAndRobotCollections.java
index bf48ee023..16a82ed54 100644
--- a/staticchecking/drc/DogAndRobotCollections.java
+++ b/staticchecking/drc/DogAndRobotCollections.java
@@ -1,5 +1,5 @@
 // staticchecking/drc/DogAndRobotCollections.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.drc.DogAndRobotCollections}
diff --git a/staticchecking/latent/Latent.java b/staticchecking/latent/Latent.java
index f8766f41b..29e53713e 100644
--- a/staticchecking/latent/Latent.java
+++ b/staticchecking/latent/Latent.java
@@ -1,5 +1,5 @@
 // staticchecking/latent/Latent.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.latent.Latent}
diff --git a/staticchecking/petspeak.go b/staticchecking/petspeak.go
index 308e0c1f9..1d5c5e462 100644
--- a/staticchecking/petspeak.go
+++ b/staticchecking/petspeak.go
@@ -1,5 +1,5 @@
 // staticchecking/petspeak.go
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package main
diff --git a/staticchecking/petspeak/PetSpeak.java b/staticchecking/petspeak/PetSpeak.java
index 6b1014976..0b850c3b4 100644
--- a/staticchecking/petspeak/PetSpeak.java
+++ b/staticchecking/petspeak/PetSpeak.java
@@ -1,5 +1,5 @@
 // staticchecking/petspeak/PetSpeak.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Speaking pets in Java
diff --git a/streams/ArrayStreams.java b/streams/ArrayStreams.java
index 8bcdbb8af..dfed6e83b 100644
--- a/streams/ArrayStreams.java
+++ b/streams/ArrayStreams.java
@@ -1,5 +1,5 @@
 // streams/ArrayStreams.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Bubble.java b/streams/Bubble.java
index c07afa588..5650e5ae2 100644
--- a/streams/Bubble.java
+++ b/streams/Bubble.java
@@ -1,5 +1,5 @@
 // streams/Bubble.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/streams/Bubbles.java b/streams/Bubbles.java
index 66177f024..1b3bd2b9d 100644
--- a/streams/Bubbles.java
+++ b/streams/Bubbles.java
@@ -1,5 +1,5 @@
 // streams/Bubbles.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/CollectionToStream.java b/streams/CollectionToStream.java
index 12efabe39..93236ef1f 100644
--- a/streams/CollectionToStream.java
+++ b/streams/CollectionToStream.java
@@ -1,5 +1,5 @@
 // streams/CollectionToStream.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/CreatingOptionals.java b/streams/CreatingOptionals.java
index fd3f64548..7e886ddc2 100644
--- a/streams/CreatingOptionals.java
+++ b/streams/CreatingOptionals.java
@@ -1,5 +1,5 @@
 // streams/CreatingOptionals.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Duplicator.java b/streams/Duplicator.java
index 78a83e2a7..267279c7b 100644
--- a/streams/Duplicator.java
+++ b/streams/Duplicator.java
@@ -1,5 +1,5 @@
 // streams/Duplicator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/Fibonacci.java b/streams/Fibonacci.java
index 3c76ca68d..fa53c6879 100644
--- a/streams/Fibonacci.java
+++ b/streams/Fibonacci.java
@@ -1,5 +1,5 @@
 // streams/Fibonacci.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/FileToWords.java b/streams/FileToWords.java
index 3fc61ca5f..7f7174cbe 100644
--- a/streams/FileToWords.java
+++ b/streams/FileToWords.java
@@ -1,5 +1,5 @@
 // streams/FileToWords.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
diff --git a/streams/FileToWordsBuilder.java b/streams/FileToWordsBuilder.java
index d51c86630..d5ac62be5 100644
--- a/streams/FileToWordsBuilder.java
+++ b/streams/FileToWordsBuilder.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsBuilder.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/streams/FileToWordsRegexp.java b/streams/FileToWordsRegexp.java
index 3132cd671..dfff507e1 100644
--- a/streams/FileToWordsRegexp.java
+++ b/streams/FileToWordsRegexp.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsRegexp.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/streams/FileToWordsTest.java b/streams/FileToWordsTest.java
index b94c39fd4..a81f72096 100644
--- a/streams/FileToWordsTest.java
+++ b/streams/FileToWordsTest.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/FlatMap.java b/streams/FlatMap.java
index 50ed7ed9a..e2b3137fa 100644
--- a/streams/FlatMap.java
+++ b/streams/FlatMap.java
@@ -1,5 +1,5 @@
 // streams/FlatMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/ForEach.java b/streams/ForEach.java
index 37b537182..f0abe2558 100644
--- a/streams/ForEach.java
+++ b/streams/ForEach.java
@@ -1,5 +1,5 @@
 // streams/ForEach.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/FunctionMap.java b/streams/FunctionMap.java
index 7176b2e3b..3c7c90e79 100644
--- a/streams/FunctionMap.java
+++ b/streams/FunctionMap.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/FunctionMap2.java b/streams/FunctionMap2.java
index 809cb4702..4d9f29726 100644
--- a/streams/FunctionMap2.java
+++ b/streams/FunctionMap2.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Different input and output types
diff --git a/streams/FunctionMap3.java b/streams/FunctionMap3.java
index ebb9e3b0e..74236af31 100644
--- a/streams/FunctionMap3.java
+++ b/streams/FunctionMap3.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Producing numeric output streams
diff --git a/streams/Generator.java b/streams/Generator.java
index dc3ac1762..c9aba7404 100644
--- a/streams/Generator.java
+++ b/streams/Generator.java
@@ -1,5 +1,5 @@
 // streams/Generator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/ImperativeRandoms.java b/streams/ImperativeRandoms.java
index 9dad499a4..f9baaca5b 100644
--- a/streams/ImperativeRandoms.java
+++ b/streams/ImperativeRandoms.java
@@ -1,5 +1,5 @@
 // streams/ImperativeRandoms.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Informational.java b/streams/Informational.java
index 421455120..dd80585c3 100644
--- a/streams/Informational.java
+++ b/streams/Informational.java
@@ -1,5 +1,5 @@
 // streams/Informational.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/LastElement.java b/streams/LastElement.java
index e5fa30c1e..398b0488d 100644
--- a/streams/LastElement.java
+++ b/streams/LastElement.java
@@ -1,5 +1,5 @@
 // streams/LastElement.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Looping.java b/streams/Looping.java
index 75a30ef70..715ad052e 100644
--- a/streams/Looping.java
+++ b/streams/Looping.java
@@ -1,5 +1,5 @@
 // streams/Looping.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static onjava.Repeat.*;
diff --git a/streams/Machine2.java b/streams/Machine2.java
index a72369660..3d407185c 100644
--- a/streams/Machine2.java
+++ b/streams/Machine2.java
@@ -1,5 +1,5 @@
 // streams/Machine2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/MapCollector.java b/streams/MapCollector.java
index 01f71d0ef..95811e4b1 100644
--- a/streams/MapCollector.java
+++ b/streams/MapCollector.java
@@ -1,5 +1,5 @@
 // streams/MapCollector.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Matching.java b/streams/Matching.java
index b5aff16b8..f5c01bc6d 100644
--- a/streams/Matching.java
+++ b/streams/Matching.java
@@ -1,5 +1,5 @@
 // streams/Matching.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates short-circuiting of *Match() operations
diff --git a/streams/NumericStreamInfo.java b/streams/NumericStreamInfo.java
index 592263b58..0d04b6ef3 100644
--- a/streams/NumericStreamInfo.java
+++ b/streams/NumericStreamInfo.java
@@ -1,5 +1,5 @@
 // streams/NumericStreamInfo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/OptionalBasics.java b/streams/OptionalBasics.java
index 24aa0dcfd..625c450ab 100644
--- a/streams/OptionalBasics.java
+++ b/streams/OptionalBasics.java
@@ -1,5 +1,5 @@
 // streams/OptionalBasics.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalFilter.java b/streams/OptionalFilter.java
index a15df5da1..a2095ec3b 100644
--- a/streams/OptionalFilter.java
+++ b/streams/OptionalFilter.java
@@ -1,5 +1,5 @@
 // streams/OptionalFilter.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalFlatMap.java b/streams/OptionalFlatMap.java
index ce71c3f0b..52e8e81e8 100644
--- a/streams/OptionalFlatMap.java
+++ b/streams/OptionalFlatMap.java
@@ -1,5 +1,5 @@
 // streams/OptionalFlatMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalMap.java b/streams/OptionalMap.java
index 06d1bf3c8..83ae4396b 100644
--- a/streams/OptionalMap.java
+++ b/streams/OptionalMap.java
@@ -1,5 +1,5 @@
 // streams/OptionalMap.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Optionals.java b/streams/Optionals.java
index 19331d06f..4d0d96cbd 100644
--- a/streams/Optionals.java
+++ b/streams/Optionals.java
@@ -1,5 +1,5 @@
 // streams/Optionals.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalsFromEmptyStreams.java b/streams/OptionalsFromEmptyStreams.java
index 5a8240ac9..771a84c0b 100644
--- a/streams/OptionalsFromEmptyStreams.java
+++ b/streams/OptionalsFromEmptyStreams.java
@@ -1,5 +1,5 @@
 // streams/OptionalsFromEmptyStreams.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Peeking.java b/streams/Peeking.java
index d3eea20ff..d88005150 100644
--- a/streams/Peeking.java
+++ b/streams/Peeking.java
@@ -1,5 +1,5 @@
 // streams/Peeking.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/streams/Prime.java b/streams/Prime.java
index 6c72b5189..e14459d1a 100644
--- a/streams/Prime.java
+++ b/streams/Prime.java
@@ -1,5 +1,5 @@
 // streams/Prime.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/RandInts.java b/streams/RandInts.java
index 12416ecc5..8adfc60e2 100644
--- a/streams/RandInts.java
+++ b/streams/RandInts.java
@@ -1,5 +1,5 @@
 // streams/RandInts.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package streams;
diff --git a/streams/RandomGenerators.java b/streams/RandomGenerators.java
index e9d75fefa..904216ac6 100644
--- a/streams/RandomGenerators.java
+++ b/streams/RandomGenerators.java
@@ -1,5 +1,5 @@
 // streams/RandomGenerators.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/RandomWords.java b/streams/RandomWords.java
index ee3f83633..3bf2e51bb 100644
--- a/streams/RandomWords.java
+++ b/streams/RandomWords.java
@@ -1,5 +1,5 @@
 // streams/RandomWords.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Randoms.java b/streams/Randoms.java
index bf91ae8d6..f2b5f6a8a 100644
--- a/streams/Randoms.java
+++ b/streams/Randoms.java
@@ -1,5 +1,5 @@
 // streams/Randoms.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Ranges.java b/streams/Ranges.java
index e0aec59c4..d8fc681ac 100644
--- a/streams/Ranges.java
+++ b/streams/Ranges.java
@@ -1,5 +1,5 @@
 // streams/Ranges.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static java.util.stream.IntStream.*;
diff --git a/streams/Reduce.java b/streams/Reduce.java
index 48ba59938..0e9f07ba9 100644
--- a/streams/Reduce.java
+++ b/streams/Reduce.java
@@ -1,5 +1,5 @@
 // streams/Reduce.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/SelectElement.java b/streams/SelectElement.java
index 83a9f5e61..86846e404 100644
--- a/streams/SelectElement.java
+++ b/streams/SelectElement.java
@@ -1,5 +1,5 @@
 // streams/SelectElement.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Signal.java b/streams/Signal.java
index cde125371..9dc2a9f41 100644
--- a/streams/Signal.java
+++ b/streams/Signal.java
@@ -1,5 +1,5 @@
 // streams/Signal.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/SortedComparator.java b/streams/SortedComparator.java
index f0fad0906..070d60a7c 100644
--- a/streams/SortedComparator.java
+++ b/streams/SortedComparator.java
@@ -1,5 +1,5 @@
 // streams/SortedComparator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/SpecialCollector.java b/streams/SpecialCollector.java
index 9261ba0c5..9526a73ea 100644
--- a/streams/SpecialCollector.java
+++ b/streams/SpecialCollector.java
@@ -1,5 +1,5 @@
 // streams/SpecialCollector.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOf.java b/streams/StreamOf.java
index eb38bd8af..c143388a3 100644
--- a/streams/StreamOf.java
+++ b/streams/StreamOf.java
@@ -1,5 +1,5 @@
 // streams/StreamOf.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/StreamOfOptionals.java b/streams/StreamOfOptionals.java
index 643145aab..f725df578 100644
--- a/streams/StreamOfOptionals.java
+++ b/streams/StreamOfOptionals.java
@@ -1,5 +1,5 @@
 // streams/StreamOfOptionals.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOfRandoms.java b/streams/StreamOfRandoms.java
index 7f0f353de..66bf2bc7d 100644
--- a/streams/StreamOfRandoms.java
+++ b/streams/StreamOfRandoms.java
@@ -1,5 +1,5 @@
 // streams/StreamOfRandoms.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOfStreams.java b/streams/StreamOfStreams.java
index daa15806e..973d83a6b 100644
--- a/streams/StreamOfStreams.java
+++ b/streams/StreamOfStreams.java
@@ -1,5 +1,5 @@
 // streams/StreamOfStreams.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/TreeSetOfWords.java b/streams/TreeSetOfWords.java
index 43cb63bd9..feaa56a2a 100644
--- a/streams/TreeSetOfWords.java
+++ b/streams/TreeSetOfWords.java
@@ -1,5 +1,5 @@
 // streams/TreeSetOfWords.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/ArrayListDisplay.java b/strings/ArrayListDisplay.java
index cdbab7708..7b83296f0 100644
--- a/strings/ArrayListDisplay.java
+++ b/strings/ArrayListDisplay.java
@@ -1,5 +1,5 @@
 // strings/ArrayListDisplay.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/BetterRead.java b/strings/BetterRead.java
index a6a5b2c48..a3b7aaa2d 100644
--- a/strings/BetterRead.java
+++ b/strings/BetterRead.java
@@ -1,5 +1,5 @@
 // strings/BetterRead.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Concatenation.java b/strings/Concatenation.java
index b6c01386b..685f4dbb6 100644
--- a/strings/Concatenation.java
+++ b/strings/Concatenation.java
@@ -1,5 +1,5 @@
 // strings/Concatenation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/Conversion.java b/strings/Conversion.java
index 3b4f723b8..f839e81a2 100644
--- a/strings/Conversion.java
+++ b/strings/Conversion.java
@@ -1,5 +1,5 @@
 // strings/Conversion.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.math.*;
diff --git a/strings/DatabaseException.java b/strings/DatabaseException.java
index 136e4188c..e84412546 100644
--- a/strings/DatabaseException.java
+++ b/strings/DatabaseException.java
@@ -1,5 +1,5 @@
 // strings/DatabaseException.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/Finding.java b/strings/Finding.java
index 52dc5c99f..f8d7cbbce 100644
--- a/strings/Finding.java
+++ b/strings/Finding.java
@@ -1,5 +1,5 @@
 // strings/Finding.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Groups.java b/strings/Groups.java
index 22ff08678..298caf627 100644
--- a/strings/Groups.java
+++ b/strings/Groups.java
@@ -1,5 +1,5 @@
 // strings/Groups.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Hex.java b/strings/Hex.java
index c28f95086..0fbcea8e4 100644
--- a/strings/Hex.java
+++ b/strings/Hex.java
@@ -1,5 +1,5 @@
 // strings/Hex.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.Hex}
diff --git a/strings/Immutable.java b/strings/Immutable.java
index 5a7d2a0a1..4c8b529e7 100644
--- a/strings/Immutable.java
+++ b/strings/Immutable.java
@@ -1,5 +1,5 @@
 // strings/Immutable.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/InfiniteRecursion.java b/strings/InfiniteRecursion.java
index 0be8e3843..6941490a5 100644
--- a/strings/InfiniteRecursion.java
+++ b/strings/InfiniteRecursion.java
@@ -1,5 +1,5 @@
 // strings/InfiniteRecursion.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Accidental recursion
diff --git a/strings/IntegerMatch.java b/strings/IntegerMatch.java
index 635339ea6..5a3a38ac8 100644
--- a/strings/IntegerMatch.java
+++ b/strings/IntegerMatch.java
@@ -1,5 +1,5 @@
 // strings/IntegerMatch.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/JGrep.java b/strings/JGrep.java
index 3581edbcb..49cec9547 100644
--- a/strings/JGrep.java
+++ b/strings/JGrep.java
@@ -1,5 +1,5 @@
 // strings/JGrep.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A very simple version of the "grep" program
diff --git a/strings/ReFlags.java b/strings/ReFlags.java
index 7c7123caf..856806eee 100644
--- a/strings/ReFlags.java
+++ b/strings/ReFlags.java
@@ -1,5 +1,5 @@
 // strings/ReFlags.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/ReceiptBuilder.java b/strings/ReceiptBuilder.java
index cc782fac8..234ca1e67 100644
--- a/strings/ReceiptBuilder.java
+++ b/strings/ReceiptBuilder.java
@@ -1,5 +1,5 @@
 // strings/ReceiptBuilder.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Replacing.java b/strings/Replacing.java
index b0e73c980..dbc21afe2 100644
--- a/strings/Replacing.java
+++ b/strings/Replacing.java
@@ -1,5 +1,5 @@
 // strings/Replacing.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/ReplacingStringTokenizer.java b/strings/ReplacingStringTokenizer.java
index c6a168db0..60fad1848 100644
--- a/strings/ReplacingStringTokenizer.java
+++ b/strings/ReplacingStringTokenizer.java
@@ -1,5 +1,5 @@
 // strings/ReplacingStringTokenizer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Resetting.java b/strings/Resetting.java
index fc79a0381..f15653903 100644
--- a/strings/Resetting.java
+++ b/strings/Resetting.java
@@ -1,5 +1,5 @@
 // strings/Resetting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Rudolph.java b/strings/Rudolph.java
index 22504fba8..7a338510a 100644
--- a/strings/Rudolph.java
+++ b/strings/Rudolph.java
@@ -1,5 +1,5 @@
 // strings/Rudolph.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/ScannerDelimiter.java b/strings/ScannerDelimiter.java
index 7ba644c79..a06ed990d 100644
--- a/strings/ScannerDelimiter.java
+++ b/strings/ScannerDelimiter.java
@@ -1,5 +1,5 @@
 // strings/ScannerDelimiter.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/SimpleFormat.java b/strings/SimpleFormat.java
index 0a6bafdba..a3a6e52fe 100644
--- a/strings/SimpleFormat.java
+++ b/strings/SimpleFormat.java
@@ -1,5 +1,5 @@
 // strings/SimpleFormat.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/SimpleRead.java b/strings/SimpleRead.java
index ee3e277fb..e85a058a5 100644
--- a/strings/SimpleRead.java
+++ b/strings/SimpleRead.java
@@ -1,5 +1,5 @@
 // strings/SimpleRead.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/strings/SplitDemo.java b/strings/SplitDemo.java
index 3f6788ea8..657453922 100644
--- a/strings/SplitDemo.java
+++ b/strings/SplitDemo.java
@@ -1,5 +1,5 @@
 // strings/SplitDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Splitting.java b/strings/Splitting.java
index e81bbc8c2..0afe3a402 100644
--- a/strings/Splitting.java
+++ b/strings/Splitting.java
@@ -1,5 +1,5 @@
 // strings/Splitting.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/StartEnd.java b/strings/StartEnd.java
index ebf985ee4..03caf520c 100644
--- a/strings/StartEnd.java
+++ b/strings/StartEnd.java
@@ -1,5 +1,5 @@
 // strings/StartEnd.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/TestRegularExpression.java b/strings/TestRegularExpression.java
index a7adafbc1..fe79ce8b2 100644
--- a/strings/TestRegularExpression.java
+++ b/strings/TestRegularExpression.java
@@ -1,5 +1,5 @@
 // strings/TestRegularExpression.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple regular expression demonstration
diff --git a/strings/TheReplacements.java b/strings/TheReplacements.java
index c3be94b65..2319552fe 100644
--- a/strings/TheReplacements.java
+++ b/strings/TheReplacements.java
@@ -1,5 +1,5 @@
 // strings/TheReplacements.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/ThreatAnalyzer.java b/strings/ThreatAnalyzer.java
index 11712f5e4..fc145c86e 100644
--- a/strings/ThreatAnalyzer.java
+++ b/strings/ThreatAnalyzer.java
@@ -1,5 +1,5 @@
 // strings/ThreatAnalyzer.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Turtle.java b/strings/Turtle.java
index edbebfeb4..68977bfc2 100644
--- a/strings/Turtle.java
+++ b/strings/Turtle.java
@@ -1,5 +1,5 @@
 // strings/Turtle.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/strings/UsingStringBuilder.java b/strings/UsingStringBuilder.java
index 342c6426f..0ff324102 100644
--- a/strings/UsingStringBuilder.java
+++ b/strings/UsingStringBuilder.java
@@ -1,5 +1,5 @@
 // strings/UsingStringBuilder.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/WhitherStringBuilder.java b/strings/WhitherStringBuilder.java
index 59cf3952f..0c46cae3b 100644
--- a/strings/WhitherStringBuilder.java
+++ b/strings/WhitherStringBuilder.java
@@ -1,5 +1,5 @@
 // strings/WhitherStringBuilder.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/AnonymousImplementation.java b/typeinfo/AnonymousImplementation.java
index 5c4a2518c..34fa7832c 100644
--- a/typeinfo/AnonymousImplementation.java
+++ b/typeinfo/AnonymousImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/AnonymousImplementation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Anonymous inner classes can't hide from reflection
diff --git a/typeinfo/BoundedClassReferences.java b/typeinfo/BoundedClassReferences.java
index ace4a4691..ed0945e60 100644
--- a/typeinfo/BoundedClassReferences.java
+++ b/typeinfo/BoundedClassReferences.java
@@ -1,5 +1,5 @@
 // typeinfo/BoundedClassReferences.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/ClassCasts.java b/typeinfo/ClassCasts.java
index a44573d5e..fd0e17cf6 100644
--- a/typeinfo/ClassCasts.java
+++ b/typeinfo/ClassCasts.java
@@ -1,5 +1,5 @@
 // typeinfo/ClassCasts.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/ClassInitialization.java b/typeinfo/ClassInitialization.java
index 262649372..ba1d50e81 100644
--- a/typeinfo/ClassInitialization.java
+++ b/typeinfo/ClassInitialization.java
@@ -1,5 +1,5 @@
 // typeinfo/ClassInitialization.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/typeinfo/DynamicSupplier.java b/typeinfo/DynamicSupplier.java
index 86e47ddf1..bdde8c133 100644
--- a/typeinfo/DynamicSupplier.java
+++ b/typeinfo/DynamicSupplier.java
@@ -1,5 +1,5 @@
 // typeinfo/DynamicSupplier.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/typeinfo/FamilyVsExactType.java b/typeinfo/FamilyVsExactType.java
index 9fdfd25e2..5981bbe63 100644
--- a/typeinfo/FamilyVsExactType.java
+++ b/typeinfo/FamilyVsExactType.java
@@ -1,5 +1,5 @@
 // typeinfo/FamilyVsExactType.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The difference between instanceof and class
diff --git a/typeinfo/GenericClassReferences.java b/typeinfo/GenericClassReferences.java
index b75f853f8..81ba7f7d0 100644
--- a/typeinfo/GenericClassReferences.java
+++ b/typeinfo/GenericClassReferences.java
@@ -1,5 +1,5 @@
 // typeinfo/GenericClassReferences.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/HiddenImplementation.java b/typeinfo/HiddenImplementation.java
index 8b23d97d7..7b41f6575 100644
--- a/typeinfo/HiddenImplementation.java
+++ b/typeinfo/HiddenImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/HiddenImplementation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sneaking around package hiding
diff --git a/typeinfo/InnerImplementation.java b/typeinfo/InnerImplementation.java
index d9b9202c2..2b6541fa5 100644
--- a/typeinfo/InnerImplementation.java
+++ b/typeinfo/InnerImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/InnerImplementation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Private inner classes can't hide from reflection
diff --git a/typeinfo/InterfaceViolation.java b/typeinfo/InterfaceViolation.java
index 0adfba652..06b13f65c 100644
--- a/typeinfo/InterfaceViolation.java
+++ b/typeinfo/InterfaceViolation.java
@@ -1,5 +1,5 @@
 // typeinfo/InterfaceViolation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sneaking around an interface
diff --git a/typeinfo/ModifyingPrivateFields.java b/typeinfo/ModifyingPrivateFields.java
index 5f1baf11c..fa1a175d8 100644
--- a/typeinfo/ModifyingPrivateFields.java
+++ b/typeinfo/ModifyingPrivateFields.java
@@ -1,5 +1,5 @@
 // typeinfo/ModifyingPrivateFields.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
diff --git a/typeinfo/NullRobot.java b/typeinfo/NullRobot.java
index 45380aa59..d174ca946 100644
--- a/typeinfo/NullRobot.java
+++ b/typeinfo/NullRobot.java
@@ -1,5 +1,5 @@
 // typeinfo/NullRobot.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using a dynamic proxy to create an Optional
diff --git a/typeinfo/Operation.java b/typeinfo/Operation.java
index 2393d2365..dc8722301 100644
--- a/typeinfo/Operation.java
+++ b/typeinfo/Operation.java
@@ -1,5 +1,5 @@
 // typeinfo/Operation.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/typeinfo/Person.java b/typeinfo/Person.java
index 9c6a9657b..7a9807c0c 100644
--- a/typeinfo/Person.java
+++ b/typeinfo/Person.java
@@ -1,5 +1,5 @@
 // typeinfo/Person.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Optional with regular classes
diff --git a/typeinfo/PetCount.java b/typeinfo/PetCount.java
index 1f43267f4..53438d29a 100644
--- a/typeinfo/PetCount.java
+++ b/typeinfo/PetCount.java
@@ -1,5 +1,5 @@
 // typeinfo/PetCount.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using instanceof
diff --git a/typeinfo/PetCount2.java b/typeinfo/PetCount2.java
index 1e5ef4d70..c65e01388 100644
--- a/typeinfo/PetCount2.java
+++ b/typeinfo/PetCount2.java
@@ -1,5 +1,5 @@
 // typeinfo/PetCount2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
diff --git a/typeinfo/PetCount3.java b/typeinfo/PetCount3.java
index 87635bb08..5b08fb660 100644
--- a/typeinfo/PetCount3.java
+++ b/typeinfo/PetCount3.java
@@ -1,5 +1,5 @@
 // typeinfo/PetCount3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using isInstance()
diff --git a/typeinfo/PetCount4.java b/typeinfo/PetCount4.java
index ab18aee05..1ea4873ac 100644
--- a/typeinfo/PetCount4.java
+++ b/typeinfo/PetCount4.java
@@ -1,5 +1,5 @@
 // typeinfo/PetCount4.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
diff --git a/typeinfo/Position.java b/typeinfo/Position.java
index 1912bb956..ca81643b0 100644
--- a/typeinfo/Position.java
+++ b/typeinfo/Position.java
@@ -1,5 +1,5 @@
 // typeinfo/Position.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/typeinfo/RegisteredFactories.java b/typeinfo/RegisteredFactories.java
index 358bba1a7..7708cc4ee 100644
--- a/typeinfo/RegisteredFactories.java
+++ b/typeinfo/RegisteredFactories.java
@@ -1,5 +1,5 @@
 // typeinfo/RegisteredFactories.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Registering Factories in the base class
diff --git a/typeinfo/Robot.java b/typeinfo/Robot.java
index f3c8d0534..803ee9fe2 100644
--- a/typeinfo/Robot.java
+++ b/typeinfo/Robot.java
@@ -1,5 +1,5 @@
 // typeinfo/Robot.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/typeinfo/SelectingMethods.java b/typeinfo/SelectingMethods.java
index 14c8058ab..d87e928bc 100644
--- a/typeinfo/SelectingMethods.java
+++ b/typeinfo/SelectingMethods.java
@@ -1,5 +1,5 @@
 // typeinfo/SelectingMethods.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Looking for particular methods in a dynamic proxy
diff --git a/typeinfo/Shapes.java b/typeinfo/Shapes.java
index 9af68532d..34a2bc561 100644
--- a/typeinfo/Shapes.java
+++ b/typeinfo/Shapes.java
@@ -1,5 +1,5 @@
 // typeinfo/Shapes.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/typeinfo/ShowMethods.java b/typeinfo/ShowMethods.java
index 91aef15a8..be1b635b0 100644
--- a/typeinfo/ShowMethods.java
+++ b/typeinfo/ShowMethods.java
@@ -1,5 +1,5 @@
 // typeinfo/ShowMethods.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using reflection to show all the methods of a class,
diff --git a/typeinfo/SimpleDynamicProxy.java b/typeinfo/SimpleDynamicProxy.java
index 041c13806..bece57f8a 100644
--- a/typeinfo/SimpleDynamicProxy.java
+++ b/typeinfo/SimpleDynamicProxy.java
@@ -1,5 +1,5 @@
 // typeinfo/SimpleDynamicProxy.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
diff --git a/typeinfo/SimpleProxyDemo.java b/typeinfo/SimpleProxyDemo.java
index 4ea8fea3d..24c3c2c25 100644
--- a/typeinfo/SimpleProxyDemo.java
+++ b/typeinfo/SimpleProxyDemo.java
@@ -1,5 +1,5 @@
 // typeinfo/SimpleProxyDemo.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/SnowRemovalRobot.java b/typeinfo/SnowRemovalRobot.java
index 0f3b4c0bf..af5b46cd9 100644
--- a/typeinfo/SnowRemovalRobot.java
+++ b/typeinfo/SnowRemovalRobot.java
@@ -1,5 +1,5 @@
 // typeinfo/SnowRemovalRobot.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/typeinfo/Staff.java b/typeinfo/Staff.java
index 4d864e1df..569e598f7 100644
--- a/typeinfo/Staff.java
+++ b/typeinfo/Staff.java
@@ -1,5 +1,5 @@
 // typeinfo/Staff.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/typeinfo/SweetShop.java b/typeinfo/SweetShop.java
index a1000ea3f..f85b8c3f9 100644
--- a/typeinfo/SweetShop.java
+++ b/typeinfo/SweetShop.java
@@ -1,5 +1,5 @@
 // typeinfo/SweetShop.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Examination of the way the class loader works
diff --git a/typeinfo/WildcardClassReferences.java b/typeinfo/WildcardClassReferences.java
index 9a35b6e54..32d75e868 100644
--- a/typeinfo/WildcardClassReferences.java
+++ b/typeinfo/WildcardClassReferences.java
@@ -1,5 +1,5 @@
 // typeinfo/WildcardClassReferences.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/interfacea/A.java b/typeinfo/interfacea/A.java
index 565a4a74d..2ebb99d32 100644
--- a/typeinfo/interfacea/A.java
+++ b/typeinfo/interfacea/A.java
@@ -1,5 +1,5 @@
 // typeinfo/interfacea/A.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.interfacea;
diff --git a/typeinfo/packageaccess/HiddenC.java b/typeinfo/packageaccess/HiddenC.java
index 80938a066..9fb8ffde9 100644
--- a/typeinfo/packageaccess/HiddenC.java
+++ b/typeinfo/packageaccess/HiddenC.java
@@ -1,5 +1,5 @@
 // typeinfo/packageaccess/HiddenC.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.packageaccess;
diff --git a/typeinfo/pets/Cat.java b/typeinfo/pets/Cat.java
index f1bfdc0ea..75781fd7f 100644
--- a/typeinfo/pets/Cat.java
+++ b/typeinfo/pets/Cat.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Cat.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Cymric.java b/typeinfo/pets/Cymric.java
index c6f0a59ca..fd86fa953 100644
--- a/typeinfo/pets/Cymric.java
+++ b/typeinfo/pets/Cymric.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Cymric.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Dog.java b/typeinfo/pets/Dog.java
index 0f1144a08..68f43a322 100644
--- a/typeinfo/pets/Dog.java
+++ b/typeinfo/pets/Dog.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Dog.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/EgyptianMau.java b/typeinfo/pets/EgyptianMau.java
index 243294678..adbdfbb18 100644
--- a/typeinfo/pets/EgyptianMau.java
+++ b/typeinfo/pets/EgyptianMau.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/EgyptianMau.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/ForNameCreator.java b/typeinfo/pets/ForNameCreator.java
index e3bb51c77..29351efa0 100644
--- a/typeinfo/pets/ForNameCreator.java
+++ b/typeinfo/pets/ForNameCreator.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/ForNameCreator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Hamster.java b/typeinfo/pets/Hamster.java
index f2cc83799..8408ef623 100644
--- a/typeinfo/pets/Hamster.java
+++ b/typeinfo/pets/Hamster.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Hamster.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Individual.java b/typeinfo/pets/Individual.java
index f7e7d204b..e3c87dacb 100644
--- a/typeinfo/pets/Individual.java
+++ b/typeinfo/pets/Individual.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Individual.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/LiteralPetCreator.java b/typeinfo/pets/LiteralPetCreator.java
index dd32d7ea3..398baac8c 100644
--- a/typeinfo/pets/LiteralPetCreator.java
+++ b/typeinfo/pets/LiteralPetCreator.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/LiteralPetCreator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using class literals
diff --git a/typeinfo/pets/Manx.java b/typeinfo/pets/Manx.java
index b7771c7cc..6a5534b13 100644
--- a/typeinfo/pets/Manx.java
+++ b/typeinfo/pets/Manx.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Manx.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Mouse.java b/typeinfo/pets/Mouse.java
index 6d267cdbb..bbb97cda0 100644
--- a/typeinfo/pets/Mouse.java
+++ b/typeinfo/pets/Mouse.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Mouse.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Mutt.java b/typeinfo/pets/Mutt.java
index 7c41712bc..f51814b93 100644
--- a/typeinfo/pets/Mutt.java
+++ b/typeinfo/pets/Mutt.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Mutt.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Person.java b/typeinfo/pets/Person.java
index 1a6532667..4dcfff2ce 100644
--- a/typeinfo/pets/Person.java
+++ b/typeinfo/pets/Person.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Person.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Pet.java b/typeinfo/pets/Pet.java
index 282418f8c..dcbfd4ab7 100644
--- a/typeinfo/pets/Pet.java
+++ b/typeinfo/pets/Pet.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Pet.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/PetCreator.java b/typeinfo/pets/PetCreator.java
index 99431c3cd..5feb09405 100644
--- a/typeinfo/pets/PetCreator.java
+++ b/typeinfo/pets/PetCreator.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/PetCreator.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creates random sequences of Pets
diff --git a/typeinfo/pets/Pets.java b/typeinfo/pets/Pets.java
index f99847b16..be3037a16 100644
--- a/typeinfo/pets/Pets.java
+++ b/typeinfo/pets/Pets.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Pets.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Facade to produce a default PetCreator
diff --git a/typeinfo/pets/Pug.java b/typeinfo/pets/Pug.java
index 9be1d2e9a..9d8ab4670 100644
--- a/typeinfo/pets/Pug.java
+++ b/typeinfo/pets/Pug.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Pug.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Rat.java b/typeinfo/pets/Rat.java
index 099127e01..2ce5534b8 100644
--- a/typeinfo/pets/Rat.java
+++ b/typeinfo/pets/Rat.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Rat.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Rodent.java b/typeinfo/pets/Rodent.java
index 32483bc00..7b998d0aa 100644
--- a/typeinfo/pets/Rodent.java
+++ b/typeinfo/pets/Rodent.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Rodent.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/toys/GenericToyTest.java b/typeinfo/toys/GenericToyTest.java
index c0ae10669..aece7958f 100644
--- a/typeinfo/toys/GenericToyTest.java
+++ b/typeinfo/toys/GenericToyTest.java
@@ -1,5 +1,5 @@
 // typeinfo/toys/GenericToyTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Testing class Class
diff --git a/typeinfo/toys/ToyTest.java b/typeinfo/toys/ToyTest.java
index b1ff8ba90..39d637c79 100644
--- a/typeinfo/toys/ToyTest.java
+++ b/typeinfo/toys/ToyTest.java
@@ -1,5 +1,5 @@
 // typeinfo/toys/ToyTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Testing class Class
diff --git a/validating/Assert1.java b/validating/Assert1.java
index 5527225e7..013a72f6f 100644
--- a/validating/Assert1.java
+++ b/validating/Assert1.java
@@ -1,5 +1,5 @@
 // validating/Assert1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Non-informative style of assert
diff --git a/validating/Assert2.java b/validating/Assert2.java
index 684f97b22..61b4827d7 100644
--- a/validating/Assert2.java
+++ b/validating/Assert2.java
@@ -1,5 +1,5 @@
 // validating/Assert2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assert with an information-expression
diff --git a/validating/BadMicroBenchmark.java b/validating/BadMicroBenchmark.java
index ecc774ada..2634e67c9 100644
--- a/validating/BadMicroBenchmark.java
+++ b/validating/BadMicroBenchmark.java
@@ -1,5 +1,5 @@
 // validating/BadMicroBenchmark.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
diff --git a/validating/BadMicroBenchmark2.java b/validating/BadMicroBenchmark2.java
index fd840ddaf..123036a0c 100644
--- a/validating/BadMicroBenchmark2.java
+++ b/validating/BadMicroBenchmark2.java
@@ -1,5 +1,5 @@
 // validating/BadMicroBenchmark2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Relying on a common resource
diff --git a/validating/CircularQueue.java b/validating/CircularQueue.java
index bd5166ad1..405e44101 100644
--- a/validating/CircularQueue.java
+++ b/validating/CircularQueue.java
@@ -1,5 +1,5 @@
 // validating/CircularQueue.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Design by Contract (DbC)
diff --git a/validating/CircularQueueException.java b/validating/CircularQueueException.java
index 056123442..142b8ece2 100644
--- a/validating/CircularQueueException.java
+++ b/validating/CircularQueueException.java
@@ -1,5 +1,5 @@
 // validating/CircularQueueException.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/CountedList.java b/validating/CountedList.java
index e33e13b03..6c780f216 100644
--- a/validating/CountedList.java
+++ b/validating/CountedList.java
@@ -1,5 +1,5 @@
 // validating/CountedList.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Keeps track of how many of itself are created.
diff --git a/validating/GuavaAssertions.java b/validating/GuavaAssertions.java
index 38fcb444d..a499f079b 100644
--- a/validating/GuavaAssertions.java
+++ b/validating/GuavaAssertions.java
@@ -1,5 +1,5 @@
 // validating/GuavaAssertions.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assertions that are always enabled.
diff --git a/validating/GuavaPreconditions.java b/validating/GuavaPreconditions.java
index 752fe6af7..3cfc66ae9 100644
--- a/validating/GuavaPreconditions.java
+++ b/validating/GuavaPreconditions.java
@@ -1,5 +1,5 @@
 // validating/GuavaPreconditions.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating Guava Preconditions
diff --git a/validating/Inverter1.java b/validating/Inverter1.java
index 9c8a54630..8ef828d6e 100644
--- a/validating/Inverter1.java
+++ b/validating/Inverter1.java
@@ -1,5 +1,5 @@
 // validating/Inverter1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/Inverter2.java b/validating/Inverter2.java
index b1ae74835..3fb862fd4 100644
--- a/validating/Inverter2.java
+++ b/validating/Inverter2.java
@@ -1,5 +1,5 @@
 // validating/Inverter2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/Inverter3.java b/validating/Inverter3.java
index f7c4bd14e..4bd53c82a 100644
--- a/validating/Inverter3.java
+++ b/validating/Inverter3.java
@@ -1,5 +1,5 @@
 // validating/Inverter3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/Inverter4.java b/validating/Inverter4.java
index ffd24b8f9..0b7870594 100644
--- a/validating/Inverter4.java
+++ b/validating/Inverter4.java
@@ -1,5 +1,5 @@
 // validating/Inverter4.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/LoaderAssertions.java b/validating/LoaderAssertions.java
index c15ac97e3..52cac3471 100644
--- a/validating/LoaderAssertions.java
+++ b/validating/LoaderAssertions.java
@@ -1,5 +1,5 @@
 // validating/LoaderAssertions.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the class loader to enable assertions
diff --git a/validating/NonNullConstruction.java b/validating/NonNullConstruction.java
index b75ef2433..a95483dd4 100644
--- a/validating/NonNullConstruction.java
+++ b/validating/NonNullConstruction.java
@@ -1,5 +1,5 @@
 // validating/NonNullConstruction.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static com.google.common.base.Preconditions.*;
diff --git a/validating/SLF4JLevels.java b/validating/SLF4JLevels.java
index 8100bd6d6..c851e7c31 100644
--- a/validating/SLF4JLevels.java
+++ b/validating/SLF4JLevels.java
@@ -1,5 +1,5 @@
 // validating/SLF4JLevels.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import org.slf4j.*;
diff --git a/validating/SLF4JLogging.java b/validating/SLF4JLogging.java
index 1c124a136..f2e94d6e5 100644
--- a/validating/SLF4JLogging.java
+++ b/validating/SLF4JLogging.java
@@ -1,5 +1,5 @@
 // validating/SLF4JLogging.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import org.slf4j.*;
diff --git a/validating/SimpleDebugging.java b/validating/SimpleDebugging.java
index 62766283f..863e7de39 100644
--- a/validating/SimpleDebugging.java
+++ b/validating/SimpleDebugging.java
@@ -1,5 +1,5 @@
 // validating/SimpleDebugging.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
diff --git a/validating/StringInverter.java b/validating/StringInverter.java
index 3ef11e8ca..34c933a73 100644
--- a/validating/StringInverter.java
+++ b/validating/StringInverter.java
@@ -1,5 +1,5 @@
 // validating/StringInverter.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/jmh/JMH1.java b/validating/jmh/JMH1.java
index b1767a77b..79eb749ab 100644
--- a/validating/jmh/JMH1.java
+++ b/validating/jmh/JMH1.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH1.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/jmh/JMH2.java b/validating/jmh/JMH2.java
index e119f1b51..ae7b56f9d 100644
--- a/validating/jmh/JMH2.java
+++ b/validating/jmh/JMH2.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH2.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/jmh/JMH3.java b/validating/jmh/JMH3.java
index ffb46ffe0..8ce9bb0c1 100644
--- a/validating/jmh/JMH3.java
+++ b/validating/jmh/JMH3.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH3.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/tests/CircularQueueTest.java b/validating/tests/CircularQueueTest.java
index 37c45fa35..8da6dc276 100644
--- a/validating/tests/CircularQueueTest.java
+++ b/validating/tests/CircularQueueTest.java
@@ -1,5 +1,5 @@
 // validating/tests/CircularQueueTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/tests/CountedListTest.java b/validating/tests/CountedListTest.java
index d852485ca..a9dc0c717 100644
--- a/validating/tests/CountedListTest.java
+++ b/validating/tests/CountedListTest.java
@@ -1,5 +1,5 @@
 // validating/tests/CountedListTest.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple use of JUnit to test CountedList.
diff --git a/validating/tests/DynamicStringInverterTests.java b/validating/tests/DynamicStringInverterTests.java
index 329ae6320..dc980971a 100644
--- a/validating/tests/DynamicStringInverterTests.java
+++ b/validating/tests/DynamicStringInverterTests.java
@@ -1,5 +1,5 @@
 // validating/tests/DynamicStringInverterTests.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/tests/StringInverterTests.java b/validating/tests/StringInverterTests.java
index 817253731..e32873b87 100644
--- a/validating/tests/StringInverterTests.java
+++ b/validating/tests/StringInverterTests.java
@@ -1,5 +1,5 @@
 // validating/tests/StringInverterTests.java
-// (c)2017 MindView LLC: see Copyright.txt
+// (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;

From f07d93d8e5756faca91a6f7273d57e586873b245 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 7 Oct 2020 14:16:29 -0600
Subject: [PATCH 13/46] Fixes so it runs OK under WSL2

---
 newio/MappedIO.java       | 1 +
 patterns/BoxObserver.java | 7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/newio/MappedIO.java b/newio/MappedIO.java
index 82f3cca7c..93b4ddf3a 100644
--- a/newio/MappedIO.java
+++ b/newio/MappedIO.java
@@ -2,6 +2,7 @@
 // (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
+// {ExcludeFromGradle} Runs too long under WSL2
 import java.util.*;
 import java.nio.*;
 import java.nio.channels.*;
diff --git a/patterns/BoxObserver.java b/patterns/BoxObserver.java
index 355c4086e..cb7e97d47 100644
--- a/patterns/BoxObserver.java
+++ b/patterns/BoxObserver.java
@@ -3,8 +3,8 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Observer pattern using
-// Java's built-in observer classes
-// {ExcludeFromTravisCI}
+// Java's built-in observer classes.
+// {ExcludeFromGradle} // Won't work under WSL2
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
@@ -33,7 +33,8 @@ public BoxObserver(int grid) {
         cp.add(new OCBox(x, y, notifier));
   }
   public static void main(String[] args) {
-    new TimedAbort(4);
+    // For automated test runs:
+    // new TimedAbort(4);
     int grid = 8;
     if(args.length > 0)
       grid = Integer.parseInt(args[0]);

From 8bfc28c687e7a9653ef96221ece54c94af8988ff Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 7 Oct 2020 14:58:30 -0600
Subject: [PATCH 14/46] Exclusions to make build work with Java 9

---
 enums/NotClasses.java         | 3 ++-
 lowlevel/NotAtomic.java       | 3 ++-
 standardio/OSExecuteDemo.java | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/enums/NotClasses.java b/enums/NotClasses.java
index 8e0c941f8..681e807d3 100644
--- a/enums/NotClasses.java
+++ b/enums/NotClasses.java
@@ -2,7 +2,8 @@
 // (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// {javap -c LikeClasses}
+// {ExcludeFromGradle}
+// javap -c LikeClasses
 
 enum LikeClasses {
   WINKEN {
diff --git a/lowlevel/NotAtomic.java b/lowlevel/NotAtomic.java
index e07954510..c6c6c3211 100644
--- a/lowlevel/NotAtomic.java
+++ b/lowlevel/NotAtomic.java
@@ -2,7 +2,8 @@
 // (c)2020 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// {javap -c NotAtomic}
+// javap -c NotAtomic
+// {ExcludeFromGradle}
 // {VisuallyInspectOutput}
 
 public class NotAtomic {
diff --git a/standardio/OSExecuteDemo.java b/standardio/OSExecuteDemo.java
index 9ce8c8ef2..cc2fd4b04 100644
--- a/standardio/OSExecuteDemo.java
+++ b/standardio/OSExecuteDemo.java
@@ -3,7 +3,8 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates standard I/O redirection
-// {javap -cp build/classes/java/main OSExecuteDemo}
+// javap -cp build/classes/java/main OSExecuteDemo
+// {ExcludeFromGradle}
 import onjava.*;
 
 public class OSExecuteDemo {}

From be5962bc227dda8db15465559ccd26733f095d5c Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 7 Oct 2020 15:10:21 -0600
Subject: [PATCH 15/46] Update build.gradle

So 'gradlew build' works
---
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index 5349c1480..b4feb13d5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,7 @@ subprojects {
     apply from: "$rootProject.projectDir/gradle/java.gradle"
     apply from: "$rootProject.projectDir/gradle/junit-jupiter.gradle"
     apply from: "$rootProject.projectDir/gradle/jmh.gradle"
-    apply from: "$rootProject.projectDir/gradle/checkstyle.gradle"
+    // apply from: "$rootProject.projectDir/gradle/checkstyle.gradle"
     apply from: "$rootProject.projectDir/gradle/findbugs.gradle"
     apply plugin: 'com.mindviewinc.tagging'
 }

From 185255634d71344c6099cf482e789e8da99d6ac0 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 7 Oct 2020 17:06:42 -0600
Subject: [PATCH 16/46] Builds and runs with JDK9

---
 collectiontopics/CanonicalMapping.java |  1 +
 collectiontopics/References.java       |  1 +
 collectiontopics/SetOrder.java         |  2 +-
 generics/DynamicProxyMixin.java        |  1 +
 generics/InstantiateGenericType.java   |  5 +++--
 generics/coffee/CoffeeSupplier.java    | 10 +++++++---
 housekeeping/TerminationCondition.java |  1 +
 onjava/BasicSupplier.java              |  5 ++++-
 onjava/atunit/AtUnit.java              |  5 ++++-
 patterns/BoxObserver.java              |  3 +++
 patterns/ShapeFactory2.java            |  4 +---
 patterns/observer/ObservedFlower.java  |  3 +++
 patterns/trash/Trash.java              |  3 ++-
 references/ImmutableInteger.java       |  1 +
 typeinfo/DynamicSupplier.java          |  5 ++---
 typeinfo/pets/PetCreator.java          |  6 +++++-
 typeinfo/toys/GenericToyTest.java      |  1 +
 typeinfo/toys/ToyTest.java             | 11 +++++------
 18 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/collectiontopics/CanonicalMapping.java b/collectiontopics/CanonicalMapping.java
index 7ad7eb29e..c02f9132a 100644
--- a/collectiontopics/CanonicalMapping.java
+++ b/collectiontopics/CanonicalMapping.java
@@ -19,6 +19,7 @@ public boolean equals(Object r) {
     return r instanceof Element &&
       Objects.equals(ident, ((Element)r).ident);
   }
+  @SuppressWarnings("deprecation")
   @Override
   protected void finalize() {
     System.out.println("Finalizing " +
diff --git a/collectiontopics/References.java b/collectiontopics/References.java
index ca505606a..5fcca9404 100644
--- a/collectiontopics/References.java
+++ b/collectiontopics/References.java
@@ -13,6 +13,7 @@ class VeryBig {
   VeryBig(String id) { ident = id; }
   @Override
   public String toString() { return ident; }
+  @SuppressWarnings("deprecation")
   @Override
   protected void finalize() {
     System.out.println("Finalizing " + ident);
diff --git a/collectiontopics/SetOrder.java b/collectiontopics/SetOrder.java
index 543db94c2..1c25be238 100644
--- a/collectiontopics/SetOrder.java
+++ b/collectiontopics/SetOrder.java
@@ -23,7 +23,7 @@ public class SetOrder {
     for(String type: sets) {
       System.out.format("[-> %s <-]%n",
         type.substring(type.lastIndexOf('.') + 1));
-      @SuppressWarnings("unchecked")
+      @SuppressWarnings({"unchecked", "deprecation"})
       Set set = (Set)
         Class.forName(type).newInstance();
       set.addAll(RLIST);
diff --git a/generics/DynamicProxyMixin.java b/generics/DynamicProxyMixin.java
index 008efb12a..38431e31d 100644
--- a/generics/DynamicProxyMixin.java
+++ b/generics/DynamicProxyMixin.java
@@ -44,6 +44,7 @@ public static Object newInstance(Tuple2... pairs) {
 
 public class DynamicProxyMixin {
   public static void main(String[] args) {
+    @SuppressWarnings("unchecked")
     Object mixin = MixinProxy.newInstance(
       tuple(new BasicImp(), Basic.class),
       tuple(new TimeStampedImp(), TimeStamped.class),
diff --git a/generics/InstantiateGenericType.java b/generics/InstantiateGenericType.java
index 5bd42e84f..9424c9a1d 100644
--- a/generics/InstantiateGenericType.java
+++ b/generics/InstantiateGenericType.java
@@ -3,18 +3,19 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
+import java.lang.reflect.InvocationTargetException;
 
 class ClassAsFactory implements Supplier {
   Class kind;
   ClassAsFactory(Class kind) {
     this.kind = kind;
   }
+  @SuppressWarnings("deprecation")
   @Override
   public T get() {
     try {
       return kind.newInstance();
-    } catch(InstantiationException |
-            IllegalAccessException e) {
+    } catch(Exception e) {
       throw new RuntimeException(e);
     }
   }
diff --git a/generics/coffee/CoffeeSupplier.java b/generics/coffee/CoffeeSupplier.java
index 8973dfbc1..fe5dced89 100644
--- a/generics/coffee/CoffeeSupplier.java
+++ b/generics/coffee/CoffeeSupplier.java
@@ -7,6 +7,7 @@
 import java.util.*;
 import java.util.function.*;
 import java.util.stream.*;
+import java.lang.reflect.InvocationTargetException;
 
 public class CoffeeSupplier
 implements Supplier, Iterable {
@@ -21,10 +22,13 @@ public CoffeeSupplier() {}
   public Coffee get() {
     try {
       return (Coffee)
-        types[rand.nextInt(types.length)].newInstance();
+        types[rand.nextInt(types.length)]
+        .getConstructor().newInstance();
       // Report programmer errors at run time:
-    } catch(InstantiationException |
-            IllegalAccessException e) {
+      } catch(InstantiationException |
+              NoSuchMethodException |
+              InvocationTargetException |
+              IllegalAccessException e) {
       throw new RuntimeException(e);
     }
   }
diff --git a/housekeeping/TerminationCondition.java b/housekeeping/TerminationCondition.java
index 393540ac0..dc8d347b8 100644
--- a/housekeeping/TerminationCondition.java
+++ b/housekeeping/TerminationCondition.java
@@ -14,6 +14,7 @@ class Book {
   void checkIn() {
     checkedOut = false;
   }
+  @SuppressWarnings("deprecation")
   @Override
   public void finalize() {
     if(checkedOut)
diff --git a/onjava/BasicSupplier.java b/onjava/BasicSupplier.java
index 377d74d18..d4bf3b3d8 100644
--- a/onjava/BasicSupplier.java
+++ b/onjava/BasicSupplier.java
@@ -5,6 +5,7 @@
 // Supplier from a class with a no-arg constructor
 package onjava;
 import java.util.function.*;
+import java.lang.reflect.InvocationTargetException;
 
 public class BasicSupplier implements Supplier {
   private Class type;
@@ -15,8 +16,10 @@ public BasicSupplier(Class type) {
   public T get() {
     try {
       // Assumes type is a public class:
-      return type.newInstance();
+      return type.getConstructor().newInstance();
     } catch(InstantiationException |
+            NoSuchMethodException |
+            InvocationTargetException |
             IllegalAccessException e) {
       throw new RuntimeException(e);
     }
diff --git a/onjava/atunit/AtUnit.java b/onjava/atunit/AtUnit.java
index a6c621277..b1688cbda 100644
--- a/onjava/atunit/AtUnit.java
+++ b/onjava/atunit/AtUnit.java
@@ -162,8 +162,11 @@ Method checkForCleanupMethod(Method m) {
       }
     } else { // Use the no-arg constructor:
       try {
-        return testClass.newInstance();
+        return testClass
+          .getConstructor().newInstance();
       } catch(InstantiationException |
+              NoSuchMethodException |
+              InvocationTargetException |
               IllegalAccessException e) {
         throw new RuntimeException(
           "Couldn't create a test object. " +
diff --git a/patterns/BoxObserver.java b/patterns/BoxObserver.java
index cb7e97d47..c6f9ec65d 100644
--- a/patterns/BoxObserver.java
+++ b/patterns/BoxObserver.java
@@ -13,6 +13,7 @@
 import onjava.MouseClick;
 
 // You must inherit a new type of Observable:
+@SuppressWarnings("deprecation")
 class BoxObservable extends Observable {
   @Override
   public void notifyObservers(Object b) {
@@ -22,6 +23,7 @@ public void notifyObservers(Object b) {
   }
 }
 
+@SuppressWarnings("deprecation")
 public class BoxObserver extends JFrame {
   Observable notifier = new BoxObservable();
   public BoxObserver(int grid) {
@@ -45,6 +47,7 @@ public static void main(String[] args) {
   }
 }
 
+@SuppressWarnings("deprecation")
 class OCBox extends JPanel implements Observer {
   Observable notifier;
   int x, y; // Locations in grid
diff --git a/patterns/ShapeFactory2.java b/patterns/ShapeFactory2.java
index 4f2134c4e..238811052 100644
--- a/patterns/ShapeFactory2.java
+++ b/patterns/ShapeFactory2.java
@@ -25,9 +25,7 @@ public Shape create(String id) {
       return (Shape)factories
         .computeIfAbsent(id, ShapeFactory2::load)
         .newInstance();
-    } catch(InstantiationException |
-            IllegalAccessException |
-            InvocationTargetException e) {
+    } catch(Exception e) {
       throw new BadShapeCreation(id);
     }
   }
diff --git a/patterns/observer/ObservedFlower.java b/patterns/observer/ObservedFlower.java
index f759a105d..009da63e3 100644
--- a/patterns/observer/ObservedFlower.java
+++ b/patterns/observer/ObservedFlower.java
@@ -7,6 +7,7 @@
 package patterns.observer;
 import java.util.*;
 
+@SuppressWarnings("deprecation")
 class Flower {
   private boolean isOpen;
   private boolean alreadyOpen;
@@ -46,6 +47,7 @@ public void notifyObservers() {
   }
 }
 
+@SuppressWarnings("deprecation")
 class Bee {
   private String name;
   Bee(String nm)  { name = nm; }
@@ -61,6 +63,7 @@ public Observer closeObserver() {
   }
 }
 
+@SuppressWarnings("deprecation")
 class Hummingbird {
   private String name;
   Hummingbird(String nm) { name = nm; }
diff --git a/patterns/trash/Trash.java b/patterns/trash/Trash.java
index 40be944ab..7d01de8c8 100644
--- a/patterns/trash/Trash.java
+++ b/patterns/trash/Trash.java
@@ -70,7 +70,8 @@ public static  T factory(Info info) {
             trashType.getConstructor(double.class);
           // Call the constructor to create a
           // new object:
-          return (T)ctor.newInstance(info.data);
+          return
+            (T)ctor.newInstance(info.data);
         } catch(Exception e) {
           throw new CannotCreateTrashException(e);
         }
diff --git a/references/ImmutableInteger.java b/references/ImmutableInteger.java
index ed4594b90..906aa7ef0 100644
--- a/references/ImmutableInteger.java
+++ b/references/ImmutableInteger.java
@@ -8,6 +8,7 @@
 
 public class ImmutableInteger {
   public static void main(String[] args) {
+    @SuppressWarnings("deprecation")
     List v = IntStream.range(0, 10)
       .mapToObj(Integer::new)
       .collect(Collectors.toList());
diff --git a/typeinfo/DynamicSupplier.java b/typeinfo/DynamicSupplier.java
index bdde8c133..271af6399 100644
--- a/typeinfo/DynamicSupplier.java
+++ b/typeinfo/DynamicSupplier.java
@@ -5,7 +5,6 @@
 import java.util.function.*;
 import java.util.stream.*;
 
-
 class CountedInteger {
   private static long counter;
   private final long id = counter++;
@@ -18,11 +17,11 @@ public class DynamicSupplier implements Supplier {
   public DynamicSupplier(Class type) {
     this.type = type;
   }
+  @SuppressWarnings("deprecation")
   public T get() {
     try {
       return type.newInstance();
-    } catch(InstantiationException |
-            IllegalAccessException e) {
+    } catch(Exception e) {
       throw new RuntimeException(e);
     }
   }
diff --git a/typeinfo/pets/PetCreator.java b/typeinfo/pets/PetCreator.java
index 5feb09405..76909aa9a 100644
--- a/typeinfo/pets/PetCreator.java
+++ b/typeinfo/pets/PetCreator.java
@@ -6,6 +6,7 @@
 package typeinfo.pets;
 import java.util.*;
 import java.util.function.*;
+import java.lang.reflect.InvocationTargetException;
 
 public abstract
 class PetCreator implements Supplier {
@@ -15,8 +16,11 @@ class PetCreator implements Supplier {
   public Pet get() { // Create one random Pet
     int n = rand.nextInt(types().size());
     try {
-      return types().get(n).newInstance();
+      return types().get(n)
+             .getConstructor().newInstance();
     } catch(InstantiationException |
+            NoSuchMethodException |
+            InvocationTargetException |
             IllegalAccessException e) {
       throw new RuntimeException(e);
     }
diff --git a/typeinfo/toys/GenericToyTest.java b/typeinfo/toys/GenericToyTest.java
index aece7958f..7dc016cdc 100644
--- a/typeinfo/toys/GenericToyTest.java
+++ b/typeinfo/toys/GenericToyTest.java
@@ -7,6 +7,7 @@
 package typeinfo.toys;
 
 public class GenericToyTest {
+  @SuppressWarnings("deprecation")
   public static void
   main(String[] args) throws Exception {
     Class ftClass = FancyToy.class;
diff --git a/typeinfo/toys/ToyTest.java b/typeinfo/toys/ToyTest.java
index 39d637c79..e4e5e92db 100644
--- a/typeinfo/toys/ToyTest.java
+++ b/typeinfo/toys/ToyTest.java
@@ -5,6 +5,7 @@
 // Testing class Class
 // {java typeinfo.toys.ToyTest}
 package typeinfo.toys;
+import java.lang.reflect.InvocationTargetException;
 
 interface HasBatteries {}
 interface Waterproof {}
@@ -31,6 +32,7 @@ static void printInfo(Class cc) {
     System.out.println(
       "Canonical name : " + cc.getCanonicalName());
   }
+  @SuppressWarnings("deprecation")
   public static void main(String[] args) {
     Class c = null;
     try {
@@ -47,12 +49,9 @@ public static void main(String[] args) {
     try {
       // Requires no-arg constructor:
       obj = up.newInstance();
-    } catch(InstantiationException e) {
-      System.out.println("Cannot instantiate");
-      System.exit(1);
-    } catch(IllegalAccessException e) {
-      System.out.println("Cannot access");
-      System.exit(1);
+    } catch(Exception e) {
+      throw new
+        RuntimeException("Cannot instantiate");
     }
     printInfo(obj.getClass());
   }

From 03925c71dbc2177346b4b2a43ffa627c2139620c Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 7 Oct 2020 17:55:39 -0600
Subject: [PATCH 17/46] Update .travis.yml

---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index a9e2a082d..aa2577d2d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
 language: java
 jdk:
-  - oraclejdk8
+  - oraclejdk12
 install: true
 script:
   - ./gradlew --no-daemon --stacktrace run

From d56a8da627309e6db93e27fa0c72fb890b075a58 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Thu, 8 Oct 2020 15:02:36 -0600
Subject: [PATCH 18/46] Runs with everything up through JDK 15

JDK 16 has a Gradle fail
---
 .travis.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index aa2577d2d..54fee6592 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
 language: java
 jdk:
-  - oraclejdk12
+  - oraclejdk11
 install: true
 script:
   - ./gradlew --no-daemon --stacktrace run

From cc94cad71818816524c14f48ec075c3582804869 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Fri, 9 Oct 2020 04:53:27 -0600
Subject: [PATCH 19/46] Appveyor broken

They are giving an error message that using build_script formerly fixed.

Commented out both CI results.
---
 README.md      | 6 +++---
 appveyor.yml   | 6 ------
 appveyorXX.yml | 4 ++++
 3 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 appveyor.yml
 create mode 100644 appveyorXX.yml

diff --git a/README.md b/README.md
index 84b3e7642..b1251088b 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-[![](https://travis-ci.org/BruceEckel/OnJava8-Examples.svg?branch=master)](https://travis-ci.org/BruceEckel/OnJava8-Examples)
+[comment]: <> [![](https://travis-ci.org/BruceEckel/OnJava8-Examples.svg?branch=master)](https://travis-ci.org/BruceEckel/OnJava8-Examples)
 
-[![](https://ci.appveyor.com/api/projects/status/github/BruceEckel/OnJava8-Examples)](https://ci.appveyor.com/project/BruceEckel/onjava-examples)
+[comment]: <> [![](https://ci.appveyor.com/api/projects/status/github/BruceEckel/OnJava8-Examples)](https://ci.appveyor.com/project/BruceEckel/onjava-examples)
 
-To compile and run these programs, you only need JDK 8 installed. 
+To compile and run these programs, you only need JDK 8 installed.
 Invoking `gradlew` will automatically download and install Gradle.
 Gradle will also install all additional libraries necessary to compile
 and run the Java examples in the book.
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index 0d99cee33..000000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-build_script:
-  - gradlew.bat --no-daemon --stacktrace run
-#  - gradlew.bat --parallel --stacktrace run
-#  - gradlew.bat --parallel --stacktrace :validating:jmh
-
-test: off
diff --git a/appveyorXX.yml b/appveyorXX.yml
new file mode 100644
index 000000000..5e586b07e
--- /dev/null
+++ b/appveyorXX.yml
@@ -0,0 +1,4 @@
+build_script:
+  - gradlew.bat --no-daemon --stacktrace run
+
+test: off

From 4edac5281c2020e5bda5f081d622a7e47c3a884d Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Fri, 9 Oct 2020 05:02:45 -0600
Subject: [PATCH 20/46] Exclude breaking CI

---
 .travis.yml => .travisXX.yml | 0
 CI.txt                       | 5 +++++
 README.md                    | 4 ----
 3 files changed, 5 insertions(+), 4 deletions(-)
 rename .travis.yml => .travisXX.yml (100%)
 create mode 100644 CI.txt

diff --git a/.travis.yml b/.travisXX.yml
similarity index 100%
rename from .travis.yml
rename to .travisXX.yml
diff --git a/CI.txt b/CI.txt
new file mode 100644
index 000000000..524ee206d
--- /dev/null
+++ b/CI.txt
@@ -0,0 +1,5 @@
+Links formerly in the README. Both of these mysteriously started breaking.
+
+[![](https://travis-ci.org/BruceEckel/OnJava8-Examples.svg?branch=master)](https://travis-ci.org/BruceEckel/OnJava8-Examples)
+
+[![](https://ci.appveyor.com/api/projects/status/github/BruceEckel/OnJava8-Examples)](https://ci.appveyor.com/project/BruceEckel/onjava-examples)
diff --git a/README.md b/README.md
index b1251088b..30b8f7c42 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,3 @@
-[comment]: <> [![](https://travis-ci.org/BruceEckel/OnJava8-Examples.svg?branch=master)](https://travis-ci.org/BruceEckel/OnJava8-Examples)
-
-[comment]: <> [![](https://ci.appveyor.com/api/projects/status/github/BruceEckel/OnJava8-Examples)](https://ci.appveyor.com/project/BruceEckel/onjava-examples)
-
 To compile and run these programs, you only need JDK 8 installed.
 Invoking `gradlew` will automatically download and install Gradle.
 Gradle will also install all additional libraries necessary to compile

From e2d233c748ed27b28f072e69f51e6c1730024de6 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Fri, 9 Oct 2020 05:04:50 -0600
Subject: [PATCH 21/46] Update README.md

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index 30b8f7c42..f66f0678b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+Download release from [here](https://github.com/BruceEckel/OnJava8-Examples/releases/tag/v1.0).
+
 To compile and run these programs, you only need JDK 8 installed.
 Invoking `gradlew` will automatically download and install Gradle.
 Gradle will also install all additional libraries necessary to compile

From 5e0e65958fdb3a91fa10dc1a6991e972f97428d0 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Fri, 9 Oct 2020 05:05:46 -0600
Subject: [PATCH 22/46] Update README.md

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index f66f0678b..985dbbe42 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+# Example Source Code for the Book "On Java 8" by Bruce Eckel
+
 Download release from [here](https://github.com/BruceEckel/OnJava8-Examples/releases/tag/v1.0).
 
 To compile and run these programs, you only need JDK 8 installed.

From bb5ed21c7e22968301ec21810960b59c0f340619 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 30 Dec 2020 09:47:13 -0700
Subject: [PATCH 23/46] Upgraded to latest Gradle (6.7.1)

---
 gradle/wrapper/gradle-wrapper.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 6c9a22477..4d9ca1649 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

From dfdbcf604f6ba4322b7463aff762736e313c47f0 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Thu, 31 Dec 2020 16:33:20 -0700
Subject: [PATCH 24/46] Update gradle.properties

Get rid of spurious warnings
---
 gradle.properties | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gradle.properties b/gradle.properties
index f97ebb7d3..1cb5556b7 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1 +1,3 @@
 org.gradle.parallel=true
+org.gradle.caching=true
+org.gradle.warning.mode=none

From 55de56e524ab296987ba7fef03b76c6bb2edb6ac Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 31 Jan 2021 15:42:31 -0700
Subject: [PATCH 25/46] After rewriting Type Information Chapter, added missing
 @Override

---
 CI.txt                                        |      5 -
 Copyright.txt                                 |      2 +-
 annotations/AUComposition.java                |      4 +-
 annotations/AUExternalTest.java               |      2 +-
 annotations/AtUnitExample1.java               |     10 +-
 annotations/AtUnitExample2.java               |     12 +-
 annotations/AtUnitExample3.java               |      4 +-
 annotations/AtUnitExample4.java               |      2 +-
 annotations/AtUnitExample5.java               |      5 +-
 annotations/DemoProcessFiles.java             |      2 +-
 annotations/HashSetTest.java                  |      4 +-
 annotations/PasswordUtils.java                |      2 +-
 annotations/SimulatingNull.java               |      2 +-
 annotations/StackL.java                       |      2 +-
 annotations/StackLStringTst.java              |      4 +-
 annotations/Testable.java                     |      2 +-
 annotations/UseCase.java                      |      2 +-
 annotations/UseCaseTracker.java               |      6 +-
 annotations/database/Constraints.java         |      2 +-
 annotations/database/DBTable.java             |      2 +-
 annotations/database/Member.java              |      7 +-
 annotations/database/SQLInteger.java          |      2 +-
 annotations/database/SQLString.java           |      2 +-
 annotations/database/TableCreator.java        |      2 +-
 annotations/database/Uniqueness.java          |      2 +-
 annotations/ifx/ExtractInterface.java         |      2 +-
 annotations/ifx/IfaceExtractorProcessor.java  |      8 +-
 annotations/ifx/Multiplier.java               |      2 +-
 annotations/simplest/Simple.java              |      2 +-
 annotations/simplest/SimpleProcessor.java     |      5 +-
 annotations/simplest/SimpleTest.java          |      2 +-
 arrays/AlphabeticSearch.java                  |      2 +-
 arrays/ArrayCopying.java                      |     13 +-
 arrays/ArrayOfGenericType.java                |      2 +-
 arrays/ArrayOfGenerics.java                   |      2 +-
 arrays/ArrayOptions.java                      |      2 +-
 arrays/ArraySearching.java                    |      2 +-
 arrays/AssemblingMultidimensionalArrays.java  |      2 +-
 arrays/AutoboxingArrays.java                  |      2 +-
 arrays/CollectionComparison.java              |      5 +-
 arrays/CompType.java                          |      8 +-
 arrays/ComparatorTest.java                    |      2 +-
 arrays/ComparingArrays.java                   |      2 +-
 arrays/CountUpward.java                       |      2 +-
 arrays/FillingArrays.java                     |      2 +-
 arrays/IceCreamFlavors.java                   |      2 +-
 arrays/ModifyExisting.java                    |      4 +-
 arrays/MultiDimWrapperArray.java              |      2 +-
 arrays/MultidimensionalObjectArrays.java      |      2 +-
 arrays/MultidimensionalPrimitiveArray.java    |      2 +-
 arrays/ParallelPrefix1.java                   |      2 +-
 arrays/ParallelPrefix2.java                   |      2 +-
 arrays/ParallelPrefix3.java                   |      2 +-
 arrays/ParallelSetAll.java                    |      2 +-
 arrays/ParameterizedArrayType.java            |      2 +-
 arrays/PythonLists.py                         |      4 +-
 arrays/RaggedArray.java                       |      4 +-
 arrays/Reverse.java                           |      2 +-
 arrays/SimpleSetAll.java                      |     15 +-
 arrays/StreamFromArray.java                   |      2 +-
 arrays/StringSorting.java                     |      2 +-
 arrays/TestConvertTo.java                     |      2 +-
 arrays/TestCount.java                         |      2 +-
 arrays/TestRand.java                          |      2 +-
 arrays/ThreeDWithNew.java                     |      2 +-
 arrays/jmh/ParallelSort.java                  |      2 +-
 collections/AdapterMethodIdiom.java           |      6 +-
 collections/AddingGroups.java                 |      2 +-
 collections/ApplesAndOrangesWithGenerics.java |      2 +-
 .../ApplesAndOrangesWithoutGenerics.java      |      2 +-
 collections/ArrayIsNotIterable.java           |      2 +-
 collections/AsListInference.java              |      2 +-
 collections/CollectionDifferences.java        |      2 +-
 collections/CollectionSequence.java           |     12 +-
 collections/CrossCollectionIteration.java     |      4 +-
 collections/CrossCollectionIteration2.java    |      4 +-
 collections/EnvironmentVariables.java         |      2 +-
 collections/ForInCollections.java             |      2 +-
 collections/GenericsAndUpcasting.java         |     10 +-
 collections/InterfaceVsIterator.java          |      4 +-
 collections/IterableClass.java                |      8 +-
 collections/LinkedListFeatures.java           |     14 +-
 collections/ListFeatures.java                 |     10 +-
 collections/ListIteration.java                |      9 +-
 collections/MapOfList.java                    |      2 +-
 collections/ModifyingArraysAsList.java        |      2 +-
 collections/MultiIterableClass.java           |      7 +-
 collections/NonCollectionSequence.java        |      7 +-
 collections/PetMap.java                       |      2 +-
 collections/PrintingCollections.java          |      2 +-
 collections/PriorityQueueDemo.java            |      2 +-
 collections/QueueDemo.java                    |      2 +-
 collections/SetOfInteger.java                 |      2 +-
 collections/SetOfString.java                  |      2 +-
 collections/SetOperations.java                |      2 +-
 collections/SimpleCollection.java             |      2 +-
 collections/SimpleIteration.java              |      4 +-
 collections/SortedSetOfString.java            |      2 +-
 collections/StackCollision.java               |      2 +-
 collections/StackTest.java                    |      2 +-
 collections/StackTest2.java                   |      2 +-
 collections/Statistics.java                   |      4 +-
 collections/UniqueWords.java                  |      2 +-
 collections/UniqueWordsAlphabetic.java        |      2 +-
 collectiontopics/AssociativeArray.java        |      5 +-
 collectiontopics/Bits.java                    |      2 +-
 collectiontopics/CanonicalMapping.java        |     14 +-
 collectiontopics/CollectionMethods.java       |      2 +-
 collectiontopics/Enumerations.java            |      2 +-
 collectiontopics/FailFast.java                |      2 +-
 collectiontopics/FillMapTest.java             |      2 +-
 collectiontopics/FillingLists.java            |     17 +-
 collectiontopics/FunctionalMap.java           |      2 +-
 collectiontopics/HTMLColorTest.java           |      2 +-
 collectiontopics/LinkedHashMapDemo.java       |      2 +-
 collectiontopics/ListOps.java                 |      2 +-
 collectiontopics/ListSortSearch.java          |      2 +-
 collectiontopics/MapOps.java                  |      2 +-
 collectiontopics/NavMap.java                  |      2 +-
 collectiontopics/QueueBehavior.java           |      2 +-
 collectiontopics/ReadOnly.java                |      2 +-
 collectiontopics/References.java              |     38 +-
 collectiontopics/SetOrder.java                |      6 +-
 collectiontopics/SimpleDeques.java            |      5 +-
 collectiontopics/SortedMapDemo.java           |      2 +-
 collectiontopics/SortedSetDemo.java           |      2 +-
 collectiontopics/Stacks.java                  |      2 +-
 collectiontopics/StreamFillMaps.java          |      5 +-
 collectiontopics/SuppliersCollectionTest.java |      5 +-
 collectiontopics/Synchronization.java         |      2 +-
 collectiontopics/ToDoList.java                |      8 +-
 collectiontopics/TypesForSets.java            |     22 +-
 collectiontopics/Unsupported.java             |      2 +-
 collectiontopics/Utilities.java               |      2 +-
 com/mindviewinc/simple/List.java              |      2 +-
 com/mindviewinc/simple/Vector.java            |      2 +-
 compression/GZIPcompress.java                 |      2 +-
 compression/ZipCompress.java                  |      2 +-
 concurrent/Baked.java                         |      2 +-
 concurrent/Batter.java                        |      2 +-
 concurrent/Breakable.java                     |      5 +-
 concurrent/CachedThreadPool.java              |     14 +-
 concurrent/CachedThreadPool2.java             |     22 +-
 concurrent/CachedThreadPool3.java             |     12 +-
 concurrent/CatchCompletableExceptions.java    |      2 +-
 concurrent/CollectionIntoStream.java          |      2 +-
 concurrent/CompletableApply.java              |      2 +-
 concurrent/CompletableApplyAsync.java         |      6 +-
 concurrent/CompletableApplyChained.java       |      4 +-
 concurrent/CompletableExceptions.java         |      2 +-
 concurrent/CompletableOperations.java         |      6 +-
 concurrent/CompletablePizza.java              |     40 +-
 concurrent/CompletableUtilities.java          |      2 +-
 concurrent/CompletedMachina.java              |      2 +-
 concurrent/CountingStream.java                |      2 +-
 concurrent/CountingTask.java                  |      5 +-
 concurrent/DiningPhilosophers.java            |      2 +-
 concurrent/DualCompletableOperations.java     |      2 +-
 concurrent/FrostedCake.java                   |      7 +-
 concurrent/Futures.java                       |      4 +-
 concurrent/GuardedIDField.java                |      4 +-
 concurrent/HasID.java                         |      2 +-
 concurrent/IDChecker.java                     |      5 +-
 concurrent/InterferingTask.java               |      5 +-
 concurrent/LambdasAndMethodReferences.java    |      4 +-
 concurrent/Machina.java                       |      5 +-
 concurrent/MoreTasksAfterShutdown.java        |      7 +-
 concurrent/NapTask.java                       |      8 +-
 concurrent/OnePizza.java                      |      4 +-
 concurrent/PSP2.txt                           |     11 +
 concurrent/ParallelPrime.java                 |      6 +-
 concurrent/ParallelStreamPuzzle.java          |      6 +-
 concurrent/ParallelStreamPuzzle2.java         |      6 +-
 concurrent/ParallelStreamPuzzle3.java         |      2 +-
 concurrent/Philosopher.java                   |      8 +-
 concurrent/Pizza.java                         |      5 +-
 concurrent/PizzaParallelSteps.java            |     38 +-
 concurrent/PizzaStreams.java                  |     38 +-
 concurrent/QuittableTask.java                 |      9 +-
 concurrent/QuittingCompletable.java           |     20 +-
 concurrent/QuittingTasks.java                 |     20 +-
 concurrent/SharedConstructorArgument.java     |     11 +-
 concurrent/SingleThreadExecutor.java          |      6 +-
 concurrent/SingleThreadExecutor2.java         |      2 +-
 concurrent/SingleThreadExecutor3.java         |      2 +-
 concurrent/StaticIDField.java                 |      4 +-
 concurrent/StickHolder.java                   |      2 +-
 concurrent/StreamExceptions.java              |      2 +-
 concurrent/Summing.java                       |      8 +-
 concurrent/Summing2.java                      |     10 +-
 concurrent/Summing3.java                      |      8 +-
 concurrent/Summing4.java                      |      4 +-
 concurrent/SynchronizedConstructor.java       |      5 +-
 concurrent/SynchronizedFactory.java           |      5 +-
 concurrent/TestStaticIDField.java             |      4 +-
 concurrent/ThrowsChecked.java                 |      6 +-
 concurrent/Workable.java                      |      5 +-
 concurrent/primes.txt                         | 100000 +++++++++++++++
 control/BreakAndContinue.java                 |      8 +-
 control/CommaOperator.java                    |      2 +-
 control/ForInFloat.java                       |      2 +-
 control/ForInInt.java                         |      2 +-
 control/ForInString.java                      |      2 +-
 control/IfElse.java                           |      4 +-
 control/LabeledFor.java                       |      2 +-
 control/LabeledWhile.java                     |      2 +-
 control/ListCharacters.java                   |      2 +-
 control/RandomBounds.java                     |      2 +-
 control/StringSwitch.java                     |      2 +-
 control/TestWithReturn.java                   |      2 +-
 control/TrueFalse.java                        |      2 +-
 control/VowelsAndConsonants.java              |      2 +-
 control/WhileTest.java                        |      2 +-
 enums/AlarmPoints.java                        |      2 +-
 enums/BigEnumSet.java                         |      2 +-
 enums/Burrito2.java                           |      5 +-
 enums/CarWash.java                            |     26 +-
 enums/Competitor.java                         |      2 +-
 enums/ConstantSpecificMethod.java             |     20 +-
 enums/EnumClass.java                          |      2 +-
 enums/EnumMaps.java                           |      2 +-
 enums/EnumSets.java                           |      2 +-
 enums/Input.java                              |      8 +-
 enums/NonEnum.java                            |      2 +-
 enums/NotClasses.java                         |     11 +-
 enums/Outcome.java                            |      2 +-
 enums/OverrideConstantSpecific.java           |      5 +-
 enums/OzWitch.java                            |      2 +-
 enums/PostOffice.java                         |     28 +-
 enums/RandomTest.java                         |      2 +-
 enums/Reflection.java                         |      2 +-
 enums/RoShamBo.java                           |      2 +-
 enums/RoShamBo1.java                          |     26 +-
 enums/RoShamBo2.java                          |      5 +-
 enums/RoShamBo3.java                          |     11 +-
 enums/RoShamBo4.java                          |      2 +-
 enums/RoShamBo5.java                          |      5 +-
 enums/RoShamBo6.java                          |      5 +-
 enums/SecurityCategory.java                   |      2 +-
 enums/SpaceShip.java                          |      5 +-
 enums/SpicinessEnum.java                      |      2 +-
 enums/TrafficLight.java                       |      5 +-
 enums/UpcastEnum.java                         |      2 +-
 enums/VendingMachine.java                     |     20 +-
 enums/cartoons/EnumImplementation.java        |      5 +-
 enums/menu/Course.java                        |      2 +-
 enums/menu/Food.java                          |      2 +-
 enums/menu/Meal.java                          |      2 +-
 enums/menu/Meal2.java                         |      2 +-
 enums/menu/TypeOfFood.java                    |      2 +-
 equalshashcode/ComposedEquality.java          |      8 +-
 equalshashcode/CountedString.java             |     11 +-
 equalshashcode/DefaultComparison.java         |      2 +-
 equalshashcode/Equality.java                  |      5 +-
 equalshashcode/EqualityFactory.java           |      2 +-
 equalshashcode/Groundhog.java                 |      5 +-
 equalshashcode/Groundhog2.java                |      5 +-
 equalshashcode/IndividualTest.java            |      2 +-
 equalshashcode/MapEntry.java                  |     20 +-
 equalshashcode/Prediction.java                |      5 +-
 equalshashcode/SimpleHashMap.java             |     11 +-
 equalshashcode/SlowMap.java                   |      8 +-
 equalshashcode/SpringDetector.java            |     16 +-
 equalshashcode/SpringDetector2.java           |      2 +-
 equalshashcode/StringHashCode.java            |      2 +-
 equalshashcode/SubtypeEquality.java           |     15 +-
 equalshashcode/SubtypeEquality2.java          |     12 +-
 equalshashcode/SuccinctEquality.java          |      5 +-
 exceptions/AlwaysFinally.java                 |      2 +-
 exceptions/AutoCloseableDetails.java          |      4 +-
 exceptions/BodyException.java                 |      2 +-
 exceptions/Cleanup.java                       |      2 +-
 exceptions/CleanupIdiom.java                  |      2 +-
 exceptions/CloseExceptions.java               |      3 +-
 exceptions/ConstructorException.java          |      2 +-
 exceptions/DynamicFields.java                 |     11 +-
 exceptions/ExceptionMethods.java              |      2 +-
 exceptions/ExceptionSilencer.java             |      2 +-
 exceptions/ExtraFeatures.java                 |     17 +-
 exceptions/FinallyWorks.java                  |      2 +-
 exceptions/FullConstructors.java              |      2 +-
 exceptions/Human.java                         |      2 +-
 exceptions/InheritingExceptions.java          |      2 +-
 exceptions/InputFile.java                     |      2 +-
 exceptions/InputFile2.java                    |      2 +-
 exceptions/LoggingExceptions.java             |      6 +-
 exceptions/LoggingExceptions2.java            |      4 +-
 exceptions/LostMessage.java                   |      8 +-
 exceptions/MainException.java                 |      2 +-
 exceptions/MessyExceptions.java               |      2 +-
 exceptions/MultiCatch.java                    |      2 +-
 exceptions/MultiCatch2.java                   |      2 +-
 exceptions/MultipleReturns.java               |      2 +-
 exceptions/NeverCaught.java                   |      2 +-
 exceptions/OnOffException1.java               |      2 +-
 exceptions/OnOffException2.java               |      2 +-
 exceptions/OnOffSwitch.java                   |      2 +-
 exceptions/PreciseRethrow.java                |      2 +-
 exceptions/RethrowNew.java                    |      2 +-
 exceptions/Rethrowing.java                    |      2 +-
 exceptions/SameHandler.java                   |      2 +-
 exceptions/StormyInning.java                  |     11 +-
 exceptions/StreamsAreAutoCloseable.java       |      6 +-
 exceptions/Switch.java                        |      5 +-
 exceptions/TryAnything.java                   |      2 +-
 exceptions/TryWithResources.java              |      2 +-
 exceptions/TurnOffChecking.java               |      2 +-
 exceptions/WhoCalled.java                     |      2 +-
 exceptions/WithFinally.java                   |      2 +-
 files/AddAndSubtractPaths.java                |     53 +-
 files/Directories.java                        |     16 +-
 files/FileSystemDemo.java                     |     14 +-
 files/Find.java                               |      2 +-
 files/ListOfLines.java                        |      2 +-
 files/PartsOfPaths.java                       |     18 +-
 files/PathAnalysis.java                       |     12 +-
 files/PathInfo.java                           |     28 +-
 files/PathWatcher.java                        |      2 +-
 files/ReadLineStream.java                     |      2 +-
 files/StreamInAndOut.java                     |      2 +-
 files/TreeWatcher.java                        |      2 +-
 files/Writing.java                            |      2 +-
 functional/AnonymousClosure.java              |      2 +-
 functional/BiConsumerPermutations.java        |      2 +-
 functional/ClassFunctionals.java              |      2 +-
 functional/Closure1.java                      |      2 +-
 functional/Closure2.java                      |      2 +-
 functional/Closure3.java                      |      2 +-
 functional/Closure4.java                      |      2 +-
 functional/Closure5.java                      |      2 +-
 functional/Closure6.java                      |      2 +-
 functional/Closure7.java                      |      2 +-
 functional/Closure8.java                      |      2 +-
 functional/Closure9.java                      |      2 +-
 functional/ConsumeFunction.java               |      2 +-
 functional/CtorReference.java                 |      8 +-
 functional/CurriedIntAdd.java                 |      2 +-
 functional/Curry3Args.java                    |      2 +-
 functional/CurryingAndPartials.java           |      6 +-
 functional/FunctionComposition.java           |      2 +-
 functional/FunctionVariants.java              |      2 +-
 functional/FunctionWithWrapped.java           |      2 +-
 functional/FunctionalAnnotation.java          |      2 +-
 functional/IntCall.java                       |      2 +-
 functional/LambdaExpressions.java             |     10 +-
 functional/MethodConversion.java              |      2 +-
 functional/MethodReferences.java              |     22 +-
 functional/MultiUnbound.java                  |      2 +-
 functional/PredicateComposition.java          |      2 +-
 functional/ProduceFunction.java               |      6 +-
 functional/RecursiveFactorial.java            |      2 +-
 functional/RecursiveFibonacci.java            |      2 +-
 functional/RunnableMethodReference.java       |      2 +-
 functional/SharedStorage.java                 |      2 +-
 functional/Strategize.java                    |     15 +-
 functional/TransformFunction.java             |      8 +-
 functional/TriFunction.java                   |      2 +-
 functional/TriFunctionTest.java               |      2 +-
 functional/UnboundMethodReference.java        |      6 +-
 generics/Amphibian.java                       |      2 +-
 generics/Apply.java                           |      2 +-
 generics/ApplyFunctional.java                 |      2 +-
 generics/ApplyTest.java                       |      2 +-
 generics/ArrayMaker.java                      |      2 +-
 generics/ArrayOfGeneric.java                  |      2 +-
 generics/ArrayOfGenericReference.java         |      2 +-
 generics/BankTeller.java                      |      8 +-
 generics/BasicBounds.java                     |      5 +-
 generics/BasicHolder.java                     |      2 +-
 generics/BasicSupplierDemo.java               |      2 +-
 generics/ByteSet.java                         |      2 +-
 generics/CRGWithBasicHolder.java              |      2 +-
 generics/CaptureConversion.java               |      2 +-
 generics/CheckedList.java                     |      2 +-
 generics/ClassCasting.java                    |      2 +-
 generics/ClassTypeCapture.java                |      2 +-
 generics/ComparablePet.java                   |      2 +-
 generics/CompilerIntelligence.java            |      2 +-
 generics/CountedObject.java                   |      5 +-
 generics/CovariantArrays.java                 |      2 +-
 generics/CovariantReturnTypes.java            |      5 +-
 generics/CreatorGeneric.java                  |      5 +-
 generics/CuriouslyRecurringGeneric.java       |      2 +-
 generics/Diamond.java                         |      2 +-
 generics/DogsAndRobotMethodReferences.java    |      2 +-
 generics/DogsAndRobots.cpp                    |      2 +-
 generics/DogsAndRobots.java                   |      4 +-
 generics/DogsAndRobots.py                     |      2 +-
 generics/DynamicProxyMixin.java               |      4 +-
 generics/EpicBattle.java                      |      8 +-
 generics/Erased.java                          |      2 +-
 generics/ErasedTypeEquivalence.java           |      2 +-
 generics/ErasureAndInheritance.java           |      2 +-
 generics/FactoryConstraint.java               |     18 +-
 generics/Fibonacci.java                       |      2 +-
 generics/FilledList.java                      |      2 +-
 generics/GenericArray.java                    |      2 +-
 generics/GenericArray2.java                   |      2 +-
 generics/GenericArrayWithTypeToken.java       |      2 +-
 generics/GenericCast.java                     |      2 +-
 generics/GenericHolder.java                   |      2 +-
 generics/GenericHolder2.java                  |      2 +-
 generics/GenericMethods.java                  |      2 +-
 generics/GenericReading.java                  |      2 +-
 generics/GenericVarargs.java                  |      2 +-
 generics/GenericsAndCovariance.java           |      2 +-
 generics/GenericsAndReturnTypes.java          |      2 +-
 generics/HasF.java                            |      2 +-
 generics/HijackedInterface.java               |      2 +-
 generics/Holder.java                          |      8 +-
 generics/Holder1.java                         |      2 +-
 generics/InheritBounds.java                   |      2 +-
 generics/InstantiateGenericType.cpp           |      2 +-
 generics/InstantiateGenericType.java          |     17 +-
 generics/IterableFibonacci.java               |      8 +-
 generics/LatentReflection.java                |      5 +-
 generics/LinkedStack.java                     |      2 +-
 generics/ListMaker.java                       |      2 +-
 generics/ListOfGenerics.java                  |      2 +-
 generics/ListOfInt.java                       |      2 +-
 generics/LostInformation.java                 |      2 +-
 generics/Manipulation.java                    |      2 +-
 generics/Manipulator2.java                    |      2 +-
 generics/Manipulator3.java                    |      2 +-
 generics/Mixins.cpp                           |      2 +-
 generics/Mixins.java                          |     12 +-
 generics/MultipleInterfaceVariants.java       |      2 +-
 generics/NeedCasting.java                     |      2 +-
 generics/NonCovariantGenerics.java            |      2 +-
 generics/NotSelfBounded.java                  |      2 +-
 generics/ObjectHolder.java                    |      2 +-
 generics/OrdinaryArguments.java               |      2 +-
 generics/Performs.java                        |      2 +-
 generics/PlainGenericInheritance.java         |      2 +-
 generics/PrimitiveGenericTest.java            |      2 +-
 generics/RandomList.java                      |      2 +-
 generics/RestrictedComparablePets.java        |      3 +-
 generics/ReturnGenericType.java               |      2 +-
 generics/SelfBounding.java                    |      2 +-
 .../SelfBoundingAndCovariantArguments.java    |      2 +-
 generics/SelfBoundingMethods.java             |      2 +-
 generics/Shape.java                           |      5 +-
 generics/SimpleDogsAndRobots.java             |      2 +-
 generics/SimpleHolder.java                    |      2 +-
 generics/SimpleQueue.java                     |      5 +-
 generics/Square.java                          |      2 +-
 generics/Store.java                           |     11 +-
 generics/SuperTypeWildcards.java              |      2 +-
 generics/Templates.cpp                        |      2 +-
 generics/ThrowGenericException.java           |      2 +-
 generics/TupleList.java                       |      6 +-
 generics/TupleTest.java                       |      8 +-
 generics/TupleTest2.java                      |      8 +-
 generics/UnboundedWildcards1.java             |      2 +-
 generics/UnboundedWildcards2.java             |      2 +-
 generics/Unconstrained.java                   |      2 +-
 generics/UseList.java                         |      2 +-
 generics/UseList2.java                        |      2 +-
 generics/Vehicle.java                         |      2 +-
 generics/WatercolorSets.java                  |     32 +-
 generics/Wildcards.java                       |      2 +-
 generics/coffee/Americano.java                |      2 +-
 generics/coffee/Breve.java                    |      2 +-
 generics/coffee/Cappuccino.java               |      2 +-
 generics/coffee/Coffee.java                   |      5 +-
 generics/coffee/CoffeeSupplier.java           |     11 +-
 generics/coffee/Latte.java                    |      2 +-
 generics/coffee/Mocha.java                    |      2 +-
 generics/decorator/Decoration.java            |      2 +-
 generics/dogsandrobots.go                     |      2 +-
 generics/watercolors/Watercolors.java         |      2 +-
 gradle/wrapper/gradle-wrapper.properties      |      2 +-
 hiding/Cake.java                              |      2 +-
 hiding/ChocolateChip.java                     |      2 +-
 hiding/ChocolateChip2.java                    |      2 +-
 hiding/CreatePackageAccessObject.java         |      2 +-
 hiding/Dinner.java                            |      2 +-
 hiding/FullQualification.java                 |      2 +-
 hiding/IceCream.java                          |      2 +-
 hiding/ImportedMyClass.java                   |      2 +-
 hiding/LibTest.java                           |      2 +-
 hiding/Lunch.java                             |      6 +-
 hiding/OrganizedByAccess.java                 |      2 +-
 hiding/Pie.java                               |      2 +-
 hiding/QualifiedMyClass.java                  |      2 +-
 hiding/SingleImport.java                      |      2 +-
 hiding/cookie2/Cookie.java                    |      2 +-
 hiding/dessert/Cookie.java                    |      2 +-
 hiding/mypackage/MyClass.java                 |      2 +-
 hiding/packageaccess/PublicConstructor.java   |      2 +-
 housekeeping/Apricot.java                     |      3 +-
 housekeeping/ArrayClassObj.java               |      2 +-
 housekeeping/ArrayInit.java                   |      2 +-
 housekeeping/ArrayNew.java                    |      2 +-
 housekeeping/ArraysOfPrimitives.java          |      2 +-
 housekeeping/AutoboxingVarargs.java           |      2 +-
 housekeeping/BananaPeel.java                  |      2 +-
 housekeeping/Burrito.java                     |      2 +-
 housekeeping/Counter.java                     |      2 +-
 housekeeping/DefaultConstructor.java          |      2 +-
 housekeeping/Demotion.java                    |      2 +-
 housekeeping/DynamicArray.java                |      2 +-
 housekeeping/EnumOrder.java                   |      2 +-
 housekeeping/ExplicitStatic.java              |      4 +-
 housekeeping/Flower.java                      |      2 +-
 housekeeping/InitialValues.java               |      2 +-
 housekeeping/InitialValues2.java              |      2 +-
 housekeeping/Leaf.java                        |      2 +-
 housekeeping/Measurement.java                 |      2 +-
 housekeeping/MethodInit.java                  |      2 +-
 housekeeping/MethodInit2.java                 |      2 +-
 housekeeping/MethodInit3.java                 |      2 +-
 housekeeping/Mugs.java                        |      4 +-
 housekeeping/NewVarArgs.java                  |      4 +-
 housekeeping/NoSynthesis.java                 |      2 +-
 housekeeping/OptionalTrailingArguments.java   |      2 +-
 housekeeping/OrderOfInitialization.java       |      2 +-
 housekeeping/Overloading.java                 |      2 +-
 housekeeping/OverloadingOrder.java            |      2 +-
 housekeeping/OverloadingVarargs.java          |      2 +-
 housekeeping/OverloadingVarargs2.java         |      2 +-
 housekeeping/OverloadingVarargs3.java         |      2 +-
 housekeeping/PassingThis.java                 |      2 +-
 housekeeping/PrimitiveOverloading.java        |      2 +-
 housekeeping/SimpleConstructor.java           |      2 +-
 housekeeping/SimpleConstructor2.java          |      2 +-
 housekeeping/SimpleEnumUse.java               |      2 +-
 housekeeping/Spiciness.java                   |      2 +-
 housekeeping/Spoon.java                       |      2 +-
 housekeeping/StaticInitialization.java        |      2 +-
 housekeeping/TerminationCondition.java        |      5 +-
 housekeeping/VarArgs.java                     |      4 +-
 housekeeping/VarargType.java                  |      2 +-
 innerclasses/AnonymousConstructor.java        |      5 +-
 innerclasses/BigEgg.java                      |      2 +-
 innerclasses/BigEgg2.java                     |      5 +-
 innerclasses/Callbacks.java                   |     11 +-
 innerclasses/ClassInInterface.java            |      5 +-
 innerclasses/Contents.java                    |      2 +-
 innerclasses/Destination.java                 |      2 +-
 innerclasses/DotNew.java                      |      2 +-
 innerclasses/DotThis.java                     |      2 +-
 innerclasses/GreenhouseController.java        |      2 +-
 innerclasses/GreenhouseControls.java          |     53 +-
 innerclasses/InheritInner.java                |      2 +-
 innerclasses/LocalInnerClass.java             |      8 +-
 innerclasses/MultiImplementation.java         |      2 +-
 innerclasses/MultiNestingAccess.java          |      2 +-
 innerclasses/Parcel1.java                     |      2 +-
 innerclasses/Parcel10.java                    |      2 +-
 innerclasses/Parcel11.java                    |      5 +-
 innerclasses/Parcel2.java                     |      2 +-
 innerclasses/Parcel3.java                     |      2 +-
 innerclasses/Parcel5.java                     |      2 +-
 innerclasses/Parcel6.java                     |      2 +-
 innerclasses/Parcel7.java                     |      5 +-
 innerclasses/Parcel7b.java                    |      5 +-
 innerclasses/Parcel8.java                     |      9 +-
 innerclasses/Parcel9.java                     |      2 +-
 innerclasses/Sequence.java                    |      2 +-
 innerclasses/TestBed.java                     |      2 +-
 innerclasses/TestParcel.java                  |      5 +-
 innerclasses/Wrapping.java                    |      2 +-
 innerclasses/controller/Controller.java       |      2 +-
 innerclasses/controller/Event.java            |      2 +-
 innerclasses/mui/MultiInterfaces.java         |      2 +-
 interfaces/AbstractAccess.java                |      2 +-
 interfaces/AbstractWithoutAbstracts.java      |      2 +-
 interfaces/AdaptedRandomDoubles.java          |      5 +-
 interfaces/Adventure.java                     |      6 +-
 interfaces/AnImplementation.java              |      6 +-
 interfaces/AnInterface.java                   |      2 +-
 interfaces/Applicator.java                    |      2 +-
 interfaces/AttemptToUseBasic.java             |      2 +-
 interfaces/Basic.java                         |      2 +-
 interfaces/Basic2.java                        |      2 +-
 interfaces/Factories.java                     |     16 +-
 interfaces/Games.java                         |      8 +-
 interfaces/HorrorShow.java                    |     20 +-
 interfaces/Implementation2.java               |      6 +-
 interfaces/ImplementingAnInterface.java       |     10 +-
 interfaces/Instantiable.java                  |      8 +-
 interfaces/InterfaceCollision.java            |      5 +-
 interfaces/InterfaceWithDefault.java          |      2 +-
 interfaces/Jim.java                           |      7 +-
 interfaces/MICollision.java                   |      2 +-
 interfaces/Machine.java                       |      8 +-
 interfaces/Months.java                        |      2 +-
 interfaces/MultipleInheritance.java           |      2 +-
 interfaces/PureInterface.java                 |      2 +-
 interfaces/RandVals.java                      |      2 +-
 interfaces/RandomDoubles.java                 |      2 +-
 interfaces/RandomStrings.java                 |      5 +-
 interfaces/TestRandVals.java                  |      2 +-
 interfaces/filters/BandPass.java              |      2 +-
 interfaces/filters/Filter.java                |      2 +-
 interfaces/filters/HighPass.java              |      2 +-
 interfaces/filters/LowPass.java               |      2 +-
 interfaces/filters/Waveform.java              |      5 +-
 interfaces/interfaceprocessor/Applicator.java |      2 +-
 .../interfaceprocessor/FilterProcessor.java   |      2 +-
 interfaces/interfaceprocessor/Processor.java  |      2 +-
 .../interfaceprocessor/StringProcessor.java   |      8 +-
 interfaces/music4/Music4.java                 |     43 +-
 interfaces/music5/Music5.java                 |     27 +-
 interfaces/nesting/NestingInterfaces.java     |     38 +-
 iostreams/BasicFileOutput.java                |      2 +-
 iostreams/BufferedInputFile.java              |      2 +-
 iostreams/FileOutputShortcut.java             |      2 +-
 iostreams/FormattedMemoryInput.java           |      2 +-
 iostreams/MemoryInput.java                    |      2 +-
 iostreams/StoringAndRecoveringData.java       |      2 +-
 iostreams/TestEOF.java                        |      2 +-
 iostreams/UsingRandomAccessFile.java          |      2 +-
 javadoc/Documentation1.java                   |      2 +-
 javadoc/Documentation2.java                   |      2 +-
 javadoc/Documentation3.java                   |      2 +-
 javadoc/HelloDateDoc.java                     |      4 +-
 lowlevel/AtomicEvenProducer.java              |      5 +-
 lowlevel/AtomicIntegerTest.java               |      3 +-
 lowlevel/AtomicSerialNumbers.java             |      4 +-
 lowlevel/Atomicity.java                       |      2 +-
 lowlevel/AttemptLocking.java                  |      2 +-
 lowlevel/CaptureUncaughtException.java        |     14 +-
 lowlevel/CircularSet.java                     |      2 +-
 lowlevel/DelayQueueDemo.java                  |     19 +-
 lowlevel/EvenChecker.java                     |      5 +-
 lowlevel/EvenProducer.java                    |      7 +-
 lowlevel/ExceptionThread.java                 |      7 +-
 lowlevel/IntGenerator.java                    |      2 +-
 lowlevel/IntTestable.java                     |      5 +-
 lowlevel/MutexEvenProducer.java               |      5 +-
 lowlevel/NaiveExceptionHandling.java          |      4 +-
 lowlevel/NotAtomic.java                       |      2 +-
 lowlevel/NumberOfProcessors.java              |      2 +-
 lowlevel/PriorityBlockingQueueDemo.java       |     28 +-
 lowlevel/ReOrdering.java                      |      5 +-
 lowlevel/SafeReturn.java                      |      3 +-
 lowlevel/SerialNumberChecker.java             |      5 +-
 lowlevel/SerialNumberTest.java                |      7 +-
 lowlevel/SerialNumbers.java                   |      2 +-
 lowlevel/SettingDefaultHandler.java           |      2 +-
 lowlevel/SwallowedException.java              |      2 +-
 lowlevel/SyncOnObject.java                    |      2 +-
 lowlevel/SynchronizedComparison.java          |     32 +-
 lowlevel/SynchronizedEvenProducer.java        |      5 +-
 lowlevel/SynchronizedSerialNumbers.java       |      3 +-
 lowlevel/TestAbort.java                       |      2 +-
 lowlevel/ThreadSize.java                      |      5 +-
 lowlevel/UnsafeReturn.java                    |      5 +-
 lowlevel/WorkStealingPool.java                |     13 +-
 newio/AvailableCharSets.java                  |      8 +-
 newio/BufferToText.java                       |      2 +-
 newio/ChannelCopy.java                        |      2 +-
 newio/Endians.java                            |      2 +-
 newio/FileLocking.java                        |      2 +-
 newio/GetChannel.java                         |      2 +-
 newio/GetData.java                            |      2 +-
 newio/IntBufferDemo.java                      |      2 +-
 newio/LargeMappedFiles.java                   |      2 +-
 newio/LockingMappedFiles.java                 |      5 +-
 newio/MappedIO.java                           |     20 +-
 newio/TransferTo.java                         |      2 +-
 newio/UsingBuffers.java                       |      2 +-
 newio/ViewBuffers.java                        |      2 +-
 newio/data.txt                                |      1 +
 objects/HelloDate.java                        |      2 +-
 objects/ShowProperties.java                   |     22 +-
 onjava/ArrayShow.java                         |      2 +-
 onjava/BasicSupplier.java                     |      5 +-
 onjava/CollectionMethodDifferences.java       |      2 +-
 onjava/ConvertTo.java                         |      2 +-
 onjava/Count.java                             |     14 +-
 onjava/CountMap.java                          |     20 +-
 onjava/CountingIntegerList.java               |      8 +-
 onjava/Countries.java                         |     26 +-
 onjava/Enums.java                             |      2 +-
 onjava/FillMap.java                           |      2 +-
 onjava/HTMLColors.java                        |      2 +-
 onjava/MouseClick.java                        |      2 +-
 onjava/Nap.java                               |      2 +-
 onjava/Null.java                              |      2 +-
 onjava/OSExecute.java                         |      2 +-
 onjava/OSExecuteException.java                |      2 +-
 onjava/Operations.java                        |      2 +-
 onjava/Pair.java                              |      2 +-
 onjava/ProcessFiles.java                      |      2 +-
 onjava/Rand.java                              |     38 +-
 onjava/Range.java                             |      2 +-
 onjava/Repeat.java                            |      2 +-
 onjava/RmDir.java                             |      8 +-
 onjava/Sets.java                              |      2 +-
 onjava/Stack.java                             |      5 +-
 onjava/Suppliers.java                         |      2 +-
 onjava/TimedAbort.java                        |      2 +-
 onjava/Timer.java                             |      2 +-
 onjava/Tuple.java                             |      2 +-
 onjava/Tuple2.java                            |      5 +-
 onjava/Tuple3.java                            |      5 +-
 onjava/Tuple4.java                            |      5 +-
 onjava/Tuple5.java                            |      5 +-
 onjava/TypeCounter.java                       |      8 +-
 onjava/atunit/AtUnit.java                     |      5 +-
 onjava/atunit/ClassNameFinder.java            |      2 +-
 onjava/atunit/Test.java                       |      2 +-
 onjava/atunit/TestObjectCleanup.java          |      2 +-
 onjava/atunit/TestObjectCreate.java           |      2 +-
 onjava/atunit/TestProperty.java               |      2 +-
 operators/AllOps.java                         |      2 +-
 operators/Assignment.java                     |      2 +-
 operators/AutoInc.java                        |      2 +-
 operators/BitManipulation.java                |      2 +-
 operators/Bool.java                           |      2 +-
 operators/Casting.java                        |      2 +-
 operators/CastingNumbers.java                 |      2 +-
 operators/EqualsMethod.java                   |      2 +-
 operators/EqualsMethod2.java                  |      2 +-
 operators/Equivalence.java                    |      2 +-
 operators/Exponents.java                      |      2 +-
 operators/Literals.java                       |      2 +-
 operators/MathOps.java                        |      2 +-
 operators/Overflow.java                       |      2 +-
 operators/PassObject.java                     |      2 +-
 operators/Precedence.java                     |      2 +-
 operators/RoundingNumbers.java                |      2 +-
 operators/ShortCircuit.java                   |      2 +-
 operators/StringOperators.java                |      2 +-
 operators/TernaryIfElse.java                  |      2 +-
 operators/URShift.java                        |      2 +-
 operators/Underscores.java                    |      4 +-
 patterns/BoxObserver.java                     |      5 +-
 patterns/CommandPattern.java                  |      2 +-
 patterns/Facade.java                          |      2 +-
 patterns/PaperScissorsRock.java               |     53 +-
 patterns/ProxyDemo.java                       |      8 +-
 patterns/ShapeFactory1.java                   |      4 +-
 patterns/ShapeFactory2.java                   |      4 +-
 patterns/ShapeFactory3.java                   |      4 +-
 patterns/SingletonPattern.java                |      4 +-
 patterns/StateDemo.java                       |     20 +-
 patterns/TemplateMethod.java                  |      8 +-
 patterns/abstractfactory/GameEnvironment.java |      8 +-
 patterns/adapt/Adapter.java                   |     11 +-
 patterns/chain/ChainOfResponsibility.java     |      2 +-
 patterns/doubledispatch/Aluminum.java         |      2 +-
 patterns/doubledispatch/Cardboard.java        |      2 +-
 patterns/doubledispatch/DoubleDispatch.java   |     14 +-
 patterns/doubledispatch/Glass.java            |      2 +-
 patterns/doubledispatch/Paper.java            |      2 +-
 patterns/doubledispatch/TypedBin.java         |      2 +-
 patterns/doubledispatch/TypedBinMember.java   |      2 +-
 patterns/dynatrash/DynaTrash.java             |     12 +-
 patterns/observer/ObservedFlower.java         |      8 +-
 patterns/recyclea/RecycleA.java               |     11 +-
 patterns/recycleb/RecycleB.java               |      2 +-
 patterns/recyclec/RecycleC.java               |     10 +-
 patterns/shapes/BadShapeCreation.java         |      2 +-
 patterns/shapes/Circle.java                   |      2 +-
 patterns/shapes/FactoryMethod.java            |      2 +-
 patterns/shapes/FactoryTest.java              |      2 +-
 patterns/shapes/Shape.java                    |      5 +-
 patterns/shapes/Square.java                   |      2 +-
 patterns/shapes/Triangle.java                 |      2 +-
 patterns/state/StateMachineDemo.java          |     14 +-
 patterns/strategy/StrategyPattern.java        |      2 +-
 patterns/strategy/StrategyPattern2.java       |      2 +-
 patterns/trash/Aluminum.java                  |      5 +-
 patterns/trash/Cardboard.java                 |      5 +-
 patterns/trash/Fillable.java                  |      2 +-
 patterns/trash/FillableList.java              |      5 +-
 patterns/trash/Glass.java                     |      5 +-
 patterns/trash/Paper.java                     |      5 +-
 patterns/trash/ParseTrash.java                |      2 +-
 patterns/trash/Trash.java                     |      5 +-
 patterns/trashvisitor/Aluminum.java           |      5 +-
 patterns/trashvisitor/Cardboard.java          |      5 +-
 patterns/trashvisitor/Glass.java              |      5 +-
 patterns/trashvisitor/Paper.java              |      5 +-
 patterns/trashvisitor/TrashVisitor.java       |     32 +-
 patterns/trashvisitor/Visitable.java          |      2 +-
 patterns/trashvisitor/Visitor.java            |      2 +-
 patterns/visitor/BeeAndFlowers.java           |     23 +-
 polymorphism/CovariantReturn.java             |     17 +-
 polymorphism/FieldAccess.java                 |      5 +-
 polymorphism/Frog.java                        |     11 +-
 polymorphism/PolyConstructors.java            |      5 +-
 polymorphism/PrivateOverride.java             |      2 +-
 polymorphism/PrivateOverride2.java            |      7 +-
 polymorphism/RTTI.java                        |     10 +-
 polymorphism/ReferenceCounting.java           |      8 +-
 polymorphism/Sandwich.java                    |      2 +-
 polymorphism/Shapes.java                      |      2 +-
 polymorphism/StaticPolymorphism.java          |      5 +-
 polymorphism/Transmogrify.java                |      8 +-
 polymorphism/music/Instrument.java            |      2 +-
 polymorphism/music/Music.java                 |      2 +-
 polymorphism/music/Music2.java                |      8 +-
 polymorphism/music/Note.java                  |      2 +-
 polymorphism/music/Wind.java                  |      5 +-
 polymorphism/music3/Music3.java               |     41 +-
 polymorphism/shape/Circle.java                |      8 +-
 polymorphism/shape/RandomShapes.java          |      2 +-
 polymorphism/shape/Shape.java                 |      2 +-
 polymorphism/shape/Square.java                |      8 +-
 polymorphism/shape/Triangle.java              |      8 +-
 references/AddingClone.java                   |      8 +-
 references/Alias1.java                        |      6 +-
 references/Alias2.java                        |      2 +-
 references/CheckCloneable.java                |      5 +-
 references/CloneArrayList.java                |      5 +-
 references/Compete.java                       |     12 +-
 references/CopyConstructor.java               |      6 +-
 references/DepthReading.java                  |      8 +-
 references/HorrorFlick.java                   |      5 +-
 references/Immutable1.java                    |      2 +-
 references/Immutable2.java                    |      2 +-
 references/ImmutableInteger.java              |      2 +-
 references/ImmutableStrings.java              |      2 +-
 references/LocalCopy.java                     |     10 +-
 references/MutableInteger.java                |      5 +-
 references/OceanReading.java                  |      8 +-
 references/PassReferences.java                |      6 +-
 references/SimplerMutableInteger.java         |      2 +-
 references/Snake.java                         |      8 +-
 references/Stringer.java                      |      2 +-
 references/TemperatureReading.java            |      8 +-
 references/tests/DeepCopyTest.java            |      2 +-
 reuse/Bath.java                               |      8 +-
 reuse/Beetle.java                             |      2 +-
 reuse/BlankFinal.java                         |      2 +-
 reuse/CADSystem.java                          |     14 +-
 reuse/Car.java                                |      2 +-
 reuse/Cartoon.java                            |      2 +-
 reuse/Chess.java                              |      2 +-
 reuse/DerivedSpaceShip.java                   |      7 +-
 reuse/Detergent.java                          |      8 +-
 reuse/FinalArguments.java                     |      2 +-
 reuse/FinalData.java                          |      5 +-
 reuse/FinalOverridingIllusion.java            |      2 +-
 reuse/Hide.java                               |      2 +-
 reuse/Jurassic.java                           |      2 +-
 reuse/Lisa.java                               |      2 +-
 reuse/Orc.java                                |      8 +-
 reuse/PlaceSetting.java                       |      2 +-
 reuse/SpaceShipControls.java                  |      2 +-
 reuse/SpaceShipDelegation.java                |      2 +-
 reuse/SprinklerSystem.java                    |     10 +-
 reuse/Wind.java                               |      2 +-
 serialization/APerson.java                    |      5 +-
 serialization/AStoreCADState.java             |     16 +-
 serialization/Alien.java                      |      2 +-
 serialization/Blip3.java                      |     11 +-
 serialization/Blips.java                      |      2 +-
 serialization/FreezeAlien.java                |      2 +-
 serialization/Logon.java                      |     11 +-
 serialization/MyWorld.java                    |     33 +-
 serialization/People.java                     |      2 +-
 serialization/RecoverCADState.java            |      2 +-
 serialization/SerialCtl.java                  |      7 +-
 serialization/Worm.java                       |      8 +-
 serialization/xfiles/ThawAlien.java           |      2 +-
 standardio/ChangeSystemOut.java               |      2 +-
 standardio/Echo.java                          |      2 +-
 standardio/OSExecuteDemo.java                 |      2 +-
 standardio/Redirecting.java                   |      2 +-
 staticchecking/DogsAndRobots.cpp              |      2 +-
 staticchecking/DogsAndRobots.py               |      2 +-
 staticchecking/NoBasePetSpeak.py              |      2 +-
 staticchecking/PetSpeak.py                    |      2 +-
 staticchecking/dogsandrobots.go               |      2 +-
 staticchecking/dr/DogsAndRobots.java          |      6 +-
 .../drc/DogAndRobotCollections.java           |      2 +-
 staticchecking/latent/Latent.java             |      3 +-
 staticchecking/petspeak.go                    |      2 +-
 staticchecking/petspeak/PetSpeak.java         |      6 +-
 streams/ArrayStreams.java                     |      2 +-
 streams/Bubble.java                           |      5 +-
 streams/Bubbles.java                          |      2 +-
 streams/CollectionToStream.java               |      2 +-
 streams/CreatingOptionals.java                |      2 +-
 streams/Duplicator.java                       |      2 +-
 streams/Fibonacci.java                        |      2 +-
 streams/FileToWords.java                      |      2 +-
 streams/FileToWordsBuilder.java               |      2 +-
 streams/FileToWordsRegexp.java                |      2 +-
 streams/FileToWordsTest.java                  |      2 +-
 streams/FlatMap.java                          |      2 +-
 streams/ForEach.java                          |      4 +-
 streams/FunctionMap.java                      |      2 +-
 streams/FunctionMap2.java                     |      5 +-
 streams/FunctionMap3.java                     |      2 +-
 streams/Generator.java                        |      4 +-
 streams/ImperativeRandoms.java                |      2 +-
 streams/Informational.java                    |      2 +-
 streams/LastElement.java                      |      2 +-
 streams/Looping.java                          |      2 +-
 streams/Machine2.java                         |      2 +-
 streams/MapCollector.java                     |      5 +-
 streams/Matching.java                         |      2 +-
 streams/NumericStreamInfo.java                |      2 +-
 streams/OptionalBasics.java                   |      2 +-
 streams/OptionalFilter.java                   |      2 +-
 streams/OptionalFlatMap.java                  |      2 +-
 streams/OptionalMap.java                      |      2 +-
 streams/Optionals.java                        |      2 +-
 streams/OptionalsFromEmptyStreams.java        |      2 +-
 streams/Peeking.java                          |      2 +-
 streams/Prime.java                            |      2 +-
 streams/RandInts.java                         |      2 +-
 streams/RandomGenerators.java                 |      2 +-
 streams/RandomWords.java                      |      7 +-
 streams/Randoms.java                          |      2 +-
 streams/Ranges.java                           |      2 +-
 streams/Reduce.java                           |      5 +-
 streams/SelectElement.java                    |      2 +-
 streams/Signal.java                           |      5 +-
 streams/SortedComparator.java                 |      2 +-
 streams/SpecialCollector.java                 |      2 +-
 streams/StreamOf.java                         |      2 +-
 streams/StreamOfOptionals.java                |      2 +-
 streams/StreamOfRandoms.java                  |      2 +-
 streams/StreamOfStreams.java                  |      2 +-
 streams/TreeSetOfWords.java                   |      2 +-
 strings/ArrayListDisplay.java                 |      2 +-
 strings/BetterRead.java                       |      2 +-
 strings/Concatenation.java                    |      2 +-
 strings/Conversion.java                       |      6 +-
 strings/DatabaseException.java                |      2 +-
 strings/Finding.java                          |      2 +-
 strings/Groups.java                           |      2 +-
 strings/Hex.java                              |      2 +-
 strings/Immutable.java                        |      2 +-
 strings/InfiniteRecursion.java                |      5 +-
 strings/IntegerMatch.java                     |      2 +-
 strings/JGrep.java                            |      2 +-
 strings/ReFlags.java                          |      2 +-
 strings/ReceiptBuilder.java                   |      2 +-
 strings/Replacing.java                        |      2 +-
 strings/ReplacingStringTokenizer.java         |      2 +-
 strings/Resetting.java                        |      2 +-
 strings/Rudolph.java                          |      2 +-
 strings/ScannerDelimiter.java                 |      2 +-
 strings/SimpleFormat.java                     |      2 +-
 strings/SimpleRead.java                       |      2 +-
 strings/SplitDemo.java                        |      2 +-
 strings/Splitting.java                        |      2 +-
 strings/StartEnd.java                         |      2 +-
 strings/TestRegularExpression.java            |      2 +-
 strings/TheReplacements.java                  |      2 +-
 strings/ThreatAnalyzer.java                   |      2 +-
 strings/Turtle.java                           |      2 +-
 strings/UsingStringBuilder.java               |      2 +-
 strings/WhitherStringBuilder.java             |      2 +-
 typeinfo/AnonymousImplementation.java         |      4 +-
 typeinfo/BoundedClassReferences.java          |      2 +-
 typeinfo/ClassCasts.java                      |      2 +-
 typeinfo/ClassInitialization.java             |      6 +-
 typeinfo/DynamicSupplier.java                 |     19 +-
 typeinfo/FamilyVsExactType.java               |      2 +-
 typeinfo/GenericClassReferences.java          |      4 +-
 typeinfo/HiddenImplementation.java            |      2 +-
 typeinfo/ID2.java                             |     27 +
 typeinfo/InnerImplementation.java             |      4 +-
 typeinfo/InterfaceViolation.java              |      4 +-
 typeinfo/ModifyingPrivateFields.java          |      5 +-
 typeinfo/NullRobot.java                       |     16 +-
 typeinfo/Operation.java                       |      2 +-
 typeinfo/Person.java                          |      5 +-
 typeinfo/PetCount.java                        |     65 -
 typeinfo/PetCounter.java                      |     64 +
 typeinfo/{PetCount2.java => PetCounter2.java} |      8 +-
 typeinfo/{PetCount3.java => PetCounter3.java} |     22 +-
 typeinfo/{PetCount4.java => PetCounter4.java} |     14 +-
 typeinfo/Position.java                        |      5 +-
 typeinfo/RegisteredFactories.java             |     16 +-
 typeinfo/Robot.java                           |      2 +-
 typeinfo/SelectingMethods.java                |     17 +-
 typeinfo/Shapes.java                          |     24 +-
 typeinfo/ShowMethods.java                     |      4 +-
 typeinfo/SimpleDynamicProxy.java              |      7 +-
 typeinfo/SimpleProxyDemo.java                 |     14 +-
 .../{SnowRemovalRobot.java => SnowRobot.java} |     19 +-
 typeinfo/Staff.java                           |      2 +-
 typeinfo/SweetShop.java                       |      2 +-
 typeinfo/WildcardClassReferences.java         |      2 +-
 typeinfo/interfacea/A.java                    |      2 +-
 typeinfo/packageaccess/HiddenC.java           |      5 +-
 typeinfo/pets/Cat.java                        |      2 +-
 typeinfo/pets/Creator.java                    |     38 +
 typeinfo/pets/Cymric.java                     |      2 +-
 typeinfo/pets/Dog.java                        |      2 +-
 typeinfo/pets/EgyptianMau.java                |      2 +-
 ...ameCreator.java => ForNamePetCreator.java} |      9 +-
 typeinfo/pets/Hamster.java                    |      2 +-
 typeinfo/pets/Individual.java                 |     14 +-
 typeinfo/pets/LiteralPetCreator.java          |     39 -
 typeinfo/pets/Manx.java                       |      2 +-
 typeinfo/pets/Mouse.java                      |      2 +-
 typeinfo/pets/Mutt.java                       |      2 +-
 typeinfo/pets/Person.java                     |      2 +-
 typeinfo/pets/Pet.java                        |      2 +-
 typeinfo/pets/PetCreator.java                 |     54 +-
 typeinfo/pets/Pets.java                       |     30 -
 typeinfo/pets/Pug.java                        |      2 +-
 typeinfo/pets/Rat.java                        |      2 +-
 typeinfo/pets/Rodent.java                     |      2 +-
 typeinfo/toys/GenericToyTest.java             |     15 +-
 typeinfo/toys/ToyTest.java                    |     10 +-
 validating/Assert1.java                       |      2 +-
 validating/Assert2.java                       |      2 +-
 validating/BadMicroBenchmark.java             |      5 +-
 validating/BadMicroBenchmark2.java            |     10 +-
 validating/CircularQueue.java                 |      2 +-
 validating/CircularQueueException.java        |      2 +-
 validating/CountedList.java                   |      2 +-
 validating/GuavaAssertions.java               |      2 +-
 validating/GuavaPreconditions.java            |      2 +-
 validating/Inverter1.java                     |      3 +-
 validating/Inverter2.java                     |      4 +-
 validating/Inverter3.java                     |      4 +-
 validating/Inverter4.java                     |      4 +-
 validating/LoaderAssertions.java              |      2 +-
 validating/NonNullConstruction.java           |      2 +-
 validating/SLF4JLevels.java                   |     12 +-
 validating/SLF4JLogging.java                  |      4 +-
 validating/SimpleDebugging.java               |      2 +-
 validating/StringInverter.java                |      2 +-
 validating/jmh/JMH1.java                      |      2 +-
 validating/jmh/JMH2.java                      |      2 +-
 validating/jmh/JMH3.java                      |      2 +-
 validating/tests/CircularQueueTest.java       |      2 +-
 validating/tests/CountedListTest.java         |      2 +-
 .../tests/DynamicStringInverterTests.java     |      2 +-
 validating/tests/StringInverterTests.java     |      2 +-
 1034 files changed, 102355 insertions(+), 2768 deletions(-)
 delete mode 100644 CI.txt
 create mode 100644 concurrent/PSP2.txt
 create mode 100644 concurrent/primes.txt
 create mode 100644 newio/data.txt
 create mode 100644 typeinfo/ID2.java
 delete mode 100644 typeinfo/PetCount.java
 create mode 100644 typeinfo/PetCounter.java
 rename typeinfo/{PetCount2.java => PetCounter2.java} (75%)
 rename typeinfo/{PetCount3.java => PetCounter3.java} (75%)
 rename typeinfo/{PetCount4.java => PetCounter4.java} (70%)
 rename typeinfo/{SnowRemovalRobot.java => SnowRobot.java} (73%)
 create mode 100644 typeinfo/pets/Creator.java
 rename typeinfo/pets/{ForNameCreator.java => ForNamePetCreator.java} (82%)
 delete mode 100644 typeinfo/pets/LiteralPetCreator.java
 delete mode 100644 typeinfo/pets/Pets.java

diff --git a/CI.txt b/CI.txt
deleted file mode 100644
index 524ee206d..000000000
--- a/CI.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Links formerly in the README. Both of these mysteriously started breaking.
-
-[![](https://travis-ci.org/BruceEckel/OnJava8-Examples.svg?branch=master)](https://travis-ci.org/BruceEckel/OnJava8-Examples)
-
-[![](https://ci.appveyor.com/api/projects/status/github/BruceEckel/OnJava8-Examples)](https://ci.appveyor.com/project/BruceEckel/onjava-examples)
diff --git a/Copyright.txt b/Copyright.txt
index f0d35035f..8eb3289e0 100644
--- a/Copyright.txt
+++ b/Copyright.txt
@@ -1,5 +1,5 @@
 // Copyright.txt
-This computer source code is Copyright ©2020 MindView LLC.
+This computer source code is Copyright ©2021 MindView LLC.
 All Rights Reserved.
 
 Permission to use, copy, modify, and distribute this
diff --git a/annotations/AUComposition.java b/annotations/AUComposition.java
index ee43e88d3..94d51e607 100644
--- a/annotations/AUComposition.java
+++ b/annotations/AUComposition.java
@@ -1,5 +1,5 @@
 // annotations/AUComposition.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating non-embedded tests
@@ -23,8 +23,8 @@ boolean tMethodTwo() {
 }
 /* Output:
 annotations.AUComposition
+  . tMethodOne
   . tMethodTwo This is methodTwo
 
-  . tMethodOne
 OK (2 tests)
 */
diff --git a/annotations/AUExternalTest.java b/annotations/AUExternalTest.java
index cce5c4292..71c8f2f4b 100644
--- a/annotations/AUExternalTest.java
+++ b/annotations/AUExternalTest.java
@@ -1,5 +1,5 @@
 // annotations/AUExternalTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating non-embedded tests
diff --git a/annotations/AtUnitExample1.java b/annotations/AtUnitExample1.java
index 3b1f6fece..de4cc6c64 100644
--- a/annotations/AtUnitExample1.java
+++ b/annotations/AtUnitExample1.java
@@ -1,5 +1,5 @@
 // annotations/AtUnitExample1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.AtUnit
@@ -34,15 +34,15 @@ boolean anotherDisappointment() {
 }
 /* Output:
 annotations.AtUnitExample1
-  . m3
+  . anotherDisappointment (failed)
   . methodOneTest
+  . failureTest (failed)
   . m2 This is methodTwo
 
-  . failureTest (failed)
-  . anotherDisappointment (failed)
+  . m3
 (5 tests)
 
 >>> 2 FAILURES <<<
-  annotations.AtUnitExample1: failureTest
   annotations.AtUnitExample1: anotherDisappointment
+  annotations.AtUnitExample1: failureTest
 */
diff --git a/annotations/AtUnitExample2.java b/annotations/AtUnitExample2.java
index bf3f1d5cb..855c33133 100644
--- a/annotations/AtUnitExample2.java
+++ b/annotations/AtUnitExample2.java
@@ -1,5 +1,5 @@
 // annotations/AtUnitExample2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assertions and exceptions can be used in @Tests
@@ -40,18 +40,18 @@ boolean assertAndReturn() {
 }
 /* Output:
 annotations.AtUnitExample2
+  . assertFailureExample java.lang.AssertionError: What
+a surprise!
+(failed)
+  . assertExample
   . exceptionExample java.io.FileNotFoundException:
 nofile.txt (The system cannot find the file specified)
 (failed)
-  . assertExample
   . assertAndReturn This is methodTwo
 
-  . assertFailureExample java.lang.AssertionError: What
-a surprise!
-(failed)
 (4 tests)
 
 >>> 2 FAILURES <<<
-  annotations.AtUnitExample2: exceptionExample
   annotations.AtUnitExample2: assertFailureExample
+  annotations.AtUnitExample2: exceptionExample
 */
diff --git a/annotations/AtUnitExample3.java b/annotations/AtUnitExample3.java
index 02092591b..ed1a93911 100644
--- a/annotations/AtUnitExample3.java
+++ b/annotations/AtUnitExample3.java
@@ -1,5 +1,5 @@
 // annotations/AtUnitExample3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.AtUnit
@@ -35,8 +35,8 @@ boolean methodOneTest() {
 /* Output:
 annotations.AtUnitExample3
   . initialization
+  . methodOneTest
   . m2 This is methodTwo
 
-  . methodOneTest
 OK (3 tests)
 */
diff --git a/annotations/AtUnitExample4.java b/annotations/AtUnitExample4.java
index 6b644b178..23bc21efb 100644
--- a/annotations/AtUnitExample4.java
+++ b/annotations/AtUnitExample4.java
@@ -1,5 +1,5 @@
 // annotations/AtUnitExample4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.AtUnit
diff --git a/annotations/AtUnitExample5.java b/annotations/AtUnitExample5.java
index d7cf95dfc..4e4ceb4f4 100644
--- a/annotations/AtUnitExample5.java
+++ b/annotations/AtUnitExample5.java
@@ -1,5 +1,5 @@
 // annotations/AtUnitExample5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.AtUnit
@@ -14,8 +14,7 @@ public class AtUnitExample5 {
   public AtUnitExample5(String text) {
     this.text = text;
   }
-  @Override
-  public String toString() { return text; }
+  @Override public String toString() { return text; }
   @TestProperty
   static PrintWriter output;
   @TestProperty
diff --git a/annotations/DemoProcessFiles.java b/annotations/DemoProcessFiles.java
index 6e2505373..13f12bbf5 100644
--- a/annotations/DemoProcessFiles.java
+++ b/annotations/DemoProcessFiles.java
@@ -1,5 +1,5 @@
 // annotations/DemoProcessFiles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.ProcessFiles;
diff --git a/annotations/HashSetTest.java b/annotations/HashSetTest.java
index 8dfa8a9c6..5b6e7541a 100644
--- a/annotations/HashSetTest.java
+++ b/annotations/HashSetTest.java
@@ -1,5 +1,5 @@
 // annotations/HashSetTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.AtUnit
@@ -29,8 +29,8 @@ void tRemove() {
 }
 /* Output:
 annotations.HashSetTest
+  . tContains
   . initialization
   . tRemove
-  . tContains
 OK (3 tests)
 */
diff --git a/annotations/PasswordUtils.java b/annotations/PasswordUtils.java
index 74a6df78e..549412696 100644
--- a/annotations/PasswordUtils.java
+++ b/annotations/PasswordUtils.java
@@ -1,5 +1,5 @@
 // annotations/PasswordUtils.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/annotations/SimulatingNull.java b/annotations/SimulatingNull.java
index 8166802bc..af1282f88 100644
--- a/annotations/SimulatingNull.java
+++ b/annotations/SimulatingNull.java
@@ -1,5 +1,5 @@
 // annotations/SimulatingNull.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.annotation.*;
diff --git a/annotations/StackL.java b/annotations/StackL.java
index 6ff806aff..246454c25 100644
--- a/annotations/StackL.java
+++ b/annotations/StackL.java
@@ -1,5 +1,5 @@
 // annotations/StackL.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A stack built on a LinkedList
diff --git a/annotations/StackLStringTst.java b/annotations/StackLStringTst.java
index 49aef9b76..b7d8250f7 100644
--- a/annotations/StackLStringTst.java
+++ b/annotations/StackLStringTst.java
@@ -1,5 +1,5 @@
 // annotations/StackLStringTst.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Applying @Unit to generics
@@ -35,8 +35,8 @@ void tTop() {
 }
 /* Output:
 annotations.StackLStringTst
+  . tPop
   . tTop
   . tPush
-  . tPop
 OK (3 tests)
 */
diff --git a/annotations/Testable.java b/annotations/Testable.java
index bc48f4161..b23d0e620 100644
--- a/annotations/Testable.java
+++ b/annotations/Testable.java
@@ -1,5 +1,5 @@
 // annotations/Testable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations;
diff --git a/annotations/UseCase.java b/annotations/UseCase.java
index dfce31490..c65735185 100644
--- a/annotations/UseCase.java
+++ b/annotations/UseCase.java
@@ -1,5 +1,5 @@
 // annotations/UseCase.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.annotation.*;
diff --git a/annotations/UseCaseTracker.java b/annotations/UseCaseTracker.java
index 5489b762b..53cc92795 100644
--- a/annotations/UseCaseTracker.java
+++ b/annotations/UseCaseTracker.java
@@ -1,5 +1,5 @@
 // annotations/UseCaseTracker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -27,11 +27,11 @@ public static void main(String[] args) {
   }
 }
 /* Output:
+Found Use Case 49
+  New passwords can't equal previously used ones
 Found Use Case 48
   no description
 Found Use Case 47
   Passwords must contain at least one numeric
-Found Use Case 49
-  New passwords can't equal previously used ones
 Missing use case 50
 */
diff --git a/annotations/database/Constraints.java b/annotations/database/Constraints.java
index 4e4e40fc8..5631f52e9 100644
--- a/annotations/database/Constraints.java
+++ b/annotations/database/Constraints.java
@@ -1,5 +1,5 @@
 // annotations/database/Constraints.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations.database;
diff --git a/annotations/database/DBTable.java b/annotations/database/DBTable.java
index 9aa5562f4..3d345d990 100644
--- a/annotations/database/DBTable.java
+++ b/annotations/database/DBTable.java
@@ -1,5 +1,5 @@
 // annotations/database/DBTable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations.database;
diff --git a/annotations/database/Member.java b/annotations/database/Member.java
index d722a3b10..ae5723ac8 100644
--- a/annotations/database/Member.java
+++ b/annotations/database/Member.java
@@ -1,5 +1,5 @@
 // annotations/database/Member.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations.database;
@@ -16,7 +16,8 @@ public class Member {
   public String getReference() { return reference; }
   public String getFirstName() { return firstName; }
   public String getLastName() { return lastName; }
-  @Override
-  public String toString() { return reference; }
+  @Override public String toString() {
+    return reference;
+  }
   public Integer getAge() { return age; }
 }
diff --git a/annotations/database/SQLInteger.java b/annotations/database/SQLInteger.java
index 635a907cd..4df1e7dd6 100644
--- a/annotations/database/SQLInteger.java
+++ b/annotations/database/SQLInteger.java
@@ -1,5 +1,5 @@
 // annotations/database/SQLInteger.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations.database;
diff --git a/annotations/database/SQLString.java b/annotations/database/SQLString.java
index dac9919f5..c452d1e95 100644
--- a/annotations/database/SQLString.java
+++ b/annotations/database/SQLString.java
@@ -1,5 +1,5 @@
 // annotations/database/SQLString.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package annotations.database;
diff --git a/annotations/database/TableCreator.java b/annotations/database/TableCreator.java
index 53322fc72..d2be7c5e1 100644
--- a/annotations/database/TableCreator.java
+++ b/annotations/database/TableCreator.java
@@ -1,5 +1,5 @@
 // annotations/database/TableCreator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Reflection-based annotation processor
diff --git a/annotations/database/Uniqueness.java b/annotations/database/Uniqueness.java
index 1aa1a36c9..7959fe700 100644
--- a/annotations/database/Uniqueness.java
+++ b/annotations/database/Uniqueness.java
@@ -1,5 +1,5 @@
 // annotations/database/Uniqueness.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sample of nested annotations
diff --git a/annotations/ifx/ExtractInterface.java b/annotations/ifx/ExtractInterface.java
index 70a94bf58..c823fe9ca 100644
--- a/annotations/ifx/ExtractInterface.java
+++ b/annotations/ifx/ExtractInterface.java
@@ -1,5 +1,5 @@
 // annotations/ifx/ExtractInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // javac-based annotation processing
diff --git a/annotations/ifx/IfaceExtractorProcessor.java b/annotations/ifx/IfaceExtractorProcessor.java
index d17156f88..fae22607c 100644
--- a/annotations/ifx/IfaceExtractorProcessor.java
+++ b/annotations/ifx/IfaceExtractorProcessor.java
@@ -1,5 +1,5 @@
 // annotations/ifx/IfaceExtractorProcessor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // javac-based annotation processing
@@ -21,14 +21,12 @@ public class IfaceExtractorProcessor
     interfaceMethods = new ArrayList<>();
   Elements elementUtils;
   private ProcessingEnvironment processingEnv;
-  @Override
-  public void init(
+  @Override public void init(
     ProcessingEnvironment processingEnv) {
     this.processingEnv = processingEnv;
     elementUtils = processingEnv.getElementUtils();
   }
-  @Override
-  public boolean process(
+  @Override public boolean process(
     Set annotations,
     RoundEnvironment env) {
     for(Element elem:env.getElementsAnnotatedWith(
diff --git a/annotations/ifx/Multiplier.java b/annotations/ifx/Multiplier.java
index b5b99a1b8..25678fd5a 100644
--- a/annotations/ifx/Multiplier.java
+++ b/annotations/ifx/Multiplier.java
@@ -1,5 +1,5 @@
 // annotations/ifx/Multiplier.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // javac-based annotation processing
diff --git a/annotations/simplest/Simple.java b/annotations/simplest/Simple.java
index 0dc555ce5..101b7900a 100644
--- a/annotations/simplest/Simple.java
+++ b/annotations/simplest/Simple.java
@@ -1,5 +1,5 @@
 // annotations/simplest/Simple.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A bare-bones annotation
diff --git a/annotations/simplest/SimpleProcessor.java b/annotations/simplest/SimpleProcessor.java
index a85d8987a..1dda51955 100644
--- a/annotations/simplest/SimpleProcessor.java
+++ b/annotations/simplest/SimpleProcessor.java
@@ -1,5 +1,5 @@
 // annotations/simplest/SimpleProcessor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A bare-bones annotation processor
@@ -14,8 +14,7 @@
 @SupportedSourceVersion(SourceVersion.RELEASE_8)
 public class SimpleProcessor
 extends AbstractProcessor {
-  @Override
-  public boolean process(
+  @Override public boolean process(
     Set annotations,
     RoundEnvironment env) {
     for(TypeElement t : annotations)
diff --git a/annotations/simplest/SimpleTest.java b/annotations/simplest/SimpleTest.java
index 689d12fdc..e97d5871e 100644
--- a/annotations/simplest/SimpleTest.java
+++ b/annotations/simplest/SimpleTest.java
@@ -1,5 +1,5 @@
 // annotations/simplest/SimpleTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test the "Simple" annotation
diff --git a/arrays/AlphabeticSearch.java b/arrays/AlphabeticSearch.java
index 70adc8ff5..a6dea2c2e 100644
--- a/arrays/AlphabeticSearch.java
+++ b/arrays/AlphabeticSearch.java
@@ -1,5 +1,5 @@
 // arrays/AlphabeticSearch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Searching with a Comparator import
diff --git a/arrays/ArrayCopying.java b/arrays/ArrayCopying.java
index c68c2a0d6..b5dc136f8 100644
--- a/arrays/ArrayCopying.java
+++ b/arrays/ArrayCopying.java
@@ -1,5 +1,5 @@
 // arrays/ArrayCopying.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrate Arrays.copy() and Arrays.copyOf()
@@ -10,8 +10,7 @@
 class Sup { // Superclass
   private int id;
   Sup(int n) { id = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName() + id;
   }
 }
@@ -26,21 +25,21 @@ public static void main(String[] args) {
     int[] a1 = new int[SZ];
     Arrays.setAll(a1, new Count.Integer()::get);
     show("a1", a1);
-    int[] a2 = Arrays.copyOf(a1, a1.length); // [1]
+    int[] a2 = Arrays.copyOf(a1, a1.length);   // [1]
     // Prove they are distinct arrays:
     Arrays.fill(a1, 1);
     show("a1", a1);
     show("a2", a2);
 
     // Create a shorter result:
-    a2 = Arrays.copyOf(a2, a2.length/2); // [2]
+    a2 = Arrays.copyOf(a2, a2.length/2);       // [2]
     show("a2", a2);
     // Allocate more space:
     a2 = Arrays.copyOf(a2, a2.length + 5);
     show("a2", a2);
 
     // Also copies wrapped arrays:
-    Integer[] a3 = new Integer[SZ]; // [3]
+    Integer[] a3 = new Integer[SZ];            // [3]
     Arrays.setAll(a3, new Count.Integer()::get);
     Integer[] a4 = Arrays.copyOfRange(a3, 4, 12);
     show("a4", a4);
@@ -62,7 +61,7 @@ public static void main(String[] args) {
     Arrays.setAll(b2, Sup::new);
     try {
       Sub[] d3 = Arrays.copyOf(
-        b2, b2.length, Sub[].class); // [6]
+        b2, b2.length, Sub[].class);           // [6]
     } catch(Exception e) {
       System.out.println(e);
     }
diff --git a/arrays/ArrayOfGenericType.java b/arrays/ArrayOfGenericType.java
index 68f9e8de1..6c2df8468 100644
--- a/arrays/ArrayOfGenericType.java
+++ b/arrays/ArrayOfGenericType.java
@@ -1,5 +1,5 @@
 // arrays/ArrayOfGenericType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/arrays/ArrayOfGenerics.java b/arrays/ArrayOfGenerics.java
index 79971d7ab..8040dfa1f 100644
--- a/arrays/ArrayOfGenerics.java
+++ b/arrays/ArrayOfGenerics.java
@@ -1,5 +1,5 @@
 // arrays/ArrayOfGenerics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/ArrayOptions.java b/arrays/ArrayOptions.java
index bb6cbfbb6..c313d9a29 100644
--- a/arrays/ArrayOptions.java
+++ b/arrays/ArrayOptions.java
@@ -1,5 +1,5 @@
 // arrays/ArrayOptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Initialization & re-assignment of arrays
diff --git a/arrays/ArraySearching.java b/arrays/ArraySearching.java
index fb4085e9b..deae72faf 100644
--- a/arrays/ArraySearching.java
+++ b/arrays/ArraySearching.java
@@ -1,5 +1,5 @@
 // arrays/ArraySearching.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Arrays.binarySearch()
diff --git a/arrays/AssemblingMultidimensionalArrays.java b/arrays/AssemblingMultidimensionalArrays.java
index e79302b30..945c338e4 100644
--- a/arrays/AssemblingMultidimensionalArrays.java
+++ b/arrays/AssemblingMultidimensionalArrays.java
@@ -1,5 +1,5 @@
 // arrays/AssemblingMultidimensionalArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating multidimensional arrays
diff --git a/arrays/AutoboxingArrays.java b/arrays/AutoboxingArrays.java
index 25b3a0e88..d8601627c 100644
--- a/arrays/AutoboxingArrays.java
+++ b/arrays/AutoboxingArrays.java
@@ -1,5 +1,5 @@
 // arrays/AutoboxingArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/CollectionComparison.java b/arrays/CollectionComparison.java
index fc703c0a1..b5f0b1132 100644
--- a/arrays/CollectionComparison.java
+++ b/arrays/CollectionComparison.java
@@ -1,5 +1,5 @@
 // arrays/CollectionComparison.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -9,8 +9,7 @@
 class BerylliumSphere {
   private static long counter;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Sphere " + id;
   }
 }
diff --git a/arrays/CompType.java b/arrays/CompType.java
index 621b33d18..8d7e82a33 100644
--- a/arrays/CompType.java
+++ b/arrays/CompType.java
@@ -1,5 +1,5 @@
 // arrays/CompType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Implementing Comparable in a class
@@ -16,15 +16,13 @@ public CompType(int n1, int n2) {
     i = n1;
     j = n2;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     String result = "[i = " + i + ", j = " + j + "]";
     if(count++ % 3 == 0)
       result += "\n";
     return result;
   }
-  @Override
-  public int compareTo(CompType rv) {
+  @Override public int compareTo(CompType rv) {
     return (i < rv.i ? -1 : (i == rv.i ? 0 : 1));
   }
   private static SplittableRandom r =
diff --git a/arrays/ComparatorTest.java b/arrays/ComparatorTest.java
index 68f7e3805..fbe385879 100644
--- a/arrays/ComparatorTest.java
+++ b/arrays/ComparatorTest.java
@@ -1,5 +1,5 @@
 // arrays/ComparatorTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Implementing a Comparator for a class
diff --git a/arrays/ComparingArrays.java b/arrays/ComparingArrays.java
index 9ddad69d0..c97c22d04 100644
--- a/arrays/ComparingArrays.java
+++ b/arrays/ComparingArrays.java
@@ -1,5 +1,5 @@
 // arrays/ComparingArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Arrays.equals()
diff --git a/arrays/CountUpward.java b/arrays/CountUpward.java
index bbeb02ba7..3ac361c86 100644
--- a/arrays/CountUpward.java
+++ b/arrays/CountUpward.java
@@ -1,5 +1,5 @@
 // arrays/CountUpward.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/FillingArrays.java b/arrays/FillingArrays.java
index df54e62f3..b7445dfdb 100644
--- a/arrays/FillingArrays.java
+++ b/arrays/FillingArrays.java
@@ -1,5 +1,5 @@
 // arrays/FillingArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Arrays.fill()
diff --git a/arrays/IceCreamFlavors.java b/arrays/IceCreamFlavors.java
index 5e9d2b610..1be802edd 100644
--- a/arrays/IceCreamFlavors.java
+++ b/arrays/IceCreamFlavors.java
@@ -1,5 +1,5 @@
 // arrays/IceCreamFlavors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Returning arrays from methods
diff --git a/arrays/ModifyExisting.java b/arrays/ModifyExisting.java
index d74df78e2..0c33b8d19 100644
--- a/arrays/ModifyExisting.java
+++ b/arrays/ModifyExisting.java
@@ -1,5 +1,5 @@
 // arrays/ModifyExisting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -11,7 +11,7 @@ public static void main(String[] args) {
     double[] da = new double[7];
     Arrays.setAll(da, new Rand.Double()::get);
     show(da);
-    Arrays.setAll(da, n -> da[n] / 100); // [1]
+    Arrays.setAll(da, n -> da[n] / 100);       // [1]
     show(da);
   }
 }
diff --git a/arrays/MultiDimWrapperArray.java b/arrays/MultiDimWrapperArray.java
index 1185d0f93..5055a1cbf 100644
--- a/arrays/MultiDimWrapperArray.java
+++ b/arrays/MultiDimWrapperArray.java
@@ -1,5 +1,5 @@
 // arrays/MultiDimWrapperArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Multidimensional arrays of "wrapper" objects
diff --git a/arrays/MultidimensionalObjectArrays.java b/arrays/MultidimensionalObjectArrays.java
index 998e7c991..8c91e7b5a 100644
--- a/arrays/MultidimensionalObjectArrays.java
+++ b/arrays/MultidimensionalObjectArrays.java
@@ -1,5 +1,5 @@
 // arrays/MultidimensionalObjectArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/MultidimensionalPrimitiveArray.java b/arrays/MultidimensionalPrimitiveArray.java
index 8ed5884f9..ffebf2b6f 100644
--- a/arrays/MultidimensionalPrimitiveArray.java
+++ b/arrays/MultidimensionalPrimitiveArray.java
@@ -1,5 +1,5 @@
 // arrays/MultidimensionalPrimitiveArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/ParallelPrefix1.java b/arrays/ParallelPrefix1.java
index e180d019a..243753168 100644
--- a/arrays/ParallelPrefix1.java
+++ b/arrays/ParallelPrefix1.java
@@ -1,5 +1,5 @@
 // arrays/ParallelPrefix1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/ParallelPrefix2.java b/arrays/ParallelPrefix2.java
index 5288d3cea..c7963fe83 100644
--- a/arrays/ParallelPrefix2.java
+++ b/arrays/ParallelPrefix2.java
@@ -1,5 +1,5 @@
 // arrays/ParallelPrefix2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/ParallelPrefix3.java b/arrays/ParallelPrefix3.java
index ed2751dca..88d32916e 100644
--- a/arrays/ParallelPrefix3.java
+++ b/arrays/ParallelPrefix3.java
@@ -1,5 +1,5 @@
 // arrays/ParallelPrefix3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
diff --git a/arrays/ParallelSetAll.java b/arrays/ParallelSetAll.java
index f6c47ff5f..787d2daf9 100644
--- a/arrays/ParallelSetAll.java
+++ b/arrays/ParallelSetAll.java
@@ -1,5 +1,5 @@
 // arrays/ParallelSetAll.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/ParameterizedArrayType.java b/arrays/ParameterizedArrayType.java
index 06c1021ce..7213afde5 100644
--- a/arrays/ParameterizedArrayType.java
+++ b/arrays/ParameterizedArrayType.java
@@ -1,5 +1,5 @@
 // arrays/ParameterizedArrayType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/arrays/PythonLists.py b/arrays/PythonLists.py
index 910daf180..3ed60ee91 100644
--- a/arrays/PythonLists.py
+++ b/arrays/PythonLists.py
@@ -1,5 +1,5 @@
 # arrays/PythonLists.py
-# (c)2020 MindView LLC: see Copyright.txt
+# (c)2021 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 
@@ -20,7 +20,7 @@ def getReversed(self):
         reversed.reverse() # Built-in list method
         return reversed
 
-# No 'new' necessary for object creation:
+# No 'new' necessary for object creation: {#24-no-new-necessary-for-object-creation}
 list2 = MyList(aList)
 print(type(list2)) # 
 print(list2.getReversed()) # [8, 7, 6, 5, 4, 3, 2, 1]
diff --git a/arrays/RaggedArray.java b/arrays/RaggedArray.java
index bd7d625bb..dfae93d64 100644
--- a/arrays/RaggedArray.java
+++ b/arrays/RaggedArray.java
@@ -1,5 +1,5 @@
 // arrays/RaggedArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -14,7 +14,7 @@ public static void main(String[] args) {
       a[i] = new int[rand.nextInt(5)][];
       for(int j = 0; j < a[i].length; j++) {
         a[i][j] = new int[rand.nextInt(5)];
-        Arrays.setAll(a[i][j], n -> val++); // [1]
+        Arrays.setAll(a[i][j], n -> val++);     // [1]
       }
     }
     System.out.println(Arrays.deepToString(a));
diff --git a/arrays/Reverse.java b/arrays/Reverse.java
index 9a7de6785..0f2719cec 100644
--- a/arrays/Reverse.java
+++ b/arrays/Reverse.java
@@ -1,5 +1,5 @@
 // arrays/Reverse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The Collections.reverseOrder() Comparator
diff --git a/arrays/SimpleSetAll.java b/arrays/SimpleSetAll.java
index 70336e793..072975b00 100644
--- a/arrays/SimpleSetAll.java
+++ b/arrays/SimpleSetAll.java
@@ -1,5 +1,5 @@
 // arrays/SimpleSetAll.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -8,8 +8,9 @@
 class Bob {
   final int id;
   Bob(int n) { id = n; }
-  @Override
-  public String toString() { return "Bob" + id; }
+  @Override public String toString() {
+    return "Bob" + id;
+  }
 }
 
 public class SimpleSetAll {
@@ -22,13 +23,13 @@ public static void main(String[] args) {
     int[] ia = new int[SZ];
     long[] la = new long[SZ];
     double[] da = new double[SZ];
-    Arrays.setAll(ia, n -> n); // [1]
+    Arrays.setAll(ia, n -> n);                 // [1]
     Arrays.setAll(la, n -> n);
     Arrays.setAll(da, n -> n);
     show(ia);
     show(la);
     show(da);
-    Arrays.setAll(ia, n -> val++); // [2]
+    Arrays.setAll(ia, n -> val++);             // [2]
     Arrays.setAll(la, n -> val++);
     Arrays.setAll(da, n -> val++);
     show(ia);
@@ -36,11 +37,11 @@ public static void main(String[] args) {
     show(da);
 
     Bob[] ba = new Bob[SZ];
-    Arrays.setAll(ba, Bob::new); // [3]
+    Arrays.setAll(ba, Bob::new);               // [3]
     show(ba);
 
     Character[] ca = new Character[SZ];
-    Arrays.setAll(ca, SimpleSetAll::getChar); // [4]
+    Arrays.setAll(ca, SimpleSetAll::getChar);  // [4]
     show(ca);
   }
 }
diff --git a/arrays/StreamFromArray.java b/arrays/StreamFromArray.java
index 69628703c..b30ed6d44 100644
--- a/arrays/StreamFromArray.java
+++ b/arrays/StreamFromArray.java
@@ -1,5 +1,5 @@
 // arrays/StreamFromArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/StringSorting.java b/arrays/StringSorting.java
index 0da5c7337..aef57048d 100644
--- a/arrays/StringSorting.java
+++ b/arrays/StringSorting.java
@@ -1,5 +1,5 @@
 // arrays/StringSorting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sorting an array of Strings
diff --git a/arrays/TestConvertTo.java b/arrays/TestConvertTo.java
index 8ecb72a62..8b8f849a5 100644
--- a/arrays/TestConvertTo.java
+++ b/arrays/TestConvertTo.java
@@ -1,5 +1,5 @@
 // arrays/TestConvertTo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/TestCount.java b/arrays/TestCount.java
index a77e00f76..b6b3e7b8d 100644
--- a/arrays/TestCount.java
+++ b/arrays/TestCount.java
@@ -1,5 +1,5 @@
 // arrays/TestCount.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test counting generators
diff --git a/arrays/TestRand.java b/arrays/TestRand.java
index 17e0718f3..45d248ade 100644
--- a/arrays/TestRand.java
+++ b/arrays/TestRand.java
@@ -1,5 +1,5 @@
 // arrays/TestRand.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test random generators
diff --git a/arrays/ThreeDWithNew.java b/arrays/ThreeDWithNew.java
index 7aaef0694..f1ab3393a 100644
--- a/arrays/ThreeDWithNew.java
+++ b/arrays/ThreeDWithNew.java
@@ -1,5 +1,5 @@
 // arrays/ThreeDWithNew.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/arrays/jmh/ParallelSort.java b/arrays/jmh/ParallelSort.java
index fe0b505b5..64ff004d3 100644
--- a/arrays/jmh/ParallelSort.java
+++ b/arrays/jmh/ParallelSort.java
@@ -1,5 +1,5 @@
 // arrays/jmh/ParallelSort.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package arrays.jmh;
diff --git a/collections/AdapterMethodIdiom.java b/collections/AdapterMethodIdiom.java
index a97abb411..47fe3e8be 100644
--- a/collections/AdapterMethodIdiom.java
+++ b/collections/AdapterMethodIdiom.java
@@ -1,5 +1,5 @@
 // collections/AdapterMethodIdiom.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The "Adapter Method" idiom uses for-in
@@ -15,10 +15,12 @@ public Iterable reversed() {
       public Iterator iterator() {
         return new Iterator() {
           int current = size() - 1;
-          public boolean hasNext() {
+          @Override public boolean hasNext() {
             return current > -1;
           }
+          @Override
           public T next() { return get(current--); }
+          @Override
           public void remove() { // Not implemented
             throw new UnsupportedOperationException();
           }
diff --git a/collections/AddingGroups.java b/collections/AddingGroups.java
index ecfc8a5a1..13fcdcaf1 100644
--- a/collections/AddingGroups.java
+++ b/collections/AddingGroups.java
@@ -1,5 +1,5 @@
 // collections/AddingGroups.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adding groups of elements to Collection objects
diff --git a/collections/ApplesAndOrangesWithGenerics.java b/collections/ApplesAndOrangesWithGenerics.java
index c251672ce..674ee7b47 100644
--- a/collections/ApplesAndOrangesWithGenerics.java
+++ b/collections/ApplesAndOrangesWithGenerics.java
@@ -1,5 +1,5 @@
 // collections/ApplesAndOrangesWithGenerics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/ApplesAndOrangesWithoutGenerics.java b/collections/ApplesAndOrangesWithoutGenerics.java
index 6afacd12b..6ca4a6f4b 100644
--- a/collections/ApplesAndOrangesWithoutGenerics.java
+++ b/collections/ApplesAndOrangesWithoutGenerics.java
@@ -1,5 +1,5 @@
 // collections/ApplesAndOrangesWithoutGenerics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple collection use (suppressing compiler warnings)
diff --git a/collections/ArrayIsNotIterable.java b/collections/ArrayIsNotIterable.java
index d496feb16..a9660a67c 100644
--- a/collections/ArrayIsNotIterable.java
+++ b/collections/ArrayIsNotIterable.java
@@ -1,5 +1,5 @@
 // collections/ArrayIsNotIterable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/AsListInference.java b/collections/AsListInference.java
index ef8137083..e4b825447 100644
--- a/collections/AsListInference.java
+++ b/collections/AsListInference.java
@@ -1,5 +1,5 @@
 // collections/AsListInference.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/CollectionDifferences.java b/collections/CollectionDifferences.java
index 711f7bd79..a8ea09d01 100644
--- a/collections/CollectionDifferences.java
+++ b/collections/CollectionDifferences.java
@@ -1,5 +1,5 @@
 // collections/CollectionDifferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/collections/CollectionSequence.java b/collections/CollectionSequence.java
index 6a12ed69f..65f93254e 100644
--- a/collections/CollectionSequence.java
+++ b/collections/CollectionSequence.java
@@ -1,5 +1,5 @@
 // collections/CollectionSequence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -7,15 +7,13 @@
 
 public class CollectionSequence
 extends AbstractCollection {
-  private Pet[] pets = Pets.array(8);
+  private Pet[] pets = new PetCreator().array(8);
   @Override
   public int size() { return pets.length; }
-  @Override
-  public Iterator iterator() {
-    return new Iterator() { // [1]
+  @Override public Iterator iterator() {
+    return new Iterator() {              // [1]
       private int index = 0;
-      @Override
-      public boolean hasNext() {
+      @Override public boolean hasNext() {
         return index < pets.length;
       }
       @Override
diff --git a/collections/CrossCollectionIteration.java b/collections/CrossCollectionIteration.java
index 99769fe24..6be887668 100644
--- a/collections/CrossCollectionIteration.java
+++ b/collections/CrossCollectionIteration.java
@@ -1,5 +1,5 @@
 // collections/CrossCollectionIteration.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -14,7 +14,7 @@ public static void display(Iterator it) {
     System.out.println();
   }
   public static void main(String[] args) {
-    List pets = Pets.list(8);
+    List pets = new PetCreator().list(8);
     LinkedList petsLL = new LinkedList<>(pets);
     HashSet petsHS = new HashSet<>(pets);
     TreeSet petsTS = new TreeSet<>(pets);
diff --git a/collections/CrossCollectionIteration2.java b/collections/CrossCollectionIteration2.java
index c7da143ff..de7fe2809 100644
--- a/collections/CrossCollectionIteration2.java
+++ b/collections/CrossCollectionIteration2.java
@@ -1,5 +1,5 @@
 // collections/CrossCollectionIteration2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -15,7 +15,7 @@ public static void display(Iterable ip) {
     System.out.println();
   }
   public static void main(String[] args) {
-    List pets = Pets.list(8);
+    List pets = new PetCreator().list(8);
     LinkedList petsLL = new LinkedList<>(pets);
     HashSet petsHS = new HashSet<>(pets);
     TreeSet petsTS = new TreeSet<>(pets);
diff --git a/collections/EnvironmentVariables.java b/collections/EnvironmentVariables.java
index af89e5a28..6098e4cfc 100644
--- a/collections/EnvironmentVariables.java
+++ b/collections/EnvironmentVariables.java
@@ -1,5 +1,5 @@
 // collections/EnvironmentVariables.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/collections/ForInCollections.java b/collections/ForInCollections.java
index a8ddd7923..15ea9bb3a 100644
--- a/collections/ForInCollections.java
+++ b/collections/ForInCollections.java
@@ -1,5 +1,5 @@
 // collections/ForInCollections.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // All collections work with for-in
diff --git a/collections/GenericsAndUpcasting.java b/collections/GenericsAndUpcasting.java
index ed8d3f557..3462e0b76 100644
--- a/collections/GenericsAndUpcasting.java
+++ b/collections/GenericsAndUpcasting.java
@@ -1,5 +1,5 @@
 // collections/GenericsAndUpcasting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -21,8 +21,8 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-GrannySmith@15db9742
-Gala@6d06d69c
-Fuji@7852e922
-Braeburn@4e25154f
+GrannySmith@19e0bfd
+Gala@139a55
+Fuji@1db9742
+Braeburn@106d69c
 */
diff --git a/collections/InterfaceVsIterator.java b/collections/InterfaceVsIterator.java
index b5a8663d8..5e3c147be 100644
--- a/collections/InterfaceVsIterator.java
+++ b/collections/InterfaceVsIterator.java
@@ -1,5 +1,5 @@
 // collections/InterfaceVsIterator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -19,7 +19,7 @@ public static void display(Collection pets) {
     System.out.println();
   }
   public static void main(String[] args) {
-    List petList = Pets.list(8);
+    List petList = new PetCreator().list(8);
     Set petSet = new HashSet<>(petList);
     Map petMap = new LinkedHashMap<>();
     String[] names = ("Ralph, Eric, Robin, Lacey, " +
diff --git a/collections/IterableClass.java b/collections/IterableClass.java
index 260edc7d4..1e64d783a 100644
--- a/collections/IterableClass.java
+++ b/collections/IterableClass.java
@@ -1,5 +1,5 @@
 // collections/IterableClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Anything Iterable works with for-in
@@ -9,12 +9,10 @@ public class IterableClass implements Iterable {
   protected String[] words = ("And that is how " +
     "we know the Earth to be banana-shaped."
     ).split(" ");
-  @Override
-  public Iterator iterator() {
+  @Override public Iterator iterator() {
     return new Iterator() {
       private int index = 0;
-      @Override
-      public boolean hasNext() {
+      @Override public boolean hasNext() {
         return index < words.length;
       }
       @Override
diff --git a/collections/LinkedListFeatures.java b/collections/LinkedListFeatures.java
index 3c10ff4ea..3552fa10e 100644
--- a/collections/LinkedListFeatures.java
+++ b/collections/LinkedListFeatures.java
@@ -1,5 +1,5 @@
 // collections/LinkedListFeatures.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -8,7 +8,7 @@
 public class LinkedListFeatures {
   public static void main(String[] args) {
     LinkedList pets =
-      new LinkedList<>(Pets.list(5));
+      new LinkedList<>(new PetCreator().list(5));
     System.out.println(pets);
     // Identical:
     System.out.println(
@@ -27,9 +27,9 @@ public static void main(String[] args) {
     System.out.println(pets);
     pets.addFirst(new Rat());
     System.out.println("After addFirst(): " + pets);
-    pets.offer(Pets.get());
+    pets.offer(new PetCreator().get());
     System.out.println("After offer(): " + pets);
-    pets.add(Pets.get());
+    pets.add(new PetCreator().get());
     System.out.println("After add(): " + pets);
     pets.addLast(new Hamster());
     System.out.println("After addLast(): " + pets);
@@ -47,8 +47,8 @@ public static void main(String[] args) {
 pets.poll(): Cymric
 [Mutt, Pug]
 After addFirst(): [Rat, Mutt, Pug]
-After offer(): [Rat, Mutt, Pug, Cymric]
-After add(): [Rat, Mutt, Pug, Cymric, Pug]
-After addLast(): [Rat, Mutt, Pug, Cymric, Pug, Hamster]
+After offer(): [Rat, Mutt, Pug, Rat]
+After add(): [Rat, Mutt, Pug, Rat, Rat]
+After addLast(): [Rat, Mutt, Pug, Rat, Rat, Hamster]
 pets.removeLast(): Hamster
 */
diff --git a/collections/ListFeatures.java b/collections/ListFeatures.java
index b4ee16ab4..cf1e7b01e 100644
--- a/collections/ListFeatures.java
+++ b/collections/ListFeatures.java
@@ -1,5 +1,5 @@
 // collections/ListFeatures.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -8,7 +8,7 @@
 public class ListFeatures {
   public static void main(String[] args) {
     Random rand = new Random(47);
-    List pets = Pets.list(7);
+    List pets = new PetCreator().list(7);
     System.out.println("1: " + pets);
     Hamster h = new Hamster();
     pets.add(h); // Automatically resizes
@@ -54,7 +54,7 @@ public static void main(String[] args) {
     pets.clear(); // Remove all elements
     System.out.println("19: " + pets);
     System.out.println("20: " + pets.isEmpty());
-    pets.addAll(Pets.list(4));
+    pets.addAll(new PetCreator().list(4));
     System.out.println("21: " + pets);
     Object[] o = pets.toArray();
     System.out.println("22: " + o[3]);
@@ -87,7 +87,7 @@ public static void main(String[] args) {
 18: false
 19: []
 20: true
-21: [Manx, Cymric, Rat, EgyptianMau]
-22: EgyptianMau
+21: [Rat, Manx, Cymric, Mutt]
+22: Mutt
 23: 14
 */
diff --git a/collections/ListIteration.java b/collections/ListIteration.java
index 95d2786cc..ce49b5295 100644
--- a/collections/ListIteration.java
+++ b/collections/ListIteration.java
@@ -1,5 +1,5 @@
 // collections/ListIteration.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -7,7 +7,7 @@
 
 public class ListIteration {
   public static void main(String[] args) {
-    List pets = Pets.list(8);
+    List pets = new PetCreator().list(8);
     ListIterator it = pets.listIterator();
     while(it.hasNext())
       System.out.print(it.next() +
@@ -22,7 +22,7 @@ public static void main(String[] args) {
     it = pets.listIterator(3);
     while(it.hasNext()) {
       it.next();
-      it.set(Pets.get());
+      it.set(new PetCreator().get());
     }
     System.out.println(pets);
   }
@@ -32,6 +32,5 @@ public static void main(String[] args) {
 5, 4; Cymric, 6, 5; Pug, 7, 6; Manx, 8, 7;
 7 6 5 4 3 2 1 0
 [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Manx]
-[Rat, Manx, Cymric, Cymric, Rat, EgyptianMau, Hamster,
-EgyptianMau]
+[Rat, Manx, Cymric, Rat, Rat, Rat, Rat, Rat]
 */
diff --git a/collections/MapOfList.java b/collections/MapOfList.java
index 3a985dd9f..d3b385add 100644
--- a/collections/MapOfList.java
+++ b/collections/MapOfList.java
@@ -1,5 +1,5 @@
 // collections/MapOfList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java collections.MapOfList}
diff --git a/collections/ModifyingArraysAsList.java b/collections/ModifyingArraysAsList.java
index fea3da423..ef50e40ab 100644
--- a/collections/ModifyingArraysAsList.java
+++ b/collections/ModifyingArraysAsList.java
@@ -1,5 +1,5 @@
 // collections/ModifyingArraysAsList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/MultiIterableClass.java b/collections/MultiIterableClass.java
index 1d7376e5f..e55d811e3 100644
--- a/collections/MultiIterableClass.java
+++ b/collections/MultiIterableClass.java
@@ -1,5 +1,5 @@
 // collections/MultiIterableClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adding several Adapter Methods
@@ -11,12 +11,13 @@ public Iterable reversed() {
       public Iterator iterator() {
         return new Iterator() {
           int current = words.length - 1;
-          public boolean hasNext() {
+          @Override public boolean hasNext() {
             return current > -1;
           }
-          public String next() {
+          @Override public String next() {
             return words[current--];
           }
+          @Override
           public void remove() { // Not implemented
             throw new UnsupportedOperationException();
           }
diff --git a/collections/NonCollectionSequence.java b/collections/NonCollectionSequence.java
index ed1ae6f63..8a6c8bb55 100644
--- a/collections/NonCollectionSequence.java
+++ b/collections/NonCollectionSequence.java
@@ -1,20 +1,19 @@
 // collections/NonCollectionSequence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
 import java.util.*;
 
 class PetSequence {
-  protected Pet[] pets = Pets.array(8);
+  protected Pet[] pets = new PetCreator().array(8);
 }
 
 public class NonCollectionSequence extends PetSequence {
   public Iterator iterator() {
     return new Iterator() {
       private int index = 0;
-      @Override
-      public boolean hasNext() {
+      @Override public boolean hasNext() {
         return index < pets.length;
       }
       @Override
diff --git a/collections/PetMap.java b/collections/PetMap.java
index 18d02ef0b..44885c803 100644
--- a/collections/PetMap.java
+++ b/collections/PetMap.java
@@ -1,5 +1,5 @@
 // collections/PetMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
diff --git a/collections/PrintingCollections.java b/collections/PrintingCollections.java
index c5746fc3e..c324722a9 100644
--- a/collections/PrintingCollections.java
+++ b/collections/PrintingCollections.java
@@ -1,5 +1,5 @@
 // collections/PrintingCollections.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Collections print themselves automatically
diff --git a/collections/PriorityQueueDemo.java b/collections/PriorityQueueDemo.java
index 4f71ab0e8..0e0f553ef 100644
--- a/collections/PriorityQueueDemo.java
+++ b/collections/PriorityQueueDemo.java
@@ -1,5 +1,5 @@
 // collections/PriorityQueueDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/QueueDemo.java b/collections/QueueDemo.java
index f807e89a9..a7d30c1c4 100644
--- a/collections/QueueDemo.java
+++ b/collections/QueueDemo.java
@@ -1,5 +1,5 @@
 // collections/QueueDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Upcasting to a Queue from a LinkedList
diff --git a/collections/SetOfInteger.java b/collections/SetOfInteger.java
index 78157d5cd..92a403e6c 100644
--- a/collections/SetOfInteger.java
+++ b/collections/SetOfInteger.java
@@ -1,5 +1,5 @@
 // collections/SetOfInteger.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/SetOfString.java b/collections/SetOfString.java
index 01d9455e6..50a06bc20 100644
--- a/collections/SetOfString.java
+++ b/collections/SetOfString.java
@@ -1,5 +1,5 @@
 // collections/SetOfString.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/SetOperations.java b/collections/SetOperations.java
index f716f9651..485588b6c 100644
--- a/collections/SetOperations.java
+++ b/collections/SetOperations.java
@@ -1,5 +1,5 @@
 // collections/SetOperations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/SimpleCollection.java b/collections/SimpleCollection.java
index 8915e2591..6dcf73b24 100644
--- a/collections/SimpleCollection.java
+++ b/collections/SimpleCollection.java
@@ -1,5 +1,5 @@
 // collections/SimpleCollection.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/SimpleIteration.java b/collections/SimpleIteration.java
index a65a2a714..234a716b1 100644
--- a/collections/SimpleIteration.java
+++ b/collections/SimpleIteration.java
@@ -1,5 +1,5 @@
 // collections/SimpleIteration.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
@@ -7,7 +7,7 @@
 
 public class SimpleIteration {
   public static void main(String[] args) {
-    List pets = Pets.list(12);
+    List pets = new PetCreator().list(12);
     Iterator it = pets.iterator();
     while(it.hasNext()) {
       Pet p = it.next();
diff --git a/collections/SortedSetOfString.java b/collections/SortedSetOfString.java
index a043b7911..af6222aac 100644
--- a/collections/SortedSetOfString.java
+++ b/collections/SortedSetOfString.java
@@ -1,5 +1,5 @@
 // collections/SortedSetOfString.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/StackCollision.java b/collections/StackCollision.java
index 67ee4d907..7914e3496 100644
--- a/collections/StackCollision.java
+++ b/collections/StackCollision.java
@@ -1,5 +1,5 @@
 // collections/StackCollision.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/collections/StackTest.java b/collections/StackTest.java
index dc1663cc4..54005700a 100644
--- a/collections/StackTest.java
+++ b/collections/StackTest.java
@@ -1,5 +1,5 @@
 // collections/StackTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/StackTest2.java b/collections/StackTest2.java
index 2464d7a9c..148a834a8 100644
--- a/collections/StackTest2.java
+++ b/collections/StackTest2.java
@@ -1,5 +1,5 @@
 // collections/StackTest2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/collections/Statistics.java b/collections/Statistics.java
index f888db585..a3ece359e 100644
--- a/collections/Statistics.java
+++ b/collections/Statistics.java
@@ -1,5 +1,5 @@
 // collections/Statistics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of HashMap
@@ -12,7 +12,7 @@ public static void main(String[] args) {
     for(int i = 0; i < 10000; i++) {
       // Produce a number between 0 and 20:
       int r = rand.nextInt(20);
-      Integer freq = m.get(r); // [1]
+      Integer freq = m.get(r);               // [1]
       m.put(r, freq == null ? 1 : freq + 1);
     }
     System.out.println(m);
diff --git a/collections/UniqueWords.java b/collections/UniqueWords.java
index c6c3681d4..e39a9b882 100644
--- a/collections/UniqueWords.java
+++ b/collections/UniqueWords.java
@@ -1,5 +1,5 @@
 // collections/UniqueWords.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collections/UniqueWordsAlphabetic.java b/collections/UniqueWordsAlphabetic.java
index 66a7fecfa..780ddb3f1 100644
--- a/collections/UniqueWordsAlphabetic.java
+++ b/collections/UniqueWordsAlphabetic.java
@@ -1,5 +1,5 @@
 // collections/UniqueWordsAlphabetic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Producing an alphabetic listing
diff --git a/collectiontopics/AssociativeArray.java b/collectiontopics/AssociativeArray.java
index e7488489c..37c09da89 100644
--- a/collectiontopics/AssociativeArray.java
+++ b/collectiontopics/AssociativeArray.java
@@ -1,5 +1,5 @@
 // collectiontopics/AssociativeArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Associates keys with values
@@ -22,8 +22,7 @@ public V get(K key) {
         return (V)pairs[i][1];
     return null; // Did not find key
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     StringBuilder result = new StringBuilder();
     for(int i = 0; i < index; i++) {
       result.append(pairs[i][0].toString());
diff --git a/collectiontopics/Bits.java b/collectiontopics/Bits.java
index 16afb3617..f4f6d506a 100644
--- a/collectiontopics/Bits.java
+++ b/collectiontopics/Bits.java
@@ -1,5 +1,5 @@
 // collectiontopics/Bits.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of BitSet
diff --git a/collectiontopics/CanonicalMapping.java b/collectiontopics/CanonicalMapping.java
index c02f9132a..72735a3ba 100644
--- a/collectiontopics/CanonicalMapping.java
+++ b/collectiontopics/CanonicalMapping.java
@@ -1,5 +1,5 @@
 // collectiontopics/CanonicalMapping.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates WeakHashMap
@@ -8,20 +8,16 @@
 class Element {
   private String ident;
   Element(String id) { ident = id; }
-  @Override
-  public String toString() { return ident; }
-  @Override
-  public int hashCode() {
+  @Override public String toString() { return ident; }
+  @Override public int hashCode() {
     return Objects.hashCode(ident);
   }
-  @Override
-  public boolean equals(Object r) {
+  @Override public boolean equals(Object r) {
     return r instanceof Element &&
       Objects.equals(ident, ((Element)r).ident);
   }
   @SuppressWarnings("deprecation")
-  @Override
-  protected void finalize() {
+  @Override protected void finalize() {
     System.out.println("Finalizing " +
       getClass().getSimpleName() + " " + ident);
   }
diff --git a/collectiontopics/CollectionMethods.java b/collectiontopics/CollectionMethods.java
index e32e5982a..21c12bb5a 100644
--- a/collectiontopics/CollectionMethods.java
+++ b/collectiontopics/CollectionMethods.java
@@ -1,5 +1,5 @@
 // collectiontopics/CollectionMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Things you can do with all Collections
diff --git a/collectiontopics/Enumerations.java b/collectiontopics/Enumerations.java
index 22b83e52a..63d740590 100644
--- a/collectiontopics/Enumerations.java
+++ b/collectiontopics/Enumerations.java
@@ -1,5 +1,5 @@
 // collectiontopics/Enumerations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Java 1.0/1.1 Vector and Enumeration
diff --git a/collectiontopics/FailFast.java b/collectiontopics/FailFast.java
index 0b0ce253f..9425de28d 100644
--- a/collectiontopics/FailFast.java
+++ b/collectiontopics/FailFast.java
@@ -1,5 +1,5 @@
 // collectiontopics/FailFast.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the "fail-fast" behavior
diff --git a/collectiontopics/FillMapTest.java b/collectiontopics/FillMapTest.java
index 5cfd612bc..e96d0263b 100644
--- a/collectiontopics/FillMapTest.java
+++ b/collectiontopics/FillMapTest.java
@@ -1,5 +1,5 @@
 // collectiontopics/FillMapTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collectiontopics/FillingLists.java b/collectiontopics/FillingLists.java
index 32bdb8ef0..29123d01f 100644
--- a/collectiontopics/FillingLists.java
+++ b/collectiontopics/FillingLists.java
@@ -1,5 +1,5 @@
 // collectiontopics/FillingLists.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Collections.fill() & Collections.nCopies()
@@ -8,8 +8,7 @@
 class StringAddress {
   private String s;
   StringAddress(String s) { this.s = s; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return super.toString() + " " + s;
   }
 }
@@ -26,10 +25,10 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-[StringAddress@15db9742 Hello, StringAddress@15db9742
-Hello, StringAddress@15db9742 Hello,
-StringAddress@15db9742 Hello]
-[StringAddress@6d06d69c World!, StringAddress@6d06d69c
-World!, StringAddress@6d06d69c World!,
-StringAddress@6d06d69c World!]
+[StringAddress@19e0bfd Hello, StringAddress@19e0bfd
+Hello, StringAddress@19e0bfd Hello,
+StringAddress@19e0bfd Hello]
+[StringAddress@139a55 World!, StringAddress@139a55
+World!, StringAddress@139a55 World!,
+StringAddress@139a55 World!]
 */
diff --git a/collectiontopics/FunctionalMap.java b/collectiontopics/FunctionalMap.java
index 404a1a641..ef9b48086 100644
--- a/collectiontopics/FunctionalMap.java
+++ b/collectiontopics/FunctionalMap.java
@@ -1,5 +1,5 @@
 // collectiontopics/FunctionalMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Functional operations on a Map
diff --git a/collectiontopics/HTMLColorTest.java b/collectiontopics/HTMLColorTest.java
index 99037ced9..cdfeb5bed 100644
--- a/collectiontopics/HTMLColorTest.java
+++ b/collectiontopics/HTMLColorTest.java
@@ -1,5 +1,5 @@
 // collectiontopics/HTMLColorTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static onjava.HTMLColors.*;
diff --git a/collectiontopics/LinkedHashMapDemo.java b/collectiontopics/LinkedHashMapDemo.java
index d0b933932..7e9bc16a5 100644
--- a/collectiontopics/LinkedHashMapDemo.java
+++ b/collectiontopics/LinkedHashMapDemo.java
@@ -1,5 +1,5 @@
 // collectiontopics/LinkedHashMapDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // What you can do with a LinkedHashMap
diff --git a/collectiontopics/ListOps.java b/collectiontopics/ListOps.java
index 824ffba98..dee92d5e5 100644
--- a/collectiontopics/ListOps.java
+++ b/collectiontopics/ListOps.java
@@ -1,5 +1,5 @@
 // collectiontopics/ListOps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Things you can do with Lists
diff --git a/collectiontopics/ListSortSearch.java b/collectiontopics/ListSortSearch.java
index 4d1fbcf8c..13df7af28 100644
--- a/collectiontopics/ListSortSearch.java
+++ b/collectiontopics/ListSortSearch.java
@@ -1,5 +1,5 @@
 // collectiontopics/ListSortSearch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sorting/searching Lists with Collections utilities
diff --git a/collectiontopics/MapOps.java b/collectiontopics/MapOps.java
index b214fa2d6..6b6458bb2 100644
--- a/collectiontopics/MapOps.java
+++ b/collectiontopics/MapOps.java
@@ -1,5 +1,5 @@
 // collectiontopics/MapOps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Things you can do with Maps
diff --git a/collectiontopics/NavMap.java b/collectiontopics/NavMap.java
index 076ae841e..2d898268b 100644
--- a/collectiontopics/NavMap.java
+++ b/collectiontopics/NavMap.java
@@ -1,5 +1,5 @@
 // collectiontopics/NavMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // NavigableMap produces pieces of a Map
diff --git a/collectiontopics/QueueBehavior.java b/collectiontopics/QueueBehavior.java
index 136fbaf8a..1547e0d96 100644
--- a/collectiontopics/QueueBehavior.java
+++ b/collectiontopics/QueueBehavior.java
@@ -1,5 +1,5 @@
 // collectiontopics/QueueBehavior.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Compares basic behavior
diff --git a/collectiontopics/ReadOnly.java b/collectiontopics/ReadOnly.java
index 93c336c4f..547c32a5f 100644
--- a/collectiontopics/ReadOnly.java
+++ b/collectiontopics/ReadOnly.java
@@ -1,5 +1,5 @@
 // collectiontopics/ReadOnly.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the Collections.unmodifiable methods
diff --git a/collectiontopics/References.java b/collectiontopics/References.java
index 5fcca9404..798e8f31e 100644
--- a/collectiontopics/References.java
+++ b/collectiontopics/References.java
@@ -1,5 +1,5 @@
 // collectiontopics/References.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates Reference objects
@@ -11,11 +11,9 @@ class VeryBig {
   private long[] la = new long[SIZE];
   private String ident;
   VeryBig(String id) { ident = id; }
-  @Override
-  public String toString() { return ident; }
+  @Override public String toString() { return ident; }
   @SuppressWarnings("deprecation")
-  @Override
-  protected void finalize() {
+  @Override protected void finalize() {
     System.out.println("Finalizing " + ident);
   }
 }
@@ -68,25 +66,25 @@ public static void main(String[] args) {
   }
 }
 /* Output: (First and Last 10 Lines)
-Just created: java.lang.ref.SoftReference@15db9742
-Just created: java.lang.ref.SoftReference@6d06d69c
-Just created: java.lang.ref.SoftReference@7852e922
-Just created: java.lang.ref.SoftReference@4e25154f
-Just created: java.lang.ref.SoftReference@70dea4e
-Just created: java.lang.ref.SoftReference@5c647e05
-Just created: java.lang.ref.SoftReference@33909752
-Just created: java.lang.ref.SoftReference@55f96302
-Just created: java.lang.ref.SoftReference@3d4eac69
-Just created: java.lang.ref.SoftReference@42a57993
+Just created: java.lang.ref.SoftReference@19e0bfd
+Just created: java.lang.ref.SoftReference@139a55
+Just created: java.lang.ref.SoftReference@1db9742
+Just created: java.lang.ref.SoftReference@106d69c
+Just created: java.lang.ref.SoftReference@52e922
+Just created: java.lang.ref.SoftReference@25154f
+Just created: java.lang.ref.SoftReference@10dea4e
+Just created: java.lang.ref.SoftReference@647e05
+Just created: java.lang.ref.SoftReference@1909752
+Just created: java.lang.ref.SoftReference@1f96302
 ...________...________...________...________...
-Just created: java.lang.ref.PhantomReference@45ee12a7
+Just created: java.lang.ref.PhantomReference@16f6e28
 In queue: null
-Just created: java.lang.ref.PhantomReference@330bedb4
+Just created: java.lang.ref.PhantomReference@15fbaa4
 In queue: null
-Just created: java.lang.ref.PhantomReference@2503dbd3
+Just created: java.lang.ref.PhantomReference@1ee12a7
 In queue: null
-Just created: java.lang.ref.PhantomReference@4b67cf4d
+Just created: java.lang.ref.PhantomReference@10bedb4
 In queue: null
-Just created: java.lang.ref.PhantomReference@7ea987ac
+Just created: java.lang.ref.PhantomReference@103dbd3
 In queue: null
 */
diff --git a/collectiontopics/SetOrder.java b/collectiontopics/SetOrder.java
index 1c25be238..b167a7c72 100644
--- a/collectiontopics/SetOrder.java
+++ b/collectiontopics/SetOrder.java
@@ -1,5 +1,5 @@
 // collectiontopics/SetOrder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -23,9 +23,9 @@ public class SetOrder {
     for(String type: sets) {
       System.out.format("[-> %s <-]%n",
         type.substring(type.lastIndexOf('.') + 1));
-      @SuppressWarnings({"unchecked", "deprecation"})
+      @SuppressWarnings("unchecked")
       Set set = (Set)
-        Class.forName(type).newInstance();
+        Class.forName(type).getConstructor().newInstance();
       set.addAll(RLIST);
       set.stream()
         .limit(10)
diff --git a/collectiontopics/SimpleDeques.java b/collectiontopics/SimpleDeques.java
index fbb4a5ff6..811c43daa 100644
--- a/collectiontopics/SimpleDeques.java
+++ b/collectiontopics/SimpleDeques.java
@@ -1,5 +1,5 @@
 // collectiontopics/SimpleDeques.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Very basic test of Deques
@@ -11,8 +11,7 @@ class CountString implements Supplier {
   private int n = 0;
   CountString() {}
   CountString(int start) { n = start; }
-  @Override
-  public String get() {
+  @Override public String get() {
     return Integer.toString(n++);
   }
 }
diff --git a/collectiontopics/SortedMapDemo.java b/collectiontopics/SortedMapDemo.java
index 4d57d34a7..5601aca04 100644
--- a/collectiontopics/SortedMapDemo.java
+++ b/collectiontopics/SortedMapDemo.java
@@ -1,5 +1,5 @@
 // collectiontopics/SortedMapDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // What you can do with a TreeMap
diff --git a/collectiontopics/SortedSetDemo.java b/collectiontopics/SortedSetDemo.java
index 6ed81fb16..91a9b3a54 100644
--- a/collectiontopics/SortedSetDemo.java
+++ b/collectiontopics/SortedSetDemo.java
@@ -1,5 +1,5 @@
 // collectiontopics/SortedSetDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/collectiontopics/Stacks.java b/collectiontopics/Stacks.java
index 79a684cbb..a9d306ed3 100644
--- a/collectiontopics/Stacks.java
+++ b/collectiontopics/Stacks.java
@@ -1,5 +1,5 @@
 // collectiontopics/Stacks.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Stack Class
diff --git a/collectiontopics/StreamFillMaps.java b/collectiontopics/StreamFillMaps.java
index 816a74b31..6df827332 100644
--- a/collectiontopics/StreamFillMaps.java
+++ b/collectiontopics/StreamFillMaps.java
@@ -1,5 +1,5 @@
 // collectiontopics/StreamFillMaps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -11,8 +11,7 @@ class Letters
 implements Supplier> {
   private int number = 1;
   private char letter = 'A';
-  @Override
-  public Pair get() {
+  @Override public Pair get() {
     return new Pair<>(number++, "" + letter++);
   }
 }
diff --git a/collectiontopics/SuppliersCollectionTest.java b/collectiontopics/SuppliersCollectionTest.java
index b30f1490d..58f810bff 100644
--- a/collectiontopics/SuppliersCollectionTest.java
+++ b/collectiontopics/SuppliersCollectionTest.java
@@ -1,5 +1,5 @@
 // collectiontopics/SuppliersCollectionTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -13,8 +13,7 @@ class Government implements Supplier {
     "distributing swords is no basis " +
     "for a system of government").split(" ");
   private int index;
-  @Override
-  public String get() {
+  @Override public String get() {
     return foundation[index++];
   }
 }
diff --git a/collectiontopics/Synchronization.java b/collectiontopics/Synchronization.java
index c7d3b7323..86389da1c 100644
--- a/collectiontopics/Synchronization.java
+++ b/collectiontopics/Synchronization.java
@@ -1,5 +1,5 @@
 // collectiontopics/Synchronization.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the Collections.synchronized methods
diff --git a/collectiontopics/ToDoList.java b/collectiontopics/ToDoList.java
index b288e8e1e..2be266eeb 100644
--- a/collectiontopics/ToDoList.java
+++ b/collectiontopics/ToDoList.java
@@ -1,5 +1,5 @@
 // collectiontopics/ToDoList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A more complex use of PriorityQueue
@@ -14,8 +14,7 @@ class ToDoItem implements Comparable {
     secondary = sec;
     item = td;
   }
-  @Override
-  public int compareTo(ToDoItem arg) {
+  @Override public int compareTo(ToDoItem arg) {
     if(primary > arg.primary)
       return +1;
     if(primary == arg.primary)
@@ -25,8 +24,7 @@ else if(secondary == arg.secondary)
         return 0;
     return -1;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Character.toString(primary) +
       secondary + ": " + item;
   }
diff --git a/collectiontopics/TypesForSets.java b/collectiontopics/TypesForSets.java
index 9950b0032..e4c745879 100644
--- a/collectiontopics/TypesForSets.java
+++ b/collectiontopics/TypesForSets.java
@@ -1,5 +1,5 @@
 // collectiontopics/TypesForSets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Methods necessary to put your own type in a Set
@@ -10,21 +10,18 @@
 class SetType {
   protected int i;
   SetType(int n) { i = n; }
-  @Override
-  public boolean equals(Object o) {
+  @Override public boolean equals(Object o) {
     return o instanceof SetType &&
       Objects.equals(i, ((SetType)o).i);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(i);
   }
 }
 
 class HashType extends SetType {
   HashType(int n) { super(n); }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     return Objects.hashCode(i);
   }
 }
@@ -32,8 +29,7 @@ public int hashCode() {
 class TreeType extends SetType
 implements Comparable {
   TreeType(int n) { super(n); }
-  @Override
-  public int compareTo(TreeType arg) {
+  @Override public int compareTo(TreeType arg) {
     return Integer.compare(arg.i, i);
     // Equivalent to:
     // return arg.i < i ? -1 : (arg.i == i ? 0 : 1);
@@ -80,10 +76,10 @@ public static void main(String[] args) {
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 [10, 9, 8, 7, 6, 5, 0, 1, 2, 3, 4]
 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
-[1, 6, 8, 6, 2, 7, 8, 9, 4, 10, 7, 5, 1, 3, 4, 9, 9,
-10, 5, 3, 2, 0, 4, 1, 2, 0, 8, 3, 0, 10, 6, 5, 7]
-[3, 1, 4, 8, 7, 6, 9, 5, 3, 0, 10, 5, 5, 10, 7, 8, 8,
-9, 1, 4, 10, 2, 6, 9, 1, 6, 0, 3, 2, 0, 7, 2, 4]
+[4, 1, 5, 1, 0, 5, 6, 8, 7, 0, 2, 8, 4, 9, 6, 10, 6, 7,
+2, 9, 10, 3, 8, 4, 10, 3, 9, 5, 3, 7, 1, 2, 0]
+[9, 8, 4, 8, 5, 0, 1, 6, 2, 9, 3, 7, 2, 2, 7, 0, 9, 5,
+5, 6, 4, 7, 10, 1, 6, 4, 1, 10, 3, 3, 0, 10, 8]
 [10, 9, 8, 7, 6, 5, 0, 1, 2, 3, 4, 10, 9, 8, 7, 6, 5,
 0, 1, 2, 3, 4, 10, 9, 8, 7, 6, 5, 0, 1, 2, 3, 4]
 [10, 9, 8, 7, 6, 5, 0, 1, 2, 3, 4, 10, 9, 8, 7, 6, 5,
diff --git a/collectiontopics/Unsupported.java b/collectiontopics/Unsupported.java
index a66b1cfdb..132b760c4 100644
--- a/collectiontopics/Unsupported.java
+++ b/collectiontopics/Unsupported.java
@@ -1,5 +1,5 @@
 // collectiontopics/Unsupported.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Unsupported operations in Java collections
diff --git a/collectiontopics/Utilities.java b/collectiontopics/Utilities.java
index a2acc4278..0b7b0f9a0 100644
--- a/collectiontopics/Utilities.java
+++ b/collectiontopics/Utilities.java
@@ -1,5 +1,5 @@
 // collectiontopics/Utilities.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstrations of the Collections utilities
diff --git a/com/mindviewinc/simple/List.java b/com/mindviewinc/simple/List.java
index 84b30315b..2b1131a03 100644
--- a/com/mindviewinc/simple/List.java
+++ b/com/mindviewinc/simple/List.java
@@ -1,5 +1,5 @@
 // com/mindviewinc/simple/List.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a package
diff --git a/com/mindviewinc/simple/Vector.java b/com/mindviewinc/simple/Vector.java
index 19824ccec..af63e03c7 100644
--- a/com/mindviewinc/simple/Vector.java
+++ b/com/mindviewinc/simple/Vector.java
@@ -1,5 +1,5 @@
 // com/mindviewinc/simple/Vector.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a package
diff --git a/compression/GZIPcompress.java b/compression/GZIPcompress.java
index c9022e780..1b847c57b 100644
--- a/compression/GZIPcompress.java
+++ b/compression/GZIPcompress.java
@@ -1,5 +1,5 @@
 // compression/GZIPcompress.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java GZIPcompress GZIPcompress.java}
diff --git a/compression/ZipCompress.java b/compression/ZipCompress.java
index f9ce76705..532316029 100644
--- a/compression/ZipCompress.java
+++ b/compression/ZipCompress.java
@@ -1,5 +1,5 @@
 // compression/ZipCompress.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Uses Zip compression to compress any
diff --git a/concurrent/Baked.java b/concurrent/Baked.java
index d616d94b8..105a887d5 100644
--- a/concurrent/Baked.java
+++ b/concurrent/Baked.java
@@ -1,5 +1,5 @@
 // concurrent/Baked.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/Batter.java b/concurrent/Batter.java
index 9fe14c4f5..80a9022a3 100644
--- a/concurrent/Batter.java
+++ b/concurrent/Batter.java
@@ -1,5 +1,5 @@
 // concurrent/Batter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/Breakable.java b/concurrent/Breakable.java
index facd70951..0fcacb383 100644
--- a/concurrent/Breakable.java
+++ b/concurrent/Breakable.java
@@ -1,5 +1,5 @@
 // concurrent/Breakable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -11,8 +11,7 @@ public Breakable(String id, int failcount) {
     this.id = id;
     this.failcount = failcount;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Breakable_" + id +
       " [" + failcount + "]";
   }
diff --git a/concurrent/CachedThreadPool.java b/concurrent/CachedThreadPool.java
index e0b825a25..11b6bad3a 100644
--- a/concurrent/CachedThreadPool.java
+++ b/concurrent/CachedThreadPool.java
@@ -1,5 +1,5 @@
 // concurrent/CachedThreadPool.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -16,14 +16,14 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-NapTask[7] pool-1-thread-8
-NapTask[4] pool-1-thread-5
 NapTask[1] pool-1-thread-2
-NapTask[3] pool-1-thread-4
-NapTask[0] pool-1-thread-1
+NapTask[5] pool-1-thread-6
+NapTask[4] pool-1-thread-5
 NapTask[8] pool-1-thread-9
-NapTask[2] pool-1-thread-3
+NapTask[0] pool-1-thread-1
 NapTask[9] pool-1-thread-10
+NapTask[2] pool-1-thread-3
+NapTask[3] pool-1-thread-4
 NapTask[6] pool-1-thread-7
-NapTask[5] pool-1-thread-6
+NapTask[7] pool-1-thread-8
 */
diff --git a/concurrent/CachedThreadPool2.java b/concurrent/CachedThreadPool2.java
index 9d7636560..091241e57 100644
--- a/concurrent/CachedThreadPool2.java
+++ b/concurrent/CachedThreadPool2.java
@@ -1,5 +1,5 @@
 // concurrent/CachedThreadPool2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -16,14 +16,14 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-0 pool-1-thread-1 200
-1 pool-1-thread-2 200
-4 pool-1-thread-5 300
-5 pool-1-thread-6 400
-8 pool-1-thread-9 500
-9 pool-1-thread-10 600
-2 pool-1-thread-3 700
-7 pool-1-thread-8 800
-3 pool-1-thread-4 900
-6 pool-1-thread-7 1000
+3 pool-1-thread-4 100
+2 pool-1-thread-3 200
+6 pool-1-thread-7 300
+7 pool-1-thread-8 400
+0 pool-1-thread-1 514
+1 pool-1-thread-2 527
+4 pool-1-thread-5 627
+5 pool-1-thread-6 727
+9 pool-1-thread-10 827
+8 pool-1-thread-9 927
 */
diff --git a/concurrent/CachedThreadPool3.java b/concurrent/CachedThreadPool3.java
index 4b6e6d2e0..919c3c130 100644
--- a/concurrent/CachedThreadPool3.java
+++ b/concurrent/CachedThreadPool3.java
@@ -1,5 +1,5 @@
 // concurrent/CachedThreadPool3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -33,15 +33,15 @@ public static void main(String[] args)
   }
 }
 /* Output:
-1 pool-1-thread-2 100
 0 pool-1-thread-1 100
-4 pool-1-thread-5 100
-5 pool-1-thread-6 100
-8 pool-1-thread-9 100
-9 pool-1-thread-10 100
+9 pool-1-thread-1 100
+1 pool-1-thread-2 100
 2 pool-1-thread-3 100
 3 pool-1-thread-4 100
 6 pool-1-thread-7 100
 7 pool-1-thread-8 100
+4 pool-1-thread-5 100
+5 pool-1-thread-6 100
+8 pool-1-thread-9 100
 sum = 1000
 */
diff --git a/concurrent/CatchCompletableExceptions.java b/concurrent/CatchCompletableExceptions.java
index 67451ed46..5c9bcd610 100644
--- a/concurrent/CatchCompletableExceptions.java
+++ b/concurrent/CatchCompletableExceptions.java
@@ -1,5 +1,5 @@
 // concurrent/CatchCompletableExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/CollectionIntoStream.java b/concurrent/CollectionIntoStream.java
index 2dc51a7e0..4e2f5b3c8 100644
--- a/concurrent/CollectionIntoStream.java
+++ b/concurrent/CollectionIntoStream.java
@@ -1,5 +1,5 @@
 // concurrent/CollectionIntoStream.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/concurrent/CompletableApply.java b/concurrent/CompletableApply.java
index 2f5bd9b48..aeac0e25e 100644
--- a/concurrent/CompletableApply.java
+++ b/concurrent/CompletableApply.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableApply.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/CompletableApplyAsync.java b/concurrent/CompletableApplyAsync.java
index fa7c92711..974d99ffe 100644
--- a/concurrent/CompletableApplyAsync.java
+++ b/concurrent/CompletableApplyAsync.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableApplyAsync.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -21,11 +21,11 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-116
+103
 Machina0: ONE
 Machina0: TWO
 Machina0: THREE
 Machina0: complete
 Machina0: complete
-552
+545
 */
diff --git a/concurrent/CompletableApplyChained.java b/concurrent/CompletableApplyChained.java
index aa6828d56..6194bc5d8 100644
--- a/concurrent/CompletableApplyChained.java
+++ b/concurrent/CompletableApplyChained.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableApplyChained.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -23,5 +23,5 @@ public static void main(String[] args) {
 Machina0: TWO
 Machina0: THREE
 Machina0: complete
-514
+521
 */
diff --git a/concurrent/CompletableExceptions.java b/concurrent/CompletableExceptions.java
index 624815d5f..341a0afc6 100644
--- a/concurrent/CompletableExceptions.java
+++ b/concurrent/CompletableExceptions.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/CompletableOperations.java b/concurrent/CompletableOperations.java
index d03e8422a..6def117f4 100644
--- a/concurrent/CompletableOperations.java
+++ b/concurrent/CompletableOperations.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableOperations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -66,8 +66,8 @@ public static void main(String[] args) {
 cancelled: true
 completed exceptionally: true
 done: true
-java.util.concurrent.CompletableFuture@6d311334[Complet
-ed exceptionally]
+java.util.concurrent.CompletableFuture@1629346[Complete
+d exceptionally]
 777
 dependents: 1
 dependents: 2
diff --git a/concurrent/CompletablePizza.java b/concurrent/CompletablePizza.java
index 97b68545f..7003f7d29 100644
--- a/concurrent/CompletablePizza.java
+++ b/concurrent/CompletablePizza.java
@@ -1,5 +1,5 @@
 // concurrent/CompletablePizza.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -42,46 +42,46 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-169
-Pizza 0: ROLLED
+98
 Pizza 1: ROLLED
-Pizza 2: ROLLED
-Pizza 4: ROLLED
 Pizza 3: ROLLED
+Pizza 4: ROLLED
+Pizza 2: ROLLED
+Pizza 0: ROLLED
 Pizza 1: SAUCED
-Pizza 0: SAUCED
 Pizza 2: SAUCED
-Pizza 4: SAUCED
 Pizza 3: SAUCED
-Pizza 0: CHEESED
-Pizza 4: CHEESED
-Pizza 1: CHEESED
+Pizza 0: SAUCED
+Pizza 4: SAUCED
 Pizza 2: CHEESED
+Pizza 0: CHEESED
 Pizza 3: CHEESED
-Pizza 0: TOPPED
+Pizza 1: CHEESED
+Pizza 4: CHEESED
+Pizza 2: TOPPED
 Pizza 4: TOPPED
 Pizza 1: TOPPED
-Pizza 2: TOPPED
 Pizza 3: TOPPED
+Pizza 0: TOPPED
 Pizza 0: BAKED
 Pizza 4: BAKED
 Pizza 1: BAKED
 Pizza 3: BAKED
 Pizza 2: BAKED
-Pizza 0: SLICED
-Pizza 4: SLICED
-Pizza 1: SLICED
 Pizza 3: SLICED
+Pizza 1: SLICED
 Pizza 2: SLICED
-Pizza 4: BOXED
+Pizza 4: SLICED
+Pizza 0: SLICED
 Pizza 0: BOXED
-Pizza0: complete
+Pizza 2: BOXED
+Pizza 4: BOXED
 Pizza 1: BOXED
+Pizza0: complete
 Pizza1: complete
-Pizza 3: BOXED
-Pizza 2: BOXED
 Pizza2: complete
+Pizza 3: BOXED
 Pizza3: complete
 Pizza4: complete
-1797
+1762
 */
diff --git a/concurrent/CompletableUtilities.java b/concurrent/CompletableUtilities.java
index 8f3a0e51a..e1099d6b8 100644
--- a/concurrent/CompletableUtilities.java
+++ b/concurrent/CompletableUtilities.java
@@ -1,5 +1,5 @@
 // concurrent/CompletableUtilities.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/concurrent/CompletedMachina.java b/concurrent/CompletedMachina.java
index 06a787109..d6684e962 100644
--- a/concurrent/CompletedMachina.java
+++ b/concurrent/CompletedMachina.java
@@ -1,5 +1,5 @@
 // concurrent/CompletedMachina.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/CountingStream.java b/concurrent/CountingStream.java
index 4cebb24e1..47a1a77fb 100644
--- a/concurrent/CountingStream.java
+++ b/concurrent/CountingStream.java
@@ -1,5 +1,5 @@
 // concurrent/CountingStream.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/concurrent/CountingTask.java b/concurrent/CountingTask.java
index b1fb7b89f..140adfed9 100644
--- a/concurrent/CountingTask.java
+++ b/concurrent/CountingTask.java
@@ -1,5 +1,5 @@
 // concurrent/CountingTask.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -7,8 +7,7 @@
 public class CountingTask implements Callable {
   final int id;
   public CountingTask(int id) { this.id = id; }
-  @Override
-  public Integer call() {
+  @Override public Integer call() {
     Integer val = 0;
     for(int i = 0; i < 100; i++)
       val++;
diff --git a/concurrent/DiningPhilosophers.java b/concurrent/DiningPhilosophers.java
index 5c2b2f1b2..8b54820a1 100644
--- a/concurrent/DiningPhilosophers.java
+++ b/concurrent/DiningPhilosophers.java
@@ -1,5 +1,5 @@
 // concurrent/DiningPhilosophers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Hidden deadlock
diff --git a/concurrent/DualCompletableOperations.java b/concurrent/DualCompletableOperations.java
index 420523121..dd7048d91 100644
--- a/concurrent/DualCompletableOperations.java
+++ b/concurrent/DualCompletableOperations.java
@@ -1,5 +1,5 @@
 // concurrent/DualCompletableOperations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/FrostedCake.java b/concurrent/FrostedCake.java
index 1be8b661d..77a15fcfe 100644
--- a/concurrent/FrostedCake.java
+++ b/concurrent/FrostedCake.java
@@ -1,5 +1,5 @@
 // concurrent/FrostedCake.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -19,8 +19,9 @@ public class FrostedCake {
   public FrostedCake(Baked baked, Frosting frosting) {
     new Nap(0.1);
   }
-  @Override
-  public String toString() { return "FrostedCake"; }
+  @Override public String toString() {
+    return "FrostedCake";
+  }
   public static void main(String[] args) {
     Baked.batch().forEach(baked -> baked
       .thenCombineAsync(Frosting.make(),
diff --git a/concurrent/Futures.java b/concurrent/Futures.java
index 888e7f0d9..55bb483cb 100644
--- a/concurrent/Futures.java
+++ b/concurrent/Futures.java
@@ -1,5 +1,5 @@
 // concurrent/Futures.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -13,7 +13,7 @@ public static void main(String[] args)
       Executors.newSingleThreadExecutor();
     Future f =
       exec.submit(new CountingTask(99));
-    System.out.println(f.get()); // [1]
+    System.out.println(f.get());               // [1]
     exec.shutdown();
   }
 }
diff --git a/concurrent/GuardedIDField.java b/concurrent/GuardedIDField.java
index e570a5d32..8dd2ddd29 100644
--- a/concurrent/GuardedIDField.java
+++ b/concurrent/GuardedIDField.java
@@ -1,5 +1,5 @@
 // concurrent/GuardedIDField.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
@@ -8,7 +8,7 @@ public class GuardedIDField implements HasID {
   private static AtomicInteger counter =
     new AtomicInteger();
   private int id = counter.getAndIncrement();
-  public int getID() { return id; }
+  @Override public int getID() { return id; }
   public static void main(String[] args) {
     IDChecker.test(GuardedIDField::new);
   }
diff --git a/concurrent/HasID.java b/concurrent/HasID.java
index e5e134388..a9734e39f 100644
--- a/concurrent/HasID.java
+++ b/concurrent/HasID.java
@@ -1,5 +1,5 @@
 // concurrent/HasID.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/concurrent/IDChecker.java b/concurrent/IDChecker.java
index 845c9e6a4..31c45ef66 100644
--- a/concurrent/IDChecker.java
+++ b/concurrent/IDChecker.java
@@ -1,5 +1,5 @@
 // concurrent/IDChecker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -16,8 +16,7 @@ static class MakeObjects
     MakeObjects(Supplier gen) {
       this.gen = gen;
     }
-    @Override
-    public List get() {
+    @Override public List get() {
       return
         Stream.generate(gen)
           .limit(SIZE)
diff --git a/concurrent/InterferingTask.java b/concurrent/InterferingTask.java
index da08f6539..8715741b8 100644
--- a/concurrent/InterferingTask.java
+++ b/concurrent/InterferingTask.java
@@ -1,5 +1,5 @@
 // concurrent/InterferingTask.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -7,8 +7,7 @@ public class InterferingTask implements Runnable {
   final int id;
   private static Integer val = 0;
   public InterferingTask(int id) { this.id = id; }
-  @Override
-  public void run() {
+  @Override public void run() {
     for(int i = 0; i < 100; i++)
       val++;
     System.out.println(id + " " +
diff --git a/concurrent/LambdasAndMethodReferences.java b/concurrent/LambdasAndMethodReferences.java
index 10552499a..cb124b6b7 100644
--- a/concurrent/LambdasAndMethodReferences.java
+++ b/concurrent/LambdasAndMethodReferences.java
@@ -1,5 +1,5 @@
 // concurrent/LambdasAndMethodReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -34,7 +34,7 @@ public static void main(String[] args)
 }
 /* Output:
 Lambda1
-NotCallable
 NotRunnable
 Lambda2
+NotCallable
 */
diff --git a/concurrent/Machina.java b/concurrent/Machina.java
index e70cd2b4c..57175c267 100644
--- a/concurrent/Machina.java
+++ b/concurrent/Machina.java
@@ -1,5 +1,5 @@
 // concurrent/Machina.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.Nap;
@@ -23,8 +23,7 @@ public static Machina work(Machina m) {
     System.out.println(m);
     return m;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Machina" + id + ": " +
       (state.equals(State.END)? "complete" : state);
   }
diff --git a/concurrent/MoreTasksAfterShutdown.java b/concurrent/MoreTasksAfterShutdown.java
index 28b96af83..31a142e16 100644
--- a/concurrent/MoreTasksAfterShutdown.java
+++ b/concurrent/MoreTasksAfterShutdown.java
@@ -1,5 +1,5 @@
 // concurrent/MoreTasksAfterShutdown.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -20,8 +20,7 @@ public static void main(String[] args) {
 /* Output:
 java.util.concurrent.RejectedExecutionException: Task
 NapTask[99] rejected from java.util.concurrent.ThreadPo
-olExecutor@4e25154f[Shutting down, pool size = 1,
-active threads = 1, queued tasks = 0, completed tasks =
-0]
+olExecutor@106d69c[Shutting down, pool size = 1, active
+threads = 1, queued tasks = 0, completed tasks = 0]
 NapTask[1] pool-1-thread-1
 */
diff --git a/concurrent/NapTask.java b/concurrent/NapTask.java
index 92df6b602..9206eb4e8 100644
--- a/concurrent/NapTask.java
+++ b/concurrent/NapTask.java
@@ -1,5 +1,5 @@
 // concurrent/NapTask.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.Nap;
@@ -7,14 +7,12 @@
 public class NapTask implements Runnable {
   final int id;
   public NapTask(int id) { this.id = id; }
-  @Override
-  public void run() {
+  @Override public void run() {
     new Nap(0.1); // Seconds
     System.out.println(this + " " +
       Thread.currentThread().getName());
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "NapTask[" + id + "]";
   }
 }
diff --git a/concurrent/OnePizza.java b/concurrent/OnePizza.java
index f4f27249f..b8298ebbc 100644
--- a/concurrent/OnePizza.java
+++ b/concurrent/OnePizza.java
@@ -1,5 +1,5 @@
 // concurrent/OnePizza.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.Timer;
@@ -22,5 +22,5 @@ public static void main(String[] args) {
 Pizza 0: BAKED
 Pizza 0: SLICED
 Pizza 0: BOXED
-1622
+1665
 */
diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt
new file mode 100644
index 000000000..4b372a616
--- /dev/null
+++ b/concurrent/PSP2.txt
@@ -0,0 +1,11 @@
+0: main
+1: main
+2: main
+3: main
+4: main
+5: main
+6: main
+7: main
+8: main
+9: main
+10: ForkJoinPool.commonPool-worker-5
diff --git a/concurrent/ParallelPrime.java b/concurrent/ParallelPrime.java
index 97c025756..84ed969db 100644
--- a/concurrent/ParallelPrime.java
+++ b/concurrent/ParallelPrime.java
@@ -1,5 +1,5 @@
 // concurrent/ParallelPrime.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -20,7 +20,7 @@ public static void main(String[] args)
     Timer timer = new Timer();
     List primes =
       iterate(2, i -> i + 1)
-        .parallel()              // [1]
+        .parallel()                       // [1]
         .filter(ParallelPrime::isPrime)
         .limit(COUNT)
         .mapToObj(Long::toString)
@@ -31,5 +31,5 @@ public static void main(String[] args)
   }
 }
 /* Output:
-1224
+1635
 */
diff --git a/concurrent/ParallelStreamPuzzle.java b/concurrent/ParallelStreamPuzzle.java
index f57dec24a..0993d7b91 100644
--- a/concurrent/ParallelStreamPuzzle.java
+++ b/concurrent/ParallelStreamPuzzle.java
@@ -1,5 +1,5 @@
 // concurrent/ParallelStreamPuzzle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -10,7 +10,7 @@ public class ParallelStreamPuzzle {
   static class IntGenerator
   implements Supplier {
     private int current = 0;
-    public Integer get() {
+    @Override public Integer get() {
       return current++;
     }
   }
@@ -18,7 +18,7 @@ public static void main(String[] args) {
     List x =
       Stream.generate(new IntGenerator())
         .limit(10)
-        .parallel()  // [1]
+        .parallel()                     // [1]
         .collect(Collectors.toList());
     System.out.println(x);
   }
diff --git a/concurrent/ParallelStreamPuzzle2.java b/concurrent/ParallelStreamPuzzle2.java
index 2fc11d482..ff8b5ed15 100644
--- a/concurrent/ParallelStreamPuzzle2.java
+++ b/concurrent/ParallelStreamPuzzle2.java
@@ -1,5 +1,5 @@
 // concurrent/ParallelStreamPuzzle2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -16,7 +16,7 @@ public class ParallelStreamPuzzle2 {
   IntGenerator implements Supplier {
     private AtomicInteger current =
       new AtomicInteger();
-    public Integer get() {
+    @Override public Integer get() {
       trace.add(current.get() + ": " +
         Thread.currentThread().getName());
       return current.getAndIncrement();
@@ -34,5 +34,5 @@ public Integer get() {
   }
 }
 /* Output:
-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+[1, 5, 7, 8, 9, 11, 13, 15, 18, 21]
 */
diff --git a/concurrent/ParallelStreamPuzzle3.java b/concurrent/ParallelStreamPuzzle3.java
index 757bddd5b..69a35618f 100644
--- a/concurrent/ParallelStreamPuzzle3.java
+++ b/concurrent/ParallelStreamPuzzle3.java
@@ -1,5 +1,5 @@
 // concurrent/ParallelStreamPuzzle3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/concurrent/Philosopher.java b/concurrent/Philosopher.java
index 48facb382..7fa356846 100644
--- a/concurrent/Philosopher.java
+++ b/concurrent/Philosopher.java
@@ -1,5 +1,5 @@
 // concurrent/Philosopher.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -12,12 +12,10 @@ public Philosopher(int seat,
     this.left = left;
     this.right = right;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "P" + seat;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     while(true) {
       // System.out.println("Thinking");   // [1]
       right.pickUp();
diff --git a/concurrent/Pizza.java b/concurrent/Pizza.java
index 8cd5ff30b..6325b930f 100644
--- a/concurrent/Pizza.java
+++ b/concurrent/Pizza.java
@@ -1,5 +1,5 @@
 // concurrent/Pizza.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -41,8 +41,7 @@ public Pizza next(Step previousStep) {
   public boolean complete() {
     return step.equals(Step.BOXED);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Pizza" + id + ": " +
       (step.equals(Step.BOXED)? "complete" : step);
   }
diff --git a/concurrent/PizzaParallelSteps.java b/concurrent/PizzaParallelSteps.java
index 605e99853..a6ccb3e23 100644
--- a/concurrent/PizzaParallelSteps.java
+++ b/concurrent/PizzaParallelSteps.java
@@ -1,5 +1,5 @@
 // concurrent/PizzaParallelSteps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -25,45 +25,45 @@ public static void main(String[] args) {
   }
 }
 /* Output:
+Pizza 1: ROLLED
 Pizza 2: ROLLED
 Pizza 0: ROLLED
-Pizza 1: ROLLED
-Pizza 4: ROLLED
 Pizza 3: ROLLED
-Pizza 1: SAUCED
-Pizza 0: SAUCED
+Pizza 4: ROLLED
+Pizza 4: SAUCED
 Pizza 2: SAUCED
+Pizza 0: SAUCED
+Pizza 1: SAUCED
 Pizza 3: SAUCED
-Pizza 4: SAUCED
 Pizza 1: CHEESED
-Pizza 0: CHEESED
-Pizza 2: CHEESED
 Pizza 3: CHEESED
 Pizza 4: CHEESED
+Pizza 2: CHEESED
+Pizza 0: CHEESED
+Pizza 3: TOPPED
+Pizza 1: TOPPED
 Pizza 0: TOPPED
 Pizza 2: TOPPED
-Pizza 1: TOPPED
-Pizza 3: TOPPED
 Pizza 4: TOPPED
-Pizza 1: BAKED
 Pizza 2: BAKED
+Pizza 3: BAKED
+Pizza 1: BAKED
 Pizza 0: BAKED
 Pizza 4: BAKED
-Pizza 3: BAKED
-Pizza 0: SLICED
-Pizza 2: SLICED
-Pizza 1: SLICED
 Pizza 3: SLICED
+Pizza 1: SLICED
+Pizza 2: SLICED
+Pizza 0: SLICED
 Pizza 4: SLICED
+Pizza 3: BOXED
+Pizza3: complete
 Pizza 1: BOXED
 Pizza1: complete
 Pizza 2: BOXED
 Pizza 0: BOXED
-Pizza2: complete
 Pizza0: complete
-Pizza 3: BOXED
+Pizza2: complete
 Pizza 4: BOXED
 Pizza4: complete
-Pizza3: complete
-1738
+1766
 */
diff --git a/concurrent/PizzaStreams.java b/concurrent/PizzaStreams.java
index 16be983a7..8ec339bee 100644
--- a/concurrent/PizzaStreams.java
+++ b/concurrent/PizzaStreams.java
@@ -1,5 +1,5 @@
 // concurrent/PizzaStreams.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -12,7 +12,7 @@ public static void main(String[] args) {
     Timer timer = new Timer();
     IntStream.range(0, QUANTITY)
       .mapToObj(Pizza::new)
-      .parallel()             // [1]
+      .parallel()                   // [1]
       .forEach(za -> {
         while(!za.complete())
           za.next();
@@ -21,40 +21,40 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Pizza 2: ROLLED
 Pizza 0: ROLLED
 Pizza 1: ROLLED
-Pizza 4: ROLLED
+Pizza 2: ROLLED
 Pizza 3: ROLLED
-Pizza 2: SAUCED
+Pizza 4: ROLLED
 Pizza 1: SAUCED
 Pizza 0: SAUCED
 Pizza 4: SAUCED
+Pizza 2: SAUCED
 Pizza 3: SAUCED
+Pizza 3: CHEESED
 Pizza 2: CHEESED
-Pizza 1: CHEESED
-Pizza 0: CHEESED
 Pizza 4: CHEESED
-Pizza 3: CHEESED
+Pizza 0: CHEESED
+Pizza 1: CHEESED
+Pizza 3: TOPPED
 Pizza 2: TOPPED
+Pizza 4: TOPPED
 Pizza 1: TOPPED
 Pizza 0: TOPPED
-Pizza 4: TOPPED
-Pizza 3: TOPPED
-Pizza 2: BAKED
-Pizza 1: BAKED
-Pizza 0: BAKED
 Pizza 4: BAKED
+Pizza 2: BAKED
 Pizza 3: BAKED
-Pizza 2: SLICED
-Pizza 1: SLICED
-Pizza 0: SLICED
+Pizza 0: BAKED
+Pizza 1: BAKED
 Pizza 4: SLICED
 Pizza 3: SLICED
+Pizza 2: SLICED
+Pizza 0: SLICED
+Pizza 1: SLICED
 Pizza 2: BOXED
-Pizza 1: BOXED
-Pizza 0: BOXED
 Pizza 4: BOXED
 Pizza 3: BOXED
-1739
+Pizza 1: BOXED
+Pizza 0: BOXED
+1797
 */
diff --git a/concurrent/QuittableTask.java b/concurrent/QuittableTask.java
index 3cf2a62e4..e2a1bab23 100644
--- a/concurrent/QuittableTask.java
+++ b/concurrent/QuittableTask.java
@@ -1,5 +1,5 @@
 // concurrent/QuittableTask.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -11,10 +11,9 @@ public class QuittableTask implements Runnable {
   private AtomicBoolean running =
     new AtomicBoolean(true);
   public void quit() { running.set(false); }
-  @Override
-  public void run() {
-    while(running.get())         // [1]
+  @Override public void run() {
+    while(running.get())                  // [1]
       new Nap(0.1);
-    System.out.print(id + " ");  // [2]
+    System.out.print(id + " ");           // [2]
   }
 }
diff --git a/concurrent/QuittingCompletable.java b/concurrent/QuittingCompletable.java
index e41e38999..7fb9c0fca 100644
--- a/concurrent/QuittingCompletable.java
+++ b/concurrent/QuittingCompletable.java
@@ -1,5 +1,5 @@
 // concurrent/QuittingCompletable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -23,13 +23,13 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-26 27 28 29 30 31 32 33 34 6 35 4 38 39 40 41 42 43 44
-45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
-63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
-81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
-99 100 101 102 103 104 105 106 107 108 109 110 111 112
-1 113 114 116 117 118 119 120 121 122 123 124 125 126
-127 128 129 130 131 132 133 134 135 136 137 138 139 140
-141 142 143 144 145 146 147 148 149 5 115 37 36 2 3
+6 7 5 9 11 12 13 14 15 16 17 18 19 20 21 22 23 10 24 26
+27 28 29 30 31 32 25 33 8 36 37 38 39 40 41 42 43 44 45
+46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
+64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
+82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
+100 101 102 103 104 105 106 107 108 34 110 111 112 113
+114 115 116 117 118 119 120 121 109 123 124 125 126 127
+128 129 130 131 35 132 122 134 133 136 135 138 140 141
+142 143 144 145 146 147 148 149 137 139 3 1 2 4
 */
diff --git a/concurrent/QuittingTasks.java b/concurrent/QuittingTasks.java
index 326e24ce1..58618e531 100644
--- a/concurrent/QuittingTasks.java
+++ b/concurrent/QuittingTasks.java
@@ -1,5 +1,5 @@
 // concurrent/QuittingTasks.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -23,13 +23,13 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-24 27 31 8 11 7 19 12 16 4 23 3 28 32 15 20 63 60 68 67
-64 39 47 52 51 55 40 43 48 59 44 56 36 35 71 72 83 103
-96 92 88 99 100 87 91 79 75 84 76 115 108 112 104 107
-111 95 80 147 120 127 119 123 144 143 116 132 124 128
-136 131 135 139 148 140 2 126 6 5 1 18 129 17 14 13 21
-22 9 10 30 33 58 37 125 26 34 133 145 78 137 141 138 62
-74 142 86 65 73 146 70 42 149 121 110 134 105 82 117
-106 113 122 45 114 118 38 50 29 90 101 89 57 53 94 41
-61 66 130 69 77 81 85 93 25 102 54 109 98 49 46 97
+11 23 20 12 24 16 19 15 35 147 32 27 7 4 28 31 8 83 3 1
+13 9 5 2 6 18 14 17 21 25 22 26 29 30 33 34 37 41 38 46
+45 49 50 53 57 58 54 69 104 112 40 73 74 115 116 70 119
+77 81 56 85 78 82 111 86 90 48 89 36 108 107 44 55 52
+43 60 63 59 64 71 68 67 75 76 72 79 80 84 87 88 66 91
+10 95 65 96 94 92 62 100 61 93 47 39 51 99 103 128 123
+127 124 140 120 139 136 135 143 148 144 105 102 131 101
+132 98 97 149 137 134 42 106 110 109 114 133 113 117
+118 130 129 126 121 125 122 138 141 145 142 146
 */
diff --git a/concurrent/SharedConstructorArgument.java b/concurrent/SharedConstructorArgument.java
index 4b09cc26c..9746ff761 100644
--- a/concurrent/SharedConstructorArgument.java
+++ b/concurrent/SharedConstructorArgument.java
@@ -1,5 +1,5 @@
 // concurrent/SharedConstructorArgument.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
@@ -10,13 +10,13 @@ interface SharedArg {
 
 class Unsafe implements SharedArg {
   private int i = 0;
-  public int get() { return i++; }
+  @Override public int get() { return i++; }
 }
 
 class Safe implements SharedArg {
   private static AtomicInteger counter =
     new AtomicInteger();
-  public int get() {
+  @Override public int get() {
     return counter.getAndIncrement();
   }
 }
@@ -26,8 +26,7 @@ class SharedUser implements HasID {
   SharedUser(SharedArg sa) {
     id = sa.get();
   }
-  @Override
-  public int getID() { return id; }
+  @Override public int getID() { return id; }
 }
 
 public class SharedConstructorArgument {
@@ -39,6 +38,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-24838
+16537
 0
 */
diff --git a/concurrent/SingleThreadExecutor.java b/concurrent/SingleThreadExecutor.java
index ef89e3a53..12629d433 100644
--- a/concurrent/SingleThreadExecutor.java
+++ b/concurrent/SingleThreadExecutor.java
@@ -1,5 +1,5 @@
 // concurrent/SingleThreadExecutor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -30,17 +30,17 @@ public static void main(String[] args) {
 NapTask[0] pool-1-thread-1
 main awaiting termination
 NapTask[1] pool-1-thread-1
-main awaiting termination
 NapTask[2] pool-1-thread-1
 main awaiting termination
 NapTask[3] pool-1-thread-1
 main awaiting termination
-NapTask[4] pool-1-thread-1
 main awaiting termination
+NapTask[4] pool-1-thread-1
 NapTask[5] pool-1-thread-1
 main awaiting termination
 NapTask[6] pool-1-thread-1
 main awaiting termination
+main awaiting termination
 NapTask[7] pool-1-thread-1
 main awaiting termination
 NapTask[8] pool-1-thread-1
diff --git a/concurrent/SingleThreadExecutor2.java b/concurrent/SingleThreadExecutor2.java
index 08467df5a..81657338f 100644
--- a/concurrent/SingleThreadExecutor2.java
+++ b/concurrent/SingleThreadExecutor2.java
@@ -1,5 +1,5 @@
 // concurrent/SingleThreadExecutor2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/SingleThreadExecutor3.java b/concurrent/SingleThreadExecutor3.java
index 581494238..d32c667f1 100644
--- a/concurrent/SingleThreadExecutor3.java
+++ b/concurrent/SingleThreadExecutor3.java
@@ -1,5 +1,5 @@
 // concurrent/SingleThreadExecutor3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/StaticIDField.java b/concurrent/StaticIDField.java
index 22623faaf..deefbb62e 100644
--- a/concurrent/StaticIDField.java
+++ b/concurrent/StaticIDField.java
@@ -1,10 +1,10 @@
 // concurrent/StaticIDField.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class StaticIDField implements HasID {
   private static int counter = 0;
   private int id = counter++;
-  public int getID() { return id; }
+  @Override public int getID() { return id; }
 }
diff --git a/concurrent/StickHolder.java b/concurrent/StickHolder.java
index 719a1c635..f4f9279ca 100644
--- a/concurrent/StickHolder.java
+++ b/concurrent/StickHolder.java
@@ -1,5 +1,5 @@
 // concurrent/StickHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/StreamExceptions.java b/concurrent/StreamExceptions.java
index 493daee1f..e02b42743 100644
--- a/concurrent/StreamExceptions.java
+++ b/concurrent/StreamExceptions.java
@@ -1,5 +1,5 @@
 // concurrent/StreamExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/concurrent/Summing.java b/concurrent/Summing.java
index 321dcb573..ae97efca2 100644
--- a/concurrent/Summing.java
+++ b/concurrent/Summing.java
@@ -1,5 +1,5 @@
 // concurrent/Summing.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
@@ -41,7 +41,7 @@ public static void main(String[] args) {
 }
 /* Output:
 5000000050000000
-Sum Stream: 167ms
-Sum Stream Parallel: 46ms
-Sum Iterated: 284ms
+Sum Stream: 841ms
+Sum Stream Parallel: 179ms
+Sum Iterated: 4051ms
 */
diff --git a/concurrent/Summing2.java b/concurrent/Summing2.java
index c046721f0..257a53138 100644
--- a/concurrent/Summing2.java
+++ b/concurrent/Summing2.java
@@ -1,5 +1,5 @@
 // concurrent/Summing2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
@@ -37,8 +37,8 @@ public static void main(String[] args) {
 }
 /* Output:
 200000010000000
-Array Stream Sum: 104ms
-Parallel: 81ms
-Basic Sum: 106ms
-parallelPrefix: 265ms
+Array Stream Sum: 166ms
+Parallel: 30ms
+Basic Sum: 45ms
+parallelPrefix: 53ms
 */
diff --git a/concurrent/Summing3.java b/concurrent/Summing3.java
index 252e96f7e..3af34db21 100644
--- a/concurrent/Summing3.java
+++ b/concurrent/Summing3.java
@@ -1,5 +1,5 @@
 // concurrent/Summing3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
@@ -36,7 +36,7 @@ public static void main(String[] args) {
 }
 /* Output:
 50000005000000
-Long Array Stream Reduce: 1038ms
-Long Basic Sum: 21ms
-Long parallelPrefix: 3616ms
+Long Array Stream Reduce: 1510ms
+Long Basic Sum: 35ms
+Long parallelPrefix: 4306ms
 */
diff --git a/concurrent/Summing4.java b/concurrent/Summing4.java
index bb4fe2ea2..03dc04ba0 100644
--- a/concurrent/Summing4.java
+++ b/concurrent/Summing4.java
@@ -1,5 +1,5 @@
 // concurrent/Summing4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
@@ -19,5 +19,5 @@ public static void main(String[] args) {
 }
 /* Output:
 50000005000000
-Long Parallel: 1014ms
+Long Parallel: 1147ms
 */
diff --git a/concurrent/SynchronizedConstructor.java b/concurrent/SynchronizedConstructor.java
index 95aa6a542..092c9733b 100644
--- a/concurrent/SynchronizedConstructor.java
+++ b/concurrent/SynchronizedConstructor.java
@@ -1,5 +1,5 @@
 // concurrent/SynchronizedConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
@@ -13,8 +13,7 @@ class SyncConstructor implements HasID {
       id = sa.get();
     }
   }
-  @Override
-  public int getID() { return id; }
+  @Override public int getID() { return id; }
 }
 
 public class SynchronizedConstructor {
diff --git a/concurrent/SynchronizedFactory.java b/concurrent/SynchronizedFactory.java
index 669d4d76b..11e5f184b 100644
--- a/concurrent/SynchronizedFactory.java
+++ b/concurrent/SynchronizedFactory.java
@@ -1,5 +1,5 @@
 // concurrent/SynchronizedFactory.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
@@ -9,8 +9,7 @@ final class SyncFactory implements HasID {
   private SyncFactory(SharedArg sa) {
     id = sa.get();
   }
-  @Override
-  public int getID() { return id; }
+  @Override public int getID() { return id; }
   public static synchronized
   SyncFactory factory(SharedArg sa) {
     return new SyncFactory(sa);
diff --git a/concurrent/TestStaticIDField.java b/concurrent/TestStaticIDField.java
index 5df298b76..6f10da7cf 100644
--- a/concurrent/TestStaticIDField.java
+++ b/concurrent/TestStaticIDField.java
@@ -1,5 +1,5 @@
 // concurrent/TestStaticIDField.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,5 +9,5 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-13287
+21397
 */
diff --git a/concurrent/ThrowsChecked.java b/concurrent/ThrowsChecked.java
index 59177b35a..f198cc6c0 100644
--- a/concurrent/ThrowsChecked.java
+++ b/concurrent/ThrowsChecked.java
@@ -1,5 +1,5 @@
 // concurrent/ThrowsChecked.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
@@ -17,7 +17,7 @@ static ThrowsChecked nochecked(ThrowsChecked tc) {
   static void testStream() {
     Stream.of(new ThrowsChecked())
       .map(ThrowsChecked::nochecked)
-      // .map(ThrowsChecked::withchecked); // [1]
+      // .map(ThrowsChecked::withchecked);        // [1]
       .map(tc -> {
         try {
           return withchecked(tc);
@@ -30,7 +30,7 @@ static void testCompletableFuture() {
     CompletableFuture
       .completedFuture(new ThrowsChecked())
       .thenApply(ThrowsChecked::nochecked)
-      // .thenApply(ThrowsChecked::withchecked); // [2]
+      // .thenApply(ThrowsChecked::withchecked);  // [2]
       .thenApply(tc -> {
         try {
           return withchecked(tc);
diff --git a/concurrent/Workable.java b/concurrent/Workable.java
index fcdbbbf80..ada83c2f6 100644
--- a/concurrent/Workable.java
+++ b/concurrent/Workable.java
@@ -1,5 +1,5 @@
 // concurrent/Workable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -12,8 +12,7 @@ public Workable(String id, double duration) {
     this.id = id;
     this.duration = duration;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Workable[" + id + "]";
   }
   public static Workable work(Workable tt) {
diff --git a/concurrent/primes.txt b/concurrent/primes.txt
new file mode 100644
index 000000000..6dc8a58ab
--- /dev/null
+++ b/concurrent/primes.txt
@@ -0,0 +1,100000 @@
+2
+3
+5
+7
+11
+13
+17
+19
+23
+29
+31
+37
+41
+43
+47
+53
+59
+61
+67
+71
+73
+79
+83
+89
+97
+101
+103
+107
+109
+113
+127
+131
+137
+139
+149
+151
+157
+163
+167
+173
+179
+181
+191
+193
+197
+199
+211
+223
+227
+229
+233
+239
+241
+251
+257
+263
+269
+271
+277
+281
+283
+293
+307
+311
+313
+317
+331
+337
+347
+349
+353
+359
+367
+373
+379
+383
+389
+397
+401
+409
+419
+421
+431
+433
+439
+443
+449
+457
+461
+463
+467
+479
+487
+491
+499
+503
+509
+521
+523
+541
+547
+557
+563
+569
+571
+577
+587
+593
+599
+601
+607
+613
+617
+619
+631
+641
+643
+647
+653
+659
+661
+673
+677
+683
+691
+701
+709
+719
+727
+733
+739
+743
+751
+757
+761
+769
+773
+787
+797
+809
+811
+821
+823
+827
+829
+839
+853
+857
+859
+863
+877
+881
+883
+887
+907
+911
+919
+929
+937
+941
+947
+953
+967
+971
+977
+983
+991
+997
+1009
+1013
+1019
+1021
+1031
+1033
+1039
+1049
+1051
+1061
+1063
+1069
+1087
+1091
+1093
+1097
+1103
+1109
+1117
+1123
+1129
+1151
+1153
+1163
+1171
+1181
+1187
+1193
+1201
+1213
+1217
+1223
+1229
+1231
+1237
+1249
+1259
+1277
+1279
+1283
+1289
+1291
+1297
+1301
+1303
+1307
+1319
+1321
+1327
+1361
+1367
+1373
+1381
+1399
+1409
+1423
+1427
+1429
+1433
+1439
+1447
+1451
+1453
+1459
+1471
+1481
+1483
+1487
+1489
+1493
+1499
+1511
+1523
+1531
+1543
+1549
+1553
+1559
+1567
+1571
+1579
+1583
+1597
+1601
+1607
+1609
+1613
+1619
+1621
+1627
+1637
+1657
+1663
+1667
+1669
+1693
+1697
+1699
+1709
+1721
+1723
+1733
+1741
+1747
+1753
+1759
+1777
+1783
+1787
+1789
+1801
+1811
+1823
+1831
+1847
+1861
+1867
+1871
+1873
+1877
+1879
+1889
+1901
+1907
+1913
+1931
+1933
+1949
+1951
+1973
+1979
+1987
+1993
+1997
+1999
+2003
+2011
+2017
+2027
+2029
+2039
+2053
+2063
+2069
+2081
+2083
+2087
+2089
+2099
+2111
+2113
+2129
+2131
+2137
+2141
+2143
+2153
+2161
+2179
+2203
+2207
+2213
+2221
+2237
+2239
+2243
+2251
+2267
+2269
+2273
+2281
+2287
+2293
+2297
+2309
+2311
+2333
+2339
+2341
+2347
+2351
+2357
+2371
+2377
+2381
+2383
+2389
+2393
+2399
+2411
+2417
+2423
+2437
+2441
+2447
+2459
+2467
+2473
+2477
+2503
+2521
+2531
+2539
+2543
+2549
+2551
+2557
+2579
+2591
+2593
+2609
+2617
+2621
+2633
+2647
+2657
+2659
+2663
+2671
+2677
+2683
+2687
+2689
+2693
+2699
+2707
+2711
+2713
+2719
+2729
+2731
+2741
+2749
+2753
+2767
+2777
+2789
+2791
+2797
+2801
+2803
+2819
+2833
+2837
+2843
+2851
+2857
+2861
+2879
+2887
+2897
+2903
+2909
+2917
+2927
+2939
+2953
+2957
+2963
+2969
+2971
+2999
+3001
+3011
+3019
+3023
+3037
+3041
+3049
+3061
+3067
+3079
+3083
+3089
+3109
+3119
+3121
+3137
+3163
+3167
+3169
+3181
+3187
+3191
+3203
+3209
+3217
+3221
+3229
+3251
+3253
+3257
+3259
+3271
+3299
+3301
+3307
+3313
+3319
+3323
+3329
+3331
+3343
+3347
+3359
+3361
+3371
+3373
+3389
+3391
+3407
+3413
+3433
+3449
+3457
+3461
+3463
+3467
+3469
+3491
+3499
+3511
+3517
+3527
+3529
+3533
+3539
+3541
+3547
+3557
+3559
+3571
+3581
+3583
+3593
+3607
+3613
+3617
+3623
+3631
+3637
+3643
+3659
+3671
+3673
+3677
+3691
+3697
+3701
+3709
+3719
+3727
+3733
+3739
+3761
+3767
+3769
+3779
+3793
+3797
+3803
+3821
+3823
+3833
+3847
+3851
+3853
+3863
+3877
+3881
+3889
+3907
+3911
+3917
+3919
+3923
+3929
+3931
+3943
+3947
+3967
+3989
+4001
+4003
+4007
+4013
+4019
+4021
+4027
+4049
+4051
+4057
+4073
+4079
+4091
+4093
+4099
+4111
+4127
+4129
+4133
+4139
+4153
+4157
+4159
+4177
+4201
+4211
+4217
+4219
+4229
+4231
+4241
+4243
+4253
+4259
+4261
+4271
+4273
+4283
+4289
+4297
+4327
+4337
+4339
+4349
+4357
+4363
+4373
+4391
+4397
+4409
+4421
+4423
+4441
+4447
+4451
+4457
+4463
+4481
+4483
+4493
+4507
+4513
+4517
+4519
+4523
+4547
+4549
+4561
+4567
+4583
+4591
+4597
+4603
+4621
+4637
+4639
+4643
+4649
+4651
+4657
+4663
+4673
+4679
+4691
+4703
+4721
+4723
+4729
+4733
+4751
+4759
+4783
+4787
+4789
+4793
+4799
+4801
+4813
+4817
+4831
+4861
+4871
+4877
+4889
+4903
+4909
+4919
+4931
+4933
+4937
+4943
+4951
+4957
+4967
+4969
+4973
+4987
+4993
+4999
+5003
+5009
+5011
+5021
+5023
+5039
+5051
+5059
+5077
+5081
+5087
+5099
+5101
+5107
+5113
+5119
+5147
+5153
+5167
+5171
+5179
+5189
+5197
+5209
+5227
+5231
+5233
+5237
+5261
+5273
+5279
+5281
+5297
+5303
+5309
+5323
+5333
+5347
+5351
+5381
+5387
+5393
+5399
+5407
+5413
+5417
+5419
+5431
+5437
+5441
+5443
+5449
+5471
+5477
+5479
+5483
+5501
+5503
+5507
+5519
+5521
+5527
+5531
+5557
+5563
+5569
+5573
+5581
+5591
+5623
+5639
+5641
+5647
+5651
+5653
+5657
+5659
+5669
+5683
+5689
+5693
+5701
+5711
+5717
+5737
+5741
+5743
+5749
+5779
+5783
+5791
+5801
+5807
+5813
+5821
+5827
+5839
+5843
+5849
+5851
+5857
+5861
+5867
+5869
+5879
+5881
+5897
+5903
+5923
+5927
+5939
+5953
+5981
+5987
+6007
+6011
+6029
+6037
+6043
+6047
+6053
+6067
+6073
+6079
+6089
+6091
+6101
+6113
+6121
+6131
+6133
+6143
+6151
+6163
+6173
+6197
+6199
+6203
+6211
+6217
+6221
+6229
+6247
+6257
+6263
+6269
+6271
+6277
+6287
+6299
+6301
+6311
+6317
+6323
+6329
+6337
+6343
+6353
+6359
+6361
+6367
+6373
+6379
+6389
+6397
+6421
+6427
+6449
+6451
+6469
+6473
+6481
+6491
+6521
+6529
+6547
+6551
+6553
+6563
+6569
+6571
+6577
+6581
+6599
+6607
+6619
+6637
+6653
+6659
+6661
+6673
+6679
+6689
+6691
+6701
+6703
+6709
+6719
+6733
+6737
+6761
+6763
+6779
+6781
+6791
+6793
+6803
+6823
+6827
+6829
+6833
+6841
+6857
+6863
+6869
+6871
+6883
+6899
+6907
+6911
+6917
+6947
+6949
+6959
+6961
+6967
+6971
+6977
+6983
+6991
+6997
+7001
+7013
+7019
+7027
+7039
+7043
+7057
+7069
+7079
+7103
+7109
+7121
+7127
+7129
+7151
+7159
+7177
+7187
+7193
+7207
+7211
+7213
+7219
+7229
+7237
+7243
+7247
+7253
+7283
+7297
+7307
+7309
+7321
+7331
+7333
+7349
+7351
+7369
+7393
+7411
+7417
+7433
+7451
+7457
+7459
+7477
+7481
+7487
+7489
+7499
+7507
+7517
+7523
+7529
+7537
+7541
+7547
+7549
+7559
+7561
+7573
+7577
+7583
+7589
+7591
+7603
+7607
+7621
+7639
+7643
+7649
+7669
+7673
+7681
+7687
+7691
+7699
+7703
+7717
+7723
+7727
+7741
+7753
+7757
+7759
+7789
+7793
+7817
+7823
+7829
+7841
+7853
+7867
+7873
+7877
+7879
+7883
+7901
+7907
+7919
+7927
+7933
+7937
+7949
+7951
+7963
+7993
+8009
+8011
+8017
+8039
+8053
+8059
+8069
+8081
+8087
+8089
+8093
+8101
+8111
+8117
+8123
+8147
+8161
+8167
+8171
+8179
+8191
+8209
+8219
+8221
+8231
+8233
+8237
+8243
+8263
+8269
+8273
+8287
+8291
+8293
+8297
+8311
+8317
+8329
+8353
+8363
+8369
+8377
+8387
+8389
+8419
+8423
+8429
+8431
+8443
+8447
+8461
+8467
+8501
+8513
+8521
+8527
+8537
+8539
+8543
+8563
+8573
+8581
+8597
+8599
+8609
+8623
+8627
+8629
+8641
+8647
+8663
+8669
+8677
+8681
+8689
+8693
+8699
+8707
+8713
+8719
+8731
+8737
+8741
+8747
+8753
+8761
+8779
+8783
+8803
+8807
+8819
+8821
+8831
+8837
+8839
+8849
+8861
+8863
+8867
+8887
+8893
+8923
+8929
+8933
+8941
+8951
+8963
+8969
+8971
+8999
+9001
+9007
+9011
+9013
+9029
+9041
+9043
+9049
+9059
+9067
+9091
+9103
+9109
+9127
+9133
+9137
+9151
+9157
+9161
+9173
+9181
+9187
+9199
+9203
+9209
+9221
+9227
+9239
+9241
+9257
+9277
+9281
+9283
+9293
+9311
+9319
+9323
+9337
+9341
+9343
+9349
+9371
+9377
+9391
+9397
+9403
+9413
+9419
+9421
+9431
+9433
+9437
+9439
+9461
+9463
+9467
+9473
+9479
+9491
+9497
+9511
+9521
+9533
+9539
+9547
+9551
+9587
+9601
+9613
+9619
+9623
+9629
+9631
+9643
+9649
+9661
+9677
+9679
+9689
+9697
+9719
+9721
+9733
+9739
+9743
+9749
+9767
+9769
+9781
+9787
+9791
+9803
+9811
+9817
+9829
+9833
+9839
+9851
+9857
+9859
+9871
+9883
+9887
+9901
+9907
+9923
+9929
+9931
+9941
+9949
+9967
+9973
+10007
+10009
+10037
+10039
+10061
+10067
+10069
+10079
+10091
+10093
+10099
+10103
+10111
+10133
+10139
+10141
+10151
+10159
+10163
+10169
+10177
+10181
+10193
+10211
+10223
+10243
+10247
+10253
+10259
+10267
+10271
+10273
+10289
+10301
+10303
+10313
+10321
+10331
+10333
+10337
+10343
+10357
+10369
+10391
+10399
+10427
+10429
+10433
+10453
+10457
+10459
+10463
+10477
+10487
+10499
+10501
+10513
+10529
+10531
+10559
+10567
+10589
+10597
+10601
+10607
+10613
+10627
+10631
+10639
+10651
+10657
+10663
+10667
+10687
+10691
+10709
+10711
+10723
+10729
+10733
+10739
+10753
+10771
+10781
+10789
+10799
+10831
+10837
+10847
+10853
+10859
+10861
+10867
+10883
+10889
+10891
+10903
+10909
+10937
+10939
+10949
+10957
+10973
+10979
+10987
+10993
+11003
+11027
+11047
+11057
+11059
+11069
+11071
+11083
+11087
+11093
+11113
+11117
+11119
+11131
+11149
+11159
+11161
+11171
+11173
+11177
+11197
+11213
+11239
+11243
+11251
+11257
+11261
+11273
+11279
+11287
+11299
+11311
+11317
+11321
+11329
+11351
+11353
+11369
+11383
+11393
+11399
+11411
+11423
+11437
+11443
+11447
+11467
+11471
+11483
+11489
+11491
+11497
+11503
+11519
+11527
+11549
+11551
+11579
+11587
+11593
+11597
+11617
+11621
+11633
+11657
+11677
+11681
+11689
+11699
+11701
+11717
+11719
+11731
+11743
+11777
+11779
+11783
+11789
+11801
+11807
+11813
+11821
+11827
+11831
+11833
+11839
+11863
+11867
+11887
+11897
+11903
+11909
+11923
+11927
+11933
+11939
+11941
+11953
+11959
+11969
+11971
+11981
+11987
+12007
+12011
+12037
+12041
+12043
+12049
+12071
+12073
+12097
+12101
+12107
+12109
+12113
+12119
+12143
+12149
+12157
+12161
+12163
+12197
+12203
+12211
+12227
+12239
+12241
+12251
+12253
+12263
+12269
+12277
+12281
+12289
+12301
+12323
+12329
+12343
+12347
+12373
+12377
+12379
+12391
+12401
+12409
+12413
+12421
+12433
+12437
+12451
+12457
+12473
+12479
+12487
+12491
+12497
+12503
+12511
+12517
+12527
+12539
+12541
+12547
+12553
+12569
+12577
+12583
+12589
+12601
+12611
+12613
+12619
+12637
+12641
+12647
+12653
+12659
+12671
+12689
+12697
+12703
+12713
+12721
+12739
+12743
+12757
+12763
+12781
+12791
+12799
+12809
+12821
+12823
+12829
+12841
+12853
+12889
+12893
+12899
+12907
+12911
+12917
+12919
+12923
+12941
+12953
+12959
+12967
+12973
+12979
+12983
+13001
+13003
+13007
+13009
+13033
+13037
+13043
+13049
+13063
+13093
+13099
+13103
+13109
+13121
+13127
+13147
+13151
+13159
+13163
+13171
+13177
+13183
+13187
+13217
+13219
+13229
+13241
+13249
+13259
+13267
+13291
+13297
+13309
+13313
+13327
+13331
+13337
+13339
+13367
+13381
+13397
+13399
+13411
+13417
+13421
+13441
+13451
+13457
+13463
+13469
+13477
+13487
+13499
+13513
+13523
+13537
+13553
+13567
+13577
+13591
+13597
+13613
+13619
+13627
+13633
+13649
+13669
+13679
+13681
+13687
+13691
+13693
+13697
+13709
+13711
+13721
+13723
+13729
+13751
+13757
+13759
+13763
+13781
+13789
+13799
+13807
+13829
+13831
+13841
+13859
+13873
+13877
+13879
+13883
+13901
+13903
+13907
+13913
+13921
+13931
+13933
+13963
+13967
+13997
+13999
+14009
+14011
+14029
+14033
+14051
+14057
+14071
+14081
+14083
+14087
+14107
+14143
+14149
+14153
+14159
+14173
+14177
+14197
+14207
+14221
+14243
+14249
+14251
+14281
+14293
+14303
+14321
+14323
+14327
+14341
+14347
+14369
+14387
+14389
+14401
+14407
+14411
+14419
+14423
+14431
+14437
+14447
+14449
+14461
+14479
+14489
+14503
+14519
+14533
+14537
+14543
+14549
+14551
+14557
+14561
+14563
+14591
+14593
+14621
+14627
+14629
+14633
+14639
+14653
+14657
+14669
+14683
+14699
+14713
+14717
+14723
+14731
+14737
+14741
+14747
+14753
+14759
+14767
+14771
+14779
+14783
+14797
+14813
+14821
+14827
+14831
+14843
+14851
+14867
+14869
+14879
+14887
+14891
+14897
+14923
+14929
+14939
+14947
+14951
+14957
+14969
+14983
+15013
+15017
+15031
+15053
+15061
+15073
+15077
+15083
+15091
+15101
+15107
+15121
+15131
+15137
+15139
+15149
+15161
+15173
+15187
+15193
+15199
+15217
+15227
+15233
+15241
+15259
+15263
+15269
+15271
+15277
+15287
+15289
+15299
+15307
+15313
+15319
+15329
+15331
+15349
+15359
+15361
+15373
+15377
+15383
+15391
+15401
+15413
+15427
+15439
+15443
+15451
+15461
+15467
+15473
+15493
+15497
+15511
+15527
+15541
+15551
+15559
+15569
+15581
+15583
+15601
+15607
+15619
+15629
+15641
+15643
+15647
+15649
+15661
+15667
+15671
+15679
+15683
+15727
+15731
+15733
+15737
+15739
+15749
+15761
+15767
+15773
+15787
+15791
+15797
+15803
+15809
+15817
+15823
+15859
+15877
+15881
+15887
+15889
+15901
+15907
+15913
+15919
+15923
+15937
+15959
+15971
+15973
+15991
+16001
+16007
+16033
+16057
+16061
+16063
+16067
+16069
+16073
+16087
+16091
+16097
+16103
+16111
+16127
+16139
+16141
+16183
+16187
+16189
+16193
+16217
+16223
+16229
+16231
+16249
+16253
+16267
+16273
+16301
+16319
+16333
+16339
+16349
+16361
+16363
+16369
+16381
+16411
+16417
+16421
+16427
+16433
+16447
+16451
+16453
+16477
+16481
+16487
+16493
+16519
+16529
+16547
+16553
+16561
+16567
+16573
+16603
+16607
+16619
+16631
+16633
+16649
+16651
+16657
+16661
+16673
+16691
+16693
+16699
+16703
+16729
+16741
+16747
+16759
+16763
+16787
+16811
+16823
+16829
+16831
+16843
+16871
+16879
+16883
+16889
+16901
+16903
+16921
+16927
+16931
+16937
+16943
+16963
+16979
+16981
+16987
+16993
+17011
+17021
+17027
+17029
+17033
+17041
+17047
+17053
+17077
+17093
+17099
+17107
+17117
+17123
+17137
+17159
+17167
+17183
+17189
+17191
+17203
+17207
+17209
+17231
+17239
+17257
+17291
+17293
+17299
+17317
+17321
+17327
+17333
+17341
+17351
+17359
+17377
+17383
+17387
+17389
+17393
+17401
+17417
+17419
+17431
+17443
+17449
+17467
+17471
+17477
+17483
+17489
+17491
+17497
+17509
+17519
+17539
+17551
+17569
+17573
+17579
+17581
+17597
+17599
+17609
+17623
+17627
+17657
+17659
+17669
+17681
+17683
+17707
+17713
+17729
+17737
+17747
+17749
+17761
+17783
+17789
+17791
+17807
+17827
+17837
+17839
+17851
+17863
+17881
+17891
+17903
+17909
+17911
+17921
+17923
+17929
+17939
+17957
+17959
+17971
+17977
+17981
+17987
+17989
+18013
+18041
+18043
+18047
+18049
+18059
+18061
+18077
+18089
+18097
+18119
+18121
+18127
+18131
+18133
+18143
+18149
+18169
+18181
+18191
+18199
+18211
+18217
+18223
+18229
+18233
+18251
+18253
+18257
+18269
+18287
+18289
+18301
+18307
+18311
+18313
+18329
+18341
+18353
+18367
+18371
+18379
+18397
+18401
+18413
+18427
+18433
+18439
+18443
+18451
+18457
+18461
+18481
+18493
+18503
+18517
+18521
+18523
+18539
+18541
+18553
+18583
+18587
+18593
+18617
+18637
+18661
+18671
+18679
+18691
+18701
+18713
+18719
+18731
+18743
+18749
+18757
+18773
+18787
+18793
+18797
+18803
+18839
+18859
+18869
+18899
+18911
+18913
+18917
+18919
+18947
+18959
+18973
+18979
+19001
+19009
+19013
+19031
+19037
+19051
+19069
+19073
+19079
+19081
+19087
+19121
+19139
+19141
+19157
+19163
+19181
+19183
+19207
+19211
+19213
+19219
+19231
+19237
+19249
+19259
+19267
+19273
+19289
+19301
+19309
+19319
+19333
+19373
+19379
+19381
+19387
+19391
+19403
+19417
+19421
+19423
+19427
+19429
+19433
+19441
+19447
+19457
+19463
+19469
+19471
+19477
+19483
+19489
+19501
+19507
+19531
+19541
+19543
+19553
+19559
+19571
+19577
+19583
+19597
+19603
+19609
+19661
+19681
+19687
+19697
+19699
+19709
+19717
+19727
+19739
+19751
+19753
+19759
+19763
+19777
+19793
+19801
+19813
+19819
+19841
+19843
+19853
+19861
+19867
+19889
+19891
+19913
+19919
+19927
+19937
+19949
+19961
+19963
+19973
+19979
+19991
+19993
+19997
+20011
+20021
+20023
+20029
+20047
+20051
+20063
+20071
+20089
+20101
+20107
+20113
+20117
+20123
+20129
+20143
+20147
+20149
+20161
+20173
+20177
+20183
+20201
+20219
+20231
+20233
+20249
+20261
+20269
+20287
+20297
+20323
+20327
+20333
+20341
+20347
+20353
+20357
+20359
+20369
+20389
+20393
+20399
+20407
+20411
+20431
+20441
+20443
+20477
+20479
+20483
+20507
+20509
+20521
+20533
+20543
+20549
+20551
+20563
+20593
+20599
+20611
+20627
+20639
+20641
+20663
+20681
+20693
+20707
+20717
+20719
+20731
+20743
+20747
+20749
+20753
+20759
+20771
+20773
+20789
+20807
+20809
+20849
+20857
+20873
+20879
+20887
+20897
+20899
+20903
+20921
+20929
+20939
+20947
+20959
+20963
+20981
+20983
+21001
+21011
+21013
+21017
+21019
+21023
+21031
+21059
+21061
+21067
+21089
+21101
+21107
+21121
+21139
+21143
+21149
+21157
+21163
+21169
+21179
+21187
+21191
+21193
+21211
+21221
+21227
+21247
+21269
+21277
+21283
+21313
+21317
+21319
+21323
+21341
+21347
+21377
+21379
+21383
+21391
+21397
+21401
+21407
+21419
+21433
+21467
+21481
+21487
+21491
+21493
+21499
+21503
+21517
+21521
+21523
+21529
+21557
+21559
+21563
+21569
+21577
+21587
+21589
+21599
+21601
+21611
+21613
+21617
+21647
+21649
+21661
+21673
+21683
+21701
+21713
+21727
+21737
+21739
+21751
+21757
+21767
+21773
+21787
+21799
+21803
+21817
+21821
+21839
+21841
+21851
+21859
+21863
+21871
+21881
+21893
+21911
+21929
+21937
+21943
+21961
+21977
+21991
+21997
+22003
+22013
+22027
+22031
+22037
+22039
+22051
+22063
+22067
+22073
+22079
+22091
+22093
+22109
+22111
+22123
+22129
+22133
+22147
+22153
+22157
+22159
+22171
+22189
+22193
+22229
+22247
+22259
+22271
+22273
+22277
+22279
+22283
+22291
+22303
+22307
+22343
+22349
+22367
+22369
+22381
+22391
+22397
+22409
+22433
+22441
+22447
+22453
+22469
+22481
+22483
+22501
+22511
+22531
+22541
+22543
+22549
+22567
+22571
+22573
+22613
+22619
+22621
+22637
+22639
+22643
+22651
+22669
+22679
+22691
+22697
+22699
+22709
+22717
+22721
+22727
+22739
+22741
+22751
+22769
+22777
+22783
+22787
+22807
+22811
+22817
+22853
+22859
+22861
+22871
+22877
+22901
+22907
+22921
+22937
+22943
+22961
+22963
+22973
+22993
+23003
+23011
+23017
+23021
+23027
+23029
+23039
+23041
+23053
+23057
+23059
+23063
+23071
+23081
+23087
+23099
+23117
+23131
+23143
+23159
+23167
+23173
+23189
+23197
+23201
+23203
+23209
+23227
+23251
+23269
+23279
+23291
+23293
+23297
+23311
+23321
+23327
+23333
+23339
+23357
+23369
+23371
+23399
+23417
+23431
+23447
+23459
+23473
+23497
+23509
+23531
+23537
+23539
+23549
+23557
+23561
+23563
+23567
+23581
+23593
+23599
+23603
+23609
+23623
+23627
+23629
+23633
+23663
+23669
+23671
+23677
+23687
+23689
+23719
+23741
+23743
+23747
+23753
+23761
+23767
+23773
+23789
+23801
+23813
+23819
+23827
+23831
+23833
+23857
+23869
+23873
+23879
+23887
+23893
+23899
+23909
+23911
+23917
+23929
+23957
+23971
+23977
+23981
+23993
+24001
+24007
+24019
+24023
+24029
+24043
+24049
+24061
+24071
+24077
+24083
+24091
+24097
+24103
+24107
+24109
+24113
+24121
+24133
+24137
+24151
+24169
+24179
+24181
+24197
+24203
+24223
+24229
+24239
+24247
+24251
+24281
+24317
+24329
+24337
+24359
+24371
+24373
+24379
+24391
+24407
+24413
+24419
+24421
+24439
+24443
+24469
+24473
+24481
+24499
+24509
+24517
+24527
+24533
+24547
+24551
+24571
+24593
+24611
+24623
+24631
+24659
+24671
+24677
+24683
+24691
+24697
+24709
+24733
+24749
+24763
+24767
+24781
+24793
+24799
+24809
+24821
+24841
+24847
+24851
+24859
+24877
+24889
+24907
+24917
+24919
+24923
+24943
+24953
+24967
+24971
+24977
+24979
+24989
+25013
+25031
+25033
+25037
+25057
+25073
+25087
+25097
+25111
+25117
+25121
+25127
+25147
+25153
+25163
+25169
+25171
+25183
+25189
+25219
+25229
+25237
+25243
+25247
+25253
+25261
+25301
+25303
+25307
+25309
+25321
+25339
+25343
+25349
+25357
+25367
+25373
+25391
+25409
+25411
+25423
+25439
+25447
+25453
+25457
+25463
+25469
+25471
+25523
+25537
+25541
+25561
+25577
+25579
+25583
+25589
+25601
+25603
+25609
+25621
+25633
+25639
+25643
+25657
+25667
+25673
+25679
+25693
+25703
+25717
+25733
+25741
+25747
+25759
+25763
+25771
+25793
+25799
+25801
+25819
+25841
+25847
+25849
+25867
+25873
+25889
+25903
+25913
+25919
+25931
+25933
+25939
+25943
+25951
+25969
+25981
+25997
+25999
+26003
+26017
+26021
+26029
+26041
+26053
+26083
+26099
+26107
+26111
+26113
+26119
+26141
+26153
+26161
+26171
+26177
+26183
+26189
+26203
+26209
+26227
+26237
+26249
+26251
+26261
+26263
+26267
+26293
+26297
+26309
+26317
+26321
+26339
+26347
+26357
+26371
+26387
+26393
+26399
+26407
+26417
+26423
+26431
+26437
+26449
+26459
+26479
+26489
+26497
+26501
+26513
+26539
+26557
+26561
+26573
+26591
+26597
+26627
+26633
+26641
+26647
+26669
+26681
+26683
+26687
+26693
+26699
+26701
+26711
+26713
+26717
+26723
+26729
+26731
+26737
+26759
+26777
+26783
+26801
+26813
+26821
+26833
+26839
+26849
+26861
+26863
+26879
+26881
+26891
+26893
+26903
+26921
+26927
+26947
+26951
+26953
+26959
+26981
+26987
+26993
+27011
+27017
+27031
+27043
+27059
+27061
+27067
+27073
+27077
+27091
+27103
+27107
+27109
+27127
+27143
+27179
+27191
+27197
+27211
+27239
+27241
+27253
+27259
+27271
+27277
+27281
+27283
+27299
+27329
+27337
+27361
+27367
+27397
+27407
+27409
+27427
+27431
+27437
+27449
+27457
+27479
+27481
+27487
+27509
+27527
+27529
+27539
+27541
+27551
+27581
+27583
+27611
+27617
+27631
+27647
+27653
+27673
+27689
+27691
+27697
+27701
+27733
+27737
+27739
+27743
+27749
+27751
+27763
+27767
+27773
+27779
+27791
+27793
+27799
+27803
+27809
+27817
+27823
+27827
+27847
+27851
+27883
+27893
+27901
+27917
+27919
+27941
+27943
+27947
+27953
+27961
+27967
+27983
+27997
+28001
+28019
+28027
+28031
+28051
+28057
+28069
+28081
+28087
+28097
+28099
+28109
+28111
+28123
+28151
+28163
+28181
+28183
+28201
+28211
+28219
+28229
+28277
+28279
+28283
+28289
+28297
+28307
+28309
+28319
+28349
+28351
+28387
+28393
+28403
+28409
+28411
+28429
+28433
+28439
+28447
+28463
+28477
+28493
+28499
+28513
+28517
+28537
+28541
+28547
+28549
+28559
+28571
+28573
+28579
+28591
+28597
+28603
+28607
+28619
+28621
+28627
+28631
+28643
+28649
+28657
+28661
+28663
+28669
+28687
+28697
+28703
+28711
+28723
+28729
+28751
+28753
+28759
+28771
+28789
+28793
+28807
+28813
+28817
+28837
+28843
+28859
+28867
+28871
+28879
+28901
+28909
+28921
+28927
+28933
+28949
+28961
+28979
+29009
+29017
+29021
+29023
+29027
+29033
+29059
+29063
+29077
+29101
+29123
+29129
+29131
+29137
+29147
+29153
+29167
+29173
+29179
+29191
+29201
+29207
+29209
+29221
+29231
+29243
+29251
+29269
+29287
+29297
+29303
+29311
+29327
+29333
+29339
+29347
+29363
+29383
+29387
+29389
+29399
+29401
+29411
+29423
+29429
+29437
+29443
+29453
+29473
+29483
+29501
+29527
+29531
+29537
+29567
+29569
+29573
+29581
+29587
+29599
+29611
+29629
+29633
+29641
+29663
+29669
+29671
+29683
+29717
+29723
+29741
+29753
+29759
+29761
+29789
+29803
+29819
+29833
+29837
+29851
+29863
+29867
+29873
+29879
+29881
+29917
+29921
+29927
+29947
+29959
+29983
+29989
+30011
+30013
+30029
+30047
+30059
+30071
+30089
+30091
+30097
+30103
+30109
+30113
+30119
+30133
+30137
+30139
+30161
+30169
+30181
+30187
+30197
+30203
+30211
+30223
+30241
+30253
+30259
+30269
+30271
+30293
+30307
+30313
+30319
+30323
+30341
+30347
+30367
+30389
+30391
+30403
+30427
+30431
+30449
+30467
+30469
+30491
+30493
+30497
+30509
+30517
+30529
+30539
+30553
+30557
+30559
+30577
+30593
+30631
+30637
+30643
+30649
+30661
+30671
+30677
+30689
+30697
+30703
+30707
+30713
+30727
+30757
+30763
+30773
+30781
+30803
+30809
+30817
+30829
+30839
+30841
+30851
+30853
+30859
+30869
+30871
+30881
+30893
+30911
+30931
+30937
+30941
+30949
+30971
+30977
+30983
+31013
+31019
+31033
+31039
+31051
+31063
+31069
+31079
+31081
+31091
+31121
+31123
+31139
+31147
+31151
+31153
+31159
+31177
+31181
+31183
+31189
+31193
+31219
+31223
+31231
+31237
+31247
+31249
+31253
+31259
+31267
+31271
+31277
+31307
+31319
+31321
+31327
+31333
+31337
+31357
+31379
+31387
+31391
+31393
+31397
+31469
+31477
+31481
+31489
+31511
+31513
+31517
+31531
+31541
+31543
+31547
+31567
+31573
+31583
+31601
+31607
+31627
+31643
+31649
+31657
+31663
+31667
+31687
+31699
+31721
+31723
+31727
+31729
+31741
+31751
+31769
+31771
+31793
+31799
+31817
+31847
+31849
+31859
+31873
+31883
+31891
+31907
+31957
+31963
+31973
+31981
+31991
+32003
+32009
+32027
+32029
+32051
+32057
+32059
+32063
+32069
+32077
+32083
+32089
+32099
+32117
+32119
+32141
+32143
+32159
+32173
+32183
+32189
+32191
+32203
+32213
+32233
+32237
+32251
+32257
+32261
+32297
+32299
+32303
+32309
+32321
+32323
+32327
+32341
+32353
+32359
+32363
+32369
+32371
+32377
+32381
+32401
+32411
+32413
+32423
+32429
+32441
+32443
+32467
+32479
+32491
+32497
+32503
+32507
+32531
+32533
+32537
+32561
+32563
+32569
+32573
+32579
+32587
+32603
+32609
+32611
+32621
+32633
+32647
+32653
+32687
+32693
+32707
+32713
+32717
+32719
+32749
+32771
+32779
+32783
+32789
+32797
+32801
+32803
+32831
+32833
+32839
+32843
+32869
+32887
+32909
+32911
+32917
+32933
+32939
+32941
+32957
+32969
+32971
+32983
+32987
+32993
+32999
+33013
+33023
+33029
+33037
+33049
+33053
+33071
+33073
+33083
+33091
+33107
+33113
+33119
+33149
+33151
+33161
+33179
+33181
+33191
+33199
+33203
+33211
+33223
+33247
+33287
+33289
+33301
+33311
+33317
+33329
+33331
+33343
+33347
+33349
+33353
+33359
+33377
+33391
+33403
+33409
+33413
+33427
+33457
+33461
+33469
+33479
+33487
+33493
+33503
+33521
+33529
+33533
+33547
+33563
+33569
+33577
+33581
+33587
+33589
+33599
+33601
+33613
+33617
+33619
+33623
+33629
+33637
+33641
+33647
+33679
+33703
+33713
+33721
+33739
+33749
+33751
+33757
+33767
+33769
+33773
+33791
+33797
+33809
+33811
+33827
+33829
+33851
+33857
+33863
+33871
+33889
+33893
+33911
+33923
+33931
+33937
+33941
+33961
+33967
+33997
+34019
+34031
+34033
+34039
+34057
+34061
+34123
+34127
+34129
+34141
+34147
+34157
+34159
+34171
+34183
+34211
+34213
+34217
+34231
+34253
+34259
+34261
+34267
+34273
+34283
+34297
+34301
+34303
+34313
+34319
+34327
+34337
+34351
+34361
+34367
+34369
+34381
+34403
+34421
+34429
+34439
+34457
+34469
+34471
+34483
+34487
+34499
+34501
+34511
+34513
+34519
+34537
+34543
+34549
+34583
+34589
+34591
+34603
+34607
+34613
+34631
+34649
+34651
+34667
+34673
+34679
+34687
+34693
+34703
+34721
+34729
+34739
+34747
+34757
+34759
+34763
+34781
+34807
+34819
+34841
+34843
+34847
+34849
+34871
+34877
+34883
+34897
+34913
+34919
+34939
+34949
+34961
+34963
+34981
+35023
+35027
+35051
+35053
+35059
+35069
+35081
+35083
+35089
+35099
+35107
+35111
+35117
+35129
+35141
+35149
+35153
+35159
+35171
+35201
+35221
+35227
+35251
+35257
+35267
+35279
+35281
+35291
+35311
+35317
+35323
+35327
+35339
+35353
+35363
+35381
+35393
+35401
+35407
+35419
+35423
+35437
+35447
+35449
+35461
+35491
+35507
+35509
+35521
+35527
+35531
+35533
+35537
+35543
+35569
+35573
+35591
+35593
+35597
+35603
+35617
+35671
+35677
+35729
+35731
+35747
+35753
+35759
+35771
+35797
+35801
+35803
+35809
+35831
+35837
+35839
+35851
+35863
+35869
+35879
+35897
+35899
+35911
+35923
+35933
+35951
+35963
+35969
+35977
+35983
+35993
+35999
+36007
+36011
+36013
+36017
+36037
+36061
+36067
+36073
+36083
+36097
+36107
+36109
+36131
+36137
+36151
+36161
+36187
+36191
+36209
+36217
+36229
+36241
+36251
+36263
+36269
+36277
+36293
+36299
+36307
+36313
+36319
+36341
+36343
+36353
+36373
+36383
+36389
+36433
+36451
+36457
+36467
+36469
+36473
+36479
+36493
+36497
+36523
+36527
+36529
+36541
+36551
+36559
+36563
+36571
+36583
+36587
+36599
+36607
+36629
+36637
+36643
+36653
+36671
+36677
+36683
+36691
+36697
+36709
+36713
+36721
+36739
+36749
+36761
+36767
+36779
+36781
+36787
+36791
+36793
+36809
+36821
+36833
+36847
+36857
+36871
+36877
+36887
+36899
+36901
+36913
+36919
+36923
+36929
+36931
+36943
+36947
+36973
+36979
+36997
+37003
+37013
+37019
+37021
+37039
+37049
+37057
+37061
+37087
+37097
+37117
+37123
+37139
+37159
+37171
+37181
+37189
+37199
+37201
+37217
+37223
+37243
+37253
+37273
+37277
+37307
+37309
+37313
+37321
+37337
+37339
+37357
+37361
+37363
+37369
+37379
+37397
+37409
+37423
+37441
+37447
+37463
+37483
+37489
+37493
+37501
+37507
+37511
+37517
+37529
+37537
+37547
+37549
+37561
+37567
+37571
+37573
+37579
+37589
+37591
+37607
+37619
+37633
+37643
+37649
+37657
+37663
+37691
+37693
+37699
+37717
+37747
+37781
+37783
+37799
+37811
+37813
+37831
+37847
+37853
+37861
+37871
+37879
+37889
+37897
+37907
+37951
+37957
+37963
+37967
+37987
+37991
+37993
+37997
+38011
+38039
+38047
+38053
+38069
+38083
+38113
+38119
+38149
+38153
+38167
+38177
+38183
+38189
+38197
+38201
+38219
+38231
+38237
+38239
+38261
+38273
+38281
+38287
+38299
+38303
+38317
+38321
+38327
+38329
+38333
+38351
+38371
+38377
+38393
+38431
+38447
+38449
+38453
+38459
+38461
+38501
+38543
+38557
+38561
+38567
+38569
+38593
+38603
+38609
+38611
+38629
+38639
+38651
+38653
+38669
+38671
+38677
+38693
+38699
+38707
+38711
+38713
+38723
+38729
+38737
+38747
+38749
+38767
+38783
+38791
+38803
+38821
+38833
+38839
+38851
+38861
+38867
+38873
+38891
+38903
+38917
+38921
+38923
+38933
+38953
+38959
+38971
+38977
+38993
+39019
+39023
+39041
+39043
+39047
+39079
+39089
+39097
+39103
+39107
+39113
+39119
+39133
+39139
+39157
+39161
+39163
+39181
+39191
+39199
+39209
+39217
+39227
+39229
+39233
+39239
+39241
+39251
+39293
+39301
+39313
+39317
+39323
+39341
+39343
+39359
+39367
+39371
+39373
+39383
+39397
+39409
+39419
+39439
+39443
+39451
+39461
+39499
+39503
+39509
+39511
+39521
+39541
+39551
+39563
+39569
+39581
+39607
+39619
+39623
+39631
+39659
+39667
+39671
+39679
+39703
+39709
+39719
+39727
+39733
+39749
+39761
+39769
+39779
+39791
+39799
+39821
+39827
+39829
+39839
+39841
+39847
+39857
+39863
+39869
+39877
+39883
+39887
+39901
+39929
+39937
+39953
+39971
+39979
+39983
+39989
+40009
+40013
+40031
+40037
+40039
+40063
+40087
+40093
+40099
+40111
+40123
+40127
+40129
+40151
+40153
+40163
+40169
+40177
+40189
+40193
+40213
+40231
+40237
+40241
+40253
+40277
+40283
+40289
+40343
+40351
+40357
+40361
+40387
+40423
+40427
+40429
+40433
+40459
+40471
+40483
+40487
+40493
+40499
+40507
+40519
+40529
+40531
+40543
+40559
+40577
+40583
+40591
+40597
+40609
+40627
+40637
+40639
+40693
+40697
+40699
+40709
+40739
+40751
+40759
+40763
+40771
+40787
+40801
+40813
+40819
+40823
+40829
+40841
+40847
+40849
+40853
+40867
+40879
+40883
+40897
+40903
+40927
+40933
+40939
+40949
+40961
+40973
+40993
+41011
+41017
+41023
+41039
+41047
+41051
+41057
+41077
+41081
+41113
+41117
+41131
+41141
+41143
+41149
+41161
+41177
+41179
+41183
+41189
+41201
+41203
+41213
+41221
+41227
+41231
+41233
+41243
+41257
+41263
+41269
+41281
+41299
+41333
+41341
+41351
+41357
+41381
+41387
+41389
+41399
+41411
+41413
+41443
+41453
+41467
+41479
+41491
+41507
+41513
+41519
+41521
+41539
+41543
+41549
+41579
+41593
+41597
+41603
+41609
+41611
+41617
+41621
+41627
+41641
+41647
+41651
+41659
+41669
+41681
+41687
+41719
+41729
+41737
+41759
+41761
+41771
+41777
+41801
+41809
+41813
+41843
+41849
+41851
+41863
+41879
+41887
+41893
+41897
+41903
+41911
+41927
+41941
+41947
+41953
+41957
+41959
+41969
+41981
+41983
+41999
+42013
+42017
+42019
+42023
+42043
+42061
+42071
+42073
+42083
+42089
+42101
+42131
+42139
+42157
+42169
+42179
+42181
+42187
+42193
+42197
+42209
+42221
+42223
+42227
+42239
+42257
+42281
+42283
+42293
+42299
+42307
+42323
+42331
+42337
+42349
+42359
+42373
+42379
+42391
+42397
+42403
+42407
+42409
+42433
+42437
+42443
+42451
+42457
+42461
+42463
+42467
+42473
+42487
+42491
+42499
+42509
+42533
+42557
+42569
+42571
+42577
+42589
+42611
+42641
+42643
+42649
+42667
+42677
+42683
+42689
+42697
+42701
+42703
+42709
+42719
+42727
+42737
+42743
+42751
+42767
+42773
+42787
+42793
+42797
+42821
+42829
+42839
+42841
+42853
+42859
+42863
+42899
+42901
+42923
+42929
+42937
+42943
+42953
+42961
+42967
+42979
+42989
+43003
+43013
+43019
+43037
+43049
+43051
+43063
+43067
+43093
+43103
+43117
+43133
+43151
+43159
+43177
+43189
+43201
+43207
+43223
+43237
+43261
+43271
+43283
+43291
+43313
+43319
+43321
+43331
+43391
+43397
+43399
+43403
+43411
+43427
+43441
+43451
+43457
+43481
+43487
+43499
+43517
+43541
+43543
+43573
+43577
+43579
+43591
+43597
+43607
+43609
+43613
+43627
+43633
+43649
+43651
+43661
+43669
+43691
+43711
+43717
+43721
+43753
+43759
+43777
+43781
+43783
+43787
+43789
+43793
+43801
+43853
+43867
+43889
+43891
+43913
+43933
+43943
+43951
+43961
+43963
+43969
+43973
+43987
+43991
+43997
+44017
+44021
+44027
+44029
+44041
+44053
+44059
+44071
+44087
+44089
+44101
+44111
+44119
+44123
+44129
+44131
+44159
+44171
+44179
+44189
+44201
+44203
+44207
+44221
+44249
+44257
+44263
+44267
+44269
+44273
+44279
+44281
+44293
+44351
+44357
+44371
+44381
+44383
+44389
+44417
+44449
+44453
+44483
+44491
+44497
+44501
+44507
+44519
+44531
+44533
+44537
+44543
+44549
+44563
+44579
+44587
+44617
+44621
+44623
+44633
+44641
+44647
+44651
+44657
+44683
+44687
+44699
+44701
+44711
+44729
+44741
+44753
+44771
+44773
+44777
+44789
+44797
+44809
+44819
+44839
+44843
+44851
+44867
+44879
+44887
+44893
+44909
+44917
+44927
+44939
+44953
+44959
+44963
+44971
+44983
+44987
+45007
+45013
+45053
+45061
+45077
+45083
+45119
+45121
+45127
+45131
+45137
+45139
+45161
+45179
+45181
+45191
+45197
+45233
+45247
+45259
+45263
+45281
+45289
+45293
+45307
+45317
+45319
+45329
+45337
+45341
+45343
+45361
+45377
+45389
+45403
+45413
+45427
+45433
+45439
+45481
+45491
+45497
+45503
+45523
+45533
+45541
+45553
+45557
+45569
+45587
+45589
+45599
+45613
+45631
+45641
+45659
+45667
+45673
+45677
+45691
+45697
+45707
+45737
+45751
+45757
+45763
+45767
+45779
+45817
+45821
+45823
+45827
+45833
+45841
+45853
+45863
+45869
+45887
+45893
+45943
+45949
+45953
+45959
+45971
+45979
+45989
+46021
+46027
+46049
+46051
+46061
+46073
+46091
+46093
+46099
+46103
+46133
+46141
+46147
+46153
+46171
+46181
+46183
+46187
+46199
+46219
+46229
+46237
+46261
+46271
+46273
+46279
+46301
+46307
+46309
+46327
+46337
+46349
+46351
+46381
+46399
+46411
+46439
+46441
+46447
+46451
+46457
+46471
+46477
+46489
+46499
+46507
+46511
+46523
+46549
+46559
+46567
+46573
+46589
+46591
+46601
+46619
+46633
+46639
+46643
+46649
+46663
+46679
+46681
+46687
+46691
+46703
+46723
+46727
+46747
+46751
+46757
+46769
+46771
+46807
+46811
+46817
+46819
+46829
+46831
+46853
+46861
+46867
+46877
+46889
+46901
+46919
+46933
+46957
+46993
+46997
+47017
+47041
+47051
+47057
+47059
+47087
+47093
+47111
+47119
+47123
+47129
+47137
+47143
+47147
+47149
+47161
+47189
+47207
+47221
+47237
+47251
+47269
+47279
+47287
+47293
+47297
+47303
+47309
+47317
+47339
+47351
+47353
+47363
+47381
+47387
+47389
+47407
+47417
+47419
+47431
+47441
+47459
+47491
+47497
+47501
+47507
+47513
+47521
+47527
+47533
+47543
+47563
+47569
+47581
+47591
+47599
+47609
+47623
+47629
+47639
+47653
+47657
+47659
+47681
+47699
+47701
+47711
+47713
+47717
+47737
+47741
+47743
+47777
+47779
+47791
+47797
+47807
+47809
+47819
+47837
+47843
+47857
+47869
+47881
+47903
+47911
+47917
+47933
+47939
+47947
+47951
+47963
+47969
+47977
+47981
+48017
+48023
+48029
+48049
+48073
+48079
+48091
+48109
+48119
+48121
+48131
+48157
+48163
+48179
+48187
+48193
+48197
+48221
+48239
+48247
+48259
+48271
+48281
+48299
+48311
+48313
+48337
+48341
+48353
+48371
+48383
+48397
+48407
+48409
+48413
+48437
+48449
+48463
+48473
+48479
+48481
+48487
+48491
+48497
+48523
+48527
+48533
+48539
+48541
+48563
+48571
+48589
+48593
+48611
+48619
+48623
+48647
+48649
+48661
+48673
+48677
+48679
+48731
+48733
+48751
+48757
+48761
+48767
+48779
+48781
+48787
+48799
+48809
+48817
+48821
+48823
+48847
+48857
+48859
+48869
+48871
+48883
+48889
+48907
+48947
+48953
+48973
+48989
+48991
+49003
+49009
+49019
+49031
+49033
+49037
+49043
+49057
+49069
+49081
+49103
+49109
+49117
+49121
+49123
+49139
+49157
+49169
+49171
+49177
+49193
+49199
+49201
+49207
+49211
+49223
+49253
+49261
+49277
+49279
+49297
+49307
+49331
+49333
+49339
+49363
+49367
+49369
+49391
+49393
+49409
+49411
+49417
+49429
+49433
+49451
+49459
+49463
+49477
+49481
+49499
+49523
+49529
+49531
+49537
+49547
+49549
+49559
+49597
+49603
+49613
+49627
+49633
+49639
+49663
+49667
+49669
+49681
+49697
+49711
+49727
+49739
+49741
+49747
+49757
+49783
+49787
+49789
+49801
+49807
+49811
+49823
+49831
+49843
+49853
+49871
+49877
+49891
+49919
+49921
+49927
+49937
+49939
+49943
+49957
+49991
+49993
+49999
+50021
+50023
+50033
+50047
+50051
+50053
+50069
+50077
+50087
+50093
+50101
+50111
+50119
+50123
+50129
+50131
+50147
+50153
+50159
+50177
+50207
+50221
+50227
+50231
+50261
+50263
+50273
+50287
+50291
+50311
+50321
+50329
+50333
+50341
+50359
+50363
+50377
+50383
+50387
+50411
+50417
+50423
+50441
+50459
+50461
+50497
+50503
+50513
+50527
+50539
+50543
+50549
+50551
+50581
+50587
+50591
+50593
+50599
+50627
+50647
+50651
+50671
+50683
+50707
+50723
+50741
+50753
+50767
+50773
+50777
+50789
+50821
+50833
+50839
+50849
+50857
+50867
+50873
+50891
+50893
+50909
+50923
+50929
+50951
+50957
+50969
+50971
+50989
+50993
+51001
+51031
+51043
+51047
+51059
+51061
+51071
+51109
+51131
+51133
+51137
+51151
+51157
+51169
+51193
+51197
+51199
+51203
+51217
+51229
+51239
+51241
+51257
+51263
+51283
+51287
+51307
+51329
+51341
+51343
+51347
+51349
+51361
+51383
+51407
+51413
+51419
+51421
+51427
+51431
+51437
+51439
+51449
+51461
+51473
+51479
+51481
+51487
+51503
+51511
+51517
+51521
+51539
+51551
+51563
+51577
+51581
+51593
+51599
+51607
+51613
+51631
+51637
+51647
+51659
+51673
+51679
+51683
+51691
+51713
+51719
+51721
+51749
+51767
+51769
+51787
+51797
+51803
+51817
+51827
+51829
+51839
+51853
+51859
+51869
+51871
+51893
+51899
+51907
+51913
+51929
+51941
+51949
+51971
+51973
+51977
+51991
+52009
+52021
+52027
+52051
+52057
+52067
+52069
+52081
+52103
+52121
+52127
+52147
+52153
+52163
+52177
+52181
+52183
+52189
+52201
+52223
+52237
+52249
+52253
+52259
+52267
+52289
+52291
+52301
+52313
+52321
+52361
+52363
+52369
+52379
+52387
+52391
+52433
+52453
+52457
+52489
+52501
+52511
+52517
+52529
+52541
+52543
+52553
+52561
+52567
+52571
+52579
+52583
+52609
+52627
+52631
+52639
+52667
+52673
+52691
+52697
+52709
+52711
+52721
+52727
+52733
+52747
+52757
+52769
+52783
+52807
+52813
+52817
+52837
+52859
+52861
+52879
+52883
+52889
+52901
+52903
+52919
+52937
+52951
+52957
+52963
+52967
+52973
+52981
+52999
+53003
+53017
+53047
+53051
+53069
+53077
+53087
+53089
+53093
+53101
+53113
+53117
+53129
+53147
+53149
+53161
+53171
+53173
+53189
+53197
+53201
+53231
+53233
+53239
+53267
+53269
+53279
+53281
+53299
+53309
+53323
+53327
+53353
+53359
+53377
+53381
+53401
+53407
+53411
+53419
+53437
+53441
+53453
+53479
+53503
+53507
+53527
+53549
+53551
+53569
+53591
+53593
+53597
+53609
+53611
+53617
+53623
+53629
+53633
+53639
+53653
+53657
+53681
+53693
+53699
+53717
+53719
+53731
+53759
+53773
+53777
+53783
+53791
+53813
+53819
+53831
+53849
+53857
+53861
+53881
+53887
+53891
+53897
+53899
+53917
+53923
+53927
+53939
+53951
+53959
+53987
+53993
+54001
+54011
+54013
+54037
+54049
+54059
+54083
+54091
+54101
+54121
+54133
+54139
+54151
+54163
+54167
+54181
+54193
+54217
+54251
+54269
+54277
+54287
+54293
+54311
+54319
+54323
+54331
+54347
+54361
+54367
+54371
+54377
+54401
+54403
+54409
+54413
+54419
+54421
+54437
+54443
+54449
+54469
+54493
+54497
+54499
+54503
+54517
+54521
+54539
+54541
+54547
+54559
+54563
+54577
+54581
+54583
+54601
+54617
+54623
+54629
+54631
+54647
+54667
+54673
+54679
+54709
+54713
+54721
+54727
+54751
+54767
+54773
+54779
+54787
+54799
+54829
+54833
+54851
+54869
+54877
+54881
+54907
+54917
+54919
+54941
+54949
+54959
+54973
+54979
+54983
+55001
+55009
+55021
+55049
+55051
+55057
+55061
+55073
+55079
+55103
+55109
+55117
+55127
+55147
+55163
+55171
+55201
+55207
+55213
+55217
+55219
+55229
+55243
+55249
+55259
+55291
+55313
+55331
+55333
+55337
+55339
+55343
+55351
+55373
+55381
+55399
+55411
+55439
+55441
+55457
+55469
+55487
+55501
+55511
+55529
+55541
+55547
+55579
+55589
+55603
+55609
+55619
+55621
+55631
+55633
+55639
+55661
+55663
+55667
+55673
+55681
+55691
+55697
+55711
+55717
+55721
+55733
+55763
+55787
+55793
+55799
+55807
+55813
+55817
+55819
+55823
+55829
+55837
+55843
+55849
+55871
+55889
+55897
+55901
+55903
+55921
+55927
+55931
+55933
+55949
+55967
+55987
+55997
+56003
+56009
+56039
+56041
+56053
+56081
+56087
+56093
+56099
+56101
+56113
+56123
+56131
+56149
+56167
+56171
+56179
+56197
+56207
+56209
+56237
+56239
+56249
+56263
+56267
+56269
+56299
+56311
+56333
+56359
+56369
+56377
+56383
+56393
+56401
+56417
+56431
+56437
+56443
+56453
+56467
+56473
+56477
+56479
+56489
+56501
+56503
+56509
+56519
+56527
+56531
+56533
+56543
+56569
+56591
+56597
+56599
+56611
+56629
+56633
+56659
+56663
+56671
+56681
+56687
+56701
+56711
+56713
+56731
+56737
+56747
+56767
+56773
+56779
+56783
+56807
+56809
+56813
+56821
+56827
+56843
+56857
+56873
+56891
+56893
+56897
+56909
+56911
+56921
+56923
+56929
+56941
+56951
+56957
+56963
+56983
+56989
+56993
+56999
+57037
+57041
+57047
+57059
+57073
+57077
+57089
+57097
+57107
+57119
+57131
+57139
+57143
+57149
+57163
+57173
+57179
+57191
+57193
+57203
+57221
+57223
+57241
+57251
+57259
+57269
+57271
+57283
+57287
+57301
+57329
+57331
+57347
+57349
+57367
+57373
+57383
+57389
+57397
+57413
+57427
+57457
+57467
+57487
+57493
+57503
+57527
+57529
+57557
+57559
+57571
+57587
+57593
+57601
+57637
+57641
+57649
+57653
+57667
+57679
+57689
+57697
+57709
+57713
+57719
+57727
+57731
+57737
+57751
+57773
+57781
+57787
+57791
+57793
+57803
+57809
+57829
+57839
+57847
+57853
+57859
+57881
+57899
+57901
+57917
+57923
+57943
+57947
+57973
+57977
+57991
+58013
+58027
+58031
+58043
+58049
+58057
+58061
+58067
+58073
+58099
+58109
+58111
+58129
+58147
+58151
+58153
+58169
+58171
+58189
+58193
+58199
+58207
+58211
+58217
+58229
+58231
+58237
+58243
+58271
+58309
+58313
+58321
+58337
+58363
+58367
+58369
+58379
+58391
+58393
+58403
+58411
+58417
+58427
+58439
+58441
+58451
+58453
+58477
+58481
+58511
+58537
+58543
+58549
+58567
+58573
+58579
+58601
+58603
+58613
+58631
+58657
+58661
+58679
+58687
+58693
+58699
+58711
+58727
+58733
+58741
+58757
+58763
+58771
+58787
+58789
+58831
+58889
+58897
+58901
+58907
+58909
+58913
+58921
+58937
+58943
+58963
+58967
+58979
+58991
+58997
+59009
+59011
+59021
+59023
+59029
+59051
+59053
+59063
+59069
+59077
+59083
+59093
+59107
+59113
+59119
+59123
+59141
+59149
+59159
+59167
+59183
+59197
+59207
+59209
+59219
+59221
+59233
+59239
+59243
+59263
+59273
+59281
+59333
+59341
+59351
+59357
+59359
+59369
+59377
+59387
+59393
+59399
+59407
+59417
+59419
+59441
+59443
+59447
+59453
+59467
+59471
+59473
+59497
+59509
+59513
+59539
+59557
+59561
+59567
+59581
+59611
+59617
+59621
+59627
+59629
+59651
+59659
+59663
+59669
+59671
+59693
+59699
+59707
+59723
+59729
+59743
+59747
+59753
+59771
+59779
+59791
+59797
+59809
+59833
+59863
+59879
+59887
+59921
+59929
+59951
+59957
+59971
+59981
+59999
+60013
+60017
+60029
+60037
+60041
+60077
+60083
+60089
+60091
+60101
+60103
+60107
+60127
+60133
+60139
+60149
+60161
+60167
+60169
+60209
+60217
+60223
+60251
+60257
+60259
+60271
+60289
+60293
+60317
+60331
+60337
+60343
+60353
+60373
+60383
+60397
+60413
+60427
+60443
+60449
+60457
+60493
+60497
+60509
+60521
+60527
+60539
+60589
+60601
+60607
+60611
+60617
+60623
+60631
+60637
+60647
+60649
+60659
+60661
+60679
+60689
+60703
+60719
+60727
+60733
+60737
+60757
+60761
+60763
+60773
+60779
+60793
+60811
+60821
+60859
+60869
+60887
+60889
+60899
+60901
+60913
+60917
+60919
+60923
+60937
+60943
+60953
+60961
+61001
+61007
+61027
+61031
+61043
+61051
+61057
+61091
+61099
+61121
+61129
+61141
+61151
+61153
+61169
+61211
+61223
+61231
+61253
+61261
+61283
+61291
+61297
+61331
+61333
+61339
+61343
+61357
+61363
+61379
+61381
+61403
+61409
+61417
+61441
+61463
+61469
+61471
+61483
+61487
+61493
+61507
+61511
+61519
+61543
+61547
+61553
+61559
+61561
+61583
+61603
+61609
+61613
+61627
+61631
+61637
+61643
+61651
+61657
+61667
+61673
+61681
+61687
+61703
+61717
+61723
+61729
+61751
+61757
+61781
+61813
+61819
+61837
+61843
+61861
+61871
+61879
+61909
+61927
+61933
+61949
+61961
+61967
+61979
+61981
+61987
+61991
+62003
+62011
+62017
+62039
+62047
+62053
+62057
+62071
+62081
+62099
+62119
+62129
+62131
+62137
+62141
+62143
+62171
+62189
+62191
+62201
+62207
+62213
+62219
+62233
+62273
+62297
+62299
+62303
+62311
+62323
+62327
+62347
+62351
+62383
+62401
+62417
+62423
+62459
+62467
+62473
+62477
+62483
+62497
+62501
+62507
+62533
+62539
+62549
+62563
+62581
+62591
+62597
+62603
+62617
+62627
+62633
+62639
+62653
+62659
+62683
+62687
+62701
+62723
+62731
+62743
+62753
+62761
+62773
+62791
+62801
+62819
+62827
+62851
+62861
+62869
+62873
+62897
+62903
+62921
+62927
+62929
+62939
+62969
+62971
+62981
+62983
+62987
+62989
+63029
+63031
+63059
+63067
+63073
+63079
+63097
+63103
+63113
+63127
+63131
+63149
+63179
+63197
+63199
+63211
+63241
+63247
+63277
+63281
+63299
+63311
+63313
+63317
+63331
+63337
+63347
+63353
+63361
+63367
+63377
+63389
+63391
+63397
+63409
+63419
+63421
+63439
+63443
+63463
+63467
+63473
+63487
+63493
+63499
+63521
+63527
+63533
+63541
+63559
+63577
+63587
+63589
+63599
+63601
+63607
+63611
+63617
+63629
+63647
+63649
+63659
+63667
+63671
+63689
+63691
+63697
+63703
+63709
+63719
+63727
+63737
+63743
+63761
+63773
+63781
+63793
+63799
+63803
+63809
+63823
+63839
+63841
+63853
+63857
+63863
+63901
+63907
+63913
+63929
+63949
+63977
+63997
+64007
+64013
+64019
+64033
+64037
+64063
+64067
+64081
+64091
+64109
+64123
+64151
+64153
+64157
+64171
+64187
+64189
+64217
+64223
+64231
+64237
+64271
+64279
+64283
+64301
+64303
+64319
+64327
+64333
+64373
+64381
+64399
+64403
+64433
+64439
+64451
+64453
+64483
+64489
+64499
+64513
+64553
+64567
+64577
+64579
+64591
+64601
+64609
+64613
+64621
+64627
+64633
+64661
+64663
+64667
+64679
+64693
+64709
+64717
+64747
+64763
+64781
+64783
+64793
+64811
+64817
+64849
+64853
+64871
+64877
+64879
+64891
+64901
+64919
+64921
+64927
+64937
+64951
+64969
+64997
+65003
+65011
+65027
+65029
+65033
+65053
+65063
+65071
+65089
+65099
+65101
+65111
+65119
+65123
+65129
+65141
+65147
+65167
+65171
+65173
+65179
+65183
+65203
+65213
+65239
+65257
+65267
+65269
+65287
+65293
+65309
+65323
+65327
+65353
+65357
+65371
+65381
+65393
+65407
+65413
+65419
+65423
+65437
+65447
+65449
+65479
+65497
+65519
+65521
+65537
+65539
+65543
+65551
+65557
+65563
+65579
+65581
+65587
+65599
+65609
+65617
+65629
+65633
+65647
+65651
+65657
+65677
+65687
+65699
+65701
+65707
+65713
+65717
+65719
+65729
+65731
+65761
+65777
+65789
+65809
+65827
+65831
+65837
+65839
+65843
+65851
+65867
+65881
+65899
+65921
+65927
+65929
+65951
+65957
+65963
+65981
+65983
+65993
+66029
+66037
+66041
+66047
+66067
+66071
+66083
+66089
+66103
+66107
+66109
+66137
+66161
+66169
+66173
+66179
+66191
+66221
+66239
+66271
+66293
+66301
+66337
+66343
+66347
+66359
+66361
+66373
+66377
+66383
+66403
+66413
+66431
+66449
+66457
+66463
+66467
+66491
+66499
+66509
+66523
+66529
+66533
+66541
+66553
+66569
+66571
+66587
+66593
+66601
+66617
+66629
+66643
+66653
+66683
+66697
+66701
+66713
+66721
+66733
+66739
+66749
+66751
+66763
+66791
+66797
+66809
+66821
+66841
+66851
+66853
+66863
+66877
+66883
+66889
+66919
+66923
+66931
+66943
+66947
+66949
+66959
+66973
+66977
+67003
+67021
+67033
+67043
+67049
+67057
+67061
+67073
+67079
+67103
+67121
+67129
+67139
+67141
+67153
+67157
+67169
+67181
+67187
+67189
+67211
+67213
+67217
+67219
+67231
+67247
+67261
+67271
+67273
+67289
+67307
+67339
+67343
+67349
+67369
+67391
+67399
+67409
+67411
+67421
+67427
+67429
+67433
+67447
+67453
+67477
+67481
+67489
+67493
+67499
+67511
+67523
+67531
+67537
+67547
+67559
+67567
+67577
+67579
+67589
+67601
+67607
+67619
+67631
+67651
+67679
+67699
+67709
+67723
+67733
+67741
+67751
+67757
+67759
+67763
+67777
+67783
+67789
+67801
+67807
+67819
+67829
+67843
+67853
+67867
+67883
+67891
+67901
+67927
+67931
+67933
+67939
+67943
+67957
+67961
+67967
+67979
+67987
+67993
+68023
+68041
+68053
+68059
+68071
+68087
+68099
+68111
+68113
+68141
+68147
+68161
+68171
+68207
+68209
+68213
+68219
+68227
+68239
+68261
+68279
+68281
+68311
+68329
+68351
+68371
+68389
+68399
+68437
+68443
+68447
+68449
+68473
+68477
+68483
+68489
+68491
+68501
+68507
+68521
+68531
+68539
+68543
+68567
+68581
+68597
+68611
+68633
+68639
+68659
+68669
+68683
+68687
+68699
+68711
+68713
+68729
+68737
+68743
+68749
+68767
+68771
+68777
+68791
+68813
+68819
+68821
+68863
+68879
+68881
+68891
+68897
+68899
+68903
+68909
+68917
+68927
+68947
+68963
+68993
+69001
+69011
+69019
+69029
+69031
+69061
+69067
+69073
+69109
+69119
+69127
+69143
+69149
+69151
+69163
+69191
+69193
+69197
+69203
+69221
+69233
+69239
+69247
+69257
+69259
+69263
+69313
+69317
+69337
+69341
+69371
+69379
+69383
+69389
+69401
+69403
+69427
+69431
+69439
+69457
+69463
+69467
+69473
+69481
+69491
+69493
+69497
+69499
+69539
+69557
+69593
+69623
+69653
+69661
+69677
+69691
+69697
+69709
+69737
+69739
+69761
+69763
+69767
+69779
+69809
+69821
+69827
+69829
+69833
+69847
+69857
+69859
+69877
+69899
+69911
+69929
+69931
+69941
+69959
+69991
+69997
+70001
+70003
+70009
+70019
+70039
+70051
+70061
+70067
+70079
+70099
+70111
+70117
+70121
+70123
+70139
+70141
+70157
+70163
+70177
+70181
+70183
+70199
+70201
+70207
+70223
+70229
+70237
+70241
+70249
+70271
+70289
+70297
+70309
+70313
+70321
+70327
+70351
+70373
+70379
+70381
+70393
+70423
+70429
+70439
+70451
+70457
+70459
+70481
+70487
+70489
+70501
+70507
+70529
+70537
+70549
+70571
+70573
+70583
+70589
+70607
+70619
+70621
+70627
+70639
+70657
+70663
+70667
+70687
+70709
+70717
+70729
+70753
+70769
+70783
+70793
+70823
+70841
+70843
+70849
+70853
+70867
+70877
+70879
+70891
+70901
+70913
+70919
+70921
+70937
+70949
+70951
+70957
+70969
+70979
+70981
+70991
+70997
+70999
+71011
+71023
+71039
+71059
+71069
+71081
+71089
+71119
+71129
+71143
+71147
+71153
+71161
+71167
+71171
+71191
+71209
+71233
+71237
+71249
+71257
+71261
+71263
+71287
+71293
+71317
+71327
+71329
+71333
+71339
+71341
+71347
+71353
+71359
+71363
+71387
+71389
+71399
+71411
+71413
+71419
+71429
+71437
+71443
+71453
+71471
+71473
+71479
+71483
+71503
+71527
+71537
+71549
+71551
+71563
+71569
+71593
+71597
+71633
+71647
+71663
+71671
+71693
+71699
+71707
+71711
+71713
+71719
+71741
+71761
+71777
+71789
+71807
+71809
+71821
+71837
+71843
+71849
+71861
+71867
+71879
+71881
+71887
+71899
+71909
+71917
+71933
+71941
+71947
+71963
+71971
+71983
+71987
+71993
+71999
+72019
+72031
+72043
+72047
+72053
+72073
+72077
+72089
+72091
+72101
+72103
+72109
+72139
+72161
+72167
+72169
+72173
+72211
+72221
+72223
+72227
+72229
+72251
+72253
+72269
+72271
+72277
+72287
+72307
+72313
+72337
+72341
+72353
+72367
+72379
+72383
+72421
+72431
+72461
+72467
+72469
+72481
+72493
+72497
+72503
+72533
+72547
+72551
+72559
+72577
+72613
+72617
+72623
+72643
+72647
+72649
+72661
+72671
+72673
+72679
+72689
+72701
+72707
+72719
+72727
+72733
+72739
+72763
+72767
+72797
+72817
+72823
+72859
+72869
+72871
+72883
+72889
+72893
+72901
+72907
+72911
+72923
+72931
+72937
+72949
+72953
+72959
+72973
+72977
+72997
+73009
+73013
+73019
+73037
+73039
+73043
+73061
+73063
+73079
+73091
+73121
+73127
+73133
+73141
+73181
+73189
+73237
+73243
+73259
+73277
+73291
+73303
+73309
+73327
+73331
+73351
+73361
+73363
+73369
+73379
+73387
+73417
+73421
+73433
+73453
+73459
+73471
+73477
+73483
+73517
+73523
+73529
+73547
+73553
+73561
+73571
+73583
+73589
+73597
+73607
+73609
+73613
+73637
+73643
+73651
+73673
+73679
+73681
+73693
+73699
+73709
+73721
+73727
+73751
+73757
+73771
+73783
+73819
+73823
+73847
+73849
+73859
+73867
+73877
+73883
+73897
+73907
+73939
+73943
+73951
+73961
+73973
+73999
+74017
+74021
+74027
+74047
+74051
+74071
+74077
+74093
+74099
+74101
+74131
+74143
+74149
+74159
+74161
+74167
+74177
+74189
+74197
+74201
+74203
+74209
+74219
+74231
+74257
+74279
+74287
+74293
+74297
+74311
+74317
+74323
+74353
+74357
+74363
+74377
+74381
+74383
+74411
+74413
+74419
+74441
+74449
+74453
+74471
+74489
+74507
+74509
+74521
+74527
+74531
+74551
+74561
+74567
+74573
+74587
+74597
+74609
+74611
+74623
+74653
+74687
+74699
+74707
+74713
+74717
+74719
+74729
+74731
+74747
+74759
+74761
+74771
+74779
+74797
+74821
+74827
+74831
+74843
+74857
+74861
+74869
+74873
+74887
+74891
+74897
+74903
+74923
+74929
+74933
+74941
+74959
+75011
+75013
+75017
+75029
+75037
+75041
+75079
+75083
+75109
+75133
+75149
+75161
+75167
+75169
+75181
+75193
+75209
+75211
+75217
+75223
+75227
+75239
+75253
+75269
+75277
+75289
+75307
+75323
+75329
+75337
+75347
+75353
+75367
+75377
+75389
+75391
+75401
+75403
+75407
+75431
+75437
+75479
+75503
+75511
+75521
+75527
+75533
+75539
+75541
+75553
+75557
+75571
+75577
+75583
+75611
+75617
+75619
+75629
+75641
+75653
+75659
+75679
+75683
+75689
+75703
+75707
+75709
+75721
+75731
+75743
+75767
+75773
+75781
+75787
+75793
+75797
+75821
+75833
+75853
+75869
+75883
+75913
+75931
+75937
+75941
+75967
+75979
+75983
+75989
+75991
+75997
+76001
+76003
+76031
+76039
+76079
+76081
+76091
+76099
+76103
+76123
+76129
+76147
+76157
+76159
+76163
+76207
+76213
+76231
+76243
+76249
+76253
+76259
+76261
+76283
+76289
+76303
+76333
+76343
+76367
+76369
+76379
+76387
+76403
+76421
+76423
+76441
+76463
+76471
+76481
+76487
+76493
+76507
+76511
+76519
+76537
+76541
+76543
+76561
+76579
+76597
+76603
+76607
+76631
+76649
+76651
+76667
+76673
+76679
+76697
+76717
+76733
+76753
+76757
+76771
+76777
+76781
+76801
+76819
+76829
+76831
+76837
+76847
+76871
+76873
+76883
+76907
+76913
+76919
+76943
+76949
+76961
+76963
+76991
+77003
+77017
+77023
+77029
+77041
+77047
+77069
+77081
+77093
+77101
+77137
+77141
+77153
+77167
+77171
+77191
+77201
+77213
+77237
+77239
+77243
+77249
+77261
+77263
+77267
+77269
+77279
+77291
+77317
+77323
+77339
+77347
+77351
+77359
+77369
+77377
+77383
+77417
+77419
+77431
+77447
+77471
+77477
+77479
+77489
+77491
+77509
+77513
+77521
+77527
+77543
+77549
+77551
+77557
+77563
+77569
+77573
+77587
+77591
+77611
+77617
+77621
+77641
+77647
+77659
+77681
+77687
+77689
+77699
+77711
+77713
+77719
+77723
+77731
+77743
+77747
+77761
+77773
+77783
+77797
+77801
+77813
+77839
+77849
+77863
+77867
+77893
+77899
+77929
+77933
+77951
+77969
+77977
+77983
+77999
+78007
+78017
+78031
+78041
+78049
+78059
+78079
+78101
+78121
+78137
+78139
+78157
+78163
+78167
+78173
+78179
+78191
+78193
+78203
+78229
+78233
+78241
+78259
+78277
+78283
+78301
+78307
+78311
+78317
+78341
+78347
+78367
+78401
+78427
+78437
+78439
+78467
+78479
+78487
+78497
+78509
+78511
+78517
+78539
+78541
+78553
+78569
+78571
+78577
+78583
+78593
+78607
+78623
+78643
+78649
+78653
+78691
+78697
+78707
+78713
+78721
+78737
+78779
+78781
+78787
+78791
+78797
+78803
+78809
+78823
+78839
+78853
+78857
+78877
+78887
+78889
+78893
+78901
+78919
+78929
+78941
+78977
+78979
+78989
+79031
+79039
+79043
+79063
+79087
+79103
+79111
+79133
+79139
+79147
+79151
+79153
+79159
+79181
+79187
+79193
+79201
+79229
+79231
+79241
+79259
+79273
+79279
+79283
+79301
+79309
+79319
+79333
+79337
+79349
+79357
+79367
+79379
+79393
+79397
+79399
+79411
+79423
+79427
+79433
+79451
+79481
+79493
+79531
+79537
+79549
+79559
+79561
+79579
+79589
+79601
+79609
+79613
+79621
+79627
+79631
+79633
+79657
+79669
+79687
+79691
+79693
+79697
+79699
+79757
+79769
+79777
+79801
+79811
+79813
+79817
+79823
+79829
+79841
+79843
+79847
+79861
+79867
+79873
+79889
+79901
+79903
+79907
+79939
+79943
+79967
+79973
+79979
+79987
+79997
+79999
+80021
+80039
+80051
+80071
+80077
+80107
+80111
+80141
+80147
+80149
+80153
+80167
+80173
+80177
+80191
+80207
+80209
+80221
+80231
+80233
+80239
+80251
+80263
+80273
+80279
+80287
+80309
+80317
+80329
+80341
+80347
+80363
+80369
+80387
+80407
+80429
+80447
+80449
+80471
+80473
+80489
+80491
+80513
+80527
+80537
+80557
+80567
+80599
+80603
+80611
+80621
+80627
+80629
+80651
+80657
+80669
+80671
+80677
+80681
+80683
+80687
+80701
+80713
+80737
+80747
+80749
+80761
+80777
+80779
+80783
+80789
+80803
+80809
+80819
+80831
+80833
+80849
+80863
+80897
+80909
+80911
+80917
+80923
+80929
+80933
+80953
+80963
+80989
+81001
+81013
+81017
+81019
+81023
+81031
+81041
+81043
+81047
+81049
+81071
+81077
+81083
+81097
+81101
+81119
+81131
+81157
+81163
+81173
+81181
+81197
+81199
+81203
+81223
+81233
+81239
+81281
+81283
+81293
+81299
+81307
+81331
+81343
+81349
+81353
+81359
+81371
+81373
+81401
+81409
+81421
+81439
+81457
+81463
+81509
+81517
+81527
+81533
+81547
+81551
+81553
+81559
+81563
+81569
+81611
+81619
+81629
+81637
+81647
+81649
+81667
+81671
+81677
+81689
+81701
+81703
+81707
+81727
+81737
+81749
+81761
+81769
+81773
+81799
+81817
+81839
+81847
+81853
+81869
+81883
+81899
+81901
+81919
+81929
+81931
+81937
+81943
+81953
+81967
+81971
+81973
+82003
+82007
+82009
+82013
+82021
+82031
+82037
+82039
+82051
+82067
+82073
+82129
+82139
+82141
+82153
+82163
+82171
+82183
+82189
+82193
+82207
+82217
+82219
+82223
+82231
+82237
+82241
+82261
+82267
+82279
+82301
+82307
+82339
+82349
+82351
+82361
+82373
+82387
+82393
+82421
+82457
+82463
+82469
+82471
+82483
+82487
+82493
+82499
+82507
+82529
+82531
+82549
+82559
+82561
+82567
+82571
+82591
+82601
+82609
+82613
+82619
+82633
+82651
+82657
+82699
+82721
+82723
+82727
+82729
+82757
+82759
+82763
+82781
+82787
+82793
+82799
+82811
+82813
+82837
+82847
+82883
+82889
+82891
+82903
+82913
+82939
+82963
+82981
+82997
+83003
+83009
+83023
+83047
+83059
+83063
+83071
+83077
+83089
+83093
+83101
+83117
+83137
+83177
+83203
+83207
+83219
+83221
+83227
+83231
+83233
+83243
+83257
+83267
+83269
+83273
+83299
+83311
+83339
+83341
+83357
+83383
+83389
+83399
+83401
+83407
+83417
+83423
+83431
+83437
+83443
+83449
+83459
+83471
+83477
+83497
+83537
+83557
+83561
+83563
+83579
+83591
+83597
+83609
+83617
+83621
+83639
+83641
+83653
+83663
+83689
+83701
+83717
+83719
+83737
+83761
+83773
+83777
+83791
+83813
+83833
+83843
+83857
+83869
+83873
+83891
+83903
+83911
+83921
+83933
+83939
+83969
+83983
+83987
+84011
+84017
+84047
+84053
+84059
+84061
+84067
+84089
+84121
+84127
+84131
+84137
+84143
+84163
+84179
+84181
+84191
+84199
+84211
+84221
+84223
+84229
+84239
+84247
+84263
+84299
+84307
+84313
+84317
+84319
+84347
+84349
+84377
+84389
+84391
+84401
+84407
+84421
+84431
+84437
+84443
+84449
+84457
+84463
+84467
+84481
+84499
+84503
+84509
+84521
+84523
+84533
+84551
+84559
+84589
+84629
+84631
+84649
+84653
+84659
+84673
+84691
+84697
+84701
+84713
+84719
+84731
+84737
+84751
+84761
+84787
+84793
+84809
+84811
+84827
+84857
+84859
+84869
+84871
+84913
+84919
+84947
+84961
+84967
+84977
+84979
+84991
+85009
+85021
+85027
+85037
+85049
+85061
+85081
+85087
+85091
+85093
+85103
+85109
+85121
+85133
+85147
+85159
+85193
+85199
+85201
+85213
+85223
+85229
+85237
+85243
+85247
+85259
+85297
+85303
+85313
+85331
+85333
+85361
+85363
+85369
+85381
+85411
+85427
+85429
+85439
+85447
+85451
+85453
+85469
+85487
+85513
+85517
+85523
+85531
+85549
+85571
+85577
+85597
+85601
+85607
+85619
+85621
+85627
+85639
+85643
+85661
+85667
+85669
+85691
+85703
+85711
+85717
+85733
+85751
+85781
+85793
+85817
+85819
+85829
+85831
+85837
+85843
+85847
+85853
+85889
+85903
+85909
+85931
+85933
+85991
+85999
+86011
+86017
+86027
+86029
+86069
+86077
+86083
+86111
+86113
+86117
+86131
+86137
+86143
+86161
+86171
+86179
+86183
+86197
+86201
+86209
+86239
+86243
+86249
+86257
+86263
+86269
+86287
+86291
+86293
+86297
+86311
+86323
+86341
+86351
+86353
+86357
+86369
+86371
+86381
+86389
+86399
+86413
+86423
+86441
+86453
+86461
+86467
+86477
+86491
+86501
+86509
+86531
+86533
+86539
+86561
+86573
+86579
+86587
+86599
+86627
+86629
+86677
+86689
+86693
+86711
+86719
+86729
+86743
+86753
+86767
+86771
+86783
+86813
+86837
+86843
+86851
+86857
+86861
+86869
+86923
+86927
+86929
+86939
+86951
+86959
+86969
+86981
+86993
+87011
+87013
+87037
+87041
+87049
+87071
+87083
+87103
+87107
+87119
+87121
+87133
+87149
+87151
+87179
+87181
+87187
+87211
+87221
+87223
+87251
+87253
+87257
+87277
+87281
+87293
+87299
+87313
+87317
+87323
+87337
+87359
+87383
+87403
+87407
+87421
+87427
+87433
+87443
+87473
+87481
+87491
+87509
+87511
+87517
+87523
+87539
+87541
+87547
+87553
+87557
+87559
+87583
+87587
+87589
+87613
+87623
+87629
+87631
+87641
+87643
+87649
+87671
+87679
+87683
+87691
+87697
+87701
+87719
+87721
+87739
+87743
+87751
+87767
+87793
+87797
+87803
+87811
+87833
+87853
+87869
+87877
+87881
+87887
+87911
+87917
+87931
+87943
+87959
+87961
+87973
+87977
+87991
+88001
+88003
+88007
+88019
+88037
+88069
+88079
+88093
+88117
+88129
+88169
+88177
+88211
+88223
+88237
+88241
+88259
+88261
+88289
+88301
+88321
+88327
+88337
+88339
+88379
+88397
+88411
+88423
+88427
+88463
+88469
+88471
+88493
+88499
+88513
+88523
+88547
+88589
+88591
+88607
+88609
+88643
+88651
+88657
+88661
+88663
+88667
+88681
+88721
+88729
+88741
+88747
+88771
+88789
+88793
+88799
+88801
+88807
+88811
+88813
+88817
+88819
+88843
+88853
+88861
+88867
+88873
+88883
+88897
+88903
+88919
+88937
+88951
+88969
+88993
+88997
+89003
+89009
+89017
+89021
+89041
+89051
+89057
+89069
+89071
+89083
+89087
+89101
+89107
+89113
+89119
+89123
+89137
+89153
+89189
+89203
+89209
+89213
+89227
+89231
+89237
+89261
+89269
+89273
+89293
+89303
+89317
+89329
+89363
+89371
+89381
+89387
+89393
+89399
+89413
+89417
+89431
+89443
+89449
+89459
+89477
+89491
+89501
+89513
+89519
+89521
+89527
+89533
+89561
+89563
+89567
+89591
+89597
+89599
+89603
+89611
+89627
+89633
+89653
+89657
+89659
+89669
+89671
+89681
+89689
+89753
+89759
+89767
+89779
+89783
+89797
+89809
+89819
+89821
+89833
+89839
+89849
+89867
+89891
+89897
+89899
+89909
+89917
+89923
+89939
+89959
+89963
+89977
+89983
+89989
+90001
+90007
+90011
+90017
+90019
+90023
+90031
+90053
+90059
+90067
+90071
+90073
+90089
+90107
+90121
+90127
+90149
+90163
+90173
+90187
+90191
+90197
+90199
+90203
+90217
+90227
+90239
+90247
+90263
+90271
+90281
+90289
+90313
+90353
+90359
+90371
+90373
+90379
+90397
+90401
+90403
+90407
+90437
+90439
+90469
+90473
+90481
+90499
+90511
+90523
+90527
+90529
+90533
+90547
+90583
+90599
+90617
+90619
+90631
+90641
+90647
+90659
+90677
+90679
+90697
+90703
+90709
+90731
+90749
+90787
+90793
+90803
+90821
+90823
+90833
+90841
+90847
+90863
+90887
+90901
+90907
+90911
+90917
+90931
+90947
+90971
+90977
+90989
+90997
+91009
+91019
+91033
+91079
+91081
+91097
+91099
+91121
+91127
+91129
+91139
+91141
+91151
+91153
+91159
+91163
+91183
+91193
+91199
+91229
+91237
+91243
+91249
+91253
+91283
+91291
+91297
+91303
+91309
+91331
+91367
+91369
+91373
+91381
+91387
+91393
+91397
+91411
+91423
+91433
+91453
+91457
+91459
+91463
+91493
+91499
+91513
+91529
+91541
+91571
+91573
+91577
+91583
+91591
+91621
+91631
+91639
+91673
+91691
+91703
+91711
+91733
+91753
+91757
+91771
+91781
+91801
+91807
+91811
+91813
+91823
+91837
+91841
+91867
+91873
+91909
+91921
+91939
+91943
+91951
+91957
+91961
+91967
+91969
+91997
+92003
+92009
+92033
+92041
+92051
+92077
+92083
+92107
+92111
+92119
+92143
+92153
+92173
+92177
+92179
+92189
+92203
+92219
+92221
+92227
+92233
+92237
+92243
+92251
+92269
+92297
+92311
+92317
+92333
+92347
+92353
+92357
+92363
+92369
+92377
+92381
+92383
+92387
+92399
+92401
+92413
+92419
+92431
+92459
+92461
+92467
+92479
+92489
+92503
+92507
+92551
+92557
+92567
+92569
+92581
+92593
+92623
+92627
+92639
+92641
+92647
+92657
+92669
+92671
+92681
+92683
+92693
+92699
+92707
+92717
+92723
+92737
+92753
+92761
+92767
+92779
+92789
+92791
+92801
+92809
+92821
+92831
+92849
+92857
+92861
+92863
+92867
+92893
+92899
+92921
+92927
+92941
+92951
+92957
+92959
+92987
+92993
+93001
+93047
+93053
+93059
+93077
+93083
+93089
+93097
+93103
+93113
+93131
+93133
+93139
+93151
+93169
+93179
+93187
+93199
+93229
+93239
+93241
+93251
+93253
+93257
+93263
+93281
+93283
+93287
+93307
+93319
+93323
+93329
+93337
+93371
+93377
+93383
+93407
+93419
+93427
+93463
+93479
+93481
+93487
+93491
+93493
+93497
+93503
+93523
+93529
+93553
+93557
+93559
+93563
+93581
+93601
+93607
+93629
+93637
+93683
+93701
+93703
+93719
+93739
+93761
+93763
+93787
+93809
+93811
+93827
+93851
+93871
+93887
+93889
+93893
+93901
+93911
+93913
+93923
+93937
+93941
+93949
+93967
+93971
+93979
+93983
+93997
+94007
+94009
+94033
+94049
+94057
+94063
+94079
+94099
+94109
+94111
+94117
+94121
+94151
+94153
+94169
+94201
+94207
+94219
+94229
+94253
+94261
+94273
+94291
+94307
+94309
+94321
+94327
+94331
+94343
+94349
+94351
+94379
+94397
+94399
+94421
+94427
+94433
+94439
+94441
+94447
+94463
+94477
+94483
+94513
+94529
+94531
+94541
+94543
+94547
+94559
+94561
+94573
+94583
+94597
+94603
+94613
+94621
+94649
+94651
+94687
+94693
+94709
+94723
+94727
+94747
+94771
+94777
+94781
+94789
+94793
+94811
+94819
+94823
+94837
+94841
+94847
+94849
+94873
+94889
+94903
+94907
+94933
+94949
+94951
+94961
+94993
+94999
+95003
+95009
+95021
+95027
+95063
+95071
+95083
+95087
+95089
+95093
+95101
+95107
+95111
+95131
+95143
+95153
+95177
+95189
+95191
+95203
+95213
+95219
+95231
+95233
+95239
+95257
+95261
+95267
+95273
+95279
+95287
+95311
+95317
+95327
+95339
+95369
+95383
+95393
+95401
+95413
+95419
+95429
+95441
+95443
+95461
+95467
+95471
+95479
+95483
+95507
+95527
+95531
+95539
+95549
+95561
+95569
+95581
+95597
+95603
+95617
+95621
+95629
+95633
+95651
+95701
+95707
+95713
+95717
+95723
+95731
+95737
+95747
+95773
+95783
+95789
+95791
+95801
+95803
+95813
+95819
+95857
+95869
+95873
+95881
+95891
+95911
+95917
+95923
+95929
+95947
+95957
+95959
+95971
+95987
+95989
+96001
+96013
+96017
+96043
+96053
+96059
+96079
+96097
+96137
+96149
+96157
+96167
+96179
+96181
+96199
+96211
+96221
+96223
+96233
+96259
+96263
+96269
+96281
+96289
+96293
+96323
+96329
+96331
+96337
+96353
+96377
+96401
+96419
+96431
+96443
+96451
+96457
+96461
+96469
+96479
+96487
+96493
+96497
+96517
+96527
+96553
+96557
+96581
+96587
+96589
+96601
+96643
+96661
+96667
+96671
+96697
+96703
+96731
+96737
+96739
+96749
+96757
+96763
+96769
+96779
+96787
+96797
+96799
+96821
+96823
+96827
+96847
+96851
+96857
+96893
+96907
+96911
+96931
+96953
+96959
+96973
+96979
+96989
+96997
+97001
+97003
+97007
+97021
+97039
+97073
+97081
+97103
+97117
+97127
+97151
+97157
+97159
+97169
+97171
+97177
+97187
+97213
+97231
+97241
+97259
+97283
+97301
+97303
+97327
+97367
+97369
+97373
+97379
+97381
+97387
+97397
+97423
+97429
+97441
+97453
+97459
+97463
+97499
+97501
+97511
+97523
+97547
+97549
+97553
+97561
+97571
+97577
+97579
+97583
+97607
+97609
+97613
+97649
+97651
+97673
+97687
+97711
+97729
+97771
+97777
+97787
+97789
+97813
+97829
+97841
+97843
+97847
+97849
+97859
+97861
+97871
+97879
+97883
+97919
+97927
+97931
+97943
+97961
+97967
+97973
+97987
+98009
+98011
+98017
+98041
+98047
+98057
+98081
+98101
+98123
+98129
+98143
+98179
+98207
+98213
+98221
+98227
+98251
+98257
+98269
+98297
+98299
+98317
+98321
+98323
+98327
+98347
+98369
+98377
+98387
+98389
+98407
+98411
+98419
+98429
+98443
+98453
+98459
+98467
+98473
+98479
+98491
+98507
+98519
+98533
+98543
+98561
+98563
+98573
+98597
+98621
+98627
+98639
+98641
+98663
+98669
+98689
+98711
+98713
+98717
+98729
+98731
+98737
+98773
+98779
+98801
+98807
+98809
+98837
+98849
+98867
+98869
+98873
+98887
+98893
+98897
+98899
+98909
+98911
+98927
+98929
+98939
+98947
+98953
+98963
+98981
+98993
+98999
+99013
+99017
+99023
+99041
+99053
+99079
+99083
+99089
+99103
+99109
+99119
+99131
+99133
+99137
+99139
+99149
+99173
+99181
+99191
+99223
+99233
+99241
+99251
+99257
+99259
+99277
+99289
+99317
+99347
+99349
+99367
+99371
+99377
+99391
+99397
+99401
+99409
+99431
+99439
+99469
+99487
+99497
+99523
+99527
+99529
+99551
+99559
+99563
+99571
+99577
+99581
+99607
+99611
+99623
+99643
+99661
+99667
+99679
+99689
+99707
+99709
+99713
+99719
+99721
+99733
+99761
+99767
+99787
+99793
+99809
+99817
+99823
+99829
+99833
+99839
+99859
+99871
+99877
+99881
+99901
+99907
+99923
+99929
+99961
+99971
+99989
+99991
+100003
+100019
+100043
+100049
+100057
+100069
+100103
+100109
+100129
+100151
+100153
+100169
+100183
+100189
+100193
+100207
+100213
+100237
+100267
+100271
+100279
+100291
+100297
+100313
+100333
+100343
+100357
+100361
+100363
+100379
+100391
+100393
+100403
+100411
+100417
+100447
+100459
+100469
+100483
+100493
+100501
+100511
+100517
+100519
+100523
+100537
+100547
+100549
+100559
+100591
+100609
+100613
+100621
+100649
+100669
+100673
+100693
+100699
+100703
+100733
+100741
+100747
+100769
+100787
+100799
+100801
+100811
+100823
+100829
+100847
+100853
+100907
+100913
+100927
+100931
+100937
+100943
+100957
+100981
+100987
+100999
+101009
+101021
+101027
+101051
+101063
+101081
+101089
+101107
+101111
+101113
+101117
+101119
+101141
+101149
+101159
+101161
+101173
+101183
+101197
+101203
+101207
+101209
+101221
+101267
+101273
+101279
+101281
+101287
+101293
+101323
+101333
+101341
+101347
+101359
+101363
+101377
+101383
+101399
+101411
+101419
+101429
+101449
+101467
+101477
+101483
+101489
+101501
+101503
+101513
+101527
+101531
+101533
+101537
+101561
+101573
+101581
+101599
+101603
+101611
+101627
+101641
+101653
+101663
+101681
+101693
+101701
+101719
+101723
+101737
+101741
+101747
+101749
+101771
+101789
+101797
+101807
+101833
+101837
+101839
+101863
+101869
+101873
+101879
+101891
+101917
+101921
+101929
+101939
+101957
+101963
+101977
+101987
+101999
+102001
+102013
+102019
+102023
+102031
+102043
+102059
+102061
+102071
+102077
+102079
+102101
+102103
+102107
+102121
+102139
+102149
+102161
+102181
+102191
+102197
+102199
+102203
+102217
+102229
+102233
+102241
+102251
+102253
+102259
+102293
+102299
+102301
+102317
+102329
+102337
+102359
+102367
+102397
+102407
+102409
+102433
+102437
+102451
+102461
+102481
+102497
+102499
+102503
+102523
+102533
+102539
+102547
+102551
+102559
+102563
+102587
+102593
+102607
+102611
+102643
+102647
+102653
+102667
+102673
+102677
+102679
+102701
+102761
+102763
+102769
+102793
+102797
+102811
+102829
+102841
+102859
+102871
+102877
+102881
+102911
+102913
+102929
+102931
+102953
+102967
+102983
+103001
+103007
+103043
+103049
+103067
+103069
+103079
+103087
+103091
+103093
+103099
+103123
+103141
+103171
+103177
+103183
+103217
+103231
+103237
+103289
+103291
+103307
+103319
+103333
+103349
+103357
+103387
+103391
+103393
+103399
+103409
+103421
+103423
+103451
+103457
+103471
+103483
+103511
+103529
+103549
+103553
+103561
+103567
+103573
+103577
+103583
+103591
+103613
+103619
+103643
+103651
+103657
+103669
+103681
+103687
+103699
+103703
+103723
+103769
+103787
+103801
+103811
+103813
+103837
+103841
+103843
+103867
+103889
+103903
+103913
+103919
+103951
+103963
+103967
+103969
+103979
+103981
+103991
+103993
+103997
+104003
+104009
+104021
+104033
+104047
+104053
+104059
+104087
+104089
+104107
+104113
+104119
+104123
+104147
+104149
+104161
+104173
+104179
+104183
+104207
+104231
+104233
+104239
+104243
+104281
+104287
+104297
+104309
+104311
+104323
+104327
+104347
+104369
+104381
+104383
+104393
+104399
+104417
+104459
+104471
+104473
+104479
+104491
+104513
+104527
+104537
+104543
+104549
+104551
+104561
+104579
+104593
+104597
+104623
+104639
+104651
+104659
+104677
+104681
+104683
+104693
+104701
+104707
+104711
+104717
+104723
+104729
+104743
+104759
+104761
+104773
+104779
+104789
+104801
+104803
+104827
+104831
+104849
+104851
+104869
+104879
+104891
+104911
+104917
+104933
+104947
+104953
+104959
+104971
+104987
+104999
+105019
+105023
+105031
+105037
+105071
+105097
+105107
+105137
+105143
+105167
+105173
+105199
+105211
+105227
+105229
+105239
+105251
+105253
+105263
+105269
+105277
+105319
+105323
+105331
+105337
+105341
+105359
+105361
+105367
+105373
+105379
+105389
+105397
+105401
+105407
+105437
+105449
+105467
+105491
+105499
+105503
+105509
+105517
+105527
+105529
+105533
+105541
+105557
+105563
+105601
+105607
+105613
+105619
+105649
+105653
+105667
+105673
+105683
+105691
+105701
+105727
+105733
+105751
+105761
+105767
+105769
+105817
+105829
+105863
+105871
+105883
+105899
+105907
+105913
+105929
+105943
+105953
+105967
+105971
+105977
+105983
+105997
+106013
+106019
+106031
+106033
+106087
+106103
+106109
+106121
+106123
+106129
+106163
+106181
+106187
+106189
+106207
+106213
+106217
+106219
+106243
+106261
+106273
+106277
+106279
+106291
+106297
+106303
+106307
+106319
+106321
+106331
+106349
+106357
+106363
+106367
+106373
+106391
+106397
+106411
+106417
+106427
+106433
+106441
+106451
+106453
+106487
+106501
+106531
+106537
+106541
+106543
+106591
+106619
+106621
+106627
+106637
+106649
+106657
+106661
+106663
+106669
+106681
+106693
+106699
+106703
+106721
+106727
+106739
+106747
+106751
+106753
+106759
+106781
+106783
+106787
+106801
+106823
+106853
+106859
+106861
+106867
+106871
+106877
+106903
+106907
+106921
+106937
+106949
+106957
+106961
+106963
+106979
+106993
+107021
+107033
+107053
+107057
+107069
+107071
+107077
+107089
+107099
+107101
+107119
+107123
+107137
+107171
+107183
+107197
+107201
+107209
+107227
+107243
+107251
+107269
+107273
+107279
+107309
+107323
+107339
+107347
+107351
+107357
+107377
+107441
+107449
+107453
+107467
+107473
+107507
+107509
+107563
+107581
+107599
+107603
+107609
+107621
+107641
+107647
+107671
+107687
+107693
+107699
+107713
+107717
+107719
+107741
+107747
+107761
+107773
+107777
+107791
+107827
+107837
+107839
+107843
+107857
+107867
+107873
+107881
+107897
+107903
+107923
+107927
+107941
+107951
+107971
+107981
+107999
+108007
+108011
+108013
+108023
+108037
+108041
+108061
+108079
+108089
+108107
+108109
+108127
+108131
+108139
+108161
+108179
+108187
+108191
+108193
+108203
+108211
+108217
+108223
+108233
+108247
+108263
+108271
+108287
+108289
+108293
+108301
+108343
+108347
+108359
+108377
+108379
+108401
+108413
+108421
+108439
+108457
+108461
+108463
+108497
+108499
+108503
+108517
+108529
+108533
+108541
+108553
+108557
+108571
+108587
+108631
+108637
+108643
+108649
+108677
+108707
+108709
+108727
+108739
+108751
+108761
+108769
+108791
+108793
+108799
+108803
+108821
+108827
+108863
+108869
+108877
+108881
+108883
+108887
+108893
+108907
+108917
+108923
+108929
+108943
+108947
+108949
+108959
+108961
+108967
+108971
+108991
+109001
+109013
+109037
+109049
+109063
+109073
+109097
+109103
+109111
+109121
+109133
+109139
+109141
+109147
+109159
+109169
+109171
+109199
+109201
+109211
+109229
+109253
+109267
+109279
+109297
+109303
+109313
+109321
+109331
+109357
+109363
+109367
+109379
+109387
+109391
+109397
+109423
+109433
+109441
+109451
+109453
+109469
+109471
+109481
+109507
+109517
+109519
+109537
+109541
+109547
+109567
+109579
+109583
+109589
+109597
+109609
+109619
+109621
+109639
+109661
+109663
+109673
+109717
+109721
+109741
+109751
+109789
+109793
+109807
+109819
+109829
+109831
+109841
+109843
+109847
+109849
+109859
+109873
+109883
+109891
+109897
+109903
+109913
+109919
+109937
+109943
+109961
+109987
+110017
+110023
+110039
+110051
+110059
+110063
+110069
+110083
+110119
+110129
+110161
+110183
+110221
+110233
+110237
+110251
+110261
+110269
+110273
+110281
+110291
+110311
+110321
+110323
+110339
+110359
+110419
+110431
+110437
+110441
+110459
+110477
+110479
+110491
+110501
+110503
+110527
+110533
+110543
+110557
+110563
+110567
+110569
+110573
+110581
+110587
+110597
+110603
+110609
+110623
+110629
+110641
+110647
+110651
+110681
+110711
+110729
+110731
+110749
+110753
+110771
+110777
+110807
+110813
+110819
+110821
+110849
+110863
+110879
+110881
+110899
+110909
+110917
+110921
+110923
+110927
+110933
+110939
+110947
+110951
+110969
+110977
+110989
+111029
+111031
+111043
+111049
+111053
+111091
+111103
+111109
+111119
+111121
+111127
+111143
+111149
+111187
+111191
+111211
+111217
+111227
+111229
+111253
+111263
+111269
+111271
+111301
+111317
+111323
+111337
+111341
+111347
+111373
+111409
+111427
+111431
+111439
+111443
+111467
+111487
+111491
+111493
+111497
+111509
+111521
+111533
+111539
+111577
+111581
+111593
+111599
+111611
+111623
+111637
+111641
+111653
+111659
+111667
+111697
+111721
+111731
+111733
+111751
+111767
+111773
+111779
+111781
+111791
+111799
+111821
+111827
+111829
+111833
+111847
+111857
+111863
+111869
+111871
+111893
+111913
+111919
+111949
+111953
+111959
+111973
+111977
+111997
+112019
+112031
+112061
+112067
+112069
+112087
+112097
+112103
+112111
+112121
+112129
+112139
+112153
+112163
+112181
+112199
+112207
+112213
+112223
+112237
+112241
+112247
+112249
+112253
+112261
+112279
+112289
+112291
+112297
+112303
+112327
+112331
+112337
+112339
+112349
+112361
+112363
+112397
+112403
+112429
+112459
+112481
+112501
+112507
+112543
+112559
+112571
+112573
+112577
+112583
+112589
+112601
+112603
+112621
+112643
+112657
+112663
+112687
+112691
+112741
+112757
+112759
+112771
+112787
+112799
+112807
+112831
+112843
+112859
+112877
+112901
+112909
+112913
+112919
+112921
+112927
+112939
+112951
+112967
+112979
+112997
+113011
+113017
+113021
+113023
+113027
+113039
+113041
+113051
+113063
+113081
+113083
+113089
+113093
+113111
+113117
+113123
+113131
+113143
+113147
+113149
+113153
+113159
+113161
+113167
+113171
+113173
+113177
+113189
+113209
+113213
+113227
+113233
+113279
+113287
+113327
+113329
+113341
+113357
+113359
+113363
+113371
+113381
+113383
+113417
+113437
+113453
+113467
+113489
+113497
+113501
+113513
+113537
+113539
+113557
+113567
+113591
+113621
+113623
+113647
+113657
+113683
+113717
+113719
+113723
+113731
+113749
+113759
+113761
+113777
+113779
+113783
+113797
+113809
+113819
+113837
+113843
+113891
+113899
+113903
+113909
+113921
+113933
+113947
+113957
+113963
+113969
+113983
+113989
+114001
+114013
+114031
+114041
+114043
+114067
+114073
+114077
+114083
+114089
+114113
+114143
+114157
+114161
+114167
+114193
+114197
+114199
+114203
+114217
+114221
+114229
+114259
+114269
+114277
+114281
+114299
+114311
+114319
+114329
+114343
+114371
+114377
+114407
+114419
+114451
+114467
+114473
+114479
+114487
+114493
+114547
+114553
+114571
+114577
+114593
+114599
+114601
+114613
+114617
+114641
+114643
+114649
+114659
+114661
+114671
+114679
+114689
+114691
+114713
+114743
+114749
+114757
+114761
+114769
+114773
+114781
+114797
+114799
+114809
+114827
+114833
+114847
+114859
+114883
+114889
+114901
+114913
+114941
+114967
+114973
+114997
+115001
+115013
+115019
+115021
+115057
+115061
+115067
+115079
+115099
+115117
+115123
+115127
+115133
+115151
+115153
+115163
+115183
+115201
+115211
+115223
+115237
+115249
+115259
+115279
+115301
+115303
+115309
+115319
+115321
+115327
+115331
+115337
+115343
+115361
+115363
+115399
+115421
+115429
+115459
+115469
+115471
+115499
+115513
+115523
+115547
+115553
+115561
+115571
+115589
+115597
+115601
+115603
+115613
+115631
+115637
+115657
+115663
+115679
+115693
+115727
+115733
+115741
+115751
+115757
+115763
+115769
+115771
+115777
+115781
+115783
+115793
+115807
+115811
+115823
+115831
+115837
+115849
+115853
+115859
+115861
+115873
+115877
+115879
+115883
+115891
+115901
+115903
+115931
+115933
+115963
+115979
+115981
+115987
+116009
+116027
+116041
+116047
+116089
+116099
+116101
+116107
+116113
+116131
+116141
+116159
+116167
+116177
+116189
+116191
+116201
+116239
+116243
+116257
+116269
+116273
+116279
+116293
+116329
+116341
+116351
+116359
+116371
+116381
+116387
+116411
+116423
+116437
+116443
+116447
+116461
+116471
+116483
+116491
+116507
+116531
+116533
+116537
+116539
+116549
+116579
+116593
+116639
+116657
+116663
+116681
+116687
+116689
+116707
+116719
+116731
+116741
+116747
+116789
+116791
+116797
+116803
+116819
+116827
+116833
+116849
+116867
+116881
+116903
+116911
+116923
+116927
+116929
+116933
+116953
+116959
+116969
+116981
+116989
+116993
+117017
+117023
+117037
+117041
+117043
+117053
+117071
+117101
+117109
+117119
+117127
+117133
+117163
+117167
+117191
+117193
+117203
+117209
+117223
+117239
+117241
+117251
+117259
+117269
+117281
+117307
+117319
+117329
+117331
+117353
+117361
+117371
+117373
+117389
+117413
+117427
+117431
+117437
+117443
+117497
+117499
+117503
+117511
+117517
+117529
+117539
+117541
+117563
+117571
+117577
+117617
+117619
+117643
+117659
+117671
+117673
+117679
+117701
+117703
+117709
+117721
+117727
+117731
+117751
+117757
+117763
+117773
+117779
+117787
+117797
+117809
+117811
+117833
+117839
+117841
+117851
+117877
+117881
+117883
+117889
+117899
+117911
+117917
+117937
+117959
+117973
+117977
+117979
+117989
+117991
+118033
+118037
+118043
+118051
+118057
+118061
+118081
+118093
+118127
+118147
+118163
+118169
+118171
+118189
+118211
+118213
+118219
+118247
+118249
+118253
+118259
+118273
+118277
+118297
+118343
+118361
+118369
+118373
+118387
+118399
+118409
+118411
+118423
+118429
+118453
+118457
+118463
+118471
+118493
+118529
+118543
+118549
+118571
+118583
+118589
+118603
+118619
+118621
+118633
+118661
+118669
+118673
+118681
+118687
+118691
+118709
+118717
+118739
+118747
+118751
+118757
+118787
+118799
+118801
+118819
+118831
+118843
+118861
+118873
+118891
+118897
+118901
+118903
+118907
+118913
+118927
+118931
+118967
+118973
+119027
+119033
+119039
+119047
+119057
+119069
+119083
+119087
+119089
+119099
+119101
+119107
+119129
+119131
+119159
+119173
+119179
+119183
+119191
+119227
+119233
+119237
+119243
+119267
+119291
+119293
+119297
+119299
+119311
+119321
+119359
+119363
+119389
+119417
+119419
+119429
+119447
+119489
+119503
+119513
+119533
+119549
+119551
+119557
+119563
+119569
+119591
+119611
+119617
+119627
+119633
+119653
+119657
+119659
+119671
+119677
+119687
+119689
+119699
+119701
+119723
+119737
+119747
+119759
+119771
+119773
+119783
+119797
+119809
+119813
+119827
+119831
+119839
+119849
+119851
+119869
+119881
+119891
+119921
+119923
+119929
+119953
+119963
+119971
+119981
+119983
+119993
+120011
+120017
+120041
+120047
+120049
+120067
+120077
+120079
+120091
+120097
+120103
+120121
+120157
+120163
+120167
+120181
+120193
+120199
+120209
+120223
+120233
+120247
+120277
+120283
+120293
+120299
+120319
+120331
+120349
+120371
+120383
+120391
+120397
+120401
+120413
+120427
+120431
+120473
+120503
+120511
+120539
+120551
+120557
+120563
+120569
+120577
+120587
+120607
+120619
+120623
+120641
+120647
+120661
+120671
+120677
+120689
+120691
+120709
+120713
+120721
+120737
+120739
+120749
+120763
+120767
+120779
+120811
+120817
+120823
+120829
+120833
+120847
+120851
+120863
+120871
+120877
+120889
+120899
+120907
+120917
+120919
+120929
+120937
+120941
+120943
+120947
+120977
+120997
+121001
+121007
+121013
+121019
+121021
+121039
+121061
+121063
+121067
+121081
+121123
+121139
+121151
+121157
+121169
+121171
+121181
+121189
+121229
+121259
+121267
+121271
+121283
+121291
+121309
+121313
+121321
+121327
+121333
+121343
+121349
+121351
+121357
+121367
+121369
+121379
+121403
+121421
+121439
+121441
+121447
+121453
+121469
+121487
+121493
+121501
+121507
+121523
+121531
+121547
+121553
+121559
+121571
+121577
+121579
+121591
+121607
+121609
+121621
+121631
+121633
+121637
+121661
+121687
+121697
+121711
+121721
+121727
+121763
+121787
+121789
+121843
+121853
+121867
+121883
+121889
+121909
+121921
+121931
+121937
+121949
+121951
+121963
+121967
+121993
+121997
+122011
+122021
+122027
+122029
+122033
+122039
+122041
+122051
+122053
+122069
+122081
+122099
+122117
+122131
+122147
+122149
+122167
+122173
+122201
+122203
+122207
+122209
+122219
+122231
+122251
+122263
+122267
+122273
+122279
+122299
+122321
+122323
+122327
+122347
+122363
+122387
+122389
+122393
+122399
+122401
+122443
+122449
+122453
+122471
+122477
+122489
+122497
+122501
+122503
+122509
+122527
+122533
+122557
+122561
+122579
+122597
+122599
+122609
+122611
+122651
+122653
+122663
+122693
+122701
+122719
+122741
+122743
+122753
+122761
+122777
+122789
+122819
+122827
+122833
+122839
+122849
+122861
+122867
+122869
+122887
+122891
+122921
+122929
+122939
+122953
+122957
+122963
+122971
+123001
+123007
+123017
+123031
+123049
+123059
+123077
+123083
+123091
+123113
+123121
+123127
+123143
+123169
+123191
+123203
+123209
+123217
+123229
+123239
+123259
+123269
+123289
+123307
+123311
+123323
+123341
+123373
+123377
+123379
+123397
+123401
+123407
+123419
+123427
+123433
+123439
+123449
+123457
+123479
+123491
+123493
+123499
+123503
+123517
+123527
+123547
+123551
+123553
+123581
+123583
+123593
+123601
+123619
+123631
+123637
+123653
+123661
+123667
+123677
+123701
+123707
+123719
+123727
+123731
+123733
+123737
+123757
+123787
+123791
+123803
+123817
+123821
+123829
+123833
+123853
+123863
+123887
+123911
+123923
+123931
+123941
+123953
+123973
+123979
+123983
+123989
+123997
+124001
+124021
+124067
+124087
+124097
+124121
+124123
+124133
+124139
+124147
+124153
+124171
+124181
+124183
+124193
+124199
+124213
+124231
+124247
+124249
+124277
+124291
+124297
+124301
+124303
+124309
+124337
+124339
+124343
+124349
+124351
+124363
+124367
+124427
+124429
+124433
+124447
+124459
+124471
+124477
+124489
+124493
+124513
+124529
+124541
+124543
+124561
+124567
+124577
+124601
+124633
+124643
+124669
+124673
+124679
+124693
+124699
+124703
+124717
+124721
+124739
+124753
+124759
+124769
+124771
+124777
+124781
+124783
+124793
+124799
+124819
+124823
+124847
+124853
+124897
+124907
+124909
+124919
+124951
+124979
+124981
+124987
+124991
+125003
+125017
+125029
+125053
+125063
+125093
+125101
+125107
+125113
+125117
+125119
+125131
+125141
+125149
+125183
+125197
+125201
+125207
+125219
+125221
+125231
+125243
+125261
+125269
+125287
+125299
+125303
+125311
+125329
+125339
+125353
+125371
+125383
+125387
+125399
+125407
+125423
+125429
+125441
+125453
+125471
+125497
+125507
+125509
+125527
+125539
+125551
+125591
+125597
+125617
+125621
+125627
+125639
+125641
+125651
+125659
+125669
+125683
+125687
+125693
+125707
+125711
+125717
+125731
+125737
+125743
+125753
+125777
+125789
+125791
+125803
+125813
+125821
+125863
+125887
+125897
+125899
+125921
+125927
+125929
+125933
+125941
+125959
+125963
+126001
+126011
+126013
+126019
+126023
+126031
+126037
+126041
+126047
+126067
+126079
+126097
+126107
+126127
+126131
+126143
+126151
+126173
+126199
+126211
+126223
+126227
+126229
+126233
+126241
+126257
+126271
+126307
+126311
+126317
+126323
+126337
+126341
+126349
+126359
+126397
+126421
+126433
+126443
+126457
+126461
+126473
+126481
+126487
+126491
+126493
+126499
+126517
+126541
+126547
+126551
+126583
+126601
+126611
+126613
+126631
+126641
+126653
+126683
+126691
+126703
+126713
+126719
+126733
+126739
+126743
+126751
+126757
+126761
+126781
+126823
+126827
+126839
+126851
+126857
+126859
+126913
+126923
+126943
+126949
+126961
+126967
+126989
+127031
+127033
+127037
+127051
+127079
+127081
+127103
+127123
+127133
+127139
+127157
+127163
+127189
+127207
+127217
+127219
+127241
+127247
+127249
+127261
+127271
+127277
+127289
+127291
+127297
+127301
+127321
+127331
+127343
+127363
+127373
+127399
+127403
+127423
+127447
+127453
+127481
+127487
+127493
+127507
+127529
+127541
+127549
+127579
+127583
+127591
+127597
+127601
+127607
+127609
+127637
+127643
+127649
+127657
+127663
+127669
+127679
+127681
+127691
+127703
+127709
+127711
+127717
+127727
+127733
+127739
+127747
+127763
+127781
+127807
+127817
+127819
+127837
+127843
+127849
+127859
+127867
+127873
+127877
+127913
+127921
+127931
+127951
+127973
+127979
+127997
+128021
+128033
+128047
+128053
+128099
+128111
+128113
+128119
+128147
+128153
+128159
+128173
+128189
+128201
+128203
+128213
+128221
+128237
+128239
+128257
+128273
+128287
+128291
+128311
+128321
+128327
+128339
+128341
+128347
+128351
+128377
+128389
+128393
+128399
+128411
+128413
+128431
+128437
+128449
+128461
+128467
+128473
+128477
+128483
+128489
+128509
+128519
+128521
+128549
+128551
+128563
+128591
+128599
+128603
+128621
+128629
+128657
+128659
+128663
+128669
+128677
+128683
+128693
+128717
+128747
+128749
+128761
+128767
+128813
+128819
+128831
+128833
+128837
+128857
+128861
+128873
+128879
+128903
+128923
+128939
+128941
+128951
+128959
+128969
+128971
+128981
+128983
+128987
+128993
+129001
+129011
+129023
+129037
+129049
+129061
+129083
+129089
+129097
+129113
+129119
+129121
+129127
+129169
+129187
+129193
+129197
+129209
+129221
+129223
+129229
+129263
+129277
+129281
+129287
+129289
+129293
+129313
+129341
+129347
+129361
+129379
+129401
+129403
+129419
+129439
+129443
+129449
+129457
+129461
+129469
+129491
+129497
+129499
+129509
+129517
+129527
+129529
+129533
+129539
+129553
+129581
+129587
+129589
+129593
+129607
+129629
+129631
+129641
+129643
+129671
+129707
+129719
+129733
+129737
+129749
+129757
+129763
+129769
+129793
+129803
+129841
+129853
+129887
+129893
+129901
+129917
+129919
+129937
+129953
+129959
+129967
+129971
+130003
+130021
+130027
+130043
+130051
+130057
+130069
+130073
+130079
+130087
+130099
+130121
+130127
+130147
+130171
+130183
+130199
+130201
+130211
+130223
+130241
+130253
+130259
+130261
+130267
+130279
+130303
+130307
+130337
+130343
+130349
+130363
+130367
+130369
+130379
+130399
+130409
+130411
+130423
+130439
+130447
+130457
+130469
+130477
+130483
+130489
+130513
+130517
+130523
+130531
+130547
+130553
+130579
+130589
+130619
+130621
+130631
+130633
+130639
+130643
+130649
+130651
+130657
+130681
+130687
+130693
+130699
+130729
+130769
+130783
+130787
+130807
+130811
+130817
+130829
+130841
+130843
+130859
+130873
+130927
+130957
+130969
+130973
+130981
+130987
+131009
+131011
+131023
+131041
+131059
+131063
+131071
+131101
+131111
+131113
+131129
+131143
+131149
+131171
+131203
+131213
+131221
+131231
+131249
+131251
+131267
+131293
+131297
+131303
+131311
+131317
+131321
+131357
+131363
+131371
+131381
+131413
+131431
+131437
+131441
+131447
+131449
+131477
+131479
+131489
+131497
+131501
+131507
+131519
+131543
+131561
+131581
+131591
+131611
+131617
+131627
+131639
+131641
+131671
+131687
+131701
+131707
+131711
+131713
+131731
+131743
+131749
+131759
+131771
+131777
+131779
+131783
+131797
+131837
+131839
+131849
+131861
+131891
+131893
+131899
+131909
+131927
+131933
+131939
+131941
+131947
+131959
+131969
+132001
+132019
+132047
+132049
+132059
+132071
+132103
+132109
+132113
+132137
+132151
+132157
+132169
+132173
+132199
+132229
+132233
+132241
+132247
+132257
+132263
+132283
+132287
+132299
+132313
+132329
+132331
+132347
+132361
+132367
+132371
+132383
+132403
+132409
+132421
+132437
+132439
+132469
+132491
+132499
+132511
+132523
+132527
+132529
+132533
+132541
+132547
+132589
+132607
+132611
+132619
+132623
+132631
+132637
+132647
+132661
+132667
+132679
+132689
+132697
+132701
+132707
+132709
+132721
+132739
+132749
+132751
+132757
+132761
+132763
+132817
+132833
+132851
+132857
+132859
+132863
+132887
+132893
+132911
+132929
+132947
+132949
+132953
+132961
+132967
+132971
+132989
+133013
+133033
+133039
+133051
+133069
+133073
+133087
+133097
+133103
+133109
+133117
+133121
+133153
+133157
+133169
+133183
+133187
+133201
+133213
+133241
+133253
+133261
+133271
+133277
+133279
+133283
+133303
+133319
+133321
+133327
+133337
+133349
+133351
+133379
+133387
+133391
+133403
+133417
+133439
+133447
+133451
+133481
+133493
+133499
+133519
+133541
+133543
+133559
+133571
+133583
+133597
+133631
+133633
+133649
+133657
+133669
+133673
+133691
+133697
+133709
+133711
+133717
+133723
+133733
+133769
+133781
+133801
+133811
+133813
+133831
+133843
+133853
+133873
+133877
+133919
+133949
+133963
+133967
+133979
+133981
+133993
+133999
+134033
+134039
+134047
+134053
+134059
+134077
+134081
+134087
+134089
+134093
+134129
+134153
+134161
+134171
+134177
+134191
+134207
+134213
+134219
+134227
+134243
+134257
+134263
+134269
+134287
+134291
+134293
+134327
+134333
+134339
+134341
+134353
+134359
+134363
+134369
+134371
+134399
+134401
+134417
+134437
+134443
+134471
+134489
+134503
+134507
+134513
+134581
+134587
+134591
+134593
+134597
+134609
+134639
+134669
+134677
+134681
+134683
+134699
+134707
+134731
+134741
+134753
+134777
+134789
+134807
+134837
+134839
+134851
+134857
+134867
+134873
+134887
+134909
+134917
+134921
+134923
+134947
+134951
+134989
+134999
+135007
+135017
+135019
+135029
+135043
+135049
+135059
+135077
+135089
+135101
+135119
+135131
+135151
+135173
+135181
+135193
+135197
+135209
+135211
+135221
+135241
+135257
+135271
+135277
+135281
+135283
+135301
+135319
+135329
+135347
+135349
+135353
+135367
+135389
+135391
+135403
+135409
+135427
+135431
+135433
+135449
+135461
+135463
+135467
+135469
+135479
+135497
+135511
+135533
+135559
+135571
+135581
+135589
+135593
+135599
+135601
+135607
+135613
+135617
+135623
+135637
+135647
+135649
+135661
+135671
+135697
+135701
+135719
+135721
+135727
+135731
+135743
+135757
+135781
+135787
+135799
+135829
+135841
+135851
+135859
+135887
+135893
+135899
+135911
+135913
+135929
+135937
+135977
+135979
+136013
+136027
+136033
+136043
+136057
+136067
+136069
+136093
+136099
+136111
+136133
+136139
+136163
+136177
+136189
+136193
+136207
+136217
+136223
+136237
+136247
+136261
+136273
+136277
+136303
+136309
+136319
+136327
+136333
+136337
+136343
+136351
+136361
+136373
+136379
+136393
+136397
+136399
+136403
+136417
+136421
+136429
+136447
+136453
+136463
+136471
+136481
+136483
+136501
+136511
+136519
+136523
+136531
+136537
+136541
+136547
+136559
+136573
+136601
+136603
+136607
+136621
+136649
+136651
+136657
+136691
+136693
+136709
+136711
+136727
+136733
+136739
+136751
+136753
+136769
+136777
+136811
+136813
+136841
+136849
+136859
+136861
+136879
+136883
+136889
+136897
+136943
+136949
+136951
+136963
+136973
+136979
+136987
+136991
+136993
+136999
+137029
+137077
+137087
+137089
+137117
+137119
+137131
+137143
+137147
+137153
+137177
+137183
+137191
+137197
+137201
+137209
+137219
+137239
+137251
+137273
+137279
+137303
+137321
+137339
+137341
+137353
+137359
+137363
+137369
+137383
+137387
+137393
+137399
+137413
+137437
+137443
+137447
+137453
+137477
+137483
+137491
+137507
+137519
+137537
+137567
+137573
+137587
+137593
+137597
+137623
+137633
+137639
+137653
+137659
+137699
+137707
+137713
+137723
+137737
+137743
+137771
+137777
+137791
+137803
+137827
+137831
+137849
+137867
+137869
+137873
+137909
+137911
+137927
+137933
+137941
+137947
+137957
+137983
+137993
+137999
+138007
+138041
+138053
+138059
+138071
+138077
+138079
+138101
+138107
+138113
+138139
+138143
+138157
+138163
+138179
+138181
+138191
+138197
+138209
+138239
+138241
+138247
+138251
+138283
+138289
+138311
+138319
+138323
+138337
+138349
+138371
+138373
+138389
+138401
+138403
+138407
+138427
+138433
+138449
+138451
+138461
+138469
+138493
+138497
+138511
+138517
+138547
+138559
+138563
+138569
+138571
+138577
+138581
+138587
+138599
+138617
+138629
+138637
+138641
+138647
+138661
+138679
+138683
+138727
+138731
+138739
+138763
+138793
+138797
+138799
+138821
+138829
+138841
+138863
+138869
+138883
+138889
+138893
+138899
+138917
+138923
+138937
+138959
+138967
+138977
+139021
+139033
+139067
+139079
+139091
+139109
+139121
+139123
+139133
+139169
+139177
+139187
+139199
+139201
+139241
+139267
+139273
+139291
+139297
+139301
+139303
+139309
+139313
+139333
+139339
+139343
+139361
+139367
+139369
+139387
+139393
+139397
+139409
+139423
+139429
+139439
+139457
+139459
+139483
+139487
+139493
+139501
+139511
+139537
+139547
+139571
+139589
+139591
+139597
+139609
+139619
+139627
+139661
+139663
+139681
+139697
+139703
+139709
+139721
+139729
+139739
+139747
+139753
+139759
+139787
+139801
+139813
+139831
+139837
+139861
+139871
+139883
+139891
+139901
+139907
+139921
+139939
+139943
+139967
+139969
+139981
+139987
+139991
+139999
+140009
+140053
+140057
+140069
+140071
+140111
+140123
+140143
+140159
+140167
+140171
+140177
+140191
+140197
+140207
+140221
+140227
+140237
+140249
+140263
+140269
+140281
+140297
+140317
+140321
+140333
+140339
+140351
+140363
+140381
+140401
+140407
+140411
+140417
+140419
+140423
+140443
+140449
+140453
+140473
+140477
+140521
+140527
+140533
+140549
+140551
+140557
+140587
+140593
+140603
+140611
+140617
+140627
+140629
+140639
+140659
+140663
+140677
+140681
+140683
+140689
+140717
+140729
+140731
+140741
+140759
+140761
+140773
+140779
+140797
+140813
+140827
+140831
+140837
+140839
+140863
+140867
+140869
+140891
+140893
+140897
+140909
+140929
+140939
+140977
+140983
+140989
+141023
+141041
+141061
+141067
+141073
+141079
+141101
+141107
+141121
+141131
+141157
+141161
+141179
+141181
+141199
+141209
+141221
+141223
+141233
+141241
+141257
+141263
+141269
+141277
+141283
+141301
+141307
+141311
+141319
+141353
+141359
+141371
+141397
+141403
+141413
+141439
+141443
+141461
+141481
+141497
+141499
+141509
+141511
+141529
+141539
+141551
+141587
+141601
+141613
+141619
+141623
+141629
+141637
+141649
+141653
+141667
+141671
+141677
+141679
+141689
+141697
+141707
+141709
+141719
+141731
+141761
+141767
+141769
+141773
+141793
+141803
+141811
+141829
+141833
+141851
+141853
+141863
+141871
+141907
+141917
+141931
+141937
+141941
+141959
+141961
+141971
+141991
+142007
+142019
+142031
+142039
+142049
+142057
+142061
+142067
+142097
+142099
+142111
+142123
+142151
+142157
+142159
+142169
+142183
+142189
+142193
+142211
+142217
+142223
+142231
+142237
+142271
+142297
+142319
+142327
+142357
+142369
+142381
+142391
+142403
+142421
+142427
+142433
+142453
+142469
+142501
+142529
+142537
+142543
+142547
+142553
+142559
+142567
+142573
+142589
+142591
+142601
+142607
+142609
+142619
+142657
+142673
+142697
+142699
+142711
+142733
+142757
+142759
+142771
+142787
+142789
+142799
+142811
+142837
+142841
+142867
+142871
+142873
+142897
+142903
+142907
+142939
+142949
+142963
+142969
+142973
+142979
+142981
+142993
+143053
+143063
+143093
+143107
+143111
+143113
+143137
+143141
+143159
+143177
+143197
+143239
+143243
+143249
+143257
+143261
+143263
+143281
+143287
+143291
+143329
+143333
+143357
+143387
+143401
+143413
+143419
+143443
+143461
+143467
+143477
+143483
+143489
+143501
+143503
+143509
+143513
+143519
+143527
+143537
+143551
+143567
+143569
+143573
+143593
+143609
+143617
+143629
+143651
+143653
+143669
+143677
+143687
+143699
+143711
+143719
+143729
+143743
+143779
+143791
+143797
+143807
+143813
+143821
+143827
+143831
+143833
+143873
+143879
+143881
+143909
+143947
+143953
+143971
+143977
+143981
+143999
+144013
+144031
+144037
+144061
+144071
+144073
+144103
+144139
+144161
+144163
+144167
+144169
+144173
+144203
+144223
+144241
+144247
+144253
+144259
+144271
+144289
+144299
+144307
+144311
+144323
+144341
+144349
+144379
+144383
+144407
+144409
+144413
+144427
+144439
+144451
+144461
+144479
+144481
+144497
+144511
+144539
+144541
+144563
+144569
+144577
+144583
+144589
+144593
+144611
+144629
+144659
+144667
+144671
+144701
+144709
+144719
+144731
+144737
+144751
+144757
+144763
+144773
+144779
+144791
+144817
+144829
+144839
+144847
+144883
+144887
+144889
+144899
+144917
+144931
+144941
+144961
+144967
+144973
+144983
+145007
+145009
+145021
+145031
+145037
+145043
+145063
+145069
+145091
+145109
+145121
+145133
+145139
+145177
+145193
+145207
+145213
+145219
+145253
+145259
+145267
+145283
+145289
+145303
+145307
+145349
+145361
+145381
+145391
+145399
+145417
+145423
+145433
+145441
+145451
+145459
+145463
+145471
+145477
+145487
+145501
+145511
+145513
+145517
+145531
+145543
+145547
+145549
+145577
+145589
+145601
+145603
+145633
+145637
+145643
+145661
+145679
+145681
+145687
+145703
+145709
+145721
+145723
+145753
+145757
+145759
+145771
+145777
+145799
+145807
+145819
+145823
+145829
+145861
+145879
+145897
+145903
+145931
+145933
+145949
+145963
+145967
+145969
+145987
+145991
+146009
+146011
+146021
+146023
+146033
+146051
+146057
+146059
+146063
+146077
+146093
+146099
+146117
+146141
+146161
+146173
+146191
+146197
+146203
+146213
+146221
+146239
+146249
+146273
+146291
+146297
+146299
+146309
+146317
+146323
+146347
+146359
+146369
+146381
+146383
+146389
+146407
+146417
+146423
+146437
+146449
+146477
+146513
+146519
+146521
+146527
+146539
+146543
+146563
+146581
+146603
+146609
+146617
+146639
+146647
+146669
+146677
+146681
+146683
+146701
+146719
+146743
+146749
+146767
+146777
+146801
+146807
+146819
+146833
+146837
+146843
+146849
+146857
+146891
+146893
+146917
+146921
+146933
+146941
+146953
+146977
+146983
+146987
+146989
+147011
+147029
+147031
+147047
+147073
+147083
+147089
+147097
+147107
+147137
+147139
+147151
+147163
+147179
+147197
+147209
+147211
+147221
+147227
+147229
+147253
+147263
+147283
+147289
+147293
+147299
+147311
+147319
+147331
+147341
+147347
+147353
+147377
+147391
+147397
+147401
+147409
+147419
+147449
+147451
+147457
+147481
+147487
+147503
+147517
+147541
+147547
+147551
+147557
+147571
+147583
+147607
+147613
+147617
+147629
+147647
+147661
+147671
+147673
+147689
+147703
+147709
+147727
+147739
+147743
+147761
+147769
+147773
+147779
+147787
+147793
+147799
+147811
+147827
+147853
+147859
+147863
+147881
+147919
+147937
+147949
+147977
+147997
+148013
+148021
+148061
+148063
+148073
+148079
+148091
+148123
+148139
+148147
+148151
+148153
+148157
+148171
+148193
+148199
+148201
+148207
+148229
+148243
+148249
+148279
+148301
+148303
+148331
+148339
+148361
+148367
+148381
+148387
+148399
+148403
+148411
+148429
+148439
+148457
+148469
+148471
+148483
+148501
+148513
+148517
+148531
+148537
+148549
+148573
+148579
+148609
+148627
+148633
+148639
+148663
+148667
+148669
+148691
+148693
+148711
+148721
+148723
+148727
+148747
+148763
+148781
+148783
+148793
+148817
+148829
+148853
+148859
+148861
+148867
+148873
+148891
+148913
+148921
+148927
+148931
+148933
+148949
+148957
+148961
+148991
+148997
+149011
+149021
+149027
+149033
+149053
+149057
+149059
+149069
+149077
+149087
+149099
+149101
+149111
+149113
+149119
+149143
+149153
+149159
+149161
+149173
+149183
+149197
+149213
+149239
+149249
+149251
+149257
+149269
+149287
+149297
+149309
+149323
+149333
+149341
+149351
+149371
+149377
+149381
+149393
+149399
+149411
+149417
+149419
+149423
+149441
+149459
+149489
+149491
+149497
+149503
+149519
+149521
+149531
+149533
+149543
+149551
+149561
+149563
+149579
+149603
+149623
+149627
+149629
+149689
+149711
+149713
+149717
+149729
+149731
+149749
+149759
+149767
+149771
+149791
+149803
+149827
+149837
+149839
+149861
+149867
+149873
+149893
+149899
+149909
+149911
+149921
+149939
+149953
+149969
+149971
+149993
+150001
+150011
+150041
+150053
+150061
+150067
+150077
+150083
+150089
+150091
+150097
+150107
+150131
+150151
+150169
+150193
+150197
+150203
+150209
+150211
+150217
+150221
+150223
+150239
+150247
+150287
+150299
+150301
+150323
+150329
+150343
+150373
+150377
+150379
+150383
+150401
+150407
+150413
+150427
+150431
+150439
+150473
+150497
+150503
+150517
+150523
+150533
+150551
+150559
+150571
+150583
+150587
+150589
+150607
+150611
+150617
+150649
+150659
+150697
+150707
+150721
+150743
+150767
+150769
+150779
+150791
+150797
+150827
+150833
+150847
+150869
+150881
+150883
+150889
+150893
+150901
+150907
+150919
+150929
+150959
+150961
+150967
+150979
+150989
+150991
+151007
+151009
+151013
+151027
+151049
+151051
+151057
+151091
+151121
+151141
+151153
+151157
+151163
+151169
+151171
+151189
+151201
+151213
+151237
+151241
+151243
+151247
+151253
+151273
+151279
+151289
+151303
+151337
+151339
+151343
+151357
+151379
+151381
+151391
+151397
+151423
+151429
+151433
+151451
+151471
+151477
+151483
+151499
+151507
+151517
+151523
+151531
+151537
+151549
+151553
+151561
+151573
+151579
+151597
+151603
+151607
+151609
+151631
+151637
+151643
+151651
+151667
+151673
+151681
+151687
+151693
+151703
+151717
+151729
+151733
+151769
+151771
+151783
+151787
+151799
+151813
+151817
+151841
+151847
+151849
+151871
+151883
+151897
+151901
+151903
+151909
+151937
+151939
+151967
+151969
+152003
+152017
+152027
+152029
+152039
+152041
+152063
+152077
+152081
+152083
+152093
+152111
+152123
+152147
+152183
+152189
+152197
+152203
+152213
+152219
+152231
+152239
+152249
+152267
+152287
+152293
+152297
+152311
+152363
+152377
+152381
+152389
+152393
+152407
+152417
+152419
+152423
+152429
+152441
+152443
+152459
+152461
+152501
+152519
+152531
+152533
+152539
+152563
+152567
+152597
+152599
+152617
+152623
+152629
+152639
+152641
+152657
+152671
+152681
+152717
+152723
+152729
+152753
+152767
+152777
+152783
+152791
+152809
+152819
+152821
+152833
+152837
+152839
+152843
+152851
+152857
+152879
+152897
+152899
+152909
+152939
+152941
+152947
+152953
+152959
+152981
+152989
+152993
+153001
+153059
+153067
+153071
+153073
+153077
+153089
+153107
+153113
+153133
+153137
+153151
+153191
+153247
+153259
+153269
+153271
+153277
+153281
+153287
+153313
+153319
+153337
+153343
+153353
+153359
+153371
+153379
+153407
+153409
+153421
+153427
+153437
+153443
+153449
+153457
+153469
+153487
+153499
+153509
+153511
+153521
+153523
+153529
+153533
+153557
+153563
+153589
+153607
+153611
+153623
+153641
+153649
+153689
+153701
+153719
+153733
+153739
+153743
+153749
+153757
+153763
+153817
+153841
+153871
+153877
+153887
+153889
+153911
+153913
+153929
+153941
+153947
+153949
+153953
+153991
+153997
+154001
+154027
+154043
+154057
+154061
+154067
+154073
+154079
+154081
+154087
+154097
+154111
+154127
+154153
+154157
+154159
+154181
+154183
+154211
+154213
+154229
+154243
+154247
+154267
+154277
+154279
+154291
+154303
+154313
+154321
+154333
+154339
+154351
+154369
+154373
+154387
+154409
+154417
+154423
+154439
+154459
+154487
+154493
+154501
+154523
+154543
+154571
+154573
+154579
+154589
+154591
+154613
+154619
+154621
+154643
+154667
+154669
+154681
+154691
+154699
+154723
+154727
+154733
+154747
+154753
+154769
+154787
+154789
+154799
+154807
+154823
+154841
+154849
+154871
+154873
+154877
+154883
+154897
+154927
+154933
+154937
+154943
+154981
+154991
+155003
+155009
+155017
+155027
+155047
+155069
+155081
+155083
+155087
+155119
+155137
+155153
+155161
+155167
+155171
+155191
+155201
+155203
+155209
+155219
+155231
+155251
+155269
+155291
+155299
+155303
+155317
+155327
+155333
+155371
+155377
+155381
+155383
+155387
+155399
+155413
+155423
+155443
+155453
+155461
+155473
+155501
+155509
+155521
+155537
+155539
+155557
+155569
+155579
+155581
+155593
+155599
+155609
+155621
+155627
+155653
+155657
+155663
+155671
+155689
+155693
+155699
+155707
+155717
+155719
+155723
+155731
+155741
+155747
+155773
+155777
+155783
+155797
+155801
+155809
+155821
+155833
+155849
+155851
+155861
+155863
+155887
+155891
+155893
+155921
+156007
+156011
+156019
+156041
+156059
+156061
+156071
+156089
+156109
+156119
+156127
+156131
+156139
+156151
+156157
+156217
+156227
+156229
+156241
+156253
+156257
+156259
+156269
+156307
+156319
+156329
+156347
+156353
+156361
+156371
+156419
+156421
+156437
+156467
+156487
+156491
+156493
+156511
+156521
+156539
+156577
+156589
+156593
+156601
+156619
+156623
+156631
+156641
+156659
+156671
+156677
+156679
+156683
+156691
+156703
+156707
+156719
+156727
+156733
+156749
+156781
+156797
+156799
+156817
+156823
+156833
+156841
+156887
+156899
+156901
+156913
+156941
+156943
+156967
+156971
+156979
+157007
+157013
+157019
+157037
+157049
+157051
+157057
+157061
+157081
+157103
+157109
+157127
+157133
+157141
+157163
+157177
+157181
+157189
+157207
+157211
+157217
+157219
+157229
+157231
+157243
+157247
+157253
+157259
+157271
+157273
+157277
+157279
+157291
+157303
+157307
+157321
+157327
+157349
+157351
+157363
+157393
+157411
+157427
+157429
+157433
+157457
+157477
+157483
+157489
+157513
+157519
+157523
+157543
+157559
+157561
+157571
+157579
+157627
+157637
+157639
+157649
+157667
+157669
+157679
+157721
+157733
+157739
+157747
+157769
+157771
+157793
+157799
+157813
+157823
+157831
+157837
+157841
+157867
+157877
+157889
+157897
+157901
+157907
+157931
+157933
+157951
+157991
+157999
+158003
+158009
+158017
+158029
+158047
+158071
+158077
+158113
+158129
+158141
+158143
+158161
+158189
+158201
+158209
+158227
+158231
+158233
+158243
+158261
+158269
+158293
+158303
+158329
+158341
+158351
+158357
+158359
+158363
+158371
+158393
+158407
+158419
+158429
+158443
+158449
+158489
+158507
+158519
+158527
+158537
+158551
+158563
+158567
+158573
+158581
+158591
+158597
+158611
+158617
+158621
+158633
+158647
+158657
+158663
+158699
+158731
+158747
+158749
+158759
+158761
+158771
+158777
+158791
+158803
+158843
+158849
+158863
+158867
+158881
+158909
+158923
+158927
+158941
+158959
+158981
+158993
+159013
+159017
+159023
+159059
+159073
+159079
+159097
+159113
+159119
+159157
+159161
+159167
+159169
+159179
+159191
+159193
+159199
+159209
+159223
+159227
+159233
+159287
+159293
+159311
+159319
+159337
+159347
+159349
+159361
+159389
+159403
+159407
+159421
+159431
+159437
+159457
+159463
+159469
+159473
+159491
+159499
+159503
+159521
+159539
+159541
+159553
+159563
+159569
+159571
+159589
+159617
+159623
+159629
+159631
+159667
+159671
+159673
+159683
+159697
+159701
+159707
+159721
+159737
+159739
+159763
+159769
+159773
+159779
+159787
+159791
+159793
+159799
+159811
+159833
+159839
+159853
+159857
+159869
+159871
+159899
+159911
+159931
+159937
+159977
+159979
+160001
+160009
+160019
+160031
+160033
+160049
+160073
+160079
+160081
+160087
+160091
+160093
+160117
+160141
+160159
+160163
+160169
+160183
+160201
+160207
+160217
+160231
+160243
+160253
+160309
+160313
+160319
+160343
+160357
+160367
+160373
+160387
+160397
+160403
+160409
+160423
+160441
+160453
+160481
+160483
+160499
+160507
+160541
+160553
+160579
+160583
+160591
+160603
+160619
+160621
+160627
+160637
+160639
+160649
+160651
+160663
+160669
+160681
+160687
+160697
+160709
+160711
+160723
+160739
+160751
+160753
+160757
+160781
+160789
+160807
+160813
+160817
+160829
+160841
+160861
+160877
+160879
+160883
+160903
+160907
+160933
+160967
+160969
+160981
+160997
+161009
+161017
+161033
+161039
+161047
+161053
+161059
+161071
+161087
+161093
+161123
+161137
+161141
+161149
+161159
+161167
+161201
+161221
+161233
+161237
+161263
+161267
+161281
+161303
+161309
+161323
+161333
+161339
+161341
+161363
+161377
+161387
+161407
+161411
+161453
+161459
+161461
+161471
+161503
+161507
+161521
+161527
+161531
+161543
+161561
+161563
+161569
+161573
+161591
+161599
+161611
+161627
+161639
+161641
+161659
+161683
+161717
+161729
+161731
+161741
+161743
+161753
+161761
+161771
+161773
+161779
+161783
+161807
+161831
+161839
+161869
+161873
+161879
+161881
+161911
+161921
+161923
+161947
+161957
+161969
+161971
+161977
+161983
+161999
+162007
+162011
+162017
+162053
+162059
+162079
+162091
+162109
+162119
+162143
+162209
+162221
+162229
+162251
+162257
+162263
+162269
+162277
+162287
+162289
+162293
+162343
+162359
+162389
+162391
+162413
+162419
+162439
+162451
+162457
+162473
+162493
+162499
+162517
+162523
+162527
+162529
+162553
+162557
+162563
+162577
+162593
+162601
+162611
+162623
+162629
+162641
+162649
+162671
+162677
+162683
+162691
+162703
+162709
+162713
+162727
+162731
+162739
+162749
+162751
+162779
+162787
+162791
+162821
+162823
+162829
+162839
+162847
+162853
+162859
+162881
+162889
+162901
+162907
+162917
+162937
+162947
+162971
+162973
+162989
+162997
+163003
+163019
+163021
+163027
+163061
+163063
+163109
+163117
+163127
+163129
+163147
+163151
+163169
+163171
+163181
+163193
+163199
+163211
+163223
+163243
+163249
+163259
+163307
+163309
+163321
+163327
+163337
+163351
+163363
+163367
+163393
+163403
+163409
+163411
+163417
+163433
+163469
+163477
+163481
+163483
+163487
+163517
+163543
+163561
+163567
+163573
+163601
+163613
+163621
+163627
+163633
+163637
+163643
+163661
+163673
+163679
+163697
+163729
+163733
+163741
+163753
+163771
+163781
+163789
+163811
+163819
+163841
+163847
+163853
+163859
+163861
+163871
+163883
+163901
+163909
+163927
+163973
+163979
+163981
+163987
+163991
+163993
+163997
+164011
+164023
+164039
+164051
+164057
+164071
+164089
+164093
+164113
+164117
+164147
+164149
+164173
+164183
+164191
+164201
+164209
+164231
+164233
+164239
+164249
+164251
+164267
+164279
+164291
+164299
+164309
+164321
+164341
+164357
+164363
+164371
+164377
+164387
+164413
+164419
+164429
+164431
+164443
+164447
+164449
+164471
+164477
+164503
+164513
+164531
+164569
+164581
+164587
+164599
+164617
+164621
+164623
+164627
+164653
+164663
+164677
+164683
+164701
+164707
+164729
+164743
+164767
+164771
+164789
+164809
+164821
+164831
+164837
+164839
+164881
+164893
+164911
+164953
+164963
+164987
+164999
+165001
+165037
+165041
+165047
+165049
+165059
+165079
+165083
+165089
+165103
+165133
+165161
+165173
+165181
+165203
+165211
+165229
+165233
+165247
+165287
+165293
+165311
+165313
+165317
+165331
+165343
+165349
+165367
+165379
+165383
+165391
+165397
+165437
+165443
+165449
+165457
+165463
+165469
+165479
+165511
+165523
+165527
+165533
+165541
+165551
+165553
+165559
+165569
+165587
+165589
+165601
+165611
+165617
+165653
+165667
+165673
+165701
+165703
+165707
+165709
+165713
+165719
+165721
+165749
+165779
+165799
+165811
+165817
+165829
+165833
+165857
+165877
+165883
+165887
+165901
+165931
+165941
+165947
+165961
+165983
+166013
+166021
+166027
+166031
+166043
+166063
+166081
+166099
+166147
+166151
+166157
+166169
+166183
+166189
+166207
+166219
+166237
+166247
+166259
+166273
+166289
+166297
+166301
+166303
+166319
+166349
+166351
+166357
+166363
+166393
+166399
+166403
+166409
+166417
+166429
+166457
+166471
+166487
+166541
+166561
+166567
+166571
+166597
+166601
+166603
+166609
+166613
+166619
+166627
+166631
+166643
+166657
+166667
+166669
+166679
+166693
+166703
+166723
+166739
+166741
+166781
+166783
+166799
+166807
+166823
+166841
+166843
+166847
+166849
+166853
+166861
+166867
+166871
+166909
+166919
+166931
+166949
+166967
+166973
+166979
+166987
+167009
+167017
+167021
+167023
+167033
+167039
+167047
+167051
+167071
+167077
+167081
+167087
+167099
+167107
+167113
+167117
+167119
+167149
+167159
+167173
+167177
+167191
+167197
+167213
+167221
+167249
+167261
+167267
+167269
+167309
+167311
+167317
+167329
+167339
+167341
+167381
+167393
+167407
+167413
+167423
+167429
+167437
+167441
+167443
+167449
+167471
+167483
+167491
+167521
+167537
+167543
+167593
+167597
+167611
+167621
+167623
+167627
+167633
+167641
+167663
+167677
+167683
+167711
+167729
+167747
+167759
+167771
+167777
+167779
+167801
+167809
+167861
+167863
+167873
+167879
+167887
+167891
+167899
+167911
+167917
+167953
+167971
+167987
+168013
+168023
+168029
+168037
+168043
+168067
+168071
+168083
+168089
+168109
+168127
+168143
+168151
+168193
+168197
+168211
+168227
+168247
+168253
+168263
+168269
+168277
+168281
+168293
+168323
+168331
+168347
+168353
+168391
+168409
+168433
+168449
+168451
+168457
+168463
+168481
+168491
+168499
+168523
+168527
+168533
+168541
+168559
+168599
+168601
+168617
+168629
+168631
+168643
+168673
+168677
+168697
+168713
+168719
+168731
+168737
+168743
+168761
+168769
+168781
+168803
+168851
+168863
+168869
+168887
+168893
+168899
+168901
+168913
+168937
+168943
+168977
+168991
+169003
+169007
+169009
+169019
+169049
+169063
+169067
+169069
+169079
+169093
+169097
+169111
+169129
+169151
+169159
+169177
+169181
+169199
+169217
+169219
+169241
+169243
+169249
+169259
+169283
+169307
+169313
+169319
+169321
+169327
+169339
+169343
+169361
+169369
+169373
+169399
+169409
+169427
+169457
+169471
+169483
+169489
+169493
+169501
+169523
+169531
+169553
+169567
+169583
+169591
+169607
+169627
+169633
+169639
+169649
+169657
+169661
+169667
+169681
+169691
+169693
+169709
+169733
+169751
+169753
+169769
+169777
+169783
+169789
+169817
+169823
+169831
+169837
+169843
+169859
+169889
+169891
+169909
+169913
+169919
+169933
+169937
+169943
+169951
+169957
+169987
+169991
+170003
+170021
+170029
+170047
+170057
+170063
+170081
+170099
+170101
+170111
+170123
+170141
+170167
+170179
+170189
+170197
+170207
+170213
+170227
+170231
+170239
+170243
+170249
+170263
+170267
+170279
+170293
+170299
+170327
+170341
+170347
+170351
+170353
+170363
+170369
+170371
+170383
+170389
+170393
+170413
+170441
+170447
+170473
+170483
+170497
+170503
+170509
+170537
+170539
+170551
+170557
+170579
+170603
+170609
+170627
+170633
+170641
+170647
+170669
+170689
+170701
+170707
+170711
+170741
+170749
+170759
+170761
+170767
+170773
+170777
+170801
+170809
+170813
+170827
+170837
+170843
+170851
+170857
+170873
+170881
+170887
+170899
+170921
+170927
+170953
+170957
+170971
+171007
+171023
+171029
+171043
+171047
+171049
+171053
+171077
+171079
+171091
+171103
+171131
+171161
+171163
+171167
+171169
+171179
+171203
+171233
+171251
+171253
+171263
+171271
+171293
+171299
+171317
+171329
+171341
+171383
+171401
+171403
+171427
+171439
+171449
+171467
+171469
+171473
+171481
+171491
+171517
+171529
+171539
+171541
+171553
+171559
+171571
+171583
+171617
+171629
+171637
+171641
+171653
+171659
+171671
+171673
+171679
+171697
+171707
+171713
+171719
+171733
+171757
+171761
+171763
+171793
+171799
+171803
+171811
+171823
+171827
+171851
+171863
+171869
+171877
+171881
+171889
+171917
+171923
+171929
+171937
+171947
+172001
+172009
+172021
+172027
+172031
+172049
+172069
+172079
+172093
+172097
+172127
+172147
+172153
+172157
+172169
+172171
+172181
+172199
+172213
+172217
+172219
+172223
+172243
+172259
+172279
+172283
+172297
+172307
+172313
+172321
+172331
+172343
+172351
+172357
+172373
+172399
+172411
+172421
+172423
+172427
+172433
+172439
+172441
+172489
+172507
+172517
+172519
+172541
+172553
+172561
+172573
+172583
+172589
+172597
+172603
+172607
+172619
+172633
+172643
+172649
+172657
+172663
+172673
+172681
+172687
+172709
+172717
+172721
+172741
+172751
+172759
+172787
+172801
+172807
+172829
+172849
+172853
+172859
+172867
+172871
+172877
+172883
+172933
+172969
+172973
+172981
+172987
+172993
+172999
+173021
+173023
+173039
+173053
+173059
+173081
+173087
+173099
+173137
+173141
+173149
+173177
+173183
+173189
+173191
+173207
+173209
+173219
+173249
+173263
+173267
+173273
+173291
+173293
+173297
+173309
+173347
+173357
+173359
+173429
+173431
+173473
+173483
+173491
+173497
+173501
+173531
+173539
+173543
+173549
+173561
+173573
+173599
+173617
+173629
+173647
+173651
+173659
+173669
+173671
+173683
+173687
+173699
+173707
+173713
+173729
+173741
+173743
+173773
+173777
+173779
+173783
+173807
+173819
+173827
+173839
+173851
+173861
+173867
+173891
+173897
+173909
+173917
+173923
+173933
+173969
+173977
+173981
+173993
+174007
+174017
+174019
+174047
+174049
+174061
+174067
+174071
+174077
+174079
+174091
+174101
+174121
+174137
+174143
+174149
+174157
+174169
+174197
+174221
+174241
+174257
+174259
+174263
+174281
+174289
+174299
+174311
+174329
+174331
+174337
+174347
+174367
+174389
+174407
+174413
+174431
+174443
+174457
+174467
+174469
+174481
+174487
+174491
+174527
+174533
+174569
+174571
+174583
+174599
+174613
+174617
+174631
+174637
+174649
+174653
+174659
+174673
+174679
+174703
+174721
+174737
+174749
+174761
+174763
+174767
+174773
+174799
+174821
+174829
+174851
+174859
+174877
+174893
+174901
+174907
+174917
+174929
+174931
+174943
+174959
+174989
+174991
+175003
+175013
+175039
+175061
+175067
+175069
+175079
+175081
+175103
+175129
+175141
+175211
+175229
+175261
+175267
+175277
+175291
+175303
+175309
+175327
+175333
+175349
+175361
+175391
+175393
+175403
+175411
+175433
+175447
+175453
+175463
+175481
+175493
+175499
+175519
+175523
+175543
+175573
+175601
+175621
+175631
+175633
+175649
+175663
+175673
+175687
+175691
+175699
+175709
+175723
+175727
+175753
+175757
+175759
+175781
+175783
+175811
+175829
+175837
+175843
+175853
+175859
+175873
+175891
+175897
+175909
+175919
+175937
+175939
+175949
+175961
+175963
+175979
+175991
+175993
+176017
+176021
+176023
+176041
+176047
+176051
+176053
+176063
+176081
+176087
+176089
+176123
+176129
+176153
+176159
+176161
+176179
+176191
+176201
+176207
+176213
+176221
+176227
+176237
+176243
+176261
+176299
+176303
+176317
+176321
+176327
+176329
+176333
+176347
+176353
+176357
+176369
+176383
+176389
+176401
+176413
+176417
+176419
+176431
+176459
+176461
+176467
+176489
+176497
+176503
+176507
+176509
+176521
+176531
+176537
+176549
+176551
+176557
+176573
+176591
+176597
+176599
+176609
+176611
+176629
+176641
+176651
+176677
+176699
+176711
+176713
+176741
+176747
+176753
+176777
+176779
+176789
+176791
+176797
+176807
+176809
+176819
+176849
+176857
+176887
+176899
+176903
+176921
+176923
+176927
+176933
+176951
+176977
+176983
+176989
+177007
+177011
+177013
+177019
+177043
+177091
+177101
+177109
+177113
+177127
+177131
+177167
+177173
+177209
+177211
+177217
+177223
+177239
+177257
+177269
+177283
+177301
+177319
+177323
+177337
+177347
+177379
+177383
+177409
+177421
+177427
+177431
+177433
+177467
+177473
+177481
+177487
+177493
+177511
+177533
+177539
+177553
+177589
+177601
+177623
+177647
+177677
+177679
+177691
+177739
+177743
+177761
+177763
+177787
+177791
+177797
+177811
+177823
+177839
+177841
+177883
+177887
+177889
+177893
+177907
+177913
+177917
+177929
+177943
+177949
+177953
+177967
+177979
+178001
+178021
+178037
+178039
+178067
+178069
+178091
+178093
+178103
+178117
+178127
+178141
+178151
+178169
+178183
+178187
+178207
+178223
+178231
+178247
+178249
+178259
+178261
+178289
+178301
+178307
+178327
+178333
+178349
+178351
+178361
+178393
+178397
+178403
+178417
+178439
+178441
+178447
+178469
+178481
+178487
+178489
+178501
+178513
+178531
+178537
+178559
+178561
+178567
+178571
+178597
+178601
+178603
+178609
+178613
+178621
+178627
+178639
+178643
+178681
+178691
+178693
+178697
+178753
+178757
+178781
+178793
+178799
+178807
+178813
+178817
+178819
+178831
+178853
+178859
+178873
+178877
+178889
+178897
+178903
+178907
+178909
+178921
+178931
+178933
+178939
+178951
+178973
+178987
+179021
+179029
+179033
+179041
+179051
+179057
+179083
+179089
+179099
+179107
+179111
+179119
+179143
+179161
+179167
+179173
+179203
+179209
+179213
+179233
+179243
+179261
+179269
+179281
+179287
+179317
+179321
+179327
+179351
+179357
+179369
+179381
+179383
+179393
+179407
+179411
+179429
+179437
+179441
+179453
+179461
+179471
+179479
+179483
+179497
+179519
+179527
+179533
+179549
+179563
+179573
+179579
+179581
+179591
+179593
+179603
+179623
+179633
+179651
+179657
+179659
+179671
+179687
+179689
+179693
+179717
+179719
+179737
+179743
+179749
+179779
+179801
+179807
+179813
+179819
+179821
+179827
+179833
+179849
+179897
+179899
+179903
+179909
+179917
+179923
+179939
+179947
+179951
+179953
+179957
+179969
+179981
+179989
+179999
+180001
+180007
+180023
+180043
+180053
+180071
+180073
+180077
+180097
+180137
+180161
+180179
+180181
+180211
+180221
+180233
+180239
+180241
+180247
+180259
+180263
+180281
+180287
+180289
+180307
+180311
+180317
+180331
+180337
+180347
+180361
+180371
+180379
+180391
+180413
+180419
+180437
+180463
+180473
+180491
+180497
+180503
+180511
+180533
+180539
+180541
+180547
+180563
+180569
+180617
+180623
+180629
+180647
+180667
+180679
+180701
+180731
+180749
+180751
+180773
+180779
+180793
+180797
+180799
+180811
+180847
+180871
+180883
+180907
+180949
+180959
+181001
+181003
+181019
+181031
+181039
+181061
+181063
+181081
+181087
+181123
+181141
+181157
+181183
+181193
+181199
+181201
+181211
+181213
+181219
+181243
+181253
+181273
+181277
+181283
+181297
+181301
+181303
+181361
+181387
+181397
+181399
+181409
+181421
+181439
+181457
+181459
+181499
+181501
+181513
+181523
+181537
+181549
+181553
+181603
+181607
+181609
+181619
+181639
+181667
+181669
+181693
+181711
+181717
+181721
+181729
+181739
+181751
+181757
+181759
+181763
+181777
+181787
+181789
+181813
+181837
+181871
+181873
+181889
+181891
+181903
+181913
+181919
+181927
+181931
+181943
+181957
+181967
+181981
+181997
+182009
+182011
+182027
+182029
+182041
+182047
+182057
+182059
+182089
+182099
+182101
+182107
+182111
+182123
+182129
+182131
+182141
+182159
+182167
+182177
+182179
+182201
+182209
+182233
+182239
+182243
+182261
+182279
+182297
+182309
+182333
+182339
+182341
+182353
+182387
+182389
+182417
+182423
+182431
+182443
+182453
+182467
+182471
+182473
+182489
+182503
+182509
+182519
+182537
+182549
+182561
+182579
+182587
+182593
+182599
+182603
+182617
+182627
+182639
+182641
+182653
+182657
+182659
+182681
+182687
+182701
+182711
+182713
+182747
+182773
+182779
+182789
+182803
+182813
+182821
+182839
+182851
+182857
+182867
+182887
+182893
+182899
+182921
+182927
+182929
+182933
+182953
+182957
+182969
+182981
+182999
+183023
+183037
+183041
+183047
+183059
+183067
+183089
+183091
+183119
+183151
+183167
+183191
+183203
+183247
+183259
+183263
+183283
+183289
+183299
+183301
+183307
+183317
+183319
+183329
+183343
+183349
+183361
+183373
+183377
+183383
+183389
+183397
+183437
+183439
+183451
+183461
+183473
+183479
+183487
+183497
+183499
+183503
+183509
+183511
+183523
+183527
+183569
+183571
+183577
+183581
+183587
+183593
+183611
+183637
+183661
+183683
+183691
+183697
+183707
+183709
+183713
+183761
+183763
+183797
+183809
+183823
+183829
+183871
+183877
+183881
+183907
+183917
+183919
+183943
+183949
+183959
+183971
+183973
+183979
+184003
+184007
+184013
+184031
+184039
+184043
+184057
+184073
+184081
+184087
+184111
+184117
+184133
+184153
+184157
+184181
+184187
+184189
+184199
+184211
+184231
+184241
+184259
+184271
+184273
+184279
+184291
+184309
+184321
+184333
+184337
+184351
+184369
+184409
+184417
+184441
+184447
+184463
+184477
+184487
+184489
+184511
+184517
+184523
+184553
+184559
+184567
+184571
+184577
+184607
+184609
+184627
+184631
+184633
+184649
+184651
+184669
+184687
+184693
+184703
+184711
+184721
+184727
+184733
+184753
+184777
+184823
+184829
+184831
+184837
+184843
+184859
+184879
+184901
+184903
+184913
+184949
+184957
+184967
+184969
+184993
+184997
+184999
+185021
+185027
+185051
+185057
+185063
+185069
+185071
+185077
+185089
+185099
+185123
+185131
+185137
+185149
+185153
+185161
+185167
+185177
+185183
+185189
+185221
+185233
+185243
+185267
+185291
+185299
+185303
+185309
+185323
+185327
+185359
+185363
+185369
+185371
+185401
+185429
+185441
+185467
+185477
+185483
+185491
+185519
+185527
+185531
+185533
+185539
+185543
+185551
+185557
+185567
+185569
+185593
+185599
+185621
+185641
+185651
+185677
+185681
+185683
+185693
+185699
+185707
+185711
+185723
+185737
+185747
+185749
+185753
+185767
+185789
+185797
+185813
+185819
+185821
+185831
+185833
+185849
+185869
+185873
+185893
+185897
+185903
+185917
+185923
+185947
+185951
+185957
+185959
+185971
+185987
+185993
+186007
+186013
+186019
+186023
+186037
+186041
+186049
+186071
+186097
+186103
+186107
+186113
+186119
+186149
+186157
+186161
+186163
+186187
+186191
+186211
+186227
+186229
+186239
+186247
+186253
+186259
+186271
+186283
+186299
+186301
+186311
+186317
+186343
+186377
+186379
+186391
+186397
+186419
+186437
+186451
+186469
+186479
+186481
+186551
+186569
+186581
+186583
+186587
+186601
+186619
+186629
+186647
+186649
+186653
+186671
+186679
+186689
+186701
+186707
+186709
+186727
+186733
+186743
+186757
+186761
+186763
+186773
+186793
+186799
+186841
+186859
+186869
+186871
+186877
+186883
+186889
+186917
+186947
+186959
+187003
+187009
+187027
+187043
+187049
+187067
+187069
+187073
+187081
+187091
+187111
+187123
+187127
+187129
+187133
+187139
+187141
+187163
+187171
+187177
+187181
+187189
+187193
+187211
+187217
+187219
+187223
+187237
+187273
+187277
+187303
+187337
+187339
+187349
+187361
+187367
+187373
+187379
+187387
+187393
+187409
+187417
+187423
+187433
+187441
+187463
+187469
+187471
+187477
+187507
+187513
+187531
+187547
+187559
+187573
+187597
+187631
+187633
+187637
+187639
+187651
+187661
+187669
+187687
+187699
+187711
+187721
+187751
+187763
+187787
+187793
+187823
+187843
+187861
+187871
+187877
+187883
+187897
+187907
+187909
+187921
+187927
+187931
+187951
+187963
+187973
+187987
+188011
+188017
+188021
+188029
+188107
+188137
+188143
+188147
+188159
+188171
+188179
+188189
+188197
+188249
+188261
+188273
+188281
+188291
+188299
+188303
+188311
+188317
+188323
+188333
+188351
+188359
+188369
+188389
+188401
+188407
+188417
+188431
+188437
+188443
+188459
+188473
+188483
+188491
+188519
+188527
+188533
+188563
+188579
+188603
+188609
+188621
+188633
+188653
+188677
+188681
+188687
+188693
+188701
+188707
+188711
+188719
+188729
+188753
+188767
+188779
+188791
+188801
+188827
+188831
+188833
+188843
+188857
+188861
+188863
+188869
+188891
+188911
+188927
+188933
+188939
+188941
+188953
+188957
+188983
+188999
+189011
+189017
+189019
+189041
+189043
+189061
+189067
+189127
+189139
+189149
+189151
+189169
+189187
+189199
+189223
+189229
+189239
+189251
+189253
+189257
+189271
+189307
+189311
+189337
+189347
+189349
+189353
+189361
+189377
+189389
+189391
+189401
+189407
+189421
+189433
+189437
+189439
+189463
+189467
+189473
+189479
+189491
+189493
+189509
+189517
+189523
+189529
+189547
+189559
+189583
+189593
+189599
+189613
+189617
+189619
+189643
+189653
+189661
+189671
+189691
+189697
+189701
+189713
+189733
+189743
+189757
+189767
+189797
+189799
+189817
+189823
+189851
+189853
+189859
+189877
+189881
+189887
+189901
+189913
+189929
+189947
+189949
+189961
+189967
+189977
+189983
+189989
+189997
+190027
+190031
+190051
+190063
+190093
+190097
+190121
+190129
+190147
+190159
+190181
+190207
+190243
+190249
+190261
+190271
+190283
+190297
+190301
+190313
+190321
+190331
+190339
+190357
+190367
+190369
+190387
+190391
+190403
+190409
+190471
+190507
+190523
+190529
+190537
+190543
+190573
+190577
+190579
+190583
+190591
+190607
+190613
+190633
+190639
+190649
+190657
+190667
+190669
+190699
+190709
+190711
+190717
+190753
+190759
+190763
+190769
+190783
+190787
+190793
+190807
+190811
+190823
+190829
+190837
+190843
+190871
+190889
+190891
+190901
+190909
+190913
+190921
+190979
+190997
+191021
+191027
+191033
+191039
+191047
+191057
+191071
+191089
+191099
+191119
+191123
+191137
+191141
+191143
+191161
+191173
+191189
+191227
+191231
+191237
+191249
+191251
+191281
+191297
+191299
+191339
+191341
+191353
+191413
+191441
+191447
+191449
+191453
+191459
+191461
+191467
+191473
+191491
+191497
+191507
+191509
+191519
+191531
+191533
+191537
+191551
+191561
+191563
+191579
+191599
+191621
+191627
+191657
+191669
+191671
+191677
+191689
+191693
+191699
+191707
+191717
+191747
+191749
+191773
+191783
+191791
+191801
+191803
+191827
+191831
+191833
+191837
+191861
+191899
+191903
+191911
+191929
+191953
+191969
+191977
+191999
+192007
+192013
+192029
+192037
+192043
+192047
+192053
+192091
+192097
+192103
+192113
+192121
+192133
+192149
+192161
+192173
+192187
+192191
+192193
+192229
+192233
+192239
+192251
+192259
+192263
+192271
+192307
+192317
+192319
+192323
+192341
+192343
+192347
+192373
+192377
+192383
+192391
+192407
+192431
+192461
+192463
+192497
+192499
+192529
+192539
+192547
+192553
+192557
+192571
+192581
+192583
+192587
+192601
+192611
+192613
+192617
+192629
+192631
+192637
+192667
+192677
+192697
+192737
+192743
+192749
+192757
+192767
+192781
+192791
+192799
+192811
+192817
+192833
+192847
+192853
+192859
+192877
+192883
+192887
+192889
+192917
+192923
+192931
+192949
+192961
+192971
+192977
+192979
+192991
+193003
+193009
+193013
+193031
+193043
+193051
+193057
+193073
+193093
+193133
+193139
+193147
+193153
+193163
+193181
+193183
+193189
+193201
+193243
+193247
+193261
+193283
+193301
+193327
+193337
+193357
+193367
+193373
+193379
+193381
+193387
+193393
+193423
+193433
+193441
+193447
+193451
+193463
+193469
+193493
+193507
+193513
+193541
+193549
+193559
+193573
+193577
+193597
+193601
+193603
+193607
+193619
+193649
+193663
+193679
+193703
+193723
+193727
+193741
+193751
+193757
+193763
+193771
+193789
+193793
+193799
+193811
+193813
+193841
+193847
+193859
+193861
+193871
+193873
+193877
+193883
+193891
+193937
+193939
+193943
+193951
+193957
+193979
+193993
+194003
+194017
+194027
+194057
+194069
+194071
+194083
+194087
+194093
+194101
+194113
+194119
+194141
+194149
+194167
+194179
+194197
+194203
+194239
+194263
+194267
+194269
+194309
+194323
+194353
+194371
+194377
+194413
+194431
+194443
+194471
+194479
+194483
+194507
+194521
+194527
+194543
+194569
+194581
+194591
+194609
+194647
+194653
+194659
+194671
+194681
+194683
+194687
+194707
+194713
+194717
+194723
+194729
+194749
+194767
+194771
+194809
+194813
+194819
+194827
+194839
+194861
+194863
+194867
+194869
+194891
+194899
+194911
+194917
+194933
+194963
+194977
+194981
+194989
+195023
+195029
+195043
+195047
+195049
+195053
+195071
+195077
+195089
+195103
+195121
+195127
+195131
+195137
+195157
+195161
+195163
+195193
+195197
+195203
+195229
+195241
+195253
+195259
+195271
+195277
+195281
+195311
+195319
+195329
+195341
+195343
+195353
+195359
+195389
+195401
+195407
+195413
+195427
+195443
+195457
+195469
+195479
+195493
+195497
+195511
+195527
+195539
+195541
+195581
+195593
+195599
+195659
+195677
+195691
+195697
+195709
+195731
+195733
+195737
+195739
+195743
+195751
+195761
+195781
+195787
+195791
+195809
+195817
+195863
+195869
+195883
+195887
+195893
+195907
+195913
+195919
+195929
+195931
+195967
+195971
+195973
+195977
+195991
+195997
+196003
+196033
+196039
+196043
+196051
+196073
+196081
+196087
+196111
+196117
+196139
+196159
+196169
+196171
+196177
+196181
+196187
+196193
+196201
+196247
+196271
+196277
+196279
+196291
+196303
+196307
+196331
+196337
+196379
+196387
+196429
+196439
+196453
+196459
+196477
+196499
+196501
+196519
+196523
+196541
+196543
+196549
+196561
+196579
+196583
+196597
+196613
+196643
+196657
+196661
+196663
+196681
+196687
+196699
+196709
+196717
+196727
+196739
+196751
+196769
+196771
+196799
+196817
+196831
+196837
+196853
+196871
+196873
+196879
+196901
+196907
+196919
+196927
+196961
+196991
+196993
+197003
+197009
+197023
+197033
+197059
+197063
+197077
+197083
+197089
+197101
+197117
+197123
+197137
+197147
+197159
+197161
+197203
+197207
+197221
+197233
+197243
+197257
+197261
+197269
+197273
+197279
+197293
+197297
+197299
+197311
+197339
+197341
+197347
+197359
+197369
+197371
+197381
+197383
+197389
+197419
+197423
+197441
+197453
+197479
+197507
+197521
+197539
+197551
+197567
+197569
+197573
+197597
+197599
+197609
+197621
+197641
+197647
+197651
+197677
+197683
+197689
+197699
+197711
+197713
+197741
+197753
+197759
+197767
+197773
+197779
+197803
+197807
+197831
+197837
+197887
+197891
+197893
+197909
+197921
+197927
+197933
+197947
+197957
+197959
+197963
+197969
+197971
+198013
+198017
+198031
+198043
+198047
+198073
+198083
+198091
+198097
+198109
+198127
+198139
+198173
+198179
+198193
+198197
+198221
+198223
+198241
+198251
+198257
+198259
+198277
+198281
+198301
+198313
+198323
+198337
+198347
+198349
+198377
+198391
+198397
+198409
+198413
+198427
+198437
+198439
+198461
+198463
+198469
+198479
+198491
+198503
+198529
+198533
+198553
+198571
+198589
+198593
+198599
+198613
+198623
+198637
+198641
+198647
+198659
+198673
+198689
+198701
+198719
+198733
+198761
+198769
+198811
+198817
+198823
+198827
+198829
+198833
+198839
+198841
+198851
+198859
+198899
+198901
+198929
+198937
+198941
+198943
+198953
+198959
+198967
+198971
+198977
+198997
+199021
+199033
+199037
+199039
+199049
+199081
+199103
+199109
+199151
+199153
+199181
+199193
+199207
+199211
+199247
+199261
+199267
+199289
+199313
+199321
+199337
+199343
+199357
+199373
+199379
+199399
+199403
+199411
+199417
+199429
+199447
+199453
+199457
+199483
+199487
+199489
+199499
+199501
+199523
+199559
+199567
+199583
+199601
+199603
+199621
+199637
+199657
+199669
+199673
+199679
+199687
+199697
+199721
+199729
+199739
+199741
+199751
+199753
+199777
+199783
+199799
+199807
+199811
+199813
+199819
+199831
+199853
+199873
+199877
+199889
+199909
+199921
+199931
+199933
+199961
+199967
+199999
+200003
+200009
+200017
+200023
+200029
+200033
+200041
+200063
+200087
+200117
+200131
+200153
+200159
+200171
+200177
+200183
+200191
+200201
+200227
+200231
+200237
+200257
+200273
+200293
+200297
+200323
+200329
+200341
+200351
+200357
+200363
+200371
+200381
+200383
+200401
+200407
+200437
+200443
+200461
+200467
+200483
+200513
+200569
+200573
+200579
+200587
+200591
+200597
+200609
+200639
+200657
+200671
+200689
+200699
+200713
+200723
+200731
+200771
+200779
+200789
+200797
+200807
+200843
+200861
+200867
+200869
+200881
+200891
+200899
+200903
+200909
+200927
+200929
+200971
+200983
+200987
+200989
+201007
+201011
+201031
+201037
+201049
+201073
+201101
+201107
+201119
+201121
+201139
+201151
+201163
+201167
+201193
+201203
+201209
+201211
+201233
+201247
+201251
+201281
+201287
+201307
+201329
+201337
+201359
+201389
+201401
+201403
+201413
+201437
+201449
+201451
+201473
+201491
+201493
+201497
+201499
+201511
+201517
+201547
+201557
+201577
+201581
+201589
+201599
+201611
+201623
+201629
+201653
+201661
+201667
+201673
+201683
+201701
+201709
+201731
+201743
+201757
+201767
+201769
+201781
+201787
+201791
+201797
+201809
+201821
+201823
+201827
+201829
+201833
+201847
+201881
+201889
+201893
+201907
+201911
+201919
+201923
+201937
+201947
+201953
+201961
+201973
+201979
+201997
+202001
+202021
+202031
+202049
+202061
+202063
+202067
+202087
+202099
+202109
+202121
+202127
+202129
+202183
+202187
+202201
+202219
+202231
+202243
+202277
+202289
+202291
+202309
+202327
+202339
+202343
+202357
+202361
+202381
+202387
+202393
+202403
+202409
+202441
+202471
+202481
+202493
+202519
+202529
+202549
+202567
+202577
+202591
+202613
+202621
+202627
+202637
+202639
+202661
+202667
+202679
+202693
+202717
+202729
+202733
+202747
+202751
+202753
+202757
+202777
+202799
+202817
+202823
+202841
+202859
+202877
+202879
+202889
+202907
+202921
+202931
+202933
+202949
+202967
+202973
+202981
+202987
+202999
+203011
+203017
+203023
+203039
+203051
+203057
+203117
+203141
+203173
+203183
+203207
+203209
+203213
+203221
+203227
+203233
+203249
+203279
+203293
+203309
+203311
+203317
+203321
+203323
+203339
+203341
+203351
+203353
+203363
+203381
+203383
+203387
+203393
+203417
+203419
+203429
+203431
+203449
+203459
+203461
+203531
+203549
+203563
+203569
+203579
+203591
+203617
+203627
+203641
+203653
+203657
+203659
+203663
+203669
+203713
+203761
+203767
+203771
+203773
+203789
+203807
+203809
+203821
+203843
+203857
+203869
+203873
+203897
+203909
+203911
+203921
+203947
+203953
+203969
+203971
+203977
+203989
+203999
+204007
+204013
+204019
+204023
+204047
+204059
+204067
+204101
+204107
+204133
+204137
+204143
+204151
+204161
+204163
+204173
+204233
+204251
+204299
+204301
+204311
+204319
+204329
+204331
+204353
+204359
+204361
+204367
+204371
+204377
+204397
+204427
+204431
+204437
+204439
+204443
+204461
+204481
+204487
+204509
+204511
+204517
+204521
+204557
+204563
+204583
+204587
+204599
+204601
+204613
+204623
+204641
+204667
+204679
+204707
+204719
+204733
+204749
+204751
+204781
+204791
+204793
+204797
+204803
+204821
+204857
+204859
+204871
+204887
+204913
+204917
+204923
+204931
+204947
+204973
+204979
+204983
+205019
+205031
+205033
+205043
+205063
+205069
+205081
+205097
+205103
+205111
+205129
+205133
+205141
+205151
+205157
+205171
+205187
+205201
+205211
+205213
+205223
+205237
+205253
+205267
+205297
+205307
+205319
+205327
+205339
+205357
+205391
+205397
+205399
+205417
+205421
+205423
+205427
+205433
+205441
+205453
+205463
+205477
+205483
+205487
+205493
+205507
+205519
+205529
+205537
+205549
+205553
+205559
+205589
+205603
+205607
+205619
+205627
+205633
+205651
+205657
+205661
+205663
+205703
+205721
+205759
+205763
+205783
+205817
+205823
+205837
+205847
+205879
+205883
+205913
+205937
+205949
+205951
+205957
+205963
+205967
+205981
+205991
+205993
+206009
+206021
+206027
+206033
+206039
+206047
+206051
+206069
+206077
+206081
+206083
+206123
+206153
+206177
+206179
+206183
+206191
+206197
+206203
+206209
+206221
+206233
+206237
+206249
+206251
+206263
+206273
+206279
+206281
+206291
+206299
+206303
+206341
+206347
+206351
+206369
+206383
+206399
+206407
+206411
+206413
+206419
+206447
+206461
+206467
+206477
+206483
+206489
+206501
+206519
+206527
+206543
+206551
+206593
+206597
+206603
+206623
+206627
+206639
+206641
+206651
+206699
+206749
+206779
+206783
+206803
+206807
+206813
+206819
+206821
+206827
+206879
+206887
+206897
+206909
+206911
+206917
+206923
+206933
+206939
+206951
+206953
+206993
+207013
+207017
+207029
+207037
+207041
+207061
+207073
+207079
+207113
+207121
+207127
+207139
+207169
+207187
+207191
+207197
+207199
+207227
+207239
+207241
+207257
+207269
+207287
+207293
+207301
+207307
+207329
+207331
+207341
+207343
+207367
+207371
+207377
+207401
+207409
+207433
+207443
+207457
+207463
+207469
+207479
+207481
+207491
+207497
+207509
+207511
+207517
+207521
+207523
+207541
+207547
+207551
+207563
+207569
+207589
+207593
+207619
+207629
+207643
+207653
+207661
+207671
+207673
+207679
+207709
+207719
+207721
+207743
+207763
+207769
+207797
+207799
+207811
+207821
+207833
+207847
+207869
+207877
+207923
+207931
+207941
+207947
+207953
+207967
+207971
+207973
+207997
+208001
+208003
+208009
+208037
+208049
+208057
+208067
+208073
+208099
+208111
+208121
+208129
+208139
+208141
+208147
+208189
+208207
+208213
+208217
+208223
+208231
+208253
+208261
+208277
+208279
+208283
+208291
+208309
+208319
+208333
+208337
+208367
+208379
+208387
+208391
+208393
+208409
+208433
+208441
+208457
+208459
+208463
+208469
+208489
+208493
+208499
+208501
+208511
+208513
+208519
+208529
+208553
+208577
+208589
+208591
+208609
+208627
+208631
+208657
+208667
+208673
+208687
+208697
+208699
+208721
+208729
+208739
+208759
+208787
+208799
+208807
+208837
+208843
+208877
+208889
+208891
+208907
+208927
+208931
+208933
+208961
+208963
+208991
+208993
+208997
+209021
+209029
+209039
+209063
+209071
+209089
+209123
+209147
+209159
+209173
+209179
+209189
+209201
+209203
+209213
+209221
+209227
+209233
+209249
+209257
+209263
+209267
+209269
+209299
+209311
+209317
+209327
+209333
+209347
+209353
+209357
+209359
+209371
+209381
+209393
+209401
+209431
+209441
+209449
+209459
+209471
+209477
+209497
+209519
+209533
+209543
+209549
+209563
+209567
+209569
+209579
+209581
+209597
+209621
+209623
+209639
+209647
+209659
+209669
+209687
+209701
+209707
+209717
+209719
+209743
+209767
+209771
+209789
+209801
+209809
+209813
+209819
+209821
+209837
+209851
+209857
+209861
+209887
+209917
+209927
+209929
+209939
+209953
+209959
+209971
+209977
+209983
+209987
+210011
+210019
+210031
+210037
+210053
+210071
+210097
+210101
+210109
+210113
+210127
+210131
+210139
+210143
+210157
+210169
+210173
+210187
+210191
+210193
+210209
+210229
+210233
+210241
+210247
+210257
+210263
+210277
+210283
+210299
+210317
+210319
+210323
+210347
+210359
+210361
+210391
+210401
+210403
+210407
+210421
+210437
+210461
+210467
+210481
+210487
+210491
+210499
+210523
+210527
+210533
+210557
+210599
+210601
+210619
+210631
+210643
+210659
+210671
+210709
+210713
+210719
+210731
+210739
+210761
+210773
+210803
+210809
+210811
+210823
+210827
+210839
+210853
+210857
+210869
+210901
+210907
+210911
+210913
+210923
+210929
+210943
+210961
+210967
+211007
+211039
+211049
+211051
+211061
+211063
+211067
+211073
+211093
+211097
+211129
+211151
+211153
+211177
+211187
+211193
+211199
+211213
+211217
+211219
+211229
+211231
+211241
+211247
+211271
+211283
+211291
+211297
+211313
+211319
+211333
+211339
+211349
+211369
+211373
+211403
+211427
+211433
+211441
+211457
+211469
+211493
+211499
+211501
+211507
+211543
+211559
+211571
+211573
+211583
+211597
+211619
+211639
+211643
+211657
+211661
+211663
+211681
+211691
+211693
+211711
+211723
+211727
+211741
+211747
+211777
+211781
+211789
+211801
+211811
+211817
+211859
+211867
+211873
+211877
+211879
+211889
+211891
+211927
+211931
+211933
+211943
+211949
+211969
+211979
+211997
+212029
+212039
+212057
+212081
+212099
+212117
+212123
+212131
+212141
+212161
+212167
+212183
+212203
+212207
+212209
+212227
+212239
+212243
+212281
+212293
+212297
+212353
+212369
+212383
+212411
+212419
+212423
+212437
+212447
+212453
+212461
+212467
+212479
+212501
+212507
+212557
+212561
+212573
+212579
+212587
+212593
+212627
+212633
+212651
+212669
+212671
+212677
+212683
+212701
+212777
+212791
+212801
+212827
+212837
+212843
+212851
+212867
+212869
+212873
+212881
+212897
+212903
+212909
+212917
+212923
+212969
+212981
+212987
+212999
+213019
+213023
+213029
+213043
+213067
+213079
+213091
+213097
+213119
+213131
+213133
+213139
+213149
+213173
+213181
+213193
+213203
+213209
+213217
+213223
+213229
+213247
+213253
+213263
+213281
+213287
+213289
+213307
+213319
+213329
+213337
+213349
+213359
+213361
+213383
+213391
+213397
+213407
+213449
+213461
+213467
+213481
+213491
+213523
+213533
+213539
+213553
+213557
+213589
+213599
+213611
+213613
+213623
+213637
+213641
+213649
+213659
+213713
+213721
+213727
+213737
+213751
+213791
+213799
+213821
+213827
+213833
+213847
+213859
+213881
+213887
+213901
+213919
+213929
+213943
+213947
+213949
+213953
+213973
+213977
+213989
+214003
+214007
+214009
+214021
+214031
+214033
+214043
+214051
+214063
+214069
+214087
+214091
+214129
+214133
+214141
+214147
+214163
+214177
+214189
+214211
+214213
+214219
+214237
+214243
+214259
+214283
+214297
+214309
+214351
+214363
+214373
+214381
+214391
+214399
+214433
+214439
+214451
+214457
+214463
+214469
+214481
+214483
+214499
+214507
+214517
+214519
+214531
+214541
+214559
+214561
+214589
+214603
+214607
+214631
+214639
+214651
+214657
+214663
+214667
+214673
+214691
+214723
+214729
+214733
+214741
+214759
+214763
+214771
+214783
+214787
+214789
+214807
+214811
+214817
+214831
+214849
+214853
+214867
+214883
+214891
+214913
+214939
+214943
+214967
+214987
+214993
+215051
+215063
+215077
+215087
+215123
+215141
+215143
+215153
+215161
+215179
+215183
+215191
+215197
+215239
+215249
+215261
+215273
+215279
+215297
+215309
+215317
+215329
+215351
+215353
+215359
+215381
+215389
+215393
+215399
+215417
+215443
+215447
+215459
+215461
+215471
+215483
+215497
+215503
+215507
+215521
+215531
+215563
+215573
+215587
+215617
+215653
+215659
+215681
+215687
+215689
+215693
+215723
+215737
+215753
+215767
+215771
+215797
+215801
+215827
+215833
+215843
+215851
+215857
+215863
+215893
+215899
+215909
+215921
+215927
+215939
+215953
+215959
+215981
+215983
+216023
+216037
+216061
+216071
+216091
+216103
+216107
+216113
+216119
+216127
+216133
+216149
+216157
+216173
+216179
+216211
+216217
+216233
+216259
+216263
+216289
+216317
+216319
+216329
+216347
+216371
+216373
+216379
+216397
+216401
+216421
+216431
+216451
+216481
+216493
+216509
+216523
+216551
+216553
+216569
+216571
+216577
+216607
+216617
+216641
+216647
+216649
+216653
+216661
+216679
+216703
+216719
+216731
+216743
+216751
+216757
+216761
+216779
+216781
+216787
+216791
+216803
+216829
+216841
+216851
+216859
+216877
+216899
+216901
+216911
+216917
+216919
+216947
+216967
+216973
+216991
+217001
+217003
+217027
+217033
+217057
+217069
+217081
+217111
+217117
+217121
+217157
+217163
+217169
+217199
+217201
+217207
+217219
+217223
+217229
+217241
+217253
+217271
+217307
+217309
+217313
+217319
+217333
+217337
+217339
+217351
+217361
+217363
+217367
+217369
+217387
+217397
+217409
+217411
+217421
+217429
+217439
+217457
+217463
+217489
+217499
+217517
+217519
+217559
+217561
+217573
+217577
+217579
+217619
+217643
+217661
+217667
+217681
+217687
+217691
+217697
+217717
+217727
+217733
+217739
+217747
+217771
+217781
+217793
+217823
+217829
+217849
+217859
+217901
+217907
+217909
+217933
+217937
+217969
+217979
+217981
+218003
+218021
+218047
+218069
+218077
+218081
+218083
+218087
+218107
+218111
+218117
+218131
+218137
+218143
+218149
+218171
+218191
+218213
+218227
+218233
+218249
+218279
+218287
+218357
+218363
+218371
+218381
+218389
+218401
+218417
+218419
+218423
+218437
+218447
+218453
+218459
+218461
+218479
+218509
+218513
+218521
+218527
+218531
+218549
+218551
+218579
+218591
+218599
+218611
+218623
+218627
+218629
+218641
+218651
+218657
+218677
+218681
+218711
+218717
+218719
+218723
+218737
+218749
+218761
+218783
+218797
+218809
+218819
+218833
+218839
+218843
+218849
+218857
+218873
+218887
+218923
+218941
+218947
+218963
+218969
+218971
+218987
+218989
+218993
+219001
+219017
+219019
+219031
+219041
+219053
+219059
+219071
+219083
+219091
+219097
+219103
+219119
+219133
+219143
+219169
+219187
+219217
+219223
+219251
+219277
+219281
+219293
+219301
+219311
+219313
+219353
+219361
+219371
+219377
+219389
+219407
+219409
+219433
+219437
+219451
+219463
+219467
+219491
+219503
+219517
+219523
+219529
+219533
+219547
+219577
+219587
+219599
+219607
+219613
+219619
+219629
+219647
+219649
+219677
+219679
+219683
+219689
+219707
+219721
+219727
+219731
+219749
+219757
+219761
+219763
+219767
+219787
+219797
+219799
+219809
+219823
+219829
+219839
+219847
+219851
+219871
+219881
+219889
+219911
+219917
+219931
+219937
+219941
+219943
+219953
+219959
+219971
+219977
+219979
+219983
+220009
+220013
+220019
+220021
+220057
+220063
+220123
+220141
+220147
+220151
+220163
+220169
+220177
+220189
+220217
+220243
+220279
+220291
+220301
+220307
+220327
+220333
+220351
+220357
+220361
+220369
+220373
+220391
+220399
+220403
+220411
+220421
+220447
+220469
+220471
+220511
+220513
+220529
+220537
+220543
+220553
+220559
+220573
+220579
+220589
+220613
+220663
+220667
+220673
+220681
+220687
+220699
+220709
+220721
+220747
+220757
+220771
+220783
+220789
+220793
+220807
+220811
+220841
+220859
+220861
+220873
+220877
+220879
+220889
+220897
+220901
+220903
+220907
+220919
+220931
+220933
+220939
+220973
+221021
+221047
+221059
+221069
+221071
+221077
+221083
+221087
+221093
+221101
+221159
+221171
+221173
+221197
+221201
+221203
+221209
+221219
+221227
+221233
+221239
+221251
+221261
+221281
+221303
+221311
+221317
+221327
+221393
+221399
+221401
+221411
+221413
+221447
+221453
+221461
+221471
+221477
+221489
+221497
+221509
+221537
+221539
+221549
+221567
+221581
+221587
+221603
+221621
+221623
+221653
+221657
+221659
+221671
+221677
+221707
+221713
+221717
+221719
+221723
+221729
+221737
+221747
+221773
+221797
+221807
+221813
+221827
+221831
+221849
+221873
+221891
+221909
+221941
+221951
+221953
+221957
+221987
+221989
+221999
+222007
+222011
+222023
+222029
+222041
+222043
+222059
+222067
+222073
+222107
+222109
+222113
+222127
+222137
+222149
+222151
+222161
+222163
+222193
+222197
+222199
+222247
+222269
+222289
+222293
+222311
+222317
+222323
+222329
+222337
+222347
+222349
+222361
+222367
+222379
+222389
+222403
+222419
+222437
+222461
+222493
+222499
+222511
+222527
+222533
+222553
+222557
+222587
+222601
+222613
+222619
+222643
+222647
+222659
+222679
+222707
+222713
+222731
+222773
+222779
+222787
+222791
+222793
+222799
+222823
+222839
+222841
+222857
+222863
+222877
+222883
+222913
+222919
+222931
+222941
+222947
+222953
+222967
+222977
+222979
+222991
+223007
+223009
+223019
+223037
+223049
+223051
+223061
+223063
+223087
+223099
+223103
+223129
+223133
+223151
+223207
+223211
+223217
+223219
+223229
+223241
+223243
+223247
+223253
+223259
+223273
+223277
+223283
+223291
+223303
+223313
+223319
+223331
+223337
+223339
+223361
+223367
+223381
+223403
+223423
+223429
+223439
+223441
+223463
+223469
+223481
+223493
+223507
+223529
+223543
+223547
+223549
+223577
+223589
+223621
+223633
+223637
+223667
+223679
+223681
+223697
+223711
+223747
+223753
+223757
+223759
+223781
+223823
+223829
+223831
+223837
+223841
+223843
+223849
+223903
+223919
+223921
+223939
+223963
+223969
+223999
+224011
+224027
+224033
+224041
+224047
+224057
+224069
+224071
+224101
+224113
+224129
+224131
+224149
+224153
+224171
+224177
+224197
+224201
+224209
+224221
+224233
+224239
+224251
+224261
+224267
+224291
+224299
+224303
+224309
+224317
+224327
+224351
+224359
+224363
+224401
+224423
+224429
+224443
+224449
+224461
+224467
+224473
+224491
+224501
+224513
+224527
+224563
+224569
+224579
+224591
+224603
+224611
+224617
+224629
+224633
+224669
+224677
+224683
+224699
+224711
+224717
+224729
+224737
+224743
+224759
+224771
+224797
+224813
+224831
+224863
+224869
+224881
+224891
+224897
+224909
+224911
+224921
+224929
+224947
+224951
+224969
+224977
+224993
+225023
+225037
+225061
+225067
+225077
+225079
+225089
+225109
+225119
+225133
+225143
+225149
+225157
+225161
+225163
+225167
+225217
+225221
+225223
+225227
+225241
+225257
+225263
+225287
+225289
+225299
+225307
+225341
+225343
+225347
+225349
+225353
+225371
+225373
+225383
+225427
+225431
+225457
+225461
+225479
+225493
+225499
+225503
+225509
+225523
+225527
+225529
+225569
+225581
+225583
+225601
+225611
+225613
+225619
+225629
+225637
+225671
+225683
+225689
+225697
+225721
+225733
+225749
+225751
+225767
+225769
+225779
+225781
+225809
+225821
+225829
+225839
+225859
+225871
+225889
+225919
+225931
+225941
+225943
+225949
+225961
+225977
+225983
+225989
+226001
+226007
+226013
+226027
+226063
+226087
+226099
+226103
+226123
+226129
+226133
+226141
+226169
+226183
+226189
+226199
+226201
+226217
+226231
+226241
+226267
+226283
+226307
+226313
+226337
+226357
+226367
+226379
+226381
+226397
+226409
+226427
+226433
+226451
+226453
+226463
+226483
+226487
+226511
+226531
+226547
+226549
+226553
+226571
+226601
+226609
+226621
+226631
+226637
+226643
+226649
+226657
+226663
+226669
+226691
+226697
+226741
+226753
+226769
+226777
+226783
+226789
+226799
+226813
+226817
+226819
+226823
+226843
+226871
+226901
+226903
+226907
+226913
+226937
+226943
+226991
+227011
+227027
+227053
+227081
+227089
+227093
+227111
+227113
+227131
+227147
+227153
+227159
+227167
+227177
+227189
+227191
+227207
+227219
+227231
+227233
+227251
+227257
+227267
+227281
+227299
+227303
+227363
+227371
+227377
+227387
+227393
+227399
+227407
+227419
+227431
+227453
+227459
+227467
+227471
+227473
+227489
+227497
+227501
+227519
+227531
+227533
+227537
+227561
+227567
+227569
+227581
+227593
+227597
+227603
+227609
+227611
+227627
+227629
+227651
+227653
+227663
+227671
+227693
+227699
+227707
+227719
+227729
+227743
+227789
+227797
+227827
+227849
+227869
+227873
+227893
+227947
+227951
+227977
+227989
+227993
+228013
+228023
+228049
+228061
+228077
+228097
+228103
+228113
+228127
+228131
+228139
+228181
+228197
+228199
+228203
+228211
+228223
+228233
+228251
+228257
+228281
+228299
+228301
+228307
+228311
+228331
+228337
+228341
+228353
+228359
+228383
+228409
+228419
+228421
+228427
+228443
+228451
+228457
+228461
+228469
+228479
+228509
+228511
+228517
+228521
+228523
+228539
+228559
+228577
+228581
+228587
+228593
+228601
+228611
+228617
+228619
+228637
+228647
+228677
+228707
+228713
+228731
+228733
+228737
+228751
+228757
+228773
+228793
+228797
+228799
+228829
+228841
+228847
+228853
+228859
+228869
+228881
+228883
+228887
+228901
+228911
+228913
+228923
+228929
+228953
+228959
+228961
+228983
+228989
+229003
+229027
+229037
+229081
+229093
+229123
+229127
+229133
+229139
+229153
+229157
+229171
+229181
+229189
+229199
+229213
+229217
+229223
+229237
+229247
+229249
+229253
+229261
+229267
+229283
+229309
+229321
+229343
+229351
+229373
+229393
+229399
+229403
+229409
+229423
+229433
+229459
+229469
+229487
+229499
+229507
+229519
+229529
+229547
+229549
+229553
+229561
+229583
+229589
+229591
+229601
+229613
+229627
+229631
+229637
+229639
+229681
+229693
+229699
+229703
+229711
+229717
+229727
+229739
+229751
+229753
+229759
+229763
+229769
+229771
+229777
+229781
+229799
+229813
+229819
+229837
+229841
+229847
+229849
+229897
+229903
+229937
+229939
+229949
+229961
+229963
+229979
+229981
+230003
+230017
+230047
+230059
+230063
+230077
+230081
+230089
+230101
+230107
+230117
+230123
+230137
+230143
+230149
+230189
+230203
+230213
+230221
+230227
+230233
+230239
+230257
+230273
+230281
+230291
+230303
+230309
+230311
+230327
+230339
+230341
+230353
+230357
+230369
+230383
+230387
+230389
+230393
+230431
+230449
+230453
+230467
+230471
+230479
+230501
+230507
+230539
+230551
+230561
+230563
+230567
+230597
+230611
+230647
+230653
+230663
+230683
+230693
+230719
+230729
+230743
+230761
+230767
+230771
+230773
+230779
+230807
+230819
+230827
+230833
+230849
+230861
+230863
+230873
+230891
+230929
+230933
+230939
+230941
+230959
+230969
+230977
+230999
+231001
+231017
+231019
+231031
+231041
+231053
+231067
+231079
+231107
+231109
+231131
+231169
+231197
+231223
+231241
+231269
+231271
+231277
+231289
+231293
+231299
+231317
+231323
+231331
+231347
+231349
+231359
+231367
+231379
+231409
+231419
+231431
+231433
+231443
+231461
+231463
+231479
+231481
+231493
+231503
+231529
+231533
+231547
+231551
+231559
+231563
+231571
+231589
+231599
+231607
+231611
+231613
+231631
+231643
+231661
+231677
+231701
+231709
+231719
+231779
+231799
+231809
+231821
+231823
+231827
+231839
+231841
+231859
+231871
+231877
+231893
+231901
+231919
+231923
+231943
+231947
+231961
+231967
+232003
+232007
+232013
+232049
+232051
+232073
+232079
+232081
+232091
+232103
+232109
+232117
+232129
+232153
+232171
+232187
+232189
+232207
+232217
+232259
+232303
+232307
+232333
+232357
+232363
+232367
+232381
+232391
+232409
+232411
+232417
+232433
+232439
+232451
+232457
+232459
+232487
+232499
+232513
+232523
+232549
+232567
+232571
+232591
+232597
+232607
+232621
+232633
+232643
+232663
+232669
+232681
+232699
+232709
+232711
+232741
+232751
+232753
+232777
+232801
+232811
+232819
+232823
+232847
+232853
+232861
+232871
+232877
+232891
+232901
+232907
+232919
+232937
+232961
+232963
+232987
+233021
+233069
+233071
+233083
+233113
+233117
+233141
+233143
+233159
+233161
+233173
+233183
+233201
+233221
+233231
+233239
+233251
+233267
+233279
+233293
+233297
+233323
+233327
+233329
+233341
+233347
+233353
+233357
+233371
+233407
+233417
+233419
+233423
+233437
+233477
+233489
+233509
+233549
+233551
+233557
+233591
+233599
+233609
+233617
+233621
+233641
+233663
+233669
+233683
+233687
+233689
+233693
+233713
+233743
+233747
+233759
+233777
+233837
+233851
+233861
+233879
+233881
+233911
+233917
+233921
+233923
+233939
+233941
+233969
+233983
+233993
+234007
+234029
+234043
+234067
+234083
+234089
+234103
+234121
+234131
+234139
+234149
+234161
+234167
+234181
+234187
+234191
+234193
+234197
+234203
+234211
+234217
+234239
+234259
+234271
+234281
+234287
+234293
+234317
+234319
+234323
+234331
+234341
+234343
+234361
+234383
+234431
+234457
+234461
+234463
+234467
+234473
+234499
+234511
+234527
+234529
+234539
+234541
+234547
+234571
+234587
+234589
+234599
+234613
+234629
+234653
+234659
+234673
+234683
+234713
+234721
+234727
+234733
+234743
+234749
+234769
+234781
+234791
+234799
+234803
+234809
+234811
+234833
+234847
+234851
+234863
+234869
+234893
+234907
+234917
+234931
+234947
+234959
+234961
+234967
+234977
+234979
+234989
+235003
+235007
+235009
+235013
+235043
+235051
+235057
+235069
+235091
+235099
+235111
+235117
+235159
+235171
+235177
+235181
+235199
+235211
+235231
+235241
+235243
+235273
+235289
+235307
+235309
+235337
+235349
+235369
+235397
+235439
+235441
+235447
+235483
+235489
+235493
+235513
+235519
+235523
+235537
+235541
+235553
+235559
+235577
+235591
+235601
+235607
+235621
+235661
+235663
+235673
+235679
+235699
+235723
+235747
+235751
+235783
+235787
+235789
+235793
+235811
+235813
+235849
+235871
+235877
+235889
+235891
+235901
+235919
+235927
+235951
+235967
+235979
+235997
+236017
+236021
+236053
+236063
+236069
+236077
+236087
+236107
+236111
+236129
+236143
+236153
+236167
+236207
+236209
+236219
+236231
+236261
+236287
+236293
+236297
+236323
+236329
+236333
+236339
+236377
+236381
+236387
+236399
+236407
+236429
+236449
+236461
+236471
+236477
+236479
+236503
+236507
+236519
+236527
+236549
+236563
+236573
+236609
+236627
+236641
+236653
+236659
+236681
+236699
+236701
+236707
+236713
+236723
+236729
+236737
+236749
+236771
+236773
+236779
+236783
+236807
+236813
+236867
+236869
+236879
+236881
+236891
+236893
+236897
+236909
+236917
+236947
+236981
+236983
+236993
+237011
+237019
+237043
+237053
+237067
+237071
+237073
+237089
+237091
+237137
+237143
+237151
+237157
+237161
+237163
+237173
+237179
+237203
+237217
+237233
+237257
+237271
+237277
+237283
+237287
+237301
+237313
+237319
+237331
+237343
+237361
+237373
+237379
+237401
+237409
+237467
+237487
+237509
+237547
+237563
+237571
+237581
+237607
+237619
+237631
+237673
+237683
+237689
+237691
+237701
+237707
+237733
+237737
+237749
+237763
+237767
+237781
+237791
+237821
+237851
+237857
+237859
+237877
+237883
+237901
+237911
+237929
+237959
+237967
+237971
+237973
+237977
+237997
+238001
+238009
+238019
+238031
+238037
+238039
+238079
+238081
+238093
+238099
+238103
+238109
+238141
+238151
+238157
+238159
+238163
+238171
+238181
+238201
+238207
+238213
+238223
+238229
+238237
+238247
+238261
+238267
+238291
+238307
+238313
+238321
+238331
+238339
+238361
+238363
+238369
+238373
+238397
+238417
+238423
+238439
+238451
+238463
+238471
+238477
+238481
+238499
+238519
+238529
+238531
+238547
+238573
+238591
+238627
+238639
+238649
+238657
+238673
+238681
+238691
+238703
+238709
+238723
+238727
+238729
+238747
+238759
+238781
+238789
+238801
+238829
+238837
+238841
+238853
+238859
+238877
+238879
+238883
+238897
+238919
+238921
+238939
+238943
+238949
+238967
+238991
+239017
+239023
+239027
+239053
+239069
+239081
+239087
+239119
+239137
+239147
+239167
+239171
+239179
+239201
+239231
+239233
+239237
+239243
+239251
+239263
+239273
+239287
+239297
+239329
+239333
+239347
+239357
+239383
+239387
+239389
+239417
+239423
+239429
+239431
+239441
+239461
+239489
+239509
+239521
+239527
+239531
+239539
+239543
+239557
+239567
+239579
+239587
+239597
+239611
+239623
+239633
+239641
+239671
+239689
+239699
+239711
+239713
+239731
+239737
+239753
+239779
+239783
+239803
+239807
+239831
+239843
+239849
+239851
+239857
+239873
+239879
+239893
+239929
+239933
+239947
+239957
+239963
+239977
+239999
+240007
+240011
+240017
+240041
+240043
+240047
+240049
+240059
+240073
+240089
+240101
+240109
+240113
+240131
+240139
+240151
+240169
+240173
+240197
+240203
+240209
+240257
+240259
+240263
+240271
+240283
+240287
+240319
+240341
+240347
+240349
+240353
+240371
+240379
+240421
+240433
+240437
+240473
+240479
+240491
+240503
+240509
+240517
+240551
+240571
+240587
+240589
+240599
+240607
+240623
+240631
+240641
+240659
+240677
+240701
+240707
+240719
+240727
+240733
+240739
+240743
+240763
+240769
+240797
+240811
+240829
+240841
+240853
+240859
+240869
+240881
+240883
+240893
+240899
+240913
+240943
+240953
+240959
+240967
+240997
+241013
+241027
+241037
+241049
+241051
+241061
+241067
+241069
+241079
+241093
+241117
+241127
+241141
+241169
+241177
+241183
+241207
+241229
+241249
+241253
+241259
+241261
+241271
+241291
+241303
+241313
+241321
+241327
+241333
+241337
+241343
+241361
+241363
+241391
+241393
+241421
+241429
+241441
+241453
+241463
+241469
+241489
+241511
+241513
+241517
+241537
+241543
+241559
+241561
+241567
+241589
+241597
+241601
+241603
+241639
+241643
+241651
+241663
+241667
+241679
+241687
+241691
+241711
+241727
+241739
+241771
+241781
+241783
+241793
+241807
+241811
+241817
+241823
+241847
+241861
+241867
+241873
+241877
+241883
+241903
+241907
+241919
+241921
+241931
+241939
+241951
+241963
+241973
+241979
+241981
+241993
+242009
+242057
+242059
+242069
+242083
+242093
+242101
+242119
+242129
+242147
+242161
+242171
+242173
+242197
+242201
+242227
+242243
+242257
+242261
+242273
+242279
+242309
+242329
+242357
+242371
+242377
+242393
+242399
+242413
+242419
+242441
+242447
+242449
+242453
+242467
+242479
+242483
+242491
+242509
+242519
+242521
+242533
+242551
+242591
+242603
+242617
+242621
+242629
+242633
+242639
+242647
+242659
+242677
+242681
+242689
+242713
+242729
+242731
+242747
+242773
+242779
+242789
+242797
+242807
+242813
+242819
+242863
+242867
+242873
+242887
+242911
+242923
+242927
+242971
+242989
+242999
+243011
+243031
+243073
+243077
+243091
+243101
+243109
+243119
+243121
+243137
+243149
+243157
+243161
+243167
+243197
+243203
+243209
+243227
+243233
+243239
+243259
+243263
+243301
+243311
+243343
+243367
+243391
+243401
+243403
+243421
+243431
+243433
+243437
+243461
+243469
+243473
+243479
+243487
+243517
+243521
+243527
+243533
+243539
+243553
+243577
+243583
+243587
+243589
+243613
+243623
+243631
+243643
+243647
+243671
+243673
+243701
+243703
+243707
+243709
+243769
+243781
+243787
+243799
+243809
+243829
+243839
+243851
+243857
+243863
+243871
+243889
+243911
+243917
+243931
+243953
+243973
+243989
+244003
+244009
+244021
+244033
+244043
+244087
+244091
+244109
+244121
+244129
+244141
+244147
+244157
+244159
+244177
+244199
+244217
+244219
+244243
+244247
+244253
+244261
+244291
+244297
+244301
+244303
+244313
+244333
+244339
+244351
+244357
+244367
+244379
+244381
+244393
+244399
+244403
+244411
+244423
+244429
+244451
+244457
+244463
+244471
+244481
+244493
+244507
+244529
+244547
+244553
+244561
+244567
+244583
+244589
+244597
+244603
+244619
+244633
+244637
+244639
+244667
+244669
+244687
+244691
+244703
+244711
+244721
+244733
+244747
+244753
+244759
+244781
+244787
+244813
+244837
+244841
+244843
+244859
+244861
+244873
+244877
+244889
+244897
+244901
+244939
+244943
+244957
+244997
+245023
+245029
+245033
+245039
+245071
+245083
+245087
+245107
+245129
+245131
+245149
+245171
+245173
+245177
+245183
+245209
+245251
+245257
+245261
+245269
+245279
+245291
+245299
+245317
+245321
+245339
+245383
+245389
+245407
+245411
+245417
+245419
+245437
+245471
+245473
+245477
+245501
+245513
+245519
+245521
+245527
+245533
+245561
+245563
+245587
+245591
+245593
+245621
+245627
+245629
+245639
+245653
+245671
+245681
+245683
+245711
+245719
+245723
+245741
+245747
+245753
+245759
+245771
+245783
+245789
+245821
+245849
+245851
+245863
+245881
+245897
+245899
+245909
+245911
+245941
+245963
+245977
+245981
+245983
+245989
+246011
+246017
+246049
+246073
+246097
+246119
+246121
+246131
+246133
+246151
+246167
+246173
+246187
+246193
+246203
+246209
+246217
+246223
+246241
+246247
+246251
+246271
+246277
+246289
+246317
+246319
+246329
+246343
+246349
+246361
+246371
+246391
+246403
+246439
+246469
+246473
+246497
+246509
+246511
+246523
+246527
+246539
+246557
+246569
+246577
+246599
+246607
+246611
+246613
+246637
+246641
+246643
+246661
+246683
+246689
+246707
+246709
+246713
+246731
+246739
+246769
+246773
+246781
+246787
+246793
+246803
+246809
+246811
+246817
+246833
+246839
+246889
+246899
+246907
+246913
+246919
+246923
+246929
+246931
+246937
+246941
+246947
+246971
+246979
+247001
+247007
+247031
+247067
+247069
+247073
+247087
+247099
+247141
+247183
+247193
+247201
+247223
+247229
+247241
+247249
+247259
+247279
+247301
+247309
+247337
+247339
+247343
+247363
+247369
+247381
+247391
+247393
+247409
+247421
+247433
+247439
+247451
+247463
+247501
+247519
+247529
+247531
+247547
+247553
+247579
+247591
+247601
+247603
+247607
+247609
+247613
+247633
+247649
+247651
+247691
+247693
+247697
+247711
+247717
+247729
+247739
+247759
+247769
+247771
+247781
+247799
+247811
+247813
+247829
+247847
+247853
+247873
+247879
+247889
+247901
+247913
+247939
+247943
+247957
+247991
+247993
+247997
+247999
+248021
+248033
+248041
+248051
+248057
+248063
+248071
+248077
+248089
+248099
+248117
+248119
+248137
+248141
+248161
+248167
+248177
+248179
+248189
+248201
+248203
+248231
+248243
+248257
+248267
+248291
+248293
+248299
+248309
+248317
+248323
+248351
+248357
+248371
+248389
+248401
+248407
+248431
+248441
+248447
+248461
+248473
+248477
+248483
+248509
+248533
+248537
+248543
+248569
+248579
+248587
+248593
+248597
+248609
+248621
+248627
+248639
+248641
+248657
+248683
+248701
+248707
+248719
+248723
+248737
+248749
+248753
+248779
+248783
+248789
+248797
+248813
+248821
+248827
+248839
+248851
+248861
+248867
+248869
+248879
+248887
+248891
+248893
+248903
+248909
+248971
+248981
+248987
+249017
+249037
+249059
+249079
+249089
+249097
+249103
+249107
+249127
+249131
+249133
+249143
+249181
+249187
+249199
+249211
+249217
+249229
+249233
+249253
+249257
+249287
+249311
+249317
+249329
+249341
+249367
+249377
+249383
+249397
+249419
+249421
+249427
+249433
+249437
+249439
+249449
+249463
+249497
+249499
+249503
+249517
+249521
+249533
+249539
+249541
+249563
+249583
+249589
+249593
+249607
+249647
+249659
+249671
+249677
+249703
+249721
+249727
+249737
+249749
+249763
+249779
+249797
+249811
+249827
+249833
+249853
+249857
+249859
+249863
+249871
+249881
+249911
+249923
+249943
+249947
+249967
+249971
+249973
+249989
+250007
+250013
+250027
+250031
+250037
+250043
+250049
+250051
+250057
+250073
+250091
+250109
+250123
+250147
+250153
+250169
+250199
+250253
+250259
+250267
+250279
+250301
+250307
+250343
+250361
+250403
+250409
+250423
+250433
+250441
+250451
+250489
+250499
+250501
+250543
+250583
+250619
+250643
+250673
+250681
+250687
+250693
+250703
+250709
+250721
+250727
+250739
+250741
+250751
+250753
+250777
+250787
+250793
+250799
+250807
+250813
+250829
+250837
+250841
+250853
+250867
+250871
+250889
+250919
+250949
+250951
+250963
+250967
+250969
+250979
+250993
+251003
+251033
+251051
+251057
+251059
+251063
+251071
+251081
+251087
+251099
+251117
+251143
+251149
+251159
+251171
+251177
+251179
+251191
+251197
+251201
+251203
+251219
+251221
+251231
+251233
+251257
+251261
+251263
+251287
+251291
+251297
+251323
+251347
+251353
+251359
+251387
+251393
+251417
+251429
+251431
+251437
+251443
+251467
+251473
+251477
+251483
+251491
+251501
+251513
+251519
+251527
+251533
+251539
+251543
+251561
+251567
+251609
+251611
+251621
+251623
+251639
+251653
+251663
+251677
+251701
+251707
+251737
+251761
+251789
+251791
+251809
+251831
+251833
+251843
+251857
+251861
+251879
+251887
+251893
+251897
+251903
+251917
+251939
+251941
+251947
+251969
+251971
+251983
+252001
+252013
+252017
+252029
+252037
+252079
+252101
+252139
+252143
+252151
+252157
+252163
+252169
+252173
+252181
+252193
+252209
+252223
+252233
+252253
+252277
+252283
+252289
+252293
+252313
+252319
+252323
+252341
+252359
+252383
+252391
+252401
+252409
+252419
+252431
+252443
+252449
+252457
+252463
+252481
+252509
+252533
+252541
+252559
+252583
+252589
+252607
+252611
+252617
+252641
+252667
+252691
+252709
+252713
+252727
+252731
+252737
+252761
+252767
+252779
+252817
+252823
+252827
+252829
+252869
+252877
+252881
+252887
+252893
+252899
+252911
+252913
+252919
+252937
+252949
+252971
+252979
+252983
+253003
+253013
+253049
+253063
+253081
+253103
+253109
+253133
+253153
+253157
+253159
+253229
+253243
+253247
+253273
+253307
+253321
+253343
+253349
+253361
+253367
+253369
+253381
+253387
+253417
+253423
+253427
+253433
+253439
+253447
+253469
+253481
+253493
+253501
+253507
+253531
+253537
+253543
+253553
+253567
+253573
+253601
+253607
+253609
+253613
+253633
+253637
+253639
+253651
+253661
+253679
+253681
+253703
+253717
+253733
+253741
+253751
+253763
+253769
+253777
+253787
+253789
+253801
+253811
+253819
+253823
+253853
+253867
+253871
+253879
+253901
+253907
+253909
+253919
+253937
+253949
+253951
+253969
+253987
+253993
+253999
+254003
+254021
+254027
+254039
+254041
+254047
+254053
+254071
+254083
+254119
+254141
+254147
+254161
+254179
+254197
+254207
+254209
+254213
+254249
+254257
+254279
+254281
+254291
+254299
+254329
+254369
+254377
+254383
+254389
+254407
+254413
+254437
+254447
+254461
+254489
+254491
+254519
+254537
+254557
+254593
+254623
+254627
+254647
+254659
+254663
+254699
+254713
+254729
+254731
+254741
+254747
+254753
+254773
+254777
+254783
+254791
+254803
+254827
+254831
+254833
+254857
+254869
+254873
+254879
+254887
+254899
+254911
+254927
+254929
+254941
+254959
+254963
+254971
+254977
+254987
+254993
+255007
+255019
+255023
+255043
+255049
+255053
+255071
+255077
+255083
+255097
+255107
+255121
+255127
+255133
+255137
+255149
+255173
+255179
+255181
+255191
+255193
+255197
+255209
+255217
+255239
+255247
+255251
+255253
+255259
+255313
+255329
+255349
+255361
+255371
+255383
+255413
+255419
+255443
+255457
+255467
+255469
+255473
+255487
+255499
+255503
+255511
+255517
+255523
+255551
+255571
+255587
+255589
+255613
+255617
+255637
+255641
+255649
+255653
+255659
+255667
+255679
+255709
+255713
+255733
+255743
+255757
+255763
+255767
+255803
+255839
+255841
+255847
+255851
+255859
+255869
+255877
+255887
+255907
+255917
+255919
+255923
+255947
+255961
+255971
+255973
+255977
+255989
+256019
+256021
+256031
+256033
+256049
+256057
+256079
+256093
+256117
+256121
+256129
+256133
+256147
+256163
+256169
+256181
+256187
+256189
+256199
+256211
+256219
+256279
+256301
+256307
+256313
+256337
+256349
+256363
+256369
+256391
+256393
+256423
+256441
+256469
+256471
+256483
+256489
+256493
+256499
+256517
+256541
+256561
+256567
+256577
+256579
+256589
+256603
+256609
+256639
+256643
+256651
+256661
+256687
+256699
+256721
+256723
+256757
+256771
+256799
+256801
+256813
+256831
+256873
+256877
+256889
+256901
+256903
+256931
+256939
+256957
+256967
+256981
+257003
+257017
+257053
+257069
+257077
+257093
+257099
+257107
+257123
+257141
+257161
+257171
+257177
+257189
+257219
+257221
+257239
+257249
+257263
+257273
+257281
+257287
+257293
+257297
+257311
+257321
+257339
+257351
+257353
+257371
+257381
+257399
+257401
+257407
+257437
+257443
+257447
+257459
+257473
+257489
+257497
+257501
+257503
+257519
+257539
+257561
+257591
+257611
+257627
+257639
+257657
+257671
+257687
+257689
+257707
+257711
+257713
+257717
+257731
+257783
+257791
+257797
+257837
+257857
+257861
+257863
+257867
+257869
+257879
+257893
+257903
+257921
+257947
+257953
+257981
+257987
+257989
+257993
+258019
+258023
+258031
+258061
+258067
+258101
+258107
+258109
+258113
+258119
+258127
+258131
+258143
+258157
+258161
+258173
+258197
+258211
+258233
+258241
+258253
+258277
+258283
+258299
+258317
+258319
+258329
+258331
+258337
+258353
+258373
+258389
+258403
+258407
+258413
+258421
+258437
+258443
+258449
+258469
+258487
+258491
+258499
+258521
+258527
+258539
+258551
+258563
+258569
+258581
+258607
+258611
+258613
+258617
+258623
+258631
+258637
+258659
+258673
+258677
+258691
+258697
+258703
+258707
+258721
+258733
+258737
+258743
+258763
+258779
+258787
+258803
+258809
+258827
+258847
+258871
+258887
+258917
+258919
+258949
+258959
+258967
+258971
+258977
+258983
+258991
+259001
+259009
+259019
+259033
+259099
+259121
+259123
+259151
+259157
+259159
+259163
+259169
+259177
+259183
+259201
+259211
+259213
+259219
+259229
+259271
+259277
+259309
+259321
+259339
+259379
+259381
+259387
+259397
+259411
+259421
+259429
+259451
+259453
+259459
+259499
+259507
+259517
+259531
+259537
+259547
+259577
+259583
+259603
+259619
+259621
+259627
+259631
+259639
+259643
+259657
+259667
+259681
+259691
+259697
+259717
+259723
+259733
+259751
+259771
+259781
+259783
+259801
+259813
+259823
+259829
+259837
+259841
+259867
+259907
+259933
+259937
+259943
+259949
+259967
+259991
+259993
+260003
+260009
+260011
+260017
+260023
+260047
+260081
+260089
+260111
+260137
+260171
+260179
+260189
+260191
+260201
+260207
+260209
+260213
+260231
+260263
+260269
+260317
+260329
+260339
+260363
+260387
+260399
+260411
+260413
+260417
+260419
+260441
+260453
+260461
+260467
+260483
+260489
+260527
+260539
+260543
+260549
+260551
+260569
+260573
+260581
+260587
+260609
+260629
+260647
+260651
+260671
+260677
+260713
+260717
+260723
+260747
+260753
+260761
+260773
+260791
+260807
+260809
+260849
+260857
+260861
+260863
+260873
+260879
+260893
+260921
+260941
+260951
+260959
+260969
+260983
+260987
+260999
+261011
+261013
+261017
+261031
+261043
+261059
+261061
+261071
+261077
+261089
+261101
+261127
+261167
+261169
+261223
+261229
+261241
+261251
+261271
+261281
+261301
+261323
+261329
+261337
+261347
+261353
+261379
+261389
+261407
+261427
+261431
+261433
+261439
+261451
+261463
+261467
+261509
+261523
+261529
+261557
+261563
+261577
+261581
+261587
+261593
+261601
+261619
+261631
+261637
+261641
+261643
+261673
+261697
+261707
+261713
+261721
+261739
+261757
+261761
+261773
+261787
+261791
+261799
+261823
+261847
+261881
+261887
+261917
+261959
+261971
+261973
+261977
+261983
+262007
+262027
+262049
+262051
+262069
+262079
+262103
+262109
+262111
+262121
+262127
+262133
+262139
+262147
+262151
+262153
+262187
+262193
+262217
+262231
+262237
+262253
+262261
+262271
+262303
+262313
+262321
+262331
+262337
+262349
+262351
+262369
+262387
+262391
+262399
+262411
+262433
+262459
+262469
+262489
+262501
+262511
+262513
+262519
+262541
+262543
+262553
+262567
+262583
+262597
+262621
+262627
+262643
+262649
+262651
+262657
+262681
+262693
+262697
+262709
+262723
+262733
+262739
+262741
+262747
+262781
+262783
+262807
+262819
+262853
+262877
+262883
+262897
+262901
+262909
+262937
+262949
+262957
+262981
+263009
+263023
+263047
+263063
+263071
+263077
+263083
+263089
+263101
+263111
+263119
+263129
+263167
+263171
+263183
+263191
+263201
+263209
+263213
+263227
+263239
+263257
+263267
+263269
+263273
+263287
+263293
+263303
+263323
+263369
+263383
+263387
+263399
+263401
+263411
+263423
+263429
+263437
+263443
+263489
+263491
+263503
+263513
+263519
+263521
+263533
+263537
+263561
+263567
+263573
+263591
+263597
+263609
+263611
+263621
+263647
+263651
+263657
+263677
+263723
+263729
+263737
+263759
+263761
+263803
+263819
+263821
+263827
+263843
+263849
+263863
+263867
+263869
+263881
+263899
+263909
+263911
+263927
+263933
+263941
+263951
+263953
+263957
+263983
+264007
+264013
+264029
+264031
+264053
+264059
+264071
+264083
+264091
+264101
+264113
+264127
+264133
+264137
+264139
+264167
+264169
+264179
+264211
+264221
+264263
+264269
+264283
+264289
+264301
+264323
+264331
+264343
+264349
+264353
+264359
+264371
+264391
+264403
+264437
+264443
+264463
+264487
+264527
+264529
+264553
+264559
+264577
+264581
+264599
+264601
+264619
+264631
+264637
+264643
+264659
+264697
+264731
+264739
+264743
+264749
+264757
+264763
+264769
+264779
+264787
+264791
+264793
+264811
+264827
+264829
+264839
+264871
+264881
+264889
+264893
+264899
+264919
+264931
+264949
+264959
+264961
+264977
+264991
+264997
+265003
+265007
+265021
+265037
+265079
+265091
+265093
+265117
+265123
+265129
+265141
+265151
+265157
+265163
+265169
+265193
+265207
+265231
+265241
+265247
+265249
+265261
+265271
+265273
+265277
+265313
+265333
+265337
+265339
+265381
+265399
+265403
+265417
+265423
+265427
+265451
+265459
+265471
+265483
+265493
+265511
+265513
+265541
+265543
+265547
+265561
+265567
+265571
+265579
+265607
+265613
+265619
+265621
+265703
+265709
+265711
+265717
+265729
+265739
+265747
+265757
+265781
+265787
+265807
+265813
+265819
+265831
+265841
+265847
+265861
+265871
+265873
+265883
+265891
+265921
+265957
+265961
+265987
+266003
+266009
+266023
+266027
+266029
+266047
+266051
+266053
+266059
+266081
+266083
+266089
+266093
+266099
+266111
+266117
+266129
+266137
+266153
+266159
+266177
+266183
+266221
+266239
+266261
+266269
+266281
+266291
+266293
+266297
+266333
+266351
+266353
+266359
+266369
+266381
+266401
+266411
+266417
+266447
+266449
+266477
+266479
+266489
+266491
+266521
+266549
+266587
+266599
+266603
+266633
+266641
+266647
+266663
+266671
+266677
+266681
+266683
+266687
+266689
+266701
+266711
+266719
+266759
+266767
+266797
+266801
+266821
+266837
+266839
+266863
+266867
+266891
+266897
+266899
+266909
+266921
+266927
+266933
+266947
+266953
+266957
+266971
+266977
+266983
+266993
+266999
+267017
+267037
+267049
+267097
+267131
+267133
+267139
+267143
+267167
+267187
+267193
+267199
+267203
+267217
+267227
+267229
+267233
+267259
+267271
+267277
+267299
+267301
+267307
+267317
+267341
+267353
+267373
+267389
+267391
+267401
+267403
+267413
+267419
+267431
+267433
+267439
+267451
+267469
+267479
+267481
+267493
+267497
+267511
+267517
+267521
+267523
+267541
+267551
+267557
+267569
+267581
+267587
+267593
+267601
+267611
+267613
+267629
+267637
+267643
+267647
+267649
+267661
+267667
+267671
+267677
+267679
+267713
+267719
+267721
+267727
+267737
+267739
+267749
+267763
+267781
+267791
+267797
+267803
+267811
+267829
+267833
+267857
+267863
+267877
+267887
+267893
+267899
+267901
+267907
+267913
+267929
+267941
+267959
+267961
+268003
+268013
+268043
+268049
+268063
+268069
+268091
+268123
+268133
+268153
+268171
+268189
+268199
+268207
+268211
+268237
+268253
+268267
+268271
+268283
+268291
+268297
+268343
+268403
+268439
+268459
+268487
+268493
+268501
+268507
+268517
+268519
+268529
+268531
+268537
+268547
+268573
+268607
+268613
+268637
+268643
+268661
+268693
+268721
+268729
+268733
+268747
+268757
+268759
+268771
+268777
+268781
+268783
+268789
+268811
+268813
+268817
+268819
+268823
+268841
+268843
+268861
+268883
+268897
+268909
+268913
+268921
+268927
+268937
+268969
+268973
+268979
+268993
+268997
+268999
+269023
+269029
+269039
+269041
+269057
+269063
+269069
+269089
+269117
+269131
+269141
+269167
+269177
+269179
+269183
+269189
+269201
+269209
+269219
+269221
+269231
+269237
+269251
+269257
+269281
+269317
+269327
+269333
+269341
+269351
+269377
+269383
+269387
+269389
+269393
+269413
+269419
+269429
+269431
+269441
+269461
+269473
+269513
+269519
+269527
+269539
+269543
+269561
+269573
+269579
+269597
+269617
+269623
+269641
+269651
+269663
+269683
+269701
+269713
+269719
+269723
+269741
+269749
+269761
+269779
+269783
+269791
+269851
+269879
+269887
+269891
+269897
+269923
+269939
+269947
+269953
+269981
+269987
+270001
+270029
+270031
+270037
+270059
+270071
+270073
+270097
+270121
+270131
+270133
+270143
+270157
+270163
+270167
+270191
+270209
+270217
+270223
+270229
+270239
+270241
+270269
+270271
+270287
+270299
+270307
+270311
+270323
+270329
+270337
+270343
+270371
+270379
+270407
+270421
+270437
+270443
+270451
+270461
+270463
+270493
+270509
+270527
+270539
+270547
+270551
+270553
+270563
+270577
+270583
+270587
+270593
+270601
+270619
+270631
+270653
+270659
+270667
+270679
+270689
+270701
+270709
+270719
+270737
+270749
+270761
+270763
+270791
+270797
+270799
+270821
+270833
+270841
+270859
+270899
+270913
+270923
+270931
+270937
+270953
+270961
+270967
+270973
+271003
+271013
+271021
+271027
+271043
+271057
+271067
+271079
+271097
+271109
+271127
+271129
+271163
+271169
+271177
+271181
+271211
+271217
+271231
+271241
+271253
+271261
+271273
+271277
+271279
+271289
+271333
+271351
+271357
+271363
+271367
+271393
+271409
+271429
+271451
+271463
+271471
+271483
+271489
+271499
+271501
+271517
+271549
+271553
+271571
+271573
+271597
+271603
+271619
+271637
+271639
+271651
+271657
+271693
+271703
+271723
+271729
+271753
+271769
+271771
+271787
+271807
+271811
+271829
+271841
+271849
+271853
+271861
+271867
+271879
+271897
+271903
+271919
+271927
+271939
+271967
+271969
+271981
+272003
+272009
+272011
+272029
+272039
+272053
+272059
+272093
+272131
+272141
+272171
+272179
+272183
+272189
+272191
+272201
+272203
+272227
+272231
+272249
+272257
+272263
+272267
+272269
+272287
+272299
+272317
+272329
+272333
+272341
+272347
+272351
+272353
+272359
+272369
+272381
+272383
+272399
+272407
+272411
+272417
+272423
+272449
+272453
+272477
+272507
+272533
+272537
+272539
+272549
+272563
+272567
+272581
+272603
+272621
+272651
+272659
+272683
+272693
+272717
+272719
+272737
+272759
+272761
+272771
+272777
+272807
+272809
+272813
+272863
+272879
+272887
+272903
+272911
+272917
+272927
+272933
+272959
+272971
+272981
+272983
+272989
+272999
+273001
+273029
+273043
+273047
+273059
+273061
+273067
+273073
+273083
+273107
+273113
+273127
+273131
+273149
+273157
+273181
+273187
+273193
+273233
+273253
+273269
+273271
+273281
+273283
+273289
+273311
+273313
+273323
+273349
+273359
+273367
+273433
+273457
+273473
+273503
+273517
+273521
+273527
+273551
+273569
+273601
+273613
+273617
+273629
+273641
+273643
+273653
+273697
+273709
+273719
+273727
+273739
+273773
+273787
+273797
+273803
+273821
+273827
+273857
+273881
+273899
+273901
+273913
+273919
+273929
+273941
+273943
+273967
+273971
+273979
+273997
+274007
+274019
+274033
+274061
+274069
+274081
+274093
+274103
+274117
+274121
+274123
+274139
+274147
+274163
+274171
+274177
+274187
+274199
+274201
+274213
+274223
+274237
+274243
+274259
+274271
+274277
+274283
+274301
+274333
+274349
+274357
+274361
+274403
+274423
+274441
+274451
+274453
+274457
+274471
+274489
+274517
+274529
+274579
+274583
+274591
+274609
+274627
+274661
+274667
+274679
+274693
+274697
+274709
+274711
+274723
+274739
+274751
+274777
+274783
+274787
+274811
+274817
+274829
+274831
+274837
+274843
+274847
+274853
+274861
+274867
+274871
+274889
+274909
+274931
+274943
+274951
+274957
+274961
+274973
+274993
+275003
+275027
+275039
+275047
+275053
+275059
+275083
+275087
+275129
+275131
+275147
+275153
+275159
+275161
+275167
+275183
+275201
+275207
+275227
+275251
+275263
+275269
+275299
+275309
+275321
+275323
+275339
+275357
+275371
+275389
+275393
+275399
+275419
+275423
+275447
+275449
+275453
+275459
+275461
+275489
+275491
+275503
+275521
+275531
+275543
+275549
+275573
+275579
+275581
+275591
+275593
+275599
+275623
+275641
+275651
+275657
+275669
+275677
+275699
+275711
+275719
+275729
+275741
+275767
+275773
+275783
+275813
+275827
+275837
+275881
+275897
+275911
+275917
+275921
+275923
+275929
+275939
+275941
+275963
+275969
+275981
+275987
+275999
+276007
+276011
+276019
+276037
+276041
+276043
+276047
+276049
+276079
+276083
+276091
+276113
+276137
+276151
+276173
+276181
+276187
+276191
+276209
+276229
+276239
+276247
+276251
+276257
+276277
+276293
+276319
+276323
+276337
+276343
+276347
+276359
+276371
+276373
+276389
+276401
+276439
+276443
+276449
+276461
+276467
+276487
+276499
+276503
+276517
+276527
+276553
+276557
+276581
+276587
+276589
+276593
+276599
+276623
+276629
+276637
+276671
+276673
+276707
+276721
+276739
+276763
+276767
+276779
+276781
+276817
+276821
+276823
+276827
+276833
+276839
+276847
+276869
+276883
+276901
+276907
+276917
+276919
+276929
+276949
+276953
+276961
+276977
+277003
+277007
+277021
+277051
+277063
+277073
+277087
+277097
+277099
+277157
+277163
+277169
+277177
+277183
+277213
+277217
+277223
+277231
+277247
+277259
+277261
+277273
+277279
+277297
+277301
+277309
+277331
+277363
+277373
+277411
+277421
+277427
+277429
+277483
+277493
+277499
+277513
+277531
+277547
+277549
+277567
+277577
+277579
+277597
+277601
+277603
+277637
+277639
+277643
+277657
+277663
+277687
+277691
+277703
+277741
+277747
+277751
+277757
+277787
+277789
+277793
+277813
+277829
+277847
+277859
+277883
+277889
+277891
+277897
+277903
+277919
+277961
+277993
+277999
+278017
+278029
+278041
+278051
+278063
+278071
+278087
+278111
+278119
+278123
+278143
+278147
+278149
+278177
+278191
+278207
+278209
+278219
+278227
+278233
+278237
+278261
+278269
+278279
+278321
+278329
+278347
+278353
+278363
+278387
+278393
+278413
+278437
+278459
+278479
+278489
+278491
+278497
+278501
+278503
+278543
+278549
+278557
+278561
+278563
+278581
+278591
+278609
+278611
+278617
+278623
+278627
+278639
+278651
+278671
+278687
+278689
+278701
+278717
+278741
+278743
+278753
+278767
+278801
+278807
+278809
+278813
+278819
+278827
+278843
+278849
+278867
+278879
+278881
+278891
+278903
+278909
+278911
+278917
+278947
+278981
+279001
+279007
+279023
+279029
+279047
+279073
+279109
+279119
+279121
+279127
+279131
+279137
+279143
+279173
+279179
+279187
+279203
+279211
+279221
+279269
+279311
+279317
+279329
+279337
+279353
+279397
+279407
+279413
+279421
+279431
+279443
+279451
+279479
+279481
+279511
+279523
+279541
+279551
+279553
+279557
+279571
+279577
+279583
+279593
+279607
+279613
+279619
+279637
+279641
+279649
+279659
+279679
+279689
+279707
+279709
+279731
+279751
+279761
+279767
+279779
+279817
+279823
+279847
+279857
+279863
+279883
+279913
+279919
+279941
+279949
+279967
+279977
+279991
+280001
+280009
+280013
+280031
+280037
+280061
+280069
+280097
+280099
+280103
+280121
+280129
+280139
+280183
+280187
+280199
+280207
+280219
+280223
+280229
+280243
+280249
+280253
+280277
+280297
+280303
+280321
+280327
+280337
+280339
+280351
+280373
+280409
+280411
+280451
+280463
+280487
+280499
+280507
+280513
+280537
+280541
+280547
+280549
+280561
+280583
+280589
+280591
+280597
+280603
+280607
+280613
+280627
+280639
+280673
+280681
+280697
+280699
+280703
+280711
+280717
+280729
+280751
+280759
+280769
+280771
+280811
+280817
+280837
+280843
+280859
+280871
+280879
+280883
+280897
+280909
+280913
+280921
+280927
+280933
+280939
+280949
+280957
+280963
+280967
+280979
+280997
+281023
+281033
+281053
+281063
+281069
+281081
+281117
+281131
+281153
+281159
+281167
+281189
+281191
+281207
+281227
+281233
+281243
+281249
+281251
+281273
+281279
+281291
+281297
+281317
+281321
+281327
+281339
+281353
+281357
+281363
+281381
+281419
+281423
+281429
+281431
+281509
+281527
+281531
+281539
+281549
+281551
+281557
+281563
+281579
+281581
+281609
+281621
+281623
+281627
+281641
+281647
+281651
+281653
+281663
+281669
+281683
+281717
+281719
+281737
+281747
+281761
+281767
+281777
+281783
+281791
+281797
+281803
+281807
+281833
+281837
+281839
+281849
+281857
+281867
+281887
+281893
+281921
+281923
+281927
+281933
+281947
+281959
+281971
+281989
+281993
+282001
+282011
+282019
+282053
+282059
+282071
+282089
+282091
+282097
+282101
+282103
+282127
+282143
+282157
+282167
+282221
+282229
+282239
+282241
+282253
+282281
+282287
+282299
+282307
+282311
+282313
+282349
+282377
+282383
+282389
+282391
+282407
+282409
+282413
+282427
+282439
+282461
+282481
+282487
+282493
+282559
+282563
+282571
+282577
+282589
+282599
+282617
+282661
+282671
+282677
+282679
+282683
+282691
+282697
+282703
+282707
+282713
+282767
+282769
+282773
+282797
+282809
+282827
+282833
+282847
+282851
+282869
+282881
+282889
+282907
+282911
+282913
+282917
+282959
+282973
+282977
+282991
+283001
+283007
+283009
+283027
+283051
+283079
+283093
+283097
+283099
+283111
+283117
+283121
+283133
+283139
+283159
+283163
+283181
+283183
+283193
+283207
+283211
+283267
+283277
+283289
+283303
+283369
+283397
+283403
+283411
+283447
+283463
+283487
+283489
+283501
+283511
+283519
+283541
+283553
+283571
+283573
+283579
+283583
+283601
+283607
+283609
+283631
+283637
+283639
+283669
+283687
+283697
+283721
+283741
+283763
+283769
+283771
+283793
+283799
+283807
+283813
+283817
+283831
+283837
+283859
+283861
+283873
+283909
+283937
+283949
+283957
+283961
+283979
+284003
+284023
+284041
+284051
+284057
+284059
+284083
+284093
+284111
+284117
+284129
+284131
+284149
+284153
+284159
+284161
+284173
+284191
+284201
+284227
+284231
+284233
+284237
+284243
+284261
+284267
+284269
+284293
+284311
+284341
+284357
+284369
+284377
+284387
+284407
+284413
+284423
+284429
+284447
+284467
+284477
+284483
+284489
+284507
+284509
+284521
+284527
+284539
+284551
+284561
+284573
+284587
+284591
+284593
+284623
+284633
+284651
+284657
+284659
+284681
+284689
+284701
+284707
+284723
+284729
+284731
+284737
+284741
+284743
+284747
+284749
+284759
+284777
+284783
+284803
+284807
+284813
+284819
+284831
+284833
+284839
+284857
+284881
+284897
+284899
+284917
+284927
+284957
+284969
+284989
+285007
+285023
+285031
+285049
+285071
+285079
+285091
+285101
+285113
+285119
+285121
+285139
+285151
+285161
+285179
+285191
+285199
+285221
+285227
+285251
+285281
+285283
+285287
+285289
+285301
+285317
+285343
+285377
+285421
+285433
+285451
+285457
+285463
+285469
+285473
+285497
+285517
+285521
+285533
+285539
+285553
+285557
+285559
+285569
+285599
+285611
+285613
+285629
+285631
+285641
+285643
+285661
+285667
+285673
+285697
+285707
+285709
+285721
+285731
+285749
+285757
+285763
+285767
+285773
+285781
+285823
+285827
+285839
+285841
+285871
+285937
+285949
+285953
+285977
+285979
+285983
+285997
+286001
+286009
+286019
+286043
+286049
+286061
+286063
+286073
+286103
+286129
+286163
+286171
+286199
+286243
+286249
+286289
+286301
+286333
+286367
+286369
+286381
+286393
+286397
+286411
+286421
+286427
+286453
+286457
+286459
+286469
+286477
+286483
+286487
+286493
+286499
+286513
+286519
+286541
+286543
+286547
+286553
+286589
+286591
+286609
+286613
+286619
+286633
+286651
+286673
+286687
+286697
+286703
+286711
+286721
+286733
+286751
+286753
+286763
+286771
+286777
+286789
+286801
+286813
+286831
+286859
+286873
+286927
+286973
+286981
+286987
+286999
+287003
+287047
+287057
+287059
+287087
+287093
+287099
+287107
+287117
+287137
+287141
+287149
+287159
+287167
+287173
+287179
+287191
+287219
+287233
+287237
+287239
+287251
+287257
+287269
+287279
+287281
+287291
+287297
+287321
+287327
+287333
+287341
+287347
+287383
+287387
+287393
+287437
+287449
+287491
+287501
+287503
+287537
+287549
+287557
+287579
+287597
+287611
+287629
+287669
+287671
+287681
+287689
+287701
+287731
+287747
+287783
+287789
+287801
+287813
+287821
+287849
+287851
+287857
+287863
+287867
+287873
+287887
+287921
+287933
+287939
+287977
+288007
+288023
+288049
+288053
+288061
+288077
+288089
+288109
+288137
+288179
+288181
+288191
+288199
+288203
+288209
+288227
+288241
+288247
+288257
+288283
+288293
+288307
+288313
+288317
+288349
+288359
+288361
+288383
+288389
+288403
+288413
+288427
+288433
+288461
+288467
+288481
+288493
+288499
+288527
+288529
+288539
+288551
+288559
+288571
+288577
+288583
+288647
+288649
+288653
+288661
+288679
+288683
+288689
+288697
+288731
+288733
+288751
+288767
+288773
+288803
+288817
+288823
+288833
+288839
+288851
+288853
+288877
+288907
+288913
+288929
+288931
+288947
+288973
+288979
+288989
+288991
+288997
+289001
+289019
+289021
+289031
+289033
+289039
+289049
+289063
+289067
+289099
+289103
+289109
+289111
+289127
+289129
+289139
+289141
+289151
+289169
+289171
+289181
+289189
+289193
+289213
+289241
+289243
+289249
+289253
+289273
+289283
+289291
+289297
+289309
+289319
+289343
+289349
+289361
+289369
+289381
+289397
+289417
+289423
+289439
+289453
+289463
+289469
+289477
+289489
+289511
+289543
+289559
+289573
+289577
+289589
+289603
+289607
+289637
+289643
+289657
+289669
+289717
+289721
+289727
+289733
+289741
+289759
+289763
+289771
+289789
+289837
+289841
+289843
+289847
+289853
+289859
+289871
+289889
+289897
+289937
+289951
+289957
+289967
+289973
+289987
+289999
+290011
+290021
+290023
+290027
+290033
+290039
+290041
+290047
+290057
+290083
+290107
+290113
+290119
+290137
+290141
+290161
+290183
+290189
+290201
+290209
+290219
+290233
+290243
+290249
+290317
+290327
+290347
+290351
+290359
+290369
+290383
+290393
+290399
+290419
+290429
+290441
+290443
+290447
+290471
+290473
+290489
+290497
+290509
+290527
+290531
+290533
+290539
+290557
+290593
+290597
+290611
+290617
+290621
+290623
+290627
+290657
+290659
+290663
+290669
+290671
+290677
+290701
+290707
+290711
+290737
+290761
+290767
+290791
+290803
+290821
+290827
+290837
+290839
+290861
+290869
+290879
+290897
+290923
+290959
+290963
+290971
+290987
+290993
+290999
+291007
+291013
+291037
+291041
+291043
+291077
+291089
+291101
+291103
+291107
+291113
+291143
+291167
+291169
+291173
+291191
+291199
+291209
+291217
+291253
+291257
+291271
+291287
+291293
+291299
+291331
+291337
+291349
+291359
+291367
+291371
+291373
+291377
+291419
+291437
+291439
+291443
+291457
+291481
+291491
+291503
+291509
+291521
+291539
+291547
+291559
+291563
+291569
+291619
+291647
+291649
+291661
+291677
+291689
+291691
+291701
+291721
+291727
+291743
+291751
+291779
+291791
+291817
+291829
+291833
+291853
+291857
+291869
+291877
+291887
+291899
+291901
+291923
+291971
+291979
+291983
+291997
+292021
+292027
+292037
+292057
+292069
+292079
+292081
+292091
+292093
+292133
+292141
+292147
+292157
+292181
+292183
+292223
+292231
+292241
+292249
+292267
+292283
+292301
+292309
+292319
+292343
+292351
+292363
+292367
+292381
+292393
+292427
+292441
+292459
+292469
+292471
+292477
+292483
+292489
+292493
+292517
+292531
+292541
+292549
+292561
+292573
+292577
+292601
+292627
+292631
+292661
+292667
+292673
+292679
+292693
+292703
+292709
+292711
+292717
+292727
+292753
+292759
+292777
+292793
+292801
+292807
+292819
+292837
+292841
+292849
+292867
+292879
+292909
+292921
+292933
+292969
+292973
+292979
+292993
+293021
+293071
+293081
+293087
+293093
+293099
+293107
+293123
+293129
+293147
+293149
+293173
+293177
+293179
+293201
+293207
+293213
+293221
+293257
+293261
+293263
+293269
+293311
+293329
+293339
+293351
+293357
+293399
+293413
+293431
+293441
+293453
+293459
+293467
+293473
+293483
+293507
+293543
+293599
+293603
+293617
+293621
+293633
+293639
+293651
+293659
+293677
+293681
+293701
+293717
+293723
+293729
+293749
+293767
+293773
+293791
+293803
+293827
+293831
+293861
+293863
+293893
+293899
+293941
+293957
+293983
+293989
+293999
+294001
+294013
+294023
+294029
+294043
+294053
+294059
+294067
+294103
+294127
+294131
+294149
+294157
+294167
+294169
+294179
+294181
+294199
+294211
+294223
+294227
+294241
+294247
+294251
+294269
+294277
+294289
+294293
+294311
+294313
+294317
+294319
+294337
+294341
+294347
+294353
+294383
+294391
+294397
+294403
+294431
+294439
+294461
+294467
+294479
+294499
+294509
+294523
+294529
+294551
+294563
+294629
+294641
+294647
+294649
+294659
+294673
+294703
+294731
+294751
+294757
+294761
+294773
+294781
+294787
+294793
+294799
+294803
+294809
+294821
+294829
+294859
+294869
+294887
+294893
+294911
+294919
+294923
+294947
+294949
+294953
+294979
+294989
+294991
+294997
+295007
+295033
+295037
+295039
+295049
+295073
+295079
+295081
+295111
+295123
+295129
+295153
+295187
+295199
+295201
+295219
+295237
+295247
+295259
+295271
+295277
+295283
+295291
+295313
+295319
+295333
+295357
+295363
+295387
+295411
+295417
+295429
+295433
+295439
+295441
+295459
+295513
+295517
+295541
+295553
+295567
+295571
+295591
+295601
+295663
+295693
+295699
+295703
+295727
+295751
+295759
+295769
+295777
+295787
+295819
+295831
+295837
+295843
+295847
+295853
+295861
+295871
+295873
+295877
+295879
+295901
+295903
+295909
+295937
+295943
+295949
+295951
+295961
+295973
+295993
+296011
+296017
+296027
+296041
+296047
+296071
+296083
+296099
+296117
+296129
+296137
+296159
+296183
+296201
+296213
+296221
+296237
+296243
+296249
+296251
+296269
+296273
+296279
+296287
+296299
+296347
+296353
+296363
+296369
+296377
+296437
+296441
+296473
+296477
+296479
+296489
+296503
+296507
+296509
+296519
+296551
+296557
+296561
+296563
+296579
+296581
+296587
+296591
+296627
+296651
+296663
+296669
+296683
+296687
+296693
+296713
+296719
+296729
+296731
+296741
+296749
+296753
+296767
+296771
+296773
+296797
+296801
+296819
+296827
+296831
+296833
+296843
+296909
+296911
+296921
+296929
+296941
+296969
+296971
+296981
+296983
+296987
+297019
+297023
+297049
+297061
+297067
+297079
+297083
+297097
+297113
+297133
+297151
+297161
+297169
+297191
+297233
+297247
+297251
+297257
+297263
+297289
+297317
+297359
+297371
+297377
+297391
+297397
+297403
+297421
+297439
+297457
+297467
+297469
+297481
+297487
+297503
+297509
+297523
+297533
+297581
+297589
+297601
+297607
+297613
+297617
+297623
+297629
+297641
+297659
+297683
+297691
+297707
+297719
+297727
+297757
+297779
+297793
+297797
+297809
+297811
+297833
+297841
+297853
+297881
+297889
+297893
+297907
+297911
+297931
+297953
+297967
+297971
+297989
+297991
+298013
+298021
+298031
+298043
+298049
+298063
+298087
+298093
+298099
+298153
+298157
+298159
+298169
+298171
+298187
+298201
+298211
+298213
+298223
+298237
+298247
+298261
+298283
+298303
+298307
+298327
+298339
+298343
+298349
+298369
+298373
+298399
+298409
+298411
+298427
+298451
+298477
+298483
+298513
+298559
+298579
+298583
+298589
+298601
+298607
+298621
+298631
+298651
+298667
+298679
+298681
+298687
+298691
+298693
+298709
+298723
+298733
+298757
+298759
+298777
+298799
+298801
+298817
+298819
+298841
+298847
+298853
+298861
+298897
+298937
+298943
+298993
+298999
+299011
+299017
+299027
+299029
+299053
+299059
+299063
+299087
+299099
+299107
+299113
+299137
+299147
+299171
+299179
+299191
+299197
+299213
+299239
+299261
+299281
+299287
+299311
+299317
+299329
+299333
+299357
+299359
+299363
+299371
+299389
+299393
+299401
+299417
+299419
+299447
+299471
+299473
+299477
+299479
+299501
+299513
+299521
+299527
+299539
+299567
+299569
+299603
+299617
+299623
+299653
+299671
+299681
+299683
+299699
+299701
+299711
+299723
+299731
+299743
+299749
+299771
+299777
+299807
+299843
+299857
+299861
+299881
+299891
+299903
+299909
+299933
+299941
+299951
+299969
+299977
+299983
+299993
+300007
+300017
+300023
+300043
+300073
+300089
+300109
+300119
+300137
+300149
+300151
+300163
+300187
+300191
+300193
+300221
+300229
+300233
+300239
+300247
+300277
+300299
+300301
+300317
+300319
+300323
+300331
+300343
+300347
+300367
+300397
+300413
+300427
+300431
+300439
+300463
+300481
+300491
+300493
+300497
+300499
+300511
+300557
+300569
+300581
+300583
+300589
+300593
+300623
+300631
+300647
+300649
+300661
+300667
+300673
+300683
+300691
+300719
+300721
+300733
+300739
+300743
+300749
+300757
+300761
+300779
+300787
+300799
+300809
+300821
+300823
+300851
+300857
+300869
+300877
+300889
+300893
+300929
+300931
+300953
+300961
+300967
+300973
+300977
+300997
+301013
+301027
+301039
+301051
+301057
+301073
+301079
+301123
+301127
+301141
+301153
+301159
+301177
+301181
+301183
+301211
+301219
+301237
+301241
+301243
+301247
+301267
+301303
+301319
+301331
+301333
+301349
+301361
+301363
+301381
+301403
+301409
+301423
+301429
+301447
+301459
+301463
+301471
+301487
+301489
+301493
+301501
+301531
+301577
+301579
+301583
+301591
+301601
+301619
+301627
+301643
+301649
+301657
+301669
+301673
+301681
+301703
+301711
+301747
+301751
+301753
+301759
+301789
+301793
+301813
+301831
+301841
+301843
+301867
+301877
+301897
+301901
+301907
+301913
+301927
+301933
+301943
+301949
+301979
+301991
+301993
+301997
+301999
+302009
+302053
+302111
+302123
+302143
+302167
+302171
+302173
+302189
+302191
+302213
+302221
+302227
+302261
+302273
+302279
+302287
+302297
+302299
+302317
+302329
+302399
+302411
+302417
+302429
+302443
+302459
+302483
+302507
+302513
+302551
+302563
+302567
+302573
+302579
+302581
+302587
+302593
+302597
+302609
+302629
+302647
+302663
+302681
+302711
+302723
+302747
+302759
+302767
+302779
+302791
+302801
+302831
+302833
+302837
+302843
+302851
+302857
+302873
+302891
+302903
+302909
+302921
+302927
+302941
+302959
+302969
+302971
+302977
+302983
+302989
+302999
+303007
+303011
+303013
+303019
+303029
+303049
+303053
+303073
+303089
+303091
+303097
+303119
+303139
+303143
+303151
+303157
+303187
+303217
+303257
+303271
+303283
+303287
+303293
+303299
+303307
+303313
+303323
+303337
+303341
+303361
+303367
+303371
+303377
+303379
+303389
+303409
+303421
+303431
+303463
+303469
+303473
+303491
+303493
+303497
+303529
+303539
+303547
+303551
+303553
+303571
+303581
+303587
+303593
+303613
+303617
+303619
+303643
+303647
+303649
+303679
+303683
+303689
+303691
+303703
+303713
+303727
+303731
+303749
+303767
+303781
+303803
+303817
+303827
+303839
+303859
+303871
+303889
+303907
+303917
+303931
+303937
+303959
+303983
+303997
+304009
+304013
+304021
+304033
+304039
+304049
+304063
+304067
+304069
+304081
+304091
+304099
+304127
+304151
+304153
+304163
+304169
+304193
+304211
+304217
+304223
+304253
+304259
+304279
+304301
+304303
+304331
+304349
+304357
+304363
+304373
+304391
+304393
+304411
+304417
+304429
+304433
+304439
+304457
+304459
+304477
+304481
+304489
+304501
+304511
+304517
+304523
+304537
+304541
+304553
+304559
+304561
+304597
+304609
+304631
+304643
+304651
+304663
+304687
+304709
+304723
+304729
+304739
+304751
+304757
+304763
+304771
+304781
+304789
+304807
+304813
+304831
+304847
+304849
+304867
+304879
+304883
+304897
+304901
+304903
+304907
+304933
+304937
+304943
+304949
+304961
+304979
+304981
+305017
+305021
+305023
+305029
+305033
+305047
+305069
+305093
+305101
+305111
+305113
+305119
+305131
+305143
+305147
+305209
+305219
+305231
+305237
+305243
+305267
+305281
+305297
+305329
+305339
+305351
+305353
+305363
+305369
+305377
+305401
+305407
+305411
+305413
+305419
+305423
+305441
+305449
+305471
+305477
+305479
+305483
+305489
+305497
+305521
+305533
+305551
+305563
+305581
+305593
+305597
+305603
+305611
+305621
+305633
+305639
+305663
+305717
+305719
+305741
+305743
+305749
+305759
+305761
+305771
+305783
+305803
+305821
+305839
+305849
+305857
+305861
+305867
+305873
+305917
+305927
+305933
+305947
+305971
+305999
+306011
+306023
+306029
+306041
+306049
+306083
+306091
+306121
+306133
+306139
+306149
+306157
+306167
+306169
+306191
+306193
+306209
+306239
+306247
+306253
+306259
+306263
+306301
+306329
+306331
+306347
+306349
+306359
+306367
+306377
+306389
+306407
+306419
+306421
+306431
+306437
+306457
+306463
+306473
+306479
+306491
+306503
+306511
+306517
+306529
+306533
+306541
+306563
+306577
+306587
+306589
+306643
+306653
+306661
+306689
+306701
+306703
+306707
+306727
+306739
+306749
+306763
+306781
+306809
+306821
+306827
+306829
+306847
+306853
+306857
+306871
+306877
+306883
+306893
+306899
+306913
+306919
+306941
+306947
+306949
+306953
+306991
+307009
+307019
+307031
+307033
+307067
+307079
+307091
+307093
+307103
+307121
+307129
+307147
+307163
+307169
+307171
+307187
+307189
+307201
+307243
+307253
+307259
+307261
+307267
+307273
+307277
+307283
+307289
+307301
+307337
+307339
+307361
+307367
+307381
+307397
+307399
+307409
+307423
+307451
+307471
+307481
+307511
+307523
+307529
+307537
+307543
+307577
+307583
+307589
+307609
+307627
+307631
+307633
+307639
+307651
+307669
+307687
+307691
+307693
+307711
+307733
+307759
+307817
+307823
+307831
+307843
+307859
+307871
+307873
+307891
+307903
+307919
+307939
+307969
+308003
+308017
+308027
+308041
+308051
+308081
+308093
+308101
+308107
+308117
+308129
+308137
+308141
+308149
+308153
+308213
+308219
+308249
+308263
+308291
+308293
+308303
+308309
+308311
+308317
+308323
+308327
+308333
+308359
+308383
+308411
+308423
+308437
+308447
+308467
+308489
+308491
+308501
+308507
+308509
+308519
+308521
+308527
+308537
+308551
+308569
+308573
+308587
+308597
+308621
+308639
+308641
+308663
+308681
+308701
+308713
+308723
+308761
+308773
+308801
+308809
+308813
+308827
+308849
+308851
+308857
+308887
+308899
+308923
+308927
+308929
+308933
+308939
+308951
+308989
+308999
+309007
+309011
+309013
+309019
+309031
+309037
+309059
+309079
+309083
+309091
+309107
+309109
+309121
+309131
+309137
+309157
+309167
+309173
+309193
+309223
+309241
+309251
+309259
+309269
+309271
+309277
+309289
+309293
+309311
+309313
+309317
+309359
+309367
+309371
+309391
+309403
+309433
+309437
+309457
+309461
+309469
+309479
+309481
+309493
+309503
+309521
+309523
+309539
+309541
+309559
+309571
+309577
+309583
+309599
+309623
+309629
+309637
+309667
+309671
+309677
+309707
+309713
+309731
+309737
+309769
+309779
+309781
+309797
+309811
+309823
+309851
+309853
+309857
+309877
+309899
+309929
+309931
+309937
+309977
+309989
+310019
+310021
+310027
+310043
+310049
+310081
+310087
+310091
+310111
+310117
+310127
+310129
+310169
+310181
+310187
+310223
+310229
+310231
+310237
+310243
+310273
+310283
+310291
+310313
+310333
+310357
+310361
+310363
+310379
+310397
+310423
+310433
+310439
+310447
+310459
+310463
+310481
+310489
+310501
+310507
+310511
+310547
+310553
+310559
+310567
+310571
+310577
+310591
+310627
+310643
+310663
+310693
+310697
+310711
+310721
+310727
+310729
+310733
+310741
+310747
+310771
+310781
+310789
+310801
+310819
+310823
+310829
+310831
+310861
+310867
+310883
+310889
+310901
+310927
+310931
+310949
+310969
+310987
+310997
+311009
+311021
+311027
+311033
+311041
+311099
+311111
+311123
+311137
+311153
+311173
+311177
+311183
+311189
+311197
+311203
+311237
+311279
+311291
+311293
+311299
+311303
+311323
+311329
+311341
+311347
+311359
+311371
+311393
+311407
+311419
+311447
+311453
+311473
+311533
+311537
+311539
+311551
+311557
+311561
+311567
+311569
+311603
+311609
+311653
+311659
+311677
+311681
+311683
+311687
+311711
+311713
+311737
+311743
+311747
+311749
+311791
+311803
+311807
+311821
+311827
+311867
+311869
+311881
+311897
+311951
+311957
+311963
+311981
+312007
+312023
+312029
+312031
+312043
+312047
+312071
+312073
+312083
+312089
+312101
+312107
+312121
+312161
+312197
+312199
+312203
+312209
+312211
+312217
+312229
+312233
+312241
+312251
+312253
+312269
+312281
+312283
+312289
+312311
+312313
+312331
+312343
+312349
+312353
+312371
+312383
+312397
+312401
+312407
+312413
+312427
+312451
+312469
+312509
+312517
+312527
+312551
+312553
+312563
+312581
+312583
+312589
+312601
+312617
+312619
+312623
+312643
+312673
+312677
+312679
+312701
+312703
+312709
+312727
+312737
+312743
+312757
+312773
+312779
+312799
+312839
+312841
+312857
+312863
+312887
+312899
+312929
+312931
+312937
+312941
+312943
+312967
+312971
+312979
+312989
+313003
+313009
+313031
+313037
+313081
+313087
+313109
+313127
+313129
+313133
+313147
+313151
+313153
+313163
+313207
+313211
+313219
+313241
+313249
+313267
+313273
+313289
+313297
+313301
+313307
+313321
+313331
+313333
+313343
+313351
+313373
+313381
+313387
+313399
+313409
+313471
+313477
+313507
+313517
+313543
+313549
+313553
+313561
+313567
+313571
+313583
+313589
+313597
+313603
+313613
+313619
+313637
+313639
+313661
+313669
+313679
+313699
+313711
+313717
+313721
+313727
+313739
+313741
+313763
+313777
+313783
+313829
+313849
+313853
+313879
+313883
+313889
+313897
+313909
+313921
+313931
+313933
+313949
+313961
+313969
+313979
+313981
+313987
+313991
+313993
+313997
+314003
+314021
+314059
+314063
+314077
+314107
+314113
+314117
+314129
+314137
+314159
+314161
+314173
+314189
+314213
+314219
+314227
+314233
+314239
+314243
+314257
+314261
+314263
+314267
+314299
+314329
+314339
+314351
+314357
+314359
+314399
+314401
+314407
+314423
+314441
+314453
+314467
+314491
+314497
+314513
+314527
+314543
+314549
+314569
+314581
+314591
+314597
+314599
+314603
+314623
+314627
+314641
+314651
+314693
+314707
+314711
+314719
+314723
+314747
+314761
+314771
+314777
+314779
+314807
+314813
+314827
+314851
+314879
+314903
+314917
+314927
+314933
+314953
+314957
+314983
+314989
+315011
+315013
+315037
+315047
+315059
+315067
+315083
+315097
+315103
+315109
+315127
+315179
+315181
+315193
+315199
+315223
+315247
+315251
+315257
+315269
+315281
+315313
+315349
+315361
+315373
+315377
+315389
+315407
+315409
+315421
+315437
+315449
+315451
+315461
+315467
+315481
+315493
+315517
+315521
+315527
+315529
+315547
+315551
+315559
+315569
+315589
+315593
+315599
+315613
+315617
+315631
+315643
+315671
+315677
+315691
+315697
+315701
+315703
+315739
+315743
+315751
+315779
+315803
+315811
+315829
+315851
+315857
+315881
+315883
+315893
+315899
+315907
+315937
+315949
+315961
+315967
+315977
+316003
+316031
+316033
+316037
+316051
+316067
+316073
+316087
+316097
+316109
+316133
+316139
+316153
+316177
+316189
+316193
+316201
+316213
+316219
+316223
+316241
+316243
+316259
+316271
+316291
+316297
+316301
+316321
+316339
+316343
+316363
+316373
+316391
+316403
+316423
+316429
+316439
+316453
+316469
+316471
+316493
+316499
+316501
+316507
+316531
+316567
+316571
+316577
+316583
+316621
+316633
+316637
+316649
+316661
+316663
+316681
+316691
+316697
+316699
+316703
+316717
+316753
+316759
+316769
+316777
+316783
+316793
+316801
+316817
+316819
+316847
+316853
+316859
+316861
+316879
+316891
+316903
+316907
+316919
+316937
+316951
+316957
+316961
+316991
+317003
+317011
+317021
+317029
+317047
+317063
+317071
+317077
+317087
+317089
+317123
+317159
+317171
+317179
+317189
+317197
+317209
+317227
+317257
+317263
+317267
+317269
+317279
+317321
+317323
+317327
+317333
+317351
+317353
+317363
+317371
+317399
+317411
+317419
+317431
+317437
+317453
+317459
+317483
+317489
+317491
+317503
+317539
+317557
+317563
+317587
+317591
+317593
+317599
+317609
+317617
+317621
+317651
+317663
+317671
+317693
+317701
+317711
+317717
+317729
+317731
+317741
+317743
+317771
+317773
+317777
+317783
+317789
+317797
+317827
+317831
+317839
+317857
+317887
+317903
+317921
+317923
+317957
+317959
+317963
+317969
+317971
+317983
+317987
+318001
+318007
+318023
+318077
+318103
+318107
+318127
+318137
+318161
+318173
+318179
+318181
+318191
+318203
+318209
+318211
+318229
+318233
+318247
+318259
+318271
+318281
+318287
+318289
+318299
+318301
+318313
+318319
+318323
+318337
+318347
+318349
+318377
+318403
+318407
+318419
+318431
+318443
+318457
+318467
+318473
+318503
+318523
+318557
+318559
+318569
+318581
+318589
+318601
+318629
+318641
+318653
+318671
+318677
+318679
+318683
+318691
+318701
+318713
+318737
+318743
+318749
+318751
+318781
+318793
+318809
+318811
+318817
+318823
+318833
+318841
+318863
+318881
+318883
+318889
+318907
+318911
+318917
+318919
+318949
+318979
+319001
+319027
+319031
+319037
+319049
+319057
+319061
+319069
+319093
+319097
+319117
+319127
+319129
+319133
+319147
+319159
+319169
+319183
+319201
+319211
+319223
+319237
+319259
+319279
+319289
+319313
+319321
+319327
+319339
+319343
+319351
+319357
+319387
+319391
+319399
+319411
+319427
+319433
+319439
+319441
+319453
+319469
+319477
+319483
+319489
+319499
+319511
+319519
+319541
+319547
+319567
+319577
+319589
+319591
+319601
+319607
+319639
+319673
+319679
+319681
+319687
+319691
+319699
+319727
+319729
+319733
+319747
+319757
+319763
+319811
+319817
+319819
+319829
+319831
+319849
+319883
+319897
+319901
+319919
+319927
+319931
+319937
+319967
+319973
+319981
+319993
+320009
+320011
+320027
+320039
+320041
+320053
+320057
+320063
+320081
+320083
+320101
+320107
+320113
+320119
+320141
+320143
+320149
+320153
+320179
+320209
+320213
+320219
+320237
+320239
+320267
+320269
+320273
+320291
+320293
+320303
+320317
+320329
+320339
+320377
+320387
+320389
+320401
+320417
+320431
+320449
+320471
+320477
+320483
+320513
+320521
+320533
+320539
+320561
+320563
+320591
+320609
+320611
+320627
+320647
+320657
+320659
+320669
+320687
+320693
+320699
+320713
+320741
+320759
+320767
+320791
+320821
+320833
+320839
+320843
+320851
+320861
+320867
+320899
+320911
+320923
+320927
+320939
+320941
+320953
+321007
+321017
+321031
+321037
+321047
+321053
+321073
+321077
+321091
+321109
+321143
+321163
+321169
+321187
+321193
+321199
+321203
+321221
+321227
+321239
+321247
+321289
+321301
+321311
+321313
+321319
+321323
+321329
+321331
+321341
+321359
+321367
+321371
+321383
+321397
+321403
+321413
+321427
+321443
+321449
+321467
+321469
+321509
+321547
+321553
+321569
+321571
+321577
+321593
+321611
+321617
+321619
+321631
+321647
+321661
+321679
+321707
+321709
+321721
+321733
+321743
+321751
+321757
+321779
+321799
+321817
+321821
+321823
+321829
+321833
+321847
+321851
+321889
+321901
+321911
+321947
+321949
+321961
+321983
+321991
+322001
+322009
+322013
+322037
+322039
+322051
+322057
+322067
+322073
+322079
+322093
+322097
+322109
+322111
+322139
+322169
+322171
+322193
+322213
+322229
+322237
+322243
+322247
+322249
+322261
+322271
+322319
+322327
+322339
+322349
+322351
+322397
+322403
+322409
+322417
+322429
+322433
+322459
+322463
+322501
+322513
+322519
+322523
+322537
+322549
+322559
+322571
+322573
+322583
+322589
+322591
+322607
+322613
+322627
+322631
+322633
+322649
+322669
+322709
+322727
+322747
+322757
+322769
+322771
+322781
+322783
+322807
+322849
+322859
+322871
+322877
+322891
+322901
+322919
+322921
+322939
+322951
+322963
+322969
+322997
+322999
+323003
+323009
+323027
+323053
+323077
+323083
+323087
+323093
+323101
+323123
+323131
+323137
+323149
+323201
+323207
+323233
+323243
+323249
+323251
+323273
+323333
+323339
+323341
+323359
+323369
+323371
+323377
+323381
+323383
+323413
+323419
+323441
+323443
+323467
+323471
+323473
+323507
+323509
+323537
+323549
+323567
+323579
+323581
+323591
+323597
+323599
+323623
+323641
+323647
+323651
+323699
+323707
+323711
+323717
+323759
+323767
+323789
+323797
+323801
+323803
+323819
+323837
+323879
+323899
+323903
+323923
+323927
+323933
+323951
+323957
+323987
+324011
+324031
+324053
+324067
+324073
+324089
+324097
+324101
+324113
+324119
+324131
+324143
+324151
+324161
+324179
+324199
+324209
+324211
+324217
+324223
+324239
+324251
+324293
+324299
+324301
+324319
+324329
+324341
+324361
+324391
+324397
+324403
+324419
+324427
+324431
+324437
+324439
+324449
+324451
+324469
+324473
+324491
+324497
+324503
+324517
+324523
+324529
+324557
+324587
+324589
+324593
+324617
+324619
+324637
+324641
+324647
+324661
+324673
+324689
+324697
+324707
+324733
+324743
+324757
+324763
+324773
+324781
+324791
+324799
+324809
+324811
+324839
+324847
+324869
+324871
+324889
+324893
+324901
+324931
+324941
+324949
+324953
+324977
+324979
+324983
+324991
+324997
+325001
+325009
+325019
+325021
+325027
+325043
+325051
+325063
+325079
+325081
+325093
+325133
+325153
+325163
+325181
+325187
+325189
+325201
+325217
+325219
+325229
+325231
+325249
+325271
+325301
+325307
+325309
+325319
+325333
+325343
+325349
+325379
+325411
+325421
+325439
+325447
+325453
+325459
+325463
+325477
+325487
+325513
+325517
+325537
+325541
+325543
+325571
+325597
+325607
+325627
+325631
+325643
+325667
+325673
+325681
+325691
+325693
+325697
+325709
+325723
+325729
+325747
+325751
+325753
+325769
+325777
+325781
+325783
+325807
+325813
+325849
+325861
+325877
+325883
+325889
+325891
+325901
+325921
+325939
+325943
+325951
+325957
+325987
+325993
+325999
+326023
+326057
+326063
+326083
+326087
+326099
+326101
+326113
+326119
+326141
+326143
+326147
+326149
+326153
+326159
+326171
+326189
+326203
+326219
+326251
+326257
+326309
+326323
+326351
+326353
+326369
+326437
+326441
+326449
+326467
+326479
+326497
+326503
+326537
+326539
+326549
+326561
+326563
+326567
+326581
+326593
+326597
+326609
+326611
+326617
+326633
+326657
+326659
+326663
+326681
+326687
+326693
+326701
+326707
+326737
+326741
+326773
+326779
+326831
+326863
+326867
+326869
+326873
+326881
+326903
+326923
+326939
+326941
+326947
+326951
+326983
+326993
+326999
+327001
+327007
+327011
+327017
+327023
+327059
+327071
+327079
+327127
+327133
+327163
+327179
+327193
+327203
+327209
+327211
+327247
+327251
+327263
+327277
+327289
+327307
+327311
+327317
+327319
+327331
+327337
+327343
+327347
+327401
+327407
+327409
+327419
+327421
+327433
+327443
+327463
+327469
+327473
+327479
+327491
+327493
+327499
+327511
+327517
+327529
+327553
+327557
+327559
+327571
+327581
+327583
+327599
+327619
+327629
+327647
+327661
+327667
+327673
+327689
+327707
+327721
+327737
+327739
+327757
+327779
+327797
+327799
+327809
+327823
+327827
+327829
+327839
+327851
+327853
+327869
+327871
+327881
+327889
+327917
+327923
+327941
+327953
+327967
+327979
+327983
+328007
+328037
+328043
+328051
+328061
+328063
+328067
+328093
+328103
+328109
+328121
+328127
+328129
+328171
+328177
+328213
+328243
+328249
+328271
+328277
+328283
+328291
+328303
+328327
+328331
+328333
+328343
+328357
+328373
+328379
+328381
+328397
+328411
+328421
+328429
+328439
+328481
+328511
+328513
+328519
+328543
+328579
+328589
+328591
+328619
+328621
+328633
+328637
+328639
+328651
+328667
+328687
+328709
+328721
+328753
+328777
+328781
+328787
+328789
+328813
+328829
+328837
+328847
+328849
+328883
+328891
+328897
+328901
+328919
+328921
+328931
+328961
+328981
+329009
+329027
+329053
+329059
+329081
+329083
+329089
+329101
+329111
+329123
+329143
+329167
+329177
+329191
+329201
+329207
+329209
+329233
+329243
+329257
+329267
+329269
+329281
+329293
+329297
+329299
+329309
+329317
+329321
+329333
+329347
+329387
+329393
+329401
+329419
+329431
+329471
+329473
+329489
+329503
+329519
+329533
+329551
+329557
+329587
+329591
+329597
+329603
+329617
+329627
+329629
+329639
+329657
+329663
+329671
+329677
+329683
+329687
+329711
+329717
+329723
+329729
+329761
+329773
+329779
+329789
+329801
+329803
+329863
+329867
+329873
+329891
+329899
+329941
+329947
+329951
+329957
+329969
+329977
+329993
+329999
+330017
+330019
+330037
+330041
+330047
+330053
+330061
+330067
+330097
+330103
+330131
+330133
+330139
+330149
+330167
+330199
+330203
+330217
+330227
+330229
+330233
+330241
+330247
+330271
+330287
+330289
+330311
+330313
+330329
+330331
+330347
+330359
+330383
+330389
+330409
+330413
+330427
+330431
+330433
+330439
+330469
+330509
+330557
+330563
+330569
+330587
+330607
+330611
+330623
+330641
+330643
+330653
+330661
+330679
+330683
+330689
+330697
+330703
+330719
+330721
+330731
+330749
+330767
+330787
+330791
+330793
+330821
+330823
+330839
+330853
+330857
+330859
+330877
+330887
+330899
+330907
+330917
+330943
+330983
+330997
+331013
+331027
+331031
+331043
+331063
+331081
+331099
+331127
+331141
+331147
+331153
+331159
+331171
+331183
+331207
+331213
+331217
+331231
+331241
+331249
+331259
+331277
+331283
+331301
+331307
+331319
+331333
+331337
+331339
+331349
+331367
+331369
+331391
+331399
+331423
+331447
+331451
+331489
+331501
+331511
+331519
+331523
+331537
+331543
+331547
+331549
+331553
+331577
+331579
+331589
+331603
+331609
+331613
+331651
+331663
+331691
+331693
+331697
+331711
+331739
+331753
+331769
+331777
+331781
+331801
+331819
+331841
+331843
+331871
+331883
+331889
+331897
+331907
+331909
+331921
+331937
+331943
+331957
+331967
+331973
+331997
+331999
+332009
+332011
+332039
+332053
+332069
+332081
+332099
+332113
+332117
+332147
+332159
+332161
+332179
+332183
+332191
+332201
+332203
+332207
+332219
+332221
+332251
+332263
+332273
+332287
+332303
+332309
+332317
+332393
+332399
+332411
+332417
+332441
+332447
+332461
+332467
+332471
+332473
+332477
+332489
+332509
+332513
+332561
+332567
+332569
+332573
+332611
+332617
+332623
+332641
+332687
+332699
+332711
+332729
+332743
+332749
+332767
+332779
+332791
+332803
+332837
+332851
+332873
+332881
+332887
+332903
+332921
+332933
+332947
+332951
+332987
+332989
+332993
+333019
+333023
+333029
+333031
+333041
+333049
+333071
+333097
+333101
+333103
+333107
+333131
+333139
+333161
+333187
+333197
+333209
+333227
+333233
+333253
+333269
+333271
+333283
+333287
+333299
+333323
+333331
+333337
+333341
+333349
+333367
+333383
+333397
+333419
+333427
+333433
+333439
+333449
+333451
+333457
+333479
+333491
+333493
+333497
+333503
+333517
+333533
+333539
+333563
+333581
+333589
+333623
+333631
+333647
+333667
+333673
+333679
+333691
+333701
+333713
+333719
+333721
+333737
+333757
+333769
+333779
+333787
+333791
+333793
+333803
+333821
+333857
+333871
+333911
+333923
+333929
+333941
+333959
+333973
+333989
+333997
+334021
+334031
+334043
+334049
+334057
+334069
+334093
+334099
+334127
+334133
+334157
+334171
+334177
+334183
+334189
+334199
+334231
+334247
+334261
+334289
+334297
+334319
+334331
+334333
+334349
+334363
+334379
+334387
+334393
+334403
+334421
+334423
+334427
+334429
+334447
+334487
+334493
+334507
+334511
+334513
+334541
+334547
+334549
+334561
+334603
+334619
+334637
+334643
+334651
+334661
+334667
+334681
+334693
+334699
+334717
+334721
+334727
+334751
+334753
+334759
+334771
+334777
+334783
+334787
+334793
+334843
+334861
+334877
+334889
+334891
+334897
+334931
+334963
+334973
+334987
+334991
+334993
+335009
+335021
+335029
+335033
+335047
+335051
+335057
+335077
+335081
+335089
+335107
+335113
+335117
+335123
+335131
+335149
+335161
+335171
+335173
+335207
+335213
+335221
+335249
+335261
+335273
+335281
+335299
+335323
+335341
+335347
+335381
+335383
+335411
+335417
+335429
+335449
+335453
+335459
+335473
+335477
+335507
+335519
+335527
+335539
+335557
+335567
+335579
+335591
+335609
+335633
+335641
+335653
+335663
+335669
+335681
+335689
+335693
+335719
+335729
+335743
+335747
+335771
+335807
+335809
+335813
+335821
+335833
+335843
+335857
+335879
+335893
+335897
+335917
+335941
+335953
+335957
+335999
+336029
+336031
+336041
+336059
+336079
+336101
+336103
+336109
+336113
+336121
+336143
+336151
+336157
+336163
+336181
+336199
+336211
+336221
+336223
+336227
+336239
+336247
+336251
+336253
+336263
+336307
+336317
+336353
+336361
+336373
+336397
+336403
+336419
+336437
+336463
+336491
+336499
+336503
+336521
+336527
+336529
+336533
+336551
+336563
+336571
+336577
+336587
+336593
+336599
+336613
+336631
+336643
+336649
+336653
+336667
+336671
+336683
+336689
+336703
+336727
+336757
+336761
+336767
+336769
+336773
+336793
+336799
+336803
+336823
+336827
+336829
+336857
+336863
+336871
+336887
+336899
+336901
+336911
+336929
+336961
+336977
+336983
+336989
+336997
+337013
+337021
+337031
+337039
+337049
+337069
+337081
+337091
+337097
+337121
+337153
+337189
+337201
+337213
+337217
+337219
+337223
+337261
+337277
+337279
+337283
+337291
+337301
+337313
+337327
+337339
+337343
+337349
+337361
+337367
+337369
+337397
+337411
+337427
+337453
+337457
+337487
+337489
+337511
+337517
+337529
+337537
+337541
+337543
+337583
+337607
+337609
+337627
+337633
+337639
+337651
+337661
+337669
+337681
+337691
+337697
+337721
+337741
+337751
+337759
+337781
+337793
+337817
+337837
+337853
+337859
+337861
+337867
+337871
+337873
+337891
+337901
+337903
+337907
+337919
+337949
+337957
+337969
+337973
+337999
+338017
+338027
+338033
+338119
+338137
+338141
+338153
+338159
+338161
+338167
+338171
+338183
+338197
+338203
+338207
+338213
+338231
+338237
+338251
+338263
+338267
+338269
+338279
+338287
+338293
+338297
+338309
+338321
+338323
+338339
+338341
+338347
+338369
+338383
+338389
+338407
+338411
+338413
+338423
+338431
+338449
+338461
+338473
+338477
+338497
+338531
+338543
+338563
+338567
+338573
+338579
+338581
+338609
+338659
+338669
+338683
+338687
+338707
+338717
+338731
+338747
+338753
+338761
+338773
+338777
+338791
+338803
+338839
+338851
+338857
+338867
+338893
+338909
+338927
+338959
+338993
+338999
+339023
+339049
+339067
+339071
+339091
+339103
+339107
+339121
+339127
+339137
+339139
+339151
+339161
+339173
+339187
+339211
+339223
+339239
+339247
+339257
+339263
+339289
+339307
+339323
+339331
+339341
+339373
+339389
+339413
+339433
+339467
+339491
+339517
+339527
+339539
+339557
+339583
+339589
+339601
+339613
+339617
+339631
+339637
+339649
+339653
+339659
+339671
+339673
+339679
+339707
+339727
+339749
+339751
+339761
+339769
+339799
+339811
+339817
+339821
+339827
+339839
+339841
+339863
+339887
+339907
+339943
+339959
+339991
+340007
+340027
+340031
+340037
+340049
+340057
+340061
+340063
+340073
+340079
+340103
+340111
+340117
+340121
+340127
+340129
+340169
+340183
+340201
+340211
+340237
+340261
+340267
+340283
+340297
+340321
+340337
+340339
+340369
+340381
+340387
+340393
+340397
+340409
+340429
+340447
+340451
+340453
+340477
+340481
+340519
+340541
+340559
+340573
+340577
+340579
+340583
+340591
+340601
+340619
+340633
+340643
+340649
+340657
+340661
+340687
+340693
+340709
+340723
+340757
+340777
+340787
+340789
+340793
+340801
+340811
+340819
+340849
+340859
+340877
+340889
+340897
+340903
+340909
+340913
+340919
+340927
+340931
+340933
+340937
+340939
+340957
+340979
+340999
+341017
+341027
+341041
+341057
+341059
+341063
+341083
+341087
+341123
+341141
+341171
+341179
+341191
+341203
+341219
+341227
+341233
+341269
+341273
+341281
+341287
+341293
+341303
+341311
+341321
+341323
+341333
+341339
+341347
+341357
+341423
+341443
+341447
+341459
+341461
+341477
+341491
+341501
+341507
+341521
+341543
+341557
+341569
+341587
+341597
+341603
+341617
+341623
+341629
+341641
+341647
+341659
+341681
+341687
+341701
+341729
+341743
+341749
+341771
+341773
+341777
+341813
+341821
+341827
+341839
+341851
+341863
+341879
+341911
+341927
+341947
+341951
+341953
+341959
+341963
+341983
+341993
+342037
+342047
+342049
+342059
+342061
+342071
+342073
+342077
+342101
+342107
+342131
+342143
+342179
+342187
+342191
+342197
+342203
+342211
+342233
+342239
+342241
+342257
+342281
+342283
+342299
+342319
+342337
+342341
+342343
+342347
+342359
+342371
+342373
+342379
+342389
+342413
+342421
+342449
+342451
+342467
+342469
+342481
+342497
+342521
+342527
+342547
+342553
+342569
+342593
+342599
+342607
+342647
+342653
+342659
+342673
+342679
+342691
+342697
+342733
+342757
+342761
+342791
+342799
+342803
+342821
+342833
+342841
+342847
+342863
+342869
+342871
+342889
+342899
+342929
+342949
+342971
+342989
+343019
+343037
+343051
+343061
+343073
+343081
+343087
+343127
+343141
+343153
+343163
+343169
+343177
+343193
+343199
+343219
+343237
+343243
+343253
+343261
+343267
+343289
+343303
+343307
+343309
+343313
+343327
+343333
+343337
+343373
+343379
+343381
+343391
+343393
+343411
+343423
+343433
+343481
+343489
+343517
+343529
+343531
+343543
+343547
+343559
+343561
+343579
+343583
+343589
+343591
+343601
+343627
+343631
+343639
+343649
+343661
+343667
+343687
+343709
+343727
+343769
+343771
+343787
+343799
+343801
+343813
+343817
+343823
+343829
+343831
+343891
+343897
+343901
+343913
+343933
+343939
+343943
+343951
+343963
+343997
+344017
+344021
+344039
+344053
+344083
+344111
+344117
+344153
+344161
+344167
+344171
+344173
+344177
+344189
+344207
+344209
+344213
+344221
+344231
+344237
+344243
+344249
+344251
+344257
+344263
+344269
+344273
+344291
+344293
+344321
+344327
+344347
+344353
+344363
+344371
+344417
+344423
+344429
+344453
+344479
+344483
+344497
+344543
+344567
+344587
+344599
+344611
+344621
+344629
+344639
+344653
+344671
+344681
+344683
+344693
+344719
+344749
+344753
+344759
+344791
+344797
+344801
+344807
+344819
+344821
+344843
+344857
+344863
+344873
+344887
+344893
+344909
+344917
+344921
+344941
+344957
+344959
+344963
+344969
+344987
+345001
+345011
+345017
+345019
+345041
+345047
+345067
+345089
+345109
+345133
+345139
+345143
+345181
+345193
+345221
+345227
+345229
+345259
+345263
+345271
+345307
+345311
+345329
+345379
+345413
+345431
+345451
+345461
+345463
+345473
+345479
+345487
+345511
+345517
+345533
+345547
+345551
+345571
+345577
+345581
+345599
+345601
+345607
+345637
+345643
+345647
+345659
+345673
+345679
+345689
+345701
+345707
+345727
+345731
+345733
+345739
+345749
+345757
+345769
+345773
+345791
+345803
+345811
+345817
+345823
+345853
+345869
+345881
+345887
+345889
+345907
+345923
+345937
+345953
+345979
+345997
+346013
+346039
+346043
+346051
+346079
+346091
+346097
+346111
+346117
+346133
+346139
+346141
+346147
+346169
+346187
+346201
+346207
+346217
+346223
+346259
+346261
+346277
+346303
+346309
+346321
+346331
+346337
+346349
+346361
+346369
+346373
+346391
+346393
+346397
+346399
+346417
+346421
+346429
+346433
+346439
+346441
+346447
+346453
+346469
+346501
+346529
+346543
+346547
+346553
+346559
+346561
+346589
+346601
+346607
+346627
+346639
+346649
+346651
+346657
+346667
+346669
+346699
+346711
+346721
+346739
+346751
+346763
+346793
+346831
+346849
+346867
+346873
+346877
+346891
+346903
+346933
+346939
+346943
+346961
+346963
+347003
+347033
+347041
+347051
+347057
+347059
+347063
+347069
+347071
+347099
+347129
+347131
+347141
+347143
+347161
+347167
+347173
+347177
+347183
+347197
+347201
+347209
+347227
+347233
+347239
+347251
+347257
+347287
+347297
+347299
+347317
+347329
+347341
+347359
+347401
+347411
+347437
+347443
+347489
+347509
+347513
+347519
+347533
+347539
+347561
+347563
+347579
+347587
+347591
+347609
+347621
+347629
+347651
+347671
+347707
+347717
+347729
+347731
+347747
+347759
+347771
+347773
+347779
+347801
+347813
+347821
+347849
+347873
+347887
+347891
+347899
+347929
+347933
+347951
+347957
+347959
+347969
+347981
+347983
+347987
+347989
+347993
+348001
+348011
+348017
+348031
+348043
+348053
+348077
+348083
+348097
+348149
+348163
+348181
+348191
+348209
+348217
+348221
+348239
+348241
+348247
+348253
+348259
+348269
+348287
+348307
+348323
+348353
+348367
+348389
+348401
+348407
+348419
+348421
+348431
+348433
+348437
+348443
+348451
+348457
+348461
+348463
+348487
+348527
+348547
+348553
+348559
+348563
+348571
+348583
+348587
+348617
+348629
+348637
+348643
+348661
+348671
+348709
+348731
+348739
+348757
+348763
+348769
+348779
+348811
+348827
+348833
+348839
+348851
+348883
+348889
+348911
+348917
+348919
+348923
+348937
+348949
+348989
+348991
+349007
+349039
+349043
+349051
+349079
+349081
+349093
+349099
+349109
+349121
+349133
+349171
+349177
+349183
+349187
+349199
+349207
+349211
+349241
+349291
+349303
+349313
+349331
+349337
+349343
+349357
+349369
+349373
+349379
+349381
+349387
+349397
+349399
+349403
+349409
+349411
+349423
+349471
+349477
+349483
+349493
+349499
+349507
+349519
+349529
+349553
+349567
+349579
+349589
+349603
+349637
+349663
+349667
+349697
+349709
+349717
+349729
+349753
+349759
+349787
+349793
+349801
+349813
+349819
+349829
+349831
+349837
+349841
+349849
+349871
+349903
+349907
+349913
+349919
+349927
+349931
+349933
+349939
+349949
+349963
+349967
+349981
+350003
+350029
+350033
+350039
+350087
+350089
+350093
+350107
+350111
+350137
+350159
+350179
+350191
+350213
+350219
+350237
+350249
+350257
+350281
+350293
+350347
+350351
+350377
+350381
+350411
+350423
+350429
+350431
+350437
+350443
+350447
+350453
+350459
+350503
+350521
+350549
+350561
+350563
+350587
+350593
+350617
+350621
+350629
+350657
+350663
+350677
+350699
+350711
+350719
+350729
+350731
+350737
+350741
+350747
+350767
+350771
+350783
+350789
+350803
+350809
+350843
+350851
+350869
+350881
+350887
+350891
+350899
+350941
+350947
+350963
+350971
+350981
+350983
+350989
+351011
+351023
+351031
+351037
+351041
+351047
+351053
+351059
+351061
+351077
+351079
+351097
+351121
+351133
+351151
+351157
+351179
+351217
+351223
+351229
+351257
+351259
+351269
+351287
+351289
+351293
+351301
+351311
+351341
+351343
+351347
+351359
+351361
+351383
+351391
+351397
+351401
+351413
+351427
+351437
+351457
+351469
+351479
+351497
+351503
+351517
+351529
+351551
+351563
+351587
+351599
+351643
+351653
+351661
+351667
+351691
+351707
+351727
+351731
+351733
+351749
+351751
+351763
+351773
+351779
+351797
+351803
+351811
+351829
+351847
+351851
+351859
+351863
+351887
+351913
+351919
+351929
+351931
+351959
+351971
+351991
+352007
+352021
+352043
+352049
+352057
+352069
+352073
+352081
+352097
+352109
+352111
+352123
+352133
+352181
+352193
+352201
+352217
+352229
+352237
+352249
+352267
+352271
+352273
+352301
+352309
+352327
+352333
+352349
+352357
+352361
+352367
+352369
+352381
+352399
+352403
+352409
+352411
+352421
+352423
+352441
+352459
+352463
+352481
+352483
+352489
+352493
+352511
+352523
+352543
+352549
+352579
+352589
+352601
+352607
+352619
+352633
+352637
+352661
+352691
+352711
+352739
+352741
+352753
+352757
+352771
+352813
+352817
+352819
+352831
+352837
+352841
+352853
+352867
+352883
+352907
+352909
+352931
+352939
+352949
+352951
+352973
+352991
+353011
+353021
+353047
+353053
+353057
+353069
+353081
+353099
+353117
+353123
+353137
+353147
+353149
+353161
+353173
+353179
+353201
+353203
+353237
+353263
+353293
+353317
+353321
+353329
+353333
+353341
+353359
+353389
+353401
+353411
+353429
+353443
+353453
+353459
+353471
+353473
+353489
+353501
+353527
+353531
+353557
+353567
+353603
+353611
+353621
+353627
+353629
+353641
+353653
+353657
+353677
+353681
+353687
+353699
+353711
+353737
+353747
+353767
+353777
+353783
+353797
+353807
+353813
+353819
+353833
+353867
+353869
+353879
+353891
+353897
+353911
+353917
+353921
+353929
+353939
+353963
+354001
+354007
+354017
+354023
+354031
+354037
+354041
+354043
+354047
+354073
+354091
+354097
+354121
+354139
+354143
+354149
+354163
+354169
+354181
+354209
+354247
+354251
+354253
+354257
+354259
+354271
+354301
+354307
+354313
+354317
+354323
+354329
+354337
+354353
+354371
+354373
+354377
+354383
+354391
+354401
+354421
+354439
+354443
+354451
+354461
+354463
+354469
+354479
+354533
+354539
+354551
+354553
+354581
+354587
+354619
+354643
+354647
+354661
+354667
+354677
+354689
+354701
+354703
+354727
+354737
+354743
+354751
+354763
+354779
+354791
+354799
+354829
+354833
+354839
+354847
+354869
+354877
+354881
+354883
+354911
+354953
+354961
+354971
+354973
+354979
+354983
+354997
+355007
+355009
+355027
+355031
+355037
+355039
+355049
+355057
+355063
+355073
+355087
+355093
+355099
+355109
+355111
+355127
+355139
+355171
+355193
+355211
+355261
+355297
+355307
+355321
+355331
+355339
+355343
+355361
+355363
+355379
+355417
+355427
+355441
+355457
+355463
+355483
+355499
+355501
+355507
+355513
+355517
+355519
+355529
+355541
+355549
+355559
+355571
+355573
+355591
+355609
+355633
+355643
+355651
+355669
+355679
+355697
+355717
+355721
+355723
+355753
+355763
+355777
+355783
+355799
+355811
+355819
+355841
+355847
+355853
+355867
+355891
+355909
+355913
+355933
+355937
+355939
+355951
+355967
+355969
+356023
+356039
+356077
+356093
+356101
+356113
+356123
+356129
+356137
+356141
+356143
+356171
+356173
+356197
+356219
+356243
+356261
+356263
+356287
+356299
+356311
+356327
+356333
+356351
+356387
+356399
+356441
+356443
+356449
+356453
+356467
+356479
+356501
+356509
+356533
+356549
+356561
+356563
+356567
+356579
+356591
+356621
+356647
+356663
+356693
+356701
+356731
+356737
+356749
+356761
+356803
+356819
+356821
+356831
+356869
+356887
+356893
+356927
+356929
+356933
+356947
+356959
+356969
+356977
+356981
+356989
+356999
+357031
+357047
+357073
+357079
+357083
+357103
+357107
+357109
+357131
+357139
+357169
+357179
+357197
+357199
+357211
+357229
+357239
+357241
+357263
+357271
+357281
+357283
+357293
+357319
+357347
+357349
+357353
+357359
+357377
+357389
+357421
+357431
+357437
+357473
+357503
+357509
+357517
+357551
+357559
+357563
+357569
+357571
+357583
+357587
+357593
+357611
+357613
+357619
+357649
+357653
+357659
+357661
+357667
+357671
+357677
+357683
+357689
+357703
+357727
+357733
+357737
+357739
+357767
+357779
+357781
+357787
+357793
+357809
+357817
+357823
+357829
+357839
+357859
+357883
+357913
+357967
+357977
+357983
+357989
+357997
+358031
+358051
+358069
+358073
+358079
+358103
+358109
+358153
+358157
+358159
+358181
+358201
+358213
+358219
+358223
+358229
+358243
+358273
+358277
+358279
+358289
+358291
+358297
+358301
+358313
+358327
+358331
+358349
+358373
+358417
+358427
+358429
+358441
+358447
+358459
+358471
+358483
+358487
+358499
+358531
+358541
+358571
+358573
+358591
+358597
+358601
+358607
+358613
+358637
+358667
+358669
+358681
+358691
+358697
+358703
+358711
+358723
+358727
+358733
+358747
+358753
+358769
+358783
+358793
+358811
+358829
+358847
+358859
+358861
+358867
+358877
+358879
+358901
+358903
+358907
+358909
+358931
+358951
+358973
+358979
+358987
+358993
+358999
+359003
+359017
+359027
+359041
+359063
+359069
+359101
+359111
+359129
+359137
+359143
+359147
+359153
+359167
+359171
+359207
+359209
+359231
+359243
+359263
+359267
+359279
+359291
+359297
+359299
+359311
+359323
+359327
+359353
+359357
+359377
+359389
+359407
+359417
+359419
+359441
+359449
+359477
+359479
+359483
+359501
+359509
+359539
+359549
+359561
+359563
+359581
+359587
+359599
+359621
+359633
+359641
+359657
+359663
+359701
+359713
+359719
+359731
+359747
+359753
+359761
+359767
+359783
+359837
+359851
+359869
+359897
+359911
+359929
+359981
+359987
+360007
+360023
+360037
+360049
+360053
+360071
+360089
+360091
+360163
+360167
+360169
+360181
+360187
+360193
+360197
+360223
+360229
+360233
+360257
+360271
+360277
+360287
+360289
+360293
+360307
+360317
+360323
+360337
+360391
+360407
+360421
+360439
+360457
+360461
+360497
+360509
+360511
+360541
+360551
+360589
+360593
+360611
+360637
+360649
+360653
+360749
+360769
+360779
+360781
+360803
+360817
+360821
+360823
+360827
+360851
+360853
+360863
+360869
+360901
+360907
+360947
+360949
+360953
+360959
+360973
+360977
+360979
+360989
+361001
+361003
+361013
+361033
+361069
+361091
+361093
+361111
+361159
+361183
+361211
+361213
+361217
+361219
+361223
+361237
+361241
+361271
+361279
+361313
+361321
+361327
+361337
+361349
+361351
+361357
+361363
+361373
+361409
+361411
+361421
+361433
+361441
+361447
+361451
+361463
+361469
+361481
+361499
+361507
+361511
+361523
+361531
+361541
+361549
+361561
+361577
+361637
+361643
+361649
+361651
+361663
+361679
+361687
+361723
+361727
+361747
+361763
+361769
+361787
+361789
+361793
+361799
+361807
+361843
+361871
+361873
+361877
+361901
+361903
+361909
+361919
+361927
+361943
+361961
+361967
+361973
+361979
+361993
+362003
+362027
+362051
+362053
+362059
+362069
+362081
+362093
+362099
+362107
+362137
+362143
+362147
+362161
+362177
+362191
+362203
+362213
+362221
+362233
+362237
+362281
+362291
+362293
+362303
+362309
+362333
+362339
+362347
+362353
+362357
+362363
+362371
+362377
+362381
+362393
+362407
+362419
+362429
+362431
+362443
+362449
+362459
+362473
+362521
+362561
+362569
+362581
+362599
+362629
+362633
+362657
+362693
+362707
+362717
+362723
+362741
+362743
+362749
+362753
+362759
+362801
+362851
+362863
+362867
+362897
+362903
+362911
+362927
+362941
+362951
+362953
+362969
+362977
+362983
+362987
+363017
+363019
+363037
+363043
+363047
+363059
+363061
+363067
+363119
+363149
+363151
+363157
+363161
+363173
+363179
+363199
+363211
+363217
+363257
+363269
+363271
+363277
+363313
+363317
+363329
+363343
+363359
+363361
+363367
+363371
+363373
+363379
+363397
+363401
+363403
+363431
+363437
+363439
+363463
+363481
+363491
+363497
+363523
+363529
+363533
+363541
+363551
+363557
+363563
+363569
+363577
+363581
+363589
+363611
+363619
+363659
+363677
+363683
+363691
+363719
+363731
+363751
+363757
+363761
+363767
+363773
+363799
+363809
+363829
+363833
+363841
+363871
+363887
+363889
+363901
+363911
+363917
+363941
+363947
+363949
+363959
+363967
+363977
+363989
+364027
+364031
+364069
+364073
+364079
+364103
+364127
+364129
+364141
+364171
+364183
+364187
+364193
+364213
+364223
+364241
+364267
+364271
+364289
+364291
+364303
+364313
+364321
+364333
+364337
+364349
+364373
+364379
+364393
+364411
+364417
+364423
+364433
+364447
+364451
+364459
+364471
+364499
+364513
+364523
+364537
+364541
+364543
+364571
+364583
+364601
+364607
+364621
+364627
+364643
+364657
+364669
+364687
+364691
+364699
+364717
+364739
+364747
+364751
+364753
+364759
+364801
+364829
+364853
+364873
+364879
+364883
+364891
+364909
+364919
+364921
+364937
+364943
+364961
+364979
+364993
+364997
+365003
+365017
+365021
+365039
+365063
+365069
+365089
+365107
+365119
+365129
+365137
+365147
+365159
+365173
+365179
+365201
+365213
+365231
+365249
+365251
+365257
+365291
+365293
+365297
+365303
+365327
+365333
+365357
+365369
+365377
+365411
+365413
+365419
+365423
+365441
+365461
+365467
+365471
+365473
+365479
+365489
+365507
+365509
+365513
+365527
+365531
+365537
+365557
+365567
+365569
+365587
+365591
+365611
+365627
+365639
+365641
+365669
+365683
+365689
+365699
+365747
+365749
+365759
+365773
+365779
+365791
+365797
+365809
+365837
+365839
+365851
+365903
+365929
+365933
+365941
+365969
+365983
+366001
+366013
+366019
+366029
+366031
+366053
+366077
+366097
+366103
+366127
+366133
+366139
+366161
+366167
+366169
+366173
+366181
+366193
+366199
+366211
+366217
+366221
+366227
+366239
+366259
+366269
+366277
+366287
+366293
+366307
+366313
+366329
+366341
+366343
+366347
+366383
+366397
+366409
+366419
+366433
+366437
+366439
+366461
+366463
+366467
+366479
+366497
+366511
+366517
+366521
+366547
+366593
+366599
+366607
+366631
+366677
+366683
+366697
+366701
+366703
+366713
+366721
+366727
+366733
+366787
+366791
+366811
+366829
+366841
+366851
+366853
+366859
+366869
+366881
+366889
+366901
+366907
+366917
+366923
+366941
+366953
+366967
+366973
+366983
+366997
+367001
+367007
+367019
+367021
+367027
+367033
+367049
+367069
+367097
+367121
+367123
+367127
+367139
+367163
+367181
+367189
+367201
+367207
+367219
+367229
+367231
+367243
+367259
+367261
+367273
+367277
+367307
+367309
+367313
+367321
+367357
+367369
+367391
+367397
+367427
+367453
+367457
+367469
+367501
+367519
+367531
+367541
+367547
+367559
+367561
+367573
+367597
+367603
+367613
+367621
+367637
+367649
+367651
+367663
+367673
+367687
+367699
+367711
+367721
+367733
+367739
+367751
+367771
+367777
+367781
+367789
+367819
+367823
+367831
+367841
+367849
+367853
+367867
+367879
+367883
+367889
+367909
+367949
+367957
+368021
+368029
+368047
+368059
+368077
+368083
+368089
+368099
+368107
+368111
+368117
+368129
+368141
+368149
+368153
+368171
+368189
+368197
+368227
+368231
+368233
+368243
+368273
+368279
+368287
+368293
+368323
+368327
+368359
+368363
+368369
+368399
+368411
+368443
+368447
+368453
+368471
+368491
+368507
+368513
+368521
+368531
+368539
+368551
+368579
+368593
+368597
+368609
+368633
+368647
+368651
+368653
+368689
+368717
+368729
+368737
+368743
+368773
+368783
+368789
+368791
+368801
+368803
+368833
+368857
+368873
+368881
+368899
+368911
+368939
+368947
+368957
+369007
+369013
+369023
+369029
+369067
+369071
+369077
+369079
+369097
+369119
+369133
+369137
+369143
+369169
+369181
+369191
+369197
+369211
+369247
+369253
+369263
+369269
+369283
+369293
+369301
+369319
+369331
+369353
+369361
+369407
+369409
+369419
+369469
+369487
+369491
+369539
+369553
+369557
+369581
+369637
+369647
+369659
+369661
+369673
+369703
+369709
+369731
+369739
+369751
+369791
+369793
+369821
+369827
+369829
+369833
+369841
+369851
+369877
+369893
+369913
+369917
+369947
+369959
+369961
+369979
+369983
+369991
+369997
+370003
+370009
+370021
+370033
+370057
+370061
+370067
+370081
+370091
+370103
+370121
+370133
+370147
+370159
+370169
+370193
+370199
+370207
+370213
+370217
+370241
+370247
+370261
+370373
+370387
+370399
+370411
+370421
+370423
+370427
+370439
+370441
+370451
+370463
+370471
+370477
+370483
+370493
+370511
+370529
+370537
+370547
+370561
+370571
+370597
+370603
+370609
+370613
+370619
+370631
+370661
+370663
+370673
+370679
+370687
+370693
+370723
+370759
+370793
+370801
+370813
+370837
+370871
+370873
+370879
+370883
+370891
+370897
+370919
+370949
+371027
+371029
+371057
+371069
+371071
+371083
+371087
+371099
+371131
+371141
+371143
+371153
+371177
+371179
+371191
+371213
+371227
+371233
+371237
+371249
+371251
+371257
+371281
+371291
+371299
+371303
+371311
+371321
+371333
+371339
+371341
+371353
+371359
+371383
+371387
+371389
+371417
+371447
+371453
+371471
+371479
+371491
+371509
+371513
+371549
+371561
+371573
+371587
+371617
+371627
+371633
+371639
+371663
+371669
+371699
+371719
+371737
+371779
+371797
+371831
+371837
+371843
+371851
+371857
+371869
+371873
+371897
+371927
+371929
+371939
+371941
+371951
+371957
+371971
+371981
+371999
+372013
+372023
+372037
+372049
+372059
+372061
+372067
+372107
+372121
+372131
+372137
+372149
+372167
+372173
+372179
+372223
+372241
+372263
+372269
+372271
+372277
+372289
+372293
+372299
+372311
+372313
+372353
+372367
+372371
+372377
+372397
+372401
+372409
+372413
+372443
+372451
+372461
+372473
+372481
+372497
+372511
+372523
+372539
+372607
+372611
+372613
+372629
+372637
+372653
+372661
+372667
+372677
+372689
+372707
+372709
+372719
+372733
+372739
+372751
+372763
+372769
+372773
+372797
+372803
+372809
+372817
+372829
+372833
+372839
+372847
+372859
+372871
+372877
+372881
+372901
+372917
+372941
+372943
+372971
+372973
+372979
+373003
+373007
+373019
+373049
+373063
+373073
+373091
+373127
+373151
+373157
+373171
+373181
+373183
+373187
+373193
+373199
+373207
+373211
+373213
+373229
+373231
+373273
+373291
+373297
+373301
+373327
+373339
+373343
+373349
+373357
+373361
+373363
+373379
+373393
+373447
+373453
+373459
+373463
+373487
+373489
+373501
+373517
+373553
+373561
+373567
+373613
+373621
+373631
+373649
+373657
+373661
+373669
+373693
+373717
+373721
+373753
+373757
+373777
+373783
+373823
+373837
+373859
+373861
+373903
+373909
+373937
+373943
+373951
+373963
+373969
+373981
+373987
+373999
+374009
+374029
+374039
+374041
+374047
+374063
+374069
+374083
+374089
+374093
+374111
+374117
+374123
+374137
+374149
+374159
+374173
+374177
+374189
+374203
+374219
+374239
+374287
+374291
+374293
+374299
+374317
+374321
+374333
+374347
+374351
+374359
+374389
+374399
+374441
+374443
+374447
+374461
+374483
+374501
+374531
+374537
+374557
+374587
+374603
+374639
+374641
+374653
+374669
+374677
+374681
+374683
+374687
+374701
+374713
+374719
+374729
+374741
+374753
+374761
+374771
+374783
+374789
+374797
+374807
+374819
+374837
+374839
+374849
+374879
+374887
+374893
+374903
+374909
+374929
+374939
+374953
+374977
+374981
+374987
+374989
+374993
+375017
+375019
+375029
+375043
+375049
+375059
+375083
+375091
+375097
+375101
+375103
+375113
+375119
+375121
+375127
+375149
+375157
+375163
+375169
+375203
+375209
+375223
+375227
+375233
+375247
+375251
+375253
+375257
+375259
+375281
+375283
+375311
+375341
+375359
+375367
+375371
+375373
+375391
+375407
+375413
+375443
+375449
+375451
+375457
+375467
+375481
+375509
+375511
+375523
+375527
+375533
+375553
+375559
+375563
+375569
+375593
+375607
+375623
+375631
+375643
+375647
+375667
+375673
+375703
+375707
+375709
+375743
+375757
+375761
+375773
+375779
+375787
+375799
+375833
+375841
+375857
+375899
+375901
+375923
+375931
+375967
+375971
+375979
+375983
+375997
+376001
+376003
+376009
+376021
+376039
+376049
+376063
+376081
+376097
+376099
+376127
+376133
+376147
+376153
+376171
+376183
+376199
+376231
+376237
+376241
+376283
+376291
+376297
+376307
+376351
+376373
+376393
+376399
+376417
+376463
+376469
+376471
+376477
+376483
+376501
+376511
+376529
+376531
+376547
+376573
+376577
+376583
+376589
+376603
+376609
+376627
+376631
+376633
+376639
+376657
+376679
+376687
+376699
+376709
+376721
+376729
+376757
+376759
+376769
+376787
+376793
+376801
+376807
+376811
+376819
+376823
+376837
+376841
+376847
+376853
+376889
+376891
+376897
+376921
+376927
+376931
+376933
+376949
+376963
+376969
+377011
+377021
+377051
+377059
+377071
+377099
+377123
+377129
+377137
+377147
+377171
+377173
+377183
+377197
+377219
+377231
+377257
+377263
+377287
+377291
+377297
+377327
+377329
+377339
+377347
+377353
+377369
+377371
+377387
+377393
+377459
+377471
+377477
+377491
+377513
+377521
+377527
+377537
+377543
+377557
+377561
+377563
+377581
+377593
+377599
+377617
+377623
+377633
+377653
+377681
+377687
+377711
+377717
+377737
+377749
+377761
+377771
+377779
+377789
+377801
+377809
+377827
+377831
+377843
+377851
+377873
+377887
+377911
+377963
+377981
+377999
+378011
+378019
+378023
+378041
+378071
+378083
+378089
+378101
+378127
+378137
+378149
+378151
+378163
+378167
+378179
+378193
+378223
+378229
+378239
+378241
+378253
+378269
+378277
+378283
+378289
+378317
+378353
+378361
+378379
+378401
+378407
+378439
+378449
+378463
+378467
+378493
+378503
+378509
+378523
+378533
+378551
+378559
+378569
+378571
+378583
+378593
+378601
+378619
+378629
+378661
+378667
+378671
+378683
+378691
+378713
+378733
+378739
+378757
+378761
+378779
+378793
+378809
+378817
+378821
+378823
+378869
+378883
+378893
+378901
+378919
+378929
+378941
+378949
+378953
+378967
+378977
+378997
+379007
+379009
+379013
+379033
+379039
+379073
+379081
+379087
+379097
+379103
+379123
+379133
+379147
+379157
+379163
+379177
+379187
+379189
+379199
+379207
+379273
+379277
+379283
+379289
+379307
+379319
+379333
+379343
+379369
+379387
+379391
+379397
+379399
+379417
+379433
+379439
+379441
+379451
+379459
+379499
+379501
+379513
+379531
+379541
+379549
+379571
+379573
+379579
+379597
+379607
+379633
+379649
+379663
+379667
+379679
+379681
+379693
+379699
+379703
+379721
+379723
+379727
+379751
+379777
+379787
+379811
+379817
+379837
+379849
+379853
+379859
+379877
+379889
+379903
+379909
+379913
+379927
+379931
+379963
+379979
+379993
+379997
+379999
+380041
+380047
+380059
+380071
+380117
+380129
+380131
+380141
+380147
+380179
+380189
+380197
+380201
+380203
+380207
+380231
+380251
+380267
+380269
+380287
+380291
+380299
+380309
+380311
+380327
+380329
+380333
+380363
+380377
+380383
+380417
+380423
+380441
+380447
+380453
+380459
+380461
+380483
+380503
+380533
+380557
+380563
+380591
+380621
+380623
+380629
+380641
+380651
+380657
+380707
+380713
+380729
+380753
+380777
+380797
+380803
+380819
+380837
+380839
+380843
+380867
+380869
+380879
+380881
+380909
+380917
+380929
+380951
+380957
+380971
+380977
+380983
+381001
+381011
+381019
+381037
+381047
+381061
+381071
+381077
+381097
+381103
+381167
+381169
+381181
+381209
+381221
+381223
+381233
+381239
+381253
+381287
+381289
+381301
+381319
+381323
+381343
+381347
+381371
+381373
+381377
+381383
+381389
+381401
+381413
+381419
+381439
+381443
+381461
+381467
+381481
+381487
+381509
+381523
+381527
+381529
+381533
+381541
+381559
+381569
+381607
+381629
+381631
+381637
+381659
+381673
+381697
+381707
+381713
+381737
+381739
+381749
+381757
+381761
+381791
+381793
+381817
+381841
+381853
+381859
+381911
+381917
+381937
+381943
+381949
+381977
+381989
+381991
+382001
+382003
+382021
+382037
+382061
+382069
+382073
+382087
+382103
+382117
+382163
+382171
+382189
+382229
+382231
+382241
+382253
+382267
+382271
+382303
+382331
+382351
+382357
+382363
+382373
+382391
+382427
+382429
+382457
+382463
+382493
+382507
+382511
+382519
+382541
+382549
+382553
+382567
+382579
+382583
+382589
+382601
+382621
+382631
+382643
+382649
+382661
+382663
+382693
+382703
+382709
+382727
+382729
+382747
+382751
+382763
+382769
+382777
+382801
+382807
+382813
+382843
+382847
+382861
+382867
+382871
+382873
+382883
+382919
+382933
+382939
+382961
+382979
+382999
+383011
+383023
+383029
+383041
+383051
+383069
+383077
+383081
+383083
+383099
+383101
+383107
+383113
+383143
+383147
+383153
+383171
+383179
+383219
+383221
+383261
+383267
+383281
+383291
+383297
+383303
+383321
+383347
+383371
+383393
+383399
+383417
+383419
+383429
+383459
+383483
+383489
+383519
+383521
+383527
+383533
+383549
+383557
+383573
+383587
+383609
+383611
+383623
+383627
+383633
+383651
+383657
+383659
+383681
+383683
+383693
+383723
+383729
+383753
+383759
+383767
+383777
+383791
+383797
+383807
+383813
+383821
+383833
+383837
+383839
+383869
+383891
+383909
+383917
+383923
+383941
+383951
+383963
+383969
+383983
+383987
+384001
+384017
+384029
+384049
+384061
+384067
+384079
+384089
+384107
+384113
+384133
+384143
+384151
+384157
+384173
+384187
+384193
+384203
+384227
+384247
+384253
+384257
+384259
+384277
+384287
+384289
+384299
+384301
+384317
+384331
+384343
+384359
+384367
+384383
+384403
+384407
+384437
+384469
+384473
+384479
+384481
+384487
+384497
+384509
+384533
+384547
+384577
+384581
+384589
+384599
+384611
+384619
+384623
+384641
+384673
+384691
+384697
+384701
+384719
+384733
+384737
+384751
+384757
+384773
+384779
+384817
+384821
+384827
+384841
+384847
+384851
+384889
+384907
+384913
+384919
+384941
+384961
+384973
+385001
+385013
+385027
+385039
+385057
+385069
+385079
+385081
+385087
+385109
+385127
+385129
+385139
+385141
+385153
+385159
+385171
+385193
+385199
+385223
+385249
+385261
+385267
+385279
+385289
+385291
+385321
+385327
+385331
+385351
+385379
+385391
+385393
+385397
+385403
+385417
+385433
+385471
+385481
+385493
+385501
+385519
+385531
+385537
+385559
+385571
+385573
+385579
+385589
+385591
+385597
+385607
+385621
+385631
+385639
+385657
+385661
+385663
+385709
+385739
+385741
+385771
+385783
+385793
+385811
+385817
+385831
+385837
+385843
+385859
+385877
+385897
+385901
+385907
+385927
+385939
+385943
+385967
+385991
+385997
+386017
+386039
+386041
+386047
+386051
+386083
+386093
+386117
+386119
+386129
+386131
+386143
+386149
+386153
+386159
+386161
+386173
+386219
+386227
+386233
+386237
+386249
+386263
+386279
+386297
+386299
+386303
+386329
+386333
+386339
+386363
+386369
+386371
+386381
+386383
+386401
+386411
+386413
+386429
+386431
+386437
+386471
+386489
+386501
+386521
+386537
+386543
+386549
+386569
+386587
+386609
+386611
+386621
+386629
+386641
+386647
+386651
+386677
+386689
+386693
+386713
+386719
+386723
+386731
+386747
+386777
+386809
+386839
+386851
+386887
+386891
+386921
+386927
+386963
+386977
+386987
+386989
+386993
+387007
+387017
+387031
+387047
+387071
+387077
+387083
+387089
+387109
+387137
+387151
+387161
+387169
+387173
+387187
+387197
+387199
+387203
+387227
+387253
+387263
+387269
+387281
+387307
+387313
+387329
+387341
+387371
+387397
+387403
+387433
+387437
+387449
+387463
+387493
+387503
+387509
+387529
+387551
+387577
+387587
+387613
+387623
+387631
+387641
+387659
+387677
+387679
+387683
+387707
+387721
+387727
+387743
+387749
+387763
+387781
+387791
+387799
+387839
+387853
+387857
+387911
+387913
+387917
+387953
+387967
+387971
+387973
+387977
+388009
+388051
+388057
+388067
+388081
+388099
+388109
+388111
+388117
+388133
+388159
+388163
+388169
+388177
+388181
+388183
+388187
+388211
+388231
+388237
+388253
+388259
+388273
+388277
+388301
+388313
+388319
+388351
+388363
+388369
+388373
+388391
+388403
+388459
+388471
+388477
+388481
+388483
+388489
+388499
+388519
+388529
+388541
+388567
+388573
+388621
+388651
+388657
+388673
+388691
+388693
+388697
+388699
+388711
+388727
+388757
+388777
+388781
+388789
+388793
+388813
+388823
+388837
+388859
+388879
+388891
+388897
+388901
+388903
+388931
+388933
+388937
+388961
+388963
+388991
+389003
+389023
+389027
+389029
+389041
+389047
+389057
+389083
+389089
+389099
+389111
+389117
+389141
+389149
+389161
+389167
+389171
+389173
+389189
+389219
+389227
+389231
+389269
+389273
+389287
+389297
+389299
+389303
+389357
+389369
+389381
+389399
+389401
+389437
+389447
+389461
+389479
+389483
+389507
+389513
+389527
+389531
+389533
+389539
+389561
+389563
+389567
+389569
+389579
+389591
+389621
+389629
+389651
+389659
+389663
+389687
+389699
+389713
+389723
+389743
+389749
+389761
+389773
+389783
+389791
+389797
+389819
+389839
+389849
+389867
+389891
+389897
+389903
+389911
+389923
+389927
+389941
+389947
+389953
+389957
+389971
+389981
+389989
+389999
+390001
+390043
+390067
+390077
+390083
+390097
+390101
+390107
+390109
+390113
+390119
+390151
+390157
+390161
+390191
+390193
+390199
+390209
+390211
+390223
+390263
+390281
+390289
+390307
+390323
+390343
+390347
+390353
+390359
+390367
+390373
+390389
+390391
+390407
+390413
+390419
+390421
+390433
+390437
+390449
+390463
+390479
+390487
+390491
+390493
+390499
+390503
+390527
+390539
+390553
+390581
+390647
+390653
+390671
+390673
+390703
+390707
+390721
+390727
+390737
+390739
+390743
+390751
+390763
+390781
+390791
+390809
+390821
+390829
+390851
+390869
+390877
+390883
+390889
+390893
+390953
+390959
+390961
+390967
+390989
+390991
+391009
+391019
+391021
+391031
+391049
+391057
+391063
+391067
+391073
+391103
+391117
+391133
+391151
+391159
+391163
+391177
+391199
+391217
+391219
+391231
+391247
+391249
+391273
+391283
+391291
+391301
+391331
+391337
+391351
+391367
+391373
+391379
+391387
+391393
+391397
+391399
+391403
+391441
+391451
+391453
+391487
+391519
+391537
+391553
+391579
+391613
+391619
+391627
+391631
+391639
+391661
+391679
+391691
+391693
+391711
+391717
+391733
+391739
+391751
+391753
+391757
+391789
+391801
+391817
+391823
+391847
+391861
+391873
+391879
+391889
+391891
+391903
+391907
+391921
+391939
+391961
+391967
+391987
+391999
+392011
+392033
+392053
+392059
+392069
+392087
+392099
+392101
+392111
+392113
+392131
+392143
+392149
+392153
+392159
+392177
+392201
+392209
+392213
+392221
+392233
+392239
+392251
+392261
+392263
+392267
+392269
+392279
+392281
+392297
+392299
+392321
+392333
+392339
+392347
+392351
+392363
+392383
+392389
+392423
+392437
+392443
+392467
+392473
+392477
+392489
+392503
+392519
+392531
+392543
+392549
+392569
+392593
+392599
+392611
+392629
+392647
+392663
+392669
+392699
+392723
+392737
+392741
+392759
+392761
+392767
+392803
+392807
+392809
+392827
+392831
+392837
+392849
+392851
+392857
+392879
+392893
+392911
+392923
+392927
+392929
+392957
+392963
+392969
+392981
+392983
+393007
+393013
+393017
+393031
+393059
+393073
+393077
+393079
+393083
+393097
+393103
+393109
+393121
+393137
+393143
+393157
+393161
+393181
+393187
+393191
+393203
+393209
+393241
+393247
+393257
+393271
+393287
+393299
+393301
+393311
+393331
+393361
+393373
+393377
+393383
+393401
+393403
+393413
+393451
+393473
+393479
+393487
+393517
+393521
+393539
+393541
+393551
+393557
+393571
+393577
+393581
+393583
+393587
+393593
+393611
+393629
+393637
+393649
+393667
+393671
+393677
+393683
+393697
+393709
+393713
+393721
+393727
+393739
+393749
+393761
+393779
+393797
+393847
+393853
+393857
+393859
+393863
+393871
+393901
+393919
+393929
+393931
+393947
+393961
+393977
+393989
+393997
+394007
+394019
+394039
+394049
+394063
+394073
+394099
+394123
+394129
+394153
+394157
+394169
+394187
+394201
+394211
+394223
+394241
+394249
+394259
+394271
+394291
+394319
+394327
+394357
+394363
+394367
+394369
+394393
+394409
+394411
+394453
+394481
+394489
+394501
+394507
+394523
+394529
+394549
+394571
+394577
+394579
+394601
+394619
+394631
+394633
+394637
+394643
+394673
+394699
+394717
+394721
+394727
+394729
+394733
+394739
+394747
+394759
+394787
+394811
+394813
+394817
+394819
+394829
+394837
+394861
+394879
+394897
+394931
+394943
+394963
+394967
+394969
+394981
+394987
+394993
+395023
+395027
+395039
+395047
+395069
+395089
+395093
+395107
+395111
+395113
+395119
+395137
+395141
+395147
+395159
+395173
+395189
+395191
+395201
+395231
+395243
+395251
+395261
+395273
+395287
+395293
+395303
+395309
+395321
+395323
+395377
+395383
+395407
+395429
+395431
+395443
+395449
+395453
+395459
+395491
+395509
+395513
+395533
+395537
+395543
+395581
+395597
+395611
+395621
+395627
+395657
+395671
+395677
+395687
+395701
+395719
+395737
+395741
+395749
+395767
+395803
+395849
+395851
+395873
+395887
+395891
+395897
+395909
+395921
+395953
+395959
+395971
+396001
+396029
+396031
+396041
+396043
+396061
+396079
+396091
+396103
+396107
+396119
+396157
+396173
+396181
+396197
+396199
+396203
+396217
+396239
+396247
+396259
+396269
+396293
+396299
+396301
+396311
+396323
+396349
+396353
+396373
+396377
+396379
+396413
+396427
+396437
+396443
+396449
+396479
+396509
+396523
+396527
+396533
+396541
+396547
+396563
+396577
+396581
+396601
+396619
+396623
+396629
+396631
+396637
+396647
+396667
+396679
+396703
+396709
+396713
+396719
+396733
+396833
+396871
+396881
+396883
+396887
+396919
+396931
+396937
+396943
+396947
+396953
+396971
+396983
+396997
+397013
+397027
+397037
+397051
+397057
+397063
+397073
+397093
+397099
+397127
+397151
+397153
+397181
+397183
+397211
+397217
+397223
+397237
+397253
+397259
+397283
+397289
+397297
+397301
+397303
+397337
+397351
+397357
+397361
+397373
+397379
+397427
+397429
+397433
+397459
+397469
+397489
+397493
+397517
+397519
+397541
+397543
+397547
+397549
+397567
+397589
+397591
+397597
+397633
+397643
+397673
+397687
+397697
+397721
+397723
+397729
+397751
+397753
+397757
+397759
+397763
+397799
+397807
+397811
+397829
+397849
+397867
+397897
+397907
+397921
+397939
+397951
+397963
+397973
+397981
+398011
+398023
+398029
+398033
+398039
+398053
+398059
+398063
+398077
+398087
+398113
+398117
+398119
+398129
+398143
+398149
+398171
+398207
+398213
+398219
+398227
+398249
+398261
+398267
+398273
+398287
+398303
+398311
+398323
+398339
+398341
+398347
+398353
+398357
+398369
+398393
+398407
+398417
+398423
+398441
+398459
+398467
+398471
+398473
+398477
+398491
+398509
+398539
+398543
+398549
+398557
+398569
+398581
+398591
+398609
+398611
+398621
+398627
+398669
+398681
+398683
+398693
+398711
+398729
+398731
+398759
+398771
+398813
+398819
+398821
+398833
+398857
+398863
+398887
+398903
+398917
+398921
+398933
+398941
+398969
+398977
+398989
+399023
+399031
+399043
+399059
+399067
+399071
+399079
+399097
+399101
+399107
+399131
+399137
+399149
+399151
+399163
+399173
+399181
+399197
+399221
+399227
+399239
+399241
+399263
+399271
+399277
+399281
+399283
+399353
+399379
+399389
+399391
+399401
+399403
+399409
+399433
+399439
+399473
+399481
+399491
+399493
+399499
+399523
+399527
+399541
+399557
+399571
+399577
+399583
+399587
+399601
+399613
+399617
+399643
+399647
+399667
+399677
+399689
+399691
+399719
+399727
+399731
+399739
+399757
+399761
+399769
+399781
+399787
+399793
+399851
+399853
+399871
+399887
+399899
+399911
+399913
+399937
+399941
+399953
+399979
+399983
+399989
+400009
+400031
+400033
+400051
+400067
+400069
+400087
+400093
+400109
+400123
+400151
+400157
+400187
+400199
+400207
+400217
+400237
+400243
+400247
+400249
+400261
+400277
+400291
+400297
+400307
+400313
+400321
+400331
+400339
+400381
+400391
+400409
+400417
+400429
+400441
+400457
+400471
+400481
+400523
+400559
+400579
+400597
+400601
+400607
+400619
+400643
+400651
+400657
+400679
+400681
+400703
+400711
+400721
+400723
+400739
+400753
+400759
+400823
+400837
+400849
+400853
+400859
+400871
+400903
+400927
+400931
+400943
+400949
+400963
+400997
+401017
+401029
+401039
+401053
+401057
+401069
+401077
+401087
+401101
+401113
+401119
+401161
+401173
+401179
+401201
+401209
+401231
+401237
+401243
+401279
+401287
+401309
+401311
+401321
+401329
+401341
+401347
+401371
+401381
+401393
+401407
+401411
+401417
+401473
+401477
+401507
+401519
+401537
+401539
+401551
+401567
+401587
+401593
+401627
+401629
+401651
+401669
+401671
+401689
+401707
+401711
+401743
+401771
+401773
+401809
+401813
+401827
+401839
+401861
+401867
+401887
+401903
+401909
+401917
+401939
+401953
+401957
+401959
+401981
+401987
+401993
+402023
+402029
+402037
+402043
+402049
+402053
+402071
+402089
+402091
+402107
+402131
+402133
+402137
+402139
+402197
+402221
+402223
+402239
+402253
+402263
+402277
+402299
+402307
+402313
+402329
+402331
+402341
+402343
+402359
+402361
+402371
+402379
+402383
+402403
+402419
+402443
+402487
+402503
+402511
+402517
+402527
+402529
+402541
+402551
+402559
+402581
+402583
+402587
+402593
+402601
+402613
+402631
+402691
+402697
+402739
+402751
+402757
+402761
+402763
+402767
+402769
+402797
+402803
+402817
+402823
+402847
+402851
+402859
+402863
+402869
+402881
+402923
+402943
+402947
+402949
+402991
+403001
+403003
+403037
+403043
+403049
+403057
+403061
+403063
+403079
+403097
+403103
+403133
+403141
+403159
+403163
+403181
+403219
+403241
+403243
+403253
+403261
+403267
+403289
+403301
+403309
+403327
+403331
+403339
+403363
+403369
+403387
+403391
+403433
+403439
+403483
+403499
+403511
+403537
+403547
+403549
+403553
+403567
+403577
+403591
+403603
+403607
+403621
+403649
+403661
+403679
+403681
+403687
+403703
+403717
+403721
+403729
+403757
+403783
+403787
+403817
+403829
+403831
+403849
+403861
+403867
+403877
+403889
+403901
+403933
+403951
+403957
+403969
+403979
+403981
+403993
+404009
+404011
+404017
+404021
+404029
+404051
+404081
+404099
+404113
+404119
+404123
+404161
+404167
+404177
+404189
+404191
+404197
+404213
+404221
+404249
+404251
+404267
+404269
+404273
+404291
+404309
+404321
+404323
+404357
+404381
+404387
+404389
+404399
+404419
+404423
+404429
+404431
+404449
+404461
+404483
+404489
+404497
+404507
+404513
+404527
+404531
+404533
+404539
+404557
+404597
+404671
+404693
+404699
+404713
+404773
+404779
+404783
+404819
+404827
+404837
+404843
+404849
+404851
+404941
+404951
+404959
+404969
+404977
+404981
+404983
+405001
+405011
+405029
+405037
+405047
+405049
+405071
+405073
+405089
+405091
+405143
+405157
+405179
+405199
+405211
+405221
+405227
+405239
+405241
+405247
+405253
+405269
+405277
+405287
+405299
+405323
+405341
+405343
+405347
+405373
+405401
+405407
+405413
+405437
+405439
+405473
+405487
+405491
+405497
+405499
+405521
+405527
+405529
+405541
+405553
+405577
+405599
+405607
+405611
+405641
+405659
+405667
+405677
+405679
+405683
+405689
+405701
+405703
+405709
+405719
+405731
+405749
+405763
+405767
+405781
+405799
+405817
+405827
+405829
+405857
+405863
+405869
+405871
+405893
+405901
+405917
+405947
+405949
+405959
+405967
+405989
+405991
+405997
+406013
+406027
+406037
+406067
+406073
+406093
+406117
+406123
+406169
+406171
+406177
+406183
+406207
+406247
+406253
+406267
+406271
+406309
+406313
+406327
+406331
+406339
+406349
+406361
+406381
+406397
+406403
+406423
+406447
+406481
+406499
+406501
+406507
+406513
+406517
+406531
+406547
+406559
+406561
+406573
+406577
+406579
+406583
+406591
+406631
+406633
+406649
+406661
+406673
+406697
+406699
+406717
+406729
+406739
+406789
+406807
+406811
+406817
+406837
+406859
+406873
+406883
+406907
+406951
+406969
+406981
+406993
+407023
+407047
+407059
+407083
+407119
+407137
+407149
+407153
+407177
+407179
+407191
+407203
+407207
+407219
+407221
+407233
+407249
+407257
+407263
+407273
+407287
+407291
+407299
+407311
+407317
+407321
+407347
+407357
+407359
+407369
+407377
+407383
+407401
+407437
+407471
+407483
+407489
+407501
+407503
+407509
+407521
+407527
+407567
+407573
+407579
+407587
+407599
+407621
+407633
+407639
+407651
+407657
+407669
+407699
+407707
+407713
+407717
+407723
+407741
+407747
+407783
+407789
+407791
+407801
+407807
+407821
+407833
+407843
+407857
+407861
+407879
+407893
+407899
+407917
+407923
+407947
+407959
+407969
+407971
+407977
+407993
+408011
+408019
+408041
+408049
+408071
+408077
+408091
+408127
+408131
+408137
+408169
+408173
+408197
+408203
+408209
+408211
+408217
+408223
+408229
+408241
+408251
+408263
+408271
+408283
+408311
+408337
+408341
+408347
+408361
+408379
+408389
+408403
+408413
+408427
+408431
+408433
+408437
+408461
+408469
+408479
+408491
+408497
+408533
+408539
+408553
+408563
+408607
+408623
+408631
+408637
+408643
+408659
+408677
+408689
+408691
+408701
+408703
+408713
+408719
+408743
+408763
+408769
+408773
+408787
+408803
+408809
+408817
+408841
+408857
+408869
+408911
+408913
+408923
+408943
+408953
+408959
+408971
+408979
+408997
+409007
+409021
+409027
+409033
+409043
+409063
+409069
+409081
+409099
+409121
+409153
+409163
+409177
+409187
+409217
+409237
+409259
+409261
+409267
+409271
+409289
+409291
+409327
+409333
+409337
+409349
+409351
+409369
+409379
+409391
+409397
+409429
+409433
+409441
+409463
+409471
+409477
+409483
+409499
+409517
+409523
+409529
+409543
+409573
+409579
+409589
+409597
+409609
+409639
+409657
+409691
+409693
+409709
+409711
+409723
+409729
+409733
+409753
+409769
+409777
+409781
+409813
+409817
+409823
+409831
+409841
+409861
+409867
+409879
+409889
+409891
+409897
+409901
+409909
+409933
+409943
+409951
+409961
+409967
+409987
+409993
+409999
+410009
+410029
+410063
+410087
+410093
+410117
+410119
+410141
+410143
+410149
+410171
+410173
+410203
+410231
+410233
+410239
+410243
+410257
+410279
+410281
+410299
+410317
+410323
+410339
+410341
+410353
+410359
+410383
+410387
+410393
+410401
+410411
+410413
+410453
+410461
+410477
+410489
+410491
+410497
+410507
+410513
+410519
+410551
+410561
+410587
+410617
+410621
+410623
+410629
+410651
+410659
+410671
+410687
+410701
+410717
+410731
+410741
+410747
+410749
+410759
+410783
+410789
+410801
+410807
+410819
+410833
+410857
+410899
+410903
+410929
+410953
+410983
+410999
+411001
+411007
+411011
+411013
+411031
+411041
+411049
+411067
+411071
+411083
+411101
+411113
+411119
+411127
+411143
+411157
+411167
+411193
+411197
+411211
+411233
+411241
+411251
+411253
+411259
+411287
+411311
+411337
+411347
+411361
+411371
+411379
+411409
+411421
+411443
+411449
+411469
+411473
+411479
+411491
+411503
+411527
+411529
+411557
+411563
+411569
+411577
+411583
+411589
+411611
+411613
+411617
+411637
+411641
+411667
+411679
+411683
+411703
+411707
+411709
+411721
+411727
+411737
+411739
+411743
+411751
+411779
+411799
+411809
+411821
+411823
+411833
+411841
+411883
+411919
+411923
+411937
+411941
+411947
+411967
+411991
+412001
+412007
+412019
+412031
+412033
+412037
+412039
+412051
+412067
+412073
+412081
+412099
+412109
+412123
+412127
+412133
+412147
+412157
+412171
+412187
+412189
+412193
+412201
+412211
+412213
+412219
+412249
+412253
+412273
+412277
+412289
+412303
+412333
+412339
+412343
+412387
+412397
+412411
+412457
+412463
+412481
+412487
+412493
+412537
+412561
+412567
+412571
+412589
+412591
+412603
+412609
+412619
+412627
+412637
+412639
+412651
+412663
+412667
+412717
+412739
+412771
+412793
+412807
+412831
+412849
+412859
+412891
+412901
+412903
+412939
+412943
+412949
+412967
+412987
+413009
+413027
+413033
+413053
+413069
+413071
+413081
+413087
+413089
+413093
+413111
+413113
+413129
+413141
+413143
+413159
+413167
+413183
+413197
+413201
+413207
+413233
+413243
+413251
+413263
+413267
+413293
+413299
+413353
+413411
+413417
+413429
+413443
+413461
+413477
+413521
+413527
+413533
+413537
+413551
+413557
+413579
+413587
+413597
+413629
+413653
+413681
+413683
+413689
+413711
+413713
+413719
+413737
+413753
+413759
+413779
+413783
+413807
+413827
+413849
+413863
+413867
+413869
+413879
+413887
+413911
+413923
+413951
+413981
+414013
+414017
+414019
+414031
+414049
+414053
+414061
+414077
+414083
+414097
+414101
+414107
+414109
+414131
+414157
+414179
+414199
+414203
+414209
+414217
+414221
+414241
+414259
+414269
+414277
+414283
+414311
+414313
+414329
+414331
+414347
+414361
+414367
+414383
+414389
+414397
+414413
+414431
+414433
+414451
+414457
+414461
+414467
+414487
+414503
+414521
+414539
+414553
+414559
+414571
+414577
+414607
+414611
+414629
+414641
+414643
+414653
+414677
+414679
+414683
+414691
+414697
+414703
+414707
+414709
+414721
+414731
+414737
+414763
+414767
+414769
+414773
+414779
+414793
+414803
+414809
+414833
+414857
+414871
+414889
+414893
+414899
+414913
+414923
+414929
+414949
+414959
+414971
+414977
+414991
+415013
+415031
+415039
+415061
+415069
+415073
+415087
+415097
+415109
+415111
+415133
+415141
+415147
+415153
+415159
+415171
+415187
+415189
+415201
+415213
+415231
+415253
+415271
+415273
+415319
+415343
+415379
+415381
+415391
+415409
+415427
+415447
+415469
+415477
+415489
+415507
+415517
+415523
+415543
+415553
+415559
+415567
+415577
+415603
+415607
+415609
+415627
+415631
+415643
+415651
+415661
+415669
+415673
+415687
+415691
+415697
+415717
+415721
+415729
+415759
+415783
+415787
+415799
+415801
+415819
+415823
+415861
+415873
+415879
+415901
+415931
+415937
+415949
+415951
+415957
+415963
+415969
+415979
+415993
+415999
+416011
+416023
+416071
+416077
+416089
+416107
+416147
+416149
+416153
+416159
+416167
+416201
+416219
+416239
+416243
+416249
+416257
+416263
+416281
+416291
+416333
+416359
+416387
+416389
+416393
+416399
+416401
+416407
+416413
+416417
+416419
+416441
+416443
+416459
+416473
+416477
+416491
+416497
+416501
+416503
+416513
+416531
+416543
+416573
+416579
+416593
+416621
+416623
+416629
+416659
+416677
+416693
+416719
+416761
+416797
+416821
+416833
+416839
+416849
+416851
+416873
+416881
+416887
+416947
+416957
+416963
+416989
+417007
+417017
+417019
+417023
+417037
+417089
+417097
+417113
+417119
+417127
+417133
+417161
+417169
+417173
+417181
+417187
+417191
+417203
+417217
+417227
+417239
+417251
+417271
+417283
+417293
+417311
+417317
+417331
+417337
+417371
+417377
+417379
+417383
+417419
+417437
+417451
+417457
+417479
+417491
+417493
+417509
+417511
+417523
+417541
+417553
+417559
+417577
+417581
+417583
+417617
+417623
+417631
+417643
+417649
+417671
+417691
+417719
+417721
+417727
+417731
+417733
+417737
+417751
+417763
+417773
+417793
+417811
+417821
+417839
+417863
+417869
+417881
+417883
+417899
+417931
+417941
+417947
+417953
+417959
+417961
+417983
+417997
+418007
+418009
+418027
+418031
+418043
+418051
+418069
+418073
+418079
+418087
+418109
+418129
+418157
+418169
+418177
+418181
+418189
+418199
+418207
+418219
+418259
+418273
+418279
+418289
+418303
+418321
+418331
+418337
+418339
+418343
+418349
+418351
+418357
+418373
+418381
+418391
+418423
+418427
+418447
+418459
+418471
+418493
+418511
+418553
+418559
+418597
+418601
+418603
+418631
+418633
+418637
+418657
+418667
+418699
+418709
+418721
+418739
+418751
+418763
+418771
+418783
+418787
+418793
+418799
+418811
+418813
+418819
+418837
+418843
+418849
+418861
+418867
+418871
+418883
+418889
+418909
+418921
+418927
+418933
+418939
+418961
+418981
+418987
+418993
+418997
+419047
+419051
+419053
+419057
+419059
+419087
+419141
+419147
+419161
+419171
+419183
+419189
+419191
+419201
+419231
+419249
+419261
+419281
+419291
+419297
+419303
+419317
+419329
+419351
+419383
+419401
+419417
+419423
+419429
+419443
+419449
+419459
+419467
+419473
+419477
+419483
+419491
+419513
+419527
+419537
+419557
+419561
+419563
+419567
+419579
+419591
+419597
+419599
+419603
+419609
+419623
+419651
+419687
+419693
+419701
+419711
+419743
+419753
+419777
+419789
+419791
+419801
+419803
+419821
+419827
+419831
+419873
+419893
+419921
+419927
+419929
+419933
+419953
+419959
+419999
+420001
+420029
+420037
+420041
+420047
+420073
+420097
+420103
+420149
+420163
+420191
+420193
+420221
+420241
+420253
+420263
+420269
+420271
+420293
+420307
+420313
+420317
+420319
+420323
+420331
+420341
+420349
+420353
+420361
+420367
+420383
+420397
+420419
+420421
+420439
+420457
+420467
+420479
+420481
+420499
+420503
+420521
+420551
+420557
+420569
+420571
+420593
+420599
+420613
+420671
+420677
+420683
+420691
+420731
+420737
+420743
+420757
+420769
+420779
+420781
+420799
+420803
+420809
+420811
+420851
+420853
+420857
+420859
+420899
+420919
+420929
+420941
+420967
+420977
+420997
+421009
+421019
+421033
+421037
+421049
+421079
+421081
+421093
+421103
+421121
+421123
+421133
+421147
+421159
+421163
+421177
+421181
+421189
+421207
+421241
+421273
+421279
+421303
+421313
+421331
+421339
+421349
+421361
+421381
+421397
+421409
+421417
+421423
+421433
+421453
+421459
+421469
+421471
+421483
+421493
+421501
+421517
+421559
+421607
+421609
+421621
+421633
+421639
+421643
+421657
+421661
+421691
+421697
+421699
+421703
+421709
+421711
+421717
+421727
+421739
+421741
+421783
+421801
+421807
+421831
+421847
+421891
+421907
+421913
+421943
+421973
+421987
+421997
+422029
+422041
+422057
+422063
+422069
+422077
+422083
+422087
+422089
+422099
+422101
+422111
+422113
+422129
+422137
+422141
+422183
+422203
+422209
+422231
+422239
+422243
+422249
+422267
+422287
+422291
+422309
+422311
+422321
+422339
+422353
+422363
+422369
+422377
+422393
+422407
+422431
+422453
+422459
+422479
+422537
+422549
+422551
+422557
+422563
+422567
+422573
+422581
+422621
+422627
+422657
+422689
+422701
+422707
+422711
+422749
+422753
+422759
+422761
+422789
+422797
+422803
+422827
+422857
+422861
+422867
+422869
+422879
+422881
+422893
+422897
+422899
+422911
+422923
+422927
+422969
+422987
+423001
+423013
+423019
+423043
+423053
+423061
+423067
+423083
+423091
+423097
+423103
+423109
+423121
+423127
+423133
+423173
+423179
+423191
+423209
+423221
+423229
+423233
+423251
+423257
+423259
+423277
+423281
+423287
+423289
+423299
+423307
+423323
+423341
+423347
+423389
+423403
+423413
+423427
+423431
+423439
+423457
+423461
+423463
+423469
+423481
+423497
+423503
+423509
+423541
+423547
+423557
+423559
+423581
+423587
+423601
+423617
+423649
+423667
+423697
+423707
+423713
+423727
+423749
+423751
+423763
+423769
+423779
+423781
+423791
+423803
+423823
+423847
+423853
+423859
+423869
+423883
+423887
+423931
+423949
+423961
+423977
+423989
+423991
+424001
+424003
+424007
+424019
+424027
+424037
+424079
+424091
+424093
+424103
+424117
+424121
+424129
+424139
+424147
+424157
+424163
+424169
+424187
+424199
+424223
+424231
+424243
+424247
+424261
+424267
+424271
+424273
+424313
+424331
+424339
+424343
+424351
+424397
+424423
+424429
+424433
+424451
+424471
+424481
+424493
+424519
+424537
+424547
+424549
+424559
+424573
+424577
+424597
+424601
+424639
+424661
+424667
+424679
+424687
+424693
+424709
+424727
+424729
+424757
+424769
+424771
+424777
+424811
+424817
+424819
+424829
+424841
+424843
+424849
+424861
+424867
+424889
+424891
+424903
+424909
+424913
+424939
+424961
+424967
+424997
+425003
+425027
+425039
+425057
+425059
+425071
+425083
+425101
+425107
+425123
+425147
+425149
+425189
+425197
+425207
+425233
+425237
+425251
+425273
+425279
+425281
+425291
+425297
+425309
+425317
+425329
+425333
+425363
+425377
+425387
+425393
+425417
+425419
+425423
+425441
+425443
+425471
+425473
+425489
+425501
+425519
+425521
+425533
+425549
+425563
+425591
+425603
+425609
+425641
+425653
+425681
+425701
+425713
+425779
+425783
+425791
+425801
+425813
+425819
+425837
+425839
+425851
+425857
+425861
+425869
+425879
+425899
+425903
+425911
+425939
+425959
+425977
+425987
+425989
+426007
+426011
+426061
+426073
+426077
+426089
+426091
+426103
+426131
+426161
+426163
+426193
+426197
+426211
+426229
+426233
+426253
+426287
+426301
+426311
+426319
+426331
+426353
+426383
+426389
+426401
+426407
+426421
+426427
+426469
+426487
+426527
+426541
+426551
+426553
+426563
+426583
+426611
+426631
+426637
+426641
+426661
+426691
+426697
+426707
+426709
+426731
+426737
+426739
+426743
+426757
+426761
+426763
+426773
+426779
+426787
+426799
+426841
+426859
+426863
+426871
+426889
+426893
+426913
+426917
+426919
+426931
+426941
+426971
+426973
+426997
+427001
+427013
+427039
+427043
+427067
+427069
+427073
+427079
+427081
+427103
+427117
+427151
+427169
+427181
+427213
+427237
+427241
+427243
+427247
+427249
+427279
+427283
+427307
+427309
+427327
+427333
+427351
+427369
+427379
+427381
+427403
+427417
+427421
+427423
+427429
+427433
+427439
+427447
+427451
+427457
+427477
+427513
+427517
+427523
+427529
+427541
+427579
+427591
+427597
+427619
+427621
+427681
+427711
+427717
+427723
+427727
+427733
+427751
+427781
+427787
+427789
+427813
+427849
+427859
+427877
+427879
+427883
+427913
+427919
+427939
+427949
+427951
+427957
+427967
+427969
+427991
+427993
+427997
+428003
+428023
+428027
+428033
+428039
+428041
+428047
+428083
+428093
+428137
+428143
+428147
+428149
+428161
+428167
+428173
+428177
+428221
+428227
+428231
+428249
+428251
+428273
+428297
+428299
+428303
+428339
+428353
+428369
+428401
+428411
+428429
+428471
+428473
+428489
+428503
+428509
+428531
+428539
+428551
+428557
+428563
+428567
+428569
+428579
+428629
+428633
+428639
+428657
+428663
+428671
+428677
+428683
+428693
+428731
+428741
+428759
+428777
+428797
+428801
+428807
+428809
+428833
+428843
+428851
+428863
+428873
+428899
+428951
+428957
+428977
+429007
+429017
+429043
+429083
+429101
+429109
+429119
+429127
+429137
+429139
+429161
+429181
+429197
+429211
+429217
+429223
+429227
+429241
+429259
+429271
+429277
+429281
+429283
+429329
+429347
+429349
+429361
+429367
+429389
+429397
+429409
+429413
+429427
+429431
+429449
+429463
+429467
+429469
+429487
+429497
+429503
+429509
+429511
+429521
+429529
+429547
+429551
+429563
+429581
+429587
+429589
+429599
+429631
+429643
+429659
+429661
+429673
+429677
+429679
+429683
+429701
+429719
+429727
+429731
+429733
+429773
+429791
+429797
+429817
+429823
+429827
+429851
+429853
+429881
+429887
+429889
+429899
+429901
+429907
+429911
+429917
+429929
+429931
+429937
+429943
+429953
+429971
+429973
+429991
+430007
+430009
+430013
+430019
+430057
+430061
+430081
+430091
+430093
+430121
+430139
+430147
+430193
+430259
+430267
+430277
+430279
+430289
+430303
+430319
+430333
+430343
+430357
+430393
+430411
+430427
+430433
+430453
+430487
+430499
+430511
+430513
+430517
+430543
+430553
+430571
+430579
+430589
+430601
+430603
+430649
+430663
+430691
+430697
+430699
+430709
+430723
+430739
+430741
+430747
+430751
+430753
+430769
+430783
+430789
+430799
+430811
+430819
+430823
+430841
+430847
+430861
+430873
+430879
+430883
+430891
+430897
+430907
+430909
+430921
+430949
+430957
+430979
+430981
+430987
+430999
+431017
+431021
+431029
+431047
+431051
+431063
+431077
+431083
+431099
+431107
+431141
+431147
+431153
+431173
+431191
+431203
+431213
+431219
+431237
+431251
+431257
+431267
+431269
+431287
+431297
+431311
+431329
+431339
+431363
+431369
+431377
+431381
+431399
+431423
+431429
+431441
+431447
+431449
+431479
+431513
+431521
+431533
+431567
+431581
+431597
+431603
+431611
+431617
+431621
+431657
+431659
+431663
+431671
+431693
+431707
+431729
+431731
+431759
+431777
+431797
+431801
+431803
+431807
+431831
+431833
+431857
+431863
+431867
+431869
+431881
+431887
+431891
+431903
+431911
+431929
+431933
+431947
+431983
+431993
+432001
+432007
+432023
+432031
+432037
+432043
+432053
+432059
+432067
+432073
+432097
+432121
+432137
+432139
+432143
+432149
+432161
+432163
+432167
+432199
+432203
+432227
+432241
+432251
+432277
+432281
+432287
+432301
+432317
+432323
+432337
+432343
+432349
+432359
+432373
+432389
+432391
+432401
+432413
+432433
+432437
+432449
+432457
+432479
+432491
+432499
+432503
+432511
+432527
+432539
+432557
+432559
+432569
+432577
+432587
+432589
+432613
+432631
+432637
+432659
+432661
+432713
+432721
+432727
+432737
+432743
+432749
+432781
+432793
+432797
+432799
+432833
+432847
+432857
+432869
+432893
+432907
+432923
+432931
+432959
+432961
+432979
+432983
+432989
+433003
+433033
+433049
+433051
+433061
+433073
+433079
+433087
+433093
+433099
+433117
+433123
+433141
+433151
+433187
+433193
+433201
+433207
+433229
+433241
+433249
+433253
+433259
+433261
+433267
+433271
+433291
+433309
+433319
+433337
+433351
+433357
+433361
+433369
+433373
+433393
+433399
+433421
+433429
+433439
+433453
+433469
+433471
+433501
+433507
+433513
+433549
+433571
+433577
+433607
+433627
+433633
+433639
+433651
+433661
+433663
+433673
+433679
+433681
+433703
+433723
+433729
+433747
+433759
+433777
+433781
+433787
+433813
+433817
+433847
+433859
+433861
+433877
+433883
+433889
+433931
+433943
+433963
+433967
+433981
+434009
+434011
+434029
+434039
+434081
+434087
+434107
+434111
+434113
+434117
+434141
+434167
+434179
+434191
+434201
+434209
+434221
+434237
+434243
+434249
+434261
+434267
+434293
+434297
+434303
+434311
+434323
+434347
+434353
+434363
+434377
+434383
+434387
+434389
+434407
+434411
+434431
+434437
+434459
+434461
+434471
+434479
+434501
+434509
+434521
+434561
+434563
+434573
+434593
+434597
+434611
+434647
+434659
+434683
+434689
+434699
+434717
+434719
+434743
+434761
+434783
+434803
+434807
+434813
+434821
+434827
+434831
+434839
+434849
+434857
+434867
+434873
+434881
+434909
+434921
+434923
+434927
+434933
+434939
+434947
+434957
+434963
+434977
+434981
+434989
+435037
+435041
+435059
+435103
+435107
+435109
+435131
+435139
+435143
+435151
+435161
+435179
+435181
+435187
+435191
+435221
+435223
+435247
+435257
+435263
+435277
+435283
+435287
+435307
+435317
+435343
+435349
+435359
+435371
+435397
+435401
+435403
+435419
+435427
+435437
+435439
+435451
+435481
+435503
+435529
+435541
+435553
+435559
+435563
+435569
+435571
+435577
+435583
+435593
+435619
+435623
+435637
+435641
+435647
+435649
+435653
+435661
+435679
+435709
+435731
+435733
+435739
+435751
+435763
+435769
+435779
+435817
+435839
+435847
+435857
+435859
+435881
+435889
+435893
+435907
+435913
+435923
+435947
+435949
+435973
+435983
+435997
+436003
+436013
+436027
+436061
+436081
+436087
+436091
+436097
+436127
+436147
+436151
+436157
+436171
+436181
+436217
+436231
+436253
+436273
+436279
+436283
+436291
+436307
+436309
+436313
+436343
+436357
+436399
+436417
+436427
+436439
+436459
+436463
+436477
+436481
+436483
+436507
+436523
+436529
+436531
+436547
+436549
+436571
+436591
+436607
+436621
+436627
+436649
+436651
+436673
+436687
+436693
+436717
+436727
+436729
+436739
+436741
+436757
+436801
+436811
+436819
+436831
+436841
+436853
+436871
+436889
+436913
+436957
+436963
+436967
+436973
+436979
+436993
+436999
+437011
+437033
+437071
+437077
+437083
+437093
+437111
+437113
+437137
+437141
+437149
+437153
+437159
+437191
+437201
+437219
+437237
+437243
+437263
+437273
+437279
+437287
+437293
+437321
+437351
+437357
+437363
+437387
+437389
+437401
+437413
+437467
+437471
+437473
+437497
+437501
+437509
+437519
+437527
+437533
+437539
+437543
+437557
+437587
+437629
+437641
+437651
+437653
+437677
+437681
+437687
+437693
+437719
+437729
+437743
+437753
+437771
+437809
+437819
+437837
+437849
+437861
+437867
+437881
+437909
+437923
+437947
+437953
+437959
+437977
+438001
+438017
+438029
+438047
+438049
+438091
+438131
+438133
+438143
+438169
+438203
+438211
+438223
+438233
+438241
+438253
+438259
+438271
+438281
+438287
+438301
+438313
+438329
+438341
+438377
+438391
+438401
+438409
+438419
+438439
+438443
+438467
+438479
+438499
+438517
+438521
+438523
+438527
+438533
+438551
+438569
+438589
+438601
+438611
+438623
+438631
+438637
+438661
+438667
+438671
+438701
+438707
+438721
+438733
+438761
+438769
+438793
+438827
+438829
+438833
+438847
+438853
+438869
+438877
+438887
+438899
+438913
+438937
+438941
+438953
+438961
+438967
+438979
+438983
+438989
+439007
+439009
+439063
+439081
+439123
+439133
+439141
+439157
+439163
+439171
+439183
+439199
+439217
+439253
+439273
+439279
+439289
+439303
+439339
+439349
+439357
+439367
+439381
+439409
+439421
+439427
+439429
+439441
+439459
+439463
+439471
+439493
+439511
+439519
+439541
+439559
+439567
+439573
+439577
+439583
+439601
+439613
+439631
+439639
+439661
+439667
+439687
+439693
+439697
+439709
+439723
+439729
+439753
+439759
+439763
+439771
+439781
+439787
+439799
+439811
+439823
+439849
+439853
+439861
+439867
+439883
+439891
+439903
+439919
+439949
+439961
+439969
+439973
+439981
+439991
+440009
+440023
+440039
+440047
+440087
+440093
+440101
+440131
+440159
+440171
+440177
+440179
+440183
+440203
+440207
+440221
+440227
+440239
+440261
+440269
+440281
+440303
+440311
+440329
+440333
+440339
+440347
+440371
+440383
+440389
+440393
+440399
+440431
+440441
+440443
+440471
+440497
+440501
+440507
+440509
+440527
+440537
+440543
+440549
+440551
+440567
+440569
+440579
+440581
+440641
+440651
+440653
+440669
+440677
+440681
+440683
+440711
+440717
+440723
+440731
+440753
+440761
+440773
+440807
+440809
+440821
+440831
+440849
+440863
+440893
+440903
+440911
+440939
+440941
+440953
+440959
+440983
+440987
+440989
+441011
+441029
+441041
+441043
+441053
+441073
+441079
+441101
+441107
+441109
+441113
+441121
+441127
+441157
+441169
+441179
+441187
+441191
+441193
+441229
+441247
+441251
+441257
+441263
+441281
+441307
+441319
+441349
+441359
+441361
+441403
+441421
+441443
+441449
+441461
+441479
+441499
+441517
+441523
+441527
+441547
+441557
+441563
+441569
+441587
+441607
+441613
+441619
+441631
+441647
+441667
+441697
+441703
+441713
+441737
+441751
+441787
+441797
+441799
+441811
+441827
+441829
+441839
+441841
+441877
+441887
+441907
+441913
+441923
+441937
+441953
+441971
+442003
+442007
+442009
+442019
+442027
+442031
+442033
+442061
+442069
+442097
+442109
+442121
+442139
+442147
+442151
+442157
+442171
+442177
+442181
+442193
+442201
+442207
+442217
+442229
+442237
+442243
+442271
+442283
+442291
+442319
+442327
+442333
+442363
+442367
+442397
+442399
+442439
+442447
+442457
+442469
+442487
+442489
+442499
+442501
+442517
+442531
+442537
+442571
+442573
+442577
+442579
+442601
+442609
+442619
+442633
+442691
+442699
+442703
+442721
+442733
+442747
+442753
+442763
+442769
+442777
+442781
+442789
+442807
+442817
+442823
+442829
+442831
+442837
+442843
+442861
+442879
+442903
+442919
+442961
+442963
+442973
+442979
+442987
+442991
+442997
+443011
+443017
+443039
+443041
+443057
+443059
+443063
+443077
+443089
+443117
+443123
+443129
+443147
+443153
+443159
+443161
+443167
+443171
+443189
+443203
+443221
+443227
+443231
+443237
+443243
+443249
+443263
+443273
+443281
+443291
+443293
+443341
+443347
+443353
+443363
+443369
+443389
+443407
+443413
+443419
+443423
+443431
+443437
+443453
+443467
+443489
+443501
+443533
+443543
+443551
+443561
+443563
+443567
+443587
+443591
+443603
+443609
+443629
+443659
+443687
+443689
+443701
+443711
+443731
+443749
+443753
+443759
+443761
+443771
+443777
+443791
+443837
+443851
+443867
+443869
+443873
+443879
+443881
+443893
+443899
+443909
+443917
+443939
+443941
+443953
+443983
+443987
+443999
+444001
+444007
+444029
+444043
+444047
+444079
+444089
+444109
+444113
+444121
+444127
+444131
+444151
+444167
+444173
+444179
+444181
+444187
+444209
+444253
+444271
+444281
+444287
+444289
+444293
+444307
+444341
+444343
+444347
+444349
+444401
+444403
+444421
+444443
+444449
+444461
+444463
+444469
+444473
+444487
+444517
+444523
+444527
+444529
+444539
+444547
+444553
+444557
+444569
+444589
+444607
+444623
+444637
+444641
+444649
+444671
+444677
+444701
+444713
+444739
+444767
+444791
+444793
+444803
+444811
+444817
+444833
+444841
+444859
+444863
+444869
+444877
+444883
+444887
+444893
+444901
+444929
+444937
+444953
+444967
+444971
+444979
+445001
+445019
+445021
+445031
+445033
+445069
+445087
+445091
+445097
+445103
+445141
+445157
+445169
+445183
+445187
+445199
+445229
+445261
+445271
+445279
+445283
+445297
+445307
+445321
+445339
+445363
+445427
+445433
+445447
+445453
+445463
+445477
+445499
+445507
+445537
+445541
+445567
+445573
+445583
+445589
+445597
+445619
+445631
+445633
+445649
+445657
+445691
+445699
+445703
+445741
+445747
+445769
+445771
+445789
+445799
+445807
+445829
+445847
+445853
+445871
+445877
+445883
+445891
+445931
+445937
+445943
+445967
+445969
+446003
+446009
+446041
+446053
+446081
+446087
+446111
+446123
+446129
+446141
+446179
+446189
+446191
+446197
+446221
+446227
+446231
+446261
+446263
+446273
+446279
+446293
+446309
+446323
+446333
+446353
+446363
+446387
+446389
+446399
+446401
+446417
+446441
+446447
+446461
+446473
+446477
+446503
+446533
+446549
+446561
+446569
+446597
+446603
+446609
+446647
+446657
+446713
+446717
+446731
+446753
+446759
+446767
+446773
+446819
+446827
+446839
+446863
+446881
+446891
+446893
+446909
+446911
+446921
+446933
+446951
+446969
+446983
+447001
+447011
+447019
+447053
+447067
+447079
+447101
+447107
+447119
+447133
+447137
+447173
+447179
+447193
+447197
+447211
+447217
+447221
+447233
+447247
+447257
+447259
+447263
+447311
+447319
+447323
+447331
+447353
+447401
+447409
+447427
+447439
+447443
+447449
+447451
+447463
+447467
+447481
+447509
+447521
+447527
+447541
+447569
+447571
+447611
+447617
+447637
+447641
+447677
+447683
+447701
+447703
+447743
+447749
+447757
+447779
+447791
+447793
+447817
+447823
+447827
+447829
+447841
+447859
+447877
+447883
+447893
+447901
+447907
+447943
+447961
+447983
+447991
+448003
+448013
+448027
+448031
+448057
+448067
+448073
+448093
+448111
+448121
+448139
+448141
+448157
+448159
+448169
+448177
+448187
+448193
+448199
+448207
+448241
+448249
+448303
+448309
+448313
+448321
+448351
+448363
+448367
+448373
+448379
+448387
+448397
+448421
+448451
+448519
+448531
+448561
+448597
+448607
+448627
+448631
+448633
+448667
+448687
+448697
+448703
+448727
+448733
+448741
+448769
+448793
+448801
+448807
+448829
+448843
+448853
+448859
+448867
+448871
+448873
+448879
+448883
+448907
+448927
+448939
+448969
+448993
+448997
+448999
+449003
+449011
+449051
+449077
+449083
+449093
+449107
+449117
+449129
+449131
+449149
+449153
+449161
+449171
+449173
+449201
+449203
+449209
+449227
+449243
+449249
+449261
+449263
+449269
+449287
+449299
+449303
+449311
+449321
+449333
+449347
+449353
+449363
+449381
+449399
+449411
+449417
+449419
+449437
+449441
+449459
+449473
+449543
+449549
+449557
+449563
+449567
+449569
+449591
+449609
+449621
+449629
+449653
+449663
+449671
+449677
+449681
+449689
+449693
+449699
+449741
+449759
+449767
+449773
+449783
+449797
+449807
+449821
+449833
+449851
+449879
+449921
+449929
+449941
+449951
+449959
+449963
+449971
+449987
+449989
+450001
+450011
+450019
+450029
+450067
+450071
+450077
+450083
+450101
+450103
+450113
+450127
+450137
+450161
+450169
+450193
+450199
+450209
+450217
+450223
+450227
+450239
+450257
+450259
+450277
+450287
+450293
+450299
+450301
+450311
+450343
+450349
+450361
+450367
+450377
+450383
+450391
+450403
+450413
+450421
+450431
+450451
+450473
+450479
+450481
+450487
+450493
+450503
+450529
+450533
+450557
+450563
+450581
+450587
+450599
+450601
+450617
+450641
+450643
+450649
+450677
+450691
+450707
+450719
+450727
+450761
+450767
+450787
+450797
+450799
+450803
+450809
+450811
+450817
+450829
+450839
+450841
+450847
+450859
+450881
+450883
+450887
+450893
+450899
+450913
+450917
+450929
+450943
+450949
+450971
+450991
+450997
+451013
+451039
+451051
+451057
+451069
+451093
+451097
+451103
+451109
+451159
+451177
+451181
+451183
+451201
+451207
+451249
+451277
+451279
+451301
+451303
+451309
+451313
+451331
+451337
+451343
+451361
+451387
+451397
+451411
+451439
+451441
+451481
+451499
+451519
+451523
+451541
+451547
+451553
+451579
+451601
+451609
+451621
+451637
+451657
+451663
+451667
+451669
+451679
+451681
+451691
+451699
+451709
+451723
+451747
+451753
+451771
+451783
+451793
+451799
+451823
+451831
+451837
+451859
+451873
+451879
+451897
+451901
+451903
+451909
+451921
+451933
+451937
+451939
+451961
+451967
+451987
+452009
+452017
+452027
+452033
+452041
+452077
+452083
+452087
+452131
+452159
+452161
+452171
+452191
+452201
+452213
+452227
+452233
+452239
+452269
+452279
+452293
+452297
+452329
+452363
+452377
+452393
+452401
+452443
+452453
+452497
+452519
+452521
+452531
+452533
+452537
+452539
+452549
+452579
+452587
+452597
+452611
+452629
+452633
+452671
+452687
+452689
+452701
+452731
+452759
+452773
+452797
+452807
+452813
+452821
+452831
+452857
+452869
+452873
+452923
+452953
+452957
+452983
+452989
+453023
+453029
+453053
+453073
+453107
+453119
+453133
+453137
+453143
+453157
+453161
+453181
+453197
+453199
+453209
+453217
+453227
+453239
+453247
+453269
+453289
+453293
+453301
+453311
+453317
+453329
+453347
+453367
+453371
+453377
+453379
+453421
+453451
+453461
+453527
+453553
+453559
+453569
+453571
+453599
+453601
+453617
+453631
+453637
+453641
+453643
+453659
+453667
+453671
+453683
+453703
+453707
+453709
+453737
+453757
+453797
+453799
+453823
+453833
+453847
+453851
+453877
+453889
+453907
+453913
+453923
+453931
+453949
+453961
+453977
+453983
+453991
+454009
+454021
+454031
+454033
+454039
+454061
+454063
+454079
+454109
+454141
+454151
+454159
+454183
+454199
+454211
+454213
+454219
+454229
+454231
+454247
+454253
+454277
+454297
+454303
+454313
+454331
+454351
+454357
+454361
+454379
+454387
+454409
+454417
+454451
+454453
+454483
+454501
+454507
+454513
+454541
+454543
+454547
+454577
+454579
+454603
+454609
+454627
+454637
+454673
+454679
+454709
+454711
+454721
+454723
+454759
+454763
+454777
+454799
+454823
+454843
+454847
+454849
+454859
+454889
+454891
+454907
+454919
+454921
+454931
+454943
+454967
+454969
+454973
+454991
+455003
+455011
+455033
+455047
+455053
+455093
+455099
+455123
+455149
+455159
+455167
+455171
+455177
+455201
+455219
+455227
+455233
+455237
+455261
+455263
+455269
+455291
+455309
+455317
+455321
+455333
+455339
+455341
+455353
+455381
+455393
+455401
+455407
+455419
+455431
+455437
+455443
+455461
+455471
+455473
+455479
+455489
+455491
+455513
+455527
+455531
+455537
+455557
+455573
+455579
+455597
+455599
+455603
+455627
+455647
+455659
+455681
+455683
+455687
+455701
+455711
+455717
+455737
+455761
+455783
+455789
+455809
+455827
+455831
+455849
+455863
+455881
+455899
+455921
+455933
+455941
+455953
+455969
+455977
+455989
+455993
+455999
+456007
+456013
+456023
+456037
+456047
+456061
+456091
+456107
+456109
+456119
+456149
+456151
+456167
+456193
+456223
+456233
+456241
+456283
+456293
+456329
+456349
+456353
+456367
+456377
+456403
+456409
+456427
+456439
+456451
+456457
+456461
+456499
+456503
+456517
+456523
+456529
+456539
+456553
+456557
+456559
+456571
+456581
+456587
+456607
+456611
+456613
+456623
+456641
+456647
+456649
+456653
+456679
+456683
+456697
+456727
+456737
+456763
+456767
+456769
+456791
+456809
+456811
+456821
+456871
+456877
+456881
+456899
+456901
+456923
+456949
+456959
+456979
+456991
+457001
+457003
+457013
+457021
+457043
+457049
+457057
+457087
+457091
+457097
+457099
+457117
+457139
+457151
+457153
+457183
+457189
+457201
+457213
+457229
+457241
+457253
+457267
+457271
+457277
+457279
+457307
+457319
+457333
+457339
+457363
+457367
+457381
+457393
+457397
+457399
+457403
+457411
+457421
+457433
+457459
+457469
+457507
+457511
+457517
+457547
+457553
+457559
+457571
+457607
+457609
+457621
+457643
+457651
+457661
+457669
+457673
+457679
+457687
+457697
+457711
+457739
+457757
+457789
+457799
+457813
+457817
+457829
+457837
+457871
+457889
+457903
+457913
+457943
+457979
+457981
+457987
+458009
+458027
+458039
+458047
+458053
+458057
+458063
+458069
+458119
+458123
+458173
+458179
+458189
+458191
+458197
+458207
+458219
+458239
+458309
+458317
+458323
+458327
+458333
+458357
+458363
+458377
+458399
+458401
+458407
+458449
+458477
+458483
+458501
+458531
+458533
+458543
+458567
+458569
+458573
+458593
+458599
+458611
+458621
+458629
+458639
+458651
+458663
+458669
+458683
+458701
+458719
+458729
+458747
+458789
+458791
+458797
+458807
+458819
+458849
+458863
+458879
+458891
+458897
+458917
+458921
+458929
+458947
+458957
+458959
+458963
+458971
+458977
+458981
+458987
+458993
+459007
+459013
+459023
+459029
+459031
+459037
+459047
+459089
+459091
+459113
+459127
+459167
+459169
+459181
+459209
+459223
+459229
+459233
+459257
+459271
+459293
+459301
+459313
+459317
+459337
+459341
+459343
+459353
+459373
+459377
+459383
+459397
+459421
+459427
+459443
+459463
+459467
+459469
+459479
+459509
+459521
+459523
+459593
+459607
+459611
+459619
+459623
+459631
+459647
+459649
+459671
+459677
+459691
+459703
+459749
+459763
+459791
+459803
+459817
+459829
+459841
+459847
+459883
+459913
+459923
+459929
+459937
+459961
+460013
+460039
+460051
+460063
+460073
+460079
+460081
+460087
+460091
+460099
+460111
+460127
+460147
+460157
+460171
+460181
+460189
+460211
+460217
+460231
+460247
+460267
+460289
+460297
+460301
+460337
+460349
+460373
+460379
+460387
+460393
+460403
+460409
+460417
+460451
+460463
+460477
+460531
+460543
+460561
+460571
+460589
+460609
+460619
+460627
+460633
+460637
+460643
+460657
+460673
+460697
+460709
+460711
+460721
+460771
+460777
+460787
+460793
+460813
+460829
+460841
+460843
+460871
+460891
+460903
+460907
+460913
+460919
+460937
+460949
+460951
+460969
+460973
+460979
+460981
+460987
+460991
+461009
+461011
+461017
+461051
+461053
+461059
+461093
+461101
+461119
+461143
+461147
+461171
+461183
+461191
+461207
+461233
+461239
+461257
+461269
+461273
+461297
+461299
+461309
+461317
+461323
+461327
+461333
+461359
+461381
+461393
+461407
+461411
+461413
+461437
+461441
+461443
+461467
+461479
+461507
+461521
+461561
+461569
+461581
+461599
+461603
+461609
+461627
+461639
+461653
+461677
+461687
+461689
+461693
+461707
+461717
+461801
+461803
+461819
+461843
+461861
+461887
+461891
+461917
+461921
+461933
+461957
+461971
+461977
+461983
+462013
+462041
+462067
+462073
+462079
+462097
+462103
+462109
+462113
+462131
+462149
+462181
+462191
+462199
+462221
+462239
+462263
+462271
+462307
+462311
+462331
+462337
+462361
+462373
+462377
+462401
+462409
+462419
+462421
+462437
+462443
+462467
+462481
+462491
+462493
+462499
+462529
+462541
+462547
+462557
+462569
+462571
+462577
+462589
+462607
+462629
+462641
+462643
+462653
+462659
+462667
+462673
+462677
+462697
+462713
+462719
+462727
+462733
+462739
+462773
+462827
+462841
+462851
+462863
+462871
+462881
+462887
+462899
+462901
+462911
+462937
+462947
+462953
+462983
+463003
+463031
+463033
+463093
+463103
+463157
+463181
+463189
+463207
+463213
+463219
+463231
+463237
+463247
+463249
+463261
+463283
+463291
+463297
+463303
+463313
+463319
+463321
+463339
+463343
+463363
+463387
+463399
+463433
+463447
+463451
+463453
+463457
+463459
+463483
+463501
+463511
+463513
+463523
+463531
+463537
+463549
+463579
+463613
+463627
+463633
+463643
+463649
+463663
+463679
+463693
+463711
+463717
+463741
+463747
+463753
+463763
+463781
+463787
+463807
+463823
+463829
+463831
+463849
+463861
+463867
+463873
+463889
+463891
+463907
+463919
+463921
+463949
+463963
+463973
+463987
+463993
+464003
+464011
+464021
+464033
+464047
+464069
+464081
+464089
+464119
+464129
+464131
+464137
+464141
+464143
+464171
+464173
+464197
+464201
+464213
+464237
+464251
+464257
+464263
+464279
+464281
+464291
+464309
+464311
+464327
+464351
+464371
+464381
+464383
+464413
+464419
+464437
+464447
+464459
+464467
+464479
+464483
+464521
+464537
+464539
+464549
+464557
+464561
+464587
+464591
+464603
+464617
+464621
+464647
+464663
+464687
+464699
+464741
+464747
+464749
+464753
+464767
+464771
+464773
+464777
+464801
+464803
+464809
+464813
+464819
+464843
+464857
+464879
+464897
+464909
+464917
+464923
+464927
+464939
+464941
+464951
+464953
+464963
+464983
+464993
+464999
+465007
+465011
+465013
+465019
+465041
+465061
+465067
+465071
+465077
+465079
+465089
+465107
+465119
+465133
+465151
+465161
+465163
+465167
+465169
+465173
+465187
+465209
+465211
+465259
+465271
+465277
+465281
+465293
+465299
+465317
+465319
+465331
+465337
+465373
+465379
+465383
+465407
+465419
+465433
+465463
+465469
+465523
+465529
+465541
+465551
+465581
+465587
+465611
+465631
+465643
+465649
+465659
+465679
+465701
+465721
+465739
+465743
+465761
+465781
+465797
+465799
+465809
+465821
+465833
+465841
+465887
+465893
+465901
+465917
+465929
+465931
+465947
+465977
+465989
+466009
+466019
+466027
+466033
+466043
+466061
+466069
+466073
+466079
+466087
+466091
+466121
+466139
+466153
+466171
+466181
+466183
+466201
+466243
+466247
+466261
+466267
+466273
+466283
+466303
+466321
+466331
+466339
+466357
+466369
+466373
+466409
+466423
+466441
+466451
+466483
+466517
+466537
+466547
+466553
+466561
+466567
+466573
+466579
+466603
+466619
+466637
+466649
+466651
+466673
+466717
+466723
+466729
+466733
+466747
+466751
+466777
+466787
+466801
+466819
+466853
+466859
+466897
+466909
+466913
+466919
+466951
+466957
+466997
+467003
+467009
+467017
+467021
+467063
+467081
+467083
+467101
+467119
+467123
+467141
+467147
+467171
+467183
+467197
+467209
+467213
+467237
+467239
+467261
+467293
+467297
+467317
+467329
+467333
+467353
+467371
+467399
+467417
+467431
+467437
+467447
+467471
+467473
+467477
+467479
+467491
+467497
+467503
+467507
+467527
+467531
+467543
+467549
+467557
+467587
+467591
+467611
+467617
+467627
+467629
+467633
+467641
+467651
+467657
+467669
+467671
+467681
+467689
+467699
+467713
+467729
+467737
+467743
+467749
+467773
+467783
+467813
+467827
+467833
+467867
+467869
+467879
+467881
+467893
+467897
+467899
+467903
+467927
+467941
+467953
+467963
+467977
+468001
+468011
+468019
+468029
+468049
+468059
+468067
+468071
+468079
+468107
+468109
+468113
+468121
+468133
+468137
+468151
+468157
+468173
+468187
+468191
+468199
+468239
+468241
+468253
+468271
+468277
+468289
+468319
+468323
+468353
+468359
+468371
+468389
+468421
+468439
+468451
+468463
+468473
+468491
+468493
+468499
+468509
+468527
+468551
+468557
+468577
+468581
+468593
+468599
+468613
+468619
+468623
+468641
+468647
+468653
+468661
+468667
+468683
+468691
+468697
+468703
+468709
+468719
+468737
+468739
+468761
+468773
+468781
+468803
+468817
+468821
+468841
+468851
+468859
+468869
+468883
+468887
+468889
+468893
+468899
+468913
+468953
+468967
+468973
+468983
+469009
+469031
+469037
+469069
+469099
+469121
+469127
+469141
+469153
+469169
+469193
+469207
+469219
+469229
+469237
+469241
+469253
+469267
+469279
+469283
+469303
+469321
+469331
+469351
+469363
+469367
+469369
+469379
+469397
+469411
+469429
+469439
+469457
+469487
+469501
+469529
+469541
+469543
+469561
+469583
+469589
+469613
+469627
+469631
+469649
+469657
+469673
+469687
+469691
+469717
+469723
+469747
+469753
+469757
+469769
+469787
+469793
+469801
+469811
+469823
+469841
+469849
+469877
+469879
+469891
+469907
+469919
+469939
+469957
+469969
+469979
+469993
+470021
+470039
+470059
+470077
+470081
+470083
+470087
+470089
+470131
+470149
+470153
+470161
+470167
+470179
+470201
+470207
+470209
+470213
+470219
+470227
+470243
+470251
+470263
+470279
+470297
+470299
+470303
+470317
+470333
+470347
+470359
+470389
+470399
+470411
+470413
+470417
+470429
+470443
+470447
+470453
+470461
+470471
+470473
+470489
+470501
+470513
+470521
+470531
+470539
+470551
+470579
+470593
+470597
+470599
+470609
+470621
+470627
+470647
+470651
+470653
+470663
+470669
+470689
+470711
+470719
+470731
+470749
+470779
+470783
+470791
+470819
+470831
+470837
+470863
+470867
+470881
+470887
+470891
+470903
+470927
+470933
+470941
+470947
+470957
+470959
+470993
+470999
+471007
+471041
+471061
+471073
+471089
+471091
+471101
+471137
+471139
+471161
+471173
+471179
+471187
+471193
+471209
+471217
+471241
+471253
+471259
+471277
+471281
+471283
+471299
+471301
+471313
+471353
+471389
+471391
+471403
+471407
+471439
+471451
+471467
+471481
+471487
+471503
+471509
+471521
+471533
+471539
+471553
+471571
+471589
+471593
+471607
+471617
+471619
+471641
+471649
+471659
+471671
+471673
+471677
+471683
+471697
+471703
+471719
+471721
+471749
+471769
+471781
+471791
+471803
+471817
+471841
+471847
+471853
+471871
+471893
+471901
+471907
+471923
+471929
+471931
+471943
+471949
+471959
+471997
+472019
+472027
+472051
+472057
+472063
+472067
+472103
+472111
+472123
+472127
+472133
+472139
+472151
+472159
+472163
+472189
+472193
+472247
+472249
+472253
+472261
+472273
+472289
+472301
+472309
+472319
+472331
+472333
+472349
+472369
+472391
+472393
+472399
+472411
+472421
+472457
+472469
+472477
+472523
+472541
+472543
+472559
+472561
+472573
+472597
+472631
+472639
+472643
+472669
+472687
+472691
+472697
+472709
+472711
+472721
+472741
+472751
+472763
+472793
+472799
+472817
+472831
+472837
+472847
+472859
+472883
+472907
+472909
+472921
+472937
+472939
+472963
+472993
+473009
+473021
+473027
+473089
+473101
+473117
+473141
+473147
+473159
+473167
+473173
+473191
+473197
+473201
+473203
+473219
+473227
+473257
+473279
+473287
+473293
+473311
+473321
+473327
+473351
+473353
+473377
+473381
+473383
+473411
+473419
+473441
+473443
+473453
+473471
+473477
+473479
+473497
+473503
+473507
+473513
+473519
+473527
+473531
+473533
+473549
+473579
+473597
+473611
+473617
+473633
+473647
+473659
+473719
+473723
+473729
+473741
+473743
+473761
+473789
+473833
+473839
+473857
+473861
+473867
+473887
+473899
+473911
+473923
+473927
+473929
+473939
+473951
+473953
+473971
+473981
+473987
+473999
+474017
+474029
+474037
+474043
+474049
+474059
+474073
+474077
+474101
+474119
+474127
+474137
+474143
+474151
+474163
+474169
+474197
+474211
+474223
+474241
+474263
+474289
+474307
+474311
+474319
+474337
+474343
+474347
+474359
+474379
+474389
+474391
+474413
+474433
+474437
+474443
+474479
+474491
+474497
+474499
+474503
+474533
+474541
+474547
+474557
+474569
+474571
+474581
+474583
+474619
+474629
+474647
+474659
+474667
+474671
+474707
+474709
+474737
+474751
+474757
+474769
+474779
+474787
+474809
+474811
+474839
+474847
+474857
+474899
+474907
+474911
+474917
+474923
+474931
+474937
+474941
+474949
+474959
+474977
+474983
+475037
+475051
+475073
+475081
+475091
+475093
+475103
+475109
+475141
+475147
+475151
+475159
+475169
+475207
+475219
+475229
+475243
+475271
+475273
+475283
+475289
+475297
+475301
+475327
+475331
+475333
+475351
+475367
+475369
+475379
+475381
+475403
+475417
+475421
+475427
+475429
+475441
+475457
+475469
+475483
+475511
+475523
+475529
+475549
+475583
+475597
+475613
+475619
+475621
+475637
+475639
+475649
+475669
+475679
+475681
+475691
+475693
+475697
+475721
+475729
+475751
+475753
+475759
+475763
+475777
+475789
+475793
+475807
+475823
+475831
+475837
+475841
+475859
+475877
+475879
+475889
+475897
+475903
+475907
+475921
+475927
+475933
+475957
+475973
+475991
+475997
+476009
+476023
+476027
+476029
+476039
+476041
+476059
+476081
+476087
+476089
+476101
+476107
+476111
+476137
+476143
+476167
+476183
+476219
+476233
+476237
+476243
+476249
+476279
+476299
+476317
+476347
+476351
+476363
+476369
+476381
+476401
+476407
+476419
+476423
+476429
+476467
+476477
+476479
+476507
+476513
+476519
+476579
+476587
+476591
+476599
+476603
+476611
+476633
+476639
+476647
+476659
+476681
+476683
+476701
+476713
+476719
+476737
+476743
+476753
+476759
+476783
+476803
+476831
+476849
+476851
+476863
+476869
+476887
+476891
+476911
+476921
+476929
+476977
+476981
+476989
+477011
+477013
+477017
+477019
+477031
+477047
+477073
+477077
+477091
+477131
+477149
+477163
+477209
+477221
+477229
+477259
+477277
+477293
+477313
+477317
+477329
+477341
+477359
+477361
+477383
+477409
+477439
+477461
+477469
+477497
+477511
+477517
+477523
+477539
+477551
+477553
+477557
+477571
+477577
+477593
+477619
+477623
+477637
+477671
+477677
+477721
+477727
+477731
+477739
+477767
+477769
+477791
+477797
+477809
+477811
+477821
+477823
+477839
+477847
+477857
+477863
+477881
+477899
+477913
+477941
+477947
+477973
+477977
+477991
+478001
+478039
+478063
+478067
+478069
+478087
+478099
+478111
+478129
+478139
+478157
+478169
+478171
+478189
+478199
+478207
+478213
+478241
+478243
+478253
+478259
+478271
+478273
+478321
+478339
+478343
+478351
+478391
+478399
+478403
+478411
+478417
+478421
+478427
+478433
+478441
+478451
+478453
+478459
+478481
+478483
+478493
+478523
+478531
+478571
+478573
+478579
+478589
+478603
+478627
+478631
+478637
+478651
+478679
+478697
+478711
+478727
+478729
+478739
+478741
+478747
+478763
+478769
+478787
+478801
+478811
+478813
+478823
+478831
+478843
+478853
+478861
+478871
+478879
+478897
+478901
+478913
+478927
+478931
+478937
+478943
+478963
+478967
+478991
+478999
+479023
+479027
+479029
+479041
+479081
+479131
+479137
+479147
+479153
+479189
+479191
+479201
+479209
+479221
+479231
+479239
+479243
+479263
+479267
+479287
+479299
+479309
+479317
+479327
+479357
+479371
+479377
+479387
+479419
+479429
+479431
+479441
+479461
+479473
+479489
+479497
+479509
+479513
+479533
+479543
+479561
+479569
+479581
+479593
+479599
+479623
+479629
+479639
+479701
+479749
+479753
+479761
+479771
+479777
+479783
+479797
+479813
+479821
+479833
+479839
+479861
+479879
+479881
+479891
+479903
+479909
+479939
+479951
+479953
+479957
+479971
+480013
+480017
+480019
+480023
+480043
+480047
+480049
+480059
+480061
+480071
+480091
+480101
+480107
+480113
+480133
+480143
+480157
+480167
+480169
+480203
+480209
+480287
+480299
+480317
+480329
+480341
+480343
+480349
+480367
+480373
+480379
+480383
+480391
+480409
+480419
+480427
+480449
+480451
+480461
+480463
+480499
+480503
+480509
+480517
+480521
+480527
+480533
+480541
+480553
+480563
+480569
+480583
+480587
+480647
+480661
+480707
+480713
+480731
+480737
+480749
+480761
+480773
+480787
+480803
+480827
+480839
+480853
+480881
+480911
+480919
+480929
+480937
+480941
+480959
+480967
+480979
+480989
+481001
+481003
+481009
+481021
+481043
+481051
+481067
+481073
+481087
+481093
+481097
+481109
+481123
+481133
+481141
+481147
+481153
+481157
+481171
+481177
+481181
+481199
+481207
+481211
+481231
+481249
+481297
+481301
+481303
+481307
+481343
+481363
+481373
+481379
+481387
+481409
+481417
+481433
+481447
+481469
+481489
+481501
+481513
+481531
+481549
+481571
+481577
+481589
+481619
+481633
+481639
+481651
+481667
+481673
+481681
+481693
+481697
+481699
+481721
+481751
+481753
+481769
+481787
+481801
+481807
+481813
+481837
+481843
+481847
+481849
+481861
+481867
+481879
+481883
+481909
+481939
+481963
+481997
+482017
+482021
+482029
+482033
+482039
+482051
+482071
+482093
+482099
+482101
+482117
+482123
+482179
+482189
+482203
+482213
+482227
+482231
+482233
+482243
+482263
+482281
+482309
+482323
+482347
+482351
+482359
+482371
+482387
+482393
+482399
+482401
+482407
+482413
+482423
+482437
+482441
+482483
+482501
+482507
+482509
+482513
+482519
+482527
+482539
+482569
+482593
+482597
+482621
+482627
+482633
+482641
+482659
+482663
+482683
+482687
+482689
+482707
+482711
+482717
+482719
+482731
+482743
+482753
+482759
+482767
+482773
+482789
+482803
+482819
+482827
+482837
+482861
+482863
+482873
+482897
+482899
+482917
+482941
+482947
+482957
+482971
+483017
+483031
+483061
+483071
+483097
+483127
+483139
+483163
+483167
+483179
+483209
+483211
+483221
+483229
+483233
+483239
+483247
+483251
+483281
+483289
+483317
+483323
+483337
+483347
+483367
+483377
+483389
+483397
+483407
+483409
+483433
+483443
+483467
+483481
+483491
+483499
+483503
+483523
+483541
+483551
+483557
+483563
+483577
+483611
+483619
+483629
+483643
+483649
+483671
+483697
+483709
+483719
+483727
+483733
+483751
+483757
+483761
+483767
+483773
+483787
+483809
+483811
+483827
+483829
+483839
+483853
+483863
+483869
+483883
+483907
+483929
+483937
+483953
+483971
+483991
+484019
+484027
+484037
+484061
+484067
+484079
+484091
+484111
+484117
+484123
+484129
+484151
+484153
+484171
+484181
+484193
+484201
+484207
+484229
+484243
+484259
+484283
+484301
+484303
+484327
+484339
+484361
+484369
+484373
+484397
+484411
+484417
+484439
+484447
+484457
+484459
+484487
+484489
+484493
+484531
+484543
+484577
+484597
+484607
+484609
+484613
+484621
+484639
+484643
+484691
+484703
+484727
+484733
+484751
+484763
+484769
+484777
+484787
+484829
+484853
+484867
+484927
+484951
+484987
+484999
+485021
+485029
+485041
+485053
+485059
+485063
+485081
+485101
+485113
+485123
+485131
+485137
+485161
+485167
+485171
+485201
+485207
+485209
+485263
+485311
+485347
+485351
+485363
+485371
+485383
+485389
+485411
+485417
+485423
+485437
+485447
+485479
+485497
+485509
+485519
+485543
+485567
+485587
+485593
+485603
+485609
+485647
+485657
+485671
+485689
+485701
+485717
+485729
+485731
+485753
+485777
+485819
+485827
+485831
+485833
+485893
+485899
+485909
+485923
+485941
+485959
+485977
+485993
+486023
+486037
+486041
+486043
+486053
+486061
+486071
+486091
+486103
+486119
+486133
+486139
+486163
+486179
+486181
+486193
+486203
+486221
+486223
+486247
+486281
+486293
+486307
+486313
+486323
+486329
+486331
+486341
+486349
+486377
+486379
+486389
+486391
+486397
+486407
+486433
+486443
+486449
+486481
+486491
+486503
+486509
+486511
+486527
+486539
+486559
+486569
+486583
+486589
+486601
+486617
+486637
+486641
+486643
+486653
+486667
+486671
+486677
+486679
+486683
+486697
+486713
+486721
+486757
+486767
+486769
+486781
+486797
+486817
+486821
+486833
+486839
+486869
+486907
+486923
+486929
+486943
+486947
+486949
+486971
+486977
+486991
+487007
+487013
+487021
+487049
+487051
+487057
+487073
+487079
+487093
+487099
+487111
+487133
+487177
+487183
+487187
+487211
+487213
+487219
+487247
+487261
+487283
+487303
+487307
+487313
+487349
+487363
+487381
+487387
+487391
+487397
+487423
+487427
+487429
+487447
+487457
+487463
+487469
+487471
+487477
+487481
+487489
+487507
+487561
+487589
+487601
+487603
+487607
+487637
+487649
+487651
+487657
+487681
+487691
+487703
+487709
+487717
+487727
+487733
+487741
+487757
+487769
+487783
+487789
+487793
+487811
+487819
+487829
+487831
+487843
+487873
+487889
+487891
+487897
+487933
+487943
+487973
+487979
+487997
+488003
+488009
+488011
+488021
+488051
+488057
+488069
+488119
+488143
+488149
+488153
+488161
+488171
+488197
+488203
+488207
+488209
+488227
+488231
+488233
+488239
+488249
+488261
+488263
+488287
+488303
+488309
+488311
+488317
+488321
+488329
+488333
+488339
+488347
+488353
+488381
+488399
+488401
+488407
+488417
+488419
+488441
+488459
+488473
+488503
+488513
+488539
+488567
+488573
+488603
+488611
+488617
+488627
+488633
+488639
+488641
+488651
+488687
+488689
+488701
+488711
+488717
+488723
+488729
+488743
+488749
+488759
+488779
+488791
+488797
+488821
+488827
+488833
+488861
+488879
+488893
+488897
+488909
+488921
+488947
+488959
+488981
+488993
+489001
+489011
+489019
+489043
+489053
+489061
+489101
+489109
+489113
+489127
+489133
+489157
+489161
+489179
+489191
+489197
+489217
+489239
+489241
+489257
+489263
+489283
+489299
+489329
+489337
+489343
+489361
+489367
+489389
+489407
+489409
+489427
+489431
+489439
+489449
+489457
+489479
+489487
+489493
+489529
+489539
+489551
+489553
+489557
+489571
+489613
+489631
+489653
+489659
+489673
+489677
+489679
+489689
+489691
+489733
+489743
+489761
+489791
+489793
+489799
+489803
+489817
+489823
+489833
+489847
+489851
+489869
+489871
+489887
+489901
+489911
+489913
+489941
+489943
+489959
+489961
+489977
+489989
+490001
+490003
+490019
+490031
+490033
+490057
+490097
+490103
+490111
+490117
+490121
+490151
+490159
+490169
+490183
+490201
+490207
+490223
+490241
+490247
+490249
+490267
+490271
+490277
+490283
+490309
+490313
+490339
+490367
+490393
+490417
+490421
+490453
+490459
+490463
+490481
+490493
+490499
+490519
+490537
+490541
+490543
+490549
+490559
+490571
+490573
+490577
+490579
+490591
+490619
+490627
+490631
+490643
+490661
+490663
+490697
+490733
+490741
+490769
+490771
+490783
+490829
+490837
+490849
+490859
+490877
+490891
+490913
+490921
+490927
+490937
+490949
+490951
+490957
+490967
+490969
+490991
+490993
+491003
+491039
+491041
+491059
+491081
+491083
+491129
+491137
+491149
+491159
+491167
+491171
+491201
+491213
+491219
+491251
+491261
+491273
+491279
+491297
+491299
+491327
+491329
+491333
+491339
+491341
+491353
+491357
+491371
+491377
+491417
+491423
+491429
+491461
+491483
+491489
+491497
+491501
+491503
+491527
+491531
+491537
+491539
+491581
+491591
+491593
+491611
+491627
+491633
+491639
+491651
+491653
+491669
+491677
+491707
+491719
+491731
+491737
+491747
+491773
+491783
+491789
+491797
+491819
+491833
+491837
+491851
+491857
+491867
+491873
+491899
+491923
+491951
+491969
+491977
+491983
+492007
+492013
+492017
+492029
+492047
+492053
+492059
+492061
+492067
+492077
+492083
+492103
+492113
+492227
+492251
+492253
+492257
+492281
+492293
+492299
+492319
+492377
+492389
+492397
+492403
+492409
+492413
+492421
+492431
+492463
+492467
+492487
+492491
+492511
+492523
+492551
+492563
+492587
+492601
+492617
+492619
+492629
+492631
+492641
+492647
+492659
+492671
+492673
+492707
+492719
+492721
+492731
+492757
+492761
+492763
+492769
+492781
+492799
+492839
+492853
+492871
+492883
+492893
+492901
+492911
+492967
+492979
+493001
+493013
+493021
+493027
+493043
+493049
+493067
+493093
+493109
+493111
+493121
+493123
+493127
+493133
+493139
+493147
+493159
+493169
+493177
+493193
+493201
+493211
+493217
+493219
+493231
+493243
+493249
+493277
+493279
+493291
+493301
+493313
+493333
+493351
+493369
+493393
+493397
+493399
+493403
+493433
+493447
+493457
+493463
+493481
+493523
+493531
+493541
+493567
+493573
+493579
+493583
+493607
+493621
+493627
+493643
+493657
+493693
+493709
+493711
+493721
+493729
+493733
+493747
+493777
+493793
+493807
+493811
+493813
+493817
+493853
+493859
+493873
+493877
+493897
+493919
+493931
+493937
+493939
+493967
+493973
+493979
+493993
+494023
+494029
+494041
+494051
+494069
+494077
+494083
+494093
+494101
+494107
+494129
+494141
+494147
+494167
+494191
+494213
+494237
+494251
+494257
+494267
+494269
+494281
+494287
+494317
+494327
+494341
+494353
+494359
+494369
+494381
+494383
+494387
+494407
+494413
+494441
+494443
+494471
+494497
+494519
+494521
+494539
+494561
+494563
+494567
+494587
+494591
+494609
+494617
+494621
+494639
+494647
+494651
+494671
+494677
+494687
+494693
+494699
+494713
+494719
+494723
+494731
+494737
+494743
+494749
+494759
+494761
+494783
+494789
+494803
+494843
+494849
+494873
+494899
+494903
+494917
+494927
+494933
+494939
+494959
+494987
+495017
+495037
+495041
+495043
+495067
+495071
+495109
+495113
+495119
+495133
+495139
+495149
+495151
+495161
+495181
+495199
+495211
+495221
+495241
+495269
+495277
+495289
+495301
+495307
+495323
+495337
+495343
+495347
+495359
+495361
+495371
+495377
+495389
+495401
+495413
+495421
+495433
+495437
+495449
+495457
+495461
+495491
+495511
+495527
+495557
+495559
+495563
+495569
+495571
+495587
+495589
+495611
+495613
+495617
+495619
+495629
+495637
+495647
+495667
+495679
+495701
+495707
+495713
+495749
+495751
+495757
+495769
+495773
+495787
+495791
+495797
+495799
+495821
+495827
+495829
+495851
+495877
+495893
+495899
+495923
+495931
+495947
+495953
+495959
+495967
+495973
+495983
+496007
+496019
+496039
+496051
+496063
+496073
+496079
+496123
+496127
+496163
+496187
+496193
+496211
+496229
+496231
+496259
+496283
+496289
+496291
+496297
+496303
+496313
+496333
+496339
+496343
+496381
+496399
+496427
+496439
+496453
+496459
+496471
+496477
+496481
+496487
+496493
+496499
+496511
+496549
+496579
+496583
+496609
+496631
+496669
+496681
+496687
+496703
+496711
+496733
+496747
+496763
+496789
+496813
+496817
+496841
+496849
+496871
+496877
+496889
+496891
+496897
+496901
+496913
+496919
+496949
+496963
+496997
+496999
+497011
+497017
+497041
+497047
+497051
+497069
+497093
+497111
+497113
+497117
+497137
+497141
+497153
+497171
+497177
+497197
+497239
+497257
+497261
+497269
+497279
+497281
+497291
+497297
+497303
+497309
+497323
+497339
+497351
+497389
+497411
+497417
+497423
+497449
+497461
+497473
+497479
+497491
+497501
+497507
+497509
+497521
+497537
+497551
+497557
+497561
+497579
+497587
+497597
+497603
+497633
+497659
+497663
+497671
+497677
+497689
+497701
+497711
+497719
+497729
+497737
+497741
+497771
+497773
+497801
+497813
+497831
+497839
+497851
+497867
+497869
+497873
+497899
+497929
+497957
+497963
+497969
+497977
+497989
+497993
+497999
+498013
+498053
+498061
+498073
+498089
+498101
+498103
+498119
+498143
+498163
+498167
+498181
+498209
+498227
+498257
+498259
+498271
+498301
+498331
+498343
+498361
+498367
+498391
+498397
+498401
+498403
+498409
+498439
+498461
+498467
+498469
+498493
+498497
+498521
+498523
+498527
+498551
+498557
+498577
+498583
+498599
+498611
+498613
+498643
+498647
+498653
+498679
+498689
+498691
+498733
+498739
+498749
+498761
+498767
+498779
+498781
+498787
+498791
+498803
+498833
+498857
+498859
+498881
+498907
+498923
+498931
+498937
+498947
+498961
+498973
+498977
+498989
+499021
+499027
+499033
+499039
+499063
+499067
+499099
+499117
+499127
+499129
+499133
+499139
+499141
+499151
+499157
+499159
+499181
+499183
+499189
+499211
+499229
+499253
+499267
+499277
+499283
+499309
+499321
+499327
+499349
+499361
+499363
+499391
+499397
+499403
+499423
+499439
+499459
+499481
+499483
+499493
+499507
+499519
+499523
+499549
+499559
+499571
+499591
+499601
+499607
+499621
+499633
+499637
+499649
+499661
+499663
+499669
+499673
+499679
+499687
+499691
+499693
+499711
+499717
+499729
+499739
+499747
+499781
+499787
+499801
+499819
+499853
+499879
+499883
+499897
+499903
+499927
+499943
+499957
+499969
+499973
+499979
+500009
+500029
+500041
+500057
+500069
+500083
+500107
+500111
+500113
+500119
+500153
+500167
+500173
+500177
+500179
+500197
+500209
+500231
+500233
+500237
+500239
+500249
+500257
+500287
+500299
+500317
+500321
+500333
+500341
+500363
+500369
+500389
+500393
+500413
+500417
+500431
+500443
+500459
+500471
+500473
+500483
+500501
+500509
+500519
+500527
+500567
+500579
+500587
+500603
+500629
+500671
+500677
+500693
+500699
+500713
+500719
+500723
+500729
+500741
+500777
+500791
+500807
+500809
+500831
+500839
+500861
+500873
+500881
+500887
+500891
+500909
+500911
+500921
+500923
+500933
+500947
+500953
+500957
+500977
+501001
+501013
+501019
+501029
+501031
+501037
+501043
+501077
+501089
+501103
+501121
+501131
+501133
+501139
+501157
+501173
+501187
+501191
+501197
+501203
+501209
+501217
+501223
+501229
+501233
+501257
+501271
+501287
+501299
+501317
+501341
+501343
+501367
+501383
+501401
+501409
+501419
+501427
+501451
+501463
+501493
+501503
+501511
+501563
+501577
+501593
+501601
+501617
+501623
+501637
+501659
+501691
+501701
+501703
+501707
+501719
+501731
+501769
+501779
+501803
+501817
+501821
+501827
+501829
+501841
+501863
+501889
+501911
+501931
+501947
+501953
+501967
+501971
+501997
+502001
+502013
+502039
+502043
+502057
+502063
+502079
+502081
+502087
+502093
+502121
+502133
+502141
+502171
+502181
+502217
+502237
+502247
+502259
+502261
+502277
+502301
+502321
+502339
+502393
+502409
+502421
+502429
+502441
+502451
+502487
+502499
+502501
+502507
+502517
+502543
+502549
+502553
+502591
+502597
+502613
+502631
+502633
+502643
+502651
+502669
+502687
+502699
+502703
+502717
+502729
+502769
+502771
+502781
+502787
+502807
+502819
+502829
+502841
+502847
+502861
+502883
+502919
+502921
+502937
+502961
+502973
+503003
+503017
+503039
+503053
+503077
+503123
+503131
+503137
+503147
+503159
+503197
+503207
+503213
+503227
+503231
+503233
+503249
+503267
+503287
+503297
+503303
+503317
+503339
+503351
+503359
+503369
+503381
+503383
+503389
+503407
+503413
+503423
+503431
+503441
+503453
+503483
+503501
+503543
+503549
+503551
+503563
+503593
+503599
+503609
+503611
+503621
+503623
+503647
+503653
+503663
+503707
+503717
+503743
+503753
+503771
+503777
+503779
+503791
+503803
+503819
+503821
+503827
+503851
+503857
+503869
+503879
+503911
+503927
+503929
+503939
+503947
+503959
+503963
+503969
+503983
+503989
+504001
+504011
+504017
+504047
+504061
+504073
+504103
+504121
+504139
+504143
+504149
+504151
+504157
+504181
+504187
+504197
+504209
+504221
+504247
+504269
+504289
+504299
+504307
+504311
+504323
+504337
+504349
+504353
+504359
+504377
+504379
+504389
+504403
+504457
+504461
+504473
+504479
+504521
+504523
+504527
+504547
+504563
+504593
+504599
+504607
+504617
+504619
+504631
+504661
+504667
+504671
+504677
+504683
+504727
+504767
+504787
+504797
+504799
+504817
+504821
+504851
+504853
+504857
+504871
+504877
+504893
+504901
+504929
+504937
+504943
+504947
+504953
+504967
+504983
+504989
+504991
+505027
+505031
+505033
+505049
+505051
+505061
+505067
+505073
+505091
+505097
+505111
+505117
+505123
+505129
+505139
+505157
+505159
+505181
+505187
+505201
+505213
+505231
+505237
+505277
+505279
+505283
+505301
+505313
+505319
+505321
+505327
+505339
+505357
+505367
+505369
+505399
+505409
+505411
+505429
+505447
+505459
+505469
+505481
+505493
+505501
+505511
+505513
+505523
+505537
+505559
+505573
+505601
+505607
+505613
+505619
+505633
+505639
+505643
+505657
+505663
+505669
+505691
+505693
+505709
+505711
+505727
+505759
+505763
+505777
+505781
+505811
+505819
+505823
+505867
+505871
+505877
+505907
+505919
+505927
+505949
+505961
+505969
+505979
+506047
+506071
+506083
+506101
+506113
+506119
+506131
+506147
+506171
+506173
+506183
+506201
+506213
+506251
+506263
+506269
+506281
+506291
+506327
+506329
+506333
+506339
+506347
+506351
+506357
+506381
+506393
+506417
+506423
+506449
+506459
+506461
+506479
+506491
+506501
+506507
+506531
+506533
+506537
+506551
+506563
+506573
+506591
+506593
+506599
+506609
+506629
+506647
+506663
+506683
+506687
+506689
+506699
+506729
+506731
+506743
+506773
+506783
+506791
+506797
+506809
+506837
+506843
+506861
+506873
+506887
+506893
+506899
+506903
+506911
+506929
+506941
+506963
+506983
+506993
+506999
+507029
+507049
+507071
+507077
+507079
+507103
+507109
+507113
+507119
+507137
+507139
+507149
+507151
+507163
+507193
+507197
+507217
+507289
+507301
+507313
+507317
+507329
+507347
+507349
+507359
+507361
+507371
+507383
+507401
+507421
+507431
+507461
+507491
+507497
+507499
+507503
+507523
+507557
+507571
+507589
+507593
+507599
+507607
+507631
+507641
+507667
+507673
+507691
+507697
+507713
+507719
+507743
+507757
+507779
+507781
+507797
+507803
+507809
+507821
+507827
+507839
+507883
+507901
+507907
+507917
+507919
+507937
+507953
+507961
+507971
+507979
+508009
+508019
+508021
+508033
+508037
+508073
+508087
+508091
+508097
+508103
+508129
+508159
+508171
+508187
+508213
+508223
+508229
+508237
+508243
+508259
+508271
+508273
+508297
+508301
+508327
+508331
+508349
+508363
+508367
+508373
+508393
+508433
+508439
+508451
+508471
+508477
+508489
+508499
+508513
+508517
+508531
+508549
+508559
+508567
+508577
+508579
+508583
+508619
+508621
+508637
+508643
+508661
+508693
+508709
+508727
+508771
+508789
+508799
+508811
+508817
+508841
+508847
+508867
+508901
+508903
+508909
+508913
+508919
+508931
+508943
+508951
+508957
+508961
+508969
+508973
+508987
+509023
+509027
+509053
+509063
+509071
+509087
+509101
+509123
+509137
+509147
+509149
+509203
+509221
+509227
+509239
+509263
+509281
+509287
+509293
+509297
+509317
+509329
+509359
+509363
+509389
+509393
+509413
+509417
+509429
+509441
+509449
+509477
+509513
+509521
+509543
+509549
+509557
+509563
+509569
+509573
+509581
+509591
+509603
+509623
+509633
+509647
+509653
+509659
+509681
+509687
+509689
+509693
+509699
+509723
+509731
+509737
+509741
+509767
+509783
+509797
+509801
+509833
+509837
+509843
+509863
+509867
+509879
+509909
+509911
+509921
+509939
+509947
+509959
+509963
+509989
+510007
+510031
+510047
+510049
+510061
+510067
+510073
+510077
+510079
+510089
+510101
+510121
+510127
+510137
+510157
+510179
+510199
+510203
+510217
+510227
+510233
+510241
+510247
+510253
+510271
+510287
+510299
+510311
+510319
+510331
+510361
+510379
+510383
+510401
+510403
+510449
+510451
+510457
+510463
+510481
+510529
+510551
+510553
+510569
+510581
+510583
+510589
+510611
+510613
+510617
+510619
+510677
+510683
+510691
+510707
+510709
+510751
+510767
+510773
+510793
+510803
+510817
+510823
+510827
+510847
+510889
+510907
+510919
+510931
+510941
+510943
+510989
+511001
+511013
+511019
+511033
+511039
+511057
+511061
+511087
+511109
+511111
+511123
+511151
+511153
+511163
+511169
+511171
+511177
+511193
+511201
+511211
+511213
+511223
+511237
+511243
+511261
+511279
+511289
+511297
+511327
+511333
+511337
+511351
+511361
+511387
+511391
+511409
+511417
+511439
+511447
+511453
+511457
+511463
+511477
+511487
+511507
+511519
+511523
+511541
+511549
+511559
+511573
+511579
+511583
+511591
+511603
+511627
+511631
+511633
+511669
+511691
+511703
+511711
+511723
+511757
+511787
+511793
+511801
+511811
+511831
+511843
+511859
+511867
+511873
+511891
+511897
+511909
+511933
+511939
+511961
+511963
+511991
+511997
+512009
+512011
+512021
+512047
+512059
+512093
+512101
+512137
+512147
+512167
+512207
+512249
+512251
+512269
+512287
+512311
+512321
+512333
+512353
+512389
+512419
+512429
+512443
+512467
+512497
+512503
+512507
+512521
+512531
+512537
+512543
+512569
+512573
+512579
+512581
+512591
+512593
+512597
+512609
+512621
+512641
+512657
+512663
+512671
+512683
+512711
+512713
+512717
+512741
+512747
+512761
+512767
+512779
+512797
+512803
+512819
+512821
+512843
+512849
+512891
+512899
+512903
+512917
+512921
+512927
+512929
+512959
+512977
+512989
+512999
+513001
+513013
+513017
+513031
+513041
+513047
+513053
+513059
+513067
+513083
+513101
+513103
+513109
+513131
+513137
+513157
+513167
+513169
+513173
+513203
+513239
+513257
+513269
+513277
+513283
+513307
+513311
+513313
+513319
+513341
+513347
+513353
+513367
+513371
+513397
+513407
+513419
+513427
+513431
+513439
+513473
+513479
+513481
+513509
+513511
+513529
+513533
+513593
+513631
+513641
+513649
+513673
+513679
+513683
+513691
+513697
+513719
+513727
+513731
+513739
+513749
+513761
+513767
+513769
+513781
+513829
+513839
+513841
+513871
+513881
+513899
+513917
+513923
+513937
+513943
+513977
+513991
+514001
+514009
+514013
+514021
+514049
+514051
+514057
+514061
+514079
+514081
+514093
+514103
+514117
+514123
+514127
+514147
+514177
+514187
+514201
+514219
+514229
+514243
+514247
+514249
+514271
+514277
+514289
+514309
+514313
+514333
+514343
+514357
+514361
+514379
+514399
+514417
+514429
+514433
+514453
+514499
+514513
+514519
+514523
+514529
+514531
+514543
+514561
+514571
+514621
+514637
+514639
+514643
+514649
+514651
+514669
+514681
+514711
+514733
+514739
+514741
+514747
+514751
+514757
+514769
+514783
+514793
+514819
+514823
+514831
+514841
+514847
+514853
+514859
+514867
+514873
+514889
+514903
+514933
+514939
+514949
+514967
+515041
+515087
+515089
+515111
+515143
+515149
+515153
+515173
+515191
+515227
+515231
+515233
+515237
+515279
+515293
+515311
+515323
+515351
+515357
+515369
+515371
+515377
+515381
+515401
+515429
+515477
+515507
+515519
+515539
+515563
+515579
+515587
+515597
+515611
+515621
+515639
+515651
+515653
+515663
+515677
+515681
+515687
+515693
+515701
+515737
+515741
+515761
+515771
+515773
+515777
+515783
+515803
+515813
+515839
+515843
+515857
+515861
+515873
+515887
+515917
+515923
+515929
+515941
+515951
+515969
+515993
+516017
+516023
+516049
+516053
+516077
+516091
+516127
+516151
+516157
+516161
+516163
+516169
+516179
+516193
+516199
+516209
+516223
+516227
+516233
+516247
+516251
+516253
+516277
+516283
+516293
+516319
+516323
+516349
+516359
+516361
+516371
+516377
+516391
+516407
+516421
+516431
+516433
+516437
+516449
+516457
+516469
+516493
+516499
+516517
+516521
+516539
+516541
+516563
+516587
+516589
+516599
+516611
+516617
+516619
+516623
+516643
+516653
+516673
+516679
+516689
+516701
+516709
+516713
+516721
+516727
+516757
+516793
+516811
+516821
+516829
+516839
+516847
+516871
+516877
+516883
+516907
+516911
+516931
+516947
+516949
+516959
+516973
+516977
+516979
+516991
+517003
+517043
+517061
+517067
+517073
+517079
+517081
+517087
+517091
+517129
+517151
+517169
+517177
+517183
+517189
+517207
+517211
+517217
+517229
+517241
+517243
+517249
+517261
+517267
+517277
+517289
+517303
+517337
+517343
+517367
+517373
+517381
+517393
+517399
+517403
+517411
+517417
+517457
+517459
+517469
+517471
+517481
+517487
+517499
+517501
+517507
+517511
+517513
+517547
+517549
+517553
+517571
+517577
+517589
+517597
+517603
+517609
+517613
+517619
+517637
+517639
+517711
+517717
+517721
+517729
+517733
+517739
+517747
+517817
+517823
+517831
+517861
+517873
+517877
+517901
+517919
+517927
+517931
+517949
+517967
+517981
+517991
+517999
+518017
+518047
+518057
+518059
+518083
+518099
+518101
+518113
+518123
+518129
+518131
+518137
+518153
+518159
+518171
+518179
+518191
+518207
+518209
+518233
+518237
+518239
+518249
+518261
+518291
+518299
+518311
+518327
+518341
+518387
+518389
+518411
+518417
+518429
+518431
+518447
+518467
+518471
+518473
+518509
+518521
+518533
+518543
+518579
+518587
+518597
+518611
+518621
+518657
+518689
+518699
+518717
+518729
+518737
+518741
+518743
+518747
+518759
+518761
+518767
+518779
+518801
+518803
+518807
+518809
+518813
+518831
+518863
+518867
+518893
+518911
+518933
+518953
+518981
+518983
+518989
+519011
+519031
+519037
+519067
+519083
+519089
+519091
+519097
+519107
+519119
+519121
+519131
+519151
+519161
+519193
+519217
+519227
+519229
+519247
+519257
+519269
+519283
+519287
+519301
+519307
+519349
+519353
+519359
+519371
+519373
+519383
+519391
+519413
+519427
+519433
+519457
+519487
+519499
+519509
+519521
+519523
+519527
+519539
+519551
+519553
+519577
+519581
+519587
+519611
+519619
+519643
+519647
+519667
+519683
+519691
+519703
+519713
+519733
+519737
+519769
+519787
+519793
+519797
+519803
+519817
+519863
+519881
+519889
+519907
+519917
+519919
+519923
+519931
+519943
+519947
+519971
+519989
+519997
+520019
+520021
+520031
+520043
+520063
+520067
+520073
+520103
+520111
+520123
+520129
+520151
+520193
+520213
+520241
+520279
+520291
+520297
+520307
+520309
+520313
+520339
+520349
+520357
+520361
+520363
+520369
+520379
+520381
+520393
+520409
+520411
+520423
+520427
+520433
+520447
+520451
+520529
+520547
+520549
+520567
+520571
+520589
+520607
+520609
+520621
+520631
+520633
+520649
+520679
+520691
+520699
+520703
+520717
+520721
+520747
+520759
+520763
+520787
+520813
+520837
+520841
+520853
+520867
+520889
+520913
+520921
+520943
+520957
+520963
+520967
+520969
+520981
+521009
+521021
+521023
+521039
+521041
+521047
+521051
+521063
+521107
+521119
+521137
+521153
+521161
+521167
+521173
+521177
+521179
+521201
+521231
+521243
+521251
+521267
+521281
+521299
+521309
+521317
+521329
+521357
+521359
+521363
+521369
+521377
+521393
+521399
+521401
+521429
+521447
+521471
+521483
+521491
+521497
+521503
+521519
+521527
+521533
+521537
+521539
+521551
+521557
+521567
+521581
+521603
+521641
+521657
+521659
+521669
+521671
+521693
+521707
+521723
+521743
+521749
+521753
+521767
+521777
+521789
+521791
+521809
+521813
+521819
+521831
+521861
+521869
+521879
+521881
+521887
+521897
+521903
+521923
+521929
+521981
+521993
+521999
+522017
+522037
+522047
+522059
+522061
+522073
+522079
+522083
+522113
+522127
+522157
+522161
+522167
+522191
+522199
+522211
+522227
+522229
+522233
+522239
+522251
+522259
+522281
+522283
+522289
+522317
+522323
+522337
+522371
+522373
+522383
+522391
+522409
+522413
+522439
+522449
+522469
+522479
+522497
+522517
+522521
+522523
+522541
+522553
+522569
+522601
+522623
+522637
+522659
+522661
+522673
+522677
+522679
+522689
+522703
+522707
+522719
+522737
+522749
+522757
+522761
+522763
+522787
+522811
+522827
+522829
+522839
+522853
+522857
+522871
+522881
+522883
+522887
+522919
+522943
+522947
+522959
+522961
+522989
+523007
+523021
+523031
+523049
+523093
+523097
+523109
+523129
+523169
+523177
+523207
+523213
+523219
+523261
+523297
+523307
+523333
+523349
+523351
+523357
+523387
+523403
+523417
+523427
+523433
+523459
+523463
+523487
+523489
+523493
+523511
+523519
+523541
+523543
+523553
+523571
+523573
+523577
+523597
+523603
+523631
+523637
+523639
+523657
+523667
+523669
+523673
+523681
+523717
+523729
+523741
+523759
+523763
+523771
+523777
+523793
+523801
+523829
+523847
+523867
+523877
+523903
+523907
+523927
+523937
+523949
+523969
+523987
+523997
+524047
+524053
+524057
+524063
+524071
+524081
+524087
+524099
+524113
+524119
+524123
+524149
+524171
+524189
+524197
+524201
+524203
+524219
+524221
+524231
+524243
+524257
+524261
+524269
+524287
+524309
+524341
+524347
+524351
+524353
+524369
+524387
+524389
+524411
+524413
+524429
+524453
+524497
+524507
+524509
+524519
+524521
+524591
+524593
+524599
+524633
+524669
+524681
+524683
+524701
+524707
+524731
+524743
+524789
+524801
+524803
+524827
+524831
+524857
+524863
+524869
+524873
+524893
+524899
+524921
+524933
+524939
+524941
+524947
+524957
+524959
+524963
+524969
+524971
+524981
+524983
+524999
+525001
+525013
+525017
+525029
+525043
+525101
+525127
+525137
+525143
+525157
+525163
+525167
+525191
+525193
+525199
+525209
+525221
+525241
+525247
+525253
+525257
+525299
+525313
+525353
+525359
+525361
+525373
+525377
+525379
+525391
+525397
+525409
+525431
+525433
+525439
+525457
+525461
+525467
+525491
+525493
+525517
+525529
+525533
+525541
+525571
+525583
+525593
+525599
+525607
+525641
+525649
+525671
+525677
+525697
+525709
+525713
+525719
+525727
+525731
+525739
+525769
+525773
+525781
+525809
+525817
+525839
+525869
+525871
+525887
+525893
+525913
+525923
+525937
+525947
+525949
+525953
+525961
+525979
+525983
+526027
+526037
+526049
+526051
+526063
+526067
+526069
+526073
+526087
+526117
+526121
+526139
+526157
+526159
+526189
+526193
+526199
+526213
+526223
+526231
+526249
+526271
+526283
+526289
+526291
+526297
+526307
+526367
+526373
+526381
+526387
+526391
+526397
+526423
+526429
+526441
+526453
+526459
+526483
+526499
+526501
+526511
+526531
+526543
+526571
+526573
+526583
+526601
+526619
+526627
+526633
+526637
+526649
+526651
+526657
+526667
+526679
+526681
+526703
+526709
+526717
+526733
+526739
+526741
+526759
+526763
+526777
+526781
+526829
+526831
+526837
+526853
+526859
+526871
+526909
+526913
+526931
+526937
+526943
+526951
+526957
+526963
+526993
+526997
+527053
+527057
+527063
+527069
+527071
+527081
+527099
+527123
+527129
+527143
+527159
+527161
+527173
+527179
+527203
+527207
+527209
+527237
+527251
+527273
+527281
+527291
+527327
+527333
+527347
+527353
+527377
+527381
+527393
+527399
+527407
+527411
+527419
+527441
+527447
+527453
+527489
+527507
+527533
+527557
+527563
+527581
+527591
+527599
+527603
+527623
+527627
+527633
+527671
+527699
+527701
+527729
+527741
+527749
+527753
+527789
+527803
+527809
+527819
+527843
+527851
+527869
+527881
+527897
+527909
+527921
+527929
+527941
+527981
+527983
+527987
+527993
+528001
+528013
+528041
+528043
+528053
+528091
+528097
+528107
+528127
+528131
+528137
+528163
+528167
+528191
+528197
+528217
+528223
+528247
+528263
+528289
+528299
+528313
+528317
+528329
+528373
+528383
+528391
+528401
+528403
+528413
+528419
+528433
+528469
+528487
+528491
+528509
+528511
+528527
+528559
+528611
+528623
+528629
+528631
+528659
+528667
+528673
+528679
+528691
+528707
+528709
+528719
+528763
+528779
+528791
+528799
+528811
+528821
+528823
+528833
+528863
+528877
+528881
+528883
+528911
+528929
+528947
+528967
+528971
+528973
+528991
+529003
+529007
+529027
+529033
+529037
+529043
+529049
+529051
+529097
+529103
+529117
+529121
+529127
+529129
+529153
+529157
+529181
+529183
+529213
+529229
+529237
+529241
+529259
+529271
+529273
+529301
+529307
+529313
+529327
+529343
+529349
+529357
+529381
+529393
+529411
+529421
+529423
+529471
+529489
+529513
+529517
+529519
+529531
+529547
+529577
+529579
+529603
+529619
+529637
+529649
+529657
+529673
+529681
+529687
+529691
+529693
+529709
+529723
+529741
+529747
+529751
+529807
+529811
+529813
+529819
+529829
+529847
+529871
+529927
+529933
+529939
+529957
+529961
+529973
+529979
+529981
+529987
+529999
+530017
+530021
+530027
+530041
+530051
+530063
+530087
+530093
+530129
+530137
+530143
+530177
+530183
+530197
+530203
+530209
+530227
+530237
+530249
+530251
+530261
+530267
+530279
+530293
+530297
+530303
+530329
+530333
+530339
+530353
+530359
+530389
+530393
+530401
+530429
+530443
+530447
+530501
+530507
+530513
+530527
+530531
+530533
+530539
+530549
+530567
+530597
+530599
+530603
+530609
+530641
+530653
+530659
+530669
+530693
+530701
+530711
+530713
+530731
+530741
+530743
+530753
+530767
+530773
+530797
+530807
+530833
+530837
+530843
+530851
+530857
+530861
+530869
+530897
+530911
+530947
+530969
+530977
+530983
+530989
+531017
+531023
+531043
+531071
+531079
+531101
+531103
+531121
+531133
+531143
+531163
+531169
+531173
+531197
+531203
+531229
+531239
+531253
+531263
+531281
+531287
+531299
+531331
+531337
+531343
+531347
+531353
+531359
+531383
+531457
+531481
+531497
+531521
+531547
+531551
+531569
+531571
+531581
+531589
+531611
+531613
+531623
+531631
+531637
+531667
+531673
+531689
+531701
+531731
+531793
+531799
+531821
+531823
+531827
+531833
+531841
+531847
+531857
+531863
+531871
+531877
+531901
+531911
+531919
+531977
+531983
+531989
+531997
+532001
+532009
+532027
+532033
+532061
+532069
+532093
+532099
+532141
+532153
+532159
+532163
+532183
+532187
+532193
+532199
+532241
+532249
+532261
+532267
+532277
+532283
+532307
+532313
+532327
+532331
+532333
+532349
+532373
+532379
+532391
+532403
+532417
+532421
+532439
+532447
+532451
+532453
+532489
+532501
+532523
+532529
+532531
+532537
+532547
+532561
+532601
+532603
+532607
+532619
+532621
+532633
+532639
+532663
+532669
+532687
+532691
+532709
+532733
+532739
+532751
+532757
+532771
+532781
+532783
+532789
+532801
+532811
+532823
+532849
+532853
+532867
+532907
+532919
+532949
+532951
+532981
+532993
+532999
+533003
+533009
+533011
+533033
+533051
+533053
+533063
+533077
+533089
+533111
+533129
+533149
+533167
+533177
+533189
+533191
+533213
+533219
+533227
+533237
+533249
+533257
+533261
+533263
+533297
+533303
+533317
+533321
+533327
+533353
+533363
+533371
+533389
+533399
+533413
+533447
+533453
+533459
+533509
+533543
+533549
+533573
+533581
+533593
+533633
+533641
+533671
+533693
+533711
+533713
+533719
+533723
+533737
+533747
+533777
+533801
+533809
+533821
+533831
+533837
+533857
+533879
+533887
+533893
+533909
+533921
+533927
+533959
+533963
+533969
+533971
+533989
+533993
+533999
+534007
+534013
+534019
+534029
+534043
+534047
+534049
+534059
+534073
+534077
+534091
+534101
+534113
+534137
+534167
+534173
+534199
+534203
+534211
+534229
+534241
+534253
+534283
+534301
+534307
+534311
+534323
+534329
+534341
+534367
+534371
+534403
+534407
+534431
+534439
+534473
+534491
+534511
+534529
+534553
+534571
+534577
+534581
+534601
+534607
+534617
+534629
+534631
+534637
+534647
+534649
+534659
+534661
+534671
+534697
+534707
+534739
+534799
+534811
+534827
+534839
+534841
+534851
+534857
+534883
+534889
+534913
+534923
+534931
+534943
+534949
+534971
+535013
+535019
+535033
+535037
+535061
+535099
+535103
+535123
+535133
+535151
+535159
+535169
+535181
+535193
+535207
+535219
+535229
+535237
+535243
+535273
+535303
+535319
+535333
+535349
+535351
+535361
+535387
+535391
+535399
+535481
+535487
+535489
+535499
+535511
+535523
+535529
+535547
+535571
+535573
+535589
+535607
+535609
+535627
+535637
+535663
+535669
+535673
+535679
+535697
+535709
+535727
+535741
+535751
+535757
+535771
+535783
+535793
+535811
+535849
+535859
+535861
+535879
+535919
+535937
+535939
+535943
+535957
+535967
+535973
+535991
+535999
+536017
+536023
+536051
+536057
+536059
+536069
+536087
+536099
+536101
+536111
+536141
+536147
+536149
+536189
+536191
+536203
+536213
+536219
+536227
+536233
+536243
+536267
+536273
+536279
+536281
+536287
+536293
+536311
+536323
+536353
+536357
+536377
+536399
+536407
+536423
+536441
+536443
+536447
+536449
+536453
+536461
+536467
+536479
+536491
+536509
+536513
+536531
+536533
+536561
+536563
+536593
+536609
+536621
+536633
+536651
+536671
+536677
+536687
+536699
+536717
+536719
+536729
+536743
+536749
+536771
+536773
+536777
+536779
+536791
+536801
+536803
+536839
+536849
+536857
+536867
+536869
+536891
+536909
+536917
+536923
+536929
+536933
+536947
+536953
+536971
+536989
+536999
+537001
+537007
+537011
+537023
+537029
+537037
+537041
+537067
+537071
+537079
+537091
+537127
+537133
+537143
+537157
+537169
+537181
+537191
+537197
+537221
+537233
+537241
+537269
+537281
+537287
+537307
+537331
+537343
+537347
+537373
+537379
+537401
+537403
+537413
+537497
+537527
+537547
+537569
+537583
+537587
+537599
+537611
+537637
+537661
+537673
+537679
+537703
+537709
+537739
+537743
+537749
+537769
+537773
+537781
+537787
+537793
+537811
+537841
+537847
+537853
+537877
+537883
+537899
+537913
+537919
+537941
+537991
+538001
+538019
+538049
+538051
+538073
+538079
+538093
+538117
+538121
+538123
+538127
+538147
+538151
+538157
+538159
+538163
+538199
+538201
+538247
+538249
+538259
+538267
+538283
+538297
+538301
+538303
+538309
+538331
+538333
+538357
+538367
+538397
+538399
+538411
+538423
+538457
+538471
+538481
+538487
+538511
+538513
+538519
+538523
+538529
+538553
+538561
+538567
+538579
+538589
+538597
+538621
+538649
+538651
+538697
+538709
+538711
+538721
+538723
+538739
+538751
+538763
+538771
+538777
+538789
+538799
+538801
+538817
+538823
+538829
+538841
+538871
+538877
+538921
+538927
+538931
+538939
+538943
+538987
+539003
+539009
+539039
+539047
+539089
+539093
+539101
+539107
+539111
+539113
+539129
+539141
+539153
+539159
+539167
+539171
+539207
+539219
+539233
+539237
+539261
+539267
+539269
+539293
+539303
+539309
+539311
+539321
+539323
+539339
+539347
+539351
+539389
+539401
+539447
+539449
+539479
+539501
+539503
+539507
+539509
+539533
+539573
+539621
+539629
+539633
+539639
+539641
+539653
+539663
+539677
+539687
+539711
+539713
+539723
+539729
+539743
+539761
+539783
+539797
+539837
+539839
+539843
+539849
+539863
+539881
+539897
+539899
+539921
+539947
+539993
+540041
+540061
+540079
+540101
+540119
+540121
+540139
+540149
+540157
+540167
+540173
+540179
+540181
+540187
+540203
+540217
+540233
+540251
+540269
+540271
+540283
+540301
+540307
+540343
+540347
+540349
+540367
+540373
+540377
+540383
+540389
+540391
+540433
+540437
+540461
+540469
+540509
+540511
+540517
+540539
+540541
+540557
+540559
+540577
+540587
+540599
+540611
+540613
+540619
+540629
+540677
+540679
+540689
+540691
+540697
+540703
+540713
+540751
+540769
+540773
+540779
+540781
+540803
+540809
+540823
+540851
+540863
+540871
+540877
+540901
+540907
+540961
+540989
+541001
+541007
+541027
+541049
+541061
+541087
+541097
+541129
+541133
+541141
+541153
+541181
+541193
+541201
+541217
+541231
+541237
+541249
+541267
+541271
+541283
+541301
+541309
+541339
+541349
+541361
+541363
+541369
+541381
+541391
+541417
+541439
+541447
+541469
+541483
+541507
+541511
+541523
+541529
+541531
+541537
+541543
+541547
+541549
+541571
+541577
+541579
+541589
+541613
+541631
+541657
+541661
+541669
+541693
+541699
+541711
+541721
+541727
+541759
+541763
+541771
+541777
+541781
+541799
+541817
+541831
+541837
+541859
+541889
+541901
+541927
+541951
+541967
+541987
+541991
+541993
+541999
+542021
+542023
+542027
+542053
+542063
+542071
+542081
+542083
+542093
+542111
+542117
+542119
+542123
+542131
+542141
+542149
+542153
+542167
+542183
+542189
+542197
+542207
+542219
+542237
+542251
+542261
+542263
+542281
+542293
+542299
+542323
+542371
+542401
+542441
+542447
+542461
+542467
+542483
+542489
+542497
+542519
+542533
+542537
+542539
+542551
+542557
+542567
+542579
+542587
+542599
+542603
+542683
+542687
+542693
+542713
+542719
+542723
+542747
+542761
+542771
+542783
+542791
+542797
+542821
+542831
+542837
+542873
+542891
+542911
+542921
+542923
+542933
+542939
+542947
+542951
+542981
+542987
+542999
+543017
+543019
+543029
+543061
+543097
+543113
+543131
+543139
+543143
+543149
+543157
+543161
+543163
+543187
+543203
+543217
+543223
+543227
+543233
+543241
+543253
+543259
+543281
+543287
+543289
+543299
+543307
+543311
+543313
+543341
+543349
+543353
+543359
+543379
+543383
+543407
+543427
+543463
+543497
+543503
+543509
+543539
+543551
+543553
+543593
+543601
+543607
+543611
+543617
+543637
+543659
+543661
+543671
+543679
+543689
+543703
+543707
+543713
+543769
+543773
+543787
+543791
+543793
+543797
+543811
+543827
+543841
+543853
+543857
+543859
+543871
+543877
+543883
+543887
+543889
+543901
+543911
+543929
+543967
+543971
+543997
+544001
+544007
+544009
+544013
+544021
+544031
+544097
+544099
+544109
+544123
+544129
+544133
+544139
+544171
+544177
+544183
+544199
+544223
+544259
+544273
+544277
+544279
+544367
+544373
+544399
+544403
+544429
+544451
+544471
+544477
+544487
+544501
+544513
+544517
+544543
+544549
+544601
+544613
+544627
+544631
+544651
+544667
+544699
+544717
+544721
+544723
+544727
+544757
+544759
+544771
+544781
+544793
+544807
+544813
+544837
+544861
+544877
+544879
+544883
+544889
+544897
+544903
+544919
+544927
+544937
+544961
+544963
+544979
+545023
+545029
+545033
+545057
+545063
+545087
+545089
+545093
+545117
+545131
+545141
+545143
+545161
+545189
+545203
+545213
+545231
+545239
+545257
+545267
+545291
+545329
+545371
+545387
+545429
+545437
+545443
+545449
+545473
+545477
+545483
+545497
+545521
+545527
+545533
+545543
+545549
+545551
+545579
+545599
+545609
+545617
+545621
+545641
+545647
+545651
+545663
+545711
+545723
+545731
+545747
+545749
+545759
+545773
+545789
+545791
+545827
+545843
+545863
+545873
+545893
+545899
+545911
+545917
+545929
+545933
+545939
+545947
+545959
+546001
+546017
+546019
+546031
+546047
+546053
+546067
+546071
+546097
+546101
+546103
+546109
+546137
+546149
+546151
+546173
+546179
+546197
+546211
+546233
+546239
+546241
+546253
+546263
+546283
+546289
+546317
+546323
+546341
+546349
+546353
+546361
+546367
+546373
+546391
+546461
+546467
+546479
+546509
+546523
+546547
+546569
+546583
+546587
+546599
+546613
+546617
+546619
+546631
+546643
+546661
+546671
+546677
+546683
+546691
+546709
+546719
+546731
+546739
+546781
+546841
+546859
+546863
+546869
+546881
+546893
+546919
+546937
+546943
+546947
+546961
+546967
+546977
+547007
+547021
+547037
+547061
+547087
+547093
+547097
+547103
+547121
+547133
+547139
+547171
+547223
+547229
+547237
+547241
+547249
+547271
+547273
+547291
+547301
+547321
+547357
+547361
+547363
+547369
+547373
+547387
+547397
+547399
+547411
+547441
+547453
+547471
+547483
+547487
+547493
+547499
+547501
+547513
+547529
+547537
+547559
+547567
+547577
+547583
+547601
+547609
+547619
+547627
+547639
+547643
+547661
+547663
+547681
+547709
+547727
+547741
+547747
+547753
+547763
+547769
+547787
+547817
+547819
+547823
+547831
+547849
+547853
+547871
+547889
+547901
+547909
+547951
+547957
+547999
+548003
+548039
+548059
+548069
+548083
+548089
+548099
+548117
+548123
+548143
+548153
+548189
+548201
+548213
+548221
+548227
+548239
+548243
+548263
+548291
+548309
+548323
+548347
+548351
+548363
+548371
+548393
+548399
+548407
+548417
+548423
+548441
+548453
+548459
+548461
+548489
+548501
+548503
+548519
+548521
+548533
+548543
+548557
+548567
+548579
+548591
+548623
+548629
+548657
+548671
+548677
+548687
+548693
+548707
+548719
+548749
+548753
+548761
+548771
+548783
+548791
+548827
+548831
+548833
+548837
+548843
+548851
+548861
+548869
+548893
+548897
+548903
+548909
+548927
+548953
+548957
+548963
+549001
+549011
+549013
+549019
+549023
+549037
+549071
+549089
+549091
+549097
+549121
+549139
+549149
+549161
+549163
+549167
+549169
+549193
+549203
+549221
+549229
+549247
+549257
+549259
+549281
+549313
+549319
+549323
+549331
+549379
+549391
+549403
+549421
+549431
+549443
+549449
+549481
+549503
+549509
+549511
+549517
+549533
+549547
+549551
+549553
+549569
+549587
+549589
+549607
+549623
+549641
+549643
+549649
+549667
+549683
+549691
+549701
+549707
+549713
+549719
+549733
+549737
+549739
+549749
+549751
+549767
+549817
+549833
+549839
+549863
+549877
+549883
+549911
+549937
+549943
+549949
+549977
+549979
+550007
+550009
+550027
+550049
+550061
+550063
+550073
+550111
+550117
+550127
+550129
+550139
+550163
+550169
+550177
+550181
+550189
+550211
+550213
+550241
+550267
+550279
+550283
+550289
+550309
+550337
+550351
+550369
+550379
+550427
+550439
+550441
+550447
+550457
+550469
+550471
+550489
+550513
+550519
+550531
+550541
+550553
+550577
+550607
+550609
+550621
+550631
+550637
+550651
+550657
+550661
+550663
+550679
+550691
+550703
+550717
+550721
+550733
+550757
+550763
+550789
+550801
+550811
+550813
+550831
+550841
+550843
+550859
+550861
+550903
+550909
+550937
+550939
+550951
+550961
+550969
+550973
+550993
+550997
+551003
+551017
+551027
+551039
+551059
+551063
+551069
+551093
+551099
+551107
+551113
+551129
+551143
+551179
+551197
+551207
+551219
+551231
+551233
+551269
+551281
+551297
+551311
+551321
+551339
+551347
+551363
+551381
+551387
+551407
+551423
+551443
+551461
+551483
+551489
+551503
+551519
+551539
+551543
+551549
+551557
+551569
+551581
+551587
+551597
+551651
+551653
+551659
+551671
+551689
+551693
+551713
+551717
+551723
+551729
+551731
+551743
+551753
+551767
+551773
+551801
+551809
+551813
+551843
+551849
+551861
+551909
+551911
+551917
+551927
+551933
+551951
+551959
+551963
+551981
+552001
+552011
+552029
+552031
+552047
+552053
+552059
+552089
+552091
+552103
+552107
+552113
+552127
+552137
+552179
+552193
+552217
+552239
+552241
+552259
+552263
+552271
+552283
+552301
+552317
+552341
+552353
+552379
+552397
+552401
+552403
+552469
+552473
+552481
+552491
+552493
+552511
+552523
+552527
+552553
+552581
+552583
+552589
+552611
+552649
+552659
+552677
+552703
+552707
+552709
+552731
+552749
+552751
+552757
+552787
+552791
+552793
+552809
+552821
+552833
+552841
+552847
+552859
+552883
+552887
+552899
+552913
+552917
+552971
+552983
+552991
+553013
+553037
+553043
+553051
+553057
+553067
+553073
+553093
+553097
+553099
+553103
+553123
+553139
+553141
+553153
+553171
+553181
+553193
+553207
+553211
+553229
+553249
+553253
+553277
+553279
+553309
+553351
+553363
+553369
+553411
+553417
+553433
+553439
+553447
+553457
+553463
+553471
+553481
+553507
+553513
+553517
+553529
+553543
+553549
+553561
+553573
+553583
+553589
+553591
+553601
+553607
+553627
+553643
+553649
+553667
+553681
+553687
+553699
+553703
+553727
+553733
+553747
+553757
+553759
+553769
+553789
+553811
+553837
+553849
+553867
+553873
+553897
+553901
+553919
+553921
+553933
+553961
+553963
+553981
+553991
+554003
+554011
+554017
+554051
+554077
+554087
+554089
+554117
+554123
+554129
+554137
+554167
+554171
+554179
+554189
+554207
+554209
+554233
+554237
+554263
+554269
+554293
+554299
+554303
+554317
+554347
+554377
+554383
+554417
+554419
+554431
+554447
+554453
+554467
+554503
+554527
+554531
+554569
+554573
+554597
+554611
+554627
+554633
+554639
+554641
+554663
+554669
+554677
+554699
+554707
+554711
+554731
+554747
+554753
+554759
+554767
+554779
+554789
+554791
+554797
+554803
+554821
+554833
+554837
+554839
+554843
+554849
+554887
+554891
+554893
+554899
+554923
+554927
+554951
+554959
+554969
+554977
+555029
+555041
+555043
+555053
+555073
+555077
+555083
+555091
+555097
+555109
+555119
+555143
+555167
+555209
+555221
+555251
+555253
+555257
+555277
+555287
+555293
+555301
+555307
+555337
+555349
+555361
+555383
+555391
+555419
+555421
+555439
+555461
+555487
+555491
+555521
+555523
+555557
+555589
+555593
+555637
+555661
+555671
+555677
+555683
+555691
+555697
+555707
+555739
+555743
+555761
+555767
+555823
+555827
+555829
+555853
+555857
+555871
+555931
+555941
+555953
+555967
+556007
+556021
+556027
+556037
+556043
+556051
+556067
+556069
+556093
+556103
+556123
+556159
+556177
+556181
+556211
+556219
+556229
+556243
+556253
+556261
+556267
+556271
+556273
+556279
+556289
+556313
+556321
+556327
+556331
+556343
+556351
+556373
+556399
+556403
+556441
+556459
+556477
+556483
+556487
+556513
+556519
+556537
+556559
+556573
+556579
+556583
+556601
+556607
+556609
+556613
+556627
+556639
+556651
+556679
+556687
+556691
+556693
+556697
+556709
+556723
+556727
+556741
+556753
+556763
+556769
+556781
+556789
+556793
+556799
+556811
+556817
+556819
+556823
+556841
+556849
+556859
+556861
+556867
+556883
+556891
+556931
+556939
+556943
+556957
+556967
+556981
+556987
+556999
+557017
+557021
+557027
+557033
+557041
+557057
+557059
+557069
+557087
+557093
+557153
+557159
+557197
+557201
+557261
+557269
+557273
+557281
+557303
+557309
+557321
+557329
+557339
+557369
+557371
+557377
+557423
+557443
+557449
+557461
+557483
+557489
+557519
+557521
+557533
+557537
+557551
+557567
+557573
+557591
+557611
+557633
+557639
+557663
+557671
+557693
+557717
+557729
+557731
+557741
+557743
+557747
+557759
+557761
+557779
+557789
+557801
+557803
+557831
+557857
+557861
+557863
+557891
+557899
+557903
+557927
+557981
+557987
+558007
+558017
+558029
+558053
+558067
+558083
+558091
+558109
+558113
+558121
+558139
+558149
+558167
+558179
+558197
+558203
+558209
+558223
+558241
+558251
+558253
+558287
+558289
+558307
+558319
+558343
+558401
+558413
+558421
+558427
+558431
+558457
+558469
+558473
+558479
+558491
+558497
+558499
+558521
+558529
+558533
+558539
+558541
+558563
+558583
+558587
+558599
+558611
+558629
+558643
+558661
+558683
+558703
+558721
+558731
+558757
+558769
+558781
+558787
+558791
+558793
+558827
+558829
+558863
+558869
+558881
+558893
+558913
+558931
+558937
+558947
+558973
+558979
+558997
+559001
+559049
+559051
+559067
+559081
+559093
+559099
+559123
+559133
+559157
+559177
+559183
+559201
+559211
+559213
+559217
+559219
+559231
+559243
+559259
+559277
+559297
+559313
+559319
+559343
+559357
+559367
+559369
+559397
+559421
+559451
+559459
+559469
+559483
+559511
+559513
+559523
+559529
+559541
+559547
+559549
+559561
+559571
+559577
+559583
+559591
+559597
+559631
+559633
+559639
+559649
+559667
+559673
+559679
+559687
+559703
+559709
+559739
+559747
+559777
+559781
+559799
+559807
+559813
+559831
+559841
+559849
+559859
+559877
+559883
+559901
+559907
+559913
+559939
+559967
+559973
+559991
+560017
+560023
+560029
+560039
+560047
+560081
+560083
+560089
+560093
+560107
+560113
+560117
+560123
+560137
+560149
+560159
+560171
+560173
+560179
+560191
+560207
+560213
+560221
+560227
+560233
+560237
+560239
+560243
+560249
+560281
+560293
+560297
+560299
+560311
+560317
+560341
+560353
+560393
+560411
+560437
+560447
+560459
+560471
+560477
+560479
+560489
+560491
+560501
+560503
+560531
+560543
+560551
+560561
+560597
+560617
+560621
+560639
+560641
+560653
+560669
+560683
+560689
+560701
+560719
+560737
+560753
+560761
+560767
+560771
+560783
+560797
+560803
+560827
+560837
+560863
+560869
+560873
+560887
+560891
+560893
+560897
+560929
+560939
+560941
+560969
+560977
+561019
+561047
+561053
+561059
+561061
+561079
+561083
+561091
+561097
+561101
+561103
+561109
+561161
+561173
+561181
+561191
+561199
+561229
+561251
+561277
+561307
+561313
+561343
+561347
+561359
+561367
+561373
+561377
+561389
+561409
+561419
+561439
+561461
+561521
+561529
+561551
+561553
+561559
+561599
+561607
+561667
+561703
+561713
+561733
+561761
+561767
+561787
+561797
+561809
+561829
+561839
+561907
+561917
+561923
+561931
+561943
+561947
+561961
+561973
+561983
+561997
+562007
+562019
+562021
+562043
+562091
+562103
+562129
+562147
+562169
+562181
+562193
+562201
+562231
+562259
+562271
+562273
+562283
+562291
+562297
+562301
+562307
+562313
+562333
+562337
+562349
+562351
+562357
+562361
+562399
+562403
+562409
+562417
+562421
+562427
+562439
+562459
+562477
+562493
+562501
+562517
+562519
+562537
+562577
+562579
+562589
+562591
+562607
+562613
+562621
+562631
+562633
+562651
+562663
+562669
+562673
+562691
+562693
+562699
+562703
+562711
+562721
+562739
+562753
+562759
+562763
+562781
+562789
+562813
+562831
+562841
+562871
+562897
+562901
+562909
+562931
+562943
+562949
+562963
+562967
+562973
+562979
+562987
+562997
+563009
+563011
+563021
+563039
+563041
+563047
+563051
+563077
+563081
+563099
+563113
+563117
+563119
+563131
+563149
+563153
+563183
+563197
+563219
+563249
+563263
+563287
+563327
+563351
+563357
+563359
+563377
+563401
+563411
+563413
+563417
+563419
+563447
+563449
+563467
+563489
+563501
+563503
+563543
+563551
+563561
+563587
+563593
+563599
+563623
+563657
+563663
+563723
+563743
+563747
+563777
+563809
+563813
+563821
+563831
+563837
+563851
+563869
+563881
+563887
+563897
+563929
+563933
+563947
+563971
+563987
+563999
+564013
+564017
+564041
+564049
+564059
+564061
+564089
+564097
+564103
+564127
+564133
+564149
+564163
+564173
+564191
+564197
+564227
+564229
+564233
+564251
+564257
+564269
+564271
+564299
+564301
+564307
+564313
+564323
+564353
+564359
+564367
+564371
+564373
+564391
+564401
+564407
+564409
+564419
+564437
+564449
+564457
+564463
+564467
+564491
+564497
+564523
+564533
+564593
+564607
+564617
+564643
+564653
+564667
+564671
+564679
+564701
+564703
+564709
+564713
+564761
+564779
+564793
+564797
+564827
+564871
+564881
+564899
+564917
+564919
+564923
+564937
+564959
+564973
+564979
+564983
+564989
+564997
+565013
+565039
+565049
+565057
+565069
+565109
+565111
+565127
+565163
+565171
+565177
+565183
+565189
+565207
+565237
+565241
+565247
+565259
+565261
+565273
+565283
+565289
+565303
+565319
+565333
+565337
+565343
+565361
+565379
+565381
+565387
+565391
+565393
+565427
+565429
+565441
+565451
+565463
+565469
+565483
+565489
+565507
+565511
+565517
+565519
+565549
+565553
+565559
+565567
+565571
+565583
+565589
+565597
+565603
+565613
+565637
+565651
+565661
+565667
+565723
+565727
+565769
+565771
+565787
+565793
+565813
+565849
+565867
+565889
+565891
+565907
+565909
+565919
+565921
+565937
+565973
+565979
+565997
+566011
+566023
+566047
+566057
+566077
+566089
+566101
+566107
+566131
+566149
+566161
+566173
+566179
+566183
+566201
+566213
+566227
+566231
+566233
+566273
+566311
+566323
+566347
+566387
+566393
+566413
+566417
+566429
+566431
+566437
+566441
+566443
+566453
+566521
+566537
+566539
+566543
+566549
+566551
+566557
+566563
+566567
+566617
+566633
+566639
+566653
+566659
+566677
+566681
+566693
+566701
+566707
+566717
+566719
+566723
+566737
+566759
+566767
+566791
+566821
+566833
+566851
+566857
+566879
+566911
+566939
+566947
+566963
+566971
+566977
+566987
+566999
+567011
+567013
+567031
+567053
+567059
+567067
+567097
+567101
+567107
+567121
+567143
+567179
+567181
+567187
+567209
+567257
+567263
+567277
+567319
+567323
+567367
+567377
+567383
+567389
+567401
+567407
+567439
+567449
+567451
+567467
+567487
+567493
+567499
+567527
+567529
+567533
+567569
+567601
+567607
+567631
+567649
+567653
+567659
+567661
+567667
+567673
+567689
+567719
+567737
+567751
+567761
+567767
+567779
+567793
+567811
+567829
+567841
+567857
+567863
+567871
+567877
+567881
+567883
+567899
+567937
+567943
+567947
+567949
+567961
+567979
+567991
+567997
+568019
+568027
+568033
+568049
+568069
+568091
+568097
+568109
+568133
+568151
+568153
+568163
+568171
+568177
+568187
+568189
+568193
+568201
+568207
+568231
+568237
+568241
+568273
+568279
+568289
+568303
+568349
+568363
+568367
+568387
+568391
+568433
+568439
+568441
+568453
+568471
+568481
+568493
+568523
+568541
+568549
+568577
+568609
+568619
+568627
+568643
+568657
+568669
+568679
+568691
+568699
+568709
+568723
+568751
+568783
+568787
+568807
+568823
+568831
+568853
+568877
+568891
+568903
+568907
+568913
+568921
+568963
+568979
+568987
+568991
+568999
+569003
+569011
+569021
+569047
+569053
+569057
+569071
+569077
+569081
+569083
+569111
+569117
+569137
+569141
+569159
+569161
+569189
+569197
+569201
+569209
+569213
+569237
+569243
+569249
+569251
+569263
+569267
+569269
+569321
+569323
+569369
+569417
+569419
+569423
+569431
+569447
+569461
+569479
+569497
+569507
+569533
+569573
+569579
+569581
+569599
+569603
+569609
+569617
+569623
+569659
+569663
+569671
+569683
+569711
+569713
+569717
+569729
+569731
+569747
+569759
+569771
+569773
+569797
+569809
+569813
+569819
+569831
+569839
+569843
+569851
+569861
+569869
+569887
+569893
+569897
+569903
+569927
+569939
+569957
+569983
+570001
+570013
+570029
+570041
+570043
+570047
+570049
+570071
+570077
+570079
+570083
+570091
+570107
+570109
+570113
+570131
+570139
+570161
+570173
+570181
+570191
+570217
+570221
+570233
+570253
+570329
+570359
+570373
+570379
+570389
+570391
+570403
+570407
+570413
+570419
+570421
+570461
+570463
+570467
+570487
+570491
+570497
+570499
+570509
+570511
+570527
+570529
+570539
+570547
+570553
+570569
+570587
+570601
+570613
+570637
+570643
+570649
+570659
+570667
+570671
+570677
+570683
+570697
+570719
+570733
+570737
+570743
+570781
+570821
+570827
+570839
+570841
+570851
+570853
+570859
+570881
+570887
+570901
+570919
+570937
+570949
+570959
+570961
+570967
+570991
+571001
+571019
+571031
+571037
+571049
+571069
+571093
+571099
+571111
+571133
+571147
+571157
+571163
+571199
+571201
+571211
+571223
+571229
+571231
+571261
+571267
+571279
+571303
+571321
+571331
+571339
+571369
+571381
+571397
+571399
+571409
+571433
+571453
+571471
+571477
+571531
+571541
+571579
+571583
+571589
+571601
+571603
+571633
+571657
+571673
+571679
+571699
+571709
+571717
+571721
+571741
+571751
+571759
+571777
+571783
+571789
+571799
+571801
+571811
+571841
+571847
+571853
+571861
+571867
+571871
+571873
+571877
+571903
+571933
+571939
+571969
+571973
+572023
+572027
+572041
+572051
+572053
+572059
+572063
+572069
+572087
+572093
+572107
+572137
+572161
+572177
+572179
+572183
+572207
+572233
+572239
+572251
+572269
+572281
+572303
+572311
+572321
+572323
+572329
+572333
+572357
+572387
+572399
+572417
+572419
+572423
+572437
+572449
+572461
+572471
+572479
+572491
+572497
+572519
+572521
+572549
+572567
+572573
+572581
+572587
+572597
+572599
+572609
+572629
+572633
+572639
+572651
+572653
+572657
+572659
+572683
+572687
+572699
+572707
+572711
+572749
+572777
+572791
+572801
+572807
+572813
+572821
+572827
+572833
+572843
+572867
+572879
+572881
+572903
+572909
+572927
+572933
+572939
+572941
+572963
+572969
+572993
+573007
+573031
+573047
+573101
+573107
+573109
+573119
+573143
+573161
+573163
+573179
+573197
+573247
+573253
+573263
+573277
+573289
+573299
+573317
+573329
+573341
+573343
+573371
+573379
+573383
+573409
+573437
+573451
+573457
+573473
+573479
+573481
+573487
+573493
+573497
+573509
+573511
+573523
+573527
+573557
+573569
+573571
+573637
+573647
+573673
+573679
+573691
+573719
+573737
+573739
+573757
+573761
+573763
+573787
+573791
+573809
+573817
+573829
+573847
+573851
+573863
+573871
+573883
+573887
+573899
+573901
+573929
+573941
+573953
+573967
+573973
+573977
+574003
+574031
+574033
+574051
+574061
+574081
+574099
+574109
+574127
+574157
+574159
+574163
+574169
+574181
+574183
+574201
+574219
+574261
+574279
+574283
+574289
+574297
+574307
+574309
+574363
+574367
+574373
+574393
+574423
+574429
+574433
+574439
+574477
+574489
+574493
+574501
+574507
+574529
+574543
+574547
+574597
+574619
+574621
+574627
+574631
+574643
+574657
+574667
+574687
+574699
+574703
+574711
+574723
+574727
+574733
+574741
+574789
+574799
+574801
+574813
+574817
+574859
+574907
+574913
+574933
+574939
+574949
+574963
+574967
+574969
+575009
+575027
+575033
+575053
+575063
+575077
+575087
+575119
+575123
+575129
+575131
+575137
+575153
+575173
+575177
+575203
+575213
+575219
+575231
+575243
+575249
+575251
+575257
+575261
+575303
+575317
+575359
+575369
+575371
+575401
+575417
+575429
+575431
+575441
+575473
+575479
+575489
+575503
+575513
+575551
+575557
+575573
+575579
+575581
+575591
+575593
+575611
+575623
+575647
+575651
+575669
+575677
+575689
+575693
+575699
+575711
+575717
+575723
+575747
+575753
+575777
+575791
+575821
+575837
+575849
+575857
+575863
+575867
+575893
+575903
+575921
+575923
+575941
+575957
+575959
+575963
+575987
+576001
+576013
+576019
+576029
+576031
+576041
+576049
+576089
+576101
+576119
+576131
+576151
+576161
+576167
+576179
+576193
+576203
+576211
+576217
+576221
+576223
+576227
+576287
+576293
+576299
+576313
+576319
+576341
+576377
+576379
+576391
+576421
+576427
+576431
+576439
+576461
+576469
+576473
+576493
+576509
+576523
+576529
+576533
+576539
+576551
+576553
+576577
+576581
+576613
+576617
+576637
+576647
+576649
+576659
+576671
+576677
+576683
+576689
+576701
+576703
+576721
+576727
+576731
+576739
+576743
+576749
+576757
+576769
+576787
+576791
+576881
+576883
+576889
+576899
+576943
+576949
+576967
+576977
+577007
+577009
+577033
+577043
+577063
+577067
+577069
+577081
+577097
+577111
+577123
+577147
+577151
+577153
+577169
+577177
+577193
+577219
+577249
+577259
+577271
+577279
+577307
+577327
+577331
+577333
+577349
+577351
+577363
+577387
+577397
+577399
+577427
+577453
+577457
+577463
+577471
+577483
+577513
+577517
+577523
+577529
+577531
+577537
+577547
+577559
+577573
+577589
+577601
+577613
+577627
+577637
+577639
+577667
+577721
+577739
+577751
+577757
+577781
+577799
+577807
+577817
+577831
+577849
+577867
+577873
+577879
+577897
+577901
+577909
+577919
+577931
+577937
+577939
+577957
+577979
+577981
+578021
+578029
+578041
+578047
+578063
+578077
+578093
+578117
+578131
+578167
+578183
+578191
+578203
+578209
+578213
+578251
+578267
+578297
+578299
+578309
+578311
+578317
+578327
+578353
+578363
+578371
+578399
+578401
+578407
+578419
+578441
+578453
+578467
+578477
+578483
+578489
+578497
+578503
+578509
+578533
+578537
+578563
+578573
+578581
+578587
+578597
+578603
+578609
+578621
+578647
+578659
+578687
+578689
+578693
+578701
+578719
+578729
+578741
+578777
+578779
+578789
+578803
+578819
+578821
+578827
+578839
+578843
+578857
+578861
+578881
+578917
+578923
+578957
+578959
+578971
+578999
+579011
+579017
+579023
+579053
+579079
+579083
+579107
+579113
+579119
+579133
+579179
+579197
+579199
+579239
+579251
+579259
+579263
+579277
+579281
+579283
+579287
+579311
+579331
+579353
+579379
+579407
+579409
+579427
+579433
+579451
+579473
+579497
+579499
+579503
+579517
+579521
+579529
+579533
+579539
+579541
+579563
+579569
+579571
+579583
+579587
+579611
+579613
+579629
+579637
+579641
+579643
+579653
+579673
+579701
+579707
+579713
+579721
+579737
+579757
+579763
+579773
+579779
+579809
+579829
+579851
+579869
+579877
+579881
+579883
+579893
+579907
+579947
+579949
+579961
+579967
+579973
+579983
+580001
+580031
+580033
+580079
+580081
+580093
+580133
+580163
+580169
+580183
+580187
+580201
+580213
+580219
+580231
+580259
+580291
+580301
+580303
+580331
+580339
+580343
+580357
+580361
+580373
+580379
+580381
+580409
+580417
+580471
+580477
+580487
+580513
+580529
+580549
+580553
+580561
+580577
+580607
+580627
+580631
+580633
+580639
+580663
+580673
+580687
+580691
+580693
+580711
+580717
+580733
+580747
+580757
+580759
+580763
+580787
+580793
+580807
+580813
+580837
+580843
+580859
+580871
+580889
+580891
+580901
+580913
+580919
+580927
+580939
+580969
+580981
+580997
+581029
+581041
+581047
+581069
+581071
+581089
+581099
+581101
+581137
+581143
+581149
+581171
+581173
+581177
+581183
+581197
+581201
+581227
+581237
+581239
+581261
+581263
+581293
+581303
+581311
+581323
+581333
+581341
+581351
+581353
+581369
+581377
+581393
+581407
+581411
+581429
+581443
+581447
+581459
+581473
+581491
+581521
+581527
+581549
+581551
+581557
+581573
+581597
+581599
+581617
+581639
+581657
+581663
+581683
+581687
+581699
+581701
+581729
+581731
+581743
+581753
+581767
+581773
+581797
+581809
+581821
+581843
+581857
+581863
+581869
+581873
+581891
+581909
+581921
+581941
+581947
+581953
+581981
+581983
+582011
+582013
+582017
+582031
+582037
+582067
+582083
+582119
+582137
+582139
+582157
+582161
+582167
+582173
+582181
+582203
+582209
+582221
+582223
+582227
+582247
+582251
+582299
+582317
+582319
+582371
+582391
+582409
+582419
+582427
+582433
+582451
+582457
+582469
+582499
+582509
+582511
+582541
+582551
+582563
+582587
+582601
+582623
+582643
+582649
+582677
+582689
+582691
+582719
+582721
+582727
+582731
+582737
+582761
+582763
+582767
+582773
+582781
+582793
+582809
+582821
+582851
+582853
+582859
+582887
+582899
+582931
+582937
+582949
+582961
+582971
+582973
+582983
+583007
+583013
+583019
+583021
+583031
+583069
+583087
+583127
+583139
+583147
+583153
+583169
+583171
+583181
+583189
+583207
+583213
+583229
+583237
+583249
+583267
+583273
+583279
+583291
+583301
+583337
+583339
+583351
+583367
+583391
+583397
+583403
+583409
+583417
+583421
+583447
+583459
+583469
+583481
+583493
+583501
+583511
+583519
+583523
+583537
+583543
+583577
+583603
+583613
+583619
+583621
+583631
+583651
+583657
+583669
+583673
+583697
+583727
+583733
+583753
+583769
+583777
+583783
+583789
+583801
+583841
+583853
+583859
+583861
+583873
+583879
+583903
+583909
+583937
+583969
+583981
+583991
+583997
+584011
+584027
+584033
+584053
+584057
+584063
+584081
+584099
+584141
+584153
+584167
+584183
+584203
+584249
+584261
+584279
+584281
+584303
+584347
+584357
+584359
+584377
+584387
+584393
+584399
+584411
+584417
+584429
+584447
+584471
+584473
+584509
+584531
+584557
+584561
+584587
+584593
+584599
+584603
+584609
+584621
+584627
+584659
+584663
+584677
+584693
+584699
+584707
+584713
+584719
+584723
+584737
+584767
+584777
+584789
+584791
+584809
+584849
+584863
+584869
+584873
+584879
+584897
+584911
+584917
+584923
+584951
+584963
+584971
+584981
+584993
+584999
+585019
+585023
+585031
+585037
+585041
+585043
+585049
+585061
+585071
+585073
+585077
+585107
+585113
+585119
+585131
+585149
+585163
+585199
+585217
+585251
+585269
+585271
+585283
+585289
+585313
+585317
+585337
+585341
+585367
+585383
+585391
+585413
+585437
+585443
+585461
+585467
+585493
+585503
+585517
+585547
+585551
+585569
+585577
+585581
+585587
+585593
+585601
+585619
+585643
+585653
+585671
+585677
+585691
+585721
+585727
+585733
+585737
+585743
+585749
+585757
+585779
+585791
+585799
+585839
+585841
+585847
+585853
+585857
+585863
+585877
+585881
+585883
+585889
+585899
+585911
+585913
+585917
+585919
+585953
+585989
+585997
+586009
+586037
+586051
+586057
+586067
+586073
+586087
+586111
+586121
+586123
+586129
+586139
+586147
+586153
+586189
+586213
+586237
+586273
+586277
+586291
+586301
+586309
+586319
+586349
+586361
+586363
+586367
+586387
+586403
+586429
+586433
+586457
+586459
+586463
+586471
+586493
+586499
+586501
+586541
+586543
+586567
+586571
+586577
+586589
+586601
+586603
+586609
+586627
+586631
+586633
+586667
+586679
+586693
+586711
+586723
+586741
+586769
+586787
+586793
+586801
+586811
+586813
+586819
+586837
+586841
+586849
+586871
+586897
+586903
+586909
+586919
+586921
+586933
+586939
+586951
+586961
+586973
+586979
+586981
+587017
+587021
+587033
+587051
+587053
+587057
+587063
+587087
+587101
+587107
+587117
+587123
+587131
+587137
+587143
+587149
+587173
+587179
+587189
+587201
+587219
+587263
+587267
+587269
+587281
+587287
+587297
+587303
+587341
+587371
+587381
+587387
+587413
+587417
+587429
+587437
+587441
+587459
+587467
+587473
+587497
+587513
+587519
+587527
+587533
+587539
+587549
+587551
+587563
+587579
+587599
+587603
+587617
+587621
+587623
+587633
+587659
+587669
+587677
+587687
+587693
+587711
+587731
+587737
+587747
+587749
+587753
+587771
+587773
+587789
+587813
+587827
+587833
+587849
+587863
+587887
+587891
+587897
+587927
+587933
+587947
+587959
+587969
+587971
+587987
+587989
+587999
+588011
+588019
+588037
+588043
+588061
+588073
+588079
+588083
+588097
+588113
+588121
+588131
+588151
+588167
+588169
+588173
+588191
+588199
+588229
+588239
+588241
+588257
+588277
+588293
+588311
+588347
+588359
+588361
+588383
+588389
+588397
+588403
+588433
+588437
+588463
+588481
+588493
+588503
+588509
+588517
+588521
+588529
+588569
+588571
+588619
+588631
+588641
+588647
+588649
+588667
+588673
+588683
+588703
+588733
+588737
+588743
+588767
+588773
+588779
+588811
+588827
+588839
+588871
+588877
+588881
+588893
+588911
+588937
+588941
+588947
+588949
+588953
+588977
+589021
+589027
+589049
+589063
+589109
+589111
+589123
+589139
+589159
+589163
+589181
+589187
+589189
+589207
+589213
+589219
+589231
+589241
+589243
+589273
+589289
+589291
+589297
+589327
+589331
+589349
+589357
+589387
+589409
+589439
+589451
+589453
+589471
+589481
+589493
+589507
+589529
+589531
+589579
+589583
+589591
+589601
+589607
+589609
+589639
+589643
+589681
+589711
+589717
+589751
+589753
+589759
+589763
+589783
+589793
+589807
+589811
+589829
+589847
+589859
+589861
+589873
+589877
+589903
+589921
+589933
+589993
+589997
+590021
+590027
+590033
+590041
+590071
+590077
+590099
+590119
+590123
+590129
+590131
+590137
+590141
+590153
+590171
+590201
+590207
+590243
+590251
+590263
+590267
+590269
+590279
+590309
+590321
+590323
+590327
+590357
+590363
+590377
+590383
+590389
+590399
+590407
+590431
+590437
+590489
+590537
+590543
+590567
+590573
+590593
+590599
+590609
+590627
+590641
+590647
+590657
+590659
+590669
+590713
+590717
+590719
+590741
+590753
+590771
+590797
+590809
+590813
+590819
+590833
+590839
+590867
+590899
+590921
+590923
+590929
+590959
+590963
+590983
+590987
+591023
+591053
+591061
+591067
+591079
+591089
+591091
+591113
+591127
+591131
+591137
+591161
+591163
+591181
+591193
+591233
+591259
+591271
+591287
+591289
+591301
+591317
+591319
+591341
+591377
+591391
+591403
+591407
+591421
+591431
+591443
+591457
+591469
+591499
+591509
+591523
+591553
+591559
+591581
+591599
+591601
+591611
+591623
+591649
+591653
+591659
+591673
+591691
+591709
+591739
+591743
+591749
+591751
+591757
+591779
+591791
+591827
+591841
+591847
+591863
+591881
+591887
+591893
+591901
+591937
+591959
+591973
+592019
+592027
+592049
+592057
+592061
+592073
+592087
+592099
+592121
+592129
+592133
+592139
+592157
+592199
+592217
+592219
+592223
+592237
+592261
+592289
+592303
+592307
+592309
+592321
+592337
+592343
+592351
+592357
+592367
+592369
+592387
+592391
+592393
+592429
+592451
+592453
+592463
+592469
+592483
+592489
+592507
+592517
+592531
+592547
+592561
+592577
+592589
+592597
+592601
+592609
+592621
+592639
+592643
+592649
+592661
+592663
+592681
+592693
+592723
+592727
+592741
+592747
+592759
+592763
+592793
+592843
+592849
+592853
+592861
+592873
+592877
+592897
+592903
+592919
+592931
+592939
+592967
+592973
+592987
+592993
+593003
+593029
+593041
+593051
+593059
+593071
+593081
+593083
+593111
+593119
+593141
+593143
+593149
+593171
+593179
+593183
+593207
+593209
+593213
+593227
+593231
+593233
+593251
+593261
+593273
+593291
+593293
+593297
+593321
+593323
+593353
+593381
+593387
+593399
+593401
+593407
+593429
+593447
+593449
+593473
+593479
+593491
+593497
+593501
+593507
+593513
+593519
+593531
+593539
+593573
+593587
+593597
+593603
+593627
+593629
+593633
+593641
+593647
+593651
+593689
+593707
+593711
+593767
+593777
+593783
+593839
+593851
+593863
+593869
+593899
+593903
+593933
+593951
+593969
+593977
+593987
+593993
+594023
+594037
+594047
+594091
+594103
+594107
+594119
+594137
+594151
+594157
+594161
+594163
+594179
+594193
+594203
+594211
+594227
+594241
+594271
+594281
+594283
+594287
+594299
+594311
+594313
+594329
+594359
+594367
+594379
+594397
+594401
+594403
+594421
+594427
+594449
+594457
+594467
+594469
+594499
+594511
+594521
+594523
+594533
+594551
+594563
+594569
+594571
+594577
+594617
+594637
+594641
+594653
+594667
+594679
+594697
+594709
+594721
+594739
+594749
+594751
+594773
+594793
+594821
+594823
+594827
+594829
+594857
+594889
+594899
+594911
+594917
+594929
+594931
+594953
+594959
+594961
+594977
+594989
+595003
+595037
+595039
+595043
+595057
+595069
+595073
+595081
+595087
+595093
+595097
+595117
+595123
+595129
+595139
+595141
+595157
+595159
+595181
+595183
+595201
+595207
+595229
+595247
+595253
+595261
+595267
+595271
+595277
+595291
+595303
+595313
+595319
+595333
+595339
+595351
+595363
+595373
+595379
+595381
+595411
+595451
+595453
+595481
+595513
+595519
+595523
+595547
+595549
+595571
+595577
+595579
+595613
+595627
+595687
+595703
+595709
+595711
+595717
+595733
+595741
+595801
+595807
+595817
+595843
+595873
+595877
+595927
+595939
+595943
+595949
+595951
+595957
+595961
+595963
+595967
+595981
+596009
+596021
+596027
+596047
+596053
+596059
+596069
+596081
+596083
+596093
+596117
+596119
+596143
+596147
+596159
+596179
+596209
+596227
+596231
+596243
+596251
+596257
+596261
+596273
+596279
+596291
+596293
+596317
+596341
+596363
+596369
+596399
+596419
+596423
+596461
+596489
+596503
+596507
+596537
+596569
+596573
+596579
+596587
+596593
+596599
+596611
+596623
+596633
+596653
+596663
+596669
+596671
+596693
+596707
+596737
+596741
+596749
+596767
+596779
+596789
+596803
+596821
+596831
+596839
+596851
+596857
+596861
+596863
+596879
+596899
+596917
+596927
+596929
+596933
+596941
+596963
+596977
+596983
+596987
+597031
+597049
+597053
+597059
+597073
+597127
+597131
+597133
+597137
+597169
+597209
+597221
+597239
+597253
+597263
+597269
+597271
+597301
+597307
+597349
+597353
+597361
+597367
+597383
+597391
+597403
+597407
+597409
+597419
+597433
+597437
+597451
+597473
+597497
+597521
+597523
+597539
+597551
+597559
+597577
+597581
+597589
+597593
+597599
+597613
+597637
+597643
+597659
+597671
+597673
+597677
+597679
+597689
+597697
+597757
+597761
+597767
+597769
+597781
+597803
+597823
+597827
+597833
+597853
+597859
+597869
+597889
+597899
+597901
+597923
+597929
+597967
+597997
+598007
+598049
+598051
+598057
+598079
+598093
+598099
+598123
+598127
+598141
+598151
+598159
+598163
+598187
+598189
+598193
+598219
+598229
+598261
+598303
+598307
+598333
+598363
+598369
+598379
+598387
+598399
+598421
+598427
+598439
+598447
+598457
+598463
+598487
+598489
+598501
+598537
+598541
+598571
+598613
+598643
+598649
+598651
+598657
+598669
+598681
+598687
+598691
+598711
+598721
+598727
+598729
+598777
+598783
+598789
+598799
+598817
+598841
+598853
+598867
+598877
+598883
+598891
+598903
+598931
+598933
+598963
+598967
+598973
+598981
+598987
+598999
+599003
+599009
+599021
+599023
+599069
+599087
+599117
+599143
+599147
+599149
+599153
+599191
+599213
+599231
+599243
+599251
+599273
+599281
+599303
+599309
+599321
+599341
+599353
+599359
+599371
+599383
+599387
+599399
+599407
+599413
+599419
+599429
+599477
+599479
+599491
+599513
+599519
+599537
+599551
+599561
+599591
+599597
+599603
+599611
+599623
+599629
+599657
+599663
+599681
+599693
+599699
+599701
+599713
+599719
+599741
+599759
+599779
+599783
+599803
+599831
+599843
+599857
+599869
+599891
+599899
+599927
+599933
+599939
+599941
+599959
+599983
+599993
+599999
+600011
+600043
+600053
+600071
+600073
+600091
+600101
+600109
+600167
+600169
+600203
+600217
+600221
+600233
+600239
+600241
+600247
+600269
+600283
+600289
+600293
+600307
+600311
+600317
+600319
+600337
+600359
+600361
+600367
+600371
+600401
+600403
+600407
+600421
+600433
+600449
+600451
+600463
+600469
+600487
+600517
+600529
+600557
+600569
+600577
+600601
+600623
+600631
+600641
+600659
+600673
+600689
+600697
+600701
+600703
+600727
+600751
+600791
+600823
+600827
+600833
+600841
+600857
+600877
+600881
+600883
+600889
+600893
+600931
+600947
+600949
+600959
+600961
+600973
+600979
+600983
+601021
+601031
+601037
+601039
+601043
+601061
+601067
+601079
+601093
+601127
+601147
+601187
+601189
+601193
+601201
+601207
+601219
+601231
+601241
+601247
+601259
+601267
+601283
+601291
+601297
+601309
+601313
+601319
+601333
+601339
+601357
+601379
+601397
+601411
+601423
+601439
+601451
+601457
+601487
+601507
+601541
+601543
+601589
+601591
+601607
+601631
+601651
+601669
+601687
+601697
+601717
+601747
+601751
+601759
+601763
+601771
+601801
+601807
+601813
+601819
+601823
+601831
+601849
+601873
+601883
+601889
+601897
+601903
+601943
+601949
+601961
+601969
+601981
+602029
+602033
+602039
+602047
+602057
+602081
+602083
+602087
+602093
+602099
+602111
+602137
+602141
+602143
+602153
+602179
+602197
+602201
+602221
+602227
+602233
+602257
+602267
+602269
+602279
+602297
+602309
+602311
+602317
+602321
+602333
+602341
+602351
+602377
+602383
+602401
+602411
+602431
+602453
+602461
+602477
+602479
+602489
+602501
+602513
+602521
+602543
+602551
+602593
+602597
+602603
+602621
+602627
+602639
+602647
+602677
+602687
+602689
+602711
+602713
+602717
+602729
+602743
+602753
+602759
+602773
+602779
+602801
+602821
+602831
+602839
+602867
+602873
+602887
+602891
+602909
+602929
+602947
+602951
+602971
+602977
+602983
+602999
+603011
+603013
+603023
+603047
+603077
+603091
+603101
+603103
+603131
+603133
+603149
+603173
+603191
+603203
+603209
+603217
+603227
+603257
+603283
+603311
+603319
+603349
+603389
+603391
+603401
+603431
+603443
+603457
+603467
+603487
+603503
+603521
+603523
+603529
+603541
+603553
+603557
+603563
+603569
+603607
+603613
+603623
+603641
+603667
+603679
+603689
+603719
+603731
+603739
+603749
+603761
+603769
+603781
+603791
+603793
+603817
+603821
+603833
+603847
+603851
+603853
+603859
+603881
+603893
+603899
+603901
+603907
+603913
+603917
+603919
+603923
+603931
+603937
+603947
+603949
+603989
+604001
+604007
+604013
+604031
+604057
+604063
+604069
+604073
+604171
+604189
+604223
+604237
+604243
+604249
+604259
+604277
+604291
+604309
+604313
+604319
+604339
+604343
+604349
+604361
+604369
+604379
+604397
+604411
+604427
+604433
+604441
+604477
+604481
+604517
+604529
+604547
+604559
+604579
+604589
+604603
+604609
+604613
+604619
+604649
+604651
+604661
+604697
+604699
+604711
+604727
+604729
+604733
+604753
+604759
+604781
+604787
+604801
+604811
+604819
+604823
+604829
+604837
+604859
+604861
+604867
+604883
+604907
+604931
+604939
+604949
+604957
+604973
+604997
+605009
+605021
+605023
+605039
+605051
+605069
+605071
+605113
+605117
+605123
+605147
+605167
+605173
+605177
+605191
+605221
+605233
+605237
+605239
+605249
+605257
+605261
+605309
+605323
+605329
+605333
+605347
+605369
+605393
+605401
+605411
+605413
+605443
+605471
+605477
+605497
+605503
+605509
+605531
+605533
+605543
+605551
+605573
+605593
+605597
+605599
+605603
+605609
+605617
+605629
+605639
+605641
+605687
+605707
+605719
+605779
+605789
+605809
+605837
+605849
+605861
+605867
+605873
+605879
+605887
+605893
+605909
+605921
+605933
+605947
+605953
+605977
+605987
+605993
+606017
+606029
+606031
+606037
+606041
+606049
+606059
+606077
+606079
+606083
+606091
+606113
+606121
+606131
+606173
+606181
+606223
+606241
+606247
+606251
+606299
+606301
+606311
+606313
+606323
+606341
+606379
+606383
+606413
+606433
+606443
+606449
+606493
+606497
+606503
+606521
+606527
+606539
+606559
+606569
+606581
+606587
+606589
+606607
+606643
+606649
+606653
+606659
+606673
+606721
+606731
+606733
+606737
+606743
+606757
+606791
+606811
+606829
+606833
+606839
+606847
+606857
+606863
+606899
+606913
+606919
+606943
+606959
+606961
+606967
+606971
+606997
+607001
+607003
+607007
+607037
+607043
+607049
+607063
+607067
+607081
+607091
+607093
+607097
+607109
+607127
+607129
+607147
+607151
+607153
+607157
+607163
+607181
+607199
+607213
+607219
+607249
+607253
+607261
+607301
+607303
+607307
+607309
+607319
+607331
+607337
+607339
+607349
+607357
+607363
+607417
+607421
+607423
+607471
+607493
+607517
+607531
+607549
+607573
+607583
+607619
+607627
+607667
+607669
+607681
+607697
+607703
+607721
+607723
+607727
+607741
+607769
+607813
+607819
+607823
+607837
+607843
+607861
+607883
+607889
+607909
+607921
+607931
+607933
+607939
+607951
+607961
+607967
+607991
+607993
+608011
+608029
+608033
+608087
+608089
+608099
+608117
+608123
+608129
+608131
+608147
+608161
+608177
+608191
+608207
+608213
+608269
+608273
+608297
+608299
+608303
+608339
+608347
+608357
+608359
+608369
+608371
+608383
+608389
+608393
+608401
+608411
+608423
+608429
+608431
+608459
+608471
+608483
+608497
+608519
+608521
+608527
+608581
+608591
+608593
+608609
+608611
+608633
+608653
+608659
+608669
+608677
+608693
+608701
+608737
+608743
+608749
+608759
+608767
+608789
+608819
+608831
+608843
+608851
+608857
+608863
+608873
+608887
+608897
+608899
+608903
+608941
+608947
+608953
+608977
+608987
+608989
+608999
+609043
+609047
+609067
+609071
+609079
+609101
+609107
+609113
+609143
+609149
+609163
+609173
+609179
+609199
+609209
+609221
+609227
+609233
+609241
+609253
+609269
+609277
+609283
+609289
+609307
+609313
+609337
+609359
+609361
+609373
+609379
+609391
+609397
+609403
+609407
+609421
+609437
+609443
+609461
+609487
+609503
+609509
+609517
+609527
+609533
+609541
+609571
+609589
+609593
+609599
+609601
+609607
+609613
+609617
+609619
+609641
+609673
+609683
+609701
+609709
+609743
+609751
+609757
+609779
+609781
+609803
+609809
+609821
+609859
+609877
+609887
+609907
+609911
+609913
+609923
+609929
+609979
+609989
+609991
+609997
+610031
+610063
+610081
+610123
+610157
+610163
+610187
+610193
+610199
+610217
+610219
+610229
+610243
+610271
+610279
+610289
+610301
+610327
+610331
+610339
+610391
+610409
+610417
+610429
+610439
+610447
+610457
+610469
+610501
+610523
+610541
+610543
+610553
+610559
+610567
+610579
+610583
+610619
+610633
+610639
+610651
+610661
+610667
+610681
+610699
+610703
+610721
+610733
+610739
+610741
+610763
+610781
+610783
+610787
+610801
+610817
+610823
+610829
+610837
+610843
+610847
+610849
+610867
+610877
+610879
+610891
+610913
+610919
+610921
+610933
+610957
+610969
+610993
+611011
+611027
+611033
+611057
+611069
+611071
+611081
+611101
+611111
+611113
+611131
+611137
+611147
+611189
+611207
+611213
+611257
+611263
+611279
+611293
+611297
+611323
+611333
+611389
+611393
+611411
+611419
+611441
+611449
+611453
+611459
+611467
+611483
+611497
+611531
+611543
+611549
+611551
+611557
+611561
+611587
+611603
+611621
+611641
+611657
+611671
+611693
+611707
+611729
+611753
+611791
+611801
+611803
+611827
+611833
+611837
+611839
+611873
+611879
+611887
+611903
+611921
+611927
+611939
+611951
+611953
+611957
+611969
+611977
+611993
+611999
+612011
+612023
+612037
+612041
+612043
+612049
+612061
+612067
+612071
+612083
+612107
+612109
+612113
+612133
+612137
+612149
+612169
+612173
+612181
+612193
+612217
+612223
+612229
+612259
+612263
+612301
+612307
+612317
+612319
+612331
+612341
+612349
+612371
+612373
+612377
+612383
+612401
+612407
+612439
+612481
+612497
+612511
+612553
+612583
+612589
+612611
+612613
+612637
+612643
+612649
+612671
+612679
+612713
+612719
+612727
+612737
+612751
+612763
+612791
+612797
+612809
+612811
+612817
+612823
+612841
+612847
+612853
+612869
+612877
+612889
+612923
+612929
+612947
+612967
+612971
+612977
+613007
+613009
+613013
+613049
+613061
+613097
+613099
+613141
+613153
+613163
+613169
+613177
+613181
+613189
+613199
+613213
+613219
+613229
+613231
+613243
+613247
+613253
+613267
+613279
+613289
+613297
+613337
+613357
+613363
+613367
+613381
+613421
+613427
+613439
+613441
+613447
+613451
+613463
+613469
+613471
+613493
+613499
+613507
+613523
+613549
+613559
+613573
+613577
+613597
+613607
+613609
+613633
+613637
+613651
+613661
+613667
+613673
+613699
+613733
+613741
+613747
+613759
+613763
+613807
+613813
+613817
+613829
+613841
+613849
+613861
+613883
+613889
+613903
+613957
+613967
+613969
+613981
+613993
+613999
+614041
+614051
+614063
+614071
+614093
+614101
+614113
+614129
+614143
+614147
+614153
+614167
+614177
+614179
+614183
+614219
+614267
+614279
+614291
+614293
+614297
+614321
+614333
+614377
+614387
+614413
+614417
+614437
+614477
+614483
+614503
+614527
+614531
+614543
+614561
+614563
+614569
+614609
+614611
+614617
+614623
+614633
+614639
+614657
+614659
+614671
+614683
+614687
+614693
+614701
+614717
+614729
+614741
+614743
+614749
+614753
+614759
+614773
+614827
+614843
+614849
+614851
+614863
+614881
+614893
+614909
+614917
+614927
+614963
+614981
+614983
+615019
+615031
+615047
+615053
+615067
+615101
+615103
+615107
+615137
+615151
+615161
+615187
+615229
+615233
+615253
+615259
+615269
+615289
+615299
+615313
+615337
+615341
+615343
+615367
+615379
+615389
+615401
+615403
+615413
+615427
+615431
+615437
+615449
+615473
+615479
+615491
+615493
+615497
+615509
+615521
+615539
+615557
+615577
+615599
+615607
+615617
+615623
+615661
+615677
+615679
+615709
+615721
+615731
+615739
+615743
+615749
+615751
+615761
+615767
+615773
+615793
+615799
+615821
+615827
+615829
+615833
+615869
+615883
+615887
+615907
+615919
+615941
+615949
+615971
+615997
+616003
+616027
+616051
+616069
+616073
+616079
+616103
+616111
+616117
+616129
+616139
+616141
+616153
+616157
+616169
+616171
+616181
+616207
+616211
+616219
+616223
+616229
+616243
+616261
+616277
+616289
+616307
+616313
+616321
+616327
+616361
+616367
+616387
+616391
+616393
+616409
+616411
+616433
+616439
+616459
+616463
+616481
+616489
+616501
+616507
+616513
+616519
+616523
+616529
+616537
+616547
+616579
+616589
+616597
+616639
+616643
+616669
+616673
+616703
+616717
+616723
+616729
+616741
+616757
+616769
+616783
+616787
+616789
+616793
+616799
+616829
+616841
+616843
+616849
+616871
+616877
+616897
+616909
+616933
+616943
+616951
+616961
+616991
+616997
+616999
+617011
+617027
+617039
+617051
+617053
+617059
+617077
+617087
+617107
+617119
+617129
+617131
+617147
+617153
+617161
+617189
+617191
+617231
+617233
+617237
+617249
+617257
+617269
+617273
+617293
+617311
+617327
+617333
+617339
+617341
+617359
+617363
+617369
+617387
+617401
+617411
+617429
+617447
+617453
+617467
+617471
+617473
+617479
+617509
+617521
+617531
+617537
+617579
+617587
+617647
+617651
+617657
+617677
+617681
+617689
+617693
+617699
+617707
+617717
+617719
+617723
+617731
+617759
+617761
+617767
+617777
+617791
+617801
+617809
+617819
+617843
+617857
+617873
+617879
+617887
+617917
+617951
+617959
+617963
+617971
+617983
+618029
+618031
+618041
+618049
+618053
+618083
+618119
+618131
+618161
+618173
+618199
+618227
+618229
+618253
+618257
+618269
+618271
+618287
+618301
+618311
+618323
+618329
+618337
+618347
+618349
+618361
+618377
+618407
+618413
+618421
+618437
+618439
+618463
+618509
+618521
+618547
+618559
+618571
+618577
+618581
+618587
+618589
+618593
+618619
+618637
+618643
+618671
+618679
+618703
+618707
+618719
+618799
+618823
+618833
+618841
+618847
+618857
+618859
+618869
+618883
+618913
+618929
+618941
+618971
+618979
+618991
+618997
+619007
+619009
+619019
+619027
+619033
+619057
+619061
+619067
+619079
+619111
+619117
+619139
+619159
+619169
+619181
+619187
+619189
+619207
+619247
+619253
+619261
+619273
+619277
+619279
+619303
+619309
+619313
+619331
+619363
+619373
+619391
+619397
+619471
+619477
+619511
+619537
+619543
+619561
+619573
+619583
+619589
+619603
+619607
+619613
+619621
+619657
+619669
+619681
+619687
+619693
+619711
+619739
+619741
+619753
+619763
+619771
+619793
+619807
+619811
+619813
+619819
+619831
+619841
+619849
+619867
+619897
+619909
+619921
+619967
+619979
+619981
+619987
+619999
+620003
+620029
+620033
+620051
+620099
+620111
+620117
+620159
+620161
+620171
+620183
+620197
+620201
+620227
+620233
+620237
+620239
+620251
+620261
+620297
+620303
+620311
+620317
+620329
+620351
+620359
+620363
+620377
+620383
+620393
+620401
+620413
+620429
+620437
+620441
+620461
+620467
+620491
+620507
+620519
+620531
+620549
+620561
+620567
+620569
+620579
+620603
+620623
+620639
+620647
+620657
+620663
+620671
+620689
+620693
+620717
+620731
+620743
+620759
+620771
+620773
+620777
+620813
+620821
+620827
+620831
+620849
+620869
+620887
+620909
+620911
+620929
+620933
+620947
+620957
+620981
+620999
+621007
+621013
+621017
+621029
+621031
+621043
+621059
+621083
+621097
+621113
+621133
+621139
+621143
+621217
+621223
+621227
+621239
+621241
+621259
+621289
+621301
+621317
+621337
+621343
+621347
+621353
+621359
+621371
+621389
+621419
+621427
+621431
+621443
+621451
+621461
+621473
+621521
+621527
+621541
+621583
+621611
+621617
+621619
+621629
+621631
+621641
+621671
+621679
+621697
+621701
+621703
+621721
+621739
+621749
+621757
+621769
+621779
+621799
+621821
+621833
+621869
+621871
+621883
+621893
+621913
+621923
+621937
+621941
+621983
+621997
+622009
+622019
+622043
+622049
+622051
+622067
+622073
+622091
+622103
+622109
+622123
+622129
+622133
+622151
+622157
+622159
+622177
+622187
+622189
+622241
+622243
+622247
+622249
+622277
+622301
+622313
+622331
+622333
+622337
+622351
+622367
+622397
+622399
+622423
+622477
+622481
+622483
+622493
+622513
+622519
+622529
+622547
+622549
+622561
+622571
+622577
+622603
+622607
+622613
+622619
+622621
+622637
+622639
+622663
+622669
+622709
+622723
+622729
+622751
+622777
+622781
+622793
+622813
+622849
+622861
+622879
+622889
+622901
+622927
+622943
+622957
+622967
+622987
+622997
+623003
+623009
+623017
+623023
+623041
+623057
+623059
+623071
+623107
+623171
+623209
+623221
+623261
+623263
+623269
+623279
+623281
+623291
+623299
+623303
+623321
+623327
+623341
+623351
+623353
+623383
+623387
+623393
+623401
+623417
+623423
+623431
+623437
+623477
+623521
+623531
+623537
+623563
+623591
+623617
+623621
+623633
+623641
+623653
+623669
+623671
+623677
+623681
+623683
+623699
+623717
+623719
+623723
+623729
+623743
+623759
+623767
+623771
+623803
+623839
+623851
+623867
+623869
+623879
+623881
+623893
+623923
+623929
+623933
+623947
+623957
+623963
+623977
+623983
+623989
+624007
+624031
+624037
+624047
+624049
+624067
+624089
+624097
+624119
+624133
+624139
+624149
+624163
+624191
+624199
+624203
+624209
+624229
+624233
+624241
+624251
+624259
+624271
+624277
+624311
+624313
+624319
+624329
+624331
+624347
+624391
+624401
+624419
+624443
+624451
+624467
+624469
+624479
+624487
+624497
+624509
+624517
+624521
+624539
+624541
+624577
+624593
+624599
+624601
+624607
+624643
+624649
+624667
+624683
+624707
+624709
+624721
+624727
+624731
+624737
+624763
+624769
+624787
+624791
+624797
+624803
+624809
+624829
+624839
+624847
+624851
+624859
+624917
+624961
+624973
+624977
+624983
+624997
+625007
+625033
+625057
+625063
+625087
+625103
+625109
+625111
+625129
+625133
+625169
+625171
+625181
+625187
+625199
+625213
+625231
+625237
+625253
+625267
+625279
+625283
+625307
+625319
+625343
+625351
+625367
+625369
+625397
+625409
+625451
+625477
+625483
+625489
+625507
+625517
+625529
+625543
+625589
+625591
+625609
+625621
+625627
+625631
+625637
+625643
+625657
+625661
+625663
+625697
+625699
+625763
+625777
+625789
+625811
+625819
+625831
+625837
+625861
+625871
+625883
+625909
+625913
+625927
+625939
+625943
+625969
+625979
+625997
+626009
+626011
+626033
+626051
+626063
+626113
+626117
+626147
+626159
+626173
+626177
+626189
+626191
+626201
+626207
+626239
+626251
+626261
+626317
+626323
+626333
+626341
+626347
+626363
+626377
+626389
+626393
+626443
+626477
+626489
+626519
+626533
+626539
+626581
+626597
+626599
+626609
+626611
+626617
+626621
+626623
+626627
+626629
+626663
+626683
+626687
+626693
+626701
+626711
+626713
+626723
+626741
+626749
+626761
+626771
+626783
+626797
+626809
+626833
+626837
+626861
+626887
+626917
+626921
+626929
+626947
+626953
+626959
+626963
+626987
+627017
+627041
+627059
+627071
+627073
+627083
+627089
+627091
+627101
+627119
+627131
+627139
+627163
+627169
+627191
+627197
+627217
+627227
+627251
+627257
+627269
+627271
+627293
+627301
+627329
+627349
+627353
+627377
+627379
+627383
+627391
+627433
+627449
+627479
+627481
+627491
+627511
+627541
+627547
+627559
+627593
+627611
+627617
+627619
+627637
+627643
+627659
+627661
+627667
+627673
+627709
+627721
+627733
+627749
+627773
+627787
+627791
+627797
+627799
+627811
+627841
+627859
+627901
+627911
+627919
+627943
+627947
+627953
+627961
+627973
+628013
+628021
+628037
+628049
+628051
+628057
+628063
+628093
+628097
+628127
+628139
+628171
+628183
+628189
+628193
+628207
+628213
+628217
+628219
+628231
+628261
+628267
+628289
+628301
+628319
+628357
+628363
+628373
+628379
+628391
+628399
+628423
+628427
+628447
+628477
+628487
+628493
+628499
+628547
+628561
+628583
+628591
+628651
+628673
+628679
+628681
+628687
+628699
+628709
+628721
+628753
+628757
+628759
+628781
+628783
+628787
+628799
+628801
+628811
+628819
+628841
+628861
+628877
+628909
+628913
+628921
+628937
+628939
+628973
+628993
+628997
+629003
+629009
+629011
+629023
+629029
+629059
+629081
+629113
+629137
+629143
+629171
+629177
+629203
+629243
+629249
+629263
+629281
+629311
+629339
+629341
+629351
+629371
+629381
+629383
+629401
+629411
+629417
+629429
+629449
+629467
+629483
+629491
+629509
+629513
+629537
+629567
+629569
+629591
+629593
+629609
+629611
+629617
+629623
+629653
+629683
+629687
+629689
+629701
+629711
+629723
+629737
+629743
+629747
+629767
+629773
+629779
+629803
+629807
+629819
+629843
+629857
+629861
+629873
+629891
+629897
+629899
+629903
+629921
+629927
+629929
+629939
+629963
+629977
+629987
+629989
+630017
+630023
+630029
+630043
+630067
+630101
+630107
+630127
+630151
+630163
+630167
+630169
+630181
+630193
+630197
+630229
+630247
+630263
+630281
+630299
+630307
+630319
+630349
+630353
+630391
+630433
+630451
+630467
+630473
+630481
+630493
+630521
+630523
+630529
+630559
+630577
+630583
+630587
+630589
+630593
+630607
+630613
+630659
+630677
+630689
+630701
+630709
+630713
+630719
+630733
+630737
+630797
+630803
+630823
+630827
+630841
+630863
+630871
+630893
+630899
+630901
+630907
+630911
+630919
+630941
+630967
+630997
+631003
+631013
+631039
+631061
+631121
+631133
+631139
+631151
+631153
+631157
+631171
+631181
+631187
+631223
+631229
+631247
+631249
+631259
+631271
+631273
+631291
+631307
+631339
+631357
+631361
+631387
+631391
+631399
+631409
+631429
+631453
+631457
+631459
+631469
+631471
+631483
+631487
+631507
+631513
+631529
+631531
+631537
+631549
+631559
+631573
+631577
+631583
+631597
+631613
+631619
+631643
+631667
+631679
+631681
+631711
+631717
+631723
+631733
+631739
+631751
+631753
+631789
+631817
+631819
+631843
+631847
+631853
+631859
+631861
+631867
+631889
+631901
+631903
+631913
+631927
+631931
+631937
+631979
+631987
+631991
+631993
+632029
+632041
+632053
+632081
+632083
+632087
+632089
+632101
+632117
+632123
+632141
+632147
+632153
+632189
+632209
+632221
+632227
+632231
+632251
+632257
+632267
+632273
+632297
+632299
+632321
+632323
+632327
+632329
+632347
+632351
+632353
+632363
+632371
+632381
+632389
+632393
+632447
+632459
+632473
+632483
+632497
+632501
+632503
+632521
+632557
+632561
+632591
+632609
+632623
+632627
+632629
+632647
+632669
+632677
+632683
+632699
+632713
+632717
+632743
+632747
+632773
+632777
+632813
+632839
+632843
+632851
+632857
+632881
+632897
+632911
+632923
+632939
+632941
+632971
+632977
+632987
+632993
+633001
+633013
+633037
+633053
+633067
+633079
+633091
+633133
+633151
+633161
+633187
+633197
+633209
+633221
+633253
+633257
+633263
+633271
+633287
+633307
+633317
+633337
+633359
+633377
+633379
+633383
+633401
+633407
+633427
+633449
+633461
+633463
+633467
+633469
+633473
+633487
+633497
+633559
+633569
+633571
+633583
+633599
+633613
+633623
+633629
+633649
+633653
+633667
+633739
+633751
+633757
+633767
+633781
+633791
+633793
+633797
+633799
+633803
+633823
+633833
+633877
+633883
+633923
+633931
+633937
+633943
+633953
+633961
+633967
+633991
+634003
+634013
+634031
+634061
+634079
+634091
+634097
+634103
+634141
+634157
+634159
+634169
+634177
+634181
+634187
+634199
+634211
+634223
+634237
+634241
+634247
+634261
+634267
+634273
+634279
+634301
+634307
+634313
+634327
+634331
+634343
+634367
+634373
+634397
+634421
+634441
+634471
+634483
+634493
+634499
+634511
+634519
+634523
+634531
+634541
+634567
+634573
+634577
+634597
+634603
+634609
+634643
+634649
+634651
+634679
+634681
+634687
+634703
+634709
+634717
+634727
+634741
+634747
+634757
+634759
+634793
+634807
+634817
+634841
+634853
+634859
+634861
+634871
+634891
+634901
+634903
+634927
+634937
+634939
+634943
+634969
+634979
+635003
+635021
+635039
+635051
+635057
+635087
+635119
+635147
+635149
+635197
+635203
+635207
+635249
+635251
+635263
+635267
+635279
+635287
+635291
+635293
+635309
+635317
+635333
+635339
+635347
+635351
+635353
+635359
+635363
+635387
+635389
+635413
+635423
+635431
+635441
+635449
+635461
+635471
+635483
+635507
+635519
+635527
+635533
+635563
+635567
+635599
+635603
+635617
+635639
+635653
+635659
+635689
+635707
+635711
+635729
+635731
+635737
+635777
+635801
+635809
+635813
+635821
+635837
+635849
+635867
+635879
+635891
+635893
+635909
+635917
+635923
+635939
+635959
+635969
+635977
+635981
+635983
+635989
+636017
+636023
+636043
+636059
+636061
+636071
+636073
+636107
+636109
+636133
+636137
+636149
+636193
+636211
+636217
+636241
+636247
+636257
+636263
+636277
+636283
+636287
+636301
+636313
+636319
+636331
+636343
+636353
+636359
+636403
+636407
+636409
+636421
+636469
+636473
+636499
+636533
+636539
+636541
+636547
+636553
+636563
+636569
+636613
+636619
+636631
+636653
+636673
+636697
+636719
+636721
+636731
+636739
+636749
+636761
+636763
+636773
+636781
+636809
+636817
+636821
+636829
+636851
+636863
+636877
+636917
+636919
+636931
+636947
+636953
+636967
+636983
+636997
+637001
+637003
+637067
+637073
+637079
+637097
+637129
+637139
+637157
+637163
+637171
+637199
+637201
+637229
+637243
+637271
+637277
+637283
+637291
+637297
+637309
+637319
+637321
+637327
+637337
+637339
+637349
+637369
+637379
+637409
+637421
+637423
+637447
+637459
+637463
+637471
+637489
+637499
+637513
+637519
+637529
+637531
+637543
+637573
+637597
+637601
+637603
+637607
+637627
+637657
+637669
+637691
+637699
+637709
+637711
+637717
+637723
+637727
+637729
+637751
+637771
+637781
+637783
+637787
+637817
+637829
+637831
+637841
+637873
+637883
+637909
+637933
+637937
+637939
+638023
+638047
+638051
+638059
+638063
+638081
+638117
+638123
+638147
+638159
+638161
+638171
+638177
+638179
+638201
+638233
+638263
+638269
+638303
+638317
+638327
+638347
+638359
+638371
+638423
+638431
+638437
+638453
+638459
+638467
+638489
+638501
+638527
+638567
+638581
+638587
+638621
+638629
+638633
+638663
+638669
+638689
+638699
+638717
+638719
+638767
+638801
+638819
+638839
+638857
+638861
+638893
+638923
+638933
+638959
+638971
+638977
+638993
+638999
+639007
+639011
+639043
+639049
+639053
+639083
+639091
+639137
+639143
+639151
+639157
+639167
+639169
+639181
+639211
+639253
+639257
+639259
+639263
+639269
+639299
+639307
+639311
+639329
+639337
+639361
+639371
+639391
+639433
+639439
+639451
+639487
+639491
+639493
+639511
+639517
+639533
+639547
+639563
+639571
+639577
+639589
+639599
+639601
+639631
+639637
+639647
+639671
+639677
+639679
+639689
+639697
+639701
+639703
+639713
+639719
+639731
+639739
+639757
+639833
+639839
+639851
+639853
+639857
+639907
+639911
+639937
+639941
+639949
+639959
+639983
+639997
+640007
+640009
+640019
+640027
+640039
+640043
+640049
+640061
+640069
+640099
+640109
+640121
+640127
+640139
+640151
+640153
+640163
+640193
+640219
+640223
+640229
+640231
+640247
+640249
+640259
+640261
+640267
+640279
+640303
+640307
+640333
+640363
+640369
+640411
+640421
+640457
+640463
+640477
+640483
+640499
+640529
+640531
+640579
+640583
+640589
+640613
+640621
+640631
+640649
+640663
+640667
+640669
+640687
+640691
+640727
+640733
+640741
+640771
+640777
+640793
+640837
+640847
+640853
+640859
+640873
+640891
+640901
+640907
+640919
+640933
+640943
+640949
+640957
+640963
+640967
+640973
+640993
+641051
+641057
+641077
+641083
+641089
+641093
+641101
+641129
+641131
+641143
+641167
+641197
+641203
+641213
+641227
+641239
+641261
+641279
+641287
+641299
+641317
+641327
+641371
+641387
+641411
+641413
+641419
+641437
+641441
+641453
+641467
+641471
+641479
+641491
+641513
+641519
+641521
+641549
+641551
+641579
+641581
+641623
+641633
+641639
+641681
+641701
+641713
+641747
+641749
+641761
+641789
+641791
+641803
+641813
+641819
+641821
+641827
+641833
+641843
+641863
+641867
+641873
+641881
+641891
+641897
+641909
+641923
+641929
+641959
+641969
+641981
+642011
+642013
+642049
+642071
+642077
+642079
+642113
+642121
+642133
+642149
+642151
+642157
+642163
+642197
+642199
+642211
+642217
+642223
+642233
+642241
+642247
+642253
+642281
+642359
+642361
+642373
+642403
+642407
+642419
+642427
+642457
+642487
+642517
+642527
+642529
+642533
+642547
+642557
+642563
+642581
+642613
+642623
+642673
+642683
+642701
+642737
+642739
+642769
+642779
+642791
+642797
+642799
+642809
+642833
+642853
+642869
+642871
+642877
+642881
+642899
+642907
+642931
+642937
+642947
+642953
+642973
+642977
+642997
+643009
+643021
+643031
+643039
+643043
+643051
+643061
+643073
+643081
+643087
+643099
+643121
+643129
+643183
+643187
+643199
+643213
+643217
+643231
+643243
+643273
+643301
+643303
+643369
+643373
+643403
+643421
+643429
+643439
+643453
+643457
+643463
+643469
+643493
+643507
+643523
+643547
+643553
+643567
+643583
+643589
+643619
+643633
+643639
+643649
+643651
+643661
+643681
+643691
+643693
+643697
+643703
+643723
+643729
+643751
+643781
+643847
+643849
+643859
+643873
+643879
+643883
+643889
+643919
+643927
+643949
+643957
+643961
+643969
+643991
+644009
+644029
+644047
+644051
+644053
+644057
+644089
+644101
+644107
+644117
+644123
+644129
+644131
+644141
+644143
+644153
+644159
+644173
+644191
+644197
+644201
+644227
+644239
+644257
+644261
+644291
+644297
+644327
+644341
+644353
+644359
+644363
+644377
+644381
+644383
+644401
+644411
+644431
+644443
+644447
+644489
+644491
+644507
+644513
+644519
+644531
+644549
+644557
+644563
+644569
+644593
+644597
+644599
+644617
+644629
+644647
+644653
+644669
+644671
+644687
+644701
+644717
+644729
+644731
+644747
+644753
+644767
+644783
+644789
+644797
+644801
+644837
+644843
+644857
+644863
+644867
+644869
+644881
+644899
+644909
+644911
+644923
+644933
+644951
+644977
+644999
+645011
+645013
+645019
+645023
+645037
+645041
+645049
+645067
+645077
+645083
+645091
+645097
+645131
+645137
+645149
+645179
+645187
+645233
+645257
+645313
+645329
+645347
+645353
+645367
+645383
+645397
+645409
+645419
+645431
+645433
+645443
+645467
+645481
+645493
+645497
+645499
+645503
+645521
+645527
+645529
+645571
+645577
+645581
+645583
+645599
+645611
+645629
+645641
+645647
+645649
+645661
+645683
+645691
+645703
+645713
+645727
+645737
+645739
+645751
+645763
+645787
+645803
+645833
+645839
+645851
+645857
+645877
+645889
+645893
+645901
+645907
+645937
+645941
+645973
+645979
+646003
+646013
+646027
+646039
+646067
+646073
+646099
+646103
+646147
+646157
+646159
+646169
+646181
+646183
+646189
+646193
+646199
+646237
+646253
+646259
+646267
+646271
+646273
+646291
+646301
+646307
+646309
+646339
+646379
+646397
+646403
+646411
+646421
+646423
+646433
+646453
+646519
+646523
+646537
+646543
+646549
+646571
+646573
+646577
+646609
+646619
+646631
+646637
+646643
+646669
+646687
+646721
+646757
+646771
+646781
+646823
+646831
+646837
+646843
+646859
+646873
+646879
+646883
+646889
+646897
+646909
+646913
+646927
+646937
+646957
+646979
+646981
+646991
+646993
+647011
+647033
+647039
+647047
+647057
+647069
+647081
+647099
+647111
+647113
+647117
+647131
+647147
+647161
+647189
+647201
+647209
+647219
+647261
+647263
+647293
+647303
+647321
+647327
+647333
+647341
+647357
+647359
+647363
+647371
+647399
+647401
+647417
+647429
+647441
+647453
+647477
+647489
+647503
+647509
+647527
+647531
+647551
+647557
+647579
+647587
+647593
+647609
+647617
+647627
+647641
+647651
+647659
+647663
+647687
+647693
+647719
+647723
+647741
+647743
+647747
+647753
+647771
+647783
+647789
+647809
+647821
+647837
+647839
+647851
+647861
+647891
+647893
+647909
+647917
+647951
+647953
+647963
+647987
+648007
+648019
+648029
+648041
+648047
+648059
+648061
+648073
+648079
+648097
+648101
+648107
+648119
+648133
+648173
+648181
+648191
+648199
+648211
+648217
+648229
+648239
+648257
+648259
+648269
+648283
+648289
+648293
+648317
+648331
+648341
+648343
+648371
+648377
+648379
+648383
+648391
+648433
+648437
+648449
+648481
+648509
+648563
+648607
+648617
+648619
+648629
+648631
+648649
+648653
+648671
+648677
+648689
+648709
+648719
+648731
+648763
+648779
+648803
+648841
+648859
+648863
+648871
+648887
+648889
+648911
+648917
+648931
+648937
+648953
+648961
+648971
+648997
+649001
+649007
+649039
+649063
+649069
+649073
+649079
+649081
+649087
+649093
+649123
+649141
+649147
+649151
+649157
+649183
+649217
+649261
+649273
+649277
+649279
+649283
+649291
+649307
+649321
+649361
+649379
+649381
+649403
+649421
+649423
+649427
+649457
+649469
+649471
+649483
+649487
+649499
+649501
+649507
+649511
+649529
+649541
+649559
+649567
+649573
+649577
+649613
+649619
+649631
+649633
+649639
+649643
+649651
+649657
+649661
+649697
+649709
+649717
+649739
+649751
+649769
+649771
+649777
+649783
+649787
+649793
+649799
+649801
+649813
+649829
+649843
+649849
+649867
+649871
+649877
+649879
+649897
+649907
+649921
+649937
+649969
+649981
+649991
+650011
+650017
+650059
+650071
+650081
+650099
+650107
+650179
+650183
+650189
+650213
+650227
+650261
+650269
+650281
+650291
+650317
+650327
+650329
+650347
+650359
+650387
+650401
+650413
+650449
+650477
+650479
+650483
+650519
+650537
+650543
+650549
+650563
+650567
+650581
+650591
+650599
+650609
+650623
+650627
+650669
+650701
+650759
+650761
+650779
+650813
+650821
+650827
+650833
+650851
+650861
+650863
+650869
+650873
+650911
+650917
+650927
+650933
+650953
+650971
+650987
+651017
+651019
+651029
+651043
+651067
+651071
+651097
+651103
+651109
+651127
+651139
+651143
+651169
+651179
+651181
+651191
+651193
+651221
+651223
+651239
+651247
+651251
+651257
+651271
+651281
+651289
+651293
+651323
+651331
+651347
+651361
+651397
+651401
+651437
+651439
+651461
+651473
+651481
+651487
+651503
+651509
+651517
+651587
+651617
+651641
+651647
+651649
+651667
+651683
+651689
+651697
+651727
+651731
+651733
+651767
+651769
+651793
+651803
+651809
+651811
+651821
+651839
+651841
+651853
+651857
+651863
+651869
+651877
+651881
+651901
+651913
+651943
+651971
+651997
+652019
+652033
+652039
+652063
+652079
+652081
+652087
+652117
+652121
+652153
+652189
+652207
+652217
+652229
+652237
+652241
+652243
+652261
+652279
+652283
+652291
+652319
+652321
+652331
+652339
+652343
+652357
+652361
+652369
+652373
+652381
+652411
+652417
+652429
+652447
+652451
+652453
+652493
+652499
+652507
+652541
+652543
+652549
+652559
+652567
+652573
+652577
+652591
+652601
+652607
+652609
+652621
+652627
+652651
+652657
+652667
+652699
+652723
+652727
+652733
+652739
+652741
+652747
+652753
+652759
+652787
+652811
+652831
+652837
+652849
+652853
+652871
+652903
+652909
+652913
+652921
+652931
+652933
+652937
+652943
+652957
+652969
+652991
+652997
+652999
+653033
+653057
+653083
+653111
+653113
+653117
+653143
+653153
+653197
+653203
+653207
+653209
+653243
+653267
+653273
+653281
+653311
+653321
+653339
+653357
+653363
+653431
+653461
+653473
+653491
+653501
+653503
+653507
+653519
+653537
+653539
+653561
+653563
+653579
+653593
+653617
+653621
+653623
+653641
+653647
+653651
+653659
+653687
+653693
+653707
+653711
+653713
+653743
+653749
+653761
+653777
+653789
+653797
+653801
+653819
+653831
+653879
+653881
+653893
+653899
+653903
+653927
+653929
+653941
+653951
+653963
+653969
+653977
+653993
+654001
+654011
+654019
+654023
+654029
+654047
+654053
+654067
+654089
+654107
+654127
+654149
+654161
+654163
+654167
+654169
+654187
+654191
+654209
+654221
+654223
+654229
+654233
+654257
+654293
+654301
+654307
+654323
+654343
+654349
+654371
+654397
+654413
+654421
+654427
+654439
+654491
+654499
+654509
+654527
+654529
+654539
+654541
+654553
+654571
+654587
+654593
+654601
+654611
+654613
+654623
+654629
+654671
+654679
+654697
+654701
+654727
+654739
+654743
+654749
+654767
+654779
+654781
+654799
+654803
+654817
+654821
+654827
+654839
+654853
+654877
+654889
+654917
+654923
+654931
+654943
+654967
+654991
+655001
+655003
+655013
+655021
+655033
+655037
+655043
+655069
+655087
+655103
+655111
+655121
+655157
+655181
+655211
+655219
+655223
+655229
+655241
+655243
+655261
+655267
+655273
+655283
+655289
+655301
+655331
+655337
+655351
+655357
+655373
+655379
+655387
+655399
+655439
+655453
+655471
+655489
+655507
+655511
+655517
+655531
+655541
+655547
+655559
+655561
+655579
+655583
+655597
+655601
+655637
+655643
+655649
+655651
+655657
+655687
+655693
+655717
+655723
+655727
+655757
+655807
+655847
+655849
+655859
+655883
+655901
+655909
+655913
+655927
+655943
+655961
+655987
+656023
+656039
+656063
+656077
+656113
+656119
+656129
+656141
+656147
+656153
+656171
+656221
+656237
+656263
+656267
+656273
+656291
+656297
+656303
+656311
+656321
+656323
+656329
+656333
+656347
+656371
+656377
+656389
+656407
+656423
+656429
+656459
+656471
+656479
+656483
+656519
+656527
+656561
+656587
+656597
+656599
+656603
+656609
+656651
+656657
+656671
+656681
+656683
+656687
+656701
+656707
+656737
+656741
+656749
+656753
+656771
+656783
+656791
+656809
+656819
+656833
+656839
+656891
+656917
+656923
+656939
+656951
+656959
+656977
+656989
+656993
+657017
+657029
+657047
+657049
+657061
+657071
+657079
+657089
+657091
+657113
+657121
+657127
+657131
+657187
+657193
+657197
+657233
+657257
+657269
+657281
+657289
+657299
+657311
+657313
+657323
+657347
+657361
+657383
+657403
+657413
+657431
+657439
+657451
+657469
+657473
+657491
+657493
+657497
+657499
+657523
+657529
+657539
+657557
+657581
+657583
+657589
+657607
+657617
+657649
+657653
+657659
+657661
+657703
+657707
+657719
+657743
+657779
+657793
+657809
+657827
+657841
+657863
+657893
+657911
+657929
+657931
+657947
+657959
+657973
+657983
+658001
+658043
+658051
+658057
+658069
+658079
+658111
+658117
+658123
+658127
+658139
+658153
+658159
+658169
+658187
+658199
+658211
+658219
+658247
+658253
+658261
+658277
+658279
+658303
+658309
+658319
+658321
+658327
+658349
+658351
+658367
+658379
+658391
+658403
+658417
+658433
+658447
+658453
+658477
+658487
+658507
+658547
+658549
+658573
+658579
+658589
+658591
+658601
+658607
+658613
+658633
+658639
+658643
+658649
+658663
+658681
+658703
+658751
+658753
+658783
+658807
+658817
+658831
+658837
+658841
+658871
+658873
+658883
+658897
+658907
+658913
+658919
+658943
+658961
+658963
+658969
+658979
+658991
+658997
+659011
+659023
+659047
+659059
+659063
+659069
+659077
+659101
+659137
+659159
+659171
+659173
+659177
+659189
+659221
+659231
+659237
+659251
+659279
+659299
+659317
+659327
+659333
+659353
+659371
+659419
+659423
+659437
+659453
+659467
+659473
+659497
+659501
+659513
+659521
+659531
+659539
+659563
+659569
+659591
+659597
+659609
+659611
+659621
+659629
+659639
+659653
+659657
+659669
+659671
+659689
+659693
+659713
+659723
+659741
+659759
+659761
+659783
+659819
+659831
+659843
+659849
+659863
+659873
+659881
+659899
+659917
+659941
+659947
+659951
+659963
+659983
+659999
+660001
+660013
+660029
+660047
+660053
+660061
+660067
+660071
+660073
+660097
+660103
+660119
+660131
+660137
+660157
+660167
+660181
+660197
+660199
+660217
+660227
+660241
+660251
+660271
+660277
+660281
+660299
+660329
+660337
+660347
+660349
+660367
+660377
+660379
+660391
+660403
+660409
+660449
+660493
+660503
+660509
+660521
+660529
+660547
+660557
+660559
+660563
+660589
+660593
+660599
+660601
+660607
+660617
+660619
+660643
+660659
+660661
+660683
+660719
+660727
+660731
+660733
+660757
+660769
+660787
+660791
+660799
+660809
+660811
+660817
+660833
+660851
+660853
+660887
+660893
+660899
+660901
+660917
+660923
+660941
+660949
+660973
+660983
+661009
+661019
+661027
+661049
+661061
+661091
+661093
+661097
+661099
+661103
+661109
+661117
+661121
+661139
+661183
+661187
+661189
+661201
+661217
+661231
+661237
+661253
+661259
+661267
+661321
+661327
+661343
+661361
+661373
+661393
+661417
+661421
+661439
+661459
+661477
+661481
+661483
+661513
+661517
+661541
+661547
+661553
+661603
+661607
+661613
+661621
+661663
+661673
+661679
+661697
+661721
+661741
+661769
+661777
+661823
+661849
+661873
+661877
+661879
+661883
+661889
+661897
+661909
+661931
+661939
+661949
+661951
+661961
+661987
+661993
+662003
+662021
+662029
+662047
+662059
+662063
+662083
+662107
+662111
+662141
+662143
+662149
+662177
+662203
+662227
+662231
+662251
+662261
+662267
+662281
+662287
+662309
+662323
+662327
+662339
+662351
+662353
+662357
+662369
+662401
+662407
+662443
+662449
+662477
+662483
+662491
+662513
+662527
+662531
+662537
+662539
+662551
+662567
+662591
+662617
+662639
+662647
+662657
+662671
+662681
+662689
+662693
+662713
+662719
+662743
+662771
+662773
+662789
+662797
+662819
+662833
+662839
+662843
+662867
+662897
+662899
+662917
+662939
+662941
+662947
+662951
+662953
+662957
+662999
+663001
+663007
+663031
+663037
+663049
+663053
+663071
+663097
+663127
+663149
+663161
+663163
+663167
+663191
+663203
+663209
+663239
+663241
+663263
+663269
+663281
+663283
+663301
+663319
+663331
+663349
+663359
+663371
+663407
+663409
+663437
+663463
+663517
+663529
+663539
+663541
+663547
+663557
+663563
+663569
+663571
+663581
+663583
+663587
+663589
+663599
+663601
+663631
+663653
+663659
+663661
+663683
+663709
+663713
+663737
+663763
+663787
+663797
+663821
+663823
+663827
+663853
+663857
+663869
+663881
+663893
+663907
+663937
+663959
+663961
+663967
+663973
+663977
+663979
+663983
+663991
+663997
+664009
+664019
+664043
+664061
+664067
+664091
+664099
+664109
+664117
+664121
+664123
+664133
+664141
+664151
+664177
+664193
+664199
+664211
+664243
+664253
+664271
+664273
+664289
+664319
+664331
+664357
+664369
+664379
+664381
+664403
+664421
+664427
+664441
+664459
+664471
+664507
+664511
+664529
+664537
+664549
+664561
+664571
+664579
+664583
+664589
+664597
+664603
+664613
+664619
+664621
+664633
+664661
+664663
+664667
+664669
+664679
+664687
+664691
+664693
+664711
+664739
+664757
+664771
+664777
+664789
+664793
+664799
+664843
+664847
+664849
+664879
+664891
+664933
+664949
+664967
+664973
+664997
+665011
+665017
+665029
+665039
+665047
+665051
+665053
+665069
+665089
+665111
+665113
+665117
+665123
+665131
+665141
+665153
+665177
+665179
+665201
+665207
+665213
+665221
+665233
+665239
+665251
+665267
+665279
+665293
+665299
+665303
+665311
+665351
+665359
+665369
+665381
+665387
+665419
+665429
+665447
+665479
+665501
+665503
+665507
+665527
+665549
+665557
+665563
+665569
+665573
+665591
+665603
+665617
+665629
+665633
+665659
+665677
+665713
+665719
+665723
+665747
+665761
+665773
+665783
+665789
+665801
+665803
+665813
+665843
+665857
+665897
+665921
+665923
+665947
+665953
+665981
+665983
+665993
+666013
+666019
+666023
+666031
+666041
+666067
+666073
+666079
+666089
+666091
+666109
+666119
+666139
+666143
+666167
+666173
+666187
+666191
+666203
+666229
+666233
+666269
+666277
+666301
+666329
+666353
+666403
+666427
+666431
+666433
+666437
+666439
+666461
+666467
+666493
+666511
+666527
+666529
+666541
+666557
+666559
+666599
+666607
+666637
+666643
+666647
+666649
+666667
+666671
+666683
+666697
+666707
+666727
+666733
+666737
+666749
+666751
+666769
+666773
+666811
+666821
+666823
+666829
+666857
+666871
+666889
+666901
+666929
+666937
+666959
+666979
+666983
+666989
+667013
+667019
+667021
+667081
+667091
+667103
+667123
+667127
+667129
+667141
+667171
+667181
+667211
+667229
+667241
+667243
+667273
+667283
+667309
+667321
+667333
+667351
+667361
+667363
+667367
+667379
+667417
+667421
+667423
+667427
+667441
+667463
+667477
+667487
+667501
+667507
+667519
+667531
+667547
+667549
+667553
+667559
+667561
+667577
+667631
+667643
+667649
+667657
+667673
+667687
+667691
+667697
+667699
+667727
+667741
+667753
+667769
+667781
+667801
+667817
+667819
+667829
+667837
+667859
+667861
+667867
+667883
+667903
+667921
+667949
+667963
+667987
+667991
+667999
+668009
+668029
+668033
+668047
+668051
+668069
+668089
+668093
+668111
+668141
+668153
+668159
+668179
+668201
+668203
+668209
+668221
+668243
+668273
+668303
+668347
+668407
+668417
+668471
+668509
+668513
+668527
+668531
+668533
+668539
+668543
+668567
+668579
+668581
+668599
+668609
+668611
+668617
+668623
+668671
+668677
+668687
+668699
+668713
+668719
+668737
+668741
+668747
+668761
+668791
+668803
+668813
+668821
+668851
+668867
+668869
+668873
+668879
+668903
+668929
+668939
+668947
+668959
+668963
+668989
+668999
+669023
+669029
+669049
+669077
+669089
+669091
+669107
+669113
+669121
+669127
+669133
+669167
+669173
+669181
+669241
+669247
+669271
+669283
+669287
+669289
+669301
+669311
+669329
+669359
+669371
+669377
+669379
+669391
+669401
+669413
+669419
+669433
+669437
+669451
+669463
+669479
+669481
+669527
+669551
+669577
+669607
+669611
+669637
+669649
+669659
+669661
+669667
+669673
+669677
+669679
+669689
+669701
+669707
+669733
+669763
+669787
+669791
+669839
+669847
+669853
+669857
+669859
+669863
+669869
+669887
+669901
+669913
+669923
+669931
+669937
+669943
+669947
+669971
+669989
+670001
+670031
+670037
+670039
+670049
+670051
+670097
+670099
+670129
+670139
+670147
+670177
+670193
+670199
+670211
+670217
+670223
+670231
+670237
+670249
+670261
+670279
+670297
+670303
+670321
+670333
+670343
+670349
+670363
+670379
+670399
+670409
+670447
+670457
+670471
+670487
+670489
+670493
+670507
+670511
+670517
+670541
+670543
+670559
+670577
+670583
+670597
+670613
+670619
+670627
+670639
+670669
+670673
+670693
+670711
+670727
+670729
+670739
+670763
+670777
+670781
+670811
+670823
+670849
+670853
+670867
+670877
+670897
+670903
+670919
+670931
+670951
+670963
+670987
+670991
+671003
+671017
+671029
+671039
+671059
+671063
+671081
+671087
+671093
+671123
+671131
+671141
+671159
+671161
+671189
+671201
+671219
+671233
+671249
+671257
+671261
+671269
+671287
+671299
+671303
+671323
+671339
+671353
+671357
+671369
+671383
+671401
+671417
+671431
+671443
+671467
+671471
+671477
+671501
+671519
+671533
+671537
+671557
+671581
+671591
+671603
+671609
+671633
+671647
+671651
+671681
+671701
+671717
+671729
+671743
+671753
+671777
+671779
+671791
+671831
+671837
+671851
+671887
+671893
+671903
+671911
+671917
+671921
+671933
+671939
+671941
+671947
+671969
+671971
+671981
+671999
+672019
+672029
+672041
+672043
+672059
+672073
+672079
+672097
+672103
+672107
+672127
+672131
+672137
+672143
+672151
+672167
+672169
+672181
+672193
+672209
+672223
+672227
+672229
+672251
+672271
+672283
+672289
+672293
+672311
+672317
+672323
+672341
+672349
+672377
+672379
+672439
+672443
+672473
+672493
+672499
+672521
+672557
+672577
+672587
+672593
+672629
+672641
+672643
+672653
+672667
+672703
+672743
+672757
+672767
+672779
+672781
+672787
+672799
+672803
+672811
+672817
+672823
+672827
+672863
+672869
+672871
+672883
+672901
+672913
+672937
+672943
+672949
+672953
+672967
+672977
+672983
+673019
+673039
+673063
+673069
+673073
+673091
+673093
+673109
+673111
+673117
+673121
+673129
+673157
+673193
+673199
+673201
+673207
+673223
+673241
+673247
+673271
+673273
+673291
+673297
+673313
+673327
+673339
+673349
+673381
+673391
+673397
+673399
+673403
+673411
+673427
+673429
+673441
+673447
+673451
+673457
+673459
+673469
+673487
+673499
+673513
+673529
+673549
+673553
+673567
+673573
+673579
+673609
+673613
+673619
+673637
+673639
+673643
+673649
+673667
+673669
+673747
+673769
+673781
+673787
+673793
+673801
+673811
+673817
+673837
+673879
+673891
+673921
+673943
+673951
+673961
+673979
+673991
+674017
+674057
+674059
+674071
+674083
+674099
+674117
+674123
+674131
+674159
+674161
+674173
+674183
+674189
+674227
+674231
+674239
+674249
+674263
+674269
+674273
+674299
+674321
+674347
+674357
+674363
+674371
+674393
+674419
+674431
+674449
+674461
+674483
+674501
+674533
+674537
+674551
+674563
+674603
+674647
+674669
+674677
+674683
+674693
+674699
+674701
+674711
+674717
+674719
+674731
+674741
+674749
+674759
+674761
+674767
+674771
+674789
+674813
+674827
+674831
+674833
+674837
+674851
+674857
+674867
+674879
+674903
+674929
+674941
+674953
+674957
+674977
+674987
+675029
+675067
+675071
+675079
+675083
+675097
+675109
+675113
+675131
+675133
+675151
+675161
+675163
+675173
+675179
+675187
+675197
+675221
+675239
+675247
+675251
+675253
+675263
+675271
+675299
+675313
+675319
+675341
+675347
+675391
+675407
+675413
+675419
+675449
+675457
+675463
+675481
+675511
+675539
+675541
+675551
+675553
+675559
+675569
+675581
+675593
+675601
+675607
+675611
+675617
+675629
+675643
+675713
+675739
+675743
+675751
+675781
+675797
+675817
+675823
+675827
+675839
+675841
+675859
+675863
+675877
+675881
+675889
+675923
+675929
+675931
+675959
+675973
+675977
+675979
+676007
+676009
+676031
+676037
+676043
+676051
+676057
+676061
+676069
+676099
+676103
+676111
+676129
+676147
+676171
+676211
+676217
+676219
+676241
+676253
+676259
+676279
+676289
+676297
+676337
+676339
+676349
+676363
+676373
+676387
+676391
+676409
+676411
+676421
+676427
+676463
+676469
+676493
+676523
+676573
+676589
+676597
+676601
+676649
+676661
+676679
+676703
+676717
+676721
+676727
+676733
+676747
+676751
+676763
+676771
+676807
+676829
+676859
+676861
+676883
+676891
+676903
+676909
+676919
+676927
+676931
+676937
+676943
+676961
+676967
+676979
+676981
+676987
+676993
+677011
+677021
+677029
+677041
+677057
+677077
+677081
+677107
+677111
+677113
+677119
+677147
+677167
+677177
+677213
+677227
+677231
+677233
+677239
+677309
+677311
+677321
+677323
+677333
+677357
+677371
+677387
+677423
+677441
+677447
+677459
+677461
+677471
+677473
+677531
+677533
+677539
+677543
+677561
+677563
+677587
+677627
+677639
+677647
+677657
+677681
+677683
+677687
+677717
+677737
+677767
+677779
+677783
+677791
+677813
+677827
+677857
+677891
+677927
+677947
+677953
+677959
+677983
+678023
+678037
+678047
+678061
+678077
+678101
+678103
+678133
+678157
+678169
+678179
+678191
+678199
+678203
+678211
+678217
+678221
+678229
+678253
+678289
+678299
+678329
+678341
+678343
+678367
+678371
+678383
+678401
+678407
+678409
+678413
+678421
+678437
+678451
+678463
+678479
+678481
+678493
+678499
+678533
+678541
+678553
+678563
+678577
+678581
+678593
+678599
+678607
+678611
+678631
+678637
+678641
+678647
+678649
+678653
+678659
+678719
+678721
+678731
+678739
+678749
+678757
+678761
+678763
+678767
+678773
+678779
+678809
+678823
+678829
+678833
+678859
+678871
+678883
+678901
+678907
+678941
+678943
+678949
+678959
+678971
+678989
+679033
+679037
+679039
+679051
+679067
+679087
+679111
+679123
+679127
+679153
+679157
+679169
+679171
+679183
+679207
+679219
+679223
+679229
+679249
+679277
+679279
+679297
+679309
+679319
+679333
+679361
+679363
+679369
+679373
+679381
+679403
+679409
+679417
+679423
+679433
+679451
+679463
+679487
+679501
+679517
+679519
+679531
+679537
+679561
+679597
+679603
+679607
+679633
+679639
+679669
+679681
+679691
+679699
+679709
+679733
+679741
+679747
+679751
+679753
+679781
+679793
+679807
+679823
+679829
+679837
+679843
+679859
+679867
+679879
+679883
+679891
+679897
+679907
+679909
+679919
+679933
+679951
+679957
+679961
+679969
+679981
+679993
+679999
+680003
+680027
+680039
+680059
+680077
+680081
+680083
+680107
+680123
+680129
+680159
+680161
+680177
+680189
+680203
+680209
+680213
+680237
+680249
+680263
+680291
+680293
+680297
+680299
+680321
+680327
+680341
+680347
+680353
+680377
+680387
+680399
+680401
+680411
+680417
+680431
+680441
+680443
+680453
+680489
+680503
+680507
+680509
+680531
+680539
+680567
+680569
+680587
+680597
+680611
+680623
+680633
+680651
+680657
+680681
+680707
+680749
+680759
+680767
+680783
+680803
+680809
+680831
+680857
+680861
+680873
+680879
+680881
+680917
+680929
+680959
+680971
+680987
+680989
+680993
+681001
+681011
+681019
+681041
+681047
+681049
+681061
+681067
+681089
+681091
+681113
+681127
+681137
+681151
+681167
+681179
+681221
+681229
+681251
+681253
+681257
+681259
+681271
+681293
+681311
+681337
+681341
+681361
+681367
+681371
+681403
+681407
+681409
+681419
+681427
+681449
+681451
+681481
+681487
+681493
+681497
+681521
+681523
+681539
+681557
+681563
+681589
+681607
+681613
+681623
+681631
+681647
+681673
+681677
+681689
+681719
+681727
+681731
+681763
+681773
+681781
+681787
+681809
+681823
+681833
+681839
+681841
+681883
+681899
+681913
+681931
+681943
+681949
+681971
+681977
+681979
+681983
+681997
+682001
+682009
+682037
+682049
+682063
+682069
+682079
+682141
+682147
+682151
+682153
+682183
+682207
+682219
+682229
+682237
+682247
+682259
+682277
+682289
+682291
+682303
+682307
+682321
+682327
+682333
+682337
+682361
+682373
+682411
+682417
+682421
+682427
+682439
+682447
+682463
+682471
+682483
+682489
+682511
+682519
+682531
+682547
+682597
+682607
+682637
+682657
+682673
+682679
+682697
+682699
+682723
+682729
+682733
+682739
+682751
+682763
+682777
+682789
+682811
+682819
+682901
+682933
+682943
+682951
+682967
+683003
+683021
+683041
+683047
+683071
+683083
+683087
+683119
+683129
+683143
+683149
+683159
+683201
+683231
+683251
+683257
+683273
+683299
+683303
+683317
+683323
+683341
+683351
+683357
+683377
+683381
+683401
+683407
+683437
+683447
+683453
+683461
+683471
+683477
+683479
+683483
+683489
+683503
+683513
+683567
+683591
+683597
+683603
+683651
+683653
+683681
+683687
+683693
+683699
+683701
+683713
+683719
+683731
+683737
+683747
+683759
+683777
+683783
+683789
+683807
+683819
+683821
+683831
+683833
+683843
+683857
+683861
+683863
+683873
+683887
+683899
+683909
+683911
+683923
+683933
+683939
+683957
+683983
+684007
+684017
+684037
+684053
+684091
+684109
+684113
+684119
+684121
+684127
+684157
+684163
+684191
+684217
+684221
+684239
+684269
+684287
+684289
+684293
+684311
+684329
+684337
+684347
+684349
+684373
+684379
+684407
+684419
+684427
+684433
+684443
+684451
+684469
+684473
+684493
+684527
+684547
+684557
+684559
+684569
+684581
+684587
+684599
+684617
+684637
+684643
+684647
+684683
+684713
+684727
+684731
+684751
+684757
+684767
+684769
+684773
+684791
+684793
+684799
+684809
+684829
+684841
+684857
+684869
+684889
+684923
+684949
+684961
+684973
+684977
+684989
+685001
+685019
+685031
+685039
+685051
+685057
+685063
+685073
+685081
+685093
+685099
+685103
+685109
+685123
+685141
+685169
+685177
+685199
+685231
+685247
+685249
+685271
+685297
+685301
+685319
+685337
+685339
+685361
+685367
+685369
+685381
+685393
+685417
+685427
+685429
+685453
+685459
+685471
+685493
+685511
+685513
+685519
+685537
+685541
+685547
+685591
+685609
+685613
+685621
+685631
+685637
+685649
+685669
+685679
+685697
+685717
+685723
+685733
+685739
+685747
+685753
+685759
+685781
+685793
+685819
+685849
+685859
+685907
+685939
+685963
+685969
+685973
+685987
+685991
+686003
+686009
+686011
+686027
+686029
+686039
+686041
+686051
+686057
+686087
+686089
+686099
+686117
+686131
+686141
+686143
+686149
+686173
+686177
+686197
+686201
+686209
+686267
+686269
+686293
+686317
+686321
+686333
+686339
+686353
+686359
+686363
+686417
+686423
+686437
+686449
+686453
+686473
+686479
+686503
+686513
+686519
+686551
+686563
+686593
+686611
+686639
+686669
+686671
+686687
+686723
+686729
+686731
+686737
+686761
+686773
+686789
+686797
+686801
+686837
+686843
+686863
+686879
+686891
+686893
+686897
+686911
+686947
+686963
+686969
+686971
+686977
+686989
+686993
+687007
+687013
+687017
+687019
+687023
+687031
+687041
+687061
+687073
+687083
+687101
+687107
+687109
+687121
+687131
+687139
+687151
+687161
+687163
+687179
+687223
+687233
+687277
+687289
+687299
+687307
+687311
+687317
+687331
+687341
+687343
+687359
+687383
+687389
+687397
+687403
+687413
+687431
+687433
+687437
+687443
+687457
+687461
+687473
+687481
+687499
+687517
+687521
+687523
+687541
+687551
+687559
+687581
+687593
+687623
+687637
+687641
+687647
+687679
+687683
+687691
+687707
+687721
+687737
+687749
+687767
+687773
+687779
+687787
+687809
+687823
+687829
+687839
+687847
+687893
+687901
+687917
+687923
+687931
+687949
+687961
+687977
+688003
+688013
+688027
+688031
+688063
+688067
+688073
+688087
+688097
+688111
+688133
+688139
+688147
+688159
+688187
+688201
+688217
+688223
+688249
+688253
+688277
+688297
+688309
+688333
+688339
+688357
+688379
+688393
+688397
+688403
+688411
+688423
+688433
+688447
+688451
+688453
+688477
+688511
+688531
+688543
+688561
+688573
+688591
+688621
+688627
+688631
+688637
+688657
+688661
+688669
+688679
+688697
+688717
+688729
+688733
+688741
+688747
+688757
+688763
+688777
+688783
+688799
+688813
+688861
+688867
+688871
+688889
+688907
+688939
+688951
+688957
+688969
+688979
+688999
+689021
+689033
+689041
+689063
+689071
+689077
+689081
+689089
+689093
+689107
+689113
+689131
+689141
+689167
+689201
+689219
+689233
+689237
+689257
+689261
+689267
+689279
+689291
+689309
+689317
+689321
+689341
+689357
+689369
+689383
+689389
+689393
+689411
+689431
+689441
+689459
+689461
+689467
+689509
+689551
+689561
+689581
+689587
+689597
+689599
+689603
+689621
+689629
+689641
+689693
+689699
+689713
+689723
+689761
+689771
+689779
+689789
+689797
+689803
+689807
+689827
+689831
+689851
+689867
+689869
+689873
+689879
+689891
+689893
+689903
+689917
+689921
+689929
+689951
+689957
+689959
+689963
+689981
+689987
+690037
+690059
+690073
+690089
+690103
+690119
+690127
+690139
+690143
+690163
+690187
+690233
+690259
+690269
+690271
+690281
+690293
+690323
+690341
+690367
+690377
+690397
+690407
+690419
+690427
+690433
+690439
+690449
+690467
+690491
+690493
+690509
+690511
+690533
+690541
+690553
+690583
+690589
+690607
+690611
+690629
+690661
+690673
+690689
+690719
+690721
+690757
+690787
+690793
+690817
+690839
+690841
+690869
+690871
+690887
+690889
+690919
+690929
+690953
+690997
+691001
+691037
+691051
+691063
+691079
+691109
+691111
+691121
+691129
+691147
+691151
+691153
+691181
+691183
+691189
+691193
+691199
+691231
+691241
+691267
+691289
+691297
+691309
+691333
+691337
+691343
+691349
+691363
+691381
+691399
+691409
+691433
+691451
+691463
+691489
+691499
+691531
+691553
+691573
+691583
+691589
+691591
+691631
+691637
+691651
+691661
+691681
+691687
+691693
+691697
+691709
+691721
+691723
+691727
+691729
+691739
+691759
+691763
+691787
+691799
+691813
+691829
+691837
+691841
+691843
+691871
+691877
+691891
+691897
+691903
+691907
+691919
+691921
+691931
+691949
+691973
+691979
+691991
+691997
+692009
+692017
+692051
+692059
+692063
+692071
+692089
+692099
+692117
+692141
+692147
+692149
+692161
+692191
+692221
+692239
+692249
+692269
+692273
+692281
+692287
+692297
+692299
+692309
+692327
+692333
+692347
+692353
+692371
+692387
+692389
+692399
+692401
+692407
+692413
+692423
+692431
+692441
+692453
+692459
+692467
+692513
+692521
+692537
+692539
+692543
+692567
+692581
+692591
+692621
+692641
+692647
+692651
+692663
+692689
+692707
+692711
+692717
+692729
+692743
+692753
+692761
+692771
+692779
+692789
+692821
+692851
+692863
+692893
+692917
+692927
+692929
+692933
+692957
+692963
+692969
+692983
+693019
+693037
+693041
+693061
+693079
+693089
+693097
+693103
+693127
+693137
+693149
+693157
+693167
+693169
+693179
+693223
+693257
+693283
+693317
+693323
+693337
+693353
+693359
+693373
+693397
+693401
+693403
+693409
+693421
+693431
+693437
+693487
+693493
+693503
+693523
+693527
+693529
+693533
+693569
+693571
+693601
+693607
+693619
+693629
+693659
+693661
+693677
+693683
+693689
+693691
+693697
+693701
+693727
+693731
+693733
+693739
+693743
+693757
+693779
+693793
+693799
+693809
+693827
+693829
+693851
+693859
+693871
+693877
+693881
+693943
+693961
+693967
+693989
+694019
+694033
+694039
+694061
+694069
+694079
+694081
+694087
+694091
+694123
+694189
+694193
+694201
+694207
+694223
+694259
+694261
+694271
+694273
+694277
+694313
+694319
+694327
+694333
+694339
+694349
+694357
+694361
+694367
+694373
+694381
+694387
+694391
+694409
+694427
+694457
+694471
+694481
+694483
+694487
+694511
+694513
+694523
+694541
+694549
+694559
+694567
+694571
+694591
+694597
+694609
+694619
+694633
+694649
+694651
+694717
+694721
+694747
+694763
+694781
+694783
+694789
+694829
+694831
+694867
+694871
+694873
+694879
+694901
+694919
+694951
+694957
+694979
+694987
+694997
+694999
+695003
+695017
+695021
+695047
+695059
+695069
+695081
+695087
+695089
+695099
+695111
+695117
+695131
+695141
+695171
+695207
+695239
+695243
+695257
+695263
+695269
+695281
+695293
+695297
+695309
+695323
+695327
+695329
+695347
+695369
+695371
+695377
+695389
+695407
+695411
+695441
+695447
+695467
+695477
+695491
+695503
+695509
+695561
+695567
+695573
+695581
+695593
+695599
+695603
+695621
+695627
+695641
+695659
+695663
+695677
+695687
+695689
+695701
+695719
+695743
+695749
+695771
+695777
+695791
+695801
+695809
+695839
+695843
+695867
+695873
+695879
+695881
+695899
+695917
+695927
+695939
+695999
+696019
+696053
+696061
+696067
+696077
+696079
+696083
+696107
+696109
+696119
+696149
+696181
+696239
+696253
+696257
+696263
+696271
+696281
+696313
+696317
+696323
+696343
+696349
+696359
+696361
+696373
+696379
+696403
+696413
+696427
+696433
+696457
+696481
+696491
+696497
+696503
+696517
+696523
+696533
+696547
+696569
+696607
+696611
+696617
+696623
+696629
+696653
+696659
+696679
+696691
+696719
+696721
+696737
+696743
+696757
+696763
+696793
+696809
+696811
+696823
+696827
+696833
+696851
+696853
+696887
+696889
+696893
+696907
+696929
+696937
+696961
+696989
+696991
+697009
+697013
+697019
+697033
+697049
+697063
+697069
+697079
+697087
+697093
+697111
+697121
+697127
+697133
+697141
+697157
+697181
+697201
+697211
+697217
+697259
+697261
+697267
+697271
+697303
+697327
+697351
+697373
+697379
+697381
+697387
+697397
+697399
+697409
+697423
+697441
+697447
+697453
+697457
+697481
+697507
+697511
+697513
+697519
+697523
+697553
+697579
+697583
+697591
+697601
+697603
+697637
+697643
+697673
+697681
+697687
+697691
+697693
+697703
+697727
+697729
+697733
+697757
+697759
+697787
+697819
+697831
+697877
+697891
+697897
+697909
+697913
+697937
+697951
+697967
+697973
+697979
+697993
+697999
+698017
+698021
+698039
+698051
+698053
+698077
+698083
+698111
+698171
+698183
+698239
+698249
+698251
+698261
+698263
+698273
+698287
+698293
+698297
+698311
+698329
+698339
+698359
+698371
+698387
+698393
+698413
+698417
+698419
+698437
+698447
+698471
+698483
+698491
+698507
+698521
+698527
+698531
+698539
+698543
+698557
+698567
+698591
+698641
+698653
+698669
+698701
+698713
+698723
+698729
+698773
+698779
+698821
+698827
+698849
+698891
+698899
+698903
+698923
+698939
+698977
+698983
+699001
+699007
+699037
+699053
+699059
+699073
+699077
+699089
+699113
+699119
+699133
+699151
+699157
+699169
+699187
+699191
+699197
+699211
+699217
+699221
+699241
+699253
+699271
+699287
+699289
+699299
+699319
+699323
+699343
+699367
+699373
+699379
+699383
+699401
+699427
+699437
+699443
+699449
+699463
+699469
+699493
+699511
+699521
+699527
+699529
+699539
+699541
+699557
+699571
+699581
+699617
+699631
+699641
+699649
+699697
+699709
+699719
+699733
+699757
+699761
+699767
+699791
+699793
+699817
+699823
+699863
+699931
+699943
+699947
+699953
+699961
+699967
+700001
+700027
+700057
+700067
+700079
+700081
+700087
+700099
+700103
+700109
+700127
+700129
+700171
+700199
+700201
+700211
+700223
+700229
+700237
+700241
+700277
+700279
+700303
+700307
+700319
+700331
+700339
+700361
+700363
+700367
+700387
+700391
+700393
+700423
+700429
+700433
+700459
+700471
+700499
+700523
+700537
+700561
+700571
+700573
+700577
+700591
+700597
+700627
+700633
+700639
+700643
+700673
+700681
+700703
+700717
+700751
+700759
+700781
+700789
+700801
+700811
+700831
+700837
+700849
+700871
+700877
+700883
+700897
+700907
+700919
+700933
+700937
+700949
+700963
+700993
+701009
+701011
+701023
+701033
+701047
+701089
+701117
+701147
+701159
+701177
+701179
+701209
+701219
+701221
+701227
+701257
+701279
+701291
+701299
+701329
+701341
+701357
+701359
+701377
+701383
+701399
+701401
+701413
+701417
+701419
+701443
+701447
+701453
+701473
+701479
+701489
+701497
+701507
+701509
+701527
+701531
+701549
+701579
+701581
+701593
+701609
+701611
+701621
+701627
+701629
+701653
+701669
+701671
+701681
+701699
+701711
+701719
+701731
+701741
+701761
+701783
+701791
+701819
+701837
+701863
+701881
+701903
+701951
+701957
+701963
+701969
+702007
+702011
+702017
+702067
+702077
+702101
+702113
+702127
+702131
+702137
+702139
+702173
+702179
+702193
+702199
+702203
+702211
+702239
+702257
+702269
+702281
+702283
+702311
+702313
+702323
+702329
+702337
+702341
+702347
+702349
+702353
+702379
+702391
+702407
+702413
+702431
+702433
+702439
+702451
+702469
+702497
+702503
+702511
+702517
+702523
+702529
+702539
+702551
+702557
+702587
+702589
+702599
+702607
+702613
+702623
+702671
+702679
+702683
+702701
+702707
+702721
+702731
+702733
+702743
+702773
+702787
+702803
+702809
+702817
+702827
+702847
+702851
+702853
+702869
+702881
+702887
+702893
+702913
+702937
+702983
+702991
+703013
+703033
+703039
+703081
+703117
+703121
+703123
+703127
+703139
+703141
+703169
+703193
+703211
+703217
+703223
+703229
+703231
+703243
+703249
+703267
+703277
+703301
+703309
+703321
+703327
+703331
+703349
+703357
+703379
+703393
+703411
+703441
+703447
+703459
+703463
+703471
+703489
+703499
+703531
+703537
+703559
+703561
+703631
+703643
+703657
+703663
+703673
+703679
+703691
+703699
+703709
+703711
+703721
+703733
+703753
+703763
+703789
+703819
+703837
+703849
+703861
+703873
+703883
+703897
+703903
+703907
+703943
+703949
+703957
+703981
+703991
+704003
+704009
+704017
+704023
+704027
+704029
+704059
+704069
+704087
+704101
+704111
+704117
+704131
+704141
+704153
+704161
+704177
+704183
+704189
+704213
+704219
+704233
+704243
+704251
+704269
+704279
+704281
+704287
+704299
+704303
+704309
+704321
+704357
+704393
+704399
+704419
+704441
+704447
+704449
+704453
+704461
+704477
+704507
+704521
+704527
+704549
+704551
+704567
+704569
+704579
+704581
+704593
+704603
+704617
+704647
+704657
+704663
+704681
+704687
+704713
+704719
+704731
+704747
+704761
+704771
+704777
+704779
+704783
+704797
+704801
+704807
+704819
+704833
+704839
+704849
+704857
+704861
+704863
+704867
+704897
+704929
+704933
+704947
+704983
+704989
+704993
+704999
+705011
+705013
+705017
+705031
+705043
+705053
+705073
+705079
+705097
+705113
+705119
+705127
+705137
+705161
+705163
+705167
+705169
+705181
+705191
+705197
+705209
+705247
+705259
+705269
+705277
+705293
+705307
+705317
+705389
+705403
+705409
+705421
+705427
+705437
+705461
+705491
+705493
+705499
+705521
+705533
+705559
+705613
+705631
+705643
+705689
+705713
+705737
+705751
+705763
+705769
+705779
+705781
+705787
+705821
+705827
+705829
+705833
+705841
+705863
+705871
+705883
+705899
+705919
+705937
+705949
+705967
+705973
+705989
+706001
+706003
+706009
+706019
+706033
+706039
+706049
+706051
+706067
+706099
+706109
+706117
+706133
+706141
+706151
+706157
+706159
+706183
+706193
+706201
+706207
+706213
+706229
+706253
+706267
+706283
+706291
+706297
+706301
+706309
+706313
+706337
+706357
+706369
+706373
+706403
+706417
+706427
+706463
+706481
+706487
+706499
+706507
+706523
+706547
+706561
+706597
+706603
+706613
+706621
+706631
+706633
+706661
+706669
+706679
+706703
+706709
+706729
+706733
+706747
+706751
+706753
+706757
+706763
+706787
+706793
+706801
+706829
+706837
+706841
+706847
+706883
+706897
+706907
+706913
+706919
+706921
+706943
+706961
+706973
+706987
+706999
+707011
+707027
+707029
+707053
+707071
+707099
+707111
+707117
+707131
+707143
+707153
+707159
+707177
+707191
+707197
+707219
+707249
+707261
+707279
+707293
+707299
+707321
+707341
+707359
+707383
+707407
+707429
+707431
+707437
+707459
+707467
+707501
+707527
+707543
+707561
+707563
+707573
+707627
+707633
+707647
+707653
+707669
+707671
+707677
+707683
+707689
+707711
+707717
+707723
+707747
+707753
+707767
+707789
+707797
+707801
+707813
+707827
+707831
+707849
+707857
+707869
+707873
+707887
+707911
+707923
+707929
+707933
+707939
+707951
+707953
+707957
+707969
+707981
+707983
+708007
+708011
+708017
+708023
+708031
+708041
+708047
+708049
+708053
+708061
+708091
+708109
+708119
+708131
+708137
+708139
+708161
+708163
+708179
+708199
+708221
+708223
+708229
+708251
+708269
+708283
+708287
+708293
+708311
+708329
+708343
+708347
+708353
+708359
+708361
+708371
+708403
+708437
+708457
+708473
+708479
+708481
+708493
+708497
+708517
+708527
+708559
+708563
+708569
+708583
+708593
+708599
+708601
+708641
+708647
+708667
+708689
+708703
+708733
+708751
+708803
+708823
+708839
+708857
+708859
+708893
+708899
+708907
+708913
+708923
+708937
+708943
+708959
+708979
+708989
+708991
+708997
+709043
+709057
+709097
+709117
+709123
+709139
+709141
+709151
+709153
+709157
+709201
+709211
+709217
+709231
+709237
+709271
+709273
+709279
+709283
+709307
+709321
+709337
+709349
+709351
+709381
+709409
+709417
+709421
+709433
+709447
+709451
+709453
+709469
+709507
+709519
+709531
+709537
+709547
+709561
+709589
+709603
+709607
+709609
+709649
+709651
+709663
+709673
+709679
+709691
+709693
+709703
+709729
+709739
+709741
+709769
+709777
+709789
+709799
+709817
+709823
+709831
+709843
+709847
+709853
+709861
+709871
+709879
+709901
+709909
+709913
+709921
+709927
+709957
+709963
+709967
+709981
+709991
+710009
+710023
+710027
+710051
+710053
+710081
+710089
+710119
+710189
+710207
+710219
+710221
+710257
+710261
+710273
+710293
+710299
+710321
+710323
+710327
+710341
+710351
+710371
+710377
+710383
+710389
+710399
+710441
+710443
+710449
+710459
+710473
+710483
+710491
+710503
+710513
+710519
+710527
+710531
+710557
+710561
+710569
+710573
+710599
+710603
+710609
+710621
+710623
+710627
+710641
+710663
+710683
+710693
+710713
+710777
+710779
+710791
+710813
+710837
+710839
+710849
+710851
+710863
+710867
+710873
+710887
+710903
+710909
+710911
+710917
+710929
+710933
+710951
+710959
+710971
+710977
+710987
+710989
+711001
+711017
+711019
+711023
+711041
+711049
+711089
+711097
+711121
+711131
+711133
+711143
+711163
+711173
+711181
+711187
+711209
+711223
+711259
+711287
+711299
+711307
+711317
+711329
+711353
+711371
+711397
+711409
+711427
+711437
+711463
+711479
+711497
+711499
+711509
+711517
+711523
+711539
+711563
+711577
+711583
+711589
+711617
+711629
+711649
+711653
+711679
+711691
+711701
+711707
+711709
+711713
+711727
+711731
+711749
+711751
+711757
+711793
+711811
+711817
+711829
+711839
+711847
+711859
+711877
+711889
+711899
+711913
+711923
+711929
+711937
+711947
+711959
+711967
+711973
+711983
+712007
+712021
+712051
+712067
+712093
+712109
+712121
+712133
+712157
+712169
+712171
+712183
+712199
+712219
+712237
+712279
+712289
+712301
+712303
+712319
+712321
+712331
+712339
+712357
+712409
+712417
+712427
+712429
+712433
+712447
+712477
+712483
+712489
+712493
+712499
+712507
+712511
+712531
+712561
+712571
+712573
+712601
+712603
+712631
+712651
+712669
+712681
+712687
+712693
+712697
+712711
+712717
+712739
+712781
+712807
+712819
+712837
+712841
+712843
+712847
+712883
+712889
+712891
+712909
+712913
+712927
+712939
+712951
+712961
+712967
+712973
+712981
+713021
+713039
+713059
+713077
+713107
+713117
+713129
+713147
+713149
+713159
+713171
+713177
+713183
+713189
+713191
+713227
+713233
+713239
+713243
+713261
+713267
+713281
+713287
+713309
+713311
+713329
+713347
+713351
+713353
+713357
+713381
+713389
+713399
+713407
+713411
+713417
+713467
+713477
+713491
+713497
+713501
+713509
+713533
+713563
+713569
+713597
+713599
+713611
+713627
+713653
+713663
+713681
+713737
+713743
+713747
+713753
+713771
+713807
+713827
+713831
+713833
+713861
+713863
+713873
+713891
+713903
+713917
+713927
+713939
+713941
+713957
+713981
+713987
+714029
+714037
+714061
+714073
+714107
+714113
+714139
+714143
+714151
+714163
+714169
+714199
+714223
+714227
+714247
+714257
+714283
+714341
+714349
+714361
+714377
+714443
+714463
+714479
+714481
+714487
+714503
+714509
+714517
+714521
+714529
+714551
+714557
+714563
+714569
+714577
+714601
+714619
+714673
+714677
+714691
+714719
+714739
+714751
+714773
+714781
+714787
+714797
+714809
+714827
+714839
+714841
+714851
+714853
+714869
+714881
+714887
+714893
+714907
+714911
+714919
+714943
+714947
+714949
+714971
+714991
+715019
+715031
+715049
+715063
+715069
+715073
+715087
+715109
+715123
+715151
+715153
+715157
+715159
+715171
+715189
+715193
+715223
+715229
+715237
+715243
+715249
+715259
+715289
+715301
+715303
+715313
+715339
+715357
+715361
+715373
+715397
+715417
+715423
+715439
+715441
+715453
+715457
+715489
+715499
+715523
+715537
+715549
+715567
+715571
+715577
+715579
+715613
+715621
+715639
+715643
+715651
+715657
+715679
+715681
+715699
+715727
+715739
+715753
+715777
+715789
+715801
+715811
+715817
+715823
+715843
+715849
+715859
+715867
+715873
+715877
+715879
+715889
+715903
+715909
+715919
+715927
+715943
+715961
+715963
+715969
+715973
+715991
+715999
+716003
+716033
+716063
+716087
+716117
+716123
+716137
+716143
+716161
+716171
+716173
+716249
+716257
+716279
+716291
+716299
+716321
+716351
+716383
+716389
+716399
+716411
+716413
+716447
+716449
+716453
+716459
+716477
+716479
+716483
+716491
+716501
+716531
+716543
+716549
+716563
+716581
+716591
+716621
+716629
+716633
+716659
+716663
+716671
+716687
+716693
+716707
+716713
+716731
+716741
+716743
+716747
+716783
+716789
+716809
+716819
+716827
+716857
+716861
+716869
+716897
+716899
+716917
+716929
+716951
+716953
+716959
+716981
+716987
+717001
+717011
+717047
+717089
+717091
+717103
+717109
+717113
+717127
+717133
+717139
+717149
+717151
+717161
+717191
+717229
+717259
+717271
+717289
+717293
+717317
+717323
+717331
+717341
+717397
+717413
+717419
+717427
+717443
+717449
+717463
+717491
+717511
+717527
+717529
+717533
+717539
+717551
+717559
+717581
+717589
+717593
+717631
+717653
+717659
+717667
+717679
+717683
+717697
+717719
+717751
+717797
+717803
+717811
+717817
+717841
+717851
+717883
+717887
+717917
+717919
+717923
+717967
+717979
+717989
+718007
+718043
+718049
+718051
+718087
+718093
+718121
+718139
+718163
+718169
+718171
+718183
+718187
+718241
+718259
+718271
+718303
+718321
+718331
+718337
+718343
+718349
+718357
+718379
+718381
+718387
+718391
+718411
+718423
+718427
+718433
+718453
+718457
+718463
+718493
+718511
+718513
+718541
+718547
+718559
+718579
+718603
+718621
+718633
+718657
+718661
+718691
+718703
+718717
+718723
+718741
+718747
+718759
+718801
+718807
+718813
+718841
+718847
+718871
+718897
+718901
+718919
+718931
+718937
+718943
+718973
+718999
+719009
+719011
+719027
+719041
+719057
+719063
+719071
+719101
+719119
+719143
+719149
+719153
+719167
+719177
+719179
+719183
+719189
+719197
+719203
+719227
+719237
+719239
+719267
+719281
+719297
+719333
+719351
+719353
+719377
+719393
+719413
+719419
+719441
+719447
+719483
+719503
+719533
+719557
+719567
+719569
+719573
+719597
+719599
+719633
+719639
+719659
+719671
+719681
+719683
+719689
+719699
+719713
+719717
+719723
+719731
+719749
+719753
+719773
+719779
+719791
+719801
+719813
+719821
+719833
+719839
+719893
+719903
+719911
+719941
+719947
+719951
+719959
+719981
+719989
+720007
+720019
+720023
+720053
+720059
+720089
+720091
+720101
+720127
+720133
+720151
+720173
+720179
+720193
+720197
+720211
+720221
+720229
+720241
+720253
+720257
+720281
+720283
+720289
+720299
+720301
+720311
+720319
+720359
+720361
+720367
+720373
+720397
+720403
+720407
+720413
+720439
+720481
+720491
+720497
+720527
+720547
+720569
+720571
+720607
+720611
+720617
+720619
+720653
+720661
+720677
+720683
+720697
+720703
+720743
+720763
+720767
+720773
+720779
+720791
+720793
+720829
+720847
+720857
+720869
+720877
+720887
+720899
+720901
+720913
+720931
+720943
+720947
+720961
+720971
+720983
+720991
+720997
+721003
+721013
+721037
+721043
+721051
+721057
+721079
+721087
+721109
+721111
+721117
+721129
+721139
+721141
+721159
+721163
+721169
+721177
+721181
+721199
+721207
+721213
+721219
+721223
+721229
+721243
+721261
+721267
+721283
+721291
+721307
+721319
+721321
+721333
+721337
+721351
+721363
+721379
+721381
+721387
+721397
+721439
+721451
+721481
+721499
+721529
+721547
+721561
+721571
+721577
+721597
+721613
+721619
+721621
+721631
+721661
+721663
+721687
+721697
+721703
+721709
+721733
+721739
+721783
+721793
+721843
+721849
+721859
+721883
+721891
+721909
+721921
+721951
+721961
+721979
+721991
+721997
+722011
+722023
+722027
+722047
+722063
+722069
+722077
+722093
+722119
+722123
+722147
+722149
+722153
+722159
+722167
+722173
+722213
+722237
+722243
+722257
+722273
+722287
+722291
+722299
+722311
+722317
+722321
+722333
+722341
+722353
+722363
+722369
+722377
+722389
+722411
+722417
+722431
+722459
+722467
+722479
+722489
+722509
+722521
+722537
+722539
+722563
+722581
+722599
+722611
+722633
+722639
+722663
+722669
+722713
+722723
+722737
+722749
+722783
+722791
+722797
+722807
+722819
+722833
+722849
+722881
+722899
+722903
+722921
+722933
+722963
+722971
+722977
+722983
+723029
+723031
+723043
+723049
+723053
+723067
+723071
+723089
+723101
+723103
+723109
+723113
+723119
+723127
+723133
+723157
+723161
+723167
+723169
+723181
+723193
+723209
+723221
+723227
+723257
+723259
+723263
+723269
+723271
+723287
+723293
+723319
+723337
+723353
+723361
+723379
+723391
+723407
+723409
+723413
+723421
+723439
+723451
+723467
+723473
+723479
+723491
+723493
+723529
+723551
+723553
+723559
+723563
+723587
+723589
+723601
+723607
+723617
+723623
+723661
+723721
+723727
+723739
+723761
+723791
+723797
+723799
+723803
+723823
+723829
+723839
+723851
+723857
+723859
+723893
+723901
+723907
+723913
+723917
+723923
+723949
+723959
+723967
+723973
+723977
+723997
+724001
+724007
+724021
+724079
+724093
+724099
+724111
+724117
+724121
+724123
+724153
+724187
+724211
+724219
+724259
+724267
+724277
+724291
+724303
+724309
+724313
+724331
+724393
+724403
+724433
+724441
+724447
+724453
+724459
+724469
+724481
+724487
+724499
+724513
+724517
+724519
+724531
+724547
+724553
+724567
+724573
+724583
+724597
+724601
+724609
+724621
+724627
+724631
+724639
+724643
+724651
+724721
+724723
+724729
+724733
+724747
+724751
+724769
+724777
+724781
+724783
+724807
+724813
+724837
+724847
+724853
+724879
+724901
+724903
+724939
+724949
+724961
+724967
+724991
+724993
+725009
+725041
+725057
+725071
+725077
+725099
+725111
+725113
+725119
+725147
+725149
+725159
+725161
+725189
+725201
+725209
+725273
+725293
+725303
+725317
+725321
+725323
+725327
+725341
+725357
+725359
+725371
+725381
+725393
+725399
+725423
+725437
+725447
+725449
+725479
+725507
+725519
+725531
+725537
+725579
+725587
+725597
+725603
+725639
+725653
+725663
+725671
+725687
+725723
+725731
+725737
+725749
+725789
+725801
+725807
+725827
+725861
+725863
+725867
+725891
+725897
+725909
+725929
+725939
+725953
+725981
+725983
+725993
+725999
+726007
+726013
+726023
+726043
+726071
+726091
+726097
+726101
+726107
+726109
+726137
+726139
+726149
+726157
+726163
+726169
+726181
+726191
+726221
+726287
+726289
+726301
+726307
+726331
+726337
+726367
+726371
+726377
+726379
+726391
+726413
+726419
+726431
+726457
+726463
+726469
+726487
+726497
+726521
+726527
+726533
+726559
+726589
+726599
+726601
+726611
+726619
+726623
+726629
+726641
+726647
+726659
+726679
+726689
+726697
+726701
+726707
+726751
+726779
+726787
+726797
+726809
+726811
+726839
+726841
+726853
+726893
+726899
+726911
+726917
+726923
+726941
+726953
+726983
+726989
+726991
+727003
+727009
+727019
+727021
+727049
+727061
+727063
+727079
+727121
+727123
+727157
+727159
+727169
+727183
+727189
+727201
+727211
+727241
+727247
+727249
+727261
+727267
+727271
+727273
+727289
+727297
+727313
+727327
+727343
+727351
+727369
+727399
+727409
+727427
+727451
+727459
+727471
+727483
+727487
+727499
+727501
+727541
+727561
+727577
+727589
+727613
+727621
+727633
+727667
+727673
+727691
+727703
+727711
+727717
+727729
+727733
+727747
+727759
+727763
+727777
+727781
+727799
+727807
+727817
+727823
+727843
+727847
+727877
+727879
+727891
+727933
+727939
+727949
+727981
+727997
+728003
+728017
+728027
+728047
+728069
+728087
+728113
+728129
+728131
+728173
+728191
+728207
+728209
+728261
+728267
+728269
+728281
+728293
+728303
+728317
+728333
+728369
+728381
+728383
+728417
+728423
+728437
+728471
+728477
+728489
+728521
+728527
+728537
+728551
+728557
+728561
+728573
+728579
+728627
+728639
+728647
+728659
+728681
+728687
+728699
+728701
+728713
+728723
+728729
+728731
+728743
+728747
+728771
+728809
+728813
+728831
+728837
+728839
+728843
+728851
+728867
+728869
+728873
+728881
+728891
+728899
+728911
+728921
+728927
+728929
+728941
+728947
+728953
+728969
+728971
+728993
+729019
+729023
+729037
+729041
+729059
+729073
+729139
+729143
+729173
+729187
+729191
+729199
+729203
+729217
+729257
+729269
+729271
+729293
+729301
+729329
+729331
+729359
+729367
+729371
+729373
+729389
+729403
+729413
+729451
+729457
+729473
+729493
+729497
+729503
+729511
+729527
+729551
+729557
+729559
+729569
+729571
+729577
+729587
+729601
+729607
+729613
+729637
+729643
+729649
+729661
+729671
+729679
+729689
+729713
+729719
+729737
+729749
+729761
+729779
+729787
+729791
+729821
+729851
+729871
+729877
+729907
+729913
+729919
+729931
+729941
+729943
+729947
+729977
+729979
+729991
+730003
+730021
+730033
+730049
+730069
+730091
+730111
+730139
+730157
+730187
+730199
+730217
+730237
+730253
+730277
+730283
+730297
+730321
+730339
+730363
+730397
+730399
+730421
+730447
+730451
+730459
+730469
+730487
+730537
+730553
+730559
+730567
+730571
+730573
+730589
+730591
+730603
+730619
+730633
+730637
+730663
+730669
+730679
+730727
+730747
+730753
+730757
+730777
+730781
+730783
+730789
+730799
+730811
+730819
+730823
+730837
+730843
+730853
+730867
+730879
+730889
+730901
+730909
+730913
+730943
+730969
+730973
+730993
+730999
+731033
+731041
+731047
+731053
+731057
+731113
+731117
+731141
+731173
+731183
+731189
+731191
+731201
+731209
+731219
+731233
+731243
+731249
+731251
+731257
+731261
+731267
+731287
+731299
+731327
+731333
+731359
+731363
+731369
+731389
+731413
+731447
+731483
+731501
+731503
+731509
+731531
+731539
+731567
+731587
+731593
+731597
+731603
+731611
+731623
+731639
+731651
+731681
+731683
+731711
+731713
+731719
+731729
+731737
+731741
+731761
+731767
+731779
+731803
+731807
+731821
+731827
+731831
+731839
+731851
+731869
+731881
+731893
+731909
+731911
+731921
+731923
+731933
+731957
+731981
+731999
+732023
+732029
+732041
+732073
+732077
+732079
+732097
+732101
+732133
+732157
+732169
+732181
+732187
+732191
+732197
+732209
+732211
+732217
+732229
+732233
+732239
+732257
+732271
+732283
+732287
+732293
+732299
+732311
+732323
+732331
+732373
+732439
+732449
+732461
+732467
+732491
+732493
+732497
+732509
+732521
+732533
+732541
+732601
+732617
+732631
+732653
+732673
+732689
+732703
+732709
+732713
+732731
+732749
+732761
+732769
+732799
+732817
+732827
+732829
+732833
+732841
+732863
+732877
+732889
+732911
+732923
+732943
+732959
+732967
+732971
+732997
+733003
+733009
+733067
+733097
+733099
+733111
+733123
+733127
+733133
+733141
+733147
+733157
+733169
+733177
+733189
+733237
+733241
+733273
+733277
+733283
+733289
+733301
+733307
+733321
+733331
+733333
+733339
+733351
+733373
+733387
+733391
+733393
+733399
+733409
+733427
+733433
+733459
+733477
+733489
+733511
+733517
+733519
+733559
+733561
+733591
+733619
+733639
+733651
+733687
+733697
+733741
+733751
+733753
+733757
+733793
+733807
+733813
+733823
+733829
+733841
+733847
+733849
+733867
+733871
+733879
+733883
+733919
+733921
+733937
+733939
+733949
+733963
+733973
+733981
+733991
+734003
+734017
+734021
+734047
+734057
+734087
+734113
+734131
+734143
+734159
+734171
+734177
+734189
+734197
+734203
+734207
+734221
+734233
+734263
+734267
+734273
+734291
+734303
+734329
+734347
+734381
+734389
+734401
+734411
+734423
+734429
+734431
+734443
+734471
+734473
+734477
+734479
+734497
+734537
+734543
+734549
+734557
+734567
+734627
+734647
+734653
+734659
+734663
+734687
+734693
+734707
+734717
+734729
+734737
+734743
+734759
+734771
+734803
+734807
+734813
+734819
+734837
+734849
+734869
+734879
+734887
+734897
+734911
+734933
+734941
+734953
+734957
+734959
+734971
+735001
+735019
+735043
+735061
+735067
+735071
+735073
+735083
+735107
+735109
+735113
+735139
+735143
+735157
+735169
+735173
+735181
+735187
+735193
+735209
+735211
+735239
+735247
+735263
+735271
+735283
+735307
+735311
+735331
+735337
+735341
+735359
+735367
+735373
+735389
+735391
+735419
+735421
+735431
+735439
+735443
+735451
+735461
+735467
+735473
+735479
+735491
+735529
+735533
+735557
+735571
+735617
+735649
+735653
+735659
+735673
+735689
+735697
+735719
+735731
+735733
+735739
+735751
+735781
+735809
+735821
+735829
+735853
+735871
+735877
+735883
+735901
+735919
+735937
+735949
+735953
+735979
+735983
+735997
+736007
+736013
+736027
+736037
+736039
+736051
+736061
+736063
+736091
+736093
+736097
+736111
+736121
+736147
+736159
+736181
+736187
+736243
+736247
+736249
+736259
+736273
+736277
+736279
+736357
+736361
+736363
+736367
+736369
+736381
+736387
+736399
+736403
+736409
+736429
+736433
+736441
+736447
+736469
+736471
+736511
+736577
+736607
+736639
+736657
+736679
+736691
+736699
+736717
+736721
+736741
+736787
+736793
+736817
+736823
+736843
+736847
+736867
+736871
+736889
+736903
+736921
+736927
+736937
+736951
+736961
+736973
+736987
+736993
+737017
+737039
+737041
+737047
+737053
+737059
+737083
+737089
+737111
+737119
+737129
+737131
+737147
+737159
+737179
+737183
+737203
+737207
+737251
+737263
+737279
+737281
+737287
+737291
+737293
+737309
+737327
+737339
+737351
+737353
+737411
+737413
+737423
+737431
+737479
+737483
+737497
+737501
+737507
+737509
+737531
+737533
+737537
+737563
+737567
+737573
+737591
+737593
+737617
+737629
+737641
+737657
+737663
+737683
+737687
+737717
+737719
+737729
+737747
+737753
+737767
+737773
+737797
+737801
+737809
+737819
+737843
+737857
+737861
+737873
+737887
+737897
+737921
+737927
+737929
+737969
+737981
+737999
+738011
+738029
+738043
+738053
+738071
+738083
+738107
+738109
+738121
+738151
+738163
+738173
+738197
+738211
+738217
+738223
+738247
+738263
+738301
+738313
+738317
+738319
+738341
+738349
+738373
+738379
+738383
+738391
+738401
+738403
+738421
+738443
+738457
+738469
+738487
+738499
+738509
+738523
+738539
+738547
+738581
+738583
+738589
+738623
+738643
+738677
+738707
+738713
+738721
+738743
+738757
+738781
+738791
+738797
+738811
+738827
+738839
+738847
+738851
+738863
+738877
+738889
+738917
+738919
+738923
+738937
+738953
+738961
+738977
+738989
+739003
+739021
+739027
+739031
+739051
+739061
+739069
+739087
+739099
+739103
+739111
+739117
+739121
+739153
+739163
+739171
+739183
+739187
+739199
+739201
+739217
+739241
+739253
+739273
+739283
+739301
+739303
+739307
+739327
+739331
+739337
+739351
+739363
+739369
+739373
+739379
+739391
+739393
+739397
+739399
+739433
+739439
+739463
+739469
+739493
+739507
+739511
+739513
+739523
+739549
+739553
+739579
+739601
+739603
+739621
+739631
+739633
+739637
+739649
+739693
+739699
+739723
+739751
+739759
+739771
+739777
+739787
+739799
+739813
+739829
+739847
+739853
+739859
+739861
+739909
+739931
+739943
+739951
+739957
+739967
+739969
+740011
+740021
+740023
+740041
+740053
+740059
+740087
+740099
+740123
+740141
+740143
+740153
+740161
+740171
+740189
+740191
+740227
+740237
+740279
+740287
+740303
+740321
+740323
+740329
+740351
+740359
+740371
+740387
+740423
+740429
+740461
+740473
+740477
+740483
+740513
+740521
+740527
+740533
+740549
+740561
+740581
+740591
+740599
+740603
+740651
+740653
+740659
+740671
+740681
+740687
+740693
+740711
+740713
+740717
+740737
+740749
+740801
+740849
+740891
+740893
+740897
+740903
+740923
+740939
+740951
+740969
+740989
+741001
+741007
+741011
+741031
+741043
+741053
+741061
+741071
+741077
+741079
+741101
+741119
+741121
+741127
+741131
+741137
+741163
+741187
+741193
+741227
+741229
+741233
+741253
+741283
+741337
+741341
+741343
+741347
+741373
+741401
+741409
+741413
+741431
+741457
+741467
+741469
+741473
+741479
+741491
+741493
+741509
+741541
+741547
+741563
+741569
+741593
+741599
+741641
+741661
+741667
+741677
+741679
+741683
+741691
+741709
+741721
+741781
+741787
+741803
+741809
+741827
+741833
+741847
+741857
+741859
+741869
+741877
+741883
+741913
+741929
+741941
+741967
+741973
+741991
+742009
+742031
+742037
+742057
+742069
+742073
+742111
+742117
+742127
+742151
+742153
+742193
+742199
+742201
+742211
+742213
+742219
+742229
+742241
+742243
+742253
+742277
+742283
+742289
+742307
+742327
+742333
+742351
+742369
+742381
+742393
+742409
+742439
+742457
+742499
+742507
+742513
+742519
+742531
+742537
+742541
+742549
+742559
+742579
+742591
+742607
+742619
+742657
+742663
+742673
+742681
+742697
+742699
+742711
+742717
+742723
+742757
+742759
+742783
+742789
+742801
+742817
+742891
+742897
+742909
+742913
+742943
+742949
+742967
+742981
+742991
+742993
+742999
+743027
+743047
+743059
+743069
+743089
+743111
+743123
+743129
+743131
+743137
+743143
+743159
+743161
+743167
+743173
+743177
+743179
+743203
+743209
+743221
+743251
+743263
+743269
+743273
+743279
+743297
+743321
+743333
+743339
+743363
+743377
+743401
+743423
+743447
+743507
+743549
+743551
+743573
+743579
+743591
+743609
+743657
+743669
+743671
+743689
+743693
+743711
+743731
+743747
+743777
+743779
+743791
+743803
+743819
+743833
+743837
+743849
+743851
+743881
+743891
+743917
+743921
+743923
+743933
+743947
+743987
+743989
+744019
+744043
+744071
+744077
+744083
+744113
+744127
+744137
+744179
+744187
+744199
+744203
+744221
+744239
+744251
+744253
+744283
+744301
+744313
+744353
+744371
+744377
+744389
+744391
+744397
+744407
+744409
+744431
+744451
+744493
+744503
+744511
+744539
+744547
+744559
+744599
+744607
+744637
+744641
+744649
+744659
+744661
+744677
+744701
+744707
+744721
+744727
+744739
+744761
+744767
+744791
+744811
+744817
+744823
+744829
+744833
+744859
+744893
+744911
+744917
+744941
+744949
+744959
+744977
+745001
+745013
+745027
+745033
+745037
+745051
+745067
+745103
+745117
+745133
+745141
+745181
+745187
+745189
+745201
+745231
+745243
+745247
+745249
+745273
+745301
+745307
+745337
+745343
+745357
+745369
+745379
+745391
+745397
+745471
+745477
+745517
+745529
+745531
+745543
+745567
+745573
+745601
+745609
+745621
+745631
+745649
+745673
+745697
+745699
+745709
+745711
+745727
+745733
+745741
+745747
+745751
+745753
+745757
+745817
+745837
+745859
+745873
+745903
+745931
+745933
+745939
+745951
+745973
+745981
+745993
+745999
+746017
+746023
+746033
+746041
+746047
+746069
+746099
+746101
+746107
+746117
+746129
+746153
+746167
+746171
+746177
+746183
+746191
+746197
+746203
+746209
+746227
+746231
+746233
+746243
+746267
+746287
+746303
+746309
+746329
+746353
+746363
+746371
+746411
+746413
+746429
+746477
+746479
+746483
+746497
+746503
+746507
+746509
+746531
+746533
+746561
+746563
+746597
+746653
+746659
+746671
+746677
+746723
+746737
+746743
+746747
+746749
+746773
+746777
+746791
+746797
+746807
+746813
+746839
+746843
+746869
+746873
+746891
+746899
+746903
+746939
+746951
+746957
+746959
+746969
+746981
+746989
+747037
+747049
+747053
+747073
+747107
+747113
+747139
+747157
+747161
+747199
+747203
+747223
+747239
+747259
+747277
+747283
+747287
+747319
+747323
+747343
+747361
+747377
+747391
+747401
+747407
+747421
+747427
+747449
+747451
+747457
+747463
+747493
+747497
+747499
+747521
+747529
+747547
+747557
+747563
+747583
+747587
+747599
+747611
+747619
+747647
+747673
+747679
+747713
+747731
+747737
+747743
+747763
+747781
+747811
+747827
+747829
+747833
+747839
+747841
+747853
+747863
+747869
+747871
+747889
+747917
+747919
+747941
+747953
+747977
+747979
+747991
+748003
+748019
+748021
+748039
+748057
+748091
+748093
+748133
+748169
+748183
+748199
+748207
+748211
+748217
+748219
+748249
+748271
+748273
+748283
+748301
+748331
+748337
+748339
+748343
+748361
+748379
+748387
+748441
+748453
+748463
+748471
+748481
+748487
+748499
+748513
+748523
+748541
+748567
+748589
+748597
+748603
+748609
+748613
+748633
+748637
+748639
+748669
+748687
+748691
+748703
+748711
+748717
+748723
+748729
+748763
+748777
+748789
+748801
+748807
+748817
+748819
+748823
+748829
+748831
+748849
+748861
+748871
+748877
+748883
+748889
+748921
+748933
+748963
+748973
+748981
+748987
+749011
+749027
+749051
+749069
+749081
+749083
+749093
+749129
+749137
+749143
+749149
+749153
+749167
+749171
+749183
+749197
+749209
+749219
+749237
+749249
+749257
+749267
+749279
+749297
+749299
+749323
+749339
+749347
+749351
+749383
+749393
+749401
+749423
+749429
+749431
+749443
+749449
+749453
+749461
+749467
+749471
+749543
+749557
+749587
+749641
+749653
+749659
+749677
+749701
+749711
+749729
+749741
+749747
+749761
+749773
+749779
+749803
+749807
+749809
+749843
+749851
+749863
+749891
+749893
+749899
+749909
+749923
+749927
+749939
+749941
+749971
+749993
+750019
+750037
+750059
+750077
+750083
+750097
+750119
+750121
+750131
+750133
+750137
+750151
+750157
+750161
+750163
+750173
+750179
+750203
+750209
+750223
+750229
+750287
+750311
+750313
+750353
+750383
+750401
+750413
+750419
+750437
+750457
+750473
+750487
+750509
+750517
+750521
+750553
+750571
+750599
+750613
+750641
+750653
+750661
+750667
+750679
+750691
+750707
+750713
+750719
+750721
+750749
+750769
+750787
+750791
+750797
+750803
+750809
+750817
+750829
+750853
+750857
+750863
+750917
+750929
+750943
+750961
+750977
+750983
+751001
+751007
+751021
+751027
+751057
+751061
+751087
+751103
+751123
+751133
+751139
+751141
+751147
+751151
+751181
+751183
+751189
+751193
+751199
+751207
+751217
+751237
+751259
+751273
+751277
+751291
+751297
+751301
+751307
+751319
+751321
+751327
+751343
+751351
+751357
+751363
+751367
+751379
+751411
+751423
+751447
+751453
+751463
+751481
+751523
+751529
+751549
+751567
+751579
+751609
+751613
+751627
+751631
+751633
+751637
+751643
+751661
+751669
+751691
+751711
+751717
+751727
+751739
+751747
+751753
+751759
+751763
+751787
+751799
+751813
+751823
+751841
+751853
+751867
+751871
+751879
+751901
+751909
+751913
+751921
+751943
+751957
+751969
+751987
+751997
+752009
+752023
+752033
+752053
+752083
+752093
+752107
+752111
+752117
+752137
+752149
+752177
+752183
+752189
+752197
+752201
+752203
+752207
+752251
+752263
+752273
+752281
+752287
+752291
+752293
+752299
+752303
+752351
+752359
+752383
+752413
+752431
+752447
+752449
+752459
+752483
+752489
+752503
+752513
+752519
+752527
+752569
+752581
+752593
+752603
+752627
+752639
+752651
+752681
+752683
+752699
+752701
+752707
+752747
+752771
+752789
+752797
+752803
+752809
+752819
+752821
+752831
+752833
+752861
+752867
+752881
+752891
+752903
+752911
+752929
+752933
+752977
+752993
+753001
+753007
+753019
+753023
+753031
+753079
+753091
+753127
+753133
+753139
+753143
+753161
+753187
+753191
+753197
+753229
+753257
+753307
+753329
+753341
+753353
+753367
+753373
+753383
+753409
+753421
+753427
+753437
+753439
+753461
+753463
+753497
+753499
+753527
+753547
+753569
+753583
+753587
+753589
+753611
+753617
+753619
+753631
+753647
+753659
+753677
+753679
+753689
+753691
+753707
+753719
+753721
+753737
+753743
+753751
+753773
+753793
+753799
+753803
+753811
+753821
+753839
+753847
+753859
+753931
+753937
+753941
+753947
+753959
+753979
+753983
+754003
+754027
+754037
+754043
+754057
+754067
+754073
+754081
+754093
+754099
+754109
+754111
+754121
+754123
+754133
+754153
+754157
+754181
+754183
+754207
+754211
+754217
+754223
+754241
+754249
+754267
+754279
+754283
+754289
+754297
+754301
+754333
+754337
+754343
+754367
+754373
+754379
+754381
+754399
+754417
+754421
+754427
+754451
+754463
+754483
+754489
+754513
+754531
+754549
+754573
+754577
+754583
+754597
+754627
+754639
+754651
+754703
+754709
+754711
+754717
+754723
+754739
+754751
+754771
+754781
+754811
+754829
+754861
+754877
+754891
+754903
+754907
+754921
+754931
+754937
+754939
+754967
+754969
+754973
+754979
+754981
+754991
+754993
+755009
+755033
+755057
+755071
+755077
+755081
+755087
+755107
+755137
+755143
+755147
+755171
+755173
+755203
+755213
+755233
+755239
+755257
+755267
+755273
+755309
+755311
+755317
+755329
+755333
+755351
+755357
+755371
+755387
+755393
+755399
+755401
+755413
+755437
+755441
+755449
+755473
+755483
+755509
+755539
+755551
+755561
+755567
+755569
+755593
+755597
+755617
+755627
+755663
+755681
+755707
+755717
+755719
+755737
+755759
+755767
+755771
+755789
+755791
+755809
+755813
+755861
+755863
+755869
+755879
+755899
+755903
+755959
+755969
+755977
+756011
+756023
+756043
+756053
+756097
+756101
+756127
+756131
+756139
+756149
+756167
+756179
+756191
+756199
+756227
+756247
+756251
+756253
+756271
+756281
+756289
+756293
+756319
+756323
+756331
+756373
+756403
+756419
+756421
+756433
+756443
+756463
+756467
+756527
+756533
+756541
+756563
+756571
+756593
+756601
+756607
+756629
+756641
+756649
+756667
+756673
+756683
+756689
+756703
+756709
+756719
+756727
+756739
+756773
+756799
+756829
+756839
+756853
+756869
+756881
+756887
+756919
+756923
+756961
+756967
+756971
+757019
+757039
+757063
+757067
+757109
+757111
+757151
+757157
+757171
+757181
+757201
+757241
+757243
+757247
+757259
+757271
+757291
+757297
+757307
+757319
+757327
+757331
+757343
+757363
+757381
+757387
+757403
+757409
+757417
+757429
+757433
+757457
+757481
+757487
+757507
+757513
+757517
+757543
+757553
+757577
+757579
+757583
+757607
+757633
+757651
+757661
+757693
+757699
+757709
+757711
+757727
+757751
+757753
+757763
+757793
+757807
+757811
+757819
+757829
+757879
+757903
+757909
+757927
+757937
+757943
+757951
+757993
+757997
+758003
+758029
+758041
+758053
+758071
+758083
+758099
+758101
+758111
+758137
+758141
+758159
+758179
+758189
+758201
+758203
+758227
+758231
+758237
+758243
+758267
+758269
+758273
+758279
+758299
+758323
+758339
+758341
+758357
+758363
+758383
+758393
+758411
+758431
+758441
+758449
+758453
+758491
+758501
+758503
+758519
+758521
+758551
+758561
+758573
+758579
+758599
+758617
+758629
+758633
+758671
+758687
+758699
+758707
+758711
+758713
+758729
+758731
+758741
+758743
+758753
+758767
+758783
+758789
+758819
+758827
+758837
+758851
+758867
+758887
+758893
+758899
+758929
+758941
+758957
+758963
+758969
+758971
+758987
+759001
+759019
+759029
+759037
+759047
+759053
+759089
+759103
+759113
+759131
+759149
+759167
+759173
+759179
+759181
+759193
+759223
+759229
+759263
+759287
+759293
+759301
+759313
+759329
+759359
+759371
+759377
+759397
+759401
+759431
+759433
+759457
+759463
+759467
+759491
+759503
+759523
+759547
+759553
+759557
+759559
+759569
+759571
+759581
+759589
+759599
+759617
+759623
+759631
+759637
+759641
+759653
+759659
+759673
+759691
+759697
+759701
+759709
+759719
+759727
+759739
+759757
+759763
+759797
+759799
+759821
+759833
+759881
+759893
+759911
+759923
+759929
+759947
+759953
+759959
+759961
+759973
+760007
+760043
+760063
+760079
+760093
+760103
+760117
+760129
+760141
+760147
+760153
+760163
+760169
+760183
+760187
+760211
+760229
+760231
+760237
+760241
+760261
+760267
+760273
+760289
+760297
+760301
+760321
+760343
+760367
+760373
+760411
+760423
+760433
+760447
+760453
+760457
+760477
+760489
+760499
+760511
+760519
+760531
+760537
+760549
+760553
+760561
+760567
+760579
+760607
+760619
+760621
+760637
+760649
+760657
+760693
+760723
+760729
+760759
+760769
+760783
+760807
+760813
+760841
+760843
+760847
+760871
+760891
+760897
+760901
+760913
+760927
+760933
+760939
+760951
+760961
+760993
+760997
+761003
+761009
+761023
+761051
+761069
+761087
+761113
+761119
+761129
+761153
+761161
+761177
+761179
+761183
+761203
+761207
+761213
+761227
+761249
+761251
+761261
+761263
+761291
+761297
+761347
+761351
+761357
+761363
+761377
+761381
+761389
+761393
+761399
+761407
+761417
+761429
+761437
+761441
+761443
+761459
+761471
+761477
+761483
+761489
+761521
+761531
+761533
+761543
+761561
+761567
+761591
+761597
+761603
+761611
+761623
+761633
+761669
+761671
+761681
+761689
+761711
+761713
+761731
+761773
+761777
+761779
+761807
+761809
+761833
+761861
+761863
+761869
+761879
+761897
+761927
+761939
+761963
+761977
+761983
+761993
+762001
+762007
+762017
+762031
+762037
+762049
+762053
+762061
+762101
+762121
+762187
+762211
+762227
+762233
+762239
+762241
+762253
+762257
+762277
+762319
+762329
+762367
+762371
+762373
+762379
+762389
+762397
+762401
+762407
+762409
+762479
+762491
+762499
+762529
+762539
+762547
+762557
+762563
+762571
+762577
+762583
+762599
+762647
+762653
+762659
+762667
+762721
+762737
+762743
+762761
+762779
+762791
+762809
+762821
+762823
+762847
+762871
+762877
+762893
+762899
+762901
+762913
+762917
+762919
+762959
+762967
+762973
+762989
+763001
+763013
+763027
+763031
+763039
+763043
+763067
+763073
+763093
+763111
+763123
+763141
+763157
+763159
+763183
+763201
+763223
+763237
+763261
+763267
+763271
+763303
+763307
+763339
+763349
+763369
+763381
+763391
+763403
+763409
+763417
+763423
+763429
+763447
+763457
+763471
+763481
+763493
+763513
+763523
+763549
+763559
+763573
+763579
+763583
+763597
+763601
+763613
+763619
+763621
+763627
+763649
+763663
+763673
+763699
+763739
+763751
+763753
+763757
+763771
+763787
+763801
+763811
+763823
+763843
+763859
+763879
+763883
+763897
+763901
+763907
+763913
+763921
+763927
+763937
+763943
+763957
+763967
+763999
+764003
+764011
+764017
+764021
+764041
+764051
+764053
+764059
+764081
+764089
+764111
+764131
+764143
+764149
+764171
+764189
+764209
+764233
+764249
+764251
+764261
+764273
+764293
+764317
+764321
+764327
+764339
+764341
+764369
+764381
+764399
+764431
+764447
+764459
+764471
+764501
+764521
+764539
+764551
+764563
+764587
+764591
+764593
+764611
+764623
+764627
+764629
+764657
+764683
+764689
+764717
+764719
+764723
+764783
+764789
+764809
+764837
+764839
+764849
+764857
+764887
+764891
+764893
+764899
+764903
+764947
+764969
+764971
+764977
+764989
+764993
+764999
+765007
+765031
+765041
+765043
+765047
+765059
+765091
+765097
+765103
+765109
+765131
+765137
+765139
+765143
+765151
+765169
+765181
+765199
+765203
+765209
+765211
+765227
+765229
+765241
+765251
+765257
+765283
+765287
+765293
+765307
+765313
+765319
+765329
+765353
+765379
+765383
+765389
+765409
+765437
+765439
+765461
+765467
+765487
+765497
+765503
+765521
+765533
+765539
+765577
+765581
+765587
+765613
+765619
+765623
+765649
+765659
+765673
+765707
+765727
+765749
+765763
+765767
+765773
+765781
+765823
+765827
+765847
+765851
+765857
+765859
+765881
+765889
+765893
+765899
+765907
+765913
+765931
+765949
+765953
+765971
+765983
+765991
+766021
+766039
+766049
+766067
+766079
+766091
+766097
+766109
+766111
+766127
+766163
+766169
+766177
+766187
+766211
+766223
+766229
+766231
+766237
+766247
+766261
+766273
+766277
+766301
+766313
+766321
+766333
+766357
+766361
+766369
+766373
+766387
+766393
+766399
+766421
+766439
+766453
+766457
+766471
+766477
+766487
+766501
+766511
+766531
+766541
+766543
+766553
+766559
+766583
+766609
+766637
+766639
+766651
+766679
+766687
+766721
+766739
+766757
+766763
+766769
+766793
+766807
+766811
+766813
+766817
+766861
+766867
+766873
+766877
+766891
+766901
+766907
+766937
+766939
+766943
+766957
+766967
+766999
+767017
+767029
+767051
+767071
+767089
+767093
+767101
+767111
+767131
+767147
+767153
+767161
+767167
+767203
+767243
+767279
+767287
+767293
+767309
+767317
+767321
+767323
+767339
+767357
+767359
+767381
+767399
+767423
+767443
+767471
+767489
+767509
+767513
+767521
+767527
+767537
+767539
+767549
+767551
+767587
+767597
+767603
+767617
+767623
+767633
+767647
+767677
+767681
+767707
+767729
+767747
+767749
+767759
+767761
+767773
+767783
+767813
+767827
+767831
+767843
+767857
+767863
+767867
+767869
+767881
+767909
+767951
+767957
+768013
+768029
+768041
+768049
+768059
+768073
+768101
+768107
+768127
+768133
+768139
+768161
+768167
+768169
+768191
+768193
+768197
+768199
+768203
+768221
+768241
+768259
+768263
+768301
+768319
+768323
+768329
+768343
+768347
+768353
+768359
+768371
+768373
+768377
+768389
+768401
+768409
+768419
+768431
+768437
+768457
+768461
+768479
+768491
+768503
+768541
+768563
+768571
+768589
+768613
+768623
+768629
+768631
+768641
+768643
+768653
+768671
+768727
+768751
+768767
+768773
+768787
+768793
+768799
+768811
+768841
+768851
+768853
+768857
+768869
+768881
+768923
+768931
+768941
+768953
+768979
+768983
+769003
+769007
+769019
+769033
+769039
+769057
+769073
+769081
+769091
+769117
+769123
+769147
+769151
+769159
+769169
+769207
+769231
+769243
+769247
+769259
+769261
+769273
+769289
+769297
+769309
+769319
+769339
+769357
+769387
+769411
+769421
+769423
+769429
+769453
+769459
+769463
+769469
+769487
+769541
+769543
+769547
+769553
+769577
+769579
+769589
+769591
+769597
+769619
+769627
+769661
+769663
+769673
+769687
+769723
+769729
+769733
+769739
+769751
+769781
+769789
+769799
+769807
+769837
+769871
+769903
+769919
+769927
+769943
+769961
+769963
+769973
+769987
+769997
+769999
+770027
+770039
+770041
+770047
+770053
+770057
+770059
+770069
+770101
+770111
+770113
+770123
+770129
+770167
+770177
+770179
+770183
+770191
+770207
+770227
+770233
+770239
+770261
+770281
+770291
+770309
+770311
+770353
+770359
+770387
+770401
+770417
+770437
+770447
+770449
+770459
+770503
+770519
+770527
+770533
+770537
+770551
+770557
+770573
+770579
+770587
+770591
+770597
+770611
+770639
+770641
+770647
+770657
+770663
+770669
+770741
+770761
+770767
+770771
+770789
+770801
+770813
+770837
+770839
+770843
+770863
+770867
+770873
+770881
+770897
+770909
+770927
+770929
+770951
+770971
+770981
+770993
+771011
+771013
+771019
+771031
+771037
+771047
+771049
+771073
+771079
+771091
+771109
+771143
+771163
+771179
+771181
+771209
+771217
+771227
+771233
+771269
+771283
+771289
+771293
+771299
+771301
+771349
+771359
+771389
+771401
+771403
+771427
+771431
+771437
+771439
+771461
+771473
+771481
+771499
+771503
+771509
+771517
+771527
+771553
+771569
+771583
+771587
+771607
+771619
+771623
+771629
+771637
+771643
+771653
+771679
+771691
+771697
+771703
+771739
+771763
+771769
+771781
+771809
+771853
+771863
+771877
+771887
+771889
+771899
+771917
+771937
+771941
+771961
+771971
+771973
+771997
+772001
+772003
+772019
+772061
+772073
+772081
+772091
+772097
+772127
+772139
+772147
+772159
+772169
+772181
+772207
+772229
+772231
+772273
+772279
+772297
+772313
+772333
+772339
+772349
+772367
+772379
+772381
+772391
+772393
+772403
+772439
+772441
+772451
+772459
+772477
+772493
+772517
+772537
+772567
+772571
+772573
+772591
+772619
+772631
+772649
+772657
+772661
+772663
+772669
+772691
+772697
+772703
+772721
+772757
+772771
+772789
+772843
+772847
+772853
+772859
+772867
+772903
+772907
+772909
+772913
+772921
+772949
+772963
+772987
+772991
+773021
+773023
+773027
+773029
+773039
+773057
+773063
+773081
+773083
+773093
+773117
+773147
+773153
+773159
+773207
+773209
+773231
+773239
+773249
+773251
+773273
+773287
+773299
+773317
+773341
+773363
+773371
+773387
+773393
+773407
+773417
+773447
+773453
+773473
+773491
+773497
+773501
+773533
+773537
+773561
+773567
+773569
+773579
+773599
+773603
+773609
+773611
+773657
+773659
+773681
+773683
+773693
+773713
+773719
+773723
+773767
+773777
+773779
+773803
+773821
+773831
+773837
+773849
+773863
+773867
+773869
+773879
+773897
+773909
+773933
+773939
+773951
+773953
+773987
+773989
+773999
+774001
+774017
+774023
+774047
+774071
+774073
+774083
+774107
+774119
+774127
+774131
+774133
+774143
+774149
+774161
+774173
+774181
+774199
+774217
+774223
+774229
+774233
+774239
+774283
+774289
+774313
+774317
+774337
+774343
+774377
+774427
+774439
+774463
+774467
+774491
+774511
+774523
+774541
+774551
+774577
+774583
+774589
+774593
+774601
+774629
+774643
+774661
+774667
+774671
+774679
+774691
+774703
+774733
+774757
+774773
+774779
+774791
+774797
+774799
+774803
+774811
+774821
+774833
+774853
+774857
+774863
+774901
+774919
+774929
+774931
+774959
+774997
+775007
+775037
+775043
+775057
+775063
+775079
+775087
+775091
+775097
+775121
+775147
+775153
+775157
+775163
+775189
+775193
+775237
+775241
+775259
+775267
+775273
+775309
+775343
+775349
+775361
+775363
+775367
+775393
+775417
+775441
+775451
+775477
+775507
+775513
+775517
+775531
+775553
+775573
+775601
+775603
+775613
+775627
+775633
+775639
+775661
+775669
+775681
+775711
+775729
+775739
+775741
+775757
+775777
+775787
+775807
+775811
+775823
+775861
+775871
+775889
+775919
+775933
+775937
+775939
+775949
+775963
+775987
+776003
+776029
+776047
+776057
+776059
+776077
+776099
+776117
+776119
+776137
+776143
+776159
+776173
+776177
+776179
+776183
+776201
+776219
+776221
+776233
+776249
+776257
+776267
+776287
+776317
+776327
+776357
+776389
+776401
+776429
+776449
+776453
+776467
+776471
+776483
+776497
+776507
+776513
+776521
+776551
+776557
+776561
+776563
+776569
+776599
+776627
+776651
+776683
+776693
+776719
+776729
+776749
+776753
+776759
+776801
+776813
+776819
+776837
+776851
+776861
+776869
+776879
+776887
+776899
+776921
+776947
+776969
+776977
+776983
+776987
+777001
+777011
+777013
+777031
+777041
+777071
+777097
+777103
+777109
+777137
+777143
+777151
+777167
+777169
+777173
+777181
+777187
+777191
+777199
+777209
+777221
+777241
+777247
+777251
+777269
+777277
+777313
+777317
+777349
+777353
+777373
+777383
+777389
+777391
+777419
+777421
+777431
+777433
+777437
+777451
+777463
+777473
+777479
+777541
+777551
+777571
+777583
+777589
+777617
+777619
+777641
+777643
+777661
+777671
+777677
+777683
+777731
+777737
+777743
+777761
+777769
+777781
+777787
+777817
+777839
+777857
+777859
+777863
+777871
+777877
+777901
+777911
+777919
+777977
+777979
+777989
+778013
+778027
+778049
+778051
+778061
+778079
+778081
+778091
+778097
+778109
+778111
+778121
+778123
+778153
+778163
+778187
+778201
+778213
+778223
+778237
+778241
+778247
+778301
+778307
+778313
+778319
+778333
+778357
+778361
+778363
+778391
+778397
+778403
+778409
+778417
+778439
+778469
+778507
+778511
+778513
+778523
+778529
+778537
+778541
+778553
+778559
+778567
+778579
+778597
+778633
+778643
+778663
+778667
+778681
+778693
+778697
+778699
+778709
+778717
+778727
+778733
+778759
+778763
+778769
+778777
+778793
+778819
+778831
+778847
+778871
+778873
+778879
+778903
+778907
+778913
+778927
+778933
+778951
+778963
+778979
+778993
+779003
+779011
+779021
+779039
+779063
+779069
+779081
+779101
+779111
+779131
+779137
+779159
+779173
+779189
+779221
+779231
+779239
+779249
+779267
+779327
+779329
+779341
+779347
+779351
+779353
+779357
+779377
+779413
+779477
+779489
+779507
+779521
+779531
+779543
+779561
+779563
+779573
+779579
+779591
+779593
+779599
+779609
+779617
+779621
+779657
+779659
+779663
+779693
+779699
+779707
+779731
+779747
+779749
+779761
+779767
+779771
+779791
+779797
+779827
+779837
+779869
+779873
+779879
+779887
+779899
+779927
+779939
+779971
+779981
+779983
+779993
+780029
+780037
+780041
+780047
+780049
+780061
+780119
+780127
+780163
+780173
+780179
+780191
+780193
+780211
+780223
+780233
+780253
+780257
+780287
+780323
+780343
+780347
+780371
+780379
+780383
+780389
+780397
+780401
+780421
+780433
+780457
+780469
+780499
+780523
+780553
+780583
+780587
+780601
+780613
+780631
+780649
+780667
+780671
+780679
+780683
+780697
+780707
+780719
+780721
+780733
+780799
+780803
+780809
+780817
+780823
+780833
+780841
+780851
+780853
+780869
+780877
+780887
+780889
+780917
+780931
+780953
+780961
+780971
+780973
+780991
+781003
+781007
+781021
+781043
+781051
+781063
+781069
+781087
+781111
+781117
+781127
+781129
+781139
+781163
+781171
+781199
+781211
+781217
+781229
+781243
+781247
+781271
+781283
+781301
+781307
+781309
+781321
+781327
+781351
+781357
+781367
+781369
+781387
+781397
+781399
+781409
+781423
+781427
+781433
+781453
+781481
+781483
+781493
+781511
+781513
+781519
+781523
+781531
+781559
+781567
+781589
+781601
+781607
+781619
+781631
+781633
+781661
+781673
+781681
+781721
+781733
+781741
+781771
+781799
+781801
+781817
+781819
+781853
+781861
+781867
+781883
+781889
+781897
+781919
+781951
+781961
+781967
+781969
+781973
+781987
+781997
+781999
+782003
+782009
+782011
+782053
+782057
+782071
+782083
+782087
+782107
+782113
+782123
+782129
+782137
+782141
+782147
+782149
+782183
+782189
+782191
+782209
+782219
+782231
+782251
+782263
+782267
+782297
+782311
+782329
+782339
+782371
+782381
+782387
+782389
+782393
+782429
+782443
+782461
+782473
+782489
+782497
+782501
+782519
+782539
+782581
+782611
+782641
+782659
+782669
+782671
+782687
+782689
+782707
+782711
+782723
+782777
+782783
+782791
+782839
+782849
+782861
+782891
+782911
+782921
+782941
+782963
+782981
+782983
+782993
+783007
+783011
+783019
+783023
+783043
+783077
+783089
+783119
+783121
+783131
+783137
+783143
+783149
+783151
+783191
+783193
+783197
+783227
+783247
+783257
+783259
+783269
+783283
+783317
+783323
+783329
+783337
+783359
+783361
+783373
+783379
+783407
+783413
+783421
+783473
+783487
+783527
+783529
+783533
+783553
+783557
+783569
+783571
+783599
+783613
+783619
+783641
+783647
+783661
+783677
+783689
+783691
+783701
+783703
+783707
+783719
+783721
+783733
+783737
+783743
+783749
+783763
+783767
+783779
+783781
+783787
+783791
+783793
+783799
+783803
+783829
+783869
+783877
+783931
+783953
+784009
+784039
+784061
+784081
+784087
+784097
+784103
+784109
+784117
+784129
+784153
+784171
+784181
+784183
+784211
+784213
+784219
+784229
+784243
+784249
+784283
+784307
+784309
+784313
+784321
+784327
+784349
+784351
+784367
+784373
+784379
+784387
+784409
+784411
+784423
+784447
+784451
+784457
+784463
+784471
+784481
+784489
+784501
+784513
+784541
+784543
+784547
+784561
+784573
+784577
+784583
+784603
+784627
+784649
+784661
+784687
+784697
+784717
+784723
+784727
+784753
+784789
+784799
+784831
+784837
+784841
+784859
+784867
+784897
+784913
+784919
+784939
+784957
+784961
+784981
+785003
+785017
+785033
+785053
+785093
+785101
+785107
+785119
+785123
+785129
+785143
+785153
+785159
+785167
+785203
+785207
+785219
+785221
+785227
+785249
+785269
+785287
+785293
+785299
+785303
+785311
+785321
+785329
+785333
+785341
+785347
+785353
+785357
+785363
+785377
+785413
+785423
+785431
+785459
+785461
+785483
+785501
+785503
+785527
+785537
+785549
+785569
+785573
+785579
+785591
+785597
+785623
+785627
+785641
+785651
+785671
+785693
+785717
+785731
+785737
+785753
+785773
+785777
+785779
+785801
+785803
+785809
+785839
+785857
+785861
+785879
+785903
+785921
+785923
+785947
+785951
+785963
+786001
+786013
+786017
+786031
+786047
+786053
+786059
+786061
+786077
+786109
+786127
+786151
+786167
+786173
+786179
+786197
+786211
+786223
+786241
+786251
+786271
+786307
+786311
+786319
+786329
+786337
+786349
+786371
+786407
+786419
+786431
+786433
+786449
+786469
+786491
+786547
+786551
+786553
+786587
+786589
+786613
+786629
+786659
+786661
+786673
+786691
+786697
+786701
+786703
+786707
+786719
+786739
+786763
+786803
+786823
+786829
+786833
+786859
+786881
+786887
+786889
+786901
+786931
+786937
+786941
+786949
+786959
+786971
+786979
+786983
+787021
+787043
+787051
+787057
+787067
+787069
+787079
+787091
+787099
+787123
+787139
+787153
+787181
+787187
+787207
+787217
+787243
+787261
+787277
+787289
+787309
+787331
+787333
+787337
+787357
+787361
+787427
+787429
+787433
+787439
+787447
+787469
+787477
+787483
+787489
+787513
+787517
+787519
+787529
+787537
+787541
+787547
+787573
+787601
+787609
+787621
+787639
+787649
+787667
+787697
+787711
+787747
+787751
+787757
+787769
+787771
+787777
+787783
+787793
+787807
+787811
+787817
+787823
+787837
+787879
+787883
+787903
+787907
+787939
+787973
+787981
+787993
+787999
+788009
+788023
+788027
+788033
+788041
+788071
+788077
+788087
+788089
+788093
+788107
+788129
+788153
+788159
+788167
+788173
+788189
+788209
+788213
+788231
+788261
+788267
+788287
+788309
+788317
+788321
+788351
+788353
+788357
+788363
+788369
+788377
+788383
+788387
+788393
+788399
+788413
+788419
+788429
+788449
+788467
+788479
+788497
+788521
+788527
+788531
+788537
+788549
+788561
+788563
+788569
+788603
+788621
+788651
+788659
+788677
+788687
+788701
+788719
+788761
+788779
+788789
+788813
+788819
+788849
+788863
+788867
+788869
+788873
+788891
+788897
+788903
+788927
+788933
+788941
+788947
+788959
+788971
+788993
+788999
+789001
+789017
+789029
+789031
+789067
+789077
+789091
+789097
+789101
+789109
+789121
+789133
+789137
+789149
+789169
+789181
+789221
+789227
+789251
+789311
+789323
+789331
+789343
+789367
+789377
+789389
+789391
+789407
+789419
+789443
+789473
+789491
+789493
+789511
+789527
+789533
+789557
+789571
+789577
+789587
+789589
+789611
+789623
+789631
+789653
+789671
+789673
+789683
+789689
+789709
+789713
+789721
+789731
+789739
+789749
+789793
+789823
+789829
+789847
+789851
+789857
+789883
+789941
+789959
+789961
+789967
+789977
+789979
+790003
+790021
+790033
+790043
+790051
+790057
+790063
+790087
+790093
+790099
+790121
+790169
+790171
+790189
+790199
+790201
+790219
+790241
+790261
+790271
+790277
+790289
+790291
+790327
+790331
+790333
+790351
+790369
+790379
+790397
+790403
+790417
+790421
+790429
+790451
+790459
+790481
+790501
+790513
+790519
+790523
+790529
+790547
+790567
+790583
+790589
+790607
+790613
+790633
+790637
+790649
+790651
+790693
+790697
+790703
+790709
+790733
+790739
+790747
+790753
+790781
+790793
+790817
+790819
+790831
+790843
+790861
+790871
+790879
+790883
+790897
+790927
+790957
+790961
+790967
+790969
+790991
+790997
+791003
+791009
+791017
+791029
+791047
+791053
+791081
+791093
+791099
+791111
+791117
+791137
+791159
+791191
+791201
+791209
+791227
+791233
+791251
+791257
+791261
+791291
+791309
+791311
+791317
+791321
+791347
+791363
+791377
+791387
+791411
+791419
+791431
+791443
+791447
+791473
+791489
+791519
+791543
+791561
+791563
+791569
+791573
+791599
+791627
+791629
+791657
+791663
+791677
+791699
+791773
+791783
+791789
+791797
+791801
+791803
+791827
+791849
+791851
+791887
+791891
+791897
+791899
+791909
+791927
+791929
+791933
+791951
+791969
+791971
+791993
+792023
+792031
+792037
+792041
+792049
+792061
+792067
+792073
+792101
+792107
+792109
+792119
+792131
+792151
+792163
+792179
+792223
+792227
+792229
+792241
+792247
+792257
+792263
+792277
+792283
+792293
+792299
+792301
+792307
+792317
+792359
+792371
+792377
+792383
+792397
+792413
+792443
+792461
+792479
+792481
+792487
+792521
+792529
+792551
+792553
+792559
+792563
+792581
+792593
+792601
+792613
+792629
+792637
+792641
+792643
+792647
+792667
+792679
+792689
+792691
+792697
+792703
+792709
+792713
+792731
+792751
+792769
+792793
+792797
+792821
+792871
+792881
+792893
+792907
+792919
+792929
+792941
+792959
+792973
+792983
+792989
+792991
+793043
+793069
+793099
+793103
+793123
+793129
+793139
+793159
+793181
+793187
+793189
+793207
+793229
+793253
+793279
+793297
+793301
+793327
+793333
+793337
+793343
+793379
+793399
+793439
+793447
+793453
+793487
+793489
+793493
+793511
+793517
+793519
+793537
+793547
+793553
+793561
+793591
+793601
+793607
+793621
+793627
+793633
+793669
+793673
+793691
+793699
+793711
+793717
+793721
+793733
+793739
+793757
+793769
+793777
+793787
+793789
+793813
+793841
+793843
+793853
+793867
+793889
+793901
+793927
+793931
+793939
+793957
+793967
+793979
+793981
+793999
+794009
+794011
+794023
+794033
+794039
+794041
+794063
+794071
+794077
+794089
+794111
+794113
+794119
+794137
+794141
+794149
+794153
+794161
+794173
+794179
+794191
+794201
+794203
+794207
+794221
+794231
+794239
+794249
+794327
+794341
+794363
+794383
+794389
+794399
+794407
+794413
+794449
+794471
+794473
+794477
+794483
+794491
+794509
+794531
+794537
+794543
+794551
+794557
+794569
+794579
+794587
+794593
+794641
+794653
+794657
+794659
+794669
+794693
+794711
+794741
+794743
+794749
+794779
+794831
+794879
+794881
+794887
+794921
+794923
+794953
+794957
+794993
+794999
+795001
+795007
+795023
+795071
+795077
+795079
+795083
+795097
+795101
+795103
+795121
+795127
+795139
+795149
+795161
+795187
+795203
+795211
+795217
+795233
+795239
+795251
+795253
+795299
+795307
+795323
+795329
+795337
+795343
+795349
+795427
+795449
+795461
+795467
+795479
+795493
+795503
+795517
+795527
+795533
+795539
+795551
+795581
+795589
+795601
+795643
+795647
+795649
+795653
+795659
+795661
+795667
+795679
+795703
+795709
+795713
+795727
+795737
+795761
+795763
+795791
+795793
+795797
+795799
+795803
+795827
+795829
+795871
+795877
+795913
+795917
+795931
+795937
+795941
+795943
+795947
+795979
+795983
+795997
+796001
+796009
+796063
+796067
+796091
+796121
+796139
+796141
+796151
+796171
+796177
+796181
+796189
+796193
+796217
+796247
+796259
+796267
+796291
+796303
+796307
+796337
+796339
+796361
+796363
+796373
+796379
+796387
+796391
+796409
+796447
+796451
+796459
+796487
+796493
+796517
+796531
+796541
+796553
+796561
+796567
+796571
+796583
+796591
+796619
+796633
+796657
+796673
+796687
+796693
+796699
+796709
+796711
+796751
+796759
+796769
+796777
+796781
+796799
+796801
+796813
+796819
+796847
+796849
+796853
+796867
+796871
+796877
+796889
+796921
+796931
+796933
+796937
+796951
+796967
+796969
+796981
+797003
+797009
+797021
+797029
+797033
+797039
+797051
+797053
+797057
+797063
+797077
+797119
+797131
+797143
+797161
+797171
+797201
+797207
+797273
+797281
+797287
+797309
+797311
+797333
+797353
+797359
+797383
+797389
+797399
+797417
+797429
+797473
+797497
+797507
+797509
+797539
+797549
+797551
+797557
+797561
+797567
+797569
+797579
+797581
+797591
+797593
+797611
+797627
+797633
+797647
+797681
+797689
+797701
+797711
+797729
+797743
+797747
+797767
+797773
+797813
+797833
+797851
+797869
+797887
+797897
+797911
+797917
+797933
+797947
+797957
+797977
+797987
+798023
+798043
+798059
+798067
+798071
+798079
+798089
+798097
+798101
+798121
+798131
+798139
+798143
+798151
+798173
+798179
+798191
+798197
+798199
+798221
+798223
+798227
+798251
+798257
+798263
+798271
+798293
+798319
+798331
+798373
+798383
+798397
+798403
+798409
+798443
+798451
+798461
+798481
+798487
+798503
+798517
+798521
+798527
+798533
+798569
+798599
+798613
+798641
+798647
+798649
+798667
+798691
+798697
+798701
+798713
+798727
+798737
+798751
+798757
+798773
+798781
+798799
+798823
+798871
+798887
+798911
+798923
+798929
+798937
+798943
+798961
+799003
+799021
+799031
+799061
+799063
+799091
+799093
+799103
+799147
+799151
+799171
+799217
+799219
+799223
+799259
+799291
+799301
+799303
+799307
+799313
+799333
+799343
+799361
+799363
+799369
+799417
+799427
+799441
+799453
+799471
+799481
+799483
+799489
+799507
+799523
+799529
+799543
+799553
+799573
+799609
+799613
+799619
+799621
+799633
+799637
+799651
+799657
+799661
+799679
+799723
+799727
+799739
+799741
+799753
+799759
+799789
+799801
+799807
+799817
+799837
+799853
+799859
+799873
+799891
+799921
+799949
+799961
+799979
+799991
+799993
+799999
+800011
+800029
+800053
+800057
+800077
+800083
+800089
+800113
+800117
+800119
+800123
+800131
+800143
+800159
+800161
+800171
+800209
+800213
+800221
+800231
+800237
+800243
+800281
+800287
+800291
+800311
+800329
+800333
+800351
+800357
+800399
+800407
+800417
+800419
+800441
+800447
+800473
+800477
+800483
+800497
+800509
+800519
+800521
+800533
+800537
+800539
+800549
+800557
+800573
+800587
+800593
+800599
+800621
+800623
+800647
+800651
+800659
+800663
+800669
+800677
+800687
+800693
+800707
+800711
+800729
+800731
+800741
+800743
+800759
+800773
+800783
+800801
+800861
+800873
+800879
+800897
+800903
+800909
+800923
+800953
+800959
+800971
+800977
+800993
+800999
+801001
+801007
+801011
+801019
+801037
+801061
+801077
+801079
+801103
+801107
+801127
+801137
+801179
+801187
+801197
+801217
+801247
+801277
+801289
+801293
+801301
+801331
+801337
+801341
+801349
+801371
+801379
+801403
+801407
+801419
+801421
+801461
+801469
+801487
+801503
+801517
+801539
+801551
+801557
+801569
+801571
+801607
+801611
+801617
+801631
+801641
+801677
+801683
+801701
+801707
+801709
+801733
+801761
+801791
+801809
+801811
+801817
+801833
+801841
+801859
+801883
+801947
+801949
+801959
+801973
+801989
+802007
+802019
+802027
+802031
+802037
+802073
+802103
+802121
+802127
+802129
+802133
+802141
+802147
+802159
+802163
+802177
+802181
+802183
+802189
+802231
+802253
+802279
+802283
+802297
+802331
+802339
+802357
+802387
+802421
+802441
+802453
+802463
+802471
+802499
+802511
+802523
+802531
+802573
+802583
+802589
+802597
+802603
+802609
+802643
+802649
+802651
+802661
+802667
+802709
+802721
+802729
+802733
+802751
+802759
+802777
+802783
+802787
+802793
+802799
+802811
+802829
+802831
+802873
+802909
+802913
+802933
+802951
+802969
+802979
+802987
+803027
+803041
+803053
+803057
+803059
+803087
+803093
+803119
+803141
+803171
+803189
+803207
+803227
+803237
+803251
+803269
+803273
+803287
+803311
+803323
+803333
+803347
+803359
+803389
+803393
+803399
+803417
+803441
+803443
+803447
+803449
+803461
+803479
+803483
+803497
+803501
+803513
+803519
+803549
+803587
+803591
+803609
+803611
+803623
+803629
+803651
+803659
+803669
+803687
+803717
+803729
+803731
+803741
+803749
+803813
+803819
+803849
+803857
+803867
+803893
+803897
+803911
+803921
+803927
+803939
+803963
+803977
+803987
+803989
+804007
+804017
+804031
+804043
+804059
+804073
+804077
+804091
+804107
+804113
+804119
+804127
+804157
+804161
+804179
+804191
+804197
+804203
+804211
+804239
+804259
+804281
+804283
+804313
+804317
+804329
+804337
+804341
+804367
+804371
+804383
+804409
+804443
+804449
+804473
+804493
+804497
+804511
+804521
+804523
+804541
+804553
+804571
+804577
+804581
+804589
+804607
+804611
+804613
+804619
+804653
+804689
+804697
+804703
+804709
+804743
+804751
+804757
+804761
+804767
+804803
+804823
+804829
+804833
+804847
+804857
+804877
+804889
+804893
+804901
+804913
+804919
+804929
+804941
+804943
+804983
+804989
+804997
+805019
+805027
+805031
+805033
+805037
+805061
+805067
+805073
+805081
+805097
+805099
+805109
+805111
+805121
+805153
+805159
+805177
+805187
+805213
+805219
+805223
+805241
+805249
+805267
+805271
+805279
+805289
+805297
+805309
+805313
+805327
+805331
+805333
+805339
+805369
+805381
+805397
+805403
+805421
+805451
+805463
+805471
+805487
+805499
+805501
+805507
+805517
+805523
+805531
+805537
+805559
+805573
+805583
+805589
+805633
+805639
+805687
+805703
+805711
+805723
+805729
+805741
+805757
+805789
+805799
+805807
+805811
+805843
+805853
+805859
+805867
+805873
+805877
+805891
+805901
+805913
+805933
+805967
+805991
+806009
+806011
+806017
+806023
+806027
+806033
+806041
+806051
+806059
+806087
+806107
+806111
+806129
+806137
+806153
+806159
+806177
+806203
+806213
+806233
+806257
+806261
+806263
+806269
+806291
+806297
+806317
+806329
+806363
+806369
+806371
+806381
+806383
+806389
+806447
+806453
+806467
+806483
+806503
+806513
+806521
+806543
+806549
+806579
+806581
+806609
+806639
+806657
+806671
+806719
+806737
+806761
+806783
+806789
+806791
+806801
+806807
+806821
+806857
+806893
+806903
+806917
+806929
+806941
+806947
+806951
+806977
+806999
+807011
+807017
+807071
+807077
+807083
+807089
+807097
+807113
+807119
+807127
+807151
+807181
+807187
+807193
+807197
+807203
+807217
+807221
+807241
+807251
+807259
+807281
+807299
+807337
+807371
+807379
+807383
+807403
+807407
+807409
+807419
+807427
+807463
+807473
+807479
+807487
+807491
+807493
+807509
+807511
+807523
+807539
+807559
+807571
+807607
+807613
+807629
+807637
+807647
+807689
+807707
+807731
+807733
+807749
+807757
+807787
+807797
+807809
+807817
+807869
+807871
+807901
+807907
+807923
+807931
+807941
+807943
+807949
+807973
+807997
+808019
+808021
+808039
+808081
+808097
+808111
+808147
+808153
+808169
+808177
+808187
+808211
+808217
+808229
+808237
+808261
+808267
+808307
+808309
+808343
+808349
+808351
+808361
+808363
+808369
+808373
+808391
+808399
+808417
+808421
+808439
+808441
+808459
+808481
+808517
+808523
+808553
+808559
+808579
+808589
+808597
+808601
+808603
+808627
+808637
+808651
+808679
+808681
+808693
+808699
+808721
+808733
+808739
+808747
+808751
+808771
+808777
+808789
+808793
+808837
+808853
+808867
+808919
+808937
+808957
+808961
+808981
+808991
+808993
+809023
+809041
+809051
+809063
+809087
+809093
+809101
+809141
+809143
+809147
+809173
+809177
+809189
+809201
+809203
+809213
+809231
+809239
+809243
+809261
+809269
+809273
+809297
+809309
+809323
+809339
+809357
+809359
+809377
+809383
+809399
+809401
+809407
+809423
+809437
+809443
+809447
+809453
+809461
+809491
+809507
+809521
+809527
+809563
+809569
+809579
+809581
+809587
+809603
+809629
+809701
+809707
+809719
+809729
+809737
+809741
+809747
+809749
+809759
+809771
+809779
+809797
+809801
+809803
+809821
+809827
+809833
+809839
+809843
+809869
+809891
+809903
+809909
+809917
+809929
+809981
+809983
+809993
+810013
+810023
+810049
+810053
+810059
+810071
+810079
+810091
+810109
+810137
+810149
+810151
+810191
+810193
+810209
+810223
+810239
+810253
+810259
+810269
+810281
+810307
+810319
+810343
+810349
+810353
+810361
+810367
+810377
+810379
+810389
+810391
+810401
+810409
+810419
+810427
+810437
+810443
+810457
+810473
+810487
+810493
+810503
+810517
+810533
+810539
+810541
+810547
+810553
+810571
+810581
+810583
+810587
+810643
+810653
+810659
+810671
+810697
+810737
+810757
+810763
+810769
+810791
+810809
+810839
+810853
+810871
+810881
+810893
+810907
+810913
+810923
+810941
+810949
+810961
+810967
+810973
+810989
+811037
+811039
+811067
+811081
+811099
+811123
+811127
+811147
+811157
+811163
+811171
+811183
+811193
+811199
+811207
+811231
+811241
+811253
+811259
+811273
+811277
+811289
+811297
+811337
+811351
+811379
+811387
+811411
+811429
+811441
+811457
+811469
+811493
+811501
+811511
+811519
+811523
+811553
+811561
+811583
+811607
+811619
+811627
+811637
+811649
+811651
+811667
+811691
+811697
+811703
+811709
+811729
+811747
+811753
+811757
+811763
+811771
+811777
+811799
+811819
+811861
+811871
+811879
+811897
+811919
+811931
+811933
+811957
+811961
+811981
+811991
+811997
+812011
+812033
+812047
+812051
+812057
+812081
+812101
+812129
+812137
+812167
+812173
+812179
+812183
+812191
+812213
+812221
+812233
+812249
+812257
+812267
+812281
+812297
+812299
+812309
+812341
+812347
+812351
+812353
+812359
+812363
+812381
+812387
+812393
+812401
+812431
+812443
+812467
+812473
+812477
+812491
+812501
+812503
+812519
+812527
+812587
+812597
+812599
+812627
+812633
+812639
+812641
+812671
+812681
+812689
+812699
+812701
+812711
+812717
+812731
+812759
+812761
+812807
+812849
+812857
+812869
+812921
+812939
+812963
+812969
+813013
+813017
+813023
+813041
+813049
+813061
+813083
+813089
+813091
+813097
+813107
+813121
+813133
+813157
+813167
+813199
+813203
+813209
+813217
+813221
+813227
+813251
+813269
+813277
+813283
+813287
+813299
+813301
+813311
+813343
+813361
+813367
+813377
+813383
+813401
+813419
+813427
+813443
+813493
+813499
+813503
+813511
+813529
+813541
+813559
+813577
+813583
+813601
+813613
+813623
+813647
+813677
+813697
+813707
+813721
+813749
+813767
+813797
+813811
+813817
+813829
+813833
+813847
+813863
+813871
+813893
+813907
+813931
+813961
+813971
+813991
+813997
+814003
+814007
+814013
+814019
+814031
+814043
+814049
+814061
+814063
+814067
+814069
+814081
+814097
+814127
+814129
+814139
+814171
+814183
+814193
+814199
+814211
+814213
+814237
+814241
+814243
+814279
+814309
+814327
+814337
+814367
+814379
+814381
+814393
+814399
+814403
+814423
+814447
+814469
+814477
+814493
+814501
+814531
+814537
+814543
+814559
+814577
+814579
+814601
+814603
+814609
+814631
+814633
+814643
+814687
+814699
+814717
+814741
+814747
+814763
+814771
+814783
+814789
+814799
+814823
+814829
+814841
+814859
+814873
+814883
+814889
+814901
+814903
+814927
+814937
+814939
+814943
+814949
+814991
+815029
+815033
+815047
+815053
+815063
+815123
+815141
+815149
+815159
+815173
+815197
+815209
+815231
+815251
+815257
+815261
+815273
+815279
+815291
+815317
+815333
+815341
+815351
+815389
+815401
+815411
+815413
+815417
+815431
+815453
+815459
+815471
+815491
+815501
+815519
+815527
+815533
+815539
+815543
+815569
+815587
+815599
+815621
+815623
+815627
+815653
+815663
+815669
+815671
+815681
+815687
+815693
+815713
+815729
+815809
+815819
+815821
+815831
+815851
+815869
+815891
+815897
+815923
+815933
+815939
+815953
+815963
+815977
+815989
+816019
+816037
+816043
+816047
+816077
+816091
+816103
+816113
+816121
+816131
+816133
+816157
+816161
+816163
+816169
+816191
+816203
+816209
+816217
+816223
+816227
+816239
+816251
+816271
+816317
+816329
+816341
+816353
+816367
+816377
+816401
+816427
+816443
+816451
+816469
+816499
+816521
+816539
+816547
+816559
+816581
+816587
+816589
+816593
+816649
+816653
+816667
+816689
+816691
+816703
+816709
+816743
+816763
+816769
+816779
+816811
+816817
+816821
+816839
+816841
+816847
+816857
+816859
+816869
+816883
+816887
+816899
+816911
+816917
+816919
+816929
+816941
+816947
+816961
+816971
+817013
+817027
+817039
+817049
+817051
+817073
+817081
+817087
+817093
+817111
+817123
+817127
+817147
+817151
+817153
+817163
+817169
+817183
+817211
+817237
+817273
+817277
+817279
+817291
+817303
+817319
+817321
+817331
+817337
+817357
+817379
+817403
+817409
+817433
+817457
+817463
+817483
+817519
+817529
+817549
+817561
+817567
+817603
+817637
+817651
+817669
+817679
+817697
+817709
+817711
+817721
+817723
+817727
+817757
+817769
+817777
+817783
+817787
+817793
+817823
+817837
+817841
+817867
+817871
+817877
+817889
+817891
+817897
+817907
+817913
+817919
+817933
+817951
+817979
+817987
+818011
+818017
+818021
+818093
+818099
+818101
+818113
+818123
+818143
+818171
+818173
+818189
+818219
+818231
+818239
+818249
+818281
+818287
+818291
+818303
+818309
+818327
+818339
+818341
+818347
+818353
+818359
+818371
+818383
+818393
+818399
+818413
+818429
+818453
+818473
+818509
+818561
+818569
+818579
+818581
+818603
+818621
+818659
+818683
+818687
+818689
+818707
+818717
+818723
+818813
+818819
+818821
+818827
+818837
+818887
+818897
+818947
+818959
+818963
+818969
+818977
+818999
+819001
+819017
+819029
+819031
+819037
+819061
+819073
+819083
+819101
+819131
+819149
+819157
+819167
+819173
+819187
+819229
+819239
+819241
+819251
+819253
+819263
+819271
+819289
+819307
+819311
+819317
+819319
+819367
+819373
+819389
+819391
+819407
+819409
+819419
+819431
+819437
+819443
+819449
+819457
+819463
+819473
+819487
+819491
+819493
+819499
+819503
+819509
+819523
+819563
+819583
+819593
+819607
+819617
+819619
+819629
+819647
+819653
+819659
+819673
+819691
+819701
+819719
+819737
+819739
+819761
+819769
+819773
+819781
+819787
+819799
+819811
+819823
+819827
+819829
+819853
+819899
+819911
+819913
+819937
+819943
+819977
+819989
+819991
+820037
+820051
+820067
+820073
+820093
+820109
+820117
+820129
+820133
+820163
+820177
+820187
+820201
+820213
+820223
+820231
+820241
+820243
+820247
+820271
+820273
+820279
+820319
+820321
+820331
+820333
+820343
+820349
+820361
+820367
+820399
+820409
+820411
+820427
+820429
+820441
+820459
+820481
+820489
+820537
+820541
+820559
+820577
+820597
+820609
+820619
+820627
+820637
+820643
+820649
+820657
+820679
+820681
+820691
+820711
+820723
+820733
+820747
+820753
+820759
+820763
+820789
+820793
+820837
+820873
+820891
+820901
+820907
+820909
+820921
+820927
+820957
+820969
+820991
+820997
+821003
+821027
+821039
+821053
+821057
+821063
+821069
+821081
+821089
+821099
+821101
+821113
+821131
+821143
+821147
+821153
+821167
+821173
+821207
+821209
+821263
+821281
+821291
+821297
+821311
+821329
+821333
+821377
+821383
+821411
+821441
+821449
+821459
+821461
+821467
+821477
+821479
+821489
+821497
+821507
+821519
+821551
+821573
+821603
+821641
+821647
+821651
+821663
+821677
+821741
+821747
+821753
+821759
+821771
+821801
+821803
+821809
+821819
+821827
+821833
+821851
+821857
+821861
+821869
+821879
+821897
+821911
+821939
+821941
+821971
+821993
+821999
+822007
+822011
+822013
+822037
+822049
+822067
+822079
+822113
+822131
+822139
+822161
+822163
+822167
+822169
+822191
+822197
+822221
+822223
+822229
+822233
+822253
+822259
+822277
+822293
+822299
+822313
+822317
+822323
+822329
+822343
+822347
+822361
+822379
+822383
+822389
+822391
+822407
+822431
+822433
+822517
+822539
+822541
+822551
+822553
+822557
+822571
+822581
+822587
+822589
+822599
+822607
+822611
+822631
+822667
+822671
+822673
+822683
+822691
+822697
+822713
+822721
+822727
+822739
+822743
+822761
+822763
+822781
+822791
+822793
+822803
+822821
+822823
+822839
+822853
+822881
+822883
+822889
+822893
+822901
+822907
+822949
+822971
+822973
+822989
+823001
+823003
+823013
+823033
+823051
+823117
+823127
+823129
+823153
+823169
+823177
+823183
+823201
+823219
+823231
+823237
+823241
+823243
+823261
+823271
+823283
+823309
+823337
+823349
+823351
+823357
+823373
+823399
+823421
+823447
+823451
+823457
+823481
+823483
+823489
+823499
+823519
+823541
+823547
+823553
+823573
+823591
+823601
+823619
+823621
+823637
+823643
+823651
+823663
+823679
+823703
+823709
+823717
+823721
+823723
+823727
+823729
+823741
+823747
+823759
+823777
+823787
+823789
+823799
+823819
+823829
+823831
+823841
+823843
+823877
+823903
+823913
+823961
+823967
+823969
+823981
+823993
+823997
+824017
+824029
+824039
+824063
+824069
+824077
+824081
+824099
+824123
+824137
+824147
+824179
+824183
+824189
+824191
+824227
+824231
+824233
+824269
+824281
+824287
+824339
+824393
+824399
+824401
+824413
+824419
+824437
+824443
+824459
+824477
+824489
+824497
+824501
+824513
+824531
+824539
+824563
+824591
+824609
+824641
+824647
+824651
+824669
+824671
+824683
+824699
+824701
+824723
+824741
+824749
+824753
+824773
+824777
+824779
+824801
+824821
+824833
+824843
+824861
+824893
+824899
+824911
+824921
+824933
+824939
+824947
+824951
+824977
+824981
+824983
+825001
+825007
+825017
+825029
+825047
+825049
+825059
+825067
+825073
+825101
+825107
+825109
+825131
+825161
+825191
+825193
+825199
+825203
+825229
+825241
+825247
+825259
+825277
+825281
+825283
+825287
+825301
+825329
+825337
+825343
+825347
+825353
+825361
+825389
+825397
+825403
+825413
+825421
+825439
+825443
+825467
+825479
+825491
+825509
+825527
+825533
+825547
+825551
+825553
+825577
+825593
+825611
+825613
+825637
+825647
+825661
+825679
+825689
+825697
+825701
+825709
+825733
+825739
+825749
+825763
+825779
+825791
+825821
+825827
+825829
+825857
+825883
+825889
+825919
+825947
+825959
+825961
+825971
+825983
+825991
+825997
+826019
+826037
+826039
+826051
+826061
+826069
+826087
+826093
+826097
+826129
+826151
+826153
+826169
+826171
+826193
+826201
+826211
+826271
+826283
+826289
+826303
+826313
+826333
+826339
+826349
+826351
+826363
+826379
+826381
+826391
+826393
+826403
+826411
+826453
+826477
+826493
+826499
+826541
+826549
+826559
+826561
+826571
+826583
+826603
+826607
+826613
+826621
+826663
+826667
+826669
+826673
+826681
+826697
+826699
+826711
+826717
+826723
+826729
+826753
+826759
+826783
+826799
+826807
+826811
+826831
+826849
+826867
+826879
+826883
+826907
+826921
+826927
+826939
+826957
+826963
+826967
+826979
+826997
+827009
+827023
+827039
+827041
+827063
+827087
+827129
+827131
+827143
+827147
+827161
+827213
+827227
+827231
+827251
+827269
+827293
+827303
+827311
+827327
+827347
+827369
+827389
+827417
+827423
+827429
+827443
+827447
+827461
+827473
+827501
+827521
+827537
+827539
+827549
+827581
+827591
+827599
+827633
+827639
+827677
+827681
+827693
+827699
+827719
+827737
+827741
+827767
+827779
+827791
+827803
+827809
+827821
+827833
+827837
+827843
+827851
+827857
+827867
+827873
+827899
+827903
+827923
+827927
+827929
+827941
+827969
+827987
+827989
+828007
+828011
+828013
+828029
+828043
+828059
+828067
+828071
+828101
+828109
+828119
+828127
+828131
+828133
+828169
+828199
+828209
+828221
+828239
+828277
+828349
+828361
+828371
+828379
+828383
+828397
+828407
+828409
+828431
+828449
+828517
+828523
+828547
+828557
+828577
+828587
+828601
+828637
+828643
+828649
+828673
+828677
+828691
+828697
+828701
+828703
+828721
+828731
+828743
+828757
+828787
+828797
+828809
+828811
+828823
+828829
+828833
+828859
+828871
+828881
+828889
+828899
+828901
+828917
+828923
+828941
+828953
+828967
+828977
+829001
+829013
+829057
+829063
+829069
+829093
+829097
+829111
+829121
+829123
+829151
+829159
+829177
+829187
+829193
+829211
+829223
+829229
+829237
+829249
+829267
+829273
+829289
+829319
+829349
+829399
+829453
+829457
+829463
+829469
+829501
+829511
+829519
+829537
+829547
+829561
+829601
+829613
+829627
+829637
+829639
+829643
+829657
+829687
+829693
+829709
+829721
+829723
+829727
+829729
+829733
+829757
+829789
+829811
+829813
+829819
+829831
+829841
+829847
+829849
+829867
+829877
+829883
+829949
+829967
+829979
+829987
+829993
+830003
+830017
+830041
+830051
+830099
+830111
+830117
+830131
+830143
+830153
+830173
+830177
+830191
+830233
+830237
+830257
+830267
+830279
+830293
+830309
+830311
+830327
+830329
+830339
+830341
+830353
+830359
+830363
+830383
+830387
+830411
+830413
+830419
+830441
+830447
+830449
+830477
+830483
+830497
+830503
+830513
+830549
+830551
+830561
+830567
+830579
+830587
+830591
+830597
+830617
+830639
+830657
+830677
+830693
+830719
+830729
+830741
+830743
+830777
+830789
+830801
+830827
+830833
+830839
+830849
+830861
+830873
+830887
+830891
+830899
+830911
+830923
+830939
+830957
+830981
+830989
+831023
+831031
+831037
+831043
+831067
+831071
+831073
+831091
+831109
+831139
+831161
+831163
+831167
+831191
+831217
+831221
+831239
+831253
+831287
+831301
+831323
+831329
+831361
+831367
+831371
+831373
+831407
+831409
+831431
+831433
+831437
+831443
+831461
+831503
+831529
+831539
+831541
+831547
+831553
+831559
+831583
+831587
+831599
+831617
+831619
+831631
+831643
+831647
+831653
+831659
+831661
+831679
+831683
+831697
+831707
+831709
+831713
+831731
+831739
+831751
+831757
+831769
+831781
+831799
+831811
+831821
+831829
+831847
+831851
+831863
+831881
+831889
+831893
+831899
+831911
+831913
+831917
+831967
+831983
+832003
+832063
+832079
+832081
+832103
+832109
+832121
+832123
+832129
+832141
+832151
+832157
+832159
+832189
+832211
+832217
+832253
+832291
+832297
+832309
+832327
+832331
+832339
+832361
+832367
+832369
+832373
+832379
+832399
+832411
+832421
+832427
+832451
+832457
+832477
+832483
+832487
+832493
+832499
+832519
+832583
+832591
+832597
+832607
+832613
+832621
+832627
+832631
+832633
+832639
+832673
+832679
+832681
+832687
+832693
+832703
+832709
+832717
+832721
+832729
+832747
+832757
+832763
+832771
+832787
+832801
+832837
+832841
+832861
+832879
+832883
+832889
+832913
+832919
+832927
+832933
+832943
+832957
+832963
+832969
+832973
+832987
+833009
+833023
+833033
+833047
+833057
+833099
+833101
+833117
+833171
+833177
+833179
+833191
+833197
+833201
+833219
+833251
+833269
+833281
+833293
+833299
+833309
+833347
+833353
+833363
+833377
+833389
+833429
+833449
+833453
+833461
+833467
+833477
+833479
+833491
+833509
+833537
+833557
+833563
+833593
+833597
+833617
+833633
+833659
+833669
+833689
+833711
+833713
+833717
+833719
+833737
+833747
+833759
+833783
+833801
+833821
+833839
+833843
+833857
+833873
+833887
+833893
+833897
+833923
+833927
+833933
+833947
+833977
+833999
+834007
+834013
+834023
+834059
+834107
+834131
+834133
+834137
+834143
+834149
+834151
+834181
+834199
+834221
+834257
+834259
+834269
+834277
+834283
+834287
+834299
+834311
+834341
+834367
+834433
+834439
+834469
+834487
+834497
+834503
+834511
+834523
+834527
+834569
+834571
+834593
+834599
+834607
+834611
+834623
+834629
+834641
+834643
+834653
+834671
+834703
+834709
+834721
+834761
+834773
+834781
+834787
+834797
+834809
+834811
+834829
+834857
+834859
+834893
+834913
+834941
+834947
+834949
+834959
+834961
+834983
+834991
+835001
+835013
+835019
+835033
+835039
+835097
+835099
+835117
+835123
+835139
+835141
+835207
+835213
+835217
+835249
+835253
+835271
+835313
+835319
+835321
+835327
+835369
+835379
+835391
+835399
+835421
+835427
+835441
+835451
+835453
+835459
+835469
+835489
+835511
+835531
+835553
+835559
+835591
+835603
+835607
+835609
+835633
+835643
+835661
+835663
+835673
+835687
+835717
+835721
+835733
+835739
+835759
+835789
+835811
+835817
+835819
+835823
+835831
+835841
+835847
+835859
+835897
+835909
+835927
+835931
+835937
+835951
+835957
+835973
+835979
+835987
+835993
+835997
+836047
+836063
+836071
+836107
+836117
+836131
+836137
+836149
+836153
+836159
+836161
+836183
+836189
+836191
+836203
+836219
+836233
+836239
+836243
+836267
+836291
+836299
+836317
+836327
+836347
+836351
+836369
+836377
+836387
+836413
+836449
+836471
+836477
+836491
+836497
+836501
+836509
+836567
+836569
+836573
+836609
+836611
+836623
+836657
+836663
+836677
+836683
+836699
+836701
+836707
+836713
+836729
+836747
+836749
+836753
+836761
+836789
+836807
+836821
+836833
+836839
+836861
+836863
+836873
+836879
+836881
+836917
+836921
+836939
+836951
+836971
+837017
+837043
+837047
+837059
+837071
+837073
+837077
+837079
+837107
+837113
+837139
+837149
+837157
+837191
+837203
+837257
+837271
+837283
+837293
+837307
+837313
+837359
+837367
+837373
+837377
+837379
+837409
+837413
+837439
+837451
+837461
+837467
+837497
+837503
+837509
+837521
+837533
+837583
+837601
+837611
+837619
+837631
+837659
+837667
+837673
+837677
+837679
+837721
+837731
+837737
+837773
+837779
+837797
+837817
+837833
+837847
+837853
+837887
+837923
+837929
+837931
+837937
+837943
+837979
+838003
+838021
+838037
+838039
+838043
+838063
+838069
+838091
+838093
+838099
+838133
+838139
+838141
+838153
+838157
+838169
+838171
+838193
+838207
+838247
+838249
+838349
+838351
+838363
+838367
+838379
+838391
+838393
+838399
+838403
+838421
+838429
+838441
+838447
+838459
+838463
+838471
+838483
+838517
+838547
+838553
+838561
+838571
+838583
+838589
+838597
+838601
+838609
+838613
+838631
+838633
+838657
+838667
+838687
+838693
+838711
+838751
+838757
+838769
+838771
+838777
+838781
+838807
+838813
+838837
+838853
+838889
+838897
+838909
+838913
+838919
+838927
+838931
+838939
+838949
+838951
+838963
+838969
+838991
+838993
+839009
+839029
+839051
+839071
+839087
+839117
+839131
+839161
+839203
+839207
+839221
+839227
+839261
+839269
+839303
+839323
+839327
+839351
+839353
+839369
+839381
+839413
+839429
+839437
+839441
+839453
+839459
+839471
+839473
+839483
+839491
+839497
+839519
+839539
+839551
+839563
+839599
+839603
+839609
+839611
+839617
+839621
+839633
+839651
+839653
+839669
+839693
+839723
+839731
+839767
+839771
+839791
+839801
+839809
+839831
+839837
+839873
+839879
+839887
+839897
+839899
+839903
+839911
+839921
+839957
+839959
+839963
+839981
+839999
+840023
+840053
+840061
+840067
+840083
+840109
+840137
+840139
+840149
+840163
+840179
+840181
+840187
+840197
+840223
+840239
+840241
+840253
+840269
+840277
+840289
+840299
+840319
+840331
+840341
+840347
+840353
+840439
+840451
+840457
+840467
+840473
+840479
+840491
+840523
+840547
+840557
+840571
+840589
+840601
+840611
+840643
+840661
+840683
+840703
+840709
+840713
+840727
+840733
+840743
+840757
+840761
+840767
+840817
+840821
+840823
+840839
+840841
+840859
+840863
+840907
+840911
+840923
+840929
+840941
+840943
+840967
+840979
+840989
+840991
+841003
+841013
+841019
+841021
+841063
+841069
+841079
+841081
+841091
+841097
+841103
+841147
+841157
+841189
+841193
+841207
+841213
+841219
+841223
+841231
+841237
+841241
+841259
+841273
+841277
+841283
+841289
+841297
+841307
+841327
+841333
+841349
+841369
+841391
+841397
+841411
+841427
+841447
+841457
+841459
+841541
+841549
+841559
+841573
+841597
+841601
+841637
+841651
+841661
+841663
+841691
+841697
+841727
+841741
+841751
+841793
+841801
+841849
+841859
+841873
+841879
+841889
+841913
+841921
+841927
+841931
+841933
+841979
+841987
+842003
+842021
+842041
+842047
+842063
+842071
+842077
+842081
+842087
+842089
+842111
+842113
+842141
+842147
+842159
+842161
+842167
+842173
+842183
+842203
+842209
+842249
+842267
+842279
+842291
+842293
+842311
+842321
+842323
+842339
+842341
+842351
+842353
+842371
+842383
+842393
+842399
+842407
+842417
+842419
+842423
+842447
+842449
+842473
+842477
+842483
+842489
+842497
+842507
+842519
+842521
+842531
+842551
+842581
+842587
+842599
+842617
+842623
+842627
+842657
+842701
+842729
+842747
+842759
+842767
+842771
+842791
+842801
+842813
+842819
+842857
+842869
+842879
+842887
+842923
+842939
+842951
+842957
+842969
+842977
+842981
+842987
+842993
+843043
+843067
+843079
+843091
+843103
+843113
+843127
+843131
+843137
+843173
+843179
+843181
+843209
+843211
+843229
+843253
+843257
+843289
+843299
+843301
+843307
+843331
+843347
+843361
+843371
+843377
+843379
+843383
+843397
+843443
+843449
+843457
+843461
+843473
+843487
+843497
+843503
+843527
+843539
+843553
+843559
+843587
+843589
+843607
+843613
+843629
+843643
+843649
+843677
+843679
+843701
+843737
+843757
+843763
+843779
+843781
+843793
+843797
+843811
+843823
+843833
+843841
+843881
+843883
+843889
+843901
+843907
+843911
+844001
+844013
+844043
+844061
+844069
+844087
+844093
+844111
+844117
+844121
+844127
+844139
+844141
+844153
+844157
+844163
+844183
+844187
+844199
+844201
+844243
+844247
+844253
+844279
+844289
+844297
+844309
+844321
+844351
+844369
+844421
+844427
+844429
+844433
+844439
+844447
+844453
+844457
+844463
+844469
+844483
+844489
+844499
+844507
+844511
+844513
+844517
+844523
+844549
+844553
+844601
+844603
+844609
+844619
+844621
+844631
+844639
+844643
+844651
+844709
+844717
+844733
+844757
+844763
+844769
+844771
+844777
+844841
+844847
+844861
+844867
+844891
+844897
+844903
+844913
+844927
+844957
+844999
+845003
+845017
+845021
+845027
+845041
+845069
+845083
+845099
+845111
+845129
+845137
+845167
+845179
+845183
+845197
+845203
+845209
+845219
+845231
+845237
+845261
+845279
+845287
+845303
+845309
+845333
+845347
+845357
+845363
+845371
+845381
+845387
+845431
+845441
+845447
+845459
+845489
+845491
+845531
+845567
+845599
+845623
+845653
+845657
+845659
+845683
+845717
+845723
+845729
+845749
+845753
+845771
+845777
+845809
+845833
+845849
+845863
+845879
+845881
+845893
+845909
+845921
+845927
+845941
+845951
+845969
+845981
+845983
+845987
+845989
+846037
+846059
+846061
+846067
+846113
+846137
+846149
+846161
+846179
+846187
+846217
+846229
+846233
+846247
+846259
+846271
+846323
+846341
+846343
+846353
+846359
+846361
+846383
+846389
+846397
+846401
+846403
+846407
+846421
+846427
+846437
+846457
+846487
+846493
+846499
+846529
+846563
+846577
+846589
+846647
+846661
+846667
+846673
+846689
+846721
+846733
+846739
+846749
+846751
+846757
+846779
+846823
+846841
+846851
+846869
+846871
+846877
+846913
+846917
+846919
+846931
+846943
+846949
+846953
+846961
+846973
+846977
+846983
+846997
+847009
+847031
+847037
+847043
+847051
+847069
+847073
+847079
+847097
+847103
+847109
+847129
+847139
+847151
+847157
+847163
+847169
+847193
+847201
+847213
+847219
+847237
+847247
+847271
+847277
+847279
+847283
+847309
+847321
+847339
+847361
+847367
+847373
+847393
+847423
+847453
+847477
+847493
+847499
+847507
+847519
+847531
+847537
+847543
+847549
+847577
+847589
+847601
+847607
+847621
+847657
+847663
+847673
+847681
+847687
+847697
+847703
+847727
+847729
+847741
+847787
+847789
+847813
+847817
+847853
+847871
+847883
+847901
+847919
+847933
+847937
+847949
+847967
+847969
+847991
+847993
+847997
+848017
+848051
+848087
+848101
+848119
+848123
+848131
+848143
+848149
+848173
+848201
+848203
+848213
+848227
+848251
+848269
+848273
+848297
+848321
+848359
+848363
+848383
+848387
+848399
+848417
+848423
+848429
+848443
+848461
+848467
+848473
+848489
+848531
+848537
+848557
+848567
+848579
+848591
+848593
+848599
+848611
+848629
+848633
+848647
+848651
+848671
+848681
+848699
+848707
+848713
+848737
+848747
+848761
+848779
+848789
+848791
+848797
+848803
+848807
+848839
+848843
+848849
+848851
+848857
+848879
+848893
+848909
+848921
+848923
+848927
+848933
+848941
+848959
+848983
+848993
+849019
+849047
+849049
+849061
+849083
+849097
+849103
+849119
+849127
+849131
+849143
+849161
+849179
+849197
+849203
+849217
+849221
+849223
+849241
+849253
+849271
+849301
+849311
+849347
+849349
+849353
+849383
+849391
+849419
+849427
+849461
+849467
+849481
+849523
+849533
+849539
+849571
+849581
+849587
+849593
+849599
+849601
+849649
+849691
+849701
+849703
+849721
+849727
+849731
+849733
+849743
+849763
+849767
+849773
+849829
+849833
+849839
+849857
+849869
+849883
+849917
+849923
+849931
+849943
+849967
+849973
+849991
+849997
+850009
+850021
+850027
+850033
+850043
+850049
+850061
+850063
+850081
+850093
+850121
+850133
+850139
+850147
+850177
+850181
+850189
+850207
+850211
+850229
+850243
+850247
+850253
+850261
+850271
+850273
+850301
+850303
+850331
+850337
+850349
+850351
+850373
+850387
+850393
+850397
+850403
+850417
+850427
+850433
+850439
+850453
+850457
+850481
+850529
+850537
+850567
+850571
+850613
+850631
+850637
+850673
+850679
+850691
+850711
+850727
+850753
+850781
+850807
+850823
+850849
+850853
+850879
+850891
+850897
+850933
+850943
+850951
+850973
+850979
+851009
+851017
+851033
+851041
+851051
+851057
+851087
+851093
+851113
+851117
+851131
+851153
+851159
+851171
+851177
+851197
+851203
+851209
+851231
+851239
+851251
+851261
+851267
+851273
+851293
+851297
+851303
+851321
+851327
+851351
+851359
+851363
+851381
+851387
+851393
+851401
+851413
+851419
+851423
+851449
+851471
+851491
+851507
+851519
+851537
+851549
+851569
+851573
+851597
+851603
+851623
+851633
+851639
+851647
+851659
+851671
+851677
+851689
+851723
+851731
+851749
+851761
+851797
+851801
+851803
+851813
+851821
+851831
+851839
+851843
+851863
+851881
+851891
+851899
+851953
+851957
+851971
+852011
+852013
+852031
+852037
+852079
+852101
+852121
+852139
+852143
+852149
+852151
+852167
+852179
+852191
+852197
+852199
+852211
+852233
+852239
+852253
+852259
+852263
+852287
+852289
+852301
+852323
+852347
+852367
+852391
+852409
+852427
+852437
+852457
+852463
+852521
+852557
+852559
+852563
+852569
+852581
+852583
+852589
+852613
+852617
+852623
+852641
+852661
+852671
+852673
+852689
+852749
+852751
+852757
+852763
+852769
+852793
+852799
+852809
+852827
+852829
+852833
+852847
+852851
+852857
+852871
+852881
+852889
+852893
+852913
+852937
+852953
+852959
+852989
+852997
+853007
+853031
+853033
+853049
+853057
+853079
+853091
+853103
+853123
+853133
+853159
+853187
+853189
+853211
+853217
+853241
+853283
+853289
+853291
+853319
+853339
+853357
+853387
+853403
+853427
+853429
+853439
+853477
+853481
+853493
+853529
+853543
+853547
+853571
+853577
+853597
+853637
+853663
+853667
+853669
+853687
+853693
+853703
+853717
+853733
+853739
+853759
+853763
+853793
+853799
+853807
+853813
+853819
+853823
+853837
+853843
+853873
+853889
+853901
+853903
+853913
+853933
+853949
+853969
+853981
+853999
+854017
+854033
+854039
+854041
+854047
+854053
+854083
+854089
+854093
+854099
+854111
+854123
+854129
+854141
+854149
+854159
+854171
+854213
+854257
+854263
+854299
+854303
+854323
+854327
+854333
+854351
+854353
+854363
+854383
+854387
+854407
+854417
+854419
+854423
+854431
+854443
+854459
+854461
+854467
+854479
+854527
+854533
+854569
+854587
+854593
+854599
+854617
+854621
+854629
+854647
+854683
+854713
+854729
+854747
+854771
+854801
+854807
+854849
+854869
+854881
+854897
+854899
+854921
+854923
+854927
+854929
+854951
+854957
+854963
+854993
+854999
+855031
+855059
+855061
+855067
+855079
+855089
+855119
+855131
+855143
+855187
+855191
+855199
+855203
+855221
+855229
+855241
+855269
+855271
+855277
+855293
+855307
+855311
+855317
+855331
+855359
+855373
+855377
+855391
+855397
+855401
+855419
+855427
+855431
+855461
+855467
+855499
+855511
+855521
+855527
+855581
+855601
+855607
+855619
+855641
+855667
+855671
+855683
+855697
+855709
+855713
+855719
+855721
+855727
+855731
+855733
+855737
+855739
+855781
+855787
+855821
+855851
+855857
+855863
+855887
+855889
+855901
+855919
+855923
+855937
+855947
+855983
+855989
+855997
+856021
+856043
+856057
+856061
+856073
+856081
+856099
+856111
+856117
+856133
+856139
+856147
+856153
+856169
+856181
+856187
+856213
+856237
+856241
+856249
+856277
+856279
+856301
+856309
+856333
+856343
+856351
+856369
+856381
+856391
+856393
+856411
+856417
+856421
+856441
+856459
+856469
+856483
+856487
+856507
+856519
+856529
+856547
+856549
+856553
+856567
+856571
+856627
+856637
+856649
+856693
+856697
+856699
+856703
+856711
+856717
+856721
+856733
+856759
+856787
+856789
+856799
+856811
+856813
+856831
+856841
+856847
+856853
+856897
+856901
+856903
+856909
+856927
+856939
+856943
+856949
+856969
+856993
+857009
+857011
+857027
+857029
+857039
+857047
+857053
+857069
+857081
+857083
+857099
+857107
+857137
+857161
+857167
+857201
+857203
+857221
+857249
+857267
+857273
+857281
+857287
+857309
+857321
+857333
+857341
+857347
+857357
+857369
+857407
+857411
+857419
+857431
+857453
+857459
+857471
+857513
+857539
+857551
+857567
+857569
+857573
+857579
+857581
+857629
+857653
+857663
+857669
+857671
+857687
+857707
+857711
+857713
+857723
+857737
+857741
+857743
+857749
+857809
+857821
+857827
+857839
+857851
+857867
+857873
+857897
+857903
+857929
+857951
+857953
+857957
+857959
+857963
+857977
+857981
+858001
+858029
+858043
+858073
+858083
+858101
+858103
+858113
+858127
+858149
+858161
+858167
+858217
+858223
+858233
+858239
+858241
+858251
+858259
+858269
+858281
+858293
+858301
+858307
+858311
+858317
+858373
+858397
+858427
+858433
+858457
+858463
+858467
+858479
+858497
+858503
+858527
+858563
+858577
+858589
+858623
+858631
+858673
+858691
+858701
+858707
+858709
+858713
+858749
+858757
+858763
+858769
+858787
+858817
+858821
+858833
+858841
+858859
+858877
+858883
+858899
+858911
+858919
+858931
+858943
+858953
+858961
+858989
+858997
+859003
+859031
+859037
+859049
+859051
+859057
+859081
+859091
+859093
+859109
+859121
+859181
+859189
+859213
+859223
+859249
+859259
+859267
+859273
+859277
+859279
+859297
+859321
+859361
+859363
+859373
+859381
+859393
+859423
+859433
+859447
+859459
+859477
+859493
+859513
+859553
+859559
+859561
+859567
+859577
+859601
+859603
+859609
+859619
+859633
+859657
+859667
+859669
+859679
+859681
+859697
+859709
+859751
+859783
+859787
+859799
+859801
+859823
+859841
+859849
+859853
+859861
+859891
+859913
+859919
+859927
+859933
+859939
+859973
+859981
+859987
+860009
+860011
+860029
+860051
+860059
+860063
+860071
+860077
+860087
+860089
+860107
+860113
+860117
+860143
+860239
+860257
+860267
+860291
+860297
+860309
+860311
+860317
+860323
+860333
+860341
+860351
+860357
+860369
+860381
+860383
+860393
+860399
+860413
+860417
+860423
+860441
+860479
+860501
+860507
+860513
+860533
+860543
+860569
+860579
+860581
+860593
+860599
+860609
+860623
+860641
+860647
+860663
+860689
+860701
+860747
+860753
+860759
+860779
+860789
+860791
+860809
+860813
+860819
+860843
+860861
+860887
+860891
+860911
+860917
+860921
+860927
+860929
+860939
+860941
+860957
+860969
+860971
+861001
+861013
+861019
+861031
+861037
+861043
+861053
+861059
+861079
+861083
+861089
+861109
+861121
+861131
+861139
+861163
+861167
+861191
+861199
+861221
+861239
+861293
+861299
+861317
+861347
+861353
+861361
+861391
+861433
+861437
+861439
+861491
+861493
+861499
+861541
+861547
+861551
+861559
+861563
+861571
+861589
+861599
+861613
+861617
+861647
+861659
+861691
+861701
+861703
+861719
+861733
+861739
+861743
+861761
+861797
+861799
+861803
+861823
+861829
+861853
+861857
+861871
+861877
+861881
+861899
+861901
+861907
+861929
+861937
+861941
+861947
+861977
+861979
+861997
+862009
+862013
+862031
+862033
+862061
+862067
+862097
+862117
+862123
+862129
+862139
+862157
+862159
+862171
+862177
+862181
+862187
+862207
+862219
+862229
+862231
+862241
+862249
+862259
+862261
+862273
+862283
+862289
+862297
+862307
+862319
+862331
+862343
+862369
+862387
+862397
+862399
+862409
+862417
+862423
+862441
+862447
+862471
+862481
+862483
+862487
+862493
+862501
+862541
+862553
+862559
+862567
+862571
+862573
+862583
+862607
+862627
+862633
+862649
+862651
+862669
+862703
+862727
+862739
+862769
+862777
+862783
+862789
+862811
+862819
+862861
+862879
+862907
+862909
+862913
+862919
+862921
+862943
+862957
+862973
+862987
+862991
+862997
+863003
+863017
+863047
+863081
+863087
+863119
+863123
+863131
+863143
+863153
+863179
+863197
+863231
+863251
+863279
+863287
+863299
+863309
+863323
+863363
+863377
+863393
+863479
+863491
+863497
+863509
+863521
+863537
+863539
+863561
+863593
+863609
+863633
+863641
+863671
+863689
+863693
+863711
+863729
+863743
+863749
+863767
+863771
+863783
+863801
+863803
+863833
+863843
+863851
+863867
+863869
+863879
+863887
+863897
+863899
+863909
+863917
+863921
+863959
+863983
+864007
+864011
+864013
+864029
+864037
+864047
+864049
+864053
+864077
+864079
+864091
+864103
+864107
+864119
+864121
+864131
+864137
+864151
+864167
+864169
+864191
+864203
+864211
+864221
+864223
+864251
+864277
+864289
+864299
+864301
+864307
+864319
+864323
+864341
+864359
+864361
+864379
+864407
+864419
+864427
+864439
+864449
+864491
+864503
+864509
+864511
+864533
+864541
+864551
+864581
+864583
+864587
+864613
+864623
+864629
+864631
+864641
+864673
+864679
+864691
+864707
+864733
+864737
+864757
+864781
+864793
+864803
+864811
+864817
+864883
+864887
+864901
+864911
+864917
+864947
+864953
+864959
+864967
+864979
+864989
+865001
+865003
+865043
+865049
+865057
+865061
+865069
+865087
+865091
+865103
+865121
+865153
+865159
+865177
+865201
+865211
+865213
+865217
+865231
+865247
+865253
+865259
+865261
+865301
+865307
+865313
+865321
+865327
+865339
+865343
+865349
+865357
+865363
+865379
+865409
+865457
+865477
+865481
+865483
+865493
+865499
+865511
+865537
+865577
+865591
+865597
+865609
+865619
+865637
+865639
+865643
+865661
+865681
+865687
+865717
+865721
+865729
+865741
+865747
+865751
+865757
+865769
+865771
+865783
+865801
+865807
+865817
+865819
+865829
+865847
+865859
+865867
+865871
+865877
+865889
+865933
+865937
+865957
+865979
+865993
+866003
+866009
+866011
+866029
+866051
+866053
+866057
+866081
+866083
+866087
+866093
+866101
+866119
+866123
+866161
+866183
+866197
+866213
+866221
+866231
+866279
+866293
+866309
+866311
+866329
+866353
+866389
+866399
+866417
+866431
+866443
+866461
+866471
+866477
+866513
+866519
+866573
+866581
+866623
+866629
+866639
+866641
+866653
+866683
+866689
+866693
+866707
+866713
+866717
+866737
+866743
+866759
+866777
+866783
+866819
+866843
+866849
+866851
+866857
+866869
+866909
+866917
+866927
+866933
+866941
+866953
+866963
+866969
+867001
+867007
+867011
+867023
+867037
+867059
+867067
+867079
+867091
+867121
+867131
+867143
+867151
+867161
+867173
+867203
+867211
+867227
+867233
+867253
+867257
+867259
+867263
+867271
+867281
+867301
+867319
+867337
+867343
+867371
+867389
+867397
+867401
+867409
+867413
+867431
+867443
+867457
+867463
+867467
+867487
+867509
+867511
+867541
+867547
+867553
+867563
+867571
+867577
+867589
+867617
+867619
+867623
+867631
+867641
+867653
+867677
+867679
+867689
+867701
+867719
+867733
+867743
+867773
+867781
+867793
+867803
+867817
+867827
+867829
+867857
+867871
+867887
+867913
+867943
+867947
+867959
+867991
+868019
+868033
+868039
+868051
+868069
+868073
+868081
+868103
+868111
+868121
+868123
+868151
+868157
+868171
+868177
+868199
+868211
+868229
+868249
+868267
+868271
+868277
+868291
+868313
+868327
+868331
+868337
+868349
+868369
+868379
+868381
+868397
+868409
+868423
+868451
+868453
+868459
+868487
+868489
+868493
+868529
+868531
+868537
+868559
+868561
+868577
+868583
+868603
+868613
+868639
+868663
+868669
+868691
+868697
+868727
+868739
+868741
+868771
+868783
+868787
+868793
+868799
+868801
+868817
+868841
+868849
+868867
+868873
+868877
+868883
+868891
+868909
+868937
+868939
+868943
+868951
+868957
+868993
+868997
+868999
+869017
+869021
+869039
+869053
+869059
+869069
+869081
+869119
+869131
+869137
+869153
+869173
+869179
+869203
+869233
+869249
+869251
+869257
+869273
+869291
+869293
+869299
+869303
+869317
+869321
+869339
+869369
+869371
+869381
+869399
+869413
+869419
+869437
+869443
+869461
+869467
+869471
+869489
+869501
+869521
+869543
+869551
+869563
+869579
+869587
+869597
+869599
+869657
+869663
+869683
+869689
+869707
+869717
+869747
+869753
+869773
+869777
+869779
+869807
+869809
+869819
+869849
+869863
+869879
+869887
+869893
+869899
+869909
+869927
+869951
+869959
+869983
+869989
+870007
+870013
+870031
+870047
+870049
+870059
+870083
+870097
+870109
+870127
+870131
+870137
+870151
+870161
+870169
+870173
+870197
+870211
+870223
+870229
+870239
+870241
+870253
+870271
+870283
+870301
+870323
+870329
+870341
+870367
+870391
+870403
+870407
+870413
+870431
+870433
+870437
+870461
+870479
+870491
+870497
+870517
+870533
+870547
+870577
+870589
+870593
+870601
+870613
+870629
+870641
+870643
+870679
+870691
+870703
+870731
+870739
+870743
+870773
+870787
+870809
+870811
+870823
+870833
+870847
+870853
+870871
+870889
+870901
+870907
+870911
+870917
+870929
+870931
+870953
+870967
+870977
+870983
+870997
+871001
+871021
+871027
+871037
+871061
+871103
+871147
+871159
+871163
+871177
+871181
+871229
+871231
+871249
+871259
+871271
+871289
+871303
+871337
+871349
+871393
+871439
+871459
+871463
+871477
+871513
+871517
+871531
+871553
+871571
+871589
+871597
+871613
+871621
+871639
+871643
+871649
+871657
+871679
+871681
+871687
+871727
+871763
+871771
+871789
+871817
+871823
+871837
+871867
+871883
+871901
+871919
+871931
+871957
+871963
+871973
+871987
+871993
+872017
+872023
+872033
+872041
+872057
+872071
+872077
+872089
+872099
+872107
+872129
+872141
+872143
+872149
+872159
+872161
+872173
+872177
+872189
+872203
+872227
+872231
+872237
+872243
+872251
+872257
+872269
+872281
+872317
+872323
+872351
+872353
+872369
+872381
+872383
+872387
+872393
+872411
+872419
+872429
+872437
+872441
+872453
+872471
+872477
+872479
+872533
+872549
+872561
+872563
+872567
+872587
+872609
+872611
+872621
+872623
+872647
+872657
+872659
+872671
+872687
+872731
+872737
+872747
+872749
+872761
+872789
+872791
+872843
+872863
+872923
+872947
+872951
+872953
+872959
+872999
+873017
+873043
+873049
+873073
+873079
+873083
+873091
+873109
+873113
+873121
+873133
+873139
+873157
+873209
+873247
+873251
+873263
+873293
+873317
+873319
+873331
+873343
+873349
+873359
+873403
+873407
+873419
+873421
+873427
+873437
+873461
+873463
+873469
+873497
+873527
+873529
+873539
+873541
+873553
+873569
+873571
+873617
+873619
+873641
+873643
+873659
+873667
+873671
+873689
+873707
+873709
+873721
+873727
+873739
+873767
+873773
+873781
+873787
+873863
+873877
+873913
+873959
+873979
+873989
+873991
+874001
+874009
+874037
+874063
+874087
+874091
+874099
+874103
+874109
+874117
+874121
+874127
+874151
+874193
+874213
+874217
+874229
+874249
+874267
+874271
+874277
+874301
+874303
+874331
+874337
+874343
+874351
+874373
+874387
+874397
+874403
+874409
+874427
+874457
+874459
+874477
+874487
+874537
+874543
+874547
+874567
+874583
+874597
+874619
+874637
+874639
+874651
+874661
+874673
+874681
+874693
+874697
+874711
+874721
+874723
+874729
+874739
+874763
+874771
+874777
+874799
+874807
+874813
+874823
+874831
+874847
+874859
+874873
+874879
+874889
+874891
+874919
+874957
+874967
+874987
+875011
+875027
+875033
+875089
+875107
+875113
+875117
+875129
+875141
+875183
+875201
+875209
+875213
+875233
+875239
+875243
+875261
+875263
+875267
+875269
+875297
+875299
+875317
+875323
+875327
+875333
+875339
+875341
+875363
+875377
+875389
+875393
+875417
+875419
+875429
+875443
+875447
+875477
+875491
+875503
+875509
+875513
+875519
+875521
+875543
+875579
+875591
+875593
+875617
+875621
+875627
+875629
+875647
+875659
+875663
+875681
+875683
+875689
+875701
+875711
+875717
+875731
+875741
+875759
+875761
+875773
+875779
+875783
+875803
+875821
+875837
+875851
+875893
+875923
+875929
+875933
+875947
+875969
+875981
+875983
+876011
+876013
+876017
+876019
+876023
+876041
+876067
+876077
+876079
+876097
+876103
+876107
+876121
+876131
+876137
+876149
+876181
+876191
+876193
+876199
+876203
+876229
+876233
+876257
+876263
+876287
+876301
+876307
+876311
+876329
+876331
+876341
+876349
+876371
+876373
+876431
+876433
+876443
+876479
+876481
+876497
+876523
+876529
+876569
+876581
+876593
+876607
+876611
+876619
+876643
+876647
+876653
+876661
+876677
+876719
+876721
+876731
+876749
+876751
+876761
+876769
+876787
+876791
+876797
+876817
+876823
+876833
+876851
+876853
+876871
+876893
+876913
+876929
+876947
+876971
+877003
+877027
+877043
+877057
+877073
+877091
+877109
+877111
+877117
+877133
+877169
+877181
+877187
+877199
+877213
+877223
+877237
+877267
+877291
+877297
+877301
+877313
+877321
+877333
+877343
+877351
+877361
+877367
+877379
+877397
+877399
+877403
+877411
+877423
+877463
+877469
+877531
+877543
+877567
+877573
+877577
+877601
+877609
+877619
+877621
+877651
+877661
+877699
+877739
+877771
+877783
+877817
+877823
+877837
+877843
+877853
+877867
+877871
+877873
+877879
+877883
+877907
+877909
+877937
+877939
+877949
+877997
+878011
+878021
+878023
+878039
+878041
+878077
+878083
+878089
+878099
+878107
+878113
+878131
+878147
+878153
+878159
+878167
+878173
+878183
+878191
+878197
+878201
+878221
+878239
+878279
+878287
+878291
+878299
+878309
+878359
+878377
+878387
+878411
+878413
+878419
+878443
+878453
+878467
+878489
+878513
+878539
+878551
+878567
+878573
+878593
+878597
+878609
+878621
+878629
+878641
+878651
+878659
+878663
+878677
+878681
+878699
+878719
+878737
+878743
+878749
+878777
+878783
+878789
+878797
+878821
+878831
+878833
+878837
+878851
+878863
+878869
+878873
+878893
+878929
+878939
+878953
+878957
+878987
+878989
+879001
+879007
+879023
+879031
+879061
+879089
+879097
+879103
+879113
+879119
+879133
+879143
+879167
+879169
+879181
+879199
+879227
+879239
+879247
+879259
+879269
+879271
+879283
+879287
+879299
+879331
+879341
+879343
+879353
+879371
+879391
+879401
+879413
+879449
+879457
+879493
+879523
+879533
+879539
+879553
+879581
+879583
+879607
+879617
+879623
+879629
+879649
+879653
+879661
+879667
+879673
+879679
+879689
+879691
+879701
+879707
+879709
+879713
+879721
+879743
+879797
+879799
+879817
+879821
+879839
+879859
+879863
+879881
+879917
+879919
+879941
+879953
+879961
+879973
+879979
+880001
+880007
+880021
+880027
+880031
+880043
+880057
+880067
+880069
+880091
+880097
+880109
+880127
+880133
+880151
+880153
+880199
+880211
+880219
+880223
+880247
+880249
+880259
+880283
+880301
+880303
+880331
+880337
+880343
+880349
+880361
+880367
+880409
+880421
+880423
+880427
+880483
+880487
+880513
+880519
+880531
+880541
+880543
+880553
+880559
+880571
+880573
+880589
+880603
+880661
+880667
+880673
+880681
+880687
+880699
+880703
+880709
+880723
+880727
+880729
+880751
+880793
+880799
+880801
+880813
+880819
+880823
+880853
+880861
+880871
+880883
+880903
+880907
+880909
+880939
+880949
+880951
+880961
+880981
+880993
+881003
+881009
+881017
+881029
+881057
+881071
+881077
+881099
+881119
+881141
+881143
+881147
+881159
+881171
+881173
+881191
+881197
+881207
+881219
+881233
+881249
+881269
+881273
+881311
+881317
+881327
+881333
+881351
+881357
+881369
+881393
+881407
+881411
+881417
+881437
+881449
+881471
+881473
+881477
+881479
+881509
+881527
+881533
+881537
+881539
+881591
+881597
+881611
+881641
+881663
+881669
+881681
+881707
+881711
+881729
+881743
+881779
+881813
+881833
+881849
+881897
+881899
+881911
+881917
+881939
+881953
+881963
+881983
+881987
+882017
+882019
+882029
+882031
+882047
+882061
+882067
+882071
+882083
+882103
+882139
+882157
+882169
+882173
+882179
+882187
+882199
+882239
+882241
+882247
+882251
+882253
+882263
+882289
+882313
+882359
+882367
+882377
+882389
+882391
+882433
+882439
+882449
+882451
+882461
+882481
+882491
+882517
+882529
+882551
+882571
+882577
+882587
+882593
+882599
+882617
+882631
+882653
+882659
+882697
+882701
+882703
+882719
+882727
+882733
+882751
+882773
+882779
+882823
+882851
+882863
+882877
+882881
+882883
+882907
+882913
+882923
+882943
+882953
+882961
+882967
+882979
+883013
+883049
+883061
+883073
+883087
+883093
+883109
+883111
+883117
+883121
+883163
+883187
+883193
+883213
+883217
+883229
+883231
+883237
+883241
+883247
+883249
+883273
+883279
+883307
+883327
+883331
+883339
+883343
+883357
+883391
+883397
+883409
+883411
+883423
+883429
+883433
+883451
+883471
+883483
+883489
+883517
+883537
+883549
+883577
+883579
+883613
+883621
+883627
+883639
+883661
+883667
+883691
+883697
+883699
+883703
+883721
+883733
+883739
+883763
+883777
+883781
+883783
+883807
+883871
+883877
+883889
+883921
+883933
+883963
+883969
+883973
+883979
+883991
+884003
+884011
+884029
+884057
+884069
+884077
+884087
+884111
+884129
+884131
+884159
+884167
+884171
+884183
+884201
+884227
+884231
+884243
+884251
+884267
+884269
+884287
+884293
+884309
+884311
+884321
+884341
+884353
+884363
+884369
+884371
+884417
+884423
+884437
+884441
+884453
+884483
+884489
+884491
+884497
+884501
+884537
+884573
+884579
+884591
+884593
+884617
+884651
+884669
+884693
+884699
+884717
+884743
+884789
+884791
+884803
+884813
+884827
+884831
+884857
+884881
+884899
+884921
+884951
+884959
+884977
+884981
+884987
+884999
+885023
+885041
+885061
+885083
+885091
+885097
+885103
+885107
+885127
+885133
+885161
+885163
+885169
+885187
+885217
+885223
+885233
+885239
+885251
+885257
+885263
+885289
+885301
+885307
+885331
+885359
+885371
+885383
+885389
+885397
+885403
+885421
+885427
+885449
+885473
+885487
+885497
+885503
+885509
+885517
+885529
+885551
+885553
+885589
+885607
+885611
+885623
+885679
+885713
+885721
+885727
+885733
+885737
+885769
+885791
+885793
+885803
+885811
+885821
+885823
+885839
+885869
+885881
+885883
+885889
+885893
+885919
+885923
+885931
+885943
+885947
+885959
+885961
+885967
+885971
+885977
+885991
+886007
+886013
+886019
+886021
+886031
+886043
+886069
+886097
+886117
+886129
+886163
+886177
+886181
+886183
+886189
+886199
+886241
+886243
+886247
+886271
+886283
+886307
+886313
+886337
+886339
+886349
+886367
+886381
+886387
+886421
+886427
+886429
+886433
+886453
+886463
+886469
+886471
+886493
+886511
+886517
+886519
+886537
+886541
+886547
+886549
+886583
+886591
+886607
+886609
+886619
+886643
+886651
+886663
+886667
+886741
+886747
+886751
+886759
+886777
+886793
+886799
+886807
+886819
+886859
+886867
+886891
+886909
+886913
+886967
+886969
+886973
+886979
+886981
+886987
+886993
+886999
+887017
+887057
+887059
+887069
+887093
+887101
+887113
+887141
+887143
+887153
+887171
+887177
+887191
+887203
+887233
+887261
+887267
+887269
+887291
+887311
+887323
+887333
+887377
+887387
+887399
+887401
+887423
+887441
+887449
+887459
+887479
+887483
+887503
+887533
+887543
+887567
+887569
+887573
+887581
+887599
+887617
+887629
+887633
+887641
+887651
+887657
+887659
+887669
+887671
+887681
+887693
+887701
+887707
+887717
+887743
+887749
+887759
+887819
+887827
+887837
+887839
+887849
+887867
+887903
+887911
+887921
+887923
+887941
+887947
+887987
+887989
+888001
+888011
+888047
+888059
+888061
+888077
+888091
+888103
+888109
+888133
+888143
+888157
+888161
+888163
+888179
+888203
+888211
+888247
+888257
+888263
+888271
+888287
+888313
+888319
+888323
+888359
+888361
+888373
+888389
+888397
+888409
+888413
+888427
+888431
+888443
+888451
+888457
+888469
+888479
+888493
+888499
+888533
+888541
+888557
+888623
+888631
+888637
+888653
+888659
+888661
+888683
+888689
+888691
+888721
+888737
+888751
+888761
+888773
+888779
+888781
+888793
+888799
+888809
+888827
+888857
+888869
+888871
+888887
+888917
+888919
+888931
+888959
+888961
+888967
+888983
+888989
+888997
+889001
+889027
+889037
+889039
+889043
+889051
+889069
+889081
+889087
+889123
+889139
+889171
+889177
+889211
+889237
+889247
+889261
+889271
+889279
+889289
+889309
+889313
+889327
+889337
+889349
+889351
+889363
+889367
+889373
+889391
+889411
+889429
+889439
+889453
+889481
+889489
+889501
+889519
+889579
+889589
+889597
+889631
+889639
+889657
+889673
+889687
+889697
+889699
+889703
+889727
+889747
+889769
+889783
+889829
+889871
+889873
+889877
+889879
+889891
+889901
+889907
+889909
+889921
+889937
+889951
+889957
+889963
+889997
+890003
+890011
+890027
+890053
+890063
+890083
+890107
+890111
+890117
+890119
+890129
+890147
+890159
+890161
+890177
+890221
+890231
+890237
+890287
+890291
+890303
+890317
+890333
+890371
+890377
+890419
+890429
+890437
+890441
+890459
+890467
+890501
+890531
+890543
+890551
+890563
+890597
+890609
+890653
+890657
+890671
+890683
+890707
+890711
+890717
+890737
+890761
+890789
+890797
+890803
+890809
+890821
+890833
+890843
+890861
+890863
+890867
+890881
+890887
+890893
+890927
+890933
+890941
+890957
+890963
+890969
+890993
+890999
+891001
+891017
+891047
+891049
+891061
+891067
+891091
+891101
+891103
+891133
+891151
+891161
+891173
+891179
+891223
+891239
+891251
+891277
+891287
+891311
+891323
+891329
+891349
+891377
+891379
+891389
+891391
+891409
+891421
+891427
+891439
+891481
+891487
+891491
+891493
+891509
+891521
+891523
+891551
+891557
+891559
+891563
+891571
+891577
+891587
+891593
+891601
+891617
+891629
+891643
+891647
+891659
+891661
+891677
+891679
+891707
+891743
+891749
+891763
+891767
+891797
+891799
+891809
+891817
+891823
+891827
+891829
+891851
+891859
+891887
+891889
+891893
+891899
+891907
+891923
+891929
+891967
+891983
+891991
+891997
+892019
+892027
+892049
+892057
+892079
+892091
+892093
+892097
+892103
+892123
+892141
+892153
+892159
+892169
+892189
+892219
+892237
+892249
+892253
+892261
+892267
+892271
+892291
+892321
+892351
+892357
+892387
+892391
+892421
+892433
+892439
+892457
+892471
+892481
+892513
+892523
+892531
+892547
+892553
+892559
+892579
+892597
+892603
+892609
+892627
+892643
+892657
+892663
+892667
+892709
+892733
+892747
+892757
+892763
+892777
+892781
+892783
+892817
+892841
+892849
+892861
+892877
+892901
+892919
+892933
+892951
+892973
+892987
+892999
+893003
+893023
+893029
+893033
+893041
+893051
+893059
+893093
+893099
+893107
+893111
+893117
+893119
+893131
+893147
+893149
+893161
+893183
+893213
+893219
+893227
+893237
+893257
+893261
+893281
+893317
+893339
+893341
+893351
+893359
+893363
+893381
+893383
+893407
+893413
+893419
+893429
+893441
+893449
+893479
+893489
+893509
+893521
+893549
+893567
+893591
+893603
+893609
+893653
+893657
+893671
+893681
+893701
+893719
+893723
+893743
+893777
+893797
+893821
+893839
+893857
+893863
+893873
+893881
+893897
+893903
+893917
+893929
+893933
+893939
+893989
+893999
+894011
+894037
+894059
+894067
+894073
+894097
+894109
+894119
+894137
+894139
+894151
+894161
+894167
+894181
+894191
+894193
+894203
+894209
+894211
+894221
+894227
+894233
+894239
+894247
+894259
+894277
+894281
+894287
+894301
+894329
+894343
+894371
+894391
+894403
+894407
+894409
+894419
+894427
+894431
+894449
+894451
+894503
+894511
+894521
+894527
+894541
+894547
+894559
+894581
+894589
+894611
+894613
+894637
+894643
+894667
+894689
+894709
+894713
+894721
+894731
+894749
+894763
+894779
+894791
+894793
+894811
+894869
+894871
+894893
+894917
+894923
+894947
+894973
+894997
+895003
+895007
+895009
+895039
+895049
+895051
+895079
+895087
+895127
+895133
+895151
+895157
+895159
+895171
+895189
+895211
+895231
+895241
+895243
+895247
+895253
+895277
+895283
+895291
+895309
+895313
+895319
+895333
+895343
+895351
+895357
+895361
+895387
+895393
+895421
+895423
+895457
+895463
+895469
+895471
+895507
+895529
+895553
+895571
+895579
+895591
+895613
+895627
+895633
+895649
+895651
+895667
+895669
+895673
+895681
+895691
+895703
+895709
+895721
+895729
+895757
+895771
+895777
+895787
+895789
+895799
+895801
+895813
+895823
+895841
+895861
+895879
+895889
+895901
+895903
+895913
+895927
+895933
+895957
+895987
+896003
+896009
+896047
+896069
+896101
+896107
+896111
+896113
+896123
+896143
+896167
+896191
+896201
+896263
+896281
+896293
+896297
+896299
+896323
+896327
+896341
+896347
+896353
+896369
+896381
+896417
+896443
+896447
+896449
+896453
+896479
+896491
+896509
+896521
+896531
+896537
+896543
+896549
+896557
+896561
+896573
+896587
+896617
+896633
+896647
+896669
+896677
+896681
+896717
+896719
+896723
+896771
+896783
+896803
+896837
+896867
+896879
+896897
+896921
+896927
+896947
+896953
+896963
+896983
+897007
+897011
+897019
+897049
+897053
+897059
+897067
+897077
+897101
+897103
+897119
+897133
+897137
+897157
+897163
+897191
+897223
+897229
+897241
+897251
+897263
+897269
+897271
+897301
+897307
+897317
+897319
+897329
+897349
+897359
+897373
+897401
+897433
+897443
+897461
+897467
+897469
+897473
+897497
+897499
+897517
+897527
+897553
+897557
+897563
+897571
+897577
+897581
+897593
+897601
+897607
+897629
+897647
+897649
+897671
+897691
+897703
+897707
+897709
+897727
+897751
+897779
+897781
+897817
+897829
+897847
+897877
+897881
+897887
+897899
+897907
+897931
+897947
+897971
+897983
+898013
+898019
+898033
+898063
+898067
+898069
+898091
+898097
+898109
+898129
+898133
+898147
+898153
+898171
+898181
+898189
+898199
+898211
+898213
+898223
+898231
+898241
+898243
+898253
+898259
+898279
+898283
+898291
+898307
+898319
+898327
+898361
+898369
+898409
+898421
+898423
+898427
+898439
+898459
+898477
+898481
+898483
+898493
+898519
+898523
+898543
+898549
+898553
+898561
+898607
+898613
+898621
+898661
+898663
+898669
+898673
+898691
+898717
+898727
+898753
+898763
+898769
+898787
+898813
+898819
+898823
+898853
+898867
+898873
+898889
+898897
+898921
+898927
+898951
+898981
+898987
+899009
+899051
+899057
+899069
+899123
+899149
+899153
+899159
+899161
+899177
+899179
+899183
+899189
+899209
+899221
+899233
+899237
+899263
+899273
+899291
+899309
+899321
+899387
+899401
+899413
+899429
+899447
+899467
+899473
+899477
+899491
+899519
+899531
+899537
+899611
+899617
+899659
+899671
+899681
+899687
+899693
+899711
+899719
+899749
+899753
+899761
+899779
+899791
+899807
+899831
+899849
+899851
+899863
+899881
+899891
+899893
+899903
+899917
+899939
+899971
+899981
+900001
+900007
+900019
+900037
+900061
+900089
+900091
+900103
+900121
+900139
+900143
+900149
+900157
+900161
+900169
+900187
+900217
+900233
+900241
+900253
+900259
+900283
+900287
+900293
+900307
+900329
+900331
+900349
+900397
+900409
+900443
+900461
+900481
+900491
+900511
+900539
+900551
+900553
+900563
+900569
+900577
+900583
+900587
+900589
+900593
+900607
+900623
+900649
+900659
+900671
+900673
+900689
+900701
+900719
+900737
+900743
+900751
+900761
+900763
+900773
+900797
+900803
+900817
+900821
+900863
+900869
+900917
+900929
+900931
+900937
+900959
+900971
+900973
+900997
+901007
+901009
+901013
+901063
+901067
+901079
+901093
+901097
+901111
+901133
+901141
+901169
+901171
+901177
+901183
+901193
+901207
+901211
+901213
+901247
+901249
+901253
+901273
+901279
+901309
+901333
+901339
+901367
+901399
+901403
+901423
+901427
+901429
+901441
+901447
+901451
+901457
+901471
+901489
+901499
+901501
+901513
+901517
+901529
+901547
+901567
+901591
+901613
+901643
+901657
+901679
+901687
+901709
+901717
+901739
+901741
+901751
+901781
+901787
+901811
+901819
+901841
+901861
+901891
+901907
+901909
+901919
+901931
+901937
+901963
+901973
+901993
+901997
+902009
+902017
+902029
+902039
+902047
+902053
+902087
+902089
+902119
+902137
+902141
+902179
+902191
+902201
+902227
+902261
+902263
+902281
+902299
+902303
+902311
+902333
+902347
+902351
+902357
+902389
+902401
+902413
+902437
+902449
+902471
+902477
+902483
+902501
+902507
+902521
+902563
+902569
+902579
+902591
+902597
+902599
+902611
+902639
+902653
+902659
+902669
+902677
+902687
+902719
+902723
+902753
+902761
+902767
+902771
+902777
+902789
+902807
+902821
+902827
+902849
+902873
+902903
+902933
+902953
+902963
+902971
+902977
+902981
+902987
+903017
+903029
+903037
+903073
+903079
+903103
+903109
+903143
+903151
+903163
+903179
+903197
+903211
+903223
+903251
+903257
+903269
+903311
+903323
+903337
+903347
+903359
+903367
+903389
+903391
+903403
+903407
+903421
+903443
+903449
+903451
+903457
+903479
+903493
+903527
+903541
+903547
+903563
+903569
+903607
+903613
+903641
+903649
+903673
+903677
+903691
+903701
+903709
+903751
+903757
+903761
+903781
+903803
+903827
+903841
+903871
+903883
+903899
+903913
+903919
+903949
+903967
+903979
+904019
+904027
+904049
+904067
+904069
+904073
+904087
+904093
+904097
+904103
+904117
+904121
+904147
+904157
+904181
+904193
+904201
+904207
+904217
+904219
+904261
+904283
+904289
+904297
+904303
+904357
+904361
+904369
+904399
+904441
+904459
+904483
+904489
+904499
+904511
+904513
+904517
+904523
+904531
+904559
+904573
+904577
+904601
+904619
+904627
+904633
+904637
+904643
+904661
+904663
+904667
+904679
+904681
+904693
+904697
+904721
+904727
+904733
+904759
+904769
+904777
+904781
+904789
+904793
+904801
+904811
+904823
+904847
+904861
+904867
+904873
+904879
+904901
+904903
+904907
+904919
+904931
+904933
+904987
+904997
+904999
+905011
+905053
+905059
+905071
+905083
+905087
+905111
+905123
+905137
+905143
+905147
+905161
+905167
+905171
+905189
+905197
+905207
+905209
+905213
+905227
+905249
+905269
+905291
+905297
+905299
+905329
+905339
+905347
+905381
+905413
+905449
+905453
+905461
+905477
+905491
+905497
+905507
+905551
+905581
+905587
+905599
+905617
+905621
+905629
+905647
+905651
+905659
+905677
+905683
+905687
+905693
+905701
+905713
+905719
+905759
+905761
+905767
+905783
+905803
+905819
+905833
+905843
+905897
+905909
+905917
+905923
+905951
+905959
+905963
+905999
+906007
+906011
+906013
+906023
+906029
+906043
+906089
+906107
+906119
+906121
+906133
+906179
+906187
+906197
+906203
+906211
+906229
+906233
+906259
+906263
+906289
+906293
+906313
+906317
+906329
+906331
+906343
+906349
+906371
+906377
+906383
+906391
+906403
+906421
+906427
+906431
+906461
+906473
+906481
+906487
+906497
+906517
+906523
+906539
+906541
+906557
+906589
+906601
+906613
+906617
+906641
+906649
+906673
+906679
+906691
+906701
+906707
+906713
+906727
+906749
+906751
+906757
+906767
+906779
+906793
+906809
+906817
+906823
+906839
+906847
+906869
+906881
+906901
+906911
+906923
+906929
+906931
+906943
+906949
+906973
+907019
+907021
+907031
+907063
+907073
+907099
+907111
+907133
+907139
+907141
+907163
+907169
+907183
+907199
+907211
+907213
+907217
+907223
+907229
+907237
+907259
+907267
+907279
+907297
+907301
+907321
+907331
+907363
+907367
+907369
+907391
+907393
+907397
+907399
+907427
+907433
+907447
+907457
+907469
+907471
+907481
+907493
+907507
+907513
+907549
+907561
+907567
+907583
+907589
+907637
+907651
+907657
+907663
+907667
+907691
+907693
+907703
+907717
+907723
+907727
+907733
+907757
+907759
+907793
+907807
+907811
+907813
+907831
+907843
+907849
+907871
+907891
+907909
+907913
+907927
+907957
+907967
+907969
+907997
+907999
+908003
+908041
+908053
+908057
+908071
+908081
+908101
+908113
+908129
+908137
+908153
+908179
+908183
+908197
+908213
+908221
+908233
+908249
+908287
+908317
+908321
+908353
+908359
+908363
+908377
+908381
+908417
+908419
+908441
+908449
+908459
+908471
+908489
+908491
+908503
+908513
+908521
+908527
+908533
+908539
+908543
+908549
+908573
+908581
+908591
+908597
+908603
+908617
+908623
+908627
+908653
+908669
+908671
+908711
+908723
+908731
+908741
+908749
+908759
+908771
+908797
+908807
+908813
+908819
+908821
+908849
+908851
+908857
+908861
+908863
+908879
+908881
+908893
+908909
+908911
+908927
+908953
+908959
+908993
+909019
+909023
+909031
+909037
+909043
+909047
+909061
+909071
+909089
+909091
+909107
+909113
+909119
+909133
+909151
+909173
+909203
+909217
+909239
+909241
+909247
+909253
+909281
+909287
+909289
+909299
+909301
+909317
+909319
+909329
+909331
+909341
+909343
+909371
+909379
+909383
+909401
+909409
+909437
+909451
+909457
+909463
+909481
+909521
+909529
+909539
+909541
+909547
+909577
+909599
+909611
+909613
+909631
+909637
+909679
+909683
+909691
+909697
+909731
+909737
+909743
+909761
+909767
+909773
+909787
+909791
+909803
+909809
+909829
+909833
+909859
+909863
+909877
+909889
+909899
+909901
+909907
+909911
+909917
+909971
+909973
+909977
+910003
+910031
+910051
+910069
+910093
+910097
+910099
+910103
+910109
+910121
+910127
+910139
+910141
+910171
+910177
+910199
+910201
+910207
+910213
+910219
+910229
+910277
+910279
+910307
+910361
+910369
+910421
+910447
+910451
+910453
+910457
+910471
+910519
+910523
+910561
+910577
+910583
+910603
+910619
+910621
+910627
+910631
+910643
+910661
+910691
+910709
+910711
+910747
+910751
+910771
+910781
+910787
+910799
+910807
+910817
+910849
+910853
+910883
+910909
+910939
+910957
+910981
+911003
+911011
+911023
+911033
+911039
+911063
+911077
+911087
+911089
+911101
+911111
+911129
+911147
+911159
+911161
+911167
+911171
+911173
+911179
+911201
+911219
+911227
+911231
+911233
+911249
+911269
+911291
+911293
+911303
+911311
+911321
+911327
+911341
+911357
+911359
+911363
+911371
+911413
+911419
+911437
+911453
+911459
+911503
+911507
+911527
+911549
+911593
+911597
+911621
+911633
+911657
+911663
+911671
+911681
+911683
+911689
+911707
+911719
+911723
+911737
+911749
+911773
+911777
+911783
+911819
+911831
+911837
+911839
+911851
+911861
+911873
+911879
+911893
+911899
+911903
+911917
+911947
+911951
+911957
+911959
+911969
+912007
+912031
+912047
+912049
+912053
+912061
+912083
+912089
+912103
+912167
+912173
+912187
+912193
+912211
+912217
+912227
+912239
+912251
+912269
+912287
+912337
+912343
+912349
+912367
+912391
+912397
+912403
+912409
+912413
+912449
+912451
+912463
+912467
+912469
+912481
+912487
+912491
+912497
+912511
+912521
+912523
+912533
+912539
+912559
+912581
+912631
+912647
+912649
+912727
+912763
+912773
+912797
+912799
+912809
+912823
+912829
+912839
+912851
+912853
+912859
+912869
+912871
+912911
+912929
+912941
+912953
+912959
+912971
+912973
+912979
+912991
+913013
+913027
+913037
+913039
+913063
+913067
+913103
+913139
+913151
+913177
+913183
+913217
+913247
+913259
+913279
+913309
+913321
+913327
+913331
+913337
+913373
+913397
+913417
+913421
+913433
+913441
+913447
+913457
+913483
+913487
+913513
+913571
+913573
+913579
+913589
+913637
+913639
+913687
+913709
+913723
+913739
+913753
+913771
+913799
+913811
+913853
+913873
+913889
+913907
+913921
+913933
+913943
+913981
+913999
+914021
+914027
+914041
+914047
+914117
+914131
+914161
+914189
+914191
+914213
+914219
+914237
+914239
+914257
+914269
+914279
+914293
+914321
+914327
+914339
+914351
+914357
+914359
+914363
+914369
+914371
+914429
+914443
+914449
+914461
+914467
+914477
+914491
+914513
+914519
+914521
+914533
+914561
+914569
+914579
+914581
+914591
+914597
+914609
+914611
+914629
+914647
+914657
+914701
+914713
+914723
+914731
+914737
+914777
+914783
+914789
+914791
+914801
+914813
+914819
+914827
+914843
+914857
+914861
+914867
+914873
+914887
+914891
+914897
+914941
+914951
+914971
+914981
+915007
+915017
+915029
+915041
+915049
+915053
+915067
+915071
+915113
+915139
+915143
+915157
+915181
+915191
+915197
+915199
+915203
+915221
+915223
+915247
+915251
+915253
+915259
+915283
+915301
+915311
+915353
+915367
+915379
+915391
+915437
+915451
+915479
+915487
+915527
+915533
+915539
+915547
+915557
+915587
+915589
+915601
+915611
+915613
+915623
+915631
+915641
+915659
+915683
+915697
+915703
+915727
+915731
+915737
+915757
+915763
+915769
+915799
+915839
+915851
+915869
+915881
+915911
+915917
+915919
+915947
+915949
+915961
+915973
+915991
+916031
+916033
+916049
+916057
+916061
+916073
+916099
+916103
+916109
+916121
+916127
+916129
+916141
+916169
+916177
+916183
+916187
+916189
+916213
+916217
+916219
+916259
+916261
+916273
+916291
+916319
+916337
+916339
+916361
+916367
+916387
+916411
+916417
+916441
+916451
+916457
+916463
+916469
+916471
+916477
+916501
+916507
+916511
+916537
+916561
+916571
+916583
+916613
+916621
+916633
+916649
+916651
+916679
+916703
+916733
+916771
+916781
+916787
+916831
+916837
+916841
+916859
+916871
+916879
+916907
+916913
+916931
+916933
+916939
+916961
+916973
+916999
+917003
+917039
+917041
+917051
+917053
+917083
+917089
+917093
+917101
+917113
+917117
+917123
+917141
+917153
+917159
+917173
+917179
+917209
+917219
+917227
+917237
+917239
+917243
+917251
+917281
+917291
+917317
+917327
+917333
+917353
+917363
+917381
+917407
+917443
+917459
+917461
+917471
+917503
+917513
+917519
+917549
+917557
+917573
+917591
+917593
+917611
+917617
+917629
+917633
+917641
+917659
+917669
+917687
+917689
+917713
+917729
+917737
+917753
+917759
+917767
+917771
+917773
+917783
+917789
+917803
+917809
+917827
+917831
+917837
+917843
+917849
+917869
+917887
+917893
+917923
+917927
+917951
+917971
+917993
+918011
+918019
+918041
+918067
+918079
+918089
+918103
+918109
+918131
+918139
+918143
+918149
+918157
+918161
+918173
+918193
+918199
+918209
+918223
+918257
+918259
+918263
+918283
+918301
+918319
+918329
+918341
+918347
+918353
+918361
+918371
+918389
+918397
+918431
+918433
+918439
+918443
+918469
+918481
+918497
+918529
+918539
+918563
+918581
+918583
+918587
+918613
+918641
+918647
+918653
+918677
+918679
+918683
+918733
+918737
+918751
+918763
+918767
+918779
+918787
+918793
+918823
+918829
+918839
+918857
+918877
+918889
+918899
+918913
+918943
+918947
+918949
+918959
+918971
+918989
+919013
+919019
+919021
+919031
+919033
+919063
+919067
+919081
+919109
+919111
+919129
+919147
+919153
+919169
+919183
+919189
+919223
+919229
+919231
+919249
+919253
+919267
+919301
+919313
+919319
+919337
+919349
+919351
+919381
+919393
+919409
+919417
+919421
+919423
+919427
+919447
+919511
+919519
+919531
+919559
+919571
+919591
+919613
+919621
+919631
+919679
+919691
+919693
+919703
+919729
+919757
+919759
+919769
+919781
+919799
+919811
+919817
+919823
+919859
+919871
+919883
+919901
+919903
+919913
+919927
+919937
+919939
+919949
+919951
+919969
+919979
+920011
+920021
+920039
+920053
+920107
+920123
+920137
+920147
+920149
+920167
+920197
+920201
+920203
+920209
+920219
+920233
+920263
+920267
+920273
+920279
+920281
+920291
+920323
+920333
+920357
+920371
+920377
+920393
+920399
+920407
+920411
+920419
+920441
+920443
+920467
+920473
+920477
+920497
+920509
+920519
+920539
+920561
+920609
+920641
+920651
+920653
+920677
+920687
+920701
+920707
+920729
+920741
+920743
+920753
+920761
+920783
+920789
+920791
+920807
+920827
+920833
+920849
+920863
+920869
+920891
+920921
+920947
+920951
+920957
+920963
+920971
+920999
+921001
+921007
+921013
+921029
+921031
+921073
+921079
+921091
+921121
+921133
+921143
+921149
+921157
+921169
+921191
+921197
+921199
+921203
+921223
+921233
+921241
+921257
+921259
+921287
+921293
+921331
+921353
+921373
+921379
+921407
+921409
+921457
+921463
+921467
+921491
+921497
+921499
+921517
+921523
+921563
+921581
+921589
+921601
+921611
+921629
+921637
+921643
+921647
+921667
+921677
+921703
+921733
+921737
+921743
+921749
+921751
+921761
+921779
+921787
+921821
+921839
+921841
+921871
+921887
+921889
+921901
+921911
+921913
+921919
+921931
+921959
+921989
+922021
+922027
+922037
+922039
+922043
+922057
+922067
+922069
+922073
+922079
+922081
+922087
+922099
+922123
+922169
+922211
+922217
+922223
+922237
+922247
+922261
+922283
+922289
+922291
+922303
+922309
+922321
+922331
+922333
+922351
+922357
+922367
+922391
+922423
+922451
+922457
+922463
+922487
+922489
+922499
+922511
+922513
+922517
+922531
+922549
+922561
+922601
+922613
+922619
+922627
+922631
+922637
+922639
+922643
+922667
+922679
+922681
+922699
+922717
+922729
+922739
+922741
+922781
+922807
+922813
+922853
+922861
+922897
+922907
+922931
+922973
+922993
+923017
+923023
+923029
+923047
+923051
+923053
+923107
+923123
+923129
+923137
+923141
+923147
+923171
+923177
+923179
+923183
+923201
+923203
+923227
+923233
+923239
+923249
+923309
+923311
+923333
+923341
+923347
+923369
+923371
+923387
+923399
+923407
+923411
+923437
+923441
+923449
+923453
+923467
+923471
+923501
+923509
+923513
+923539
+923543
+923551
+923561
+923567
+923579
+923581
+923591
+923599
+923603
+923617
+923641
+923653
+923687
+923693
+923701
+923711
+923719
+923743
+923773
+923789
+923809
+923833
+923849
+923851
+923861
+923869
+923903
+923917
+923929
+923939
+923947
+923953
+923959
+923963
+923971
+923977
+923983
+923987
+924019
+924023
+924031
+924037
+924041
+924043
+924059
+924073
+924083
+924097
+924101
+924109
+924139
+924151
+924173
+924191
+924197
+924241
+924269
+924281
+924283
+924299
+924323
+924337
+924359
+924361
+924383
+924397
+924401
+924403
+924419
+924421
+924431
+924437
+924463
+924493
+924499
+924503
+924523
+924527
+924529
+924551
+924557
+924601
+924617
+924641
+924643
+924659
+924661
+924683
+924697
+924709
+924713
+924719
+924727
+924731
+924743
+924751
+924757
+924769
+924773
+924779
+924793
+924809
+924811
+924827
+924829
+924841
+924871
+924877
+924881
+924907
+924929
+924961
+924967
+924997
+925019
+925027
+925033
+925039
+925051
+925063
+925073
+925079
+925081
+925087
+925097
+925103
+925109
+925117
+925121
+925147
+925153
+925159
+925163
+925181
+925189
+925193
+925217
+925237
+925241
+925271
+925273
+925279
+925291
+925307
+925339
+925349
+925369
+925373
+925387
+925391
+925399
+925409
+925423
+925447
+925469
+925487
+925499
+925501
+925513
+925517
+925523
+925559
+925577
+925579
+925597
+925607
+925619
+925621
+925637
+925649
+925663
+925669
+925679
+925697
+925721
+925733
+925741
+925783
+925789
+925823
+925831
+925843
+925849
+925891
+925901
+925913
+925921
+925937
+925943
+925949
+925961
+925979
+925987
+925997
+926017
+926027
+926033
+926077
+926087
+926089
+926099
+926111
+926113
+926129
+926131
+926153
+926161
+926171
+926179
+926183
+926203
+926227
+926239
+926251
+926273
+926293
+926309
+926327
+926351
+926353
+926357
+926377
+926389
+926399
+926411
+926423
+926437
+926461
+926467
+926489
+926503
+926507
+926533
+926537
+926557
+926561
+926567
+926581
+926587
+926617
+926623
+926633
+926657
+926659
+926669
+926671
+926689
+926701
+926707
+926741
+926747
+926767
+926777
+926797
+926803
+926819
+926843
+926851
+926867
+926879
+926899
+926903
+926921
+926957
+926963
+926971
+926977
+926983
+927001
+927007
+927013
+927049
+927077
+927083
+927089
+927097
+927137
+927149
+927161
+927167
+927187
+927191
+927229
+927233
+927259
+927287
+927301
+927313
+927317
+927323
+927361
+927373
+927397
+927403
+927431
+927439
+927491
+927497
+927517
+927529
+927533
+927541
+927557
+927569
+927587
+927629
+927631
+927643
+927649
+927653
+927671
+927677
+927683
+927709
+927727
+927743
+927763
+927769
+927779
+927791
+927803
+927821
+927833
+927841
+927847
+927853
+927863
+927869
+927961
+927967
+927973
+928001
+928043
+928051
+928063
+928079
+928097
+928099
+928111
+928139
+928141
+928153
+928157
+928159
+928163
+928177
+928223
+928231
+928253
+928267
+928271
+928273
+928289
+928307
+928313
+928331
+928337
+928351
+928399
+928409
+928423
+928427
+928429
+928453
+928457
+928463
+928469
+928471
+928513
+928547
+928559
+928561
+928597
+928607
+928619
+928621
+928637
+928643
+928649
+928651
+928661
+928679
+928699
+928703
+928769
+928771
+928787
+928793
+928799
+928813
+928817
+928819
+928849
+928859
+928871
+928883
+928903
+928913
+928927
+928933
+928979
+929003
+929009
+929011
+929023
+929029
+929051
+929057
+929059
+929063
+929069
+929077
+929083
+929087
+929113
+929129
+929141
+929153
+929161
+929171
+929197
+929207
+929209
+929239
+929251
+929261
+929281
+929293
+929303
+929311
+929323
+929333
+929381
+929389
+929393
+929399
+929417
+929419
+929431
+929459
+929483
+929497
+929501
+929507
+929527
+929549
+929557
+929561
+929573
+929581
+929587
+929609
+929623
+929627
+929629
+929639
+929641
+929647
+929671
+929693
+929717
+929737
+929741
+929743
+929749
+929777
+929791
+929807
+929809
+929813
+929843
+929861
+929869
+929881
+929891
+929897
+929941
+929953
+929963
+929977
+929983
+930011
+930043
+930071
+930073
+930077
+930079
+930089
+930101
+930113
+930119
+930157
+930173
+930179
+930187
+930191
+930197
+930199
+930211
+930229
+930269
+930277
+930283
+930287
+930289
+930301
+930323
+930337
+930379
+930389
+930409
+930437
+930467
+930469
+930481
+930491
+930499
+930509
+930547
+930551
+930569
+930571
+930583
+930593
+930617
+930619
+930637
+930653
+930667
+930689
+930707
+930719
+930737
+930749
+930763
+930773
+930779
+930817
+930827
+930841
+930847
+930859
+930863
+930889
+930911
+930931
+930973
+930977
+930989
+930991
+931003
+931013
+931067
+931087
+931097
+931123
+931127
+931129
+931153
+931163
+931169
+931181
+931193
+931199
+931213
+931237
+931241
+931267
+931289
+931303
+931309
+931313
+931319
+931351
+931363
+931387
+931417
+931421
+931487
+931499
+931517
+931529
+931537
+931543
+931571
+931573
+931577
+931597
+931621
+931639
+931657
+931691
+931709
+931727
+931729
+931739
+931747
+931751
+931757
+931781
+931783
+931789
+931811
+931837
+931849
+931859
+931873
+931877
+931883
+931901
+931907
+931913
+931921
+931933
+931943
+931949
+931967
+931981
+931999
+932003
+932021
+932039
+932051
+932081
+932101
+932117
+932119
+932131
+932149
+932153
+932177
+932189
+932203
+932207
+932209
+932219
+932221
+932227
+932231
+932257
+932303
+932317
+932333
+932341
+932353
+932357
+932413
+932417
+932419
+932431
+932441
+932447
+932471
+932473
+932483
+932497
+932513
+932521
+932537
+932549
+932557
+932563
+932567
+932579
+932587
+932593
+932597
+932609
+932647
+932651
+932663
+932677
+932681
+932683
+932749
+932761
+932779
+932783
+932801
+932803
+932819
+932839
+932863
+932879
+932887
+932917
+932923
+932927
+932941
+932947
+932951
+932963
+932969
+932983
+932999
+933001
+933019
+933047
+933059
+933061
+933067
+933073
+933151
+933157
+933173
+933199
+933209
+933217
+933221
+933241
+933259
+933263
+933269
+933293
+933301
+933313
+933319
+933329
+933349
+933389
+933397
+933403
+933407
+933421
+933433
+933463
+933479
+933497
+933523
+933551
+933553
+933563
+933601
+933607
+933613
+933643
+933649
+933671
+933677
+933703
+933707
+933739
+933761
+933781
+933787
+933797
+933809
+933811
+933817
+933839
+933847
+933851
+933853
+933883
+933893
+933923
+933931
+933943
+933949
+933953
+933967
+933973
+933979
+934001
+934009
+934033
+934039
+934049
+934051
+934057
+934067
+934069
+934079
+934111
+934117
+934121
+934127
+934151
+934159
+934187
+934223
+934229
+934243
+934253
+934259
+934277
+934291
+934301
+934319
+934343
+934387
+934393
+934399
+934403
+934429
+934441
+934463
+934469
+934481
+934487
+934489
+934499
+934517
+934523
+934537
+934543
+934547
+934561
+934567
+934579
+934597
+934603
+934607
+934613
+934639
+934669
+934673
+934693
+934721
+934723
+934733
+934753
+934763
+934771
+934793
+934799
+934811
+934831
+934837
+934853
+934861
+934883
+934889
+934891
+934897
+934907
+934909
+934919
+934939
+934943
+934951
+934961
+934979
+934981
+935003
+935021
+935023
+935059
+935063
+935071
+935093
+935107
+935113
+935147
+935149
+935167
+935183
+935189
+935197
+935201
+935213
+935243
+935257
+935261
+935303
+935339
+935353
+935359
+935377
+935381
+935393
+935399
+935413
+935423
+935443
+935447
+935461
+935489
+935507
+935513
+935531
+935537
+935581
+935587
+935591
+935593
+935603
+935621
+935639
+935651
+935653
+935677
+935687
+935689
+935699
+935707
+935717
+935719
+935761
+935771
+935777
+935791
+935813
+935819
+935827
+935839
+935843
+935861
+935899
+935903
+935971
+935999
+936007
+936029
+936053
+936097
+936113
+936119
+936127
+936151
+936161
+936179
+936181
+936197
+936203
+936223
+936227
+936233
+936253
+936259
+936281
+936283
+936311
+936319
+936329
+936361
+936379
+936391
+936401
+936407
+936413
+936437
+936451
+936469
+936487
+936493
+936499
+936511
+936521
+936527
+936539
+936557
+936577
+936587
+936599
+936619
+936647
+936659
+936667
+936673
+936679
+936697
+936709
+936713
+936731
+936737
+936739
+936769
+936773
+936779
+936797
+936811
+936827
+936869
+936889
+936907
+936911
+936917
+936919
+936937
+936941
+936953
+936967
+937003
+937007
+937009
+937031
+937033
+937049
+937067
+937121
+937127
+937147
+937151
+937171
+937187
+937207
+937229
+937231
+937241
+937243
+937253
+937331
+937337
+937351
+937373
+937379
+937421
+937429
+937459
+937463
+937477
+937481
+937501
+937511
+937537
+937571
+937577
+937589
+937591
+937613
+937627
+937633
+937637
+937639
+937661
+937663
+937667
+937679
+937681
+937693
+937709
+937721
+937747
+937751
+937777
+937789
+937801
+937813
+937819
+937823
+937841
+937847
+937877
+937883
+937891
+937901
+937903
+937919
+937927
+937943
+937949
+937969
+937991
+938017
+938023
+938027
+938033
+938051
+938053
+938057
+938059
+938071
+938083
+938089
+938099
+938107
+938117
+938129
+938183
+938207
+938219
+938233
+938243
+938251
+938257
+938263
+938279
+938293
+938309
+938323
+938341
+938347
+938351
+938359
+938369
+938387
+938393
+938437
+938447
+938453
+938459
+938491
+938507
+938533
+938537
+938563
+938569
+938573
+938591
+938611
+938617
+938659
+938677
+938681
+938713
+938747
+938761
+938803
+938807
+938827
+938831
+938843
+938857
+938869
+938879
+938881
+938921
+938939
+938947
+938953
+938963
+938969
+938981
+938983
+938989
+939007
+939011
+939019
+939061
+939089
+939091
+939109
+939119
+939121
+939157
+939167
+939179
+939181
+939193
+939203
+939229
+939247
+939287
+939293
+939299
+939317
+939347
+939349
+939359
+939361
+939373
+939377
+939391
+939413
+939431
+939439
+939443
+939451
+939469
+939487
+939511
+939551
+939581
+939599
+939611
+939613
+939623
+939649
+939661
+939677
+939707
+939713
+939737
+939739
+939749
+939767
+939769
+939773
+939791
+939793
+939823
+939839
+939847
+939853
+939871
+939881
+939901
+939923
+939931
+939971
+939973
+939989
+939997
+940001
+940003
+940019
+940031
+940067
+940073
+940087
+940097
+940127
+940157
+940169
+940183
+940189
+940201
+940223
+940229
+940241
+940249
+940259
+940271
+940279
+940297
+940301
+940319
+940327
+940349
+940351
+940361
+940369
+940399
+940403
+940421
+940469
+940477
+940483
+940501
+940523
+940529
+940531
+940543
+940547
+940549
+940553
+940573
+940607
+940619
+940649
+940669
+940691
+940703
+940721
+940727
+940733
+940739
+940759
+940781
+940783
+940787
+940801
+940813
+940817
+940829
+940853
+940871
+940879
+940889
+940903
+940913
+940921
+940931
+940949
+940957
+940981
+940993
+941009
+941011
+941023
+941027
+941041
+941093
+941099
+941117
+941119
+941123
+941131
+941153
+941159
+941167
+941179
+941201
+941207
+941209
+941221
+941249
+941251
+941263
+941267
+941299
+941309
+941323
+941329
+941351
+941359
+941383
+941407
+941429
+941441
+941449
+941453
+941461
+941467
+941471
+941489
+941491
+941503
+941509
+941513
+941519
+941537
+941557
+941561
+941573
+941593
+941599
+941609
+941617
+941641
+941653
+941663
+941669
+941671
+941683
+941701
+941723
+941737
+941741
+941747
+941753
+941771
+941791
+941813
+941839
+941861
+941879
+941903
+941911
+941929
+941933
+941947
+941971
+941981
+941989
+941999
+942013
+942017
+942031
+942037
+942041
+942043
+942049
+942061
+942079
+942091
+942101
+942113
+942143
+942163
+942167
+942169
+942187
+942199
+942217
+942223
+942247
+942257
+942269
+942301
+942311
+942313
+942317
+942341
+942367
+942371
+942401
+942433
+942437
+942439
+942449
+942479
+942509
+942521
+942527
+942541
+942569
+942577
+942583
+942593
+942607
+942637
+942653
+942659
+942661
+942691
+942709
+942719
+942727
+942749
+942763
+942779
+942787
+942811
+942827
+942847
+942853
+942857
+942859
+942869
+942883
+942889
+942899
+942901
+942917
+942943
+942979
+942983
+943003
+943009
+943013
+943031
+943043
+943057
+943073
+943079
+943081
+943091
+943097
+943127
+943139
+943153
+943157
+943183
+943199
+943213
+943219
+943231
+943249
+943273
+943277
+943289
+943301
+943303
+943307
+943321
+943343
+943357
+943363
+943367
+943373
+943387
+943403
+943409
+943421
+943429
+943471
+943477
+943499
+943511
+943541
+943543
+943567
+943571
+943589
+943601
+943603
+943637
+943651
+943693
+943699
+943729
+943741
+943751
+943757
+943763
+943769
+943777
+943781
+943783
+943799
+943801
+943819
+943837
+943841
+943843
+943849
+943871
+943903
+943909
+943913
+943931
+943951
+943967
+944003
+944017
+944029
+944039
+944071
+944077
+944123
+944137
+944143
+944147
+944149
+944161
+944179
+944191
+944233
+944239
+944257
+944261
+944263
+944297
+944309
+944329
+944369
+944387
+944389
+944393
+944399
+944417
+944429
+944431
+944453
+944467
+944473
+944491
+944497
+944519
+944521
+944527
+944533
+944543
+944551
+944561
+944563
+944579
+944591
+944609
+944621
+944651
+944659
+944677
+944687
+944689
+944701
+944711
+944717
+944729
+944731
+944773
+944777
+944803
+944821
+944833
+944857
+944873
+944887
+944893
+944897
+944899
+944929
+944953
+944963
+944969
+944987
+945031
+945037
+945059
+945089
+945103
+945143
+945151
+945179
+945209
+945211
+945227
+945233
+945289
+945293
+945331
+945341
+945349
+945359
+945367
+945377
+945389
+945391
+945397
+945409
+945431
+945457
+945463
+945473
+945479
+945481
+945521
+945547
+945577
+945587
+945589
+945601
+945629
+945631
+945647
+945671
+945673
+945677
+945701
+945731
+945733
+945739
+945767
+945787
+945799
+945809
+945811
+945817
+945823
+945851
+945881
+945883
+945887
+945899
+945907
+945929
+945937
+945941
+945943
+945949
+945961
+945983
+946003
+946021
+946031
+946037
+946079
+946081
+946091
+946093
+946109
+946111
+946123
+946133
+946163
+946177
+946193
+946207
+946223
+946249
+946273
+946291
+946307
+946327
+946331
+946367
+946369
+946391
+946397
+946411
+946417
+946453
+946459
+946469
+946487
+946489
+946507
+946511
+946513
+946549
+946573
+946579
+946607
+946661
+946663
+946667
+946669
+946681
+946697
+946717
+946727
+946733
+946741
+946753
+946769
+946783
+946801
+946819
+946823
+946853
+946859
+946861
+946873
+946877
+946901
+946919
+946931
+946943
+946949
+946961
+946969
+946987
+946993
+946997
+947027
+947033
+947083
+947119
+947129
+947137
+947171
+947183
+947197
+947203
+947239
+947263
+947299
+947327
+947341
+947351
+947357
+947369
+947377
+947381
+947383
+947389
+947407
+947411
+947413
+947417
+947423
+947431
+947449
+947483
+947501
+947509
+947539
+947561
+947579
+947603
+947621
+947627
+947641
+947647
+947651
+947659
+947707
+947711
+947719
+947729
+947741
+947743
+947747
+947753
+947773
+947783
+947803
+947819
+947833
+947851
+947857
+947861
+947873
+947893
+947911
+947917
+947927
+947959
+947963
+947987
+948007
+948019
+948029
+948041
+948049
+948053
+948061
+948067
+948089
+948091
+948133
+948139
+948149
+948151
+948169
+948173
+948187
+948247
+948253
+948263
+948281
+948287
+948293
+948317
+948331
+948349
+948377
+948391
+948401
+948403
+948407
+948427
+948439
+948443
+948449
+948457
+948469
+948487
+948517
+948533
+948547
+948551
+948557
+948581
+948593
+948659
+948671
+948707
+948713
+948721
+948749
+948767
+948797
+948799
+948839
+948847
+948853
+948877
+948887
+948901
+948907
+948929
+948943
+948947
+948971
+948973
+948989
+949001
+949019
+949021
+949033
+949037
+949043
+949051
+949111
+949121
+949129
+949147
+949153
+949159
+949171
+949211
+949213
+949241
+949243
+949253
+949261
+949303
+949307
+949381
+949387
+949391
+949409
+949423
+949427
+949439
+949441
+949451
+949453
+949471
+949477
+949513
+949517
+949523
+949567
+949583
+949589
+949607
+949609
+949621
+949631
+949633
+949643
+949649
+949651
+949667
+949673
+949687
+949691
+949699
+949733
+949759
+949771
+949777
+949789
+949811
+949849
+949853
+949889
+949891
+949903
+949931
+949937
+949939
+949951
+949957
+949961
+949967
+949973
+949979
+949987
+949997
+950009
+950023
+950029
+950039
+950041
+950071
+950083
+950099
+950111
+950149
+950161
+950177
+950179
+950207
+950221
+950227
+950231
+950233
+950239
+950251
+950269
+950281
+950329
+950333
+950347
+950357
+950363
+950393
+950401
+950423
+950447
+950459
+950461
+950473
+950479
+950483
+950497
+950501
+950507
+950519
+950527
+950531
+950557
+950569
+950611
+950617
+950633
+950639
+950647
+950671
+950681
+950689
+950693
+950699
+950717
+950723
+950737
+950743
+950753
+950783
+950791
+950809
+950813
+950819
+950837
+950839
+950867
+950869
+950879
+950921
+950927
+950933
+950947
+950953
+950959
+950993
+951001
+951019
+951023
+951029
+951047
+951053
+951059
+951061
+951079
+951089
+951091
+951101
+951107
+951109
+951131
+951151
+951161
+951193
+951221
+951259
+951277
+951281
+951283
+951299
+951331
+951341
+951343
+951361
+951367
+951373
+951389
+951407
+951413
+951427
+951437
+951449
+951469
+951479
+951491
+951497
+951553
+951557
+951571
+951581
+951583
+951589
+951623
+951637
+951641
+951647
+951649
+951659
+951689
+951697
+951749
+951781
+951787
+951791
+951803
+951829
+951851
+951859
+951887
+951893
+951911
+951941
+951943
+951959
+951967
+951997
+952001
+952009
+952037
+952057
+952073
+952087
+952097
+952111
+952117
+952123
+952129
+952141
+952151
+952163
+952169
+952183
+952199
+952207
+952219
+952229
+952247
+952253
+952277
+952279
+952291
+952297
+952313
+952349
+952363
+952379
+952381
+952397
+952423
+952429
+952439
+952481
+952487
+952507
+952513
+952541
+952547
+952559
+952573
+952583
+952597
+952619
+952649
+952657
+952667
+952669
+952681
+952687
+952691
+952709
+952739
+952741
+952753
+952771
+952789
+952811
+952813
+952823
+952829
+952843
+952859
+952873
+952877
+952883
+952921
+952927
+952933
+952937
+952943
+952957
+952967
+952979
+952981
+952997
+953023
+953039
+953041
+953053
+953077
+953081
+953093
+953111
+953131
+953149
+953171
+953179
+953191
+953221
+953237
+953243
+953261
+953273
+953297
+953321
+953333
+953341
+953347
+953399
+953431
+953437
+953443
+953473
+953483
+953497
+953501
+953503
+953507
+953521
+953539
+953543
+953551
+953567
+953593
+953621
+953639
+953647
+953651
+953671
+953681
+953699
+953707
+953731
+953747
+953773
+953789
+953791
+953831
+953851
+953861
+953873
+953881
+953917
+953923
+953929
+953941
+953969
+953977
+953983
+953987
+954001
+954007
+954011
+954043
+954067
+954097
+954103
+954131
+954133
+954139
+954157
+954167
+954181
+954203
+954209
+954221
+954229
+954253
+954257
+954259
+954263
+954269
+954277
+954287
+954307
+954319
+954323
+954367
+954377
+954379
+954391
+954409
+954433
+954451
+954461
+954469
+954491
+954497
+954509
+954517
+954539
+954571
+954599
+954619
+954623
+954641
+954649
+954671
+954677
+954697
+954713
+954719
+954727
+954743
+954757
+954763
+954827
+954829
+954847
+954851
+954853
+954857
+954869
+954871
+954911
+954917
+954923
+954929
+954971
+954973
+954977
+954979
+954991
+955037
+955039
+955051
+955061
+955063
+955091
+955093
+955103
+955127
+955139
+955147
+955153
+955183
+955193
+955211
+955217
+955223
+955243
+955261
+955267
+955271
+955277
+955307
+955309
+955313
+955319
+955333
+955337
+955363
+955379
+955391
+955433
+955439
+955441
+955457
+955469
+955477
+955481
+955483
+955501
+955511
+955541
+955601
+955607
+955613
+955649
+955657
+955693
+955697
+955709
+955711
+955727
+955729
+955769
+955777
+955781
+955793
+955807
+955813
+955819
+955841
+955853
+955879
+955883
+955891
+955901
+955919
+955937
+955939
+955951
+955957
+955963
+955967
+955987
+955991
+955993
+956003
+956051
+956057
+956083
+956107
+956113
+956119
+956143
+956147
+956177
+956231
+956237
+956261
+956269
+956273
+956281
+956303
+956311
+956341
+956353
+956357
+956377
+956383
+956387
+956393
+956399
+956401
+956429
+956477
+956503
+956513
+956521
+956569
+956587
+956617
+956633
+956689
+956699
+956713
+956723
+956749
+956759
+956789
+956801
+956831
+956843
+956849
+956861
+956881
+956903
+956909
+956929
+956941
+956951
+956953
+956987
+956993
+956999
+957031
+957037
+957041
+957043
+957059
+957071
+957091
+957097
+957107
+957109
+957119
+957133
+957139
+957161
+957169
+957181
+957193
+957211
+957221
+957241
+957247
+957263
+957289
+957317
+957331
+957337
+957349
+957361
+957403
+957409
+957413
+957419
+957431
+957433
+957499
+957529
+957547
+957553
+957557
+957563
+957587
+957599
+957601
+957611
+957641
+957643
+957659
+957701
+957703
+957709
+957721
+957731
+957751
+957769
+957773
+957811
+957821
+957823
+957851
+957871
+957877
+957889
+957917
+957937
+957949
+957953
+957959
+957977
+957991
+958007
+958021
+958039
+958043
+958049
+958051
+958057
+958063
+958121
+958123
+958141
+958159
+958163
+958183
+958193
+958213
+958259
+958261
+958289
+958313
+958319
+958327
+958333
+958339
+958343
+958351
+958357
+958361
+958367
+958369
+958381
+958393
+958423
+958439
+958459
+958481
+958487
+958499
+958501
+958519
+958523
+958541
+958543
+958547
+958549
+958553
+958577
+958609
+958627
+958637
+958667
+958669
+958673
+958679
+958687
+958693
+958729
+958739
+958777
+958787
+958807
+958819
+958829
+958843
+958849
+958871
+958877
+958883
+958897
+958901
+958921
+958931
+958933
+958957
+958963
+958967
+958973
+959009
+959083
+959093
+959099
+959131
+959143
+959149
+959159
+959173
+959183
+959207
+959209
+959219
+959227
+959237
+959263
+959267
+959269
+959279
+959323
+959333
+959339
+959351
+959363
+959369
+959377
+959383
+959389
+959449
+959461
+959467
+959471
+959473
+959477
+959479
+959489
+959533
+959561
+959579
+959597
+959603
+959617
+959627
+959659
+959677
+959681
+959689
+959719
+959723
+959737
+959759
+959773
+959779
+959801
+959809
+959831
+959863
+959867
+959869
+959873
+959879
+959887
+959911
+959921
+959927
+959941
+959947
+959953
+959969
+960017
+960019
+960031
+960049
+960053
+960059
+960077
+960119
+960121
+960131
+960137
+960139
+960151
+960173
+960191
+960199
+960217
+960229
+960251
+960259
+960293
+960299
+960329
+960331
+960341
+960353
+960373
+960383
+960389
+960419
+960467
+960493
+960497
+960499
+960521
+960523
+960527
+960569
+960581
+960587
+960593
+960601
+960637
+960643
+960647
+960649
+960667
+960677
+960691
+960703
+960709
+960737
+960763
+960793
+960803
+960809
+960829
+960833
+960863
+960889
+960931
+960937
+960941
+960961
+960977
+960983
+960989
+960991
+961003
+961021
+961033
+961063
+961067
+961069
+961073
+961087
+961091
+961097
+961099
+961109
+961117
+961123
+961133
+961139
+961141
+961151
+961157
+961159
+961183
+961187
+961189
+961201
+961241
+961243
+961273
+961277
+961283
+961313
+961319
+961339
+961393
+961397
+961399
+961427
+961447
+961451
+961453
+961459
+961487
+961507
+961511
+961529
+961531
+961547
+961549
+961567
+961601
+961613
+961619
+961627
+961633
+961637
+961643
+961657
+961661
+961663
+961679
+961687
+961691
+961703
+961729
+961733
+961739
+961747
+961757
+961769
+961777
+961783
+961789
+961811
+961813
+961817
+961841
+961847
+961853
+961861
+961871
+961879
+961927
+961937
+961943
+961957
+961973
+961981
+961991
+961993
+962009
+962011
+962033
+962041
+962051
+962063
+962077
+962099
+962119
+962131
+962161
+962177
+962197
+962233
+962237
+962243
+962257
+962267
+962303
+962309
+962341
+962363
+962413
+962417
+962431
+962441
+962447
+962459
+962461
+962471
+962477
+962497
+962503
+962509
+962537
+962543
+962561
+962569
+962587
+962603
+962609
+962617
+962623
+962627
+962653
+962669
+962671
+962677
+962681
+962683
+962737
+962743
+962747
+962779
+962783
+962789
+962791
+962807
+962837
+962839
+962861
+962867
+962869
+962903
+962909
+962911
+962921
+962959
+962963
+962971
+962993
+963019
+963031
+963043
+963047
+963097
+963103
+963121
+963143
+963163
+963173
+963181
+963187
+963191
+963211
+963223
+963227
+963239
+963241
+963253
+963283
+963299
+963301
+963311
+963323
+963331
+963341
+963343
+963349
+963367
+963379
+963397
+963419
+963427
+963461
+963481
+963491
+963497
+963499
+963559
+963581
+963601
+963607
+963629
+963643
+963653
+963659
+963667
+963689
+963691
+963701
+963707
+963709
+963719
+963731
+963751
+963761
+963763
+963779
+963793
+963799
+963811
+963817
+963839
+963841
+963847
+963863
+963871
+963877
+963899
+963901
+963913
+963943
+963973
+963979
+964009
+964021
+964027
+964039
+964049
+964081
+964097
+964133
+964151
+964153
+964199
+964207
+964213
+964217
+964219
+964253
+964259
+964261
+964267
+964283
+964289
+964297
+964303
+964309
+964333
+964339
+964351
+964357
+964363
+964373
+964417
+964423
+964433
+964463
+964499
+964501
+964507
+964517
+964519
+964531
+964559
+964571
+964577
+964583
+964589
+964609
+964637
+964661
+964679
+964693
+964697
+964703
+964721
+964753
+964757
+964783
+964787
+964793
+964823
+964829
+964861
+964871
+964879
+964883
+964889
+964897
+964913
+964927
+964933
+964939
+964967
+964969
+964973
+964981
+965023
+965047
+965059
+965087
+965089
+965101
+965113
+965117
+965131
+965147
+965161
+965171
+965177
+965179
+965189
+965191
+965197
+965201
+965227
+965233
+965249
+965267
+965291
+965303
+965317
+965329
+965357
+965369
+965399
+965401
+965407
+965411
+965423
+965429
+965443
+965453
+965467
+965483
+965491
+965507
+965519
+965533
+965551
+965567
+965603
+965611
+965621
+965623
+965639
+965647
+965659
+965677
+965711
+965749
+965759
+965773
+965777
+965779
+965791
+965801
+965843
+965851
+965857
+965893
+965927
+965953
+965963
+965969
+965983
+965989
+966011
+966013
+966029
+966041
+966109
+966113
+966139
+966149
+966157
+966191
+966197
+966209
+966211
+966221
+966227
+966233
+966241
+966257
+966271
+966293
+966307
+966313
+966319
+966323
+966337
+966347
+966353
+966373
+966377
+966379
+966389
+966401
+966409
+966419
+966431
+966439
+966463
+966481
+966491
+966499
+966509
+966521
+966527
+966547
+966557
+966583
+966613
+966617
+966619
+966631
+966653
+966659
+966661
+966677
+966727
+966751
+966781
+966803
+966817
+966863
+966869
+966871
+966883
+966893
+966907
+966913
+966919
+966923
+966937
+966961
+966971
+966991
+966997
+967003
+967019
+967049
+967061
+967111
+967129
+967139
+967171
+967201
+967229
+967259
+967261
+967289
+967297
+967319
+967321
+967327
+967333
+967349
+967361
+967363
+967391
+967397
+967427
+967429
+967441
+967451
+967459
+967481
+967493
+967501
+967507
+967511
+967529
+967567
+967583
+967607
+967627
+967663
+967667
+967693
+967699
+967709
+967721
+967739
+967751
+967753
+967763
+967781
+967787
+967819
+967823
+967831
+967843
+967847
+967859
+967873
+967877
+967903
+967919
+967931
+967937
+967951
+967961
+967979
+967999
+968003
+968017
+968021
+968027
+968041
+968063
+968089
+968101
+968111
+968113
+968117
+968137
+968141
+968147
+968159
+968173
+968197
+968213
+968237
+968239
+968251
+968263
+968267
+968273
+968291
+968299
+968311
+968321
+968329
+968333
+968353
+968377
+968381
+968389
+968419
+968423
+968431
+968437
+968459
+968467
+968479
+968501
+968503
+968519
+968521
+968537
+968557
+968567
+968573
+968593
+968641
+968647
+968659
+968663
+968689
+968699
+968713
+968729
+968731
+968761
+968801
+968809
+968819
+968827
+968831
+968857
+968879
+968897
+968909
+968911
+968917
+968939
+968959
+968963
+968971
+969011
+969037
+969041
+969049
+969071
+969083
+969097
+969109
+969113
+969131
+969139
+969167
+969179
+969181
+969233
+969239
+969253
+969257
+969259
+969271
+969301
+969341
+969343
+969347
+969359
+969377
+969403
+969407
+969421
+969431
+969433
+969443
+969457
+969461
+969467
+969481
+969497
+969503
+969509
+969533
+969559
+969569
+969593
+969599
+969637
+969641
+969667
+969671
+969677
+969679
+969713
+969719
+969721
+969743
+969757
+969763
+969767
+969791
+969797
+969809
+969821
+969851
+969863
+969869
+969877
+969889
+969907
+969911
+969919
+969923
+969929
+969977
+969989
+970027
+970031
+970043
+970051
+970061
+970063
+970069
+970087
+970091
+970111
+970133
+970147
+970201
+970213
+970217
+970219
+970231
+970237
+970247
+970259
+970261
+970267
+970279
+970297
+970303
+970313
+970351
+970391
+970421
+970423
+970433
+970441
+970447
+970457
+970469
+970481
+970493
+970537
+970549
+970561
+970573
+970583
+970603
+970633
+970643
+970657
+970667
+970687
+970699
+970721
+970747
+970777
+970787
+970789
+970793
+970799
+970813
+970817
+970829
+970847
+970859
+970861
+970867
+970877
+970883
+970903
+970909
+970927
+970939
+970943
+970961
+970967
+970969
+970987
+970997
+970999
+971021
+971027
+971029
+971039
+971051
+971053
+971063
+971077
+971093
+971099
+971111
+971141
+971143
+971149
+971153
+971171
+971177
+971197
+971207
+971237
+971251
+971263
+971273
+971279
+971281
+971291
+971309
+971339
+971353
+971357
+971371
+971381
+971387
+971389
+971401
+971419
+971429
+971441
+971473
+971479
+971483
+971491
+971501
+971513
+971521
+971549
+971561
+971563
+971569
+971591
+971639
+971651
+971653
+971683
+971693
+971699
+971713
+971723
+971753
+971759
+971767
+971783
+971821
+971833
+971851
+971857
+971863
+971899
+971903
+971917
+971921
+971933
+971939
+971951
+971959
+971977
+971981
+971989
+972001
+972017
+972029
+972031
+972047
+972071
+972079
+972091
+972113
+972119
+972121
+972131
+972133
+972137
+972161
+972163
+972197
+972199
+972221
+972227
+972229
+972259
+972263
+972271
+972277
+972313
+972319
+972329
+972337
+972343
+972347
+972353
+972373
+972403
+972407
+972409
+972427
+972431
+972443
+972469
+972473
+972481
+972493
+972533
+972557
+972577
+972581
+972599
+972611
+972613
+972623
+972637
+972649
+972661
+972679
+972683
+972701
+972721
+972787
+972793
+972799
+972823
+972827
+972833
+972847
+972869
+972887
+972899
+972901
+972941
+972943
+972967
+972977
+972991
+973001
+973003
+973031
+973033
+973051
+973057
+973067
+973069
+973073
+973081
+973099
+973129
+973151
+973169
+973177
+973187
+973213
+973253
+973277
+973279
+973283
+973289
+973321
+973331
+973333
+973367
+973373
+973387
+973397
+973409
+973411
+973421
+973439
+973459
+973487
+973523
+973529
+973537
+973547
+973561
+973591
+973597
+973631
+973657
+973669
+973681
+973691
+973727
+973757
+973759
+973781
+973787
+973789
+973801
+973813
+973823
+973837
+973853
+973891
+973897
+973901
+973919
+973957
+974003
+974009
+974033
+974041
+974053
+974063
+974089
+974107
+974123
+974137
+974143
+974147
+974159
+974161
+974167
+974177
+974179
+974189
+974213
+974249
+974261
+974269
+974273
+974279
+974293
+974317
+974329
+974359
+974383
+974387
+974401
+974411
+974417
+974419
+974431
+974437
+974443
+974459
+974473
+974489
+974497
+974507
+974513
+974531
+974537
+974539
+974551
+974557
+974563
+974581
+974591
+974599
+974651
+974653
+974657
+974707
+974711
+974713
+974737
+974747
+974749
+974761
+974773
+974803
+974819
+974821
+974837
+974849
+974861
+974863
+974867
+974873
+974879
+974887
+974891
+974923
+974927
+974957
+974959
+974969
+974971
+974977
+974983
+974989
+974999
+975011
+975017
+975049
+975053
+975071
+975083
+975089
+975133
+975151
+975157
+975181
+975187
+975193
+975199
+975217
+975257
+975259
+975263
+975277
+975281
+975287
+975313
+975323
+975343
+975367
+975379
+975383
+975389
+975421
+975427
+975433
+975439
+975463
+975493
+975497
+975509
+975521
+975523
+975551
+975553
+975581
+975599
+975619
+975629
+975643
+975649
+975661
+975671
+975691
+975701
+975731
+975739
+975743
+975797
+975803
+975811
+975823
+975827
+975847
+975857
+975869
+975883
+975899
+975901
+975907
+975941
+975943
+975967
+975977
+975991
+976009
+976013
+976033
+976039
+976091
+976093
+976103
+976109
+976117
+976127
+976147
+976177
+976187
+976193
+976211
+976231
+976253
+976271
+976279
+976301
+976303
+976307
+976309
+976351
+976369
+976403
+976411
+976439
+976447
+976453
+976457
+976471
+976477
+976483
+976489
+976501
+976513
+976537
+976553
+976559
+976561
+976571
+976601
+976607
+976621
+976637
+976639
+976643
+976669
+976699
+976709
+976721
+976727
+976777
+976799
+976817
+976823
+976849
+976853
+976883
+976909
+976919
+976933
+976951
+976957
+976991
+977021
+977023
+977047
+977057
+977069
+977087
+977107
+977147
+977149
+977167
+977183
+977191
+977203
+977209
+977233
+977239
+977243
+977257
+977269
+977299
+977323
+977351
+977357
+977359
+977363
+977369
+977407
+977411
+977413
+977437
+977447
+977507
+977513
+977521
+977539
+977567
+977591
+977593
+977609
+977611
+977629
+977671
+977681
+977693
+977719
+977723
+977747
+977761
+977791
+977803
+977813
+977819
+977831
+977849
+977861
+977881
+977897
+977923
+977927
+977971
+978001
+978007
+978011
+978017
+978031
+978037
+978041
+978049
+978053
+978067
+978071
+978073
+978077
+978079
+978091
+978113
+978149
+978151
+978157
+978179
+978181
+978203
+978209
+978217
+978223
+978233
+978239
+978269
+978277
+978283
+978287
+978323
+978337
+978343
+978347
+978349
+978359
+978389
+978403
+978413
+978427
+978449
+978457
+978463
+978473
+978479
+978491
+978511
+978521
+978541
+978569
+978599
+978611
+978617
+978619
+978643
+978647
+978683
+978689
+978697
+978713
+978727
+978743
+978749
+978773
+978797
+978799
+978821
+978839
+978851
+978853
+978863
+978871
+978883
+978907
+978917
+978931
+978947
+978973
+978997
+979001
+979009
+979031
+979037
+979061
+979063
+979093
+979103
+979109
+979117
+979159
+979163
+979171
+979177
+979189
+979201
+979207
+979211
+979219
+979229
+979261
+979273
+979283
+979291
+979313
+979327
+979333
+979337
+979343
+979361
+979369
+979373
+979379
+979403
+979423
+979439
+979457
+979471
+979481
+979519
+979529
+979541
+979543
+979549
+979553
+979567
+979651
+979691
+979709
+979717
+979747
+979757
+979787
+979807
+979819
+979831
+979873
+979883
+979889
+979907
+979919
+979921
+979949
+979969
+979987
+980027
+980047
+980069
+980071
+980081
+980107
+980117
+980131
+980137
+980149
+980159
+980173
+980179
+980197
+980219
+980249
+980261
+980293
+980299
+980321
+980327
+980363
+980377
+980393
+980401
+980417
+980423
+980431
+980449
+980459
+980471
+980489
+980491
+980503
+980549
+980557
+980579
+980587
+980591
+980593
+980599
+980621
+980641
+980677
+980687
+980689
+980711
+980717
+980719
+980729
+980731
+980773
+980801
+980803
+980827
+980831
+980851
+980887
+980893
+980897
+980899
+980909
+980911
+980921
+980957
+980963
+980999
+981011
+981017
+981023
+981037
+981049
+981061
+981067
+981073
+981077
+981091
+981133
+981137
+981139
+981151
+981173
+981187
+981199
+981209
+981221
+981241
+981263
+981271
+981283
+981287
+981289
+981301
+981311
+981319
+981373
+981377
+981391
+981397
+981419
+981437
+981439
+981443
+981451
+981467
+981473
+981481
+981493
+981517
+981523
+981527
+981569
+981577
+981587
+981599
+981601
+981623
+981637
+981653
+981683
+981691
+981697
+981703
+981707
+981713
+981731
+981769
+981797
+981809
+981811
+981817
+981823
+981887
+981889
+981913
+981919
+981941
+981947
+981949
+981961
+981979
+981983
+982021
+982057
+982061
+982063
+982067
+982087
+982097
+982099
+982103
+982117
+982133
+982147
+982151
+982171
+982183
+982187
+982211
+982213
+982217
+982231
+982271
+982273
+982301
+982321
+982337
+982339
+982343
+982351
+982363
+982381
+982393
+982403
+982453
+982489
+982493
+982559
+982571
+982573
+982577
+982589
+982603
+982613
+982621
+982633
+982643
+982687
+982693
+982697
+982703
+982741
+982759
+982769
+982777
+982783
+982789
+982801
+982819
+982829
+982841
+982843
+982847
+982867
+982871
+982903
+982909
+982931
+982939
+982967
+982973
+982981
+983063
+983069
+983083
+983113
+983119
+983123
+983131
+983141
+983149
+983153
+983173
+983179
+983189
+983197
+983209
+983233
+983239
+983243
+983261
+983267
+983299
+983317
+983327
+983329
+983347
+983363
+983371
+983377
+983407
+983429
+983431
+983441
+983443
+983447
+983449
+983461
+983491
+983513
+983519
+983527
+983531
+983533
+983557
+983579
+983581
+983597
+983617
+983659
+983699
+983701
+983737
+983771
+983777
+983783
+983789
+983791
+983803
+983809
+983813
+983819
+983849
+983861
+983863
+983881
+983911
+983923
+983929
+983951
+983987
+983993
+984007
+984017
+984037
+984047
+984059
+984083
+984091
+984119
+984121
+984127
+984149
+984167
+984199
+984211
+984241
+984253
+984299
+984301
+984307
+984323
+984329
+984337
+984341
+984349
+984353
+984359
+984367
+984383
+984391
+984397
+984407
+984413
+984421
+984427
+984437
+984457
+984461
+984481
+984491
+984497
+984539
+984541
+984563
+984583
+984587
+984593
+984611
+984617
+984667
+984689
+984701
+984703
+984707
+984733
+984749
+984757
+984761
+984817
+984847
+984853
+984859
+984877
+984881
+984911
+984913
+984917
+984923
+984931
+984947
+984959
+985003
+985007
+985013
+985027
+985057
+985063
+985079
+985097
+985109
+985121
+985129
+985151
+985177
+985181
+985213
+985219
+985253
+985277
+985279
+985291
+985301
+985307
+985331
+985339
+985351
+985379
+985399
+985403
+985417
+985433
+985447
+985451
+985463
+985471
+985483
+985487
+985493
+985499
+985519
+985529
+985531
+985547
+985571
+985597
+985601
+985613
+985631
+985639
+985657
+985667
+985679
+985703
+985709
+985723
+985729
+985741
+985759
+985781
+985783
+985799
+985807
+985819
+985867
+985871
+985877
+985903
+985921
+985937
+985951
+985969
+985973
+985979
+985981
+985991
+985993
+985997
+986023
+986047
+986053
+986071
+986101
+986113
+986131
+986137
+986143
+986147
+986149
+986177
+986189
+986191
+986197
+986207
+986213
+986239
+986257
+986267
+986281
+986287
+986333
+986339
+986351
+986369
+986411
+986417
+986429
+986437
+986471
+986477
+986497
+986507
+986509
+986519
+986533
+986543
+986563
+986567
+986569
+986581
+986593
+986597
+986599
+986617
+986633
+986641
+986659
+986693
+986707
+986717
+986719
+986729
+986737
+986749
+986759
+986767
+986779
+986801
+986813
+986819
+986837
+986849
+986851
+986857
+986903
+986927
+986929
+986933
+986941
+986959
+986963
+986981
+986983
+986989
+987013
+987023
+987029
+987043
+987053
+987061
+987067
+987079
+987083
+987089
+987097
+987101
+987127
+987143
+987191
+987193
+987199
+987209
+987211
+987227
+987251
+987293
+987299
+987313
+987353
+987361
+987383
+987391
+987433
+987457
+987463
+987473
+987491
+987509
+987523
+987533
+987541
+987559
+987587
+987593
+987599
+987607
+987631
+987659
+987697
+987713
+987739
+987793
+987797
+987803
+987809
+987821
+987851
+987869
+987911
+987913
+987929
+987941
+987971
+987979
+987983
+987991
+987997
+988007
+988021
+988033
+988051
+988061
+988067
+988069
+988093
+988109
+988111
+988129
+988147
+988157
+988199
+988213
+988217
+988219
+988231
+988237
+988243
+988271
+988279
+988297
+988313
+988319
+988321
+988343
+988357
+988367
+988409
+988417
+988439
+988453
+988459
+988483
+988489
+988501
+988511
+988541
+988549
+988571
+988577
+988579
+988583
+988591
+988607
+988643
+988649
+988651
+988661
+988681
+988693
+988711
+988727
+988733
+988759
+988763
+988783
+988789
+988829
+988837
+988849
+988859
+988861
+988877
+988901
+988909
+988937
+988951
+988963
+988979
+989011
+989029
+989059
+989071
+989081
+989099
+989119
+989123
+989171
+989173
+989231
+989239
+989249
+989251
+989279
+989293
+989309
+989321
+989323
+989327
+989341
+989347
+989353
+989377
+989381
+989411
+989419
+989423
+989441
+989467
+989477
+989479
+989507
+989533
+989557
+989561
+989579
+989581
+989623
+989629
+989641
+989647
+989663
+989671
+989687
+989719
+989743
+989749
+989753
+989761
+989777
+989783
+989797
+989803
+989827
+989831
+989837
+989839
+989869
+989873
+989887
+989909
+989917
+989921
+989929
+989939
+989951
+989959
+989971
+989977
+989981
+989999
+990001
+990013
+990023
+990037
+990043
+990053
+990137
+990151
+990163
+990169
+990179
+990181
+990211
+990239
+990259
+990277
+990281
+990287
+990289
+990293
+990307
+990313
+990323
+990329
+990331
+990349
+990359
+990361
+990371
+990377
+990383
+990389
+990397
+990463
+990469
+990487
+990497
+990503
+990511
+990523
+990529
+990547
+990559
+990589
+990593
+990599
+990631
+990637
+990643
+990673
+990707
+990719
+990733
+990761
+990767
+990797
+990799
+990809
+990841
+990851
+990881
+990887
+990889
+990893
+990917
+990923
+990953
+990961
+990967
+990973
+990989
+991009
+991027
+991031
+991037
+991043
+991057
+991063
+991069
+991073
+991079
+991091
+991127
+991129
+991147
+991171
+991181
+991187
+991201
+991217
+991223
+991229
+991261
+991273
+991313
+991327
+991343
+991357
+991381
+991387
+991409
+991427
+991429
+991447
+991453
+991483
+991493
+991499
+991511
+991531
+991541
+991547
+991567
+991579
+991603
+991607
+991619
+991621
+991633
+991643
+991651
+991663
+991693
+991703
+991717
+991723
+991733
+991741
+991751
+991777
+991811
+991817
+991867
+991871
+991873
+991883
+991889
+991901
+991909
+991927
+991931
+991943
+991951
+991957
+991961
+991973
+991979
+991981
+991987
+991999
+992011
+992021
+992023
+992051
+992087
+992111
+992113
+992129
+992141
+992153
+992179
+992183
+992219
+992231
+992249
+992263
+992267
+992269
+992281
+992309
+992317
+992357
+992359
+992363
+992371
+992393
+992417
+992429
+992437
+992441
+992449
+992461
+992513
+992521
+992539
+992549
+992561
+992591
+992603
+992609
+992623
+992633
+992659
+992689
+992701
+992707
+992723
+992737
+992777
+992801
+992809
+992819
+992843
+992857
+992861
+992863
+992867
+992891
+992903
+992917
+992923
+992941
+992947
+992963
+992983
+993001
+993011
+993037
+993049
+993053
+993079
+993103
+993107
+993121
+993137
+993169
+993197
+993199
+993203
+993211
+993217
+993233
+993241
+993247
+993253
+993269
+993283
+993287
+993319
+993323
+993341
+993367
+993397
+993401
+993407
+993431
+993437
+993451
+993467
+993479
+993481
+993493
+993527
+993541
+993557
+993589
+993611
+993617
+993647
+993679
+993683
+993689
+993703
+993763
+993779
+993781
+993793
+993821
+993823
+993827
+993841
+993851
+993869
+993887
+993893
+993907
+993913
+993919
+993943
+993961
+993977
+993983
+993997
+994013
+994027
+994039
+994051
+994067
+994069
+994073
+994087
+994093
+994141
+994163
+994181
+994183
+994193
+994199
+994229
+994237
+994241
+994247
+994249
+994271
+994297
+994303
+994307
+994309
+994319
+994321
+994337
+994339
+994363
+994369
+994391
+994393
+994417
+994447
+994453
+994457
+994471
+994489
+994501
+994549
+994559
+994561
+994571
+994579
+994583
+994603
+994621
+994657
+994663
+994667
+994691
+994699
+994709
+994711
+994717
+994723
+994751
+994769
+994793
+994811
+994813
+994817
+994831
+994837
+994853
+994867
+994871
+994879
+994901
+994907
+994913
+994927
+994933
+994949
+994963
+994991
+994997
+995009
+995023
+995051
+995053
+995081
+995117
+995119
+995147
+995167
+995173
+995219
+995227
+995237
+995243
+995273
+995303
+995327
+995329
+995339
+995341
+995347
+995363
+995369
+995377
+995381
+995387
+995399
+995431
+995443
+995447
+995461
+995471
+995513
+995531
+995539
+995549
+995551
+995567
+995573
+995587
+995591
+995593
+995611
+995623
+995641
+995651
+995663
+995669
+995677
+995699
+995713
+995719
+995737
+995747
+995783
+995791
+995801
+995833
+995881
+995887
+995903
+995909
+995927
+995941
+995957
+995959
+995983
+995987
+995989
+996001
+996011
+996019
+996049
+996067
+996103
+996109
+996119
+996143
+996157
+996161
+996167
+996169
+996173
+996187
+996197
+996209
+996211
+996253
+996257
+996263
+996271
+996293
+996301
+996311
+996323
+996329
+996361
+996367
+996403
+996407
+996409
+996431
+996461
+996487
+996511
+996529
+996539
+996551
+996563
+996571
+996599
+996601
+996617
+996629
+996631
+996637
+996647
+996649
+996689
+996703
+996739
+996763
+996781
+996803
+996811
+996841
+996847
+996857
+996859
+996871
+996881
+996883
+996887
+996899
+996953
+996967
+996973
+996979
+997001
+997013
+997019
+997021
+997037
+997043
+997057
+997069
+997081
+997091
+997097
+997099
+997103
+997109
+997111
+997121
+997123
+997141
+997147
+997151
+997153
+997163
+997201
+997207
+997219
+997247
+997259
+997267
+997273
+997279
+997307
+997309
+997319
+997327
+997333
+997343
+997357
+997369
+997379
+997391
+997427
+997433
+997439
+997453
+997463
+997511
+997541
+997547
+997553
+997573
+997583
+997589
+997597
+997609
+997627
+997637
+997649
+997651
+997663
+997681
+997693
+997699
+997727
+997739
+997741
+997751
+997769
+997783
+997793
+997807
+997811
+997813
+997877
+997879
+997889
+997891
+997897
+997933
+997949
+997961
+997963
+997973
+997991
+998009
+998017
+998027
+998029
+998069
+998071
+998077
+998083
+998111
+998117
+998147
+998161
+998167
+998197
+998201
+998213
+998219
+998237
+998243
+998273
+998281
+998287
+998311
+998329
+998353
+998377
+998381
+998399
+998411
+998419
+998423
+998429
+998443
+998471
+998497
+998513
+998527
+998537
+998539
+998551
+998561
+998617
+998623
+998629
+998633
+998651
+998653
+998681
+998687
+998689
+998717
+998737
+998743
+998749
+998759
+998779
+998813
+998819
+998831
+998839
+998843
+998857
+998861
+998897
+998909
+998917
+998927
+998941
+998947
+998951
+998957
+998969
+998983
+998989
+999007
+999023
+999029
+999043
+999049
+999067
+999083
+999091
+999101
+999133
+999149
+999169
+999181
+999199
+999217
+999221
+999233
+999239
+999269
+999287
+999307
+999329
+999331
+999359
+999371
+999377
+999389
+999431
+999433
+999437
+999451
+999491
+999499
+999521
+999529
+999541
+999553
+999563
+999599
+999611
+999613
+999623
+999631
+999653
+999667
+999671
+999683
+999721
+999727
+999749
+999763
+999769
+999773
+999809
+999853
+999863
+999883
+999907
+999917
+999931
+999953
+999959
+999961
+999979
+999983
+1000003
+1000033
+1000037
+1000039
+1000081
+1000099
+1000117
+1000121
+1000133
+1000151
+1000159
+1000171
+1000183
+1000187
+1000193
+1000199
+1000211
+1000213
+1000231
+1000249
+1000253
+1000273
+1000289
+1000291
+1000303
+1000313
+1000333
+1000357
+1000367
+1000381
+1000393
+1000397
+1000403
+1000409
+1000423
+1000427
+1000429
+1000453
+1000457
+1000507
+1000537
+1000541
+1000547
+1000577
+1000579
+1000589
+1000609
+1000619
+1000621
+1000639
+1000651
+1000667
+1000669
+1000679
+1000691
+1000697
+1000721
+1000723
+1000763
+1000777
+1000793
+1000829
+1000847
+1000849
+1000859
+1000861
+1000889
+1000907
+1000919
+1000921
+1000931
+1000969
+1000973
+1000981
+1000999
+1001003
+1001017
+1001023
+1001027
+1001041
+1001069
+1001081
+1001087
+1001089
+1001093
+1001107
+1001123
+1001153
+1001159
+1001173
+1001177
+1001191
+1001197
+1001219
+1001237
+1001267
+1001279
+1001291
+1001303
+1001311
+1001321
+1001323
+1001327
+1001347
+1001353
+1001369
+1001381
+1001387
+1001389
+1001401
+1001411
+1001431
+1001447
+1001459
+1001467
+1001491
+1001501
+1001527
+1001531
+1001549
+1001551
+1001563
+1001569
+1001587
+1001593
+1001621
+1001629
+1001639
+1001659
+1001669
+1001683
+1001687
+1001713
+1001723
+1001743
+1001783
+1001797
+1001801
+1001807
+1001809
+1001821
+1001831
+1001839
+1001911
+1001933
+1001941
+1001947
+1001953
+1001977
+1001981
+1001983
+1001989
+1002017
+1002049
+1002061
+1002073
+1002077
+1002083
+1002091
+1002101
+1002109
+1002121
+1002143
+1002149
+1002151
+1002173
+1002191
+1002227
+1002241
+1002247
+1002257
+1002259
+1002263
+1002289
+1002299
+1002341
+1002343
+1002347
+1002349
+1002359
+1002361
+1002377
+1002403
+1002427
+1002433
+1002451
+1002457
+1002467
+1002481
+1002487
+1002493
+1002503
+1002511
+1002517
+1002523
+1002527
+1002553
+1002569
+1002577
+1002583
+1002619
+1002623
+1002647
+1002653
+1002679
+1002709
+1002713
+1002719
+1002721
+1002739
+1002751
+1002767
+1002769
+1002773
+1002787
+1002797
+1002809
+1002817
+1002821
+1002851
+1002853
+1002857
+1002863
+1002871
+1002887
+1002893
+1002899
+1002913
+1002917
+1002929
+1002931
+1002973
+1002979
+1003001
+1003003
+1003019
+1003039
+1003049
+1003087
+1003091
+1003097
+1003103
+1003109
+1003111
+1003133
+1003141
+1003193
+1003199
+1003201
+1003241
+1003259
+1003273
+1003279
+1003291
+1003307
+1003337
+1003349
+1003351
+1003361
+1003363
+1003367
+1003369
+1003381
+1003397
+1003411
+1003417
+1003433
+1003463
+1003469
+1003507
+1003517
+1003543
+1003549
+1003589
+1003601
+1003609
+1003619
+1003621
+1003627
+1003631
+1003679
+1003693
+1003711
+1003729
+1003733
+1003741
+1003747
+1003753
+1003757
+1003763
+1003771
+1003787
+1003817
+1003819
+1003841
+1003879
+1003889
+1003897
+1003907
+1003909
+1003913
+1003931
+1003943
+1003957
+1003963
+1004027
+1004033
+1004053
+1004057
+1004063
+1004077
+1004089
+1004117
+1004119
+1004137
+1004141
+1004161
+1004167
+1004209
+1004221
+1004233
+1004273
+1004279
+1004287
+1004293
+1004303
+1004317
+1004323
+1004363
+1004371
+1004401
+1004429
+1004441
+1004449
+1004453
+1004461
+1004477
+1004483
+1004501
+1004527
+1004537
+1004551
+1004561
+1004567
+1004599
+1004651
+1004657
+1004659
+1004669
+1004671
+1004677
+1004687
+1004723
+1004737
+1004743
+1004747
+1004749
+1004761
+1004779
+1004797
+1004873
+1004903
+1004911
+1004917
+1004963
+1004977
+1004981
+1004987
+1005007
+1005013
+1005019
+1005029
+1005041
+1005049
+1005071
+1005073
+1005079
+1005101
+1005107
+1005131
+1005133
+1005143
+1005161
+1005187
+1005203
+1005209
+1005217
+1005223
+1005229
+1005239
+1005241
+1005269
+1005287
+1005293
+1005313
+1005317
+1005331
+1005349
+1005359
+1005371
+1005373
+1005391
+1005409
+1005413
+1005427
+1005437
+1005439
+1005457
+1005467
+1005481
+1005493
+1005503
+1005527
+1005541
+1005551
+1005553
+1005581
+1005593
+1005617
+1005619
+1005637
+1005643
+1005647
+1005661
+1005677
+1005679
+1005701
+1005709
+1005751
+1005761
+1005821
+1005827
+1005833
+1005883
+1005911
+1005913
+1005931
+1005937
+1005959
+1005971
+1005989
+1006003
+1006007
+1006021
+1006037
+1006063
+1006087
+1006091
+1006123
+1006133
+1006147
+1006151
+1006153
+1006163
+1006169
+1006171
+1006177
+1006189
+1006193
+1006217
+1006219
+1006231
+1006237
+1006241
+1006249
+1006253
+1006267
+1006279
+1006301
+1006303
+1006307
+1006309
+1006331
+1006333
+1006337
+1006339
+1006351
+1006361
+1006367
+1006391
+1006393
+1006433
+1006441
+1006463
+1006469
+1006471
+1006493
+1006507
+1006513
+1006531
+1006543
+1006547
+1006559
+1006583
+1006589
+1006609
+1006613
+1006633
+1006637
+1006651
+1006711
+1006721
+1006739
+1006751
+1006769
+1006781
+1006783
+1006799
+1006847
+1006853
+1006861
+1006877
+1006879
+1006883
+1006891
+1006897
+1006933
+1006937
+1006949
+1006969
+1006979
+1006987
+1006991
+1007021
+1007023
+1007047
+1007059
+1007081
+1007089
+1007099
+1007117
+1007119
+1007129
+1007137
+1007161
+1007173
+1007179
+1007203
+1007231
+1007243
+1007249
+1007297
+1007299
+1007309
+1007317
+1007339
+1007353
+1007359
+1007381
+1007387
+1007401
+1007417
+1007429
+1007441
+1007459
+1007467
+1007483
+1007497
+1007519
+1007527
+1007549
+1007557
+1007597
+1007599
+1007609
+1007647
+1007651
+1007681
+1007683
+1007693
+1007701
+1007711
+1007719
+1007723
+1007729
+1007731
+1007749
+1007753
+1007759
+1007767
+1007771
+1007789
+1007801
+1007807
+1007813
+1007819
+1007827
+1007857
+1007861
+1007873
+1007887
+1007891
+1007921
+1007933
+1007939
+1007957
+1007959
+1007971
+1007977
+1008001
+1008013
+1008017
+1008031
+1008037
+1008041
+1008043
+1008101
+1008131
+1008157
+1008181
+1008187
+1008193
+1008199
+1008209
+1008223
+1008229
+1008233
+1008239
+1008247
+1008257
+1008263
+1008317
+1008323
+1008331
+1008347
+1008353
+1008373
+1008379
+1008401
+1008407
+1008409
+1008419
+1008421
+1008433
+1008437
+1008451
+1008467
+1008493
+1008499
+1008503
+1008517
+1008541
+1008547
+1008563
+1008571
+1008587
+1008589
+1008607
+1008611
+1008613
+1008617
+1008659
+1008701
+1008719
+1008743
+1008773
+1008779
+1008781
+1008793
+1008809
+1008817
+1008829
+1008851
+1008853
+1008857
+1008859
+1008863
+1008871
+1008901
+1008911
+1008913
+1008923
+1008937
+1008947
+1008979
+1008983
+1008989
+1008991
+1009007
+1009037
+1009049
+1009061
+1009097
+1009121
+1009139
+1009153
+1009157
+1009159
+1009163
+1009189
+1009193
+1009199
+1009201
+1009207
+1009237
+1009243
+1009247
+1009259
+1009289
+1009291
+1009301
+1009303
+1009319
+1009321
+1009343
+1009357
+1009361
+1009369
+1009373
+1009387
+1009399
+1009417
+1009433
+1009439
+1009457
+1009483
+1009487
+1009499
+1009501
+1009507
+1009531
+1009537
+1009559
+1009573
+1009601
+1009609
+1009621
+1009627
+1009637
+1009643
+1009649
+1009651
+1009669
+1009727
+1009741
+1009747
+1009781
+1009787
+1009807
+1009819
+1009837
+1009843
+1009859
+1009873
+1009901
+1009909
+1009927
+1009937
+1009951
+1009963
+1009991
+1009993
+1009997
+1010003
+1010033
+1010069
+1010081
+1010083
+1010129
+1010131
+1010143
+1010167
+1010179
+1010201
+1010203
+1010237
+1010263
+1010291
+1010297
+1010329
+1010353
+1010357
+1010381
+1010407
+1010411
+1010419
+1010423
+1010431
+1010461
+1010467
+1010473
+1010491
+1010501
+1010509
+1010519
+1010549
+1010567
+1010579
+1010617
+1010623
+1010627
+1010671
+1010683
+1010687
+1010717
+1010719
+1010747
+1010749
+1010753
+1010759
+1010767
+1010771
+1010783
+1010791
+1010797
+1010809
+1010833
+1010843
+1010861
+1010881
+1010897
+1010899
+1010903
+1010917
+1010929
+1010957
+1010981
+1010983
+1010993
+1011001
+1011013
+1011029
+1011037
+1011067
+1011071
+1011077
+1011079
+1011091
+1011107
+1011137
+1011139
+1011163
+1011167
+1011191
+1011217
+1011221
+1011229
+1011233
+1011239
+1011271
+1011277
+1011281
+1011289
+1011331
+1011343
+1011349
+1011359
+1011371
+1011377
+1011391
+1011397
+1011407
+1011431
+1011443
+1011509
+1011539
+1011553
+1011559
+1011583
+1011587
+1011589
+1011599
+1011601
+1011631
+1011641
+1011649
+1011667
+1011671
+1011677
+1011697
+1011719
+1011733
+1011737
+1011749
+1011763
+1011779
+1011797
+1011799
+1011817
+1011827
+1011889
+1011893
+1011917
+1011937
+1011943
+1011947
+1011961
+1011973
+1011979
+1012007
+1012009
+1012031
+1012043
+1012049
+1012079
+1012087
+1012093
+1012097
+1012103
+1012133
+1012147
+1012159
+1012171
+1012183
+1012189
+1012201
+1012213
+1012217
+1012229
+1012241
+1012259
+1012261
+1012267
+1012279
+1012289
+1012307
+1012321
+1012369
+1012373
+1012379
+1012397
+1012399
+1012411
+1012421
+1012423
+1012433
+1012439
+1012447
+1012457
+1012463
+1012481
+1012489
+1012507
+1012513
+1012519
+1012523
+1012547
+1012549
+1012559
+1012573
+1012591
+1012597
+1012601
+1012619
+1012631
+1012633
+1012637
+1012657
+1012663
+1012679
+1012691
+1012699
+1012703
+1012717
+1012721
+1012733
+1012751
+1012763
+1012769
+1012771
+1012789
+1012811
+1012829
+1012831
+1012861
+1012903
+1012919
+1012931
+1012967
+1012981
+1012993
+1012997
+1013003
+1013009
+1013029
+1013041
+1013053
+1013063
+1013143
+1013153
+1013197
+1013203
+1013227
+1013237
+1013239
+1013249
+1013263
+1013267
+1013279
+1013291
+1013321
+1013329
+1013377
+1013399
+1013401
+1013429
+1013431
+1013471
+1013477
+1013501
+1013503
+1013527
+1013531
+1013533
+1013563
+1013569
+1013581
+1013603
+1013609
+1013627
+1013629
+1013641
+1013671
+1013681
+1013687
+1013699
+1013711
+1013713
+1013717
+1013729
+1013741
+1013767
+1013773
+1013791
+1013813
+1013819
+1013827
+1013833
+1013839
+1013843
+1013851
+1013879
+1013891
+1013893
+1013899
+1013921
+1013923
+1013933
+1013993
+1014007
+1014029
+1014037
+1014061
+1014089
+1014113
+1014121
+1014127
+1014131
+1014137
+1014149
+1014157
+1014161
+1014173
+1014193
+1014197
+1014199
+1014229
+1014257
+1014259
+1014263
+1014287
+1014301
+1014317
+1014319
+1014331
+1014337
+1014341
+1014359
+1014361
+1014371
+1014389
+1014397
+1014451
+1014457
+1014469
+1014487
+1014493
+1014521
+1014539
+1014547
+1014557
+1014571
+1014593
+1014617
+1014631
+1014641
+1014649
+1014677
+1014697
+1014719
+1014721
+1014731
+1014743
+1014749
+1014763
+1014779
+1014787
+1014817
+1014821
+1014833
+1014863
+1014869
+1014877
+1014887
+1014889
+1014907
+1014941
+1014953
+1014973
+1014989
+1015009
+1015039
+1015043
+1015051
+1015057
+1015061
+1015067
+1015073
+1015081
+1015093
+1015097
+1015123
+1015127
+1015139
+1015159
+1015163
+1015171
+1015199
+1015207
+1015277
+1015309
+1015349
+1015361
+1015363
+1015367
+1015369
+1015403
+1015409
+1015423
+1015433
+1015451
+1015453
+1015459
+1015463
+1015471
+1015481
+1015499
+1015501
+1015507
+1015517
+1015523
+1015541
+1015549
+1015559
+1015561
+1015571
+1015601
+1015603
+1015627
+1015661
+1015691
+1015697
+1015709
+1015723
+1015727
+1015739
+1015747
+1015753
+1015769
+1015813
+1015823
+1015829
+1015843
+1015853
+1015871
+1015877
+1015891
+1015897
+1015907
+1015913
+1015919
+1015967
+1015981
+1015991
+1016009
+1016011
+1016023
+1016027
+1016033
+1016051
+1016053
+1016069
+1016083
+1016089
+1016111
+1016123
+1016137
+1016143
+1016153
+1016159
+1016173
+1016201
+1016203
+1016221
+1016227
+1016231
+1016237
+1016263
+1016303
+1016339
+1016341
+1016357
+1016359
+1016371
+1016399
+1016401
+1016419
+1016423
+1016441
+1016453
+1016489
+1016497
+1016527
+1016567
+1016569
+1016573
+1016581
+1016597
+1016599
+1016611
+1016621
+1016641
+1016663
+1016681
+1016689
+1016731
+1016737
+1016749
+1016773
+1016777
+1016783
+1016789
+1016839
+1016843
+1016849
+1016879
+1016881
+1016891
+1016909
+1016921
+1016927
+1016929
+1016941
+1016947
+1016959
+1016971
+1017007
+1017011
+1017031
+1017041
+1017043
+1017061
+1017077
+1017097
+1017119
+1017131
+1017139
+1017157
+1017173
+1017179
+1017193
+1017199
+1017209
+1017227
+1017277
+1017293
+1017299
+1017301
+1017307
+1017311
+1017319
+1017323
+1017329
+1017347
+1017353
+1017361
+1017371
+1017377
+1017383
+1017391
+1017437
+1017439
+1017449
+1017473
+1017479
+1017481
+1017539
+1017551
+1017553
+1017559
+1017607
+1017613
+1017617
+1017623
+1017647
+1017649
+1017673
+1017683
+1017703
+1017713
+1017719
+1017721
+1017749
+1017781
+1017787
+1017799
+1017817
+1017827
+1017847
+1017851
+1017857
+1017859
+1017881
+1017889
+1017923
+1017953
+1017959
+1017997
+1018007
+1018019
+1018021
+1018057
+1018091
+1018097
+1018109
+1018123
+1018177
+1018201
+1018207
+1018217
+1018223
+1018247
+1018253
+1018271
+1018291
+1018301
+1018309
+1018313
+1018337
+1018357
+1018411
+1018421
+1018429
+1018439
+1018447
+1018471
+1018477
+1018489
+1018513
+1018543
+1018559
+1018583
+1018613
+1018621
+1018643
+1018649
+1018651
+1018669
+1018673
+1018679
+1018697
+1018709
+1018711
+1018729
+1018733
+1018763
+1018769
+1018777
+1018789
+1018807
+1018811
+1018813
+1018817
+1018859
+1018873
+1018879
+1018889
+1018903
+1018907
+1018931
+1018937
+1018949
+1018957
+1018967
+1018981
+1018987
+1018993
+1018999
+1019023
+1019033
+1019059
+1019069
+1019071
+1019077
+1019093
+1019119
+1019129
+1019173
+1019177
+1019197
+1019209
+1019237
+1019251
+1019257
+1019261
+1019267
+1019273
+1019281
+1019297
+1019329
+1019339
+1019351
+1019353
+1019357
+1019377
+1019399
+1019411
+1019413
+1019423
+1019443
+1019449
+1019453
+1019467
+1019471
+1019479
+1019503
+1019509
+1019531
+1019533
+1019537
+1019549
+1019563
+1019617
+1019639
+1019647
+1019657
+1019663
+1019687
+1019693
+1019699
+1019701
+1019713
+1019717
+1019723
+1019729
+1019731
+1019741
+1019747
+1019771
+1019783
+1019801
+1019819
+1019827
+1019839
+1019849
+1019857
+1019861
+1019873
+1019899
+1019903
+1019927
+1019971
+1020001
+1020007
+1020011
+1020013
+1020023
+1020037
+1020043
+1020049
+1020059
+1020077
+1020079
+1020101
+1020109
+1020113
+1020137
+1020143
+1020157
+1020163
+1020223
+1020233
+1020247
+1020259
+1020269
+1020293
+1020301
+1020329
+1020337
+1020353
+1020361
+1020379
+1020389
+1020401
+1020407
+1020413
+1020419
+1020431
+1020451
+1020457
+1020491
+1020517
+1020529
+1020541
+1020557
+1020583
+1020589
+1020599
+1020619
+1020631
+1020667
+1020683
+1020689
+1020707
+1020709
+1020743
+1020751
+1020757
+1020779
+1020797
+1020821
+1020823
+1020827
+1020839
+1020841
+1020847
+1020853
+1020881
+1020893
+1020907
+1020913
+1020931
+1020959
+1020961
+1020967
+1020973
+1020977
+1020979
+1020989
+1020991
+1020997
+1021001
+1021019
+1021043
+1021067
+1021073
+1021081
+1021087
+1021091
+1021093
+1021123
+1021127
+1021129
+1021157
+1021159
+1021183
+1021199
+1021217
+1021243
+1021253
+1021259
+1021261
+1021271
+1021283
+1021289
+1021291
+1021297
+1021301
+1021303
+1021327
+1021331
+1021333
+1021367
+1021369
+1021373
+1021381
+1021387
+1021403
+1021417
+1021429
+1021441
+1021457
+1021463
+1021483
+1021487
+1021541
+1021561
+1021571
+1021577
+1021621
+1021627
+1021651
+1021661
+1021663
+1021673
+1021697
+1021711
+1021747
+1021753
+1021759
+1021777
+1021793
+1021799
+1021807
+1021831
+1021837
+1021849
+1021861
+1021879
+1021897
+1021907
+1021919
+1021961
+1021963
+1021973
+1022011
+1022017
+1022033
+1022053
+1022059
+1022071
+1022083
+1022113
+1022123
+1022129
+1022137
+1022141
+1022167
+1022179
+1022183
+1022191
+1022201
+1022209
+1022237
+1022243
+1022249
+1022251
+1022291
+1022303
+1022341
+1022377
+1022381
+1022383
+1022387
+1022389
+1022429
+1022443
+1022449
+1022467
+1022491
+1022501
+1022503
+1022507
+1022509
+1022513
+1022519
+1022531
+1022573
+1022591
+1022611
+1022629
+1022633
+1022639
+1022653
+1022677
+1022683
+1022689
+1022701
+1022719
+1022729
+1022761
+1022773
+1022797
+1022821
+1022837
+1022843
+1022849
+1022869
+1022881
+1022891
+1022899
+1022911
+1022929
+1022933
+1022963
+1022977
+1022981
+1023019
+1023037
+1023041
+1023047
+1023067
+1023079
+1023083
+1023101
+1023107
+1023133
+1023163
+1023167
+1023173
+1023199
+1023203
+1023221
+1023227
+1023229
+1023257
+1023259
+1023263
+1023277
+1023289
+1023299
+1023301
+1023311
+1023313
+1023317
+1023329
+1023353
+1023361
+1023367
+1023389
+1023391
+1023409
+1023413
+1023419
+1023461
+1023467
+1023487
+1023499
+1023521
+1023541
+1023551
+1023557
+1023571
+1023577
+1023601
+1023643
+1023653
+1023697
+1023719
+1023721
+1023731
+1023733
+1023751
+1023769
+1023821
+1023833
+1023839
+1023851
+1023857
+1023871
+1023941
+1023943
+1023947
+1023949
+1023973
+1023977
+1023991
+1024021
+1024031
+1024061
+1024073
+1024087
+1024091
+1024099
+1024103
+1024151
+1024159
+1024171
+1024183
+1024189
+1024207
+1024249
+1024277
+1024307
+1024313
+1024319
+1024321
+1024327
+1024337
+1024339
+1024357
+1024379
+1024391
+1024399
+1024411
+1024421
+1024427
+1024433
+1024477
+1024481
+1024511
+1024523
+1024547
+1024559
+1024577
+1024579
+1024589
+1024591
+1024609
+1024633
+1024663
+1024669
+1024693
+1024697
+1024703
+1024711
+1024721
+1024729
+1024757
+1024783
+1024799
+1024823
+1024843
+1024853
+1024871
+1024883
+1024901
+1024909
+1024921
+1024931
+1024939
+1024943
+1024951
+1024957
+1024963
+1024987
+1024997
+1025009
+1025021
+1025029
+1025039
+1025047
+1025081
+1025093
+1025099
+1025111
+1025113
+1025119
+1025137
+1025147
+1025149
+1025153
+1025161
+1025197
+1025203
+1025209
+1025231
+1025239
+1025257
+1025261
+1025267
+1025273
+1025279
+1025281
+1025303
+1025327
+1025333
+1025347
+1025351
+1025383
+1025393
+1025407
+1025413
+1025417
+1025419
+1025443
+1025459
+1025477
+1025483
+1025503
+1025509
+1025513
+1025537
+1025543
+1025551
+1025561
+1025579
+1025611
+1025621
+1025623
+1025641
+1025653
+1025659
+1025669
+1025693
+1025707
+1025741
+1025747
+1025749
+1025767
+1025789
+1025803
+1025807
+1025819
+1025839
+1025873
+1025887
+1025891
+1025897
+1025909
+1025911
+1025917
+1025929
+1025939
+1025957
+1026029
+1026031
+1026037
+1026041
+1026043
+1026061
+1026073
+1026101
+1026119
+1026127
+1026139
+1026143
+1026167
+1026197
+1026199
+1026217
+1026227
+1026229
+1026251
+1026253
+1026257
+1026293
+1026299
+1026313
+1026331
+1026359
+1026371
+1026383
+1026391
+1026401
+1026407
+1026413
+1026427
+1026439
+1026449
+1026457
+1026479
+1026481
+1026521
+1026547
+1026563
+1026577
+1026581
+1026583
+1026587
+1026593
+1026661
+1026667
+1026673
+1026677
+1026679
+1026709
+1026733
+1026757
+1026761
+1026791
+1026799
+1026811
+1026829
+1026833
+1026847
+1026853
+1026859
+1026887
+1026899
+1026911
+1026913
+1026917
+1026941
+1026943
+1026947
+1026979
+1026989
+1027001
+1027003
+1027027
+1027031
+1027051
+1027067
+1027097
+1027127
+1027129
+1027139
+1027153
+1027163
+1027181
+1027189
+1027199
+1027207
+1027211
+1027223
+1027241
+1027261
+1027277
+1027289
+1027319
+1027321
+1027331
+1027357
+1027391
+1027409
+1027417
+1027421
+1027427
+1027459
+1027471
+1027483
+1027487
+1027489
+1027493
+1027519
+1027547
+1027549
+1027567
+1027591
+1027597
+1027613
+1027643
+1027679
+1027687
+1027693
+1027703
+1027717
+1027727
+1027739
+1027751
+1027753
+1027757
+1027759
+1027777
+1027783
+1027787
+1027799
+1027841
+1027853
+1027883
+1027891
+1027931
+1027969
+1027987
+1028003
+1028011
+1028017
+1028023
+1028029
+1028047
+1028051
+1028063
+1028081
+1028089
+1028099
+1028101
+1028107
+1028113
+1028117
+1028129
+1028141
+1028149
+1028189
+1028191
+1028201
+1028207
+1028213
+1028221
+1028231
+1028243
+1028263
+1028273
+1028303
+1028309
+1028317
+1028327
+1028329
+1028333
+1028389
+1028393
+1028411
+1028437
+1028471
+1028473
+1028479
+1028509
+1028557
+1028561
+1028569
+1028579
+1028581
+1028597
+1028617
+1028647
+1028663
+1028669
+1028681
+1028683
+1028737
+1028747
+1028749
+1028761
+1028773
+1028777
+1028803
+1028809
+1028837
+1028843
+1028873
+1028893
+1028903
+1028939
+1028941
+1028953
+1028957
+1028969
+1028981
+1028999
+1029001
+1029013
+1029023
+1029037
+1029103
+1029109
+1029113
+1029139
+1029151
+1029157
+1029167
+1029179
+1029191
+1029199
+1029209
+1029247
+1029251
+1029263
+1029277
+1029289
+1029307
+1029323
+1029331
+1029337
+1029341
+1029349
+1029359
+1029361
+1029383
+1029403
+1029407
+1029409
+1029433
+1029467
+1029473
+1029481
+1029487
+1029499
+1029517
+1029521
+1029527
+1029533
+1029547
+1029563
+1029569
+1029577
+1029583
+1029593
+1029601
+1029617
+1029643
+1029647
+1029653
+1029689
+1029697
+1029731
+1029751
+1029757
+1029767
+1029803
+1029823
+1029827
+1029839
+1029841
+1029859
+1029881
+1029883
+1029907
+1029929
+1029937
+1029943
+1029953
+1029967
+1029983
+1029989
+1030019
+1030021
+1030027
+1030031
+1030033
+1030039
+1030049
+1030061
+1030067
+1030069
+1030091
+1030111
+1030121
+1030153
+1030157
+1030181
+1030201
+1030213
+1030219
+1030241
+1030247
+1030291
+1030297
+1030307
+1030349
+1030357
+1030361
+1030369
+1030411
+1030417
+1030429
+1030439
+1030441
+1030451
+1030493
+1030511
+1030529
+1030537
+1030543
+1030571
+1030583
+1030619
+1030637
+1030639
+1030643
+1030681
+1030703
+1030723
+1030739
+1030741
+1030751
+1030759
+1030763
+1030787
+1030793
+1030801
+1030811
+1030817
+1030823
+1030831
+1030847
+1030867
+1030873
+1030889
+1030919
+1030933
+1030949
+1030951
+1030957
+1030987
+1030993
+1031003
+1031047
+1031053
+1031057
+1031081
+1031117
+1031119
+1031137
+1031141
+1031161
+1031189
+1031231
+1031267
+1031279
+1031281
+1031291
+1031299
+1031309
+1031323
+1031347
+1031357
+1031399
+1031411
+1031413
+1031423
+1031431
+1031447
+1031461
+1031477
+1031479
+1031483
+1031489
+1031507
+1031521
+1031531
+1031533
+1031549
+1031561
+1031593
+1031609
+1031623
+1031629
+1031633
+1031669
+1031677
+1031707
+1031717
+1031729
+1031731
+1031741
+1031753
+1031759
+1031761
+1031809
+1031813
+1031831
+1031837
+1031869
+1031911
+1031923
+1031981
+1031999
+1032007
+1032047
+1032049
+1032067
+1032071
+1032107
+1032131
+1032151
+1032191
+1032193
+1032211
+1032221
+1032233
+1032259
+1032287
+1032299
+1032307
+1032319
+1032329
+1032341
+1032347
+1032349
+1032373
+1032377
+1032391
+1032397
+1032407
+1032419
+1032433
+1032457
+1032463
+1032467
+1032491
+1032497
+1032509
+1032511
+1032527
+1032541
+1032571
+1032583
+1032601
+1032607
+1032613
+1032617
+1032643
+1032649
+1032679
+1032683
+1032697
+1032701
+1032709
+1032721
+1032727
+1032739
+1032751
+1032763
+1032793
+1032799
+1032803
+1032833
+1032839
+1032841
+1032847
+1032851
+1032853
+1032881
+1032887
+1032901
+1032943
+1032949
+1032959
+1032961
+1033001
+1033007
+1033027
+1033033
+1033037
+1033057
+1033061
+1033063
+1033069
+1033079
+1033099
+1033127
+1033139
+1033171
+1033181
+1033189
+1033223
+1033271
+1033273
+1033289
+1033297
+1033303
+1033309
+1033313
+1033337
+1033339
+1033343
+1033349
+1033363
+1033369
+1033381
+1033387
+1033393
+1033421
+1033423
+1033427
+1033441
+1033451
+1033457
+1033463
+1033469
+1033489
+1033493
+1033499
+1033507
+1033517
+1033537
+1033541
+1033559
+1033567
+1033601
+1033603
+1033631
+1033661
+1033663
+1033667
+1033679
+1033687
+1033693
+1033741
+1033751
+1033759
+1033777
+1033783
+1033789
+1033793
+1033801
+1033807
+1033829
+1033841
+1033843
+1033867
+1033927
+1033951
+1033987
+1034003
+1034009
+1034027
+1034029
+1034069
+1034071
+1034101
+1034119
+1034123
+1034147
+1034167
+1034171
+1034177
+1034183
+1034197
+1034207
+1034219
+1034221
+1034233
+1034237
+1034239
+1034249
+1034251
+1034281
+1034309
+1034317
+1034323
+1034339
+1034353
+1034357
+1034359
+1034381
+1034387
+1034419
+1034443
+1034461
+1034477
+1034479
+1034489
+1034491
+1034503
+1034513
+1034549
+1034567
+1034581
+1034591
+1034597
+1034599
+1034617
+1034639
+1034651
+1034653
+1034659
+1034707
+1034729
+1034731
+1034767
+1034771
+1034783
+1034791
+1034809
+1034827
+1034833
+1034837
+1034849
+1034857
+1034861
+1034863
+1034867
+1034879
+1034903
+1034941
+1034951
+1034953
+1034959
+1034983
+1034989
+1034993
+1035007
+1035019
+1035043
+1035061
+1035077
+1035107
+1035131
+1035163
+1035187
+1035191
+1035197
+1035211
+1035241
+1035247
+1035257
+1035263
+1035277
+1035301
+1035313
+1035323
+1035341
+1035343
+1035361
+1035379
+1035383
+1035403
+1035409
+1035413
+1035427
+1035449
+1035451
+1035467
+1035469
+1035473
+1035479
+1035499
+1035527
+1035533
+1035547
+1035563
+1035571
+1035581
+1035599
+1035607
+1035613
+1035631
+1035637
+1035641
+1035649
+1035659
+1035707
+1035733
+1035743
+1035761
+1035763
+1035781
+1035791
+1035829
+1035869
+1035893
+1035917
+1035949
+1035953
+1035959
+1035973
+1035977
+1036001
+1036003
+1036027
+1036039
+1036067
+1036069
+1036073
+1036093
+1036109
+1036117
+1036121
+1036129
+1036153
+1036163
+1036183
+1036213
+1036223
+1036229
+1036247
+1036249
+1036253
+1036261
+1036267
+1036271
+1036291
+1036297
+1036307
+1036319
+1036327
+1036331
+1036339
+1036349
+1036351
+1036363
+1036367
+1036369
+1036391
+1036411
+1036459
+1036471
+1036493
+1036499
+1036513
+1036531
+1036537
+1036561
+1036579
+1036613
+1036619
+1036631
+1036649
+1036661
+1036667
+1036669
+1036681
+1036729
+1036747
+1036751
+1036757
+1036759
+1036769
+1036787
+1036793
+1036799
+1036829
+1036831
+1036853
+1036873
+1036877
+1036883
+1036913
+1036921
+1036943
+1036951
+1036957
+1036979
+1036991
+1036993
+1037041
+1037053
+1037059
+1037081
+1037087
+1037089
+1037123
+1037129
+1037137
+1037143
+1037213
+1037233
+1037249
+1037261
+1037273
+1037293
+1037297
+1037303
+1037317
+1037327
+1037329
+1037339
+1037347
+1037401
+1037411
+1037437
+1037441
+1037447
+1037471
+1037479
+1037489
+1037497
+1037503
+1037537
+1037557
+1037563
+1037567
+1037593
+1037611
+1037627
+1037653
+1037657
+1037677
+1037681
+1037683
+1037741
+1037747
+1037753
+1037759
+1037767
+1037791
+1037801
+1037819
+1037831
+1037857
+1037873
+1037879
+1037893
+1037903
+1037917
+1037929
+1037941
+1037957
+1037963
+1037983
+1038001
+1038017
+1038019
+1038029
+1038041
+1038043
+1038047
+1038073
+1038077
+1038119
+1038127
+1038143
+1038157
+1038187
+1038199
+1038203
+1038209
+1038211
+1038227
+1038251
+1038253
+1038259
+1038263
+1038269
+1038307
+1038311
+1038319
+1038329
+1038337
+1038383
+1038391
+1038409
+1038421
+1038449
+1038463
+1038487
+1038497
+1038503
+1038523
+1038529
+1038539
+1038563
+1038589
+1038599
+1038601
+1038617
+1038619
+1038623
+1038629
+1038637
+1038643
+1038671
+1038689
+1038691
+1038707
+1038721
+1038727
+1038731
+1038757
+1038797
+1038803
+1038811
+1038823
+1038827
+1038833
+1038881
+1038913
+1038937
+1038941
+1038953
+1039001
+1039007
+1039021
+1039033
+1039037
+1039039
+1039043
+1039067
+1039069
+1039081
+1039109
+1039111
+1039127
+1039139
+1039153
+1039169
+1039187
+1039229
+1039249
+1039279
+1039289
+1039307
+1039321
+1039327
+1039343
+1039349
+1039351
+1039387
+1039421
+1039427
+1039429
+1039463
+1039469
+1039477
+1039481
+1039513
+1039517
+1039537
+1039543
+1039553
+1039603
+1039607
+1039631
+1039651
+1039657
+1039667
+1039681
+1039733
+1039763
+1039769
+1039789
+1039799
+1039817
+1039823
+1039837
+1039891
+1039897
+1039901
+1039921
+1039931
+1039943
+1039949
+1039979
+1039999
+1040021
+1040029
+1040051
+1040057
+1040059
+1040069
+1040071
+1040089
+1040093
+1040101
+1040113
+1040119
+1040141
+1040153
+1040159
+1040161
+1040167
+1040183
+1040189
+1040191
+1040203
+1040219
+1040227
+1040311
+1040327
+1040339
+1040353
+1040371
+1040381
+1040387
+1040407
+1040411
+1040419
+1040447
+1040449
+1040483
+1040489
+1040503
+1040521
+1040531
+1040563
+1040579
+1040581
+1040597
+1040629
+1040651
+1040657
+1040659
+1040671
+1040717
+1040731
+1040747
+1040749
+1040771
+1040777
+1040779
+1040783
+1040797
+1040803
+1040807
+1040813
+1040821
+1040827
+1040833
+1040857
+1040861
+1040873
+1040881
+1040891
+1040899
+1040929
+1040939
+1040947
+1040951
+1040959
+1040981
+1040989
+1041041
+1041077
+1041083
+1041091
+1041109
+1041119
+1041121
+1041127
+1041137
+1041149
+1041151
+1041163
+1041167
+1041169
+1041203
+1041221
+1041223
+1041239
+1041241
+1041253
+1041269
+1041281
+1041283
+1041289
+1041307
+1041311
+1041317
+1041329
+1041343
+1041349
+1041373
+1041421
+1041427
+1041449
+1041451
+1041461
+1041497
+1041511
+1041517
+1041529
+1041553
+1041559
+1041563
+1041571
+1041577
+1041583
+1041617
+1041619
+1041643
+1041653
+1041671
+1041673
+1041701
+1041731
+1041737
+1041757
+1041779
+1041787
+1041793
+1041823
+1041829
+1041841
+1041853
+1041857
+1041863
+1041869
+1041889
+1041893
+1041907
+1041919
+1041949
+1041961
+1041983
+1041991
+1042001
+1042021
+1042039
+1042043
+1042081
+1042087
+1042091
+1042099
+1042103
+1042109
+1042121
+1042123
+1042133
+1042141
+1042183
+1042187
+1042193
+1042211
+1042241
+1042243
+1042259
+1042267
+1042271
+1042273
+1042309
+1042331
+1042333
+1042357
+1042369
+1042373
+1042381
+1042399
+1042427
+1042439
+1042451
+1042469
+1042487
+1042519
+1042523
+1042529
+1042571
+1042577
+1042583
+1042597
+1042607
+1042609
+1042619
+1042631
+1042633
+1042681
+1042687
+1042693
+1042703
+1042709
+1042733
+1042759
+1042781
+1042799
+1042819
+1042829
+1042837
+1042849
+1042861
+1042897
+1042901
+1042903
+1042931
+1042949
+1042961
+1042997
+1043011
+1043023
+1043047
+1043083
+1043089
+1043111
+1043113
+1043117
+1043131
+1043167
+1043173
+1043177
+1043183
+1043191
+1043201
+1043209
+1043213
+1043221
+1043279
+1043291
+1043293
+1043299
+1043311
+1043323
+1043351
+1043369
+1043377
+1043401
+1043453
+1043467
+1043479
+1043489
+1043501
+1043513
+1043521
+1043531
+1043543
+1043557
+1043587
+1043591
+1043593
+1043597
+1043599
+1043617
+1043639
+1043657
+1043663
+1043683
+1043701
+1043723
+1043743
+1043747
+1043753
+1043759
+1043761
+1043767
+1043773
+1043831
+1043837
+1043839
+1043843
+1043849
+1043857
+1043869
+1043873
+1043897
+1043899
+1043921
+1043923
+1043929
+1043951
+1043969
+1043981
+1044019
+1044023
+1044041
+1044053
+1044079
+1044091
+1044097
+1044133
+1044139
+1044149
+1044161
+1044167
+1044179
+1044181
+1044187
+1044193
+1044209
+1044217
+1044227
+1044247
+1044257
+1044271
+1044283
+1044287
+1044289
+1044299
+1044343
+1044347
+1044353
+1044367
+1044371
+1044383
+1044391
+1044397
+1044409
+1044437
+1044443
+1044451
+1044457
+1044479
+1044509
+1044517
+1044529
+1044559
+1044569
+1044583
+1044587
+1044613
+1044619
+1044629
+1044653
+1044689
+1044697
+1044727
+1044733
+1044737
+1044739
+1044749
+1044751
+1044761
+1044767
+1044779
+1044781
+1044809
+1044811
+1044833
+1044839
+1044847
+1044851
+1044859
+1044877
+1044889
+1044893
+1044931
+1044941
+1044971
+1044997
+1045003
+1045013
+1045021
+1045027
+1045043
+1045061
+1045063
+1045081
+1045111
+1045117
+1045123
+1045129
+1045151
+1045153
+1045157
+1045183
+1045193
+1045199
+1045223
+1045229
+1045237
+1045241
+1045273
+1045277
+1045307
+1045309
+1045321
+1045349
+1045367
+1045391
+1045393
+1045397
+1045409
+1045411
+1045423
+1045427
+1045469
+1045487
+1045493
+1045507
+1045523
+1045529
+1045543
+1045547
+1045549
+1045559
+1045571
+1045573
+1045607
+1045621
+1045633
+1045643
+1045651
+1045663
+1045679
+1045691
+1045727
+1045729
+1045739
+1045763
+1045799
+1045801
+1045819
+1045829
+1045841
+1045859
+1045903
+1045907
+1045963
+1045981
+1045987
+1045997
+1046029
+1046047
+1046051
+1046053
+1046069
+1046077
+1046081
+1046113
+1046119
+1046179
+1046183
+1046189
+1046191
+1046203
+1046207
+1046237
+1046239
+1046257
+1046263
+1046329
+1046347
+1046351
+1046369
+1046371
+1046389
+1046393
+1046399
+1046413
+1046447
+1046449
+1046459
+1046497
+1046519
+1046527
+1046557
+1046579
+1046587
+1046597
+1046599
+1046627
+1046641
+1046657
+1046659
+1046677
+1046681
+1046687
+1046701
+1046711
+1046779
+1046791
+1046797
+1046807
+1046827
+1046833
+1046849
+1046863
+1046867
+1046897
+1046917
+1046933
+1046951
+1046959
+1046977
+1046993
+1046999
+1047031
+1047041
+1047043
+1047061
+1047077
+1047089
+1047097
+1047107
+1047119
+1047127
+1047131
+1047133
+1047139
+1047157
+1047173
+1047197
+1047199
+1047229
+1047239
+1047247
+1047271
+1047281
+1047283
+1047289
+1047307
+1047311
+1047313
+1047317
+1047323
+1047341
+1047367
+1047373
+1047379
+1047391
+1047419
+1047467
+1047469
+1047479
+1047491
+1047499
+1047511
+1047533
+1047539
+1047551
+1047559
+1047587
+1047589
+1047647
+1047649
+1047653
+1047667
+1047671
+1047689
+1047691
+1047701
+1047703
+1047713
+1047721
+1047737
+1047751
+1047763
+1047773
+1047779
+1047821
+1047833
+1047841
+1047859
+1047881
+1047883
+1047887
+1047923
+1047929
+1047941
+1047961
+1047971
+1047979
+1047989
+1047997
+1048007
+1048009
+1048013
+1048027
+1048043
+1048049
+1048051
+1048063
+1048123
+1048127
+1048129
+1048139
+1048189
+1048193
+1048213
+1048217
+1048219
+1048261
+1048273
+1048291
+1048309
+1048343
+1048357
+1048361
+1048367
+1048387
+1048391
+1048423
+1048433
+1048447
+1048507
+1048517
+1048549
+1048559
+1048571
+1048573
+1048583
+1048589
+1048601
+1048609
+1048613
+1048627
+1048633
+1048661
+1048681
+1048703
+1048709
+1048717
+1048721
+1048759
+1048783
+1048793
+1048799
+1048807
+1048829
+1048837
+1048847
+1048867
+1048877
+1048889
+1048891
+1048897
+1048909
+1048919
+1048963
+1048991
+1049011
+1049023
+1049039
+1049051
+1049057
+1049063
+1049077
+1049089
+1049093
+1049101
+1049117
+1049129
+1049131
+1049137
+1049141
+1049143
+1049171
+1049173
+1049177
+1049183
+1049201
+1049219
+1049227
+1049239
+1049263
+1049281
+1049297
+1049333
+1049339
+1049387
+1049413
+1049429
+1049437
+1049459
+1049471
+1049473
+1049479
+1049483
+1049497
+1049509
+1049519
+1049527
+1049533
+1049537
+1049549
+1049569
+1049599
+1049603
+1049611
+1049623
+1049639
+1049663
+1049677
+1049681
+1049683
+1049687
+1049707
+1049717
+1049747
+1049773
+1049791
+1049809
+1049821
+1049827
+1049833
+1049837
+1049843
+1049849
+1049857
+1049861
+1049863
+1049891
+1049897
+1049899
+1049941
+1049953
+1049963
+1049977
+1049999
+1050011
+1050013
+1050031
+1050041
+1050053
+1050079
+1050083
+1050139
+1050151
+1050167
+1050169
+1050191
+1050197
+1050229
+1050233
+1050239
+1050241
+1050253
+1050281
+1050307
+1050317
+1050323
+1050331
+1050337
+1050349
+1050367
+1050391
+1050421
+1050431
+1050437
+1050449
+1050451
+1050457
+1050473
+1050503
+1050509
+1050523
+1050563
+1050593
+1050611
+1050631
+1050713
+1050727
+1050733
+1050737
+1050739
+1050743
+1050769
+1050773
+1050781
+1050811
+1050817
+1050851
+1050853
+1050887
+1050899
+1050901
+1050913
+1050949
+1050961
+1050977
+1050997
+1051003
+1051007
+1051009
+1051019
+1051027
+1051051
+1051069
+1051079
+1051081
+1051139
+1051147
+1051151
+1051153
+1051157
+1051177
+1051181
+1051247
+1051277
+1051283
+1051291
+1051301
+1051313
+1051319
+1051333
+1051373
+1051397
+1051409
+1051417
+1051423
+1051459
+1051469
+1051471
+1051481
+1051499
+1051507
+1051543
+1051549
+1051553
+1051559
+1051571
+1051591
+1051601
+1051607
+1051619
+1051621
+1051639
+1051643
+1051649
+1051663
+1051697
+1051709
+1051717
+1051747
+1051759
+1051763
+1051781
+1051789
+1051811
+1051819
+1051829
+1051847
+1051849
+1051879
+1051889
+1051903
+1051913
+1051927
+1051949
+1051957
+1051961
+1051979
+1051987
+1051991
+1052027
+1052039
+1052041
+1052063
+1052083
+1052099
+1052111
+1052119
+1052137
+1052141
+1052179
+1052197
+1052203
+1052221
+1052231
+1052237
+1052269
+1052279
+1052281
+1052287
+1052299
+1052309
+1052321
+1052327
+1052329
+1052333
+1052413
+1052417
+1052431
+1052437
+1052459
+1052473
+1052479
+1052489
+1052531
+1052533
+1052537
+1052551
+1052561
+1052563
+1052567
+1052573
+1052609
+1052629
+1052663
+1052693
+1052707
+1052719
+1052731
+1052743
+1052747
+1052767
+1052797
+1052801
+1052803
+1052813
+1052819
+1052851
+1052873
+1052881
+1052893
+1052897
+1052899
+1052939
+1052971
+1052981
+1052993
+1053007
+1053029
+1053061
+1053067
+1053071
+1053079
+1053083
+1053089
+1053097
+1053103
+1053179
+1053181
+1053191
+1053197
+1053233
+1053257
+1053259
+1053263
+1053271
+1053293
+1053301
+1053319
+1053347
+1053361
+1053383
+1053401
+1053407
+1053421
+1053449
+1053461
+1053467
+1053487
+1053491
+1053497
+1053509
+1053511
+1053529
+1053539
+1053551
+1053557
+1053571
+1053581
+1053583
+1053589
+1053593
+1053617
+1053691
+1053697
+1053707
+1053713
+1053727
+1053737
+1053739
+1053749
+1053757
+1053769
+1053809
+1053817
+1053821
+1053827
+1053863
+1053953
+1053959
+1053967
+1053971
+1053989
+1053991
+1054003
+1054007
+1054013
+1054033
+1054043
+1054049
+1054061
+1054073
+1054091
+1054133
+1054169
+1054171
+1054181
+1054189
+1054199
+1054201
+1054213
+1054219
+1054243
+1054247
+1054259
+1054267
+1054301
+1054303
+1054309
+1054321
+1054327
+1054331
+1054337
+1054363
+1054369
+1054373
+1054381
+1054393
+1054423
+1054429
+1054439
+1054441
+1054457
+1054477
+1054483
+1054517
+1054523
+1054531
+1054549
+1054577
+1054583
+1054597
+1054607
+1054609
+1054621
+1054639
+1054649
+1054667
+1054673
+1054679
+1054717
+1054721
+1054723
+1054733
+1054769
+1054813
+1054819
+1054831
+1054843
+1054853
+1054903
+1054909
+1054927
+1054931
+1054951
+1054957
+1054993
+1055017
+1055039
+1055057
+1055063
+1055077
+1055083
+1055113
+1055137
+1055141
+1055143
+1055167
+1055189
+1055191
+1055231
+1055233
+1055251
+1055261
+1055267
+1055269
+1055303
+1055321
+1055347
+1055359
+1055363
+1055371
+1055387
+1055399
+1055407
+1055413
+1055423
+1055429
+1055437
+1055471
+1055489
+1055501
+1055503
+1055531
+1055543
+1055567
+1055591
+1055597
+1055603
+1055609
+1055611
+1055671
+1055689
+1055713
+1055731
+1055737
+1055741
+1055771
+1055783
+1055801
+1055809
+1055827
+1055839
+1055851
+1055863
+1055867
+1055881
+1055893
+1055897
+1055911
+1055917
+1055933
+1055939
+1055947
+1055959
+1055969
+1055981
+1056007
+1056019
+1056047
+1056049
+1056053
+1056061
+1056071
+1056073
+1056089
+1056109
+1056113
+1056149
+1056161
+1056169
+1056173
+1056179
+1056203
+1056217
+1056241
+1056247
+1056269
+1056271
+1056281
+1056287
+1056311
+1056317
+1056323
+1056347
+1056353
+1056361
+1056371
+1056373
+1056379
+1056401
+1056443
+1056463
+1056469
+1056479
+1056481
+1056493
+1056509
+1056521
+1056541
+1056563
+1056569
+1056577
+1056589
+1056599
+1056613
+1056617
+1056623
+1056641
+1056659
+1056667
+1056707
+1056719
+1056721
+1056739
+1056773
+1056779
+1056793
+1056823
+1056829
+1056833
+1056863
+1056871
+1056893
+1056911
+1056917
+1056929
+1056949
+1056959
+1056971
+1057003
+1057013
+1057019
+1057033
+1057037
+1057051
+1057087
+1057093
+1057117
+1057129
+1057157
+1057163
+1057181
+1057183
+1057219
+1057223
+1057237
+1057249
+1057271
+1057279
+1057291
+1057307
+1057361
+1057367
+1057387
+1057391
+1057393
+1057411
+1057421
+1057477
+1057487
+1057489
+1057493
+1057531
+1057541
+1057561
+1057577
+1057579
+1057603
+1057607
+1057613
+1057631
+1057633
+1057643
+1057657
+1057663
+1057681
+1057699
+1057703
+1057739
+1057741
+1057753
+1057781
+1057807
+1057831
+1057853
+1057879
+1057883
+1057897
+1057907
+1057919
+1057951
+1057957
+1057963
+1057981
+1057993
+1058009
+1058011
+1058021
+1058027
+1058041
+1058059
+1058077
+1058093
+1058107
+1058117
+1058143
+1058147
+1058149
+1058153
+1058171
+1058179
+1058203
+1058221
+1058227
+1058249
+1058257
+1058263
+1058287
+1058303
+1058329
+1058339
+1058341
+1058353
+1058377
+1058381
+1058383
+1058389
+1058419
+1058423
+1058443
+1058461
+1058479
+1058489
+1058503
+1058507
+1058543
+1058549
+1058567
+1058591
+1058593
+1058597
+1058627
+1058639
+1058653
+1058657
+1058663
+1058671
+1058677
+1058683
+1058693
+1058711
+1058723
+1058731
+1058747
+1058749
+1058753
+1058767
+1058773
+1058779
+1058791
+1058803
+1058807
+1058809
+1058821
+1058839
+1058861
+1058891
+1058921
+1058951
+1058983
+1058999
+1059001
+1059007
+1059017
+1059029
+1059059
+1059061
+1059067
+1059073
+1059077
+1059103
+1059119
+1059131
+1059137
+1059161
+1059169
+1059181
+1059197
+1059209
+1059217
+1059221
+1059251
+1059257
+1059259
+1059263
+1059271
+1059293
+1059299
+1059313
+1059323
+1059343
+1059349
+1059413
+1059419
+1059433
+1059437
+1059439
+1059467
+1059479
+1059503
+1059511
+1059517
+1059547
+1059557
+1059571
+1059599
+1059613
+1059637
+1059647
+1059671
+1059683
+1059697
+1059701
+1059703
+1059713
+1059733
+1059743
+1059749
+1059757
+1059769
+1059787
+1059823
+1059833
+1059847
+1059857
+1059871
+1059889
+1059893
+1059923
+1059931
+1059937
+1059941
+1060009
+1060019
+1060021
+1060039
+1060043
+1060051
+1060061
+1060091
+1060097
+1060123
+1060133
+1060151
+1060177
+1060187
+1060201
+1060207
+1060223
+1060229
+1060237
+1060249
+1060253
+1060271
+1060303
+1060313
+1060321
+1060343
+1060349
+1060351
+1060357
+1060361
+1060373
+1060379
+1060391
+1060393
+1060403
+1060421
+1060427
+1060441
+1060453
+1060463
+1060469
+1060481
+1060487
+1060513
+1060519
+1060529
+1060567
+1060571
+1060573
+1060589
+1060597
+1060621
+1060673
+1060687
+1060721
+1060723
+1060739
+1060747
+1060769
+1060777
+1060781
+1060861
+1060867
+1060883
+1060937
+1060949
+1060963
+1060981
+1060991
+1060993
+1061033
+1061057
+1061069
+1061087
+1061101
+1061107
+1061117
+1061129
+1061141
+1061143
+1061149
+1061171
+1061189
+1061227
+1061251
+1061261
+1061273
+1061279
+1061287
+1061297
+1061311
+1061317
+1061323
+1061353
+1061363
+1061377
+1061393
+1061407
+1061413
+1061441
+1061453
+1061483
+1061509
+1061513
+1061527
+1061561
+1061569
+1061573
+1061591
+1061597
+1061609
+1061617
+1061623
+1061629
+1061647
+1061651
+1061677
+1061689
+1061699
+1061707
+1061717
+1061729
+1061737
+1061759
+1061771
+1061773
+1061779
+1061783
+1061807
+1061831
+1061849
+1061867
+1061869
+1061881
+1061897
+1061903
+1061909
+1061911
+1061917
+1061959
+1061969
+1061993
+1062001
+1062013
+1062031
+1062073
+1062107
+1062121
+1062169
+1062197
+1062203
+1062251
+1062253
+1062263
+1062293
+1062311
+1062343
+1062349
+1062361
+1062367
+1062379
+1062407
+1062409
+1062427
+1062443
+1062469
+1062497
+1062511
+1062521
+1062547
+1062557
+1062563
+1062599
+1062601
+1062643
+1062671
+1062673
+1062683
+1062697
+1062701
+1062707
+1062731
+1062779
+1062781
+1062793
+1062797
+1062827
+1062847
+1062869
+1062871
+1062877
+1062881
+1062907
+1062911
+1062913
+1062931
+1062947
+1062949
+1062977
+1062979
+1062989
+1063001
+1063009
+1063019
+1063033
+1063039
+1063043
+1063067
+1063079
+1063087
+1063109
+1063123
+1063151
+1063157
+1063159
+1063177
+1063189
+1063193
+1063201
+1063213
+1063219
+1063241
+1063243
+1063273
+1063303
+1063319
+1063351
+1063379
+1063397
+1063399
+1063409
+1063427
+1063441
+1063453
+1063457
+1063463
+1063471
+1063477
+1063483
+1063501
+1063523
+1063529
+1063541
+1063547
+1063553
+1063561
+1063597
+1063609
+1063613
+1063619
+1063627
+1063637
+1063649
+1063661
+1063693
+1063709
+1063721
+1063729
+1063739
+1063747
+1063757
+1063771
+1063781
+1063813
+1063823
+1063831
+1063837
+1063847
+1063849
+1063871
+1063873
+1063891
+1063897
+1063903
+1063913
+1063919
+1063921
+1063927
+1063961
+1063963
+1063967
+1063969
+1063973
+1063987
+1063999
+1064017
+1064029
+1064059
+1064069
+1064087
+1064117
+1064131
+1064153
+1064159
+1064177
+1064179
+1064191
+1064197
+1064201
+1064243
+1064257
+1064263
+1064269
+1064281
+1064311
+1064317
+1064321
+1064333
+1064339
+1064341
+1064359
+1064377
+1064383
+1064407
+1064411
+1064431
+1064467
+1064471
+1064473
+1064477
+1064507
+1064519
+1064521
+1064533
+1064549
+1064587
+1064593
+1064629
+1064653
+1064669
+1064671
+1064681
+1064689
+1064699
+1064731
+1064737
+1064743
+1064753
+1064771
+1064783
+1064801
+1064813
+1064867
+1064873
+1064911
+1064927
+1064933
+1064939
+1064941
+1064951
+1064953
+1064957
+1064977
+1064989
+1065011
+1065013
+1065017
+1065019
+1065037
+1065041
+1065047
+1065059
+1065073
+1065089
+1065091
+1065109
+1065131
+1065133
+1065137
+1065173
+1065209
+1065217
+1065263
+1065269
+1065277
+1065283
+1065307
+1065313
+1065319
+1065331
+1065343
+1065347
+1065391
+1065409
+1065433
+1065469
+1065479
+1065503
+1065511
+1065523
+1065527
+1065529
+1065557
+1065569
+1065593
+1065601
+1065629
+1065643
+1065667
+1065677
+1065683
+1065689
+1065697
+1065709
+1065733
+1065763
+1065773
+1065787
+1065791
+1065809
+1065817
+1065821
+1065829
+1065839
+1065847
+1065851
+1065887
+1065893
+1065899
+1065901
+1065937
+1065941
+1065949
+1065973
+1065979
+1066001
+1066031
+1066049
+1066063
+1066067
+1066111
+1066133
+1066139
+1066141
+1066157
+1066159
+1066217
+1066231
+1066237
+1066253
+1066267
+1066279
+1066283
+1066297
+1066313
+1066319
+1066327
+1066333
+1066339
+1066343
+1066367
+1066379
+1066399
+1066409
+1066411
+1066423
+1066433
+1066447
+1066511
+1066517
+1066523
+1066531
+1066553
+1066561
+1066567
+1066577
+1066619
+1066621
+1066643
+1066651
+1066669
+1066687
+1066693
+1066721
+1066729
+1066753
+1066757
+1066777
+1066789
+1066811
+1066817
+1066847
+1066859
+1066867
+1066883
+1066889
+1066909
+1066913
+1066931
+1066973
+1066979
+1066981
+1066987
+1066999
+1067009
+1067023
+1067029
+1067047
+1067057
+1067063
+1067069
+1067083
+1067137
+1067147
+1067159
+1067167
+1067179
+1067203
+1067207
+1067221
+1067239
+1067263
+1067293
+1067327
+1067329
+1067347
+1067351
+1067359
+1067371
+1067383
+1067387
+1067411
+1067441
+1067459
+1067467
+1067471
+1067489
+1067491
+1067497
+1067509
+1067537
+1067551
+1067557
+1067567
+1067569
+1067593
+1067597
+1067611
+1067621
+1067639
+1067653
+1067669
+1067687
+1067701
+1067707
+1067711
+1067741
+1067747
+1067749
+1067761
+1067767
+1067777
+1067789
+1067797
+1067831
+1067837
+1067849
+1067851
+1067879
+1067893
+1067903
+1067909
+1067921
+1067939
+1067951
+1067987
+1067999
+1068019
+1068037
+1068061
+1068083
+1068101
+1068103
+1068107
+1068113
+1068131
+1068149
+1068191
+1068203
+1068217
+1068233
+1068241
+1068247
+1068251
+1068253
+1068257
+1068259
+1068271
+1068307
+1068311
+1068323
+1068329
+1068343
+1068367
+1068371
+1068377
+1068383
+1068407
+1068409
+1068437
+1068439
+1068461
+1068469
+1068481
+1068491
+1068497
+1068499
+1068517
+1068559
+1068577
+1068589
+1068611
+1068619
+1068629
+1068631
+1068677
+1068701
+1068703
+1068707
+1068709
+1068713
+1068719
+1068721
+1068751
+1068757
+1068761
+1068779
+1068803
+1068811
+1068817
+1068857
+1068871
+1068877
+1068887
+1068889
+1068901
+1068913
+1068917
+1068941
+1068989
+1069001
+1069007
+1069031
+1069039
+1069043
+1069051
+1069087
+1069099
+1069127
+1069129
+1069141
+1069171
+1069183
+1069193
+1069199
+1069207
+1069217
+1069219
+1069223
+1069267
+1069273
+1069291
+1069303
+1069307
+1069349
+1069363
+1069379
+1069421
+1069427
+1069429
+1069441
+1069451
+1069459
+1069463
+1069499
+1069501
+1069507
+1069517
+1069543
+1069547
+1069553
+1069561
+1069571
+1069573
+1069577
+1069583
+1069591
+1069597
+1069603
+1069609
+1069631
+1069639
+1069667
+1069687
+1069693
+1069697
+1069727
+1069741
+1069751
+1069777
+1069807
+1069811
+1069819
+1069823
+1069853
+1069867
+1069919
+1069921
+1069927
+1069931
+1069933
+1069949
+1069951
+1069973
+1069979
+1069987
+1070009
+1070011
+1070021
+1070033
+1070039
+1070063
+1070081
+1070087
+1070093
+1070131
+1070149
+1070171
+1070189
+1070197
+1070203
+1070207
+1070221
+1070231
+1070233
+1070243
+1070249
+1070257
+1070287
+1070291
+1070309
+1070317
+1070323
+1070339
+1070341
+1070347
+1070357
+1070369
+1070389
+1070411
+1070417
+1070423
+1070429
+1070431
+1070453
+1070471
+1070491
+1070497
+1070501
+1070513
+1070527
+1070533
+1070543
+1070557
+1070561
+1070567
+1070569
+1070579
+1070621
+1070659
+1070681
+1070683
+1070689
+1070753
+1070761
+1070777
+1070789
+1070803
+1070827
+1070843
+1070851
+1070869
+1070873
+1070899
+1070921
+1070933
+1070939
+1070947
+1070981
+1070987
+1071023
+1071047
+1071053
+1071061
+1071067
+1071121
+1071131
+1071139
+1071149
+1071151
+1071157
+1071181
+1071193
+1071197
+1071223
+1071227
+1071229
+1071233
+1071241
+1071253
+1071269
+1071283
+1071311
+1071313
+1071337
+1071341
+1071349
+1071359
+1071373
+1071377
+1071379
+1071401
+1071407
+1071419
+1071439
+1071443
+1071451
+1071457
+1071479
+1071487
+1071529
+1071533
+1071541
+1071563
+1071569
+1071571
+1071589
+1071601
+1071641
+1071643
+1071659
+1071661
+1071671
+1071683
+1071703
+1071739
+1071743
+1071761
+1071773
+1071787
+1071803
+1071817
+1071821
+1071841
+1071857
+1071871
+1071899
+1071907
+1071911
+1071919
+1071937
+1071943
+1071977
+1071979
+1071991
+1072009
+1072039
+1072103
+1072129
+1072133
+1072147
+1072157
+1072163
+1072187
+1072199
+1072213
+1072219
+1072229
+1072231
+1072301
+1072327
+1072339
+1072363
+1072367
+1072373
+1072381
+1072387
+1072397
+1072429
+1072433
+1072439
+1072447
+1072457
+1072459
+1072471
+1072517
+1072537
+1072543
+1072613
+1072627
+1072633
+1072637
+1072657
+1072711
+1072733
+1072763
+1072793
+1072801
+1072811
+1072823
+1072829
+1072831
+1072837
+1072843
+1072849
+1072859
+1072867
+1072901
+1072919
+1072931
+1072933
+1072937
+1072943
+1072957
+1072961
+1072969
+1072991
+1072997
+1072999
+1073053
+1073069
+1073077
+1073089
+1073099
+1073113
+1073117
+1073131
+1073141
+1073143
+1073147
+1073153
+1073183
+1073201
+1073209
+1073213
+1073221
+1073239
+1073243
+1073263
+1073279
+1073297
+1073311
+1073321
+1073351
+1073353
+1073381
+1073383
+1073393
+1073399
+1073411
+1073441
+1073447
+1073461
+1073491
+1073507
+1073509
+1073521
+1073537
+1073563
+1073573
+1073587
+1073593
+1073599
+1073603
+1073627
+1073647
+1073651
+1073687
+1073711
+1073713
+1073717
+1073729
+1073773
+1073789
+1073791
+1073803
+1073819
+1073837
+1073857
+1073869
+1073879
+1073881
+1073909
+1073911
+1073921
+1073951
+1073953
+1073983
+1074001
+1074023
+1074041
+1074061
+1074067
+1074071
+1074079
+1074083
+1074107
+1074109
+1074113
+1074121
+1074133
+1074167
+1074223
+1074251
+1074253
+1074259
+1074277
+1074287
+1074289
+1074299
+1074329
+1074343
+1074361
+1074371
+1074377
+1074379
+1074389
+1074427
+1074433
+1074461
+1074473
+1074481
+1074509
+1074511
+1074523
+1074533
+1074559
+1074581
+1074607
+1074617
+1074641
+1074643
+1074649
+1074673
+1074683
+1074691
+1074701
+1074707
+1074709
+1074713
+1074719
+1074751
+1074761
+1074763
+1074833
+1074839
+1074847
+1074851
+1074877
+1074883
+1074889
+1074901
+1074907
+1074917
+1074919
+1074923
+1074929
+1074949
+1074971
+1074973
+1074977
+1074989
+1074991
+1075007
+1075013
+1075021
+1075027
+1075069
+1075073
+1075079
+1075091
+1075093
+1075103
+1075133
+1075141
+1075147
+1075159
+1075163
+1075169
+1075171
+1075177
+1075187
+1075201
+1075231
+1075237
+1075241
+1075259
+1075279
+1075289
+1075303
+1075337
+1075339
+1075351
+1075357
+1075391
+1075397
+1075409
+1075429
+1075433
+1075441
+1075453
+1075463
+1075469
+1075489
+1075493
+1075499
+1075507
+1075519
+1075531
+1075537
+1075561
+1075577
+1075601
+1075619
+1075621
+1075643
+1075649
+1075651
+1075663
+1075667
+1075673
+1075681
+1075691
+1075693
+1075699
+1075703
+1075727
+1075729
+1075757
+1075759
+1075769
+1075771
+1075787
+1075807
+1075843
+1075853
+1075859
+1075897
+1075909
+1075957
+1075973
+1076003
+1076011
+1076017
+1076029
+1076039
+1076051
+1076057
+1076063
+1076069
+1076077
+1076107
+1076111
+1076113
+1076123
+1076129
+1076137
+1076143
+1076167
+1076171
+1076191
+1076203
+1076213
+1076237
+1076263
+1076279
+1076281
+1076303
+1076323
+1076329
+1076353
+1076359
+1076381
+1076399
+1076401
+1076417
+1076429
+1076443
+1076447
+1076461
+1076473
+1076477
+1076501
+1076503
+1076507
+1076513
+1076519
+1076557
+1076563
+1076587
+1076611
+1076617
+1076639
+1076651
+1076657
+1076671
+1076707
+1076717
+1076731
+1076753
+1076767
+1076771
+1076773
+1076813
+1076821
+1076827
+1076843
+1076861
+1076869
+1076879
+1076893
+1076903
+1076917
+1076921
+1076953
+1076981
+1077017
+1077023
+1077047
+1077059
+1077079
+1077101
+1077127
+1077143
+1077161
+1077179
+1077191
+1077203
+1077221
+1077227
+1077233
+1077289
+1077299
+1077301
+1077311
+1077337
+1077347
+1077353
+1077371
+1077397
+1077413
+1077421
+1077449
+1077457
+1077469
+1077499
+1077533
+1077539
+1077541
+1077563
+1077599
+1077607
+1077641
+1077673
+1077677
+1077691
+1077697
+1077707
+1077719
+1077721
+1077733
+1077743
+1077751
+1077761
+1077763
+1077793
+1077799
+1077821
+1077823
+1077827
+1077841
+1077859
+1077863
+1077893
+1077911
+1077913
+1077917
+1077943
+1077971
+1077977
+1077997
+1078001
+1078009
+1078019
+1078027
+1078031
+1078043
+1078081
+1078109
+1078111
+1078127
+1078151
+1078153
+1078159
+1078163
+1078169
+1078183
+1078199
+1078219
+1078241
+1078247
+1078331
+1078333
+1078367
+1078369
+1078373
+1078387
+1078393
+1078403
+1078409
+1078411
+1078417
+1078471
+1078489
+1078507
+1078537
+1078559
+1078589
+1078643
+1078657
+1078673
+1078681
+1078691
+1078699
+1078711
+1078717
+1078733
+1078739
+1078757
+1078787
+1078789
+1078807
+1078813
+1078817
+1078841
+1078849
+1078853
+1078873
+1078879
+1078919
+1078927
+1078937
+1078943
+1078951
+1078967
+1078981
+1078993
+1079009
+1079011
+1079021
+1079033
+1079053
+1079059
+1079069
+1079077
+1079081
+1079087
+1079093
+1079101
+1079107
+1079123
+1079147
+1079153
+1079173
+1079189
+1079213
+1079227
+1079233
+1079251
+1079269
+1079291
+1079297
+1079311
+1079317
+1079329
+1079339
+1079357
+1079359
+1079369
+1079383
+1079399
+1079417
+1079431
+1079453
+1079461
+1079471
+1079473
+1079503
+1079509
+1079527
+1079531
+1079539
+1079569
+1079593
+1079609
+1079621
+1079629
+1079633
+1079647
+1079651
+1079669
+1079671
+1079681
+1079711
+1079717
+1079753
+1079777
+1079779
+1079783
+1079797
+1079809
+1079821
+1079831
+1079849
+1079861
+1079867
+1079879
+1079887
+1079917
+1079927
+1079929
+1079933
+1079957
+1079963
+1079977
+1079983
+1079987
+1079999
+1080007
+1080029
+1080043
+1080049
+1080059
+1080073
+1080077
+1080083
+1080089
+1080091
+1080097
+1080119
+1080137
+1080143
+1080173
+1080199
+1080217
+1080223
+1080229
+1080251
+1080259
+1080263
+1080269
+1080271
+1080281
+1080301
+1080307
+1080311
+1080329
+1080341
+1080347
+1080353
+1080383
+1080413
+1080419
+1080433
+1080439
+1080449
+1080451
+1080463
+1080479
+1080481
+1080491
+1080523
+1080539
+1080553
+1080557
+1080559
+1080589
+1080613
+1080647
+1080649
+1080661
+1080679
+1080683
+1080713
+1080749
+1080757
+1080763
+1080767
+1080773
+1080787
+1080791
+1080797
+1080803
+1080811
+1080817
+1080823
+1080841
+1080847
+1080851
+1080857
+1080899
+1080901
+1080907
+1080913
+1080923
+1080941
+1080943
+1080971
+1080973
+1080983
+1081027
+1081037
+1081051
+1081061
+1081079
+1081097
+1081099
+1081121
+1081123
+1081127
+1081133
+1081139
+1081153
+1081163
+1081219
+1081229
+1081231
+1081237
+1081243
+1081247
+1081277
+1081279
+1081291
+1081303
+1081307
+1081331
+1081337
+1081351
+1081361
+1081369
+1081403
+1081417
+1081429
+1081441
+1081477
+1081501
+1081513
+1081541
+1081583
+1081631
+1081637
+1081657
+1081679
+1081681
+1081687
+1081699
+1081709
+1081711
+1081721
+1081723
+1081733
+1081741
+1081757
+1081763
+1081771
+1081777
+1081781
+1081789
+1081793
+1081813
+1081823
+1081853
+1081859
+1081891
+1081901
+1081907
+1081919
+1081937
+1081939
+1081979
+1081981
+1082017
+1082023
+1082027
+1082047
+1082083
+1082089
+1082093
+1082099
+1082129
+1082141
+1082143
+1082149
+1082153
+1082161
+1082171
+1082177
+1082189
+1082197
+1082209
+1082231
+1082233
+1082243
+1082273
+1082317
+1082321
+1082351
+1082369
+1082377
+1082381
+1082383
+1082387
+1082399
+1082429
+1082443
+1082447
+1082467
+1082491
+1082527
+1082531
+1082533
+1082573
+1082579
+1082581
+1082593
+1082597
+1082603
+1082621
+1082629
+1082647
+1082659
+1082681
+1082699
+1082707
+1082717
+1082723
+1082729
+1082743
+1082761
+1082777
+1082801
+1082881
+1082891
+1082911
+1082969
+1082971
+1082989
+1082993
+1082999
+1083007
+1083031
+1083037
+1083059
+1083073
+1083077
+1083079
+1083083
+1083107
+1083113
+1083119
+1083151
+1083167
+1083191
+1083193
+1083211
+1083241
+1083253
+1083283
+1083287
+1083289
+1083301
+1083307
+1083311
+1083317
+1083319
+1083337
+1083349
+1083367
+1083371
+1083377
+1083391
+1083409
+1083431
+1083443
+1083449
+1083451
+1083463
+1083473
+1083497
+1083517
+1083541
+1083559
+1083571
+1083583
+1083601
+1083611
+1083613
+1083659
+1083689
+1083707
+1083713
+1083721
+1083743
+1083749
+1083757
+1083793
+1083809
+1083827
+1083833
+1083839
+1083847
+1083851
+1083871
+1083881
+1083899
+1083911
+1083913
+1083923
+1083941
+1083947
+1083949
+1083983
+1084001
+1084019
+1084043
+1084051
+1084067
+1084079
+1084087
+1084093
+1084103
+1084133
+1084147
+1084157
+1084177
+1084217
+1084219
+1084247
+1084253
+1084267
+1084297
+1084301
+1084309
+1084313
+1084333
+1084357
+1084367
+1084373
+1084403
+1084423
+1084429
+1084451
+1084459
+1084469
+1084471
+1084477
+1084483
+1084493
+1084543
+1084547
+1084553
+1084579
+1084609
+1084613
+1084621
+1084627
+1084637
+1084649
+1084661
+1084669
+1084673
+1084697
+1084711
+1084723
+1084747
+1084757
+1084771
+1084777
+1084793
+1084799
+1084817
+1084823
+1084829
+1084859
+1084871
+1084891
+1084927
+1084939
+1084943
+1084949
+1084981
+1084987
+1084997
+1085003
+1085011
+1085017
+1085023
+1085047
+1085053
+1085101
+1085111
+1085113
+1085131
+1085137
+1085141
+1085143
+1085153
+1085159
+1085179
+1085197
+1085221
+1085269
+1085309
+1085317
+1085327
+1085351
+1085353
+1085369
+1085389
+1085407
+1085419
+1085429
+1085431
+1085443
+1085459
+1085473
+1085509
+1085521
+1085551
+1085587
+1085611
+1085627
+1085633
+1085657
+1085663
+1085677
+1085681
+1085687
+1085719
+1085737
+1085753
+1085767
+1085771
+1085779
+1085801
+1085809
+1085813
+1085827
+1085857
+1085863
+1085867
+1085873
+1085881
+1085891
+1085911
+1085933
+1085957
+1085971
+1085989
+1086031
+1086047
+1086073
+1086089
+1086091
+1086101
+1086103
+1086119
+1086133
+1086139
+1086149
+1086161
+1086179
+1086191
+1086193
+1086199
+1086203
+1086247
+1086251
+1086257
+1086259
+1086263
+1086277
+1086299
+1086301
+1086307
+1086331
+1086343
+1086347
+1086353
+1086361
+1086373
+1086389
+1086391
+1086413
+1086433
+1086443
+1086461
+1086469
+1086493
+1086509
+1086511
+1086523
+1086529
+1086557
+1086559
+1086587
+1086607
+1086611
+1086619
+1086637
+1086641
+1086647
+1086677
+1086689
+1086703
+1086731
+1086749
+1086763
+1086769
+1086791
+1086809
+1086817
+1086859
+1086863
+1086881
+1086893
+1086901
+1086913
+1086919
+1086923
+1086931
+1086937
+1086989
+1086991
+1087001
+1087019
+1087027
+1087061
+1087091
+1087109
+1087117
+1087129
+1087147
+1087159
+1087231
+1087241
+1087249
+1087259
+1087271
+1087291
+1087301
+1087309
+1087349
+1087357
+1087379
+1087381
+1087391
+1087409
+1087423
+1087433
+1087451
+1087453
+1087459
+1087483
+1087487
+1087517
+1087519
+1087543
+1087553
+1087561
+1087589
+1087591
+1087621
+1087631
+1087657
+1087663
+1087673
+1087679
+1087687
+1087717
+1087729
+1087741
+1087747
+1087753
+1087781
+1087787
+1087789
+1087799
+1087811
+1087817
+1087829
+1087841
+1087843
+1087861
+1087873
+1087897
+1087903
+1087907
+1087937
+1087963
+1087967
+1087973
+1087981
+1087987
+1088023
+1088027
+1088039
+1088053
+1088063
+1088071
+1088081
+1088089
+1088093
+1088123
+1088159
+1088161
+1088209
+1088233
+1088237
+1088239
+1088251
+1088267
+1088273
+1088293
+1088309
+1088371
+1088387
+1088389
+1088393
+1088407
+1088413
+1088419
+1088431
+1088443
+1088447
+1088449
+1088467
+1088471
+1088489
+1088519
+1088533
+1088537
+1088543
+1088569
+1088579
+1088603
+1088611
+1088617
+1088621
+1088623
+1088639
+1088641
+1088657
+1088669
+1088671
+1088687
+1088693
+1088707
+1088723
+1088749
+1088753
+1088761
+1088777
+1088783
+1088807
+1088827
+1088831
+1088839
+1088851
+1088903
+1088917
+1088933
+1088953
+1088957
+1088959
+1088977
+1088987
+1088993
+1089017
+1089029
+1089047
+1089091
+1089103
+1089107
+1089113
+1089133
+1089161
+1089191
+1089197
+1089217
+1089223
+1089227
+1089239
+1089259
+1089299
+1089313
+1089359
+1089383
+1089397
+1089401
+1089421
+1089427
+1089457
+1089461
+1089463
+1089469
+1089481
+1089497
+1089503
+1089509
+1089523
+1089551
+1089563
+1089611
+1089629
+1089653
+1089661
+1089677
+1089679
+1089703
+1089709
+1089713
+1089757
+1089793
+1089799
+1089841
+1089863
+1089877
+1089917
+1089919
+1089941
+1089943
+1089961
+1089967
+1090003
+1090013
+1090021
+1090027
+1090031
+1090097
+1090099
+1090127
+1090129
+1090151
+1090153
+1090169
+1090181
+1090189
+1090211
+1090213
+1090217
+1090241
+1090249
+1090267
+1090273
+1090303
+1090333
+1090373
+1090381
+1090387
+1090403
+1090409
+1090421
+1090423
+1090457
+1090459
+1090469
+1090471
+1090483
+1090493
+1090519
+1090553
+1090577
+1090589
+1090597
+1090613
+1090627
+1090681
+1090697
+1090709
+1090711
+1090717
+1090721
+1090757
+1090759
+1090769
+1090783
+1090799
+1090807
+1090819
+1090841
+1090849
+1090877
+1090879
+1090883
+1090889
+1090891
+1090897
+1090909
+1090919
+1090927
+1090937
+1090939
+1090949
+1090963
+1090967
+1090979
+1090997
+1091003
+1091017
+1091021
+1091023
+1091033
+1091047
+1091053
+1091059
+1091063
+1091071
+1091119
+1091137
+1091147
+1091149
+1091159
+1091161
+1091173
+1091177
+1091191
+1091219
+1091221
+1091239
+1091243
+1091257
+1091261
+1091263
+1091267
+1091269
+1091273
+1091287
+1091329
+1091339
+1091359
+1091369
+1091371
+1091381
+1091393
+1091399
+1091401
+1091411
+1091413
+1091443
+1091459
+1091471
+1091477
+1091509
+1091521
+1091527
+1091549
+1091551
+1091561
+1091581
+1091591
+1091609
+1091617
+1091627
+1091633
+1091639
+1091659
+1091663
+1091681
+1091687
+1091711
+1091729
+1091731
+1091737
+1091749
+1091777
+1091807
+1091809
+1091837
+1091843
+1091863
+1091869
+1091887
+1091917
+1091939
+1091957
+1091983
+1092019
+1092023
+1092041
+1092043
+1092059
+1092061
+1092067
+1092089
+1092103
+1092107
+1092127
+1092137
+1092151
+1092163
+1092173
+1092181
+1092191
+1092209
+1092229
+1092241
+1092251
+1092257
+1092269
+1092283
+1092307
+1092331
+1092337
+1092349
+1092353
+1092361
+1092373
+1092379
+1092389
+1092391
+1092397
+1092419
+1092433
+1092451
+1092461
+1092463
+1092473
+1092479
+1092493
+1092541
+1092583
+1092593
+1092601
+1092629
+1092643
+1092659
+1092667
+1092677
+1092713
+1092731
+1092733
+1092757
+1092779
+1092803
+1092821
+1092827
+1092829
+1092851
+1092853
+1092863
+1092887
+1092893
+1092901
+1092907
+1092911
+1092919
+1092929
+1092961
+1092977
+1092989
+1092991
+1092997
+1093007
+1093033
+1093061
+1093063
+1093067
+1093069
+1093087
+1093109
+1093111
+1093129
+1093133
+1093159
+1093163
+1093177
+1093199
+1093201
+1093223
+1093237
+1093243
+1093249
+1093273
+1093283
+1093289
+1093297
+1093307
+1093327
+1093331
+1093357
+1093363
+1093381
+1093399
+1093403
+1093409
+1093427
+1093441
+1093487
+1093493
+1093517
+1093529
+1093531
+1093537
+1093541
+1093553
+1093571
+1093577
+1093591
+1093633
+1093637
+1093639
+1093657
+1093663
+1093667
+1093679
+1093681
+1093699
+1093717
+1093723
+1093733
+1093739
+1093747
+1093751
+1093753
+1093777
+1093789
+1093823
+1093837
+1093843
+1093847
+1093871
+1093889
+1093901
+1093907
+1093927
+1093943
+1093951
+1093957
+1093969
+1093991
+1093993
+1093997
+1093999
+1094011
+1094029
+1094047
+1094057
+1094059
+1094081
+1094089
+1094099
+1094101
+1094123
+1094129
+1094131
+1094143
+1094147
+1094161
+1094183
+1094209
+1094237
+1094263
+1094293
+1094299
+1094321
+1094333
+1094339
+1094371
+1094377
+1094407
+1094411
+1094417
+1094437
+1094441
+1094449
+1094453
+1094461
+1094473
+1094491
+1094519
+1094531
+1094539
+1094543
+1094549
+1094551
+1094557
+1094567
+1094573
+1094603
+1094623
+1094629
+1094633
+1094657
+1094669
+1094671
+1094683
+1094689
+1094693
+1094701
+1094711
+1094747
+1094759
+1094773
+1094791
+1094801
+1094803
+1094809
+1094831
+1094833
+1094843
+1094881
+1094887
+1094897
+1094911
+1094921
+1094923
+1094939
+1094957
+1094963
+1094969
+1094983
+1094999
+1095023
+1095043
+1095047
+1095049
+1095067
+1095071
+1095091
+1095119
+1095161
+1095169
+1095173
+1095209
+1095221
+1095223
+1095229
+1095239
+1095247
+1095251
+1095257
+1095287
+1095313
+1095319
+1095343
+1095349
+1095401
+1095403
+1095427
+1095433
+1095439
+1095443
+1095449
+1095461
+1095481
+1095487
+1095491
+1095503
+1095529
+1095541
+1095551
+1095557
+1095569
+1095581
+1095583
+1095613
+1095631
+1095671
+1095691
+1095713
+1095719
+1095727
+1095733
+1095739
+1095751
+1095779
+1095781
+1095791
+1095793
+1095811
+1095821
+1095833
+1095839
+1095841
+1095847
+1095851
+1095859
+1095907
+1095931
+1095947
+1095959
+1095961
+1095979
+1095989
+1096031
+1096057
+1096061
+1096079
+1096097
+1096099
+1096127
+1096133
+1096141
+1096159
+1096163
+1096189
+1096201
+1096219
+1096267
+1096289
+1096307
+1096327
+1096349
+1096351
+1096363
+1096373
+1096379
+1096393
+1096399
+1096423
+1096427
+1096451
+1096477
+1096481
+1096489
+1096493
+1096499
+1096507
+1096541
+1096549
+1096553
+1096559
+1096561
+1096583
+1096609
+1096621
+1096631
+1096639
+1096673
+1096691
+1096703
+1096727
+1096741
+1096763
+1096787
+1096793
+1096807
+1096817
+1096829
+1096831
+1096853
+1096859
+1096861
+1096871
+1096883
+1096919
+1096951
+1096957
+1096967
+1096969
+1096981
+1096999
+1097009
+1097017
+1097029
+1097039
+1097051
+1097069
+1097081
+1097101
+1097111
+1097113
+1097141
+1097143
+1097147
+1097179
+1097189
+1097203
+1097209
+1097221
+1097237
+1097267
+1097293
+1097297
+1097321
+1097323
+1097351
+1097359
+1097377
+1097381
+1097413
+1097419
+1097423
+1097441
+1097443
+1097461
+1097483
+1097501
+1097513
+1097533
+1097539
+1097543
+1097549
+1097557
+1097599
+1097627
+1097633
+1097651
+1097653
+1097659
+1097669
+1097699
+1097711
+1097717
+1097729
+1097743
+1097783
+1097791
+1097797
+1097819
+1097849
+1097851
+1097861
+1097869
+1097879
+1097891
+1097893
+1097897
+1097903
+1097909
+1097923
+1097933
+1097947
+1097983
+1098017
+1098023
+1098037
+1098073
+1098077
+1098101
+1098109
+1098121
+1098133
+1098151
+1098187
+1098191
+1098193
+1098203
+1098211
+1098221
+1098233
+1098269
+1098287
+1098301
+1098311
+1098313
+1098341
+1098373
+1098379
+1098397
+1098401
+1098439
+1098443
+1098451
+1098463
+1098469
+1098479
+1098481
+1098509
+1098511
+1098533
+1098541
+1098593
+1098613
+1098623
+1098631
+1098649
+1098667
+1098673
+1098689
+1098707
+1098709
+1098731
+1098737
+1098787
+1098791
+1098803
+1098821
+1098833
+1098847
+1098953
+1098967
+1098973
+1098989
+1099031
+1099051
+1099057
+1099079
+1099081
+1099097
+1099103
+1099117
+1099121
+1099139
+1099171
+1099177
+1099181
+1099199
+1099223
+1099247
+1099249
+1099261
+1099279
+1099289
+1099309
+1099313
+1099327
+1099337
+1099363
+1099369
+1099391
+1099393
+1099409
+1099411
+1099421
+1099433
+1099459
+1099463
+1099487
+1099489
+1099493
+1099499
+1099507
+1099513
+1099519
+1099523
+1099541
+1099547
+1099559
+1099573
+1099589
+1099619
+1099621
+1099627
+1099633
+1099649
+1099669
+1099687
+1099711
+1099717
+1099723
+1099727
+1099729
+1099741
+1099757
+1099771
+1099783
+1099793
+1099799
+1099807
+1099817
+1099823
+1099841
+1099843
+1099859
+1099867
+1099927
+1099933
+1099957
+1099961
+1099997
+1100009
+1100023
+1100027
+1100039
+1100041
+1100051
+1100063
+1100089
+1100093
+1100101
+1100123
+1100131
+1100147
+1100149
+1100161
+1100167
+1100171
+1100179
+1100213
+1100219
+1100243
+1100249
+1100261
+1100273
+1100279
+1100303
+1100311
+1100321
+1100353
+1100357
+1100377
+1100381
+1100387
+1100419
+1100441
+1100443
+1100447
+1100467
+1100471
+1100483
+1100503
+1100509
+1100513
+1100543
+1100557
+1100569
+1100581
+1100591
+1100611
+1100641
+1100653
+1100681
+1100683
+1100747
+1100773
+1100777
+1100783
+1100797
+1100807
+1100831
+1100833
+1100837
+1100839
+1100851
+1100857
+1100887
+1100893
+1100899
+1100909
+1100921
+1100933
+1100947
+1100977
+1101071
+1101091
+1101097
+1101103
+1101109
+1101127
+1101143
+1101169
+1101179
+1101193
+1101211
+1101229
+1101253
+1101283
+1101299
+1101307
+1101319
+1101323
+1101341
+1101349
+1101371
+1101377
+1101389
+1101403
+1101407
+1101409
+1101421
+1101431
+1101433
+1101439
+1101467
+1101473
+1101509
+1101511
+1101517
+1101521
+1101533
+1101559
+1101571
+1101577
+1101587
+1101593
+1101613
+1101619
+1101641
+1101649
+1101671
+1101673
+1101689
+1101691
+1101697
+1101733
+1101743
+1101761
+1101767
+1101773
+1101781
+1101803
+1101811
+1101839
+1101851
+1101871
+1101883
+1101901
+1101917
+1101929
+1101931
+1101937
+1101941
+1101959
+1101967
+1102001
+1102007
+1102021
+1102027
+1102063
+1102069
+1102111
+1102117
+1102147
+1102151
+1102159
+1102163
+1102169
+1102181
+1102187
+1102201
+1102237
+1102243
+1102249
+1102253
+1102259
+1102271
+1102279
+1102301
+1102307
+1102313
+1102333
+1102337
+1102393
+1102397
+1102411
+1102427
+1102429
+1102441
+1102447
+1102457
+1102463
+1102481
+1102483
+1102523
+1102537
+1102547
+1102553
+1102567
+1102571
+1102583
+1102663
+1102669
+1102679
+1102681
+1102691
+1102693
+1102709
+1102721
+1102727
+1102729
+1102733
+1102747
+1102757
+1102813
+1102823
+1102831
+1102847
+1102853
+1102861
+1102879
+1102883
+1102891
+1102901
+1102903
+1102921
+1102939
+1102951
+1102963
+1102967
+1102979
+1102991
+1102999
+1103009
+1103017
+1103029
+1103041
+1103059
+1103087
+1103101
+1103107
+1103111
+1103119
+1103129
+1103143
+1103171
+1103183
+1103191
+1103203
+1103213
+1103237
+1103257
+1103279
+1103281
+1103293
+1103309
+1103339
+1103341
+1103353
+1103371
+1103437
+1103449
+1103461
+1103467
+1103483
+1103489
+1103497
+1103519
+1103533
+1103549
+1103561
+1103579
+1103581
+1103587
+1103591
+1103603
+1103611
+1103617
+1103621
+1103629
+1103633
+1103639
+1103699
+1103723
+1103737
+1103749
+1103779
+1103797
+1103803
+1103849
+1103857
+1103863
+1103873
+1103899
+1103903
+1103911
+1103923
+1103933
+1103981
+1103987
+1103989
+1104017
+1104041
+1104079
+1104097
+1104101
+1104107
+1104113
+1104119
+1104137
+1104139
+1104157
+1104179
+1104193
+1104203
+1104209
+1104217
+1104221
+1104241
+1104247
+1104289
+1104293
+1104307
+1104319
+1104331
+1104343
+1104353
+1104373
+1104377
+1104379
+1104403
+1104409
+1104427
+1104431
+1104449
+1104479
+1104491
+1104511
+1104517
+1104533
+1104557
+1104559
+1104589
+1104599
+1104613
+1104619
+1104659
+1104661
+1104671
+1104683
+1104703
+1104707
+1104731
+1104737
+1104739
+1104743
+1104749
+1104751
+1104767
+1104769
+1104781
+1104787
+1104791
+1104797
+1104811
+1104821
+1104823
+1104833
+1104853
+1104877
+1104889
+1104899
+1104913
+1104919
+1104937
+1104941
+1104947
+1104959
+1105009
+1105019
+1105033
+1105061
+1105063
+1105067
+1105109
+1105141
+1105157
+1105163
+1105171
+1105177
+1105193
+1105201
+1105207
+1105213
+1105217
+1105231
+1105261
+1105267
+1105271
+1105309
+1105327
+1105333
+1105337
+1105339
+1105343
+1105387
+1105397
+1105427
+1105441
+1105457
+1105463
+1105501
+1105513
+1105519
+1105537
+1105547
+1105549
+1105571
+1105579
+1105583
+1105589
+1105603
+1105607
+1105609
+1105613
+1105619
+1105627
+1105639
+1105649
+1105651
+1105661
+1105669
+1105691
+1105693
+1105711
+1105757
+1105759
+1105787
+1105807
+1105813
+1105823
+1105847
+1105861
+1105873
+1105879
+1105883
+1105891
+1105913
+1105919
+1105943
+1105961
+1105963
+1105997
+1105999
+1106029
+1106069
+1106087
+1106099
+1106101
+1106129
+1106137
+1106159
+1106167
+1106177
+1106179
+1106197
+1106201
+1106213
+1106219
+1106233
+1106243
+1106249
+1106257
+1106267
+1106279
+1106293
+1106311
+1106317
+1106363
+1106381
+1106401
+1106407
+1106419
+1106423
+1106429
+1106447
+1106449
+1106471
+1106477
+1106489
+1106491
+1106509
+1106527
+1106531
+1106543
+1106563
+1106569
+1106593
+1106621
+1106627
+1106629
+1106653
+1106671
+1106687
+1106689
+1106741
+1106747
+1106761
+1106767
+1106771
+1106779
+1106789
+1106801
+1106821
+1106827
+1106837
+1106839
+1106851
+1106881
+1106891
+1106909
+1106923
+1106927
+1106939
+1106953
+1106957
+1106977
+1106993
+1106999
+1107019
+1107031
+1107047
+1107049
+1107053
+1107083
+1107101
+1107107
+1107109
+1107157
+1107167
+1107173
+1107199
+1107203
+1107217
+1107269
+1107317
+1107319
+1107341
+1107347
+1107383
+1107389
+1107401
+1107409
+1107419
+1107433
+1107439
+1107467
+1107479
+1107487
+1107497
+1107503
+1107511
+1107523
+1107527
+1107553
+1107569
+1107571
+1107581
+1107583
+1107593
+1107619
+1107677
+1107679
+1107721
+1107727
+1107751
+1107763
+1107773
+1107781
+1107787
+1107791
+1107793
+1107797
+1107803
+1107811
+1107823
+1107851
+1107853
+1107881
+1107893
+1107913
+1107917
+1107923
+1107929
+1107937
+1107989
+1108001
+1108007
+1108021
+1108049
+1108057
+1108069
+1108073
+1108091
+1108103
+1108123
+1108127
+1108147
+1108169
+1108171
+1108181
+1108201
+1108207
+1108223
+1108229
+1108241
+1108253
+1108259
+1108267
+1108313
+1108321
+1108337
+1108357
+1108361
+1108363
+1108369
+1108397
+1108423
+1108427
+1108447
+1108453
+1108463
+1108469
+1108477
+1108487
+1108489
+1108501
+1108507
+1108537
+1108543
+1108559
+1108561
+1108567
+1108571
+1108573
+1108579
+1108603
+1108609
+1108619
+1108633
+1108663
+1108691
+1108693
+1108697
+1108703
+1108711
+1108717
+1108727
+1108729
+1108733
+1108739
+1108747
+1108753
+1108759
+1108771
+1108781
+1108801
+1108817
+1108819
+1108823
+1108867
+1108903
+1108907
+1108909
+1108957
+1108967
+1108993
+1108997
+1108999
+1109021
+1109033
+1109057
+1109113
+1109117
+1109123
+1109159
+1109161
+1109167
+1109189
+1109197
+1109219
+1109231
+1109243
+1109249
+1109257
+1109281
+1109287
+1109291
+1109309
+1109327
+1109347
+1109351
+1109363
+1109387
+1109393
+1109399
+1109401
+1109411
+1109431
+1109473
+1109477
+1109489
+1109491
+1109509
+1109513
+1109531
+1109533
+1109561
+1109579
+1109609
+1109611
+1109629
+1109639
+1109653
+1109663
+1109723
+1109737
+1109749
+1109761
+1109783
+1109789
+1109791
+1109813
+1109821
+1109839
+1109851
+1109861
+1109869
+1109881
+1109887
+1109891
+1109897
+1109903
+1109909
+1109921
+1109951
+1109987
+1110007
+1110013
+1110019
+1110023
+1110041
+1110061
+1110077
+1110089
+1110103
+1110127
+1110133
+1110167
+1110181
+1110223
+1110229
+1110247
+1110269
+1110271
+1110289
+1110301
+1110311
+1110313
+1110331
+1110349
+1110353
+1110367
+1110397
+1110401
+1110413
+1110427
+1110433
+1110449
+1110467
+1110479
+1110517
+1110521
+1110523
+1110533
+1110539
+1110541
+1110547
+1110583
+1110587
+1110589
+1110611
+1110617
+1110643
+1110667
+1110679
+1110709
+1110713
+1110719
+1110727
+1110743
+1110773
+1110779
+1110803
+1110817
+1110821
+1110839
+1110859
+1110881
+1110887
+1110913
+1110917
+1110919
+1110929
+1110931
+1110943
+1110953
+1110959
+1110971
+1110973
+1110979
+1110983
+1110997
+1111007
+1111013
+1111021
+1111031
+1111043
+1111049
+1111057
+1111067
+1111081
+1111087
+1111091
+1111151
+1111157
+1111169
+1111181
+1111183
+1111189
+1111211
+1111213
+1111219
+1111247
+1111259
+1111283
+1111289
+1111301
+1111333
+1111339
+1111351
+1111361
+1111379
+1111393
+1111399
+1111423
+1111427
+1111433
+1111447
+1111457
+1111489
+1111493
+1111499
+1111531
+1111543
+1111547
+1111553
+1111559
+1111573
+1111577
+1111637
+1111639
+1111651
+1111661
+1111667
+1111673
+1111687
+1111703
+1111711
+1111723
+1111727
+1111741
+1111757
+1111771
+1111787
+1111793
+1111801
+1111841
+1111853
+1111867
+1111897
+1111921
+1111933
+1111949
+1111963
+1111967
+1111991
+1112003
+1112011
+1112017
+1112047
+1112057
+1112077
+1112081
+1112087
+1112093
+1112107
+1112113
+1112129
+1112131
+1112141
+1112143
+1112147
+1112159
+1112171
+1112197
+1112201
+1112239
+1112269
+1112273
+1112291
+1112323
+1112333
+1112339
+1112341
+1112351
+1112359
+1112369
+1112381
+1112383
+1112389
+1112413
+1112467
+1112471
+1112477
+1112483
+1112509
+1112513
+1112519
+1112543
+1112549
+1112561
+1112567
+1112569
+1112581
+1112591
+1112597
+1112611
+1112623
+1112651
+1112653
+1112663
+1112677
+1112689
+1112707
+1112723
+1112729
+1112731
+1112737
+1112747
+1112777
+1112779
+1112789
+1112821
+1112827
+1112831
+1112833
+1112857
+1112897
+1112899
+1112911
+1112921
+1112941
+1112953
+1112959
+1112971
+1112977
+1112983
+1113011
+1113019
+1113029
+1113043
+1113059
+1113083
+1113089
+1113103
+1113137
+1113149
+1113157
+1113173
+1113181
+1113187
+1113193
+1113197
+1113199
+1113221
+1113239
+1113253
+1113257
+1113317
+1113319
+1113337
+1113349
+1113373
+1113379
+1113401
+1113403
+1113421
+1113451
+1113461
+1113481
+1113491
+1113509
+1113521
+1113527
+1113557
+1113569
+1113587
+1113599
+1113617
+1113643
+1113667
+1113701
+1113703
+1113713
+1113719
+1113751
+1113773
+1113781
+1113787
+1113793
+1113797
+1113809
+1113859
+1113863
+1113877
+1113883
+1113887
+1113899
+1113941
+1113949
+1113953
+1113961
+1113971
+1113991
+1113997
+1114019
+1114031
+1114037
+1114039
+1114049
+1114063
+1114111
+1114117
+1114159
+1114193
+1114207
+1114213
+1114241
+1114249
+1114261
+1114271
+1114273
+1114283
+1114297
+1114301
+1114303
+1114349
+1114361
+1114381
+1114397
+1114423
+1114427
+1114447
+1114471
+1114489
+1114493
+1114501
+1114507
+1114523
+1114541
+1114549
+1114567
+1114573
+1114577
+1114591
+1114601
+1114613
+1114651
+1114657
+1114661
+1114681
+1114693
+1114697
+1114709
+1114721
+1114723
+1114733
+1114753
+1114759
+1114801
+1114807
+1114811
+1114829
+1114837
+1114849
+1114859
+1114873
+1114891
+1114907
+1114909
+1114931
+1114937
+1114943
+1114969
+1114973
+1114987
+1114999
+1115011
+1115027
+1115029
+1115057
+1115071
+1115089
+1115099
+1115113
+1115117
+1115131
+1115189
+1115207
+1115227
+1115237
+1115239
+1115267
+1115269
+1115273
+1115297
+1115299
+1115321
+1115327
+1115329
+1115351
+1115363
+1115381
+1115399
+1115407
+1115417
+1115419
+1115447
+1115449
+1115453
+1115467
+1115497
+1115501
+1115519
+1115531
+1115533
+1115539
+1115551
+1115561
+1115567
+1115573
+1115579
+1115581
+1115599
+1115627
+1115633
+1115641
+1115657
+1115683
+1115701
+1115711
+1115713
+1115731
+1115743
+1115759
+1115767
+1115771
+1115773
+1115789
+1115831
+1115839
+1115843
+1115857
+1115879
+1115899
+1115911
+1115923
+1115929
+1115941
+1115987
+1115993
+1116001
+1116053
+1116077
+1116091
+1116107
+1116133
+1116163
+1116173
+1116187
+1116209
+1116223
+1116229
+1116257
+1116277
+1116281
+1116289
+1116301
+1116317
+1116319
+1116329
+1116337
+1116347
+1116371
+1116419
+1116431
+1116439
+1116449
+1116461
+1116469
+1116473
+1116491
+1116499
+1116523
+1116541
+1116547
+1116569
+1116571
+1116593
+1116601
+1116631
+1116637
+1116641
+1116653
+1116659
+1116677
+1116701
+1116743
+1116749
+1116751
+1116809
+1116821
+1116851
+1116853
+1116859
+1116887
+1116889
+1116893
+1116911
+1116937
+1116943
+1116977
+1116989
+1117009
+1117013
+1117021
+1117027
+1117031
+1117033
+1117057
+1117069
+1117073
+1117079
+1117099
+1117111
+1117117
+1117153
+1117169
+1117177
+1117199
+1117243
+1117247
+1117253
+1117267
+1117273
+1117279
+1117301
+1117307
+1117309
+1117321
+1117349
+1117367
+1117379
+1117433
+1117439
+1117451
+1117463
+1117471
+1117477
+1117481
+1117483
+1117489
+1117513
+1117549
+1117553
+1117579
+1117591
+1117601
+1117603
+1117607
+1117609
+1117657
+1117661
+1117673
+1117679
+1117681
+1117709
+1117729
+1117741
+1117757
+1117759
+1117763
+1117769
+1117793
+1117799
+1117811
+1117813
+1117817
+1117819
+1117861
+1117867
+1117877
+1117889
+1117901
+1117913
+1117931
+1117933
+1117939
+1117943
+1117967
+1117973
+1117993
+1118003
+1118009
+1118011
+1118021
+1118023
+1118027
+1118041
+1118063
+1118081
+1118101
+1118113
+1118123
+1118137
+1118147
+1118149
+1118189
+1118197
+1118203
+1118219
+1118261
+1118267
+1118291
+1118303
+1118309
+1118317
+1118339
+1118363
+1118371
+1118393
+1118419
+1118437
+1118441
+1118479
+1118483
+1118497
+1118519
+1118527
+1118563
+1118567
+1118569
+1118599
+1118629
+1118653
+1118659
+1118713
+1118717
+1118723
+1118737
+1118749
+1118773
+1118779
+1118783
+1118797
+1118807
+1118809
+1118827
+1118837
+1118851
+1118857
+1118861
+1118863
+1118867
+1118869
+1118893
+1118911
+1118921
+1118941
+1118947
+1118951
+1118969
+1118987
+1118993
+1119029
+1119037
+1119047
+1119049
+1119077
+1119091
+1119109
+1119121
+1119169
+1119179
+1119221
+1119227
+1119241
+1119269
+1119281
+1119299
+1119319
+1119323
+1119343
+1119359
+1119389
+1119397
+1119403
+1119449
+1119473
+1119523
+1119527
+1119529
+1119557
+1119577
+1119589
+1119607
+1119611
+1119623
+1119649
+1119653
+1119659
+1119673
+1119691
+1119697
+1119707
+1119733
+1119737
+1119779
+1119793
+1119799
+1119809
+1119817
+1119821
+1119823
+1119857
+1119863
+1119871
+1119907
+1119913
+1119947
+1119949
+1119959
+1120001
+1120019
+1120051
+1120073
+1120081
+1120087
+1120109
+1120121
+1120153
+1120157
+1120159
+1120187
+1120211
+1120219
+1120237
+1120271
+1120277
+1120289
+1120291
+1120303
+1120313
+1120319
+1120321
+1120337
+1120349
+1120363
+1120369
+1120391
+1120423
+1120429
+1120459
+1120481
+1120499
+1120501
+1120507
+1120513
+1120517
+1120519
+1120529
+1120541
+1120543
+1120547
+1120549
+1120573
+1120577
+1120591
+1120607
+1120627
+1120633
+1120649
+1120661
+1120663
+1120667
+1120673
+1120687
+1120711
+1120723
+1120727
+1120739
+1120741
+1120747
+1120771
+1120781
+1120783
+1120787
+1120799
+1120807
+1120811
+1120831
+1120837
+1120849
+1120871
+1120883
+1120901
+1120907
+1120913
+1120919
+1120939
+1120957
+1120961
+1120969
+1120993
+1121011
+1121017
+1121023
+1121027
+1121033
+1121047
+1121051
+1121083
+1121093
+1121101
+1121143
+1121147
+1121173
+1121179
+1121189
+1121191
+1121203
+1121221
+1121231
+1121249
+1121257
+1121261
+1121293
+1121297
+1121317
+1121333
+1121347
+1121357
+1121369
+1121377
+1121383
+1121387
+1121389
+1121423
+1121431
+1121443
+1121447
+1121453
+1121509
+1121539
+1121543
+1121557
+1121599
+1121621
+1121629
+1121651
+1121671
+1121689
+1121693
+1121699
+1121707
+1121723
+1121737
+1121819
+1121831
+1121833
+1121837
+1121839
+1121867
+1121899
+1121933
+1121941
+1121947
+1121987
+1121993
+1122001
+1122029
+1122041
+1122053
+1122071
+1122089
+1122091
+1122103
+1122113
+1122131
+1122133
+1122137
+1122139
+1122157
+1122179
+1122181
+1122227
+1122241
+1122259
+1122263
+1122269
+1122281
+1122283
+1122287
+1122367
+1122371
+1122389
+1122397
+1122419
+1122427
+1122431
+1122437
+1122449
+1122467
+1122481
+1122491
+1122529
+1122533
+1122551
+1122571
+1122587
+1122599
+1122623
+1122643
+1122647
+1122659
+1122679
+1122683
+1122701
+1122721
+1122739
+1122749
+1122757
+1122761
+1122811
+1122841
+1122857
+1122887
+1122899
+1122923
+1122937
+1122941
+1122983
+1122997
+1123051
+1123079
+1123081
+1123093
+1123127
+1123151
+1123181
+1123189
+1123211
+1123217
+1123219
+1123231
+1123247
+1123267
+1123279
+1123303
+1123307
+1123319
+1123327
+1123349
+1123351
+1123361
+1123379
+1123391
+1123399
+1123403
+1123427
+1123429
+1123439
+1123477
+1123483
+1123487
+1123501
+1123511
+1123517
+1123531
+1123541
+1123553
+1123561
+1123567
+1123589
+1123597
+1123601
+1123621
+1123631
+1123637
+1123651
+1123667
+1123669
+1123691
+1123693
+1123699
+1123709
+1123729
+1123739
+1123741
+1123747
+1123777
+1123807
+1123841
+1123867
+1123873
+1123879
+1123883
+1123897
+1123901
+1123909
+1123919
+1123931
+1123943
+1123951
+1123961
+1123973
+1123979
+1123999
+1124027
+1124041
+1124051
+1124083
+1124087
+1124107
+1124113
+1124119
+1124131
+1124141
+1124147
+1124197
+1124203
+1124209
+1124219
+1124239
+1124251
+1124267
+1124269
+1124293
+1124297
+1124303
+1124317
+1124351
+1124353
+1124369
+1124377
+1124423
+1124429
+1124437
+1124441
+1124443
+1124449
+1124509
+1124531
+1124551
+1124561
+1124581
+1124593
+1124597
+1124603
+1124639
+1124647
+1124653
+1124659
+1124681
+1124687
+1124699
+1124719
+1124741
+1124749
+1124759
+1124789
+1124797
+1124803
+1124807
+1124813
+1124831
+1124833
+1124867
+1124869
+1124951
+1124957
+1124969
+1124983
+1124987
+1124993
+1125001
+1125013
+1125017
+1125029
+1125053
+1125097
+1125109
+1125121
+1125127
+1125139
+1125143
+1125151
+1125167
+1125169
+1125193
+1125203
+1125209
+1125217
+1125221
+1125253
+1125259
+1125283
+1125317
+1125323
+1125329
+1125343
+1125359
+1125361
+1125379
+1125391
+1125401
+1125407
+1125419
+1125431
+1125433
+1125469
+1125473
+1125479
+1125499
+1125529
+1125539
+1125557
+1125559
+1125569
+1125571
+1125581
+1125599
+1125629
+1125647
+1125653
+1125679
+1125701
+1125713
+1125739
+1125763
+1125767
+1125793
+1125797
+1125811
+1125823
+1125833
+1125857
+1125871
+1125899
+1125907
+1125911
+1125913
+1125923
+1125931
+1125941
+1125953
+1125973
+1125991
+1126031
+1126033
+1126043
+1126067
+1126093
+1126159
+1126189
+1126201
+1126211
+1126219
+1126247
+1126253
+1126259
+1126283
+1126313
+1126319
+1126343
+1126351
+1126357
+1126361
+1126381
+1126387
+1126397
+1126399
+1126421
+1126439
+1126441
+1126457
+1126459
+1126483
+1126501
+1126513
+1126519
+1126523
+1126537
+1126553
+1126561
+1126577
+1126579
+1126597
+1126627
+1126649
+1126661
+1126663
+1126667
+1126669
+1126693
+1126703
+1126711
+1126751
+1126759
+1126771
+1126781
+1126787
+1126823
+1126831
+1126837
+1126843
+1126847
+1126859
+1126861
+1126889
+1126897
+1126963
+1126973
+1126991
+1126999
+1127011
+1127029
+1127033
+1127039
+1127051
+1127081
+1127101
+1127111
+1127123
+1127149
+1127153
+1127167
+1127177
+1127183
+1127197
+1127209
+1127221
+1127227
+1127239
+1127249
+1127263
+1127281
+1127297
+1127303
+1127309
+1127311
+1127323
+1127333
+1127351
+1127359
+1127369
+1127381
+1127383
+1127393
+1127407
+1127411
+1127443
+1127447
+1127453
+1127461
+1127507
+1127513
+1127527
+1127531
+1127537
+1127557
+1127561
+1127573
+1127587
+1127603
+1127617
+1127629
+1127641
+1127657
+1127663
+1127683
+1127701
+1127741
+1127767
+1127773
+1127801
+1127803
+1127809
+1127813
+1127837
+1127849
+1127857
+1127881
+1127891
+1127911
+1127947
+1127957
+1127969
+1127981
+1127983
+1127993
+1128031
+1128037
+1128089
+1128091
+1128107
+1128109
+1128143
+1128151
+1128161
+1128181
+1128209
+1128223
+1128227
+1128233
+1128247
+1128251
+1128287
+1128289
+1128293
+1128299
+1128301
+1128313
+1128349
+1128371
+1128373
+1128383
+1128397
+1128427
+1128433
+1128451
+1128497
+1128499
+1128503
+1128509
+1128521
+1128527
+1128539
+1128553
+1128557
+1128577
+1128583
+1128599
+1128601
+1128623
+1128629
+1128637
+1128641
+1128643
+1128661
+1128667
+1128691
+1128697
+1128703
+1128713
+1128719
+1128727
+1128731
+1128737
+1128761
+1128763
+1128769
+1128773
+1128779
+1128781
+1128811
+1128821
+1128823
+1128889
+1128899
+1128901
+1128917
+1128931
+1128937
+1128943
+1128947
+1128949
+1128977
+1128979
+1128997
+1129013
+1129019
+1129033
+1129043
+1129103
+1129109
+1129111
+1129127
+1129133
+1129153
+1129159
+1129169
+1129187
+1129211
+1129213
+1129217
+1129229
+1129253
+1129283
+1129307
+1129313
+1129333
+1129343
+1129367
+1129391
+1129399
+1129409
+1129433
+1129439
+1129441
+1129459
+1129477
+1129487
+1129489
+1129501
+1129511
+1129519
+1129523
+1129559
+1129561
+1129571
+1129577
+1129603
+1129619
+1129643
+1129663
+1129679
+1129693
+1129699
+1129717
+1129729
+1129741
+1129747
+1129757
+1129763
+1129787
+1129789
+1129819
+1129831
+1129841
+1129847
+1129853
+1129859
+1129861
+1129889
+1129897
+1129951
+1129957
+1129963
+1129991
+1130011
+1130023
+1130039
+1130047
+1130053
+1130057
+1130081
+1130099
+1130117
+1130123
+1130131
+1130191
+1130237
+1130251
+1130257
+1130267
+1130273
+1130281
+1130287
+1130293
+1130299
+1130317
+1130321
+1130351
+1130359
+1130369
+1130407
+1130413
+1130417
+1130429
+1130431
+1130447
+1130471
+1130497
+1130501
+1130527
+1130561
+1130579
+1130581
+1130587
+1130621
+1130627
+1130629
+1130639
+1130641
+1130651
+1130677
+1130693
+1130699
+1130711
+1130719
+1130737
+1130741
+1130777
+1130783
+1130803
+1130807
+1130809
+1130813
+1130819
+1130827
+1130863
+1130929
+1130939
+1130947
+1130951
+1130953
+1130957
+1130963
+1130981
+1131023
+1131047
+1131049
+1131077
+1131079
+1131083
+1131103
+1131113
+1131121
+1131131
+1131133
+1131139
+1131157
+1131181
+1131191
+1131217
+1131223
+1131239
+1131253
+1131259
+1131269
+1131271
+1131307
+1131323
+1131329
+1131331
+1131341
+1131343
+1131353
+1131379
+1131397
+1131413
+1131419
+1131421
+1131437
+1131451
+1131463
+1131467
+1131479
+1131491
+1131509
+1131523
+1131547
+1131553
+1131569
+1131617
+1131629
+1131643
+1131653
+1131671
+1131677
+1131701
+1131721
+1131727
+1131737
+1131749
+1131751
+1131763
+1131769
+1131787
+1131799
+1131821
+1131827
+1131829
+1131839
+1131857
+1131863
+1131869
+1131881
+1131883
+1131913
+1131917
+1131919
+1131937
+1131943
+1131959
+1131961
+1131973
+1131997
+1132003
+1132009
+1132063
+1132067
+1132091
+1132123
+1132139
+1132141
+1132177
+1132199
+1132223
+1132249
+1132259
+1132291
+1132301
+1132309
+1132321
+1132333
+1132393
+1132403
+1132409
+1132423
+1132429
+1132447
+1132463
+1132471
+1132477
+1132487
+1132499
+1132507
+1132511
+1132519
+1132529
+1132541
+1132561
+1132567
+1132583
+1132597
+1132601
+1132603
+1132627
+1132633
+1132639
+1132643
+1132661
+1132667
+1132673
+1132679
+1132697
+1132721
+1132739
+1132753
+1132783
+1132787
+1132793
+1132811
+1132823
+1132861
+1132877
+1132883
+1132909
+1132919
+1132927
+1132933
+1132949
+1132969
+1132979
+1132987
+1132991
+1132993
+1132997
+1133009
+1133017
+1133039
+1133047
+1133053
+1133071
+1133131
+1133147
+1133149
+1133159
+1133173
+1133177
+1133183
+1133189
+1133191
+1133219
+1133227
+1133239
+1133257
+1133261
+1133263
+1133287
+1133303
+1133317
+1133333
+1133357
+1133359
+1133381
+1133387
+1133459
+1133467
+1133477
+1133479
+1133501
+1133507
+1133513
+1133519
+1133533
+1133537
+1133551
+1133579
+1133591
+1133621
+1133623
+1133633
+1133641
+1133651
+1133653
+1133659
+1133677
+1133681
+1133683
+1133689
+1133731
+1133777
+1133789
+1133809
+1133819
+1133827
+1133837
+1133843
+1133851
+1133857
+1133861
+1133893
+1133897
+1133903
+1133911
+1133933
+1133947
+1133959
+1133963
+1133971
+1133989
+1134031
+1134037
+1134043
+1134047
+1134059
+1134071
+1134079
+1134113
+1134137
+1134143
+1134149
+1134151
+1134163
+1134169
+1134179
+1134187
+1134193
+1134239
+1134241
+1134247
+1134271
+1134283
+1134299
+1134311
+1134313
+1134389
+1134391
+1134403
+1134421
+1134437
+1134443
+1134449
+1134467
+1134479
+1134481
+1134487
+1134503
+1134517
+1134541
+1134557
+1134559
+1134583
+1134587
+1134607
+1134611
+1134619
+1134649
+1134667
+1134673
+1134691
+1134697
+1134703
+1134709
+1134719
+1134769
+1134781
+1134787
+1134811
+1134821
+1134841
+1134863
+1134871
+1134877
+1134883
+1134907
+1134923
+1134929
+1134961
+1134967
+1134977
+1134989
+1135007
+1135009
+1135019
+1135021
+1135061
+1135063
+1135081
+1135087
+1135091
+1135093
+1135103
+1135111
+1135129
+1135133
+1135159
+1135171
+1135187
+1135201
+1135217
+1135229
+1135237
+1135241
+1135247
+1135261
+1135279
+1135283
+1135291
+1135327
+1135333
+1135339
+1135363
+1135367
+1135403
+1135411
+1135427
+1135429
+1135439
+1135451
+1135469
+1135483
+1135513
+1135531
+1135597
+1135613
+1135619
+1135633
+1135643
+1135657
+1135663
+1135699
+1135703
+1135711
+1135721
+1135733
+1135751
+1135777
+1135819
+1135831
+1135837
+1135847
+1135853
+1135859
+1135861
+1135873
+1135879
+1135891
+1135903
+1135913
+1135919
+1135921
+1135951
+1135963
+1135969
+1135997
+1135999
+1136041
+1136053
+1136063
+1136077
+1136081
+1136087
+1136089
+1136111
+1136117
+1136123
+1136129
+1136147
+1136153
+1136183
+1136203
+1136221
+1136227
+1136231
+1136237
+1136287
+1136299
+1136309
+1136327
+1136329
+1136339
+1136357
+1136363
+1136383
+1136389
+1136393
+1136411
+1136417
+1136449
+1136459
+1136461
+1136477
+1136483
+1136557
+1136567
+1136579
+1136587
+1136593
+1136609
+1136617
+1136623
+1136627
+1136633
+1136647
+1136651
+1136659
+1136669
+1136699
+1136717
+1136719
+1136741
+1136749
+1136767
+1136809
+1136813
+1136819
+1136831
+1136833
+1136843
+1136869
+1136897
+1136917
+1136921
+1136939
+1136951
+1136969
+1136981
+1136983
+1136999
+1137001
+1137007
+1137029
+1137067
+1137091
+1137109
+1137137
+1137139
+1137161
+1137163
+1137167
+1137179
+1137203
+1137209
+1137229
+1137233
+1137247
+1137263
+1137271
+1137289
+1137313
+1137329
+1137337
+1137341
+1137403
+1137407
+1137427
+1137439
+1137457
+1137481
+1137503
+1137527
+1137529
+1137547
+1137551
+1137553
+1137569
+1137611
+1137613
+1137629
+1137659
+1137667
+1137673
+1137677
+1137707
+1137733
+1137743
+1137749
+1137767
+1137781
+1137803
+1137809
+1137811
+1137817
+1137859
+1137863
+1137869
+1137881
+1137883
+1137887
+1137889
+1137911
+1137919
+1137937
+1137953
+1137959
+1137973
+1137977
+1137991
+1138019
+1138057
+1138061
+1138091
+1138097
+1138117
+1138127
+1138141
+1138147
+1138171
+1138183
+1138213
+1138237
+1138273
+1138363
+1138367
+1138369
+1138391
+1138393
+1138409
+1138411
+1138427
+1138429
+1138433
+1138441
+1138451
+1138457
+1138483
+1138519
+1138547
+1138559
+1138567
+1138589
+1138591
+1138637
+1138639
+1138649
+1138667
+1138673
+1138679
+1138681
+1138703
+1138717
+1138729
+1138733
+1138741
+1138751
+1138757
+1138771
+1138777
+1138793
+1138829
+1138831
+1138849
+1138853
+1138867
+1138883
+1138901
+1138919
+1138957
+1138961
+1138967
+1138979
+1138987
+1138997
+1138999
+1139003
+1139011
+1139041
+1139059
+1139081
+1139087
+1139123
+1139141
+1139143
+1139147
+1139191
+1139197
+1139227
+1139239
+1139249
+1139263
+1139269
+1139273
+1139287
+1139291
+1139293
+1139309
+1139321
+1139329
+1139353
+1139387
+1139393
+1139407
+1139423
+1139461
+1139471
+1139473
+1139483
+1139491
+1139503
+1139519
+1139521
+1139531
+1139539
+1139549
+1139557
+1139573
+1139587
+1139623
+1139669
+1139681
+1139683
+1139687
+1139713
+1139717
+1139741
+1139771
+1139773
+1139779
+1139807
+1139819
+1139843
+1139849
+1139851
+1139861
+1139863
+1139869
+1139909
+1139911
+1139917
+1139921
+1139951
+1139959
+1139989
+1139993
+1140091
+1140101
+1140103
+1140121
+1140127
+1140131
+1140137
+1140143
+1140157
+1140163
+1140197
+1140203
+1140233
+1140239
+1140253
+1140257
+1140281
+1140289
+1140311
+1140319
+1140341
+1140353
+1140371
+1140379
+1140383
+1140389
+1140413
+1140421
+1140431
+1140439
+1140449
+1140463
+1140487
+1140493
+1140533
+1140539
+1140563
+1140569
+1140571
+1140577
+1140611
+1140619
+1140637
+1140677
+1140679
+1140691
+1140697
+1140709
+1140721
+1140749
+1140787
+1140803
+1140847
+1140851
+1140859
+1140863
+1140871
+1140901
+1140911
+1140913
+1140929
+1140949
+1140959
+1140967
+1140973
+1140983
+1140991
+1141009
+1141013
+1141027
+1141031
+1141033
+1141039
+1141061
+1141067
+1141081
+1141087
+1141093
+1141097
+1141103
+1141109
+1141123
+1141139
+1141171
+1141219
+1141223
+1141229
+1141241
+1141243
+1141253
+1141267
+1141271
+1141277
+1141279
+1141289
+1141291
+1141303
+1141319
+1141321
+1141351
+1141373
+1141379
+1141381
+1141391
+1141417
+1141423
+1141447
+1141453
+1141477
+1141507
+1141523
+1141529
+1141531
+1141541
+1141571
+1141573
+1141597
+1141631
+1141633
+1141649
+1141661
+1141667
+1141717
+1141739
+1141757
+1141769
+1141801
+1141813
+1141837
+1141849
+1141853
+1141867
+1141871
+1141901
+1141909
+1141949
+1141963
+1141967
+1141969
+1141999
+1142003
+1142017
+1142021
+1142039
+1142041
+1142059
+1142069
+1142083
+1142129
+1142131
+1142159
+1142161
+1142171
+1142191
+1142201
+1142233
+1142237
+1142243
+1142263
+1142269
+1142279
+1142287
+1142311
+1142321
+1142333
+1142353
+1142357
+1142359
+1142363
+1142389
+1142423
+1142431
+1142473
+1142483
+1142503
+1142507
+1142509
+1142539
+1142549
+1142569
+1142573
+1142593
+1142599
+1142633
+1142651
+1142677
+1142693
+1142707
+1142737
+1142759
+1142773
+1142777
+1142783
+1142789
+1142809
+1142821
+1142833
+1142837
+1142851
+1142863
+1142881
+1142891
+1142909
+1142917
+1142923
+1142929
+1142941
+1142959
+1142969
+1142971
+1143013
+1143019
+1143047
+1143049
+1143053
+1143061
+1143067
+1143071
+1143073
+1143089
+1143091
+1143101
+1143113
+1143143
+1143161
+1143167
+1143193
+1143217
+1143223
+1143227
+1143239
+1143257
+1143269
+1143281
+1143283
+1143299
+1143341
+1143347
+1143371
+1143391
+1143407
+1143433
+1143469
+1143473
+1143481
+1143487
+1143529
+1143551
+1143563
+1143577
+1143587
+1143589
+1143601
+1143619
+1143643
+1143647
+1143661
+1143679
+1143697
+1143719
+1143749
+1143763
+1143799
+1143803
+1143809
+1143817
+1143829
+1143851
+1143887
+1143893
+1143943
+1143949
+1143953
+1143959
+1143977
+1144001
+1144007
+1144019
+1144037
+1144061
+1144081
+1144103
+1144139
+1144141
+1144147
+1144153
+1144163
+1144183
+1144193
+1144211
+1144223
+1144243
+1144249
+1144261
+1144271
+1144277
+1144279
+1144291
+1144301
+1144327
+1144333
+1144343
+1144349
+1144357
+1144379
+1144393
+1144399
+1144417
+1144439
+1144441
+1144453
+1144477
+1144483
+1144499
+1144511
+1144519
+1144523
+1144529
+1144537
+1144573
+1144589
+1144603
+1144607
+1144621
+1144643
+1144657
+1144667
+1144681
+1144691
+1144721
+1144723
+1144727
+1144739
+1144757
+1144783
+1144823
+1144837
+1144867
+1144877
+1144879
+1144889
+1144901
+1144903
+1144907
+1144919
+1144931
+1144939
+1144951
+1144973
+1144981
+1144993
+1145003
+1145021
+1145057
+1145059
+1145077
+1145093
+1145099
+1145107
+1145129
+1145141
+1145143
+1145173
+1145189
+1145191
+1145203
+1145213
+1145227
+1145269
+1145281
+1145293
+1145299
+1145303
+1145311
+1145323
+1145327
+1145329
+1145359
+1145369
+1145371
+1145381
+1145387
+1145393
+1145411
+1145429
+1145461
+1145479
+1145497
+1145509
+1145533
+1145537
+1145539
+1145593
+1145611
+1145621
+1145623
+1145659
+1145689
+1145693
+1145713
+1145723
+1145741
+1145743
+1145747
+1145773
+1145789
+1145797
+1145801
+1145803
+1145831
+1145843
+1145849
+1145873
+1145897
+1145899
+1145971
+1145983
+1145999
+1146037
+1146043
+1146049
+1146071
+1146083
+1146091
+1146097
+1146133
+1146143
+1146179
+1146217
+1146221
+1146263
+1146281
+1146307
+1146323
+1146329
+1146331
+1146347
+1146367
+1146391
+1146407
+1146413
+1146419
+1146421
+1146461
+1146487
+1146491
+1146511
+1146521
+1146529
+1146533
+1146539
+1146559
+1146569
+1146581
+1146661
+1146671
+1146679
+1146697
+1146703
+1146709
+1146713
+1146727
+1146731
+1146763
+1146773
+1146779
+1146781
+1146787
+1146791
+1146793
+1146797
+1146799
+1146809
+1146823
+1146829
+1146833
+1146841
+1146857
+1146869
+1146877
+1146881
+1146911
+1146917
+1146931
+1146947
+1146953
+1146967
+1146989
+1147009
+1147021
+1147039
+1147043
+1147051
+1147067
+1147073
+1147099
+1147103
+1147117
+1147127
+1147141
+1147169
+1147183
+1147187
+1147189
+1147193
+1147213
+1147229
+1147231
+1147243
+1147247
+1147249
+1147253
+1147271
+1147273
+1147297
+1147301
+1147331
+1147339
+1147351
+1147379
+1147387
+1147409
+1147417
+1147423
+1147427
+1147441
+1147451
+1147453
+1147459
+1147463
+1147499
+1147507
+1147511
+1147561
+1147567
+1147571
+1147579
+1147583
+1147591
+1147613
+1147621
+1147637
+1147639
+1147669
+1147697
+1147709
+1147711
+1147717
+1147739
+1147759
+1147793
+1147819
+1147841
+1147843
+1147889
+1147897
+1147903
+1147921
+1147931
+1147969
+1147981
+1147987
+1147997
+1148029
+1148039
+1148047
+1148087
+1148089
+1148099
+1148111
+1148167
+1148171
+1148177
+1148219
+1148249
+1148261
+1148263
+1148291
+1148293
+1148297
+1148311
+1148327
+1148339
+1148359
+1148377
+1148387
+1148437
+1148453
+1148489
+1148501
+1148507
+1148513
+1148527
+1148549
+1148561
+1148593
+1148599
+1148621
+1148629
+1148647
+1148663
+1148677
+1148681
+1148687
+1148701
+1148713
+1148729
+1148731
+1148737
+1148747
+1148753
+1148761
+1148773
+1148837
+1148839
+1148857
+1148867
+1148879
+1148921
+1148933
+1148941
+1148957
+1148963
+1148971
+1148977
+1148981
+1148989
+1148999
+1149007
+1149017
+1149037
+1149053
+1149059
+1149061
+1149131
+1149151
+1149157
+1149163
+1149167
+1149191
+1149193
+1149209
+1149221
+1149227
+1149229
+1149233
+1149259
+1149283
+1149307
+1149341
+1149349
+1149361
+1149373
+1149403
+1149409
+1149413
+1149427
+1149457
+1149469
+1149487
+1149493
+1149503
+1149509
+1149521
+1149527
+1149539
+1149559
+1149569
+1149581
+1149587
+1149593
+1149601
+1149607
+1149619
+1149637
+1149641
+1149661
+1149679
+1149689
+1149737
+1149749
+1149769
+1149773
+1149779
+1149803
+1149817
+1149857
+1149859
+1149881
+1149887
+1149901
+1149913
+1149917
+1149919
+1149943
+1149971
+1149979
+1149983
+1149989
+1149991
+1150027
+1150031
+1150057
+1150063
+1150073
+1150081
+1150103
+1150117
+1150139
+1150141
+1150151
+1150159
+1150183
+1150187
+1150199
+1150211
+1150213
+1150217
+1150229
+1150243
+1150249
+1150301
+1150309
+1150349
+1150351
+1150363
+1150397
+1150403
+1150411
+1150417
+1150421
+1150423
+1150447
+1150489
+1150511
+1150519
+1150531
+1150537
+1150547
+1150561
+1150579
+1150603
+1150609
+1150631
+1150649
+1150651
+1150657
+1150661
+1150673
+1150687
+1150703
+1150717
+1150729
+1150733
+1150739
+1150741
+1150757
+1150763
+1150769
+1150777
+1150783
+1150823
+1150837
+1150847
+1150861
+1150867
+1150871
+1150873
+1150879
+1150909
+1150921
+1150927
+1150939
+1150949
+1150957
+1150973
+1150987
+1151021
+1151041
+1151047
+1151057
+1151063
+1151069
+1151083
+1151089
+1151113
+1151141
+1151147
+1151159
+1151167
+1151177
+1151179
+1151203
+1151209
+1151221
+1151233
+1151237
+1151243
+1151251
+1151287
+1151303
+1151317
+1151327
+1151333
+1151363
+1151369
+1151383
+1151389
+1151399
+1151401
+1151413
+1151417
+1151431
+1151441
+1151443
+1151471
+1151473
+1151483
+1151519
+1151537
+1151569
+1151581
+1151593
+1151599
+1151603
+1151611
+1151629
+1151639
+1151651
+1151653
+1151659
+1151671
+1151687
+1151701
+1151713
+1151729
+1151737
+1151747
+1151753
+1151779
+1151807
+1151861
+1151873
+1151879
+1151881
+1151911
+1151933
+1151963
+1151981
+1151987
+1151993
+1151999
+1152023
+1152029
+1152037
+1152071
+1152077
+1152079
+1152091
+1152113
+1152119
+1152121
+1152149
+1152157
+1152161
+1152163
+1152181
+1152187
+1152227
+1152233
+1152287
+1152313
+1152317
+1152337
+1152343
+1152367
+1152383
+1152391
+1152397
+1152419
+1152421
+1152493
+1152509
+1152517
+1152523
+1152527
+1152589
+1152623
+1152629
+1152631
+1152637
+1152643
+1152649
+1152653
+1152667
+1152677
+1152707
+1152733
+1152751
+1152757
+1152761
+1152763
+1152773
+1152791
+1152793
+1152799
+1152841
+1152857
+1152881
+1152887
+1152913
+1152917
+1152937
+1152941
+1152979
+1152989
+1152997
+1153001
+1153007
+1153021
+1153027
+1153049
+1153057
+1153063
+1153073
+1153099
+1153109
+1153123
+1153147
+1153153
+1153157
+1153171
+1153177
+1153183
+1153199
+1153211
+1153219
+1153223
+1153237
+1153241
+1153247
+1153249
+1153261
+1153267
+1153277
+1153309
+1153337
+1153343
+1153349
+1153367
+1153393
+1153421
+1153429
+1153441
+1153457
+1153459
+1153463
+1153483
+1153487
+1153511
+1153517
+1153531
+1153553
+1153573
+1153577
+1153589
+1153597
+1153609
+1153613
+1153639
+1153643
+1153681
+1153687
+1153721
+1153729
+1153751
+1153753
+1153759
+1153769
+1153777
+1153799
+1153811
+1153849
+1153853
+1153871
+1153891
+1153921
+1153967
+1153973
+1154017
+1154029
+1154033
+1154039
+1154047
+1154051
+1154119
+1154123
+1154129
+1154159
+1154173
+1154177
+1154183
+1154207
+1154221
+1154227
+1154233
+1154239
+1154243
+1154267
+1154291
+1154297
+1154299
+1154311
+1154323
+1154327
+1154339
+1154353
+1154359
+1154369
+1154401
+1154411
+1154431
+1154449
+1154467
+1154473
+1154509
+1154513
+1154537
+1154539
+1154551
+1154561
+1154563
+1154567
+1154579
+1154581
+1154603
+1154633
+1154639
+1154651
+1154653
+1154707
+1154723
+1154737
+1154753
+1154771
+1154789
+1154819
+1154821
+1154849
+1154863
+1154887
+1154893
+1154897
+1154911
+1154927
+1154947
+1154969
+1154971
+1154987
+1155001
+1155017
+1155019
+1155053
+1155061
+1155071
+1155097
+1155101
+1155107
+1155127
+1155149
+1155151
+1155169
+1155179
+1155211
+1155223
+1155233
+1155239
+1155247
+1155263
+1155293
+1155311
+1155317
+1155373
+1155377
+1155379
+1155403
+1155419
+1155431
+1155437
+1155449
+1155457
+1155461
+1155499
+1155527
+1155529
+1155569
+1155577
+1155601
+1155607
+1155611
+1155613
+1155617
+1155619
+1155629
+1155631
+1155653
+1155659
+1155689
+1155697
+1155701
+1155703
+1155709
+1155733
+1155821
+1155823
+1155829
+1155841
+1155851
+1155859
+1155863
+1155899
+1155901
+1155907
+1155919
+1155923
+1155929
+1155937
+1155943
+1155953
+1155961
+1155967
+1155971
+1155977
+1155997
+1156009
+1156013
+1156019
+1156031
+1156033
+1156037
+1156039
+1156073
+1156079
+1156087
+1156097
+1156109
+1156121
+1156151
+1156157
+1156171
+1156217
+1156229
+1156231
+1156249
+1156261
+1156271
+1156291
+1156297
+1156303
+1156307
+1156327
+1156333
+1156343
+1156367
+1156369
+1156387
+1156403
+1156423
+1156427
+1156429
+1156451
+1156453
+1156457
+1156483
+1156501
+1156523
+1156537
+1156541
+1156553
+1156567
+1156591
+1156613
+1156627
+1156633
+1156637
+1156643
+1156681
+1156699
+1156709
+1156711
+1156721
+1156741
+1156747
+1156751
+1156769
+1156783
+1156801
+1156807
+1156819
+1156823
+1156847
+1156849
+1156873
+1156907
+1156927
+1156949
+1156963
+1156997
+1157011
+1157017
+1157033
+1157053
+1157059
+1157063
+1157069
+1157077
+1157099
+1157111
+1157131
+1157159
+1157171
+1157179
+1157183
+1157201
+1157203
+1157209
+1157213
+1157227
+1157237
+1157243
+1157251
+1157257
+1157263
+1157279
+1157293
+1157327
+1157333
+1157339
+1157341
+1157357
+1157363
+1157369
+1157381
+1157393
+1157413
+1157437
+1157449
+1157489
+1157491
+1157503
+1157531
+1157539
+1157557
+1157579
+1157591
+1157609
+1157621
+1157627
+1157641
+1157669
+1157671
+1157699
+1157701
+1157711
+1157713
+1157729
+1157747
+1157749
+1157759
+1157771
+1157773
+1157791
+1157831
+1157833
+1157837
+1157839
+1157851
+1157869
+1157873
+1157899
+1157929
+1157953
+1157969
+1157977
+1157987
+1158007
+1158011
+1158037
+1158071
+1158077
+1158089
+1158121
+1158133
+1158139
+1158161
+1158187
+1158197
+1158203
+1158217
+1158247
+1158251
+1158263
+1158271
+1158293
+1158301
+1158307
+1158317
+1158323
+1158341
+1158361
+1158383
+1158389
+1158401
+1158407
+1158419
+1158427
+1158457
+1158461
+1158467
+1158473
+1158481
+1158491
+1158523
+1158529
+1158539
+1158541
+1158551
+1158569
+1158587
+1158593
+1158607
+1158611
+1158613
+1158617
+1158629
+1158643
+1158653
+1158673
+1158679
+1158683
+1158713
+1158719
+1158743
+1158757
+1158761
+1158769
+1158799
+1158821
+1158823
+1158827
+1158841
+1158847
+1158863
+1158881
+1158887
+1158923
+1158953
+1158961
+1158977
+1158991
+1159001
+1159007
+1159027
+1159031
+1159049
+1159063
+1159073
+1159079
+1159087
+1159091
+1159127
+1159139
+1159153
+1159187
+1159189
+1159199
+1159201
+1159229
+1159231
+1159241
+1159243
+1159259
+1159271
+1159283
+1159303
+1159337
+1159339
+1159381
+1159393
+1159397
+1159421
+1159423
+1159429
+1159447
+1159463
+1159489
+1159517
+1159523
+1159531
+1159541
+1159577
+1159583
+1159597
+1159601
+1159633
+1159649
+1159661
+1159663
+1159709
+1159721
+1159777
+1159787
+1159789
+1159811
+1159813
+1159843
+1159853
+1159861
+1159877
+1159889
+1159901
+1159909
+1159919
+1159967
+1159973
+1159981
+1159993
+1159997
+1160009
+1160039
+1160041
+1160057
+1160077
+1160111
+1160129
+1160141
+1160147
+1160161
+1160167
+1160179
+1160207
+1160213
+1160219
+1160221
+1160227
+1160251
+1160279
+1160287
+1160297
+1160303
+1160309
+1160317
+1160351
+1160359
+1160363
+1160371
+1160407
+1160413
+1160429
+1160443
+1160447
+1160449
+1160459
+1160473
+1160479
+1160491
+1160503
+1160513
+1160519
+1160543
+1160567
+1160569
+1160581
+1160597
+1160611
+1160639
+1160659
+1160681
+1160689
+1160713
+1160717
+1160749
+1160771
+1160807
+1160813
+1160837
+1160839
+1160867
+1160893
+1160903
+1160911
+1160927
+1160941
+1160953
+1160977
+1160983
+1160987
+1160989
+1161001
+1161007
+1161011
+1161031
+1161037
+1161047
+1161059
+1161077
+1161091
+1161101
+1161107
+1161113
+1161137
+1161143
+1161163
+1161169
+1161203
+1161217
+1161227
+1161233
+1161239
+1161241
+1161263
+1161269
+1161289
+1161313
+1161317
+1161331
+1161343
+1161371
+1161397
+1161401
+1161403
+1161437
+1161439
+1161443
+1161449
+1161463
+1161481
+1161487
+1161493
+1161497
+1161499
+1161509
+1161521
+1161529
+1161547
+1161551
+1161553
+1161581
+1161599
+1161617
+1161619
+1161637
+1161647
+1161659
+1161683
+1161691
+1161703
+1161749
+1161757
+1161761
+1161767
+1161781
+1161791
+1161829
+1161833
+1161841
+1161851
+1161857
+1161871
+1161877
+1161883
+1161893
+1161929
+1161931
+1161947
+1161949
+1161991
+1161997
+1162009
+1162037
+1162043
+1162061
+1162067
+1162079
+1162081
+1162093
+1162099
+1162129
+1162193
+1162219
+1162223
+1162229
+1162243
+1162253
+1162261
+1162277
+1162279
+1162297
+1162303
+1162321
+1162339
+1162361
+1162367
+1162373
+1162417
+1162423
+1162453
+1162463
+1162471
+1162481
+1162493
+1162501
+1162507
+1162529
+1162537
+1162541
+1162543
+1162547
+1162559
+1162571
+1162573
+1162583
+1162589
+1162597
+1162619
+1162621
+1162631
+1162649
+1162663
+1162669
+1162687
+1162691
+1162709
+1162727
+1162729
+1162741
+1162751
+1162753
+1162771
+1162789
+1162793
+1162807
+1162853
+1162859
+1162867
+1162877
+1162879
+1162897
+1162901
+1162907
+1162927
+1162937
+1162943
+1162951
+1162957
+1162961
+1162969
+1162981
+1162991
+1163003
+1163011
+1163017
+1163033
+1163039
+1163069
+1163077
+1163081
+1163083
+1163093
+1163111
+1163119
+1163131
+1163137
+1163143
+1163147
+1163159
+1163167
+1163177
+1163189
+1163207
+1163221
+1163231
+1163233
+1163251
+1163257
+1163263
+1163273
+1163311
+1163329
+1163333
+1163339
+1163353
+1163417
+1163423
+1163431
+1163441
+1163467
+1163473
+1163479
+1163483
+1163507
+1163521
+1163543
+1163551
+1163557
+1163581
+1163587
+1163609
+1163611
+1163627
+1163629
+1163641
+1163651
+1163653
+1163663
+1163671
+1163689
+1163699
+1163711
+1163713
+1163717
+1163719
+1163737
+1163753
+1163759
+1163783
+1163791
+1163821
+1163831
+1163843
+1163849
+1163873
+1163879
+1163891
+1163923
+1163947
+1163969
+1163971
+1163977
+1163989
+1163993
+1164001
+1164029
+1164043
+1164067
+1164071
+1164077
+1164091
+1164101
+1164173
+1164179
+1164181
+1164193
+1164199
+1164203
+1164217
+1164221
+1164253
+1164287
+1164323
+1164343
+1164367
+1164409
+1164413
+1164419
+1164431
+1164433
+1164439
+1164461
+1164479
+1164497
+1164503
+1164511
+1164521
+1164533
+1164557
+1164571
+1164587
+1164589
+1164593
+1164599
+1164607
+1164617
+1164623
+1164629
+1164641
+1164659
+1164671
+1164689
+1164731
+1164749
+1164791
+1164799
+1164803
+1164811
+1164817
+1164829
+1164841
+1164853
+1164859
+1164869
+1164899
+1164937
+1164941
+1164953
+1164967
+1164979
+1164991
+1164997
+1165001
+1165037
+1165049
+1165051
+1165057
+1165069
+1165079
+1165081
+1165103
+1165121
+1165127
+1165139
+1165147
+1165183
+1165187
+1165189
+1165193
+1165201
+1165207
+1165211
+1165217
+1165223
+1165273
+1165279
+1165301
+1165303
+1165349
+1165357
+1165361
+1165363
+1165379
+1165397
+1165399
+1165421
+1165447
+1165453
+1165471
+1165511
+1165529
+1165531
+1165579
+1165583
+1165643
+1165667
+1165691
+1165711
+1165721
+1165727
+1165729
+1165739
+1165751
+1165777
+1165789
+1165799
+1165819
+1165823
+1165831
+1165837
+1165849
+1165861
+1165873
+1165889
+1165903
+1165909
+1165919
+1165921
+1165933
+1165937
+1165943
+1165949
+1165951
+1165991
+1165993
+1166021
+1166027
+1166041
+1166057
+1166083
+1166089
+1166093
+1166101
+1166107
+1166131
+1166141
+1166147
+1166153
+1166213
+1166219
+1166227
+1166237
+1166287
+1166311
+1166323
+1166329
+1166359
+1166383
+1166393
+1166401
+1166411
+1166413
+1166441
+1166453
+1166479
+1166483
+1166497
+1166507
+1166527
+1166531
+1166533
+1166549
+1166563
+1166567
+1166569
+1166579
+1166597
+1166603
+1166609
+1166617
+1166639
+1166663
+1166677
+1166687
+1166713
+1166723
+1166729
+1166741
+1166773
+1166779
+1166801
+1166807
+1166827
+1166833
+1166839
+1166849
+1166857
+1166861
+1166903
+1166927
+1166929
+1166947
+1166953
+1166969
+1166987
+1167011
+1167013
+1167053
+1167059
+1167077
+1167083
+1167139
+1167143
+1167157
+1167167
+1167193
+1167209
+1167211
+1167217
+1167233
+1167241
+1167251
+1167277
+1167289
+1167293
+1167307
+1167317
+1167329
+1167347
+1167349
+1167359
+1167391
+1167409
+1167421
+1167443
+1167449
+1167469
+1167473
+1167539
+1167547
+1167559
+1167571
+1167581
+1167587
+1167599
+1167613
+1167623
+1167637
+1167653
+1167659
+1167667
+1167689
+1167697
+1167701
+1167703
+1167707
+1167709
+1167731
+1167763
+1167773
+1167791
+1167799
+1167811
+1167821
+1167823
+1167833
+1167839
+1167841
+1167847
+1167853
+1167869
+1167889
+1167899
+1167913
+1167919
+1167937
+1167953
+1167973
+1168001
+1168007
+1168031
+1168039
+1168043
+1168093
+1168133
+1168151
+1168169
+1168183
+1168187
+1168231
+1168241
+1168243
+1168247
+1168249
+1168261
+1168301
+1168319
+1168327
+1168337
+1168339
+1168351
+1168357
+1168361
+1168397
+1168399
+1168403
+1168411
+1168451
+1168463
+1168477
+1168487
+1168493
+1168501
+1168523
+1168537
+1168553
+1168619
+1168621
+1168627
+1168637
+1168639
+1168693
+1168711
+1168721
+1168751
+1168757
+1168763
+1168771
+1168789
+1168799
+1168819
+1168829
+1168831
+1168841
+1168847
+1168859
+1168877
+1168879
+1168897
+1168919
+1168927
+1168931
+1168933
+1168957
+1168969
+1168987
+1168997
+1169009
+1169011
+1169017
+1169023
+1169027
+1169029
+1169059
+1169081
+1169131
+1169137
+1169149
+1169171
+1169177
+1169183
+1169191
+1169249
+1169257
+1169261
+1169269
+1169281
+1169293
+1169323
+1169327
+1169341
+1169347
+1169353
+1169369
+1169381
+1169383
+1169401
+1169411
+1169417
+1169419
+1169449
+1169453
+1169473
+1169477
+1169491
+1169513
+1169521
+1169563
+1169587
+1169591
+1169593
+1169603
+1169627
+1169633
+1169647
+1169669
+1169677
+1169683
+1169687
+1169713
+1169741
+1169747
+1169759
+1169761
+1169767
+1169789
+1169801
+1169809
+1169827
+1169873
+1169879
+1169899
+1169929
+1169933
+1169939
+1170007
+1170011
+1170019
+1170023
+1170031
+1170049
+1170061
+1170067
+1170089
+1170107
+1170109
+1170119
+1170131
+1170133
+1170137
+1170139
+1170167
+1170173
+1170193
+1170203
+1170209
+1170233
+1170251
+1170271
+1170277
+1170311
+1170317
+1170329
+1170349
+1170361
+1170373
+1170397
+1170437
+1170443
+1170451
+1170461
+1170487
+1170497
+1170511
+1170517
+1170523
+1170541
+1170553
+1170563
+1170581
+1170583
+1170593
+1170599
+1170607
+1170641
+1170649
+1170661
+1170667
+1170679
+1170683
+1170707
+1170709
+1170713
+1170721
+1170727
+1170751
+1170779
+1170781
+1170787
+1170803
+1170811
+1170821
+1170833
+1170853
+1170857
+1170863
+1170899
+1170941
+1170947
+1170971
+1170979
+1171031
+1171033
+1171039
+1171057
+1171061
+1171069
+1171073
+1171109
+1171111
+1171117
+1171123
+1171133
+1171189
+1171199
+1171201
+1171207
+1171231
+1171241
+1171243
+1171253
+1171259
+1171267
+1171301
+1171319
+1171343
+1171393
+1171399
+1171421
+1171427
+1171447
+1171451
+1171463
+1171477
+1171517
+1171523
+1171529
+1171549
+1171553
+1171561
+1171579
+1171591
+1171601
+1171619
+1171633
+1171637
+1171661
+1171669
+1171699
+1171721
+1171747
+1171771
+1171783
+1171789
+1171801
+1171811
+1171813
+1171823
+1171837
+1171847
+1171867
+1171921
+1171927
+1171931
+1171957
+1171967
+1171969
+1171979
+1171981
+1171991
+1171999
+1172009
+1172021
+1172023
+1172027
+1172029
+1172047
+1172063
+1172069
+1172081
+1172107
+1172111
+1172147
+1172179
+1172207
+1172233
+1172257
+1172261
+1172273
+1172279
+1172317
+1172329
+1172351
+1172377
+1172393
+1172401
+1172407
+1172411
+1172417
+1172429
+1172443
+1172447
+1172461
+1172467
+1172491
+1172497
+1172503
+1172531
+1172533
+1172537
+1172539
+1172543
+1172573
+1172579
+1172657
+1172659
+1172663
+1172671
+1172681
+1172683
+1172687
+1172713
+1172749
+1172777
+1172783
+1172797
+1172803
+1172807
+1172819
+1172833
+1172867
+1172893
+1172903
+1172921
+1172929
+1172933
+1172939
+1172953
+1172957
+1172959
+1172981
+1172993
+1173001
+1173013
+1173043
+1173059
+1173101
+1173121
+1173127
+1173157
+1173163
+1173173
+1173181
+1173191
+1173199
+1173223
+1173239
+1173259
+1173281
+1173283
+1173301
+1173343
+1173349
+1173373
+1173397
+1173401
+1173407
+1173433
+1173439
+1173463
+1173481
+1173511
+1173521
+1173539
+1173541
+1173551
+1173553
+1173581
+1173583
+1173587
+1173589
+1173593
+1173617
+1173631
+1173709
+1173743
+1173749
+1173779
+1173787
+1173803
+1173811
+1173827
+1173829
+1173841
+1173853
+1173881
+1173883
+1173917
+1173937
+1173941
+1173947
+1173959
+1173961
+1173979
+1173983
+1174021
+1174027
+1174031
+1174049
+1174073
+1174079
+1174091
+1174093
+1174099
+1174141
+1174163
+1174171
+1174193
+1174211
+1174213
+1174231
+1174237
+1174247
+1174259
+1174267
+1174273
+1174301
+1174307
+1174319
+1174331
+1174337
+1174339
+1174361
+1174387
+1174399
+1174423
+1174441
+1174451
+1174463
+1174469
+1174477
+1174487
+1174489
+1174499
+1174507
+1174519
+1174531
+1174549
+1174571
+1174583
+1174601
+1174603
+1174619
+1174627
+1174669
+1174673
+1174681
+1174687
+1174709
+1174721
+1174727
+1174739
+1174759
+1174763
+1174769
+1174781
+1174783
+1174793
+1174801
+1174829
+1174847
+1174879
+1174883
+1174891
+1174897
+1174913
+1174919
+1174949
+1174951
+1174969
+1174973
+1175003
+1175021
+1175029
+1175039
+1175071
+1175077
+1175099
+1175107
+1175123
+1175143
+1175149
+1175173
+1175191
+1175219
+1175243
+1175249
+1175257
+1175267
+1175297
+1175351
+1175353
+1175371
+1175387
+1175389
+1175407
+1175411
+1175413
+1175417
+1175437
+1175467
+1175479
+1175483
+1175497
+1175509
+1175521
+1175561
+1175569
+1175579
+1175591
+1175617
+1175623
+1175627
+1175651
+1175659
+1175677
+1175683
+1175687
+1175711
+1175717
+1175723
+1175729
+1175743
+1175767
+1175789
+1175791
+1175803
+1175807
+1175813
+1175819
+1175821
+1175833
+1175849
+1175857
+1175887
+1175899
+1175927
+1175939
+1175953
+1175959
+1175963
+1175969
+1175981
+1175989
+1176023
+1176029
+1176031
+1176041
+1176061
+1176083
+1176089
+1176113
+1176121
+1176127
+1176137
+1176163
+1176173
+1176187
+1176191
+1176221
+1176223
+1176239
+1176277
+1176293
+1176323
+1176353
+1176361
+1176367
+1176377
+1176391
+1176397
+1176403
+1176407
+1176421
+1176433
+1176449
+1176463
+1176509
+1176521
+1176529
+1176533
+1176557
+1176583
+1176589
+1176599
+1176601
+1176607
+1176631
+1176641
+1176647
+1176671
+1176673
+1176701
+1176709
+1176713
+1176737
+1176767
+1176779
+1176787
+1176793
+1176797
+1176811
+1176827
+1176869
+1176871
+1176881
+1176899
+1176911
+1176937
+1176943
+1176947
+1176949
+1176983
+1177009
+1177019
+1177027
+1177037
+1177067
+1177073
+1177087
+1177093
+1177103
+1177129
+1177147
+1177153
+1177157
+1177159
+1177171
+1177181
+1177201
+1177207
+1177219
+1177223
+1177237
+1177243
+1177247
+1177277
+1177291
+1177331
+1177387
+1177399
+1177427
+1177433
+1177447
+1177453
+1177459
+1177481
+1177489
+1177499
+1177507
+1177513
+1177529
+1177541
+1177543
+1177549
+1177571
+1177609
+1177613
+1177619
+1177621
+1177637
+1177651
+1177667
+1177681
+1177697
+1177711
+1177717
+1177723
+1177733
+1177739
+1177741
+1177751
+1177763
+1177769
+1177801
+1177843
+1177859
+1177873
+1177877
+1177901
+1177919
+1177921
+1177933
+1177949
+1177987
+1177997
+1178003
+1178017
+1178033
+1178039
+1178041
+1178059
+1178069
+1178087
+1178101
+1178113
+1178123
+1178131
+1178141
+1178159
+1178161
+1178167
+1178173
+1178189
+1178197
+1178201
+1178207
+1178213
+1178227
+1178231
+1178237
+1178239
+1178263
+1178269
+1178273
+1178297
+1178347
+1178363
+1178369
+1178371
+1178377
+1178393
+1178417
+1178447
+1178461
+1178479
+1178483
+1178521
+1178533
+1178537
+1178549
+1178557
+1178591
+1178609
+1178621
+1178623
+1178633
+1178641
+1178659
+1178669
+1178689
+1178699
+1178701
+1178707
+1178711
+1178717
+1178719
+1178743
+1178753
+1178767
+1178803
+1178809
+1178833
+1178843
+1178851
+1178887
+1178897
+1178909
+1178921
+1178927
+1178939
+1178953
+1178959
+1178963
+1178971
+1178977
+1178981
+1178993
+1179011
+1179019
+1179047
+1179109
+1179127
+1179149
+1179151
+1179173
+1179179
+1179193
+1179203
+1179223
+1179251
+1179253
+1179259
+1179263
+1179281
+1179287
+1179289
+1179293
+1179317
+1179319
+1179323
+1179329
+1179331
+1179337
+1179379
+1179383
+1179389
+1179403
+1179413
+1179419
+1179421
+1179427
+1179467
+1179491
+1179499
+1179527
+1179547
+1179551
+1179553
+1179569
+1179571
+1179583
+1179589
+1179599
+1179637
+1179641
+1179649
+1179677
+1179733
+1179751
+1179757
+1179779
+1179793
+1179797
+1179839
+1179847
+1179853
+1179859
+1179863
+1179869
+1179883
+1179901
+1179907
+1179929
+1179947
+1179961
+1179973
+1179977
+1179979
+1179989
+1179991
+1180009
+1180013
+1180019
+1180027
+1180031
+1180043
+1180057
+1180073
+1180087
+1180093
+1180099
+1180111
+1180117
+1180121
+1180133
+1180141
+1180159
+1180171
+1180219
+1180237
+1180241
+1180243
+1180247
+1180253
+1180279
+1180303
+1180313
+1180351
+1180369
+1180373
+1180381
+1180391
+1180397
+1180409
+1180423
+1180427
+1180447
+1180477
+1180493
+1180507
+1180519
+1180537
+1180547
+1180549
+1180577
+1180591
+1180631
+1180637
+1180643
+1180657
+1180661
+1180691
+1180693
+1180709
+1180721
+1180723
+1180727
+1180733
+1180757
+1180771
+1180799
+1180807
+1180811
+1180819
+1180847
+1180849
+1180853
+1180859
+1180873
+1180877
+1180891
+1180897
+1180901
+1180903
+1180913
+1180931
+1180937
+1180951
+1180957
+1180961
+1180979
+1180987
+1180997
+1181017
+1181023
+1181039
+1181051
+1181053
+1181057
+1181093
+1181099
+1181137
+1181149
+1181153
+1181171
+1181183
+1181197
+1181203
+1181209
+1181237
+1181263
+1181267
+1181269
+1181281
+1181293
+1181309
+1181311
+1181321
+1181329
+1181407
+1181413
+1181437
+1181443
+1181461
+1181471
+1181473
+1181501
+1181507
+1181519
+1181527
+1181549
+1181561
+1181563
+1181573
+1181581
+1181611
+1181617
+1181633
+1181647
+1181681
+1181699
+1181701
+1181723
+1181729
+1181731
+1181759
+1181767
+1181771
+1181773
+1181777
+1181839
+1181879
+1181881
+1181893
+1181897
+1181911
+1181923
+1181927
+1181963
+1181969
+1181981
+1181987
+1182007
+1182019
+1182023
+1182031
+1182043
+1182073
+1182121
+1182133
+1182143
+1182157
+1182211
+1182253
+1182277
+1182281
+1182283
+1182287
+1182289
+1182331
+1182341
+1182343
+1182347
+1182353
+1182383
+1182397
+1182403
+1182413
+1182421
+1182431
+1182437
+1182439
+1182449
+1182451
+1182463
+1182479
+1182487
+1182491
+1182509
+1182521
+1182539
+1182547
+1182581
+1182593
+1182611
+1182659
+1182677
+1182679
+1182689
+1182691
+1182697
+1182703
+1182737
+1182739
+1182757
+1182763
+1182767
+1182781
+1182787
+1182791
+1182817
+1182847
+1182869
+1182889
+1182893
+1182901
+1182917
+1182919
+1182947
+1182953
+1182967
+1182989
+1183003
+1183027
+1183031
+1183033
+1183057
+1183079
+1183093
+1183103
+1183121
+1183123
+1183141
+1183151
+1183157
+1183159
+1183163
+1183181
+1183199
+1183201
+1183211
+1183213
+1183241
+1183261
+1183267
+1183271
+1183277
+1183279
+1183333
+1183337
+1183349
+1183381
+1183393
+1183397
+1183409
+1183411
+1183423
+1183447
+1183451
+1183471
+1183477
+1183531
+1183537
+1183541
+1183561
+1183571
+1183579
+1183597
+1183607
+1183613
+1183687
+1183697
+1183709
+1183723
+1183729
+1183733
+1183739
+1183753
+1183759
+1183769
+1183771
+1183781
+1183799
+1183811
+1183813
+1183837
+1183843
+1183877
+1183913
+1183933
+1183939
+1183943
+1183951
+1183961
+1183969
+1183981
+1183993
+1183997
+1184003
+1184011
+1184047
+1184059
+1184069
+1184077
+1184081
+1184083
+1184093
+1184119
+1184123
+1184129
+1184143
+1184149
+1184171
+1184173
+1184207
+1184219
+1184243
+1184269
+1184291
+1184299
+1184303
+1184317
+1184329
+1184347
+1184357
+1184363
+1184369
+1184377
+1184399
+1184411
+1184413
+1184423
+1184429
+1184453
+1184459
+1184461
+1184471
+1184473
+1184483
+1184489
+1184507
+1184527
+1184537
+1184539
+1184549
+1184551
+1184587
+1184609
+1184653
+1184663
+1184671
+1184683
+1184731
+1184741
+1184749
+1184759
+1184767
+1184791
+1184797
+1184837
+1184839
+1184867
+1184881
+1184893
+1184903
+1184923
+1184927
+1184933
+1184947
+1184957
+1184959
+1184987
+1184993
+1185013
+1185017
+1185071
+1185077
+1185089
+1185103
+1185109
+1185113
+1185127
+1185131
+1185179
+1185181
+1185241
+1185281
+1185287
+1185299
+1185307
+1185313
+1185319
+1185329
+1185337
+1185343
+1185361
+1185367
+1185377
+1185383
+1185389
+1185403
+1185439
+1185463
+1185469
+1185493
+1185497
+1185511
+1185523
+1185551
+1185559
+1185577
+1185589
+1185601
+1185617
+1185623
+1185637
+1185643
+1185647
+1185659
+1185661
+1185671
+1185677
+1185683
+1185689
+1185697
+1185703
+1185707
+1185721
+1185749
+1185787
+1185791
+1185797
+1185817
+1185823
+1185827
+1185851
+1185859
+1185871
+1185883
+1185889
+1185893
+1185907
+1185929
+1185931
+1185953
+1185979
+1185997
+1186001
+1186033
+1186049
+1186051
+1186057
+1186063
+1186067
+1186079
+1186099
+1186111
+1186117
+1186121
+1186127
+1186147
+1186169
+1186181
+1186217
+1186231
+1186249
+1186259
+1186291
+1186321
+1186337
+1186349
+1186351
+1186373
+1186397
+1186403
+1186411
+1186439
+1186441
+1186489
+1186517
+1186519
+1186541
+1186573
+1186589
+1186597
+1186621
+1186631
+1186657
+1186673
+1186693
+1186697
+1186699
+1186739
+1186741
+1186751
+1186769
+1186789
+1186807
+1186811
+1186813
+1186837
+1186841
+1186847
+1186879
+1186931
+1186937
+1186963
+1186973
+1186981
+1187003
+1187009
+1187023
+1187047
+1187051
+1187089
+1187107
+1187111
+1187117
+1187141
+1187159
+1187167
+1187189
+1187201
+1187227
+1187233
+1187239
+1187261
+1187279
+1187287
+1187309
+1187311
+1187317
+1187321
+1187339
+1187341
+1187353
+1187357
+1187363
+1187369
+1187383
+1187387
+1187411
+1187413
+1187419
+1187429
+1187453
+1187471
+1187479
+1187489
+1187507
+1187509
+1187539
+1187551
+1187561
+1187567
+1187587
+1187623
+1187629
+1187639
+1187657
+1187687
+1187689
+1187699
+1187701
+1187707
+1187717
+1187723
+1187741
+1187749
+1187761
+1187801
+1187803
+1187819
+1187821
+1187833
+1187839
+1187863
+1187867
+1187873
+1187887
+1187897
+1187911
+1187933
+1187939
+1187941
+1187947
+1187981
+1187993
+1187999
+1188001
+1188007
+1188017
+1188029
+1188037
+1188041
+1188049
+1188059
+1188071
+1188073
+1188149
+1188151
+1188167
+1188169
+1188179
+1188197
+1188223
+1188227
+1188233
+1188247
+1188259
+1188263
+1188269
+1188277
+1188287
+1188289
+1188293
+1188307
+1188353
+1188359
+1188361
+1188377
+1188389
+1188409
+1188413
+1188457
+1188491
+1188511
+1188527
+1188529
+1188553
+1188557
+1188559
+1188581
+1188587
+1188601
+1188613
+1188619
+1188637
+1188653
+1188661
+1188667
+1188679
+1188689
+1188721
+1188727
+1188731
+1188763
+1188769
+1188787
+1188839
+1188841
+1188851
+1188857
+1188899
+1188917
+1188931
+1188937
+1188947
+1188973
+1188977
+1188991
+1189003
+1189007
+1189021
+1189033
+1189057
+1189061
+1189063
+1189093
+1189109
+1189121
+1189127
+1189151
+1189159
+1189163
+1189171
+1189189
+1189193
+1189213
+1189219
+1189231
+1189271
+1189277
+1189301
+1189313
+1189327
+1189333
+1189339
+1189361
+1189387
+1189403
+1189417
+1189453
+1189469
+1189471
+1189481
+1189483
+1189553
+1189567
+1189577
+1189579
+1189603
+1189607
+1189613
+1189621
+1189627
+1189631
+1189633
+1189637
+1189649
+1189651
+1189673
+1189703
+1189709
+1189717
+1189751
+1189757
+1189759
+1189763
+1189789
+1189801
+1189807
+1189823
+1189831
+1189843
+1189871
+1189879
+1189891
+1189897
+1189901
+1189907
+1189919
+1189933
+1189967
+1189999
+1190011
+1190023
+1190029
+1190041
+1190047
+1190069
+1190071
+1190081
+1190143
+1190149
+1190159
+1190177
+1190201
+1190237
+1190249
+1190261
+1190263
+1190279
+1190291
+1190311
+1190347
+1190359
+1190381
+1190417
+1190429
+1190447
+1190467
+1190473
+1190477
+1190489
+1190491
+1190507
+1190509
+1190513
+1190533
+1190573
+1190587
+1190591
+1190611
+1190633
+1190639
+1190647
+1190671
+1190699
+1190701
+1190719
+1190723
+1190737
+1190743
+1190753
+1190773
+1190789
+1190807
+1190809
+1190821
+1190831
+1190837
+1190851
+1190873
+1190897
+1190899
+1190911
+1190923
+1190929
+1190947
+1190951
+1190953
+1190983
+1191011
+1191013
+1191019
+1191031
+1191061
+1191077
+1191079
+1191089
+1191097
+1191103
+1191107
+1191109
+1191119
+1191131
+1191149
+1191163
+1191187
+1191191
+1191199
+1191209
+1191221
+1191247
+1191277
+1191283
+1191293
+1191301
+1191313
+1191341
+1191347
+1191353
+1191373
+1191409
+1191431
+1191439
+1191457
+1191481
+1191499
+1191529
+1191539
+1191551
+1191559
+1191563
+1191571
+1191577
+1191601
+1191611
+1191613
+1191637
+1191643
+1191667
+1191679
+1191691
+1191703
+1191719
+1191727
+1191731
+1191739
+1191761
+1191767
+1191769
+1191781
+1191793
+1191809
+1191821
+1191833
+1191847
+1191899
+1191923
+1191937
+1191941
+1191947
+1191973
+1191979
+1191991
+1192013
+1192027
+1192039
+1192069
+1192073
+1192097
+1192099
+1192109
+1192127
+1192141
+1192151
+1192153
+1192171
+1192181
+1192183
+1192187
+1192199
+1192201
+1192207
+1192211
+1192241
+1192253
+1192259
+1192267
+1192271
+1192327
+1192337
+1192339
+1192349
+1192357
+1192369
+1192391
+1192409
+1192417
+1192423
+1192427
+1192453
+1192469
+1192483
+1192517
+1192549
+1192559
+1192561
+1192571
+1192579
+1192589
+1192603
+1192651
+1192673
+1192679
+1192699
+1192717
+1192721
+1192753
+1192781
+1192811
+1192817
+1192823
+1192831
+1192837
+1192847
+1192853
+1192879
+1192883
+1192889
+1192897
+1192903
+1192909
+1192927
+1192937
+1192951
+1192967
+1192969
+1193011
+1193021
+1193041
+1193047
+1193057
+1193081
+1193107
+1193119
+1193123
+1193131
+1193149
+1193161
+1193173
+1193183
+1193209
+1193233
+1193237
+1193239
+1193243
+1193261
+1193267
+1193299
+1193303
+1193329
+1193351
+1193363
+1193369
+1193399
+1193429
+1193431
+1193443
+1193459
+1193473
+1193483
+1193497
+1193501
+1193503
+1193513
+1193537
+1193557
+1193567
+1193573
+1193603
+1193609
+1193617
+1193653
+1193663
+1193683
+1193693
+1193701
+1193707
+1193711
+1193729
+1193737
+1193741
+1193743
+1193761
+1193767
+1193771
+1193783
+1193821
+1193833
+1193837
+1193839
+1193849
+1193867
+1193869
+1193887
+1193909
+1193911
+1193939
+1193947
+1193963
+1193971
+1193989
+1193993
+1194019
+1194023
+1194031
+1194041
+1194047
+1194059
+1194103
+1194157
+1194161
+1194163
+1194203
+1194209
+1194211
+1194241
+1194251
+1194253
+1194269
+1194293
+1194311
+1194329
+1194341
+1194343
+1194373
+1194379
+1194383
+1194407
+1194421
+1194439
+1194443
+1194449
+1194463
+1194493
+1194517
+1194521
+1194541
+1194547
+1194553
+1194581
+1194593
+1194601
+1194631
+1194659
+1194667
+1194671
+1194679
+1194707
+1194727
+1194731
+1194733
+1194751
+1194757
+1194763
+1194769
+1194797
+1194799
+1194803
+1194821
+1194847
+1194857
+1194877
+1194883
+1194889
+1194899
+1194901
+1194917
+1194923
+1194959
+1194961
+1194971
+1194979
+1194997
+1195021
+1195031
+1195037
+1195039
+1195067
+1195091
+1195121
+1195123
+1195127
+1195141
+1195153
+1195169
+1195171
+1195189
+1195193
+1195217
+1195223
+1195231
+1195237
+1195247
+1195277
+1195291
+1195361
+1195387
+1195421
+1195429
+1195459
+1195463
+1195477
+1195483
+1195489
+1195501
+1195543
+1195547
+1195549
+1195561
+1195567
+1195573
+1195589
+1195669
+1195673
+1195679
+1195681
+1195693
+1195703
+1195709
+1195721
+1195723
+1195741
+1195751
+1195759
+1195771
+1195801
+1195807
+1195811
+1195837
+1195849
+1195891
+1195897
+1195907
+1195919
+1195927
+1195937
+1195979
+1195991
+1196003
+1196029
+1196033
+1196059
+1196077
+1196087
+1196089
+1196119
+1196123
+1196141
+1196177
+1196191
+1196201
+1196219
+1196227
+1196231
+1196267
+1196269
+1196281
+1196287
+1196309
+1196323
+1196329
+1196347
+1196357
+1196359
+1196399
+1196401
+1196413
+1196431
+1196471
+1196473
+1196491
+1196501
+1196509
+1196513
+1196519
+1196521
+1196537
+1196539
+1196593
+1196597
+1196603
+1196609
+1196633
+1196653
+1196683
+1196707
+1196717
+1196719
+1196729
+1196731
+1196773
+1196809
+1196813
+1196837
+1196843
+1196857
+1196861
+1196863
+1196869
+1196873
+1196891
+1196911
+1196927
+1196939
+1196959
+1196999
+1197011
+1197013
+1197017
+1197029
+1197037
+1197041
+1197059
+1197067
+1197073
+1197103
+1197107
+1197113
+1197121
+1197167
+1197181
+1197187
+1197193
+1197197
+1197199
+1197211
+1197221
+1197239
+1197257
+1197263
+1197269
+1197277
+1197281
+1197289
+1197307
+1197337
+1197347
+1197349
+1197353
+1197359
+1197367
+1197389
+1197407
+1197409
+1197433
+1197451
+1197467
+1197473
+1197479
+1197509
+1197527
+1197571
+1197577
+1197601
+1197617
+1197619
+1197631
+1197649
+1197697
+1197709
+1197739
+1197743
+1197751
+1197767
+1197799
+1197821
+1197827
+1197829
+1197881
+1197901
+1197907
+1197923
+1197929
+1197941
+1197947
+1197953
+1197971
+1197997
+1198013
+1198033
+1198037
+1198049
+1198051
+1198063
+1198069
+1198073
+1198081
+1198103
+1198123
+1198133
+1198151
+1198157
+1198187
+1198189
+1198201
+1198217
+1198229
+1198247
+1198259
+1198261
+1198289
+1198291
+1198297
+1198303
+1198321
+1198343
+1198361
+1198363
+1198397
+1198399
+1198403
+1198411
+1198427
+1198433
+1198447
+1198451
+1198469
+1198481
+1198511
+1198513
+1198523
+1198537
+1198583
+1198607
+1198609
+1198621
+1198643
+1198651
+1198661
+1198669
+1198679
+1198699
+1198727
+1198751
+1198793
+1198811
+1198819
+1198849
+1198853
+1198861
+1198867
+1198877
+1198903
+1198927
+1198949
+1198973
+1198979
+1198991
+1198997
+1198999
+1199039
+1199047
+1199069
+1199083
+1199087
+1199089
+1199117
+1199123
+1199131
+1199137
+1199167
+1199183
+1199189
+1199203
+1199257
+1199309
+1199329
+1199351
+1199357
+1199369
+1199371
+1199377
+1199389
+1199417
+1199423
+1199437
+1199441
+1199447
+1199459
+1199461
+1199467
+1199477
+1199491
+1199507
+1199509
+1199521
+1199551
+1199557
+1199573
+1199587
+1199591
+1199593
+1199617
+1199621
+1199623
+1199629
+1199659
+1199663
+1199677
+1199683
+1199689
+1199699
+1199711
+1199719
+1199767
+1199777
+1199789
+1199801
+1199813
+1199819
+1199833
+1199839
+1199851
+1199857
+1199879
+1199893
+1199899
+1199909
+1199923
+1199929
+1199953
+1199969
+1199993
+1199999
+1200007
+1200061
+1200077
+1200083
+1200109
+1200139
+1200161
+1200167
+1200179
+1200187
+1200191
+1200233
+1200253
+1200307
+1200313
+1200323
+1200341
+1200349
+1200359
+1200361
+1200371
+1200373
+1200377
+1200383
+1200389
+1200403
+1200443
+1200449
+1200461
+1200467
+1200491
+1200499
+1200509
+1200527
+1200581
+1200583
+1200607
+1200611
+1200637
+1200643
+1200673
+1200679
+1200691
+1200697
+1200701
+1200739
+1200751
+1200779
+1200799
+1200809
+1200811
+1200833
+1200839
+1200869
+1200883
+1200887
+1200889
+1200917
+1200929
+1200937
+1200943
+1200949
+1200959
+1200989
+1201001
+1201003
+1201019
+1201021
+1201027
+1201043
+1201049
+1201061
+1201073
+1201087
+1201097
+1201103
+1201111
+1201117
+1201141
+1201153
+1201163
+1201171
+1201183
+1201201
+1201217
+1201229
+1201241
+1201247
+1201261
+1201283
+1201307
+1201309
+1201327
+1201337
+1201381
+1201439
+1201469
+1201481
+1201483
+1201489
+1201493
+1201513
+1201523
+1201531
+1201553
+1201559
+1201567
+1201583
+1201601
+1201633
+1201637
+1201643
+1201687
+1201691
+1201699
+1201703
+1201709
+1201729
+1201787
+1201793
+1201813
+1201829
+1201841
+1201843
+1201853
+1201873
+1201909
+1201919
+1201939
+1201961
+1201969
+1201999
+1202009
+1202017
+1202023
+1202027
+1202029
+1202041
+1202057
+1202063
+1202077
+1202081
+1202099
+1202107
+1202129
+1202147
+1202153
+1202183
+1202191
+1202219
+1202221
+1202231
+1202239
+1202251
+1202261
+1202269
+1202293
+1202303
+1202317
+1202321
+1202329
+1202347
+1202363
+1202387
+1202423
+1202429
+1202437
+1202447
+1202471
+1202473
+1202477
+1202483
+1202497
+1202501
+1202507
+1202549
+1202561
+1202569
+1202603
+1202609
+1202627
+1202629
+1202633
+1202689
+1202741
+1202743
+1202771
+1202779
+1202783
+1202791
+1202807
+1202813
+1202819
+1202827
+1202837
+1202843
+1202849
+1202857
+1202863
+1202867
+1202881
+1202939
+1202959
+1202963
+1202977
+1202987
+1203019
+1203067
+1203077
+1203101
+1203121
+1203127
+1203149
+1203151
+1203161
+1203179
+1203193
+1203211
+1203217
+1203221
+1203229
+1203233
+1203263
+1203283
+1203287
+1203329
+1203331
+1203343
+1203359
+1203361
+1203421
+1203437
+1203443
+1203457
+1203463
+1203467
+1203487
+1203493
+1203509
+1203533
+1203557
+1203571
+1203581
+1203607
+1203611
+1203619
+1203641
+1203661
+1203667
+1203689
+1203691
+1203731
+1203733
+1203739
+1203757
+1203773
+1203779
+1203791
+1203793
+1203799
+1203809
+1203817
+1203827
+1203841
+1203863
+1203887
+1203893
+1203899
+1203901
+1203913
+1203919
+1203929
+1203931
+1203941
+1203949
+1203953
+1203959
+1203971
+1204003
+1204019
+1204037
+1204097
+1204103
+1204117
+1204139
+1204141
+1204153
+1204169
+1204171
+1204183
+1204207
+1204219
+1204243
+1204271
+1204279
+1204289
+1204309
+1204337
+1204363
+1204369
+1204397
+1204409
+1204421
+1204447
+1204451
+1204453
+1204471
+1204477
+1204493
+1204507
+1204519
+1204529
+1204561
+1204583
+1204597
+1204607
+1204613
+1204633
+1204649
+1204669
+1204681
+1204699
+1204711
+1204729
+1204741
+1204781
+1204783
+1204787
+1204813
+1204823
+1204859
+1204871
+1204873
+1204883
+1204891
+1204937
+1204967
+1204969
+1204981
+1205027
+1205047
+1205081
+1205089
+1205093
+1205101
+1205117
+1205119
+1205123
+1205159
+1205173
+1205179
+1205219
+1205231
+1205251
+1205257
+1205287
+1205293
+1205339
+1205377
+1205387
+1205411
+1205437
+1205447
+1205459
+1205467
+1205471
+1205473
+1205489
+1205513
+1205527
+1205537
+1205539
+1205549
+1205557
+1205563
+1205609
+1205627
+1205629
+1205639
+1205647
+1205653
+1205663
+1205669
+1205681
+1205693
+1205707
+1205713
+1205717
+1205731
+1205749
+1205753
+1205767
+1205773
+1205779
+1205819
+1205843
+1205891
+1205899
+1205903
+1205921
+1205947
+1205951
+1205969
+1205977
+1205999
+1206013
+1206017
+1206043
+1206053
+1206059
+1206061
+1206071
+1206113
+1206131
+1206151
+1206157
+1206169
+1206173
+1206181
+1206187
+1206199
+1206209
+1206223
+1206229
+1206259
+1206263
+1206277
+1206307
+1206319
+1206323
+1206341
+1206347
+1206353
+1206377
+1206383
+1206391
+1206407
+1206433
+1206449
+1206461
+1206467
+1206479
+1206497
+1206529
+1206539
+1206553
+1206563
+1206577
+1206581
+1206587
+1206619
+1206637
+1206679
+1206683
+1206691
+1206701
+1206703
+1206713
+1206721
+1206731
+1206743
+1206749
+1206761
+1206767
+1206769
+1206773
+1206781
+1206791
+1206809
+1206827
+1206841
+1206869
+1206941
+1206973
+1206979
+1207001
+1207027
+1207033
+1207039
+1207043
+1207079
+1207093
+1207097
+1207111
+1207117
+1207121
+1207123
+1207133
+1207147
+1207159
+1207211
+1207223
+1207237
+1207249
+1207259
+1207267
+1207291
+1207307
+1207309
+1207313
+1207319
+1207331
+1207343
+1207351
+1207363
+1207379
+1207387
+1207403
+1207417
+1207429
+1207439
+1207441
+1207447
+1207489
+1207501
+1207511
+1207519
+1207529
+1207537
+1207597
+1207603
+1207627
+1207649
+1207681
+1207699
+1207721
+1207727
+1207751
+1207757
+1207769
+1207841
+1207883
+1207903
+1207909
+1207919
+1207933
+1207957
+1207961
+1207979
+1207981
+1208017
+1208021
+1208023
+1208027
+1208033
+1208057
+1208069
+1208089
+1208113
+1208117
+1208131
+1208149
+1208159
+1208177
+1208189
+1208209
+1208219
+1208237
+1208239
+1208243
+1208269
+1208279
+1208297
+1208299
+1208303
+1208341
+1208371
+1208387
+1208399
+1208407
+1208413
+1208423
+1208447
+1208461
+1208507
+1208521
+1208561
+1208569
+1208573
+1208591
+1208651
+1208657
+1208663
+1208677
+1208681
+1208689
+1208707
+1208731
+1208741
+1208777
+1208789
+1208791
+1208797
+1208813
+1208821
+1208833
+1208843
+1208849
+1208863
+1208873
+1208927
+1208939
+1208941
+1208957
+1209007
+1209017
+1209029
+1209053
+1209073
+1209079
+1209083
+1209107
+1209113
+1209121
+1209139
+1209151
+1209163
+1209181
+1209191
+1209199
+1209209
+1209223
+1209233
+1209239
+1209251
+1209269
+1209277
+1209281
+1209287
+1209311
+1209337
+1209347
+1209353
+1209367
+1209379
+1209427
+1209437
+1209457
+1209463
+1209469
+1209487
+1209491
+1209517
+1209539
+1209557
+1209563
+1209577
+1209583
+1209587
+1209617
+1209629
+1209631
+1209647
+1209671
+1209697
+1209707
+1209709
+1209739
+1209757
+1209763
+1209773
+1209779
+1209781
+1209809
+1209811
+1209821
+1209841
+1209853
+1209877
+1209883
+1209889
+1209931
+1209947
+1209959
+1209973
+1209979
+1210003
+1210019
+1210021
+1210037
+1210039
+1210049
+1210051
+1210067
+1210093
+1210103
+1210123
+1210127
+1210151
+1210163
+1210169
+1210177
+1210193
+1210207
+1210211
+1210229
+1210241
+1210259
+1210289
+1210351
+1210369
+1210379
+1210387
+1210393
+1210397
+1210399
+1210403
+1210409
+1210411
+1210427
+1210439
+1210441
+1210459
+1210477
+1210483
+1210499
+1210523
+1210541
+1210549
+1210597
+1210609
+1210613
+1210631
+1210637
+1210639
+1210711
+1210717
+1210747
+1210753
+1210777
+1210787
+1210793
+1210799
+1210801
+1210817
+1210819
+1210831
+1210843
+1210871
+1210873
+1210877
+1210879
+1210883
+1210897
+1210903
+1210921
+1210933
+1210939
+1210949
+1210967
+1210987
+1210999
+1211027
+1211039
+1211051
+1211057
+1211059
+1211081
+1211083
+1211087
+1211141
+1211167
+1211179
+1211183
+1211191
+1211207
+1211227
+1211261
+1211279
+1211281
+1211303
+1211311
+1211333
+1211339
+1211381
+1211389
+1211393
+1211407
+1211411
+1211423
+1211443
+1211477
+1211489
+1211501
+1211503
+1211531
+1211537
+1211543
+1211549
+1211563
+1211593
+1211597
+1211599
+1211603
+1211621
+1211629
+1211647
+1211653
+1211657
+1211659
+1211669
+1211677
+1211689
+1211701
+1211719
+1211723
+1211731
+1211737
+1211741
+1211761
+1211767
+1211779
+1211789
+1211797
+1211807
+1211813
+1211827
+1211843
+1211857
+1211863
+1211897
+1211911
+1211921
+1211923
+1211933
+1211983
+1211999
+1212011
+1212017
+1212023
+1212047
+1212053
+1212061
+1212103
+1212119
+1212121
+1212149
+1212173
+1212187
+1212191
+1212199
+1212221
+1212227
+1212241
+1212251
+1212259
+1212283
+1212293
+1212301
+1212319
+1212331
+1212347
+1212361
+1212373
+1212397
+1212401
+1212427
+1212433
+1212437
+1212439
+1212443
+1212473
+1212479
+1212487
+1212517
+1212521
+1212551
+1212569
+1212611
+1212613
+1212641
+1212649
+1212671
+1212677
+1212683
+1212697
+1212703
+1212709
+1212719
+1212737
+1212769
+1212773
+1212781
+1212787
+1212793
+1212811
+1212817
+1212839
+1212847
+1212851
+1212853
+1212857
+1212877
+1212889
+1212907
+1212917
+1212919
+1212923
+1212931
+1212943
+1212973
+1212989
+1213007
+1213019
+1213021
+1213027
+1213033
+1213049
+1213057
+1213063
+1213081
+1213087
+1213097
+1213109
+1213129
+1213133
+1213141
+1213151
+1213153
+1213183
+1213189
+1213213
+1213241
+1213253
+1213259
+1213271
+1213301
+1213327
+1213339
+1213357
+1213367
+1213379
+1213427
+1213439
+1213451
+1213469
+1213481
+1213483
+1213517
+1213529
+1213547
+1213561
+1213573
+1213577
+1213591
+1213601
+1213607
+1213627
+1213631
+1213633
+1213643
+1213651
+1213657
+1213661
+1213673
+1213721
+1213741
+1213747
+1213757
+1213759
+1213763
+1213781
+1213801
+1213829
+1213837
+1213841
+1213873
+1213879
+1213897
+1213907
+1213909
+1213913
+1213921
+1213931
+1213939
+1213943
+1213951
+1213981
+1214011
+1214023
+1214039
+1214047
+1214077
+1214093
+1214113
+1214117
+1214131
+1214137
+1214141
+1214159
+1214167
+1214183
+1214189
+1214197
+1214219
+1214221
+1214237
+1214261
+1214273
+1214281
+1214299
+1214333
+1214357
+1214371
+1214393
+1214401
+1214407
+1214413
+1214417
+1214431
+1214441
+1214453
+1214459
+1214471
+1214483
+1214489
+1214519
+1214533
+1214567
+1214573
+1214579
+1214593
+1214617
+1214623
+1214639
+1214641
+1214657
+1214659
+1214663
+1214669
+1214671
+1214683
+1214687
+1214711
+1214729
+1214737
+1214743
+1214749
+1214767
+1214819
+1214827
+1214849
+1214867
+1214891
+1214909
+1214923
+1214933
+1214947
+1214957
+1214959
+1214963
+1214971
+1214977
+1214981
+1215017
+1215029
+1215047
+1215079
+1215083
+1215103
+1215121
+1215133
+1215157
+1215161
+1215167
+1215173
+1215197
+1215209
+1215229
+1215239
+1215271
+1215283
+1215299
+1215301
+1215311
+1215329
+1215349
+1215359
+1215367
+1215391
+1215397
+1215407
+1215421
+1215433
+1215437
+1215439
+1215451
+1215457
+1215463
+1215497
+1215499
+1215509
+1215521
+1215553
+1215569
+1215583
+1215587
+1215623
+1215629
+1215631
+1215637
+1215647
+1215649
+1215673
+1215679
+1215703
+1215719
+1215743
+1215769
+1215779
+1215787
+1215827
+1215839
+1215847
+1215853
+1215859
+1215881
+1215899
+1215917
+1215919
+1215923
+1216009
+1216013
+1216021
+1216043
+1216067
+1216069
+1216087
+1216091
+1216109
+1216123
+1216147
+1216151
+1216177
+1216213
+1216249
+1216273
+1216277
+1216337
+1216339
+1216349
+1216351
+1216373
+1216379
+1216387
+1216393
+1216417
+1216421
+1216433
+1216441
+1216451
+1216459
+1216489
+1216507
+1216529
+1216543
+1216547
+1216559
+1216561
+1216577
+1216583
+1216591
+1216601
+1216603
+1216619
+1216681
+1216693
+1216711
+1216717
+1216729
+1216751
+1216759
+1216763
+1216777
+1216793
+1216799
+1216807
+1216823
+1216841
+1216847
+1216849
+1216867
+1216871
+1216879
+1216903
+1216913
+1216937
+1216939
+1216951
+1216961
+1216973
+1216987
+1216997
+1217009
+1217017
+1217023
+1217033
+1217053
+1217057
+1217063
+1217071
+1217077
+1217089
+1217093
+1217107
+1217113
+1217119
+1217131
+1217141
+1217143
+1217147
+1217171
+1217179
+1217191
+1217207
+1217213
+1217219
+1217233
+1217261
+1217269
+1217297
+1217299
+1217303
+1217309
+1217317
+1217329
+1217351
+1217393
+1217399
+1217407
+1217417
+1217423
+1217443
+1217467
+1217471
+1217473
+1217477
+1217483
+1217509
+1217521
+1217533
+1217537
+1217561
+1217617
+1217647
+1217651
+1217663
+1217669
+1217677
+1217683
+1217687
+1217719
+1217731
+1217753
+1217759
+1217771
+1217809
+1217813
+1217831
+1217833
+1217861
+1217893
+1217899
+1217903
+1217917
+1217921
+1217927
+1217933
+1217941
+1217947
+1217963
+1217977
+1217989
+1218017
+1218043
+1218089
+1218121
+1218131
+1218157
+1218167
+1218179
+1218197
+1218199
+1218209
+1218211
+1218221
+1218247
+1218251
+1218257
+1218263
+1218277
+1218281
+1218307
+1218313
+1218367
+1218383
+1218391
+1218401
+1218421
+1218433
+1218449
+1218457
+1218463
+1218467
+1218473
+1218487
+1218533
+1218557
+1218559
+1218571
+1218583
+1218601
+1218617
+1218631
+1218649
+1218653
+1218683
+1218691
+1218709
+1218727
+1218731
+1218739
+1218761
+1218773
+1218779
+1218787
+1218821
+1218829
+1218853
+1218859
+1218901
+1218911
+1218913
+1218923
+1218941
+1218949
+1218953
+1218989
+1218991
+1219003
+1219061
+1219081
+1219091
+1219109
+1219111
+1219123
+1219129
+1219147
+1219177
+1219213
+1219237
+1219241
+1219271
+1219279
+1219297
+1219301
+1219303
+1219307
+1219313
+1219343
+1219349
+1219357
+1219399
+1219411
+1219433
+1219453
+1219457
+1219469
+1219481
+1219487
+1219489
+1219501
+1219507
+1219549
+1219577
+1219607
+1219613
+1219619
+1219639
+1219643
+1219649
+1219651
+1219657
+1219663
+1219679
+1219703
+1219717
+1219721
+1219727
+1219739
+1219747
+1219753
+1219763
+1219783
+1219787
+1219789
+1219793
+1219807
+1219811
+1219831
+1219837
+1219843
+1219847
+1219849
+1219859
+1219861
+1219871
+1219877
+1219879
+1219891
+1219909
+1219913
+1219919
+1219931
+1219949
+1219951
+1219957
+1219961
+1219963
+1219991
+1220027
+1220029
+1220041
+1220071
+1220077
+1220099
+1220147
+1220171
+1220203
+1220239
+1220249
+1220251
+1220257
+1220309
+1220327
+1220333
+1220347
+1220353
+1220363
+1220369
+1220393
+1220411
+1220423
+1220437
+1220489
+1220491
+1220497
+1220507
+1220591
+1220599
+1220623
+1220657
+1220663
+1220669
+1220689
+1220699
+1220711
+1220717
+1220729
+1220743
+1220761
+1220773
+1220777
+1220783
+1220797
+1220801
+1220803
+1220819
+1220833
+1220839
+1220893
+1220897
+1220903
+1220917
+1220927
+1220953
+1220969
+1220981
+1220983
+1220993
+1221019
+1221029
+1221049
+1221061
+1221079
+1221083
+1221089
+1221097
+1221113
+1221119
+1221131
+1221163
+1221167
+1221193
+1221197
+1221221
+1221223
+1221239
+1221247
+1221251
+1221289
+1221299
+1221373
+1221379
+1221383
+1221391
+1221421
+1221427
+1221443
+1221449
+1221457
+1221463
+1221469
+1221499
+1221503
+1221523
+1221527
+1221533
+1221541
+1221551
+1221557
+1221559
+1221589
+1221593
+1221601
+1221631
+1221641
+1221653
+1221659
+1221667
+1221707
+1221749
+1221751
+1221761
+1221767
+1221791
+1221793
+1221811
+1221821
+1221823
+1221853
+1221863
+1221907
+1221917
+1221937
+1221959
+1221971
+1222003
+1222019
+1222027
+1222037
+1222049
+1222057
+1222063
+1222097
+1222129
+1222157
+1222159
+1222171
+1222187
+1222219
+1222229
+1222231
+1222241
+1222253
+1222259
+1222267
+1222271
+1222279
+1222307
+1222373
+1222393
+1222409
+1222411
+1222433
+1222471
+1222483
+1222493
+1222499
+1222513
+1222523
+1222537
+1222561
+1222567
+1222583
+1222597
+1222601
+1222603
+1222633
+1222643
+1222651
+1222667
+1222679
+1222681
+1222693
+1222717
+1222723
+1222729
+1222751
+1222757
+1222769
+1222777
+1222789
+1222801
+1222811
+1222829
+1222831
+1222847
+1222853
+1222889
+1222909
+1222913
+1222931
+1222943
+1222957
+1222967
+1222993
+1223003
+1223021
+1223029
+1223039
+1223051
+1223059
+1223077
+1223083
+1223093
+1223119
+1223149
+1223161
+1223177
+1223179
+1223197
+1223203
+1223207
+1223231
+1223237
+1223263
+1223279
+1223281
+1223309
+1223311
+1223323
+1223329
+1223351
+1223357
+1223381
+1223419
+1223437
+1223447
+1223449
+1223459
+1223471
+1223489
+1223491
+1223527
+1223533
+1223549
+1223561
+1223569
+1223587
+1223591
+1223603
+1223633
+1223683
+1223687
+1223689
+1223693
+1223723
+1223731
+1223749
+1223753
+1223767
+1223773
+1223777
+1223857
+1223863
+1223867
+1223879
+1223897
+1223921
+1223939
+1223941
+1223953
+1223977
+1223987
+1223993
+1224029
+1224031
+1224053
+1224059
+1224077
+1224079
+1224089
+1224109
+1224121
+1224131
+1224133
+1224149
+1224163
+1224169
+1224193
+1224203
+1224217
+1224229
+1224233
+1224239
+1224257
+1224259
+1224269
+1224271
+1224281
+1224287
+1224299
+1224329
+1224337
+1224347
+1224389
+1224403
+1224413
+1224437
+1224439
+1224473
+1224479
+1224481
+1224529
+1224533
+1224577
+1224599
+1224637
+1224673
+1224677
+1224701
+1224703
+1224709
+1224739
+1224763
+1224767
+1224809
+1224823
+1224851
+1224857
+1224859
+1224863
+1224869
+1224887
+1224889
+1224893
+1224913
+1224919
+1224943
+1224953
+1224967
+1224973
+1224983
+1224991
+1225009
+1225019
+1225061
+1225067
+1225073
+1225079
+1225087
+1225093
+1225097
+1225099
+1225109
+1225111
+1225117
+1225123
+1225127
+1225129
+1225153
+1225157
+1225183
+1225219
+1225223
+1225261
+1225283
+1225297
+1225303
+1225319
+1225327
+1225331
+1225361
+1225373
+1225381
+1225397
+1225409
+1225459
+1225493
+1225501
+1225507
+1225517
+1225529
+1225541
+1225559
+1225571
+1225577
+1225579
+1225589
+1225591
+1225603
+1225621
+1225643
+1225657
+1225663
+1225687
+1225691
+1225703
+1225723
+1225727
+1225729
+1225759
+1225769
+1225787
+1225817
+1225849
+1225871
+1225879
+1225883
+1225891
+1225897
+1225907
+1225909
+1225919
+1225927
+1225933
+1225949
+1225963
+1225981
+1225997
+1225999
+1226011
+1226041
+1226053
+1226063
+1226077
+1226083
+1226087
+1226101
+1226111
+1226117
+1226179
+1226189
+1226191
+1226209
+1226213
+1226237
+1226257
+1226263
+1226293
+1226297
+1226299
+1226311
+1226321
+1226339
+1226341
+1226347
+1226353
+1226377
+1226387
+1226417
+1226461
+1226471
+1226479
+1226483
+1226501
+1226503
+1226531
+1226539
+1226549
+1226557
+1226581
+1226593
+1226609
+1226611
+1226623
+1226629
+1226651
+1226663
+1226677
+1226681
+1226683
+1226699
+1226707
+1226711
+1226713
+1226741
+1226767
+1226779
+1226783
+1226789
+1226801
+1226803
+1226807
+1226821
+1226831
+1226851
+1226857
+1226861
+1226867
+1226891
+1226899
+1226959
+1226977
+1226983
+1226993
+1227047
+1227053
+1227101
+1227103
+1227131
+1227133
+1227143
+1227151
+1227157
+1227167
+1227173
+1227181
+1227241
+1227271
+1227277
+1227299
+1227301
+1227319
+1227323
+1227329
+1227337
+1227353
+1227379
+1227407
+1227431
+1227437
+1227463
+1227469
+1227491
+1227497
+1227539
+1227547
+1227559
+1227563
+1227619
+1227637
+1227649
+1227659
+1227683
+1227701
+1227703
+1227713
+1227719
+1227769
+1227797
+1227829
+1227833
+1227841
+1227847
+1227871
+1227881
+1227887
+1227911
+1227917
+1227929
+1227943
+1227949
+1227973
+1227977
+1227979
+1227983
+1228001
+1228009
+1228013
+1228021
+1228091
+1228099
+1228109
+1228133
+1228147
+1228153
+1228159
+1228163
+1228181
+1228187
+1228193
+1228219
+1228243
+1228247
+1228273
+1228277
+1228291
+1228303
+1228309
+1228327
+1228333
+1228351
+1228373
+1228391
+1228393
+1228397
+1228399
+1228429
+1228441
+1228457
+1228459
+1228489
+1228501
+1228519
+1228537
+1228541
+1228543
+1228547
+1228567
+1228571
+1228583
+1228589
+1228603
+1228613
+1228631
+1228651
+1228657
+1228679
+1228691
+1228693
+1228741
+1228763
+1228783
+1228789
+1228837
+1228841
+1228849
+1228861
+1228883
+1228889
+1228891
+1228907
+1228919
+1228937
+1228943
+1228949
+1228951
+1228961
+1228963
+1228987
+1228993
+1229021
+1229023
+1229071
+1229077
+1229093
+1229113
+1229131
+1229141
+1229149
+1229159
+1229197
+1229201
+1229203
+1229209
+1229213
+1229227
+1229237
+1229257
+1229269
+1229273
+1229279
+1229297
+1229309
+1229311
+1229317
+1229329
+1229351
+1229353
+1229359
+1229369
+1229377
+1229381
+1229401
+1229443
+1229447
+1229453
+1229461
+1229483
+1229489
+1229519
+1229521
+1229531
+1229561
+1229563
+1229581
+1229597
+1229617
+1229633
+1229647
+1229663
+1229689
+1229707
+1229719
+1229731
+1229743
+1229773
+1229783
+1229807
+1229827
+1229869
+1229873
+1229897
+1229903
+1229911
+1229939
+1229941
+1229957
+1229981
+1229993
+1229999
+1230013
+1230023
+1230029
+1230067
+1230071
+1230107
+1230127
+1230167
+1230169
+1230181
+1230199
+1230223
+1230227
+1230233
+1230241
+1230263
+1230301
+1230311
+1230329
+1230331
+1230337
+1230343
+1230347
+1230349
+1230367
+1230371
+1230373
+1230377
+1230379
+1230391
+1230401
+1230433
+1230461
+1230469
+1230479
+1230491
+1230521
+1230529
+1230539
+1230547
+1230571
+1230587
+1230599
+1230629
+1230631
+1230637
+1230667
+1230689
+1230727
+1230739
+1230743
+1230751
+1230769
+1230791
+1230829
+1230863
+1230869
+1230871
+1230881
+1230907
+1230913
+1230941
+1230949
+1230967
+1230997
+1231001
+1231003
+1231039
+1231049
+1231051
+1231063
+1231073
+1231091
+1231093
+1231099
+1231127
+1231129
+1231141
+1231171
+1231177
+1231193
+1231199
+1231201
+1231207
+1231229
+1231231
+1231247
+1231261
+1231267
+1231277
+1231283
+1231301
+1231303
+1231309
+1231313
+1231319
+1231337
+1231339
+1231357
+1231379
+1231381
+1231387
+1231411
+1231421
+1231423
+1231453
+1231457
+1231459
+1231469
+1231481
+1231487
+1231511
+1231513
+1231547
+1231553
+1231577
+1231579
+1231589
+1231597
+1231613
+1231631
+1231663
+1231669
+1231687
+1231691
+1231697
+1231709
+1231721
+1231733
+1231753
+1231757
+1231771
+1231781
+1231787
+1231799
+1231807
+1231817
+1231829
+1231831
+1231843
+1231859
+1231873
+1231877
+1231883
+1231889
+1231943
+1231961
+1231981
+1231987
+1231999
+1232003
+1232069
+1232071
+1232083
+1232089
+1232171
+1232183
+1232201
+1232213
+1232221
+1232227
+1232243
+1232269
+1232291
+1232299
+1232327
+1232339
+1232351
+1232353
+1232377
+1232389
+1232393
+1232401
+1232411
+1232417
+1232431
+1232437
+1232453
+1232461
+1232477
+1232527
+1232531
+1232537
+1232563
+1232573
+1232603
+1232611
+1232617
+1232657
+1232659
+1232683
+1232689
+1232713
+1232719
+1232771
+1232797
+1232801
+1232809
+1232831
+1232843
+1232849
+1232851
+1232879
+1232893
+1232909
+1232941
+1232947
+1232977
+1232981
+1232983
+1232999
+1233019
+1233047
+1233073
+1233079
+1233097
+1233101
+1233107
+1233121
+1233143
+1233179
+1233181
+1233187
+1233209
+1233241
+1233251
+1233259
+1233263
+1233301
+1233313
+1233319
+1233361
+1233371
+1233373
+1233377
+1233409
+1233431
+1233433
+1233437
+1233439
+1233473
+1233493
+1233497
+1233509
+1233523
+1233527
+1233539
+1233563
+1233569
+1233577
+1233587
+1233593
+1233599
+1233607
+1233611
+1233619
+1233641
+1233647
+1233653
+1233709
+1233721
+1233751
+1233761
+1233763
+1233779
+1233781
+1233851
+1233887
+1233899
+1233907
+1233923
+1233929
+1233949
+1233983
+1234001
+1234003
+1234039
+1234049
+1234063
+1234067
+1234099
+1234109
+1234117
+1234133
+1234147
+1234187
+1234231
+1234237
+1234241
+1234243
+1234253
+1234271
+1234309
+1234333
+1234349
+1234351
+1234367
+1234379
+1234391
+1234393
+1234417
+1234439
+1234463
+1234511
+1234517
+1234531
+1234537
+1234543
+1234547
+1234577
+1234603
+1234613
+1234627
+1234657
+1234687
+1234703
+1234721
+1234747
+1234757
+1234759
+1234769
+1234777
+1234787
+1234789
+1234799
+1234813
+1234819
+1234837
+1234841
+1234843
+1234853
+1234873
+1234889
+1234901
+1234951
+1234967
+1234969
+1234991
+1235021
+1235027
+1235041
+1235063
+1235083
+1235093
+1235099
+1235131
+1235137
+1235141
+1235149
+1235159
+1235167
+1235177
+1235183
+1235191
+1235239
+1235243
+1235249
+1235251
+1235263
+1235281
+1235287
+1235303
+1235309
+1235321
+1235327
+1235363
+1235369
+1235383
+1235389
+1235417
+1235419
+1235431
+1235447
+1235449
+1235459
+1235473
+1235477
+1235497
+1235501
+1235503
+1235539
+1235569
+1235573
+1235593
+1235651
+1235653
+1235659
+1235669
+1235701
+1235711
+1235761
+1235789
+1235791
+1235803
+1235807
+1235821
+1235831
+1235833
+1235867
+1235879
+1235887
+1235891
+1235909
+1235929
+1235933
+1235947
+1235977
+1235981
+1235987
+1235999
+1236017
+1236073
+1236077
+1236161
+1236163
+1236173
+1236203
+1236211
+1236229
+1236233
+1236239
+1236259
+1236307
+1236317
+1236329
+1236337
+1236383
+1236397
+1236419
+1236439
+1236449
+1236467
+1236479
+1236481
+1236491
+1236517
+1236527
+1236533
+1236541
+1236553
+1236583
+1236611
+1236623
+1236629
+1236643
+1236659
+1236661
+1236667
+1236701
+1236709
+1236713
+1236727
+1236737
+1236743
+1236751
+1236757
+1236761
+1236769
+1236787
+1236791
+1236797
+1236803
+1236811
+1236827
+1236857
+1236883
+1236901
+1236953
+1236959
+1236979
+1237001
+1237013
+1237031
+1237037
+1237043
+1237051
+1237057
+1237063
+1237079
+1237091
+1237121
+1237129
+1237139
+1237151
+1237163
+1237177
+1237199
+1237207
+1237211
+1237213
+1237217
+1237231
+1237253
+1237273
+1237279
+1237283
+1237297
+1237309
+1237349
+1237363
+1237373
+1237387
+1237393
+1237403
+1237417
+1237433
+1237441
+1237471
+1237487
+1237493
+1237499
+1237501
+1237513
+1237519
+1237529
+1237531
+1237543
+1237547
+1237567
+1237571
+1237589
+1237619
+1237627
+1237661
+1237721
+1237727
+1237739
+1237757
+1237763
+1237783
+1237813
+1237823
+1237829
+1237843
+1237849
+1237853
+1237867
+1237877
+1237897
+1237919
+1237931
+1237939
+1237949
+1237961
+1237963
+1237967
+1237993
+1238023
+1238033
+1238051
+1238063
+1238071
+1238087
+1238089
+1238101
+1238119
+1238129
+1238137
+1238177
+1238179
+1238189
+1238197
+1238201
+1238219
+1238267
+1238269
+1238273
+1238291
+1238317
+1238327
+1238333
+1238371
+1238381
+1238383
+1238407
+1238411
+1238423
+1238429
+1238431
+1238437
+1238449
+1238459
+1238491
+1238509
+1238521
+1238533
+1238537
+1238551
+1238597
+1238599
+1238621
+1238647
+1238659
+1238681
+1238683
+1238687
+1238693
+1238717
+1238719
+1238747
+1238749
+1238759
+1238761
+1238767
+1238771
+1238789
+1238801
+1238821
+1238827
+1238833
+1238843
+1238863
+1238893
+1238903
+1238911
+1238917
+1238921
+1238947
+1238989
+1238999
+1239001
+1239013
+1239023
+1239041
+1239067
+1239089
+1239103
+1239109
+1239127
+1239151
+1239179
+1239191
+1239197
+1239223
+1239229
+1239239
+1239247
+1239269
+1239281
+1239311
+1239319
+1239323
+1239341
+1239347
+1239353
+1239361
+1239367
+1239377
+1239379
+1239397
+1239421
+1239443
+1239449
+1239457
+1239461
+1239481
+1239499
+1239509
+1239517
+1239523
+1239529
+1239533
+1239551
+1239569
+1239583
+1239593
+1239599
+1239607
+1239619
+1239643
+1239661
+1239671
+1239697
+1239727
+1239737
+1239739
+1239751
+1239761
+1239773
+1239803
+1239817
+1239839
+1239877
+1239893
+1239899
+1239911
+1239913
+1239919
+1239923
+1239943
+1239961
+1239971
+1239983
+1239989
+1240007
+1240009
+1240013
+1240021
+1240027
+1240039
+1240081
+1240087
+1240097
+1240117
+1240139
+1240153
+1240159
+1240181
+1240193
+1240199
+1240207
+1240219
+1240231
+1240241
+1240247
+1240271
+1240273
+1240307
+1240319
+1240333
+1240361
+1240363
+1240387
+1240391
+1240399
+1240423
+1240483
+1240487
+1240511
+1240517
+1240523
+1240543
+1240553
+1240559
+1240607
+1240621
+1240637
+1240667
+1240669
+1240691
+1240699
+1240703
+1240709
+1240717
+1240739
+1240741
+1240751
+1240763
+1240769
+1240777
+1240793
+1240807
+1240817
+1240831
+1240859
+1240861
+1240931
+1240957
+1240973
+1240979
+1240991
+1240999
+1241003
+1241027
+1241033
+1241039
+1241059
+1241077
+1241081
+1241087
+1241159
+1241161
+1241173
+1241197
+1241203
+1241243
+1241249
+1241257
+1241263
+1241267
+1241269
+1241291
+1241321
+1241341
+1241347
+1241351
+1241369
+1241377
+1241381
+1241389
+1241407
+1241413
+1241417
+1241423
+1241437
+1241447
+1241467
+1241477
+1241483
+1241489
+1241491
+1241507
+1241509
+1241549
+1241551
+1241557
+1241573
+1241579
+1241587
+1241627
+1241651
+1241659
+1241677
+1241699
+1241741
+1241743
+1241761
+1241771
+1241789
+1241813
+1241819
+1241827
+1241869
+1241879
+1241893
+1241921
+1241923
+1241927
+1241939
+1241941
+1241951
+1241957
+1241963
+1241971
+1241987
+1242001
+1242029
+1242061
+1242067
+1242089
+1242097
+1242103
+1242107
+1242119
+1242121
+1242151
+1242167
+1242169
+1242181
+1242191
+1242193
+1242217
+1242221
+1242233
+1242251
+1242271
+1242289
+1242317
+1242347
+1242359
+1242361
+1242379
+1242403
+1242407
+1242413
+1242419
+1242421
+1242457
+1242487
+1242503
+1242517
+1242569
+1242601
+1242611
+1242617
+1242623
+1242629
+1242641
+1242643
+1242739
+1242757
+1242763
+1242767
+1242781
+1242803
+1242811
+1242817
+1242823
+1242827
+1242841
+1242859
+1242869
+1242889
+1242893
+1242929
+1242931
+1242937
+1242947
+1242959
+1242977
+1242979
+1242991
+1243003
+1243013
+1243093
+1243097
+1243111
+1243129
+1243133
+1243141
+1243147
+1243157
+1243169
+1243181
+1243211
+1243271
+1243273
+1243309
+1243337
+1243343
+1243349
+1243367
+1243369
+1243373
+1243387
+1243391
+1243393
+1243421
+1243427
+1243439
+1243471
+1243477
+1243481
+1243483
+1243511
+1243523
+1243537
+1243547
+1243559
+1243577
+1243579
+1243609
+1243631
+1243639
+1243643
+1243663
+1243673
+1243691
+1243709
+1243717
+1243741
+1243747
+1243783
+1243789
+1243793
+1243807
+1243811
+1243819
+1243841
+1243843
+1243859
+1243877
+1243883
+1243889
+1243927
+1243933
+1243939
+1243943
+1243951
+1243961
+1243967
+1243969
+1243997
+1244003
+1244021
+1244027
+1244029
+1244039
+1244041
+1244053
+1244057
+1244059
+1244083
+1244099
+1244141
+1244143
+1244149
+1244153
+1244167
+1244183
+1244197
+1244203
+1244233
+1244249
+1244261
+1244263
+1244279
+1244293
+1244333
+1244357
+1244359
+1244363
+1244381
+1244393
+1244401
+1244423
+1244429
+1244437
+1244447
+1244459
+1244471
+1244479
+1244483
+1244501
+1244521
+1244531
+1244533
+1244543
+1244567
+1244591
+1244603
+1244609
+1244611
+1244627
+1244629
+1244647
+1244687
+1244699
+1244713
+1244729
+1244741
+1244753
+1244759
+1244777
+1244797
+1244813
+1244819
+1244821
+1244833
+1244839
+1244857
+1244863
+1244879
+1244909
+1244911
+1244923
+1244953
+1244987
+1244989
+1244993
+1245001
+1245017
+1245019
+1245037
+1245067
+1245091
+1245103
+1245113
+1245121
+1245137
+1245149
+1245169
+1245187
+1245191
+1245217
+1245227
+1245281
+1245331
+1245353
+1245379
+1245397
+1245401
+1245421
+1245449
+1245451
+1245479
+1245509
+1245527
+1245529
+1245551
+1245557
+1245589
+1245613
+1245617
+1245619
+1245623
+1245649
+1245683
+1245689
+1245691
+1245701
+1245707
+1245719
+1245721
+1245763
+1245767
+1245779
+1245781
+1245791
+1245799
+1245817
+1245833
+1245847
+1245863
+1245877
+1245883
+1245917
+1245929
+1245943
+1245953
+1245961
+1245971
+1245973
+1246013
+1246033
+1246057
+1246061
+1246073
+1246081
+1246093
+1246099
+1246103
+1246181
+1246187
+1246199
+1246207
+1246213
+1246241
+1246243
+1246247
+1246249
+1246261
+1246283
+1246303
+1246307
+1246313
+1246319
+1246327
+1246331
+1246339
+1246351
+1246361
+1246363
+1246367
+1246369
+1246373
+1246379
+1246387
+1246397
+1246429
+1246433
+1246451
+1246459
+1246471
+1246477
+1246481
+1246489
+1246499
+1246501
+1246513
+1246517
+1246529
+1246537
+1246543
+1246561
+1246573
+1246579
+1246589
+1246591
+1246601
+1246631
+1246639
+1246667
+1246673
+1246697
+1246703
+1246711
+1246733
+1246747
+1246757
+1246781
+1246823
+1246829
+1246841
+1246867
+1246879
+1246891
+1246907
+1246919
+1246943
+1246961
+1246963
+1246997
+1247009
+1247017
+1247033
+1247053
+1247063
+1247089
+1247101
+1247107
+1247117
+1247119
+1247167
+1247177
+1247189
+1247209
+1247231
+1247243
+1247263
+1247269
+1247291
+1247297
+1247303
+1247317
+1247321
+1247327
+1247329
+1247371
+1247383
+1247401
+1247417
+1247419
+1247429
+1247447
+1247453
+1247459
+1247479
+1247501
+1247509
+1247527
+1247549
+1247557
+1247563
+1247569
+1247581
+1247591
+1247599
+1247611
+1247621
+1247627
+1247641
+1247651
+1247663
+1247693
+1247699
+1247737
+1247759
+1247761
+1247767
+1247777
+1247797
+1247801
+1247833
+1247837
+1247861
+1247867
+1247879
+1247881
+1247893
+1247923
+1247947
+1247951
+1247959
+1247969
+1248001
+1248007
+1248011
+1248017
+1248019
+1248031
+1248041
+1248059
+1248061
+1248083
+1248101
+1248103
+1248113
+1248119
+1248151
+1248193
+1248199
+1248209
+1248211
+1248217
+1248229
+1248239
+1248241
+1248253
+1248271
+1248323
+1248329
+1248337
+1248341
+1248347
+1248349
+1248353
+1248383
+1248391
+1248407
+1248413
+1248427
+1248449
+1248451
+1248469
+1248493
+1248503
+1248529
+1248539
+1248551
+1248553
+1248563
+1248571
+1248589
+1248593
+1248631
+1248641
+1248671
+1248673
+1248691
+1248697
+1248703
+1248721
+1248757
+1248781
+1248799
+1248809
+1248829
+1248833
+1248847
+1248857
+1248859
+1248869
+1248881
+1248893
+1248917
+1248941
+1248953
+1248977
+1248979
+1248991
+1249013
+1249019
+1249033
+1249037
+1249043
+1249049
+1249057
+1249063
+1249091
+1249099
+1249111
+1249121
+1249133
+1249139
+1249141
+1249151
+1249159
+1249163
+1249187
+1249201
+1249217
+1249243
+1249247
+1249273
+1249301
+1249319
+1249321
+1249333
+1249343
+1249361
+1249363
+1249373
+1249397
+1249403
+1249411
+1249427
+1249433
+1249477
+1249481
+1249487
+1249489
+1249499
+1249511
+1249519
+1249531
+1249559
+1249603
+1249621
+1249627
+1249631
+1249643
+1249657
+1249669
+1249681
+1249691
+1249693
+1249727
+1249733
+1249739
+1249741
+1249747
+1249757
+1249799
+1249811
+1249817
+1249819
+1249837
+1249841
+1249847
+1249849
+1249861
+1249873
+1249901
+1249921
+1249939
+1249943
+1249999
+1250003
+1250009
+1250021
+1250023
+1250057
+1250069
+1250083
+1250087
+1250099
+1250107
+1250141
+1250147
+1250149
+1250173
+1250177
+1250189
+1250201
+1250203
+1250237
+1250243
+1250273
+1250281
+1250297
+1250309
+1250351
+1250357
+1250407
+1250413
+1250437
+1250443
+1250449
+1250453
+1250461
+1250471
+1250479
+1250497
+1250507
+1250519
+1250521
+1250527
+1250551
+1250593
+1250609
+1250611
+1250629
+1250647
+1250653
+1250677
+1250701
+1250737
+1250749
+1250761
+1250771
+1250773
+1250779
+1250783
+1250801
+1250813
+1250831
+1250839
+1250863
+1250867
+1250917
+1250923
+1250929
+1250939
+1250969
+1250971
+1250981
+1250983
+1251011
+1251037
+1251043
+1251053
+1251071
+1251083
+1251097
+1251101
+1251109
+1251121
+1251157
+1251161
+1251179
+1251227
+1251247
+1251259
+1251287
+1251301
+1251307
+1251317
+1251323
+1251329
+1251409
+1251427
+1251431
+1251433
+1251461
+1251463
+1251527
+1251529
+1251533
+1251571
+1251577
+1251581
+1251583
+1251641
+1251661
+1251667
+1251671
+1251697
+1251703
+1251707
+1251713
+1251721
+1251743
+1251787
+1251791
+1251797
+1251827
+1251841
+1251851
+1251857
+1251869
+1251871
+1251881
+1251907
+1251911
+1251919
+1251923
+1251937
+1251947
+1251953
+1251961
+1251983
+1252021
+1252037
+1252049
+1252057
+1252063
+1252073
+1252079
+1252103
+1252109
+1252123
+1252129
+1252151
+1252159
+1252177
+1252187
+1252193
+1252201
+1252211
+1252217
+1252219
+1252247
+1252259
+1252267
+1252283
+1252331
+1252343
+1252357
+1252399
+1252403
+1252411
+1252421
+1252429
+1252439
+1252451
+1252457
+1252469
+1252483
+1252507
+1252523
+1252579
+1252609
+1252631
+1252639
+1252661
+1252663
+1252681
+1252711
+1252717
+1252721
+1252729
+1252739
+1252751
+1252777
+1252799
+1252817
+1252819
+1252843
+1252873
+1252877
+1252897
+1252903
+1252913
+1252921
+1252943
+1252957
+1252963
+1252987
+1252991
+1252997
+1253011
+1253023
+1253027
+1253047
+1253059
+1253071
+1253089
+1253093
+1253099
+1253111
+1253137
+1253167
+1253171
+1253249
+1253251
+1253261
+1253279
+1253323
+1253327
+1253333
+1253347
+1253377
+1253381
+1253401
+1253437
+1253453
+1253471
+1253479
+1253513
+1253519
+1253521
+1253557
+1253587
+1253591
+1253599
+1253621
+1253627
+1253683
+1253689
+1253701
+1253717
+1253723
+1253729
+1253737
+1253741
+1253761
+1253783
+1253803
+1253831
+1253839
+1253849
+1253851
+1253887
+1253897
+1253909
+1253911
+1253947
+1253951
+1253953
+1253963
+1253969
+1253999
+1254013
+1254017
+1254023
+1254031
+1254037
+1254049
+1254053
+1254059
+1254061
+1254079
+1254091
+1254109
+1254119
+1254131
+1254137
+1254151
+1254157
+1254161
+1254179
+1254193
+1254203
+1254217
+1254241
+1254251
+1254257
+1254269
+1254293
+1254301
+1254317
+1254329
+1254367
+1254371
+1254373
+1254377
+1254427
+1254433
+1254467
+1254469
+1254479
+1254497
+1254503
+1254523
+1254527
+1254529
+1254541
+1254553
+1254557
+1254577
+1254593
+1254607
+1254613
+1254619
+1254623
+1254637
+1254647
+1254653
+1254661
+1254667
+1254683
+1254689
+1254731
+1254733
+1254739
+1254751
+1254761
+1254767
+1254791
+1254793
+1254823
+1254833
+1254839
+1254863
+1254899
+1254907
+1254941
+1254959
+1254971
+1254983
+1254997
+1255013
+1255021
+1255039
+1255049
+1255063
+1255069
+1255081
+1255103
+1255109
+1255117
+1255123
+1255129
+1255139
+1255147
+1255153
+1255157
+1255169
+1255181
+1255183
+1255187
+1255201
+1255211
+1255237
+1255249
+1255253
+1255259
+1255279
+1255301
+1255307
+1255313
+1255321
+1255333
+1255337
+1255357
+1255361
+1255367
+1255391
+1255393
+1255421
+1255427
+1255451
+1255453
+1255477
+1255519
+1255549
+1255559
+1255567
+1255591
+1255601
+1255609
+1255619
+1255633
+1255651
+1255663
+1255679
+1255687
+1255693
+1255721
+1255747
+1255757
+1255759
+1255799
+1255801
+1255811
+1255829
+1255831
+1255847
+1255861
+1255907
+1255913
+1255927
+1255931
+1255939
+1255949
+1255963
+1255967
+1255993
+1255997
+1256009
+1256023
+1256029
+1256041
+1256063
+1256107
+1256149
+1256161
+1256197
+1256201
+1256209
+1256231
+1256243
+1256267
+1256279
+1256303
+1256323
+1256347
+1256369
+1256383
+1256389
+1256393
+1256407
+1256429
+1256449
+1256477
+1256531
+1256533
+1256543
+1256573
+1256579
+1256587
+1256597
+1256611
+1256617
+1256621
+1256659
+1256681
+1256687
+1256693
+1256707
+1256711
+1256729
+1256737
+1256747
+1256753
+1256777
+1256797
+1256809
+1256813
+1256819
+1256821
+1256837
+1256863
+1256867
+1256873
+1256887
+1256891
+1256897
+1256903
+1256911
+1256917
+1256923
+1256939
+1256953
+1256989
+1256993
+1257013
+1257017
+1257029
+1257041
+1257043
+1257049
+1257071
+1257073
+1257077
+1257079
+1257089
+1257103
+1257119
+1257131
+1257163
+1257199
+1257209
+1257229
+1257233
+1257239
+1257241
+1257247
+1257251
+1257253
+1257281
+1257293
+1257307
+1257313
+1257317
+1257323
+1257331
+1257359
+1257397
+1257409
+1257437
+1257457
+1257461
+1257463
+1257491
+1257493
+1257499
+1257517
+1257521
+1257547
+1257559
+1257563
+1257569
+1257587
+1257589
+1257611
+1257647
+1257653
+1257689
+1257691
+1257713
+1257719
+1257721
+1257749
+1257787
+1257827
+1257829
+1257853
+1257859
+1257869
+1257877
+1257911
+1257931
+1257953
+1257959
+1257961
+1257973
+1257989
+1258001
+1258013
+1258027
+1258039
+1258079
+1258087
+1258097
+1258099
+1258109
+1258133
+1258139
+1258141
+1258151
+1258163
+1258171
+1258177
+1258181
+1258183
+1258207
+1258211
+1258217
+1258219
+1258241
+1258267
+1258291
+1258297
+1258303
+1258319
+1258337
+1258343
+1258349
+1258373
+1258403
+1258409
+1258417
+1258421
+1258423
+1258429
+1258441
+1258451
+1258457
+1258469
+1258471
+1258483
+1258487
+1258511
+1258531
+1258559
+1258589
+1258597
+1258601
+1258627
+1258637
+1258639
+1258643
+1258657
+1258661
+1258667
+1258681
+1258709
+1258711
+1258717
+1258723
+1258753
+1258771
+1258781
+1258783
+1258787
+1258811
+1258819
+1258837
+1258847
+1258871
+1258877
+1258889
+1258903
+1258927
+1258931
+1258937
+1258967
+1258973
+1258993
+1259017
+1259029
+1259033
+1259039
+1259047
+1259051
+1259053
+1259057
+1259077
+1259081
+1259087
+1259099
+1259107
+1259113
+1259123
+1259129
+1259143
+1259171
+1259179
+1259191
+1259213
+1259231
+1259243
+1259249
+1259287
+1259299
+1259317
+1259329
+1259371
+1259389
+1259393
+1259413
+1259429
+1259477
+1259509
+1259527
+1259537
+1259539
+1259543
+1259551
+1259563
+1259569
+1259593
+1259603
+1259627
+1259639
+1259653
+1259659
+1259663
+1259669
+1259677
+1259689
+1259701
+1259737
+1259743
+1259749
+1259759
+1259767
+1259777
+1259803
+1259821
+1259851
+1259873
+1259899
+1259903
+1259927
+1259939
+1259953
+1259977
+1259983
+1260011
+1260019
+1260031
+1260047
+1260059
+1260067
+1260113
+1260121
+1260131
+1260143
+1260157
+1260163
+1260167
+1260169
+1260191
+1260223
+1260269
+1260277
+1260283
+1260293
+1260317
+1260319
+1260323
+1260341
+1260359
+1260361
+1260383
+1260401
+1260419
+1260437
+1260439
+1260461
+1260473
+1260481
+1260487
+1260509
+1260541
+1260547
+1260551
+1260569
+1260577
+1260583
+1260599
+1260629
+1260641
+1260643
+1260661
+1260673
+1260691
+1260713
+1260719
+1260731
+1260733
+1260751
+1260757
+1260767
+1260769
+1260797
+1260799
+1260827
+1260829
+1260841
+1260851
+1260877
+1260881
+1260887
+1260893
+1260899
+1260901
+1260911
+1260971
+1260979
+1260989
+1260991
+1261033
+1261069
+1261079
+1261081
+1261109
+1261121
+1261133
+1261157
+1261171
+1261177
+1261199
+1261217
+1261223
+1261259
+1261261
+1261279
+1261289
+1261301
+1261313
+1261321
+1261327
+1261333
+1261357
+1261363
+1261373
+1261387
+1261411
+1261427
+1261459
+1261487
+1261489
+1261523
+1261531
+1261549
+1261567
+1261571
+1261627
+1261639
+1261643
+1261649
+1261697
+1261699
+1261717
+1261721
+1261739
+1261747
+1261759
+1261763
+1261769
+1261789
+1261801
+1261823
+1261829
+1261831
+1261837
+1261861
+1261889
+1261891
+1261901
+1261913
+1261933
+1261943
+1261963
+1261969
+1261973
+1262011
+1262017
+1262057
+1262071
+1262081
+1262083
+1262087
+1262099
+1262101
+1262119
+1262143
+1262147
+1262203
+1262207
+1262221
+1262231
+1262237
+1262269
+1262281
+1262291
+1262293
+1262299
+1262311
+1262321
+1262363
+1262377
+1262411
+1262419
+1262441
+1262453
+1262461
+1262479
+1262483
+1262491
+1262509
+1262519
+1262543
+1262557
+1262563
+1262581
+1262587
+1262617
+1262621
+1262623
+1262629
+1262633
+1262669
+1262671
+1262693
+1262711
+1262713
+1262717
+1262731
+1262741
+1262753
+1262771
+1262783
+1262819
+1262839
+1262851
+1262869
+1262881
+1262887
+1262893
+1262897
+1262903
+1262917
+1262927
+1262929
+1262939
+1262941
+1262957
+1263007
+1263047
+1263071
+1263077
+1263079
+1263103
+1263107
+1263109
+1263113
+1263121
+1263133
+1263173
+1263179
+1263181
+1263187
+1263191
+1263193
+1263209
+1263239
+1263247
+1263259
+1263263
+1263299
+1263307
+1263319
+1263323
+1263331
+1263337
+1263341
+1263347
+1263373
+1263377
+1263391
+1263403
+1263461
+1263463
+1263473
+1263487
+1263499
+1263503
+1263511
+1263539
+1263541
+1263547
+1263569
+1263583
+1263599
+1263607
+1263629
+1263631
+1263659
+1263667
+1263677
+1263697
+1263701
+1263751
+1263761
+1263767
+1263793
+1263799
+1263803
+1263817
+1263853
+1263863
+1263887
+1263917
+1263929
+1263931
+1263943
+1263947
+1263949
+1263953
+1263961
+1263973
+1263979
+1264009
+1264027
+1264033
+1264037
+1264049
+1264061
+1264063
+1264129
+1264177
+1264189
+1264199
+1264213
+1264231
+1264259
+1264261
+1264267
+1264271
+1264301
+1264303
+1264331
+1264337
+1264363
+1264387
+1264411
+1264447
+1264451
+1264499
+1264537
+1264541
+1264559
+1264561
+1264573
+1264577
+1264597
+1264607
+1264643
+1264649
+1264651
+1264657
+1264663
+1264667
+1264687
+1264699
+1264733
+1264741
+1264763
+1264787
+1264801
+1264807
+1264819
+1264829
+1264853
+1264859
+1264867
+1264873
+1264877
+1264883
+1264889
+1264897
+1264903
+1264909
+1264933
+1264969
+1264979
+1264981
+1264997
+1265029
+1265041
+1265051
+1265053
+1265063
+1265081
+1265083
+1265087
+1265093
+1265101
+1265111
+1265113
+1265119
+1265129
+1265167
+1265177
+1265179
+1265197
+1265233
+1265249
+1265273
+1265279
+1265281
+1265311
+1265321
+1265333
+1265347
+1265353
+1265377
+1265387
+1265393
+1265431
+1265443
+1265449
+1265461
+1265471
+1265477
+1265479
+1265503
+1265519
+1265521
+1265527
+1265549
+1265557
+1265573
+1265581
+1265597
+1265603
+1265611
+1265617
+1265623
+1265639
+1265653
+1265657
+1265681
+1265729
+1265741
+1265777
+1265779
+1265801
+1265813
+1265827
+1265843
+1265857
+1265861
+1265863
+1265867
+1265899
+1265903
+1265909
+1265911
+1265921
+1265923
+1265941
+1265959
+1265969
+1265977
+1265981
+1265987
+1265993
+1266019
+1266043
+1266047
+1266059
+1266073
+1266077
+1266079
+1266091
+1266101
+1266107
+1266113
+1266149
+1266157
+1266163
+1266191
+1266197
+1266229
+1266241
+1266247
+1266259
+1266263
+1266269
+1266271
+1266277
+1266281
+1266301
+1266323
+1266337
+1266341
+1266359
+1266371
+1266373
+1266379
+1266389
+1266409
+1266413
+1266431
+1266451
+1266469
+1266487
+1266491
+1266493
+1266511
+1266523
+1266527
+1266539
+1266557
+1266563
+1266583
+1266589
+1266593
+1266611
+1266631
+1266677
+1266719
+1266731
+1266743
+1266751
+1266757
+1266761
+1266763
+1266767
+1266779
+1266781
+1266799
+1266841
+1266847
+1266851
+1266869
+1266883
+1266893
+1266899
+1266913
+1266919
+1266929
+1266931
+1266943
+1266949
+1266953
+1267009
+1267043
+1267051
+1267067
+1267103
+1267109
+1267117
+1267121
+1267127
+1267151
+1267157
+1267159
+1267183
+1267193
+1267199
+1267223
+1267237
+1267291
+1267297
+1267303
+1267307
+1267349
+1267381
+1267403
+1267411
+1267429
+1267447
+1267451
+1267459
+1267463
+1267481
+1267501
+1267517
+1267529
+1267531
+1267549
+1267577
+1267579
+1267589
+1267613
+1267633
+1267649
+1267663
+1267681
+1267709
+1267711
+1267723
+1267727
+1267757
+1267771
+1267787
+1267789
+1267823
+1267831
+1267837
+1267859
+1267873
+1267883
+1267891
+1267897
+1267907
+1267933
+1267939
+1267943
+1267951
+1267957
+1267961
+1267999
+1268011
+1268017
+1268039
+1268051
+1268053
+1268077
+1268093
+1268119
+1268143
+1268147
+1268167
+1268173
+1268177
+1268207
+1268213
+1268221
+1268233
+1268261
+1268279
+1268287
+1268291
+1268299
+1268327
+1268341
+1268357
+1268359
+1268369
+1268413
+1268419
+1268429
+1268447
+1268453
+1268461
+1268467
+1268479
+1268537
+1268549
+1268563
+1268567
+1268593
+1268599
+1268621
+1268623
+1268627
+1268633
+1268669
+1268681
+1268713
+1268731
+1268741
+1268747
+1268753
+1268759
+1268777
+1268783
+1268789
+1268791
+1268797
+1268803
+1268807
+1268843
+1268849
+1268867
+1268881
+1268899
+1268921
+1268929
+1268947
+1268963
+1269001
+1269007
+1269013
+1269017
+1269041
+1269043
+1269049
+1269061
+1269077
+1269091
+1269113
+1269119
+1269131
+1269167
+1269173
+1269179
+1269187
+1269193
+1269197
+1269221
+1269223
+1269239
+1269241
+1269253
+1269263
+1269283
+1269287
+1269299
+1269311
+1269337
+1269343
+1269377
+1269379
+1269383
+1269391
+1269413
+1269427
+1269461
+1269467
+1269493
+1269497
+1269529
+1269547
+1269559
+1269563
+1269571
+1269589
+1269601
+1269641
+1269643
+1269683
+1269691
+1269703
+1269731
+1269733
+1269743
+1269757
+1269797
+1269847
+1269859
+1269869
+1269871
+1269901
+1269907
+1269911
+1269923
+1269929
+1269937
+1269953
+1269971
+1270001
+1270013
+1270033
+1270051
+1270063
+1270067
+1270079
+1270097
+1270103
+1270111
+1270123
+1270141
+1270147
+1270151
+1270183
+1270193
+1270201
+1270231
+1270237
+1270249
+1270271
+1270279
+1270301
+1270309
+1270319
+1270327
+1270333
+1270337
+1270343
+1270361
+1270391
+1270417
+1270421
+1270429
+1270433
+1270441
+1270471
+1270483
+1270499
+1270513
+1270531
+1270537
+1270541
+1270547
+1270559
+1270561
+1270567
+1270571
+1270573
+1270579
+1270609
+1270627
+1270639
+1270649
+1270651
+1270657
+1270667
+1270669
+1270679
+1270747
+1270757
+1270771
+1270817
+1270823
+1270849
+1270859
+1270861
+1270879
+1270897
+1270901
+1270909
+1270933
+1270943
+1270961
+1270981
+1271027
+1271029
+1271033
+1271047
+1271051
+1271059
+1271069
+1271087
+1271089
+1271111
+1271117
+1271129
+1271147
+1271161
+1271167
+1271173
+1271183
+1271197
+1271201
+1271203
+1271213
+1271227
+1271239
+1271251
+1271293
+1271299
+1271317
+1271321
+1271339
+1271351
+1271353
+1271359
+1271383
+1271393
+1271399
+1271401
+1271419
+1271429
+1271449
+1271471
+1271483
+1271503
+1271507
+1271513
+1271521
+1271531
+1271551
+1271561
+1271597
+1271603
+1271609
+1271657
+1271659
+1271671
+1271687
+1271701
+1271717
+1271731
+1271747
+1271749
+1271791
+1271797
+1271807
+1271813
+1271827
+1271833
+1271839
+1271843
+1271849
+1271903
+1271927
+1271929
+1271939
+1271953
+1271971
+1271987
+1271999
+1272001
+1272043
+1272049
+1272067
+1272071
+1272079
+1272091
+1272109
+1272113
+1272133
+1272151
+1272157
+1272163
+1272169
+1272191
+1272203
+1272211
+1272223
+1272233
+1272247
+1272253
+1272269
+1272281
+1272283
+1272287
+1272289
+1272329
+1272343
+1272347
+1272361
+1272367
+1272377
+1272379
+1272409
+1272421
+1272443
+1272451
+1272461
+1272539
+1272547
+1272559
+1272577
+1272589
+1272617
+1272629
+1272631
+1272641
+1272647
+1272653
+1272673
+1272679
+1272749
+1272811
+1272827
+1272833
+1272847
+1272851
+1272857
+1272863
+1272881
+1272883
+1272893
+1272899
+1272913
+1272917
+1272919
+1272937
+1272941
+1272961
+1272983
+1272989
+1272991
+1273001
+1273021
+1273033
+1273037
+1273039
+1273087
+1273099
+1273109
+1273117
+1273121
+1273127
+1273157
+1273159
+1273199
+1273213
+1273231
+1273241
+1273267
+1273289
+1273291
+1273301
+1273309
+1273313
+1273331
+1273333
+1273343
+1273367
+1273381
+1273403
+1273409
+1273411
+1273417
+1273421
+1273423
+1273457
+1273463
+1273471
+1273483
+1273499
+1273507
+1273541
+1273543
+1273549
+1273561
+1273567
+1273609
+1273637
+1273639
+1273663
+1273673
+1273681
+1273687
+1273693
+1273721
+1273729
+1273733
+1273739
+1273757
+1273771
+1273781
+1273787
+1273823
+1273843
+1273879
+1273889
+1273891
+1273903
+1273907
+1273919
+1273933
+1273939
+1273957
+1273981
+1274011
+1274017
+1274041
+1274051
+1274071
+1274087
+1274089
+1274111
+1274113
+1274129
+1274137
+1274149
+1274183
+1274209
+1274227
+1274249
+1274267
+1274291
+1274293
+1274297
+1274309
+1274323
+1274333
+1274353
+1274363
+1274381
+1274389
+1274401
+1274411
+1274423
+1274437
+1274461
+1274509
+1274549
+1274557
+1274561
+1274599
+1274617
+1274621
+1274629
+1274633
+1274671
+1274701
+1274719
+1274723
+1274737
+1274759
+1274771
+1274773
+1274803
+1274851
+1274857
+1274873
+1274879
+1274899
+1274921
+1274929
+1274939
+1274941
+1274989
+1275011
+1275019
+1275041
+1275067
+1275107
+1275121
+1275133
+1275173
+1275179
+1275193
+1275199
+1275203
+1275227
+1275269
+1275277
+1275283
+1275293
+1275319
+1275341
+1275349
+1275359
+1275361
+1275401
+1275437
+1275457
+1275467
+1275499
+1275503
+1275523
+1275539
+1275541
+1275553
+1275559
+1275563
+1275569
+1275583
+1275601
+1275611
+1275643
+1275661
+1275667
+1275683
+1275691
+1275707
+1275709
+1275719
+1275737
+1275749
+1275751
+1275779
+1275803
+1275817
+1275823
+1275829
+1275839
+1275847
+1275851
+1275863
+1275877
+1275889
+1275893
+1275899
+1275931
+1275947
+1275973
+1275977
+1275979
+1276001
+1276007
+1276013
+1276027
+1276031
+1276039
+1276049
+1276057
+1276069
+1276103
+1276117
+1276123
+1276129
+1276133
+1276147
+1276157
+1276169
+1276183
+1276193
+1276213
+1276237
+1276243
+1276271
+1276279
+1276307
+1276313
+1276351
+1276357
+1276361
+1276397
+1276409
+1276433
+1276441
+1276447
+1276481
+1276501
+1276511
+1276529
+1276543
+1276571
+1276579
+1276589
+1276603
+1276619
+1276621
+1276631
+1276637
+1276657
+1276679
+1276687
+1276711
+1276721
+1276733
+1276739
+1276747
+1276763
+1276771
+1276777
+1276817
+1276829
+1276861
+1276867
+1276871
+1276889
+1276897
+1276903
+1276927
+1276949
+1276967
+1276969
+1276973
+1276987
+1276999
+1277011
+1277021
+1277039
+1277041
+1277063
+1277069
+1277071
+1277083
+1277093
+1277099
+1277113
+1277137
+1277147
+1277197
+1277207
+1277209
+1277233
+1277249
+1277257
+1277267
+1277299
+1277321
+1277323
+1277357
+1277359
+1277369
+1277387
+1277429
+1277449
+1277461
+1277477
+1277483
+1277491
+1277501
+1277543
+1277557
+1277569
+1277593
+1277597
+1277621
+1277629
+1277651
+1277657
+1277677
+1277699
+1277723
+1277729
+1277741
+1277743
+1277753
+1277761
+1277791
+1277803
+1277813
+1277819
+1277833
+1277849
+1277863
+1277867
+1277879
+1277897
+1277909
+1277911
+1277957
+1277971
+1277993
+1278007
+1278029
+1278031
+1278047
+1278097
+1278107
+1278113
+1278131
+1278139
+1278163
+1278181
+1278191
+1278197
+1278203
+1278209
+1278217
+1278227
+1278253
+1278287
+1278289
+1278323
+1278337
+1278341
+1278371
+1278373
+1278379
+1278391
+1278397
+1278401
+1278419
+1278437
+1278439
+1278463
+1278467
+1278479
+1278481
+1278493
+1278527
+1278551
+1278583
+1278601
+1278611
+1278617
+1278619
+1278623
+1278631
+1278637
+1278659
+1278671
+1278701
+1278709
+1278713
+1278721
+1278733
+1278769
+1278779
+1278787
+1278799
+1278803
+1278811
+1278817
+1278839
+1278857
+1278881
+1278899
+1278911
+1278983
+1278997
+1279001
+1279013
+1279021
+1279027
+1279039
+1279043
+1279081
+1279087
+1279093
+1279111
+1279123
+1279133
+1279141
+1279163
+1279171
+1279177
+1279181
+1279183
+1279189
+1279193
+1279211
+1279249
+1279253
+1279303
+1279307
+1279309
+1279319
+1279321
+1279337
+1279357
+1279361
+1279417
+1279427
+1279457
+1279459
+1279483
+1279493
+1279507
+1279511
+1279519
+1279541
+1279547
+1279549
+1279561
+1279583
+1279601
+1279609
+1279627
+1279643
+1279657
+1279661
+1279667
+1279673
+1279679
+1279687
+1279693
+1279703
+1279727
+1279753
+1279757
+1279787
+1279801
+1279807
+1279813
+1279819
+1279823
+1279843
+1279847
+1279853
+1279871
+1279877
+1279907
+1279919
+1279921
+1279931
+1279937
+1279961
+1279969
+1279997
+1280023
+1280101
+1280107
+1280113
+1280119
+1280129
+1280131
+1280141
+1280159
+1280161
+1280173
+1280179
+1280183
+1280221
+1280231
+1280267
+1280281
+1280291
+1280297
+1280309
+1280317
+1280333
+1280371
+1280399
+1280401
+1280407
+1280417
+1280431
+1280453
+1280473
+1280519
+1280537
+1280549
+1280561
+1280567
+1280597
+1280603
+1280623
+1280633
+1280651
+1280659
+1280677
+1280693
+1280707
+1280737
+1280743
+1280759
+1280761
+1280767
+1280789
+1280791
+1280803
+1280821
+1280833
+1280837
+1280857
+1280863
+1280869
+1280887
+1280921
+1280947
+1280969
+1280987
+1280989
+1281029
+1281041
+1281043
+1281047
+1281083
+1281089
+1281097
+1281101
+1281131
+1281149
+1281157
+1281167
+1281187
+1281193
+1281211
+1281221
+1281229
+1281253
+1281257
+1281263
+1281281
+1281283
+1281317
+1281331
+1281349
+1281367
+1281383
+1281389
+1281407
+1281431
+1281433
+1281439
+1281451
+1281457
+1281463
+1281503
+1281521
+1281523
+1281541
+1281547
+1281551
+1281563
+1281587
+1281649
+1281653
+1281667
+1281673
+1281677
+1281691
+1281697
+1281703
+1281727
+1281739
+1281751
+1281773
+1281779
+1281781
+1281799
+1281803
+1281809
+1281821
+1281823
+1281827
+1281853
+1281871
+1281883
+1281899
+1281937
+1281941
+1281961
+1281971
+1281979
+1281983
+1282007
+1282009
+1282031
+1282033
+1282051
+1282069
+1282079
+1282081
+1282093
+1282109
+1282117
+1282121
+1282133
+1282153
+1282163
+1282187
+1282201
+1282213
+1282231
+1282241
+1282261
+1282277
+1282279
+1282289
+1282297
+1282343
+1282349
+1282363
+1282381
+1282387
+1282399
+1282417
+1282423
+1282427
+1282451
+1282469
+1282471
+1282493
+1282499
+1282507
+1282511
+1282513
+1282517
+1282529
+1282543
+1282571
+1282577
+1282597
+1282607
+1282613
+1282627
+1282637
+1282639
+1282649
+1282657
+1282661
+1282681
+1282693
+1282703
+1282717
+1282739
+1282751
+1282763
+1282781
+1282783
+1282807
+1282817
+1282867
+1282877
+1282903
+1282907
+1282909
+1282913
+1282933
+1282943
+1282951
+1282961
+1282969
+1282993
+1283011
+1283017
+1283021
+1283027
+1283063
+1283069
+1283083
+1283099
+1283111
+1283119
+1283129
+1283137
+1283159
+1283167
+1283171
+1283173
+1283179
+1283207
+1283237
+1283297
+1283323
+1283333
+1283339
+1283353
+1283383
+1283389
+1283417
+1283437
+1283441
+1283473
+1283479
+1283509
+1283521
+1283537
+1283539
+1283543
+1283549
+1283563
+1283573
+1283591
+1283603
+1283677
+1283683
+1283701
+1283707
+1283717
+1283719
+1283731
+1283753
+1283759
+1283767
+1283771
+1283797
+1283831
+1283839
+1283873
+1283879
+1283881
+1283897
+1283903
+1283939
+1283941
+1283957
+1283969
+1283981
+1283983
+1284007
+1284037
+1284043
+1284047
+1284053
+1284083
+1284131
+1284169
+1284187
+1284209
+1284211
+1284223
+1284263
+1284271
+1284287
+1284293
+1284301
+1284313
+1284317
+1284329
+1284341
+1284373
+1284379
+1284383
+1284421
+1284427
+1284433
+1284443
+1284467
+1284473
+1284487
+1284511
+1284523
+1284541
+1284551
+1284553
+1284559
+1284583
+1284601
+1284617
+1284623
+1284631
+1284641
+1284659
+1284691
+1284709
+1284713
+1284737
+1284739
+1284763
+1284769
+1284791
+1284793
+1284823
+1284841
+1284847
+1284851
+1284863
+1284889
+1284901
+1284917
+1284931
+1284937
+1284967
+1284971
+1284977
+1284991
+1285021
+1285049
+1285051
+1285057
+1285061
+1285069
+1285099
+1285111
+1285117
+1285129
+1285139
+1285147
+1285159
+1285169
+1285181
+1285199
+1285213
+1285223
+1285231
+1285237
+1285247
+1285259
+1285267
+1285279
+1285283
+1285289
+1285301
+1285351
+1285381
+1285393
+1285397
+1285411
+1285429
+1285441
+1285451
+1285469
+1285481
+1285507
+1285511
+1285513
+1285517
+1285519
+1285547
+1285549
+1285553
+1285607
+1285619
+1285633
+1285649
+1285679
+1285699
+1285703
+1285717
+1285741
+1285747
+1285759
+1285763
+1285777
+1285789
+1285793
+1285799
+1285811
+1285813
+1285841
+1285847
+1285853
+1285859
+1285871
+1285877
+1285891
+1285903
+1285913
+1285937
+1285943
+1285969
+1285981
+1285993
+1286011
+1286017
+1286039
+1286071
+1286081
+1286093
+1286099
+1286107
+1286119
+1286147
+1286149
+1286177
+1286189
+1286191
+1286209
+1286227
+1286239
+1286261
+1286267
+1286269
+1286273
+1286287
+1286303
+1286323
+1286359
+1286371
+1286381
+1286387
+1286399
+1286419
+1286447
+1286489
+1286491
+1286503
+1286513
+1286521
+1286533
+1286557
+1286561
+1286569
+1286581
+1286587
+1286617
+1286629
+1286633
+1286641
+1286647
+1286653
+1286657
+1286669
+1286683
+1286693
+1286707
+1286711
+1286773
+1286777
+1286783
+1286797
+1286807
+1286819
+1286821
+1286833
+1286837
+1286839
+1286843
+1286881
+1286939
+1286941
+1286953
+1286959
+1286969
+1286981
+1286983
+1287007
+1287047
+1287059
+1287061
+1287067
+1287071
+1287101
+1287109
+1287131
+1287133
+1287157
+1287163
+1287173
+1287179
+1287197
+1287199
+1287217
+1287233
+1287239
+1287289
+1287323
+1287329
+1287343
+1287347
+1287353
+1287361
+1287371
+1287373
+1287401
+1287431
+1287457
+1287467
+1287469
+1287479
+1287487
+1287491
+1287499
+1287511
+1287541
+1287551
+1287553
+1287569
+1287589
+1287593
+1287607
+1287613
+1287623
+1287661
+1287683
+1287691
+1287697
+1287707
+1287731
+1287739
+1287743
+1287749
+1287751
+1287757
+1287761
+1287787
+1287799
+1287817
+1287821
+1287829
+1287841
+1287857
+1287883
+1287887
+1287899
+1287917
+1287947
+1287961
+1287967
+1287973
+1287983
+1287989
+1287997
+1288003
+1288009
+1288013
+1288033
+1288037
+1288043
+1288051
+1288057
+1288061
+1288099
+1288103
+1288109
+1288117
+1288163
+1288169
+1288171
+1288187
+1288193
+1288201
+1288213
+1288247
+1288249
+1288291
+1288307
+1288337
+1288349
+1288361
+1288363
+1288367
+1288393
+1288421
+1288423
+1288429
+1288439
+1288487
+1288513
+1288519
+1288531
+1288541
+1288543
+1288559
+1288571
+1288597
+1288603
+1288607
+1288613
+1288643
+1288649
+1288657
+1288691
+1288697
+1288699
+1288709
+1288711
+1288733
+1288769
+1288783
+1288799
+1288817
+1288823
+1288829
+1288831
+1288843
+1288849
+1288853
+1288871
+1288873
+1288877
+1288891
+1288919
+1288921
+1288933
+1288939
+1288951
+1288967
+1288981
+1288993
+1288997
+1289003
+1289009
+1289027
+1289039
+1289053
+1289077
+1289083
+1289111
+1289129
+1289149
+1289153
+1289159
+1289179
+1289213
+1289231
+1289237
+1289261
+1289273
+1289287
+1289303
+1289329
+1289333
+1289341
+1289363
+1289371
+1289381
+1289401
+1289411
+1289423
+1289429
+1289447
+1289459
+1289513
+1289531
+1289537
+1289551
+1289557
+1289567
+1289593
+1289597
+1289599
+1289621
+1289623
+1289627
+1289653
+1289657
+1289677
+1289711
+1289713
+1289731
+1289747
+1289749
+1289753
+1289779
+1289789
+1289801
+1289803
+1289831
+1289839
+1289851
+1289867
+1289881
+1289921
+1289927
+1289933
+1289963
+1289969
+1289971
+1290013
+1290019
+1290031
+1290049
+1290077
+1290083
+1290109
+1290131
+1290143
+1290151
+1290161
+1290167
+1290169
+1290173
+1290199
+1290203
+1290209
+1290257
+1290259
+1290287
+1290293
+1290299
+1290319
+1290329
+1290371
+1290379
+1290427
+1290431
+1290433
+1290439
+1290463
+1290467
+1290469
+1290491
+1290503
+1290533
+1290539
+1290551
+1290563
+1290571
+1290581
+1290593
+1290607
+1290629
+1290631
+1290637
+1290643
+1290649
+1290659
+1290673
+1290683
+1290719
+1290791
+1290811
+1290823
+1290847
+1290853
+1290857
+1290869
+1290901
+1290907
+1290923
+1290937
+1290983
+1291001
+1291007
+1291009
+1291019
+1291021
+1291063
+1291079
+1291111
+1291117
+1291139
+1291153
+1291159
+1291163
+1291177
+1291193
+1291211
+1291217
+1291219
+1291223
+1291229
+1291249
+1291271
+1291313
+1291321
+1291327
+1291343
+1291349
+1291357
+1291369
+1291379
+1291387
+1291391
+1291421
+1291447
+1291453
+1291471
+1291481
+1291483
+1291489
+1291501
+1291523
+1291547
+1291567
+1291579
+1291603
+1291637
+1291669
+1291673
+1291691
+1291783
+1291793
+1291799
+1291817
+1291819
+1291831
+1291861
+1291877
+1291883
+1291907
+1291909
+1291931
+1291957
+1291963
+1291967
+1291991
+1291999
+1292009
+1292023
+1292029
+1292063
+1292069
+1292089
+1292099
+1292113
+1292131
+1292141
+1292143
+1292149
+1292167
+1292177
+1292219
+1292237
+1292243
+1292251
+1292257
+1292261
+1292281
+1292293
+1292309
+1292329
+1292339
+1292353
+1292371
+1292383
+1292387
+1292419
+1292429
+1292441
+1292477
+1292491
+1292503
+1292509
+1292539
+1292549
+1292563
+1292567
+1292579
+1292587
+1292591
+1292593
+1292597
+1292609
+1292633
+1292639
+1292653
+1292657
+1292659
+1292693
+1292701
+1292713
+1292717
+1292729
+1292737
+1292783
+1292789
+1292801
+1292813
+1292831
+1292843
+1292857
+1292887
+1292927
+1292947
+1292953
+1292957
+1292971
+1292983
+1292989
+1292999
+1293001
+1293011
+1293031
+1293077
+1293119
+1293133
+1293137
+1293157
+1293169
+1293179
+1293199
+1293203
+1293233
+1293239
+1293247
+1293251
+1293277
+1293283
+1293287
+1293307
+1293317
+1293319
+1293323
+1293329
+1293361
+1293367
+1293373
+1293401
+1293419
+1293421
+1293433
+1293473
+1293491
+1293493
+1293499
+1293529
+1293533
+1293541
+1293553
+1293559
+1293583
+1293587
+1293613
+1293619
+1293647
+1293659
+1293701
+1293739
+1293757
+1293763
+1293791
+1293797
+1293821
+1293829
+1293839
+1293841
+1293857
+1293869
+1293899
+1293917
+1293923
+1293931
+1293947
+1293949
+1293961
+1293967
+1293977
+1293979
+1293983
+1294019
+1294021
+1294031
+1294037
+1294039
+1294061
+1294081
+1294087
+1294103
+1294121
+1294123
+1294129
+1294169
+1294177
+1294199
+1294201
+1294231
+1294253
+1294273
+1294277
+1294301
+1294303
+1294309
+1294339
+1294351
+1294361
+1294367
+1294369
+1294393
+1294399
+1294453
+1294459
+1294471
+1294477
+1294483
+1294561
+1294571
+1294583
+1294597
+1294609
+1294621
+1294627
+1294633
+1294639
+1294649
+1294651
+1294691
+1294721
+1294723
+1294729
+1294753
+1294757
+1294759
+1294817
+1294823
+1294841
+1294849
+1294939
+1294957
+1294967
+1294973
+1294987
+1294999
+1295003
+1295027
+1295033
+1295051
+1295057
+1295069
+1295071
+1295081
+1295089
+1295113
+1295131
+1295137
+1295159
+1295183
+1295191
+1295201
+1295207
+1295219
+1295221
+1295243
+1295263
+1295279
+1295293
+1295297
+1295299
+1295309
+1295317
+1295321
+1295323
+1295339
+1295347
+1295369
+1295377
+1295387
+1295389
+1295447
+1295473
+1295491
+1295501
+1295513
+1295533
+1295543
+1295549
+1295551
+1295561
+1295563
+1295603
+1295611
+1295617
+1295639
+1295647
+1295653
+1295681
+1295711
+1295717
+1295737
+1295741
+1295747
+1295761
+1295783
+1295803
+1295809
+1295813
+1295839
+1295849
+1295867
+1295869
+1295873
+1295881
+1295947
+1295953
+1295989
+1295993
+1296007
+1296011
+1296019
+1296023
+1296037
+1296041
+1296059
+1296077
+1296089
+1296101
+1296109
+1296137
+1296143
+1296167
+1296181
+1296187
+1296209
+1296227
+1296277
+1296283
+1296287
+1296293
+1296319
+1296331
+1296341
+1296343
+1296371
+1296391
+1296409
+1296413
+1296419
+1296467
+1296473
+1296481
+1296499
+1296511
+1296521
+1296523
+1296551
+1296557
+1296563
+1296571
+1296583
+1296587
+1296593
+1296601
+1296613
+1296623
+1296629
+1296649
+1296679
+1296689
+1296703
+1296721
+1296727
+1296749
+1296781
+1296787
+1296803
+1296817
+1296829
+1296833
+1296839
+1296877
+1296899
+1296907
+1296929
+1296949
+1296973
+1296983
+1297001
+1297003
+1297013
+1297019
+1297027
+1297057
+1297061
+1297063
+1297091
+1297103
+1297123
+1297129
+1297139
+1297147
+1297157
+1297169
+1297171
+1297193
+1297201
+1297211
+1297217
+1297229
+1297243
+1297249
+1297271
+1297273
+1297279
+1297297
+1297313
+1297333
+1297337
+1297349
+1297357
+1297367
+1297369
+1297393
+1297397
+1297399
+1297403
+1297411
+1297421
+1297447
+1297451
+1297459
+1297477
+1297487
+1297501
+1297507
+1297519
+1297523
+1297537
+1297561
+1297573
+1297601
+1297607
+1297619
+1297631
+1297633
+1297649
+1297651
+1297657
+1297669
+1297687
+1297693
+1297727
+1297739
+1297771
+1297781
+1297799
+1297841
+1297847
+1297853
+1297873
+1297927
+1297963
+1297973
+1297979
+1297993
+1298027
+1298039
+1298047
+1298053
+1298057
+1298111
+1298113
+1298117
+1298119
+1298131
+1298149
+1298161
+1298173
+1298191
+1298197
+1298221
+1298261
+1298279
+1298291
+1298309
+1298317
+1298329
+1298333
+1298351
+1298357
+1298371
+1298387
+1298467
+1298489
+1298491
+1298537
+1298551
+1298573
+1298581
+1298611
+1298617
+1298641
+1298651
+1298653
+1298699
+1298719
+1298723
+1298747
+1298771
+1298779
+1298789
+1298797
+1298809
+1298819
+1298831
+1298849
+1298863
+1298887
+1298909
+1298911
+1298923
+1298951
+1298963
+1298981
+1298989
+1299007
+1299013
+1299019
+1299029
+1299041
+1299059
+1299061
+1299079
+1299097
+1299101
+1299143
+1299169
+1299173
+1299187
+1299203
+1299209
+1299211
+1299223
+1299227
+1299257
+1299269
+1299283
+1299289
+1299299
+1299317
+1299323
+1299341
+1299343
+1299349
+1299359
+1299367
+1299377
+1299379
+1299437
+1299439
+1299449
+1299451
+1299457
+1299491
+1299499
+1299533
+1299541
+1299553
+1299583
+1299601
+1299631
+1299637
+1299647
+1299653
+1299673
+1299689
+1299709
diff --git a/control/BreakAndContinue.java b/control/BreakAndContinue.java
index 1faaaa034..d6c39738c 100644
--- a/control/BreakAndContinue.java
+++ b/control/BreakAndContinue.java
@@ -1,5 +1,5 @@
 // control/BreakAndContinue.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Break and continue keywords
@@ -7,14 +7,14 @@
 
 public class BreakAndContinue {
   public static void main(String[] args) {
-    for(int i = 0; i < 100; i++) { // [1]
+    for(int i = 0; i < 100; i++) {        // [1]
       if(i == 74) break; // Out of for loop
       if(i % 9 != 0) continue; // Next iteration
       System.out.print(i + " ");
     }
     System.out.println();
     // Using for-in:
-    for(int i : range(100)) { // [2]
+    for(int i : range(100)) {             // [2]
       if(i == 74) break; // Out of for loop
       if(i % 9 != 0) continue; // Next iteration
       System.out.print(i + " ");
@@ -22,7 +22,7 @@ public static void main(String[] args) {
     System.out.println();
     int i = 0;
     // An "infinite loop":
-    while(true) { // [3]
+    while(true) {                         // [3]
       i++;
       int j = i * 27;
       if(j == 1269) break; // Out of loop
diff --git a/control/CommaOperator.java b/control/CommaOperator.java
index eae2df824..995765188 100644
--- a/control/CommaOperator.java
+++ b/control/CommaOperator.java
@@ -1,5 +1,5 @@
 // control/CommaOperator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/control/ForInFloat.java b/control/ForInFloat.java
index cee845b57..c36236ef1 100644
--- a/control/ForInFloat.java
+++ b/control/ForInFloat.java
@@ -1,5 +1,5 @@
 // control/ForInFloat.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/control/ForInInt.java b/control/ForInInt.java
index f6b283a35..7adf5550d 100644
--- a/control/ForInInt.java
+++ b/control/ForInInt.java
@@ -1,5 +1,5 @@
 // control/ForInInt.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static onjava.Range.*;
diff --git a/control/ForInString.java b/control/ForInString.java
index 73e16538b..8b5ba601e 100644
--- a/control/ForInString.java
+++ b/control/ForInString.java
@@ -1,5 +1,5 @@
 // control/ForInString.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/control/IfElse.java b/control/IfElse.java
index f40a07b7f..b2fd79de9 100644
--- a/control/IfElse.java
+++ b/control/IfElse.java
@@ -1,5 +1,5 @@
 // control/IfElse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -8,7 +8,7 @@ public class IfElse {
   static void test(int testval, int target) {
     if(testval > target)
       result = +1;
-    else if(testval < target) // [1]
+    else if(testval < target)           // [1]
       result = -1;
     else
       result = 0; // Match
diff --git a/control/LabeledFor.java b/control/LabeledFor.java
index 2df79bad3..0cfe7bd95 100644
--- a/control/LabeledFor.java
+++ b/control/LabeledFor.java
@@ -1,5 +1,5 @@
 // control/LabeledFor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // For loops with "labeled break"/"labeled continue."
diff --git a/control/LabeledWhile.java b/control/LabeledWhile.java
index 961f5ff38..6c884cb80 100644
--- a/control/LabeledWhile.java
+++ b/control/LabeledWhile.java
@@ -1,5 +1,5 @@
 // control/LabeledWhile.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "While" with "labeled break" and "labeled continue."
diff --git a/control/ListCharacters.java b/control/ListCharacters.java
index 43efce9f5..dc4b7d2ca 100644
--- a/control/ListCharacters.java
+++ b/control/ListCharacters.java
@@ -1,5 +1,5 @@
 // control/ListCharacters.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // List all the lowercase ASCII letters
diff --git a/control/RandomBounds.java b/control/RandomBounds.java
index 6befc6f45..e0903f372 100644
--- a/control/RandomBounds.java
+++ b/control/RandomBounds.java
@@ -1,5 +1,5 @@
 // control/RandomBounds.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Does Math.random() produce 0.0 and 1.0?
diff --git a/control/StringSwitch.java b/control/StringSwitch.java
index 638cc4276..ac4694cf3 100644
--- a/control/StringSwitch.java
+++ b/control/StringSwitch.java
@@ -1,5 +1,5 @@
 // control/StringSwitch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/control/TestWithReturn.java b/control/TestWithReturn.java
index efe05c907..9b32ee845 100644
--- a/control/TestWithReturn.java
+++ b/control/TestWithReturn.java
@@ -1,5 +1,5 @@
 // control/TestWithReturn.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/control/TrueFalse.java b/control/TrueFalse.java
index e87dade4f..ad2da1a79 100644
--- a/control/TrueFalse.java
+++ b/control/TrueFalse.java
@@ -1,5 +1,5 @@
 // control/TrueFalse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/control/VowelsAndConsonants.java b/control/VowelsAndConsonants.java
index d3a192d0d..2b8b3e959 100644
--- a/control/VowelsAndConsonants.java
+++ b/control/VowelsAndConsonants.java
@@ -1,5 +1,5 @@
 // control/VowelsAndConsonants.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the switch statement
diff --git a/control/WhileTest.java b/control/WhileTest.java
index 075068cfe..a047c166c 100644
--- a/control/WhileTest.java
+++ b/control/WhileTest.java
@@ -1,5 +1,5 @@
 // control/WhileTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the while loop
diff --git a/enums/AlarmPoints.java b/enums/AlarmPoints.java
index a87311373..484ee4f63 100644
--- a/enums/AlarmPoints.java
+++ b/enums/AlarmPoints.java
@@ -1,5 +1,5 @@
 // enums/AlarmPoints.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package enums;
diff --git a/enums/BigEnumSet.java b/enums/BigEnumSet.java
index 52ac34458..8e2127b7a 100644
--- a/enums/BigEnumSet.java
+++ b/enums/BigEnumSet.java
@@ -1,5 +1,5 @@
 // enums/BigEnumSet.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/enums/Burrito2.java b/enums/Burrito2.java
index 8b92ab0da..5892eaf73 100644
--- a/enums/Burrito2.java
+++ b/enums/Burrito2.java
@@ -1,5 +1,5 @@
 // enums/Burrito2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java enums.Burrito2}
@@ -11,8 +11,7 @@ public class Burrito2 {
   public Burrito2(SpicinessEnum degree) {
     this.degree = degree;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Burrito is "+ degree;
   }
   public static void main(String[] args) {
diff --git a/enums/CarWash.java b/enums/CarWash.java
index 95800e8fb..1b6fc856f 100644
--- a/enums/CarWash.java
+++ b/enums/CarWash.java
@@ -1,5 +1,5 @@
 // enums/CarWash.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -7,44 +7,37 @@
 public class CarWash {
   public enum Cycle {
     UNDERBODY {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Spraying the underbody");
       }
     },
     WHEELWASH {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Washing the wheels");
       }
     },
     PREWASH {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Loosening the dirt");
       }
     },
     BASIC {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("The basic wash");
       }
     },
     HOTWAX {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Applying hot wax");
       }
     },
     RINSE {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Rinsing");
       }
     },
     BLOWDRY {
-      @Override
-      void action() {
+      @Override void action() {
         System.out.println("Blowing dry");
       }
     };
@@ -59,8 +52,7 @@ public void washCar() {
     for(Cycle c : cycles)
       c.action();
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return cycles.toString();
   }
   public static void main(String[] args) {
diff --git a/enums/Competitor.java b/enums/Competitor.java
index 09bf71413..5232d7d36 100644
--- a/enums/Competitor.java
+++ b/enums/Competitor.java
@@ -1,5 +1,5 @@
 // enums/Competitor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Switching one enum on another
diff --git a/enums/ConstantSpecificMethod.java b/enums/ConstantSpecificMethod.java
index 913aa2919..04ee956bb 100644
--- a/enums/ConstantSpecificMethod.java
+++ b/enums/ConstantSpecificMethod.java
@@ -1,5 +1,5 @@
 // enums/ConstantSpecificMethod.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -7,22 +7,19 @@
 
 public enum ConstantSpecificMethod {
   DATE_TIME {
-    @Override
-    String getInfo() {
+    @Override String getInfo() {
       return
         DateFormat.getDateInstance()
           .format(new Date());
     }
   },
   CLASSPATH {
-    @Override
-    String getInfo() {
+    @Override String getInfo() {
       return System.getenv("CLASSPATH");
     }
   },
   VERSION {
-    @Override
-    String getInfo() {
+    @Override String getInfo() {
       return System.getProperty("java.version");
     }
   };
@@ -33,9 +30,8 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-May 9, 2017
-C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\\gradle\wrapper\gradle-
-wrapper.jar
-1.8.0_112
+Jan 24, 2021
+C:\Git\OnJava8\ExtractedExamples\\gradle\wrapper\gradle
+-wrapper.jar
+1.8.0_41
 */
diff --git a/enums/EnumClass.java b/enums/EnumClass.java
index 061f8abfa..a7ec9cea2 100644
--- a/enums/EnumClass.java
+++ b/enums/EnumClass.java
@@ -1,5 +1,5 @@
 // enums/EnumClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Capabilities of the Enum class
diff --git a/enums/EnumMaps.java b/enums/EnumMaps.java
index f75c5cd46..2adeffcc9 100644
--- a/enums/EnumMaps.java
+++ b/enums/EnumMaps.java
@@ -1,5 +1,5 @@
 // enums/EnumMaps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Basics of EnumMaps
diff --git a/enums/EnumSets.java b/enums/EnumSets.java
index 0e749cadc..afb9fa7b1 100644
--- a/enums/EnumSets.java
+++ b/enums/EnumSets.java
@@ -1,5 +1,5 @@
 // enums/EnumSets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Operations on EnumSets
diff --git a/enums/Input.java b/enums/Input.java
index 3dc0ec440..c7be7babc 100644
--- a/enums/Input.java
+++ b/enums/Input.java
@@ -1,5 +1,5 @@
 // enums/Input.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -8,14 +8,12 @@ public enum Input {
   NICKEL(5), DIME(10), QUARTER(25), DOLLAR(100),
   TOOTHPASTE(200), CHIPS(75), SODA(100), SOAP(50),
   ABORT_TRANSACTION {
-    @Override
-    public int amount() { // Disallow
+    @Override public int amount() { // Disallow
       throw new RuntimeException("ABORT.amount()");
     }
   },
   STOP { // This must be the last instance.
-    @Override
-    public int amount() { // Disallow
+    @Override public int amount() { // Disallow
       throw new
         RuntimeException("SHUT_DOWN.amount()");
     }
diff --git a/enums/NonEnum.java b/enums/NonEnum.java
index 344407307..cbd1e72b5 100644
--- a/enums/NonEnum.java
+++ b/enums/NonEnum.java
@@ -1,5 +1,5 @@
 // enums/NonEnum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/enums/NotClasses.java b/enums/NotClasses.java
index 681e807d3..efd83c8fb 100644
--- a/enums/NotClasses.java
+++ b/enums/NotClasses.java
@@ -1,5 +1,5 @@
 // enums/NotClasses.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle}
@@ -7,20 +7,17 @@
 
 enum LikeClasses {
   WINKEN {
-    @Override
-    void behavior() {
+    @Override void behavior() {
       System.out.println("Behavior1");
     }
   },
   BLINKEN {
-    @Override
-    void behavior() {
+    @Override void behavior() {
       System.out.println("Behavior2");
     }
   },
   NOD {
-    @Override
-    void behavior() {
+    @Override void behavior() {
       System.out.println("Behavior3");
     }
   };
diff --git a/enums/Outcome.java b/enums/Outcome.java
index 0e2a25d60..75b343b5f 100644
--- a/enums/Outcome.java
+++ b/enums/Outcome.java
@@ -1,5 +1,5 @@
 // enums/Outcome.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package enums;
diff --git a/enums/OverrideConstantSpecific.java b/enums/OverrideConstantSpecific.java
index 28e3343be..a9ba41818 100644
--- a/enums/OverrideConstantSpecific.java
+++ b/enums/OverrideConstantSpecific.java
@@ -1,13 +1,12 @@
 // enums/OverrideConstantSpecific.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public enum OverrideConstantSpecific {
   NUT, BOLT,
   WASHER {
-    @Override
-    void f() {
+    @Override void f() {
       System.out.println("Overridden method");
     }
   };
diff --git a/enums/OzWitch.java b/enums/OzWitch.java
index c9eedb4fd..275961a12 100644
--- a/enums/OzWitch.java
+++ b/enums/OzWitch.java
@@ -1,5 +1,5 @@
 // enums/OzWitch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The witches in the land of Oz
diff --git a/enums/PostOffice.java b/enums/PostOffice.java
index 056348206..c5faa8cb4 100644
--- a/enums/PostOffice.java
+++ b/enums/PostOffice.java
@@ -1,5 +1,5 @@
 // enums/PostOffice.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Modeling a post office
@@ -20,8 +20,9 @@ enum ReturnAddress {MISSING,OK1,OK2,OK3,OK4,OK5}
   ReturnAddress returnAddress;
   static long counter = 0;
   long id = counter++;
-  @Override
-  public String toString() { return "Mail " + id; }
+  @Override public String toString() {
+    return "Mail " + id;
+  }
   public String details() {
     return toString() +
       ", General Delivery: " + generalDelivery +
@@ -48,15 +49,12 @@ public static Mail randomMail() {
   Iterable generator(final int count) {
     return new Iterable() {
       int n = count;
-      @Override
-      public Iterator iterator() {
+      @Override public Iterator iterator() {
         return new Iterator() {
-          @Override
-          public boolean hasNext() {
+          @Override public boolean hasNext() {
             return n-- > 0;
           }
-          @Override
-          public Mail next() {
+          @Override public Mail next() {
             return randomMail();
           }
           @Override
@@ -72,8 +70,7 @@ public void remove() { // Not implemented
 public class PostOffice {
   enum MailHandler {
     GENERAL_DELIVERY {
-      @Override
-      boolean handle(Mail m) {
+      @Override boolean handle(Mail m) {
         switch(m.generalDelivery) {
           case YES:
             System.out.println(
@@ -84,8 +81,7 @@ boolean handle(Mail m) {
       }
     },
     MACHINE_SCAN {
-      @Override
-      boolean handle(Mail m) {
+      @Override boolean handle(Mail m) {
         switch(m.scannability) {
           case UNSCANNABLE: return false;
           default:
@@ -100,8 +96,7 @@ boolean handle(Mail m) {
       }
     },
     VISUAL_INSPECTION {
-      @Override
-      boolean handle(Mail m) {
+      @Override boolean handle(Mail m) {
         switch(m.readability) {
           case ILLEGIBLE: return false;
           default:
@@ -116,8 +111,7 @@ boolean handle(Mail m) {
       }
     },
     RETURN_TO_SENDER {
-      @Override
-      boolean handle(Mail m) {
+      @Override boolean handle(Mail m) {
         switch(m.returnAddress) {
           case MISSING: return false;
           default:
diff --git a/enums/RandomTest.java b/enums/RandomTest.java
index 92f2e481b..724009735 100644
--- a/enums/RandomTest.java
+++ b/enums/RandomTest.java
@@ -1,5 +1,5 @@
 // enums/RandomTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/enums/Reflection.java b/enums/Reflection.java
index 822a134e8..d9ac05a7b 100644
--- a/enums/Reflection.java
+++ b/enums/Reflection.java
@@ -1,5 +1,5 @@
 // enums/Reflection.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Analyzing enums using reflection
diff --git a/enums/RoShamBo.java b/enums/RoShamBo.java
index 76b3d76fe..708584d98 100644
--- a/enums/RoShamBo.java
+++ b/enums/RoShamBo.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Common tools for RoShamBo examples
diff --git a/enums/RoShamBo1.java b/enums/RoShamBo1.java
index abf52c9c9..bf77aad82 100644
--- a/enums/RoShamBo1.java
+++ b/enums/RoShamBo1.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of multiple dispatching
@@ -16,8 +16,7 @@ interface Item {
 }
 
 class Paper implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
   @Override
@@ -26,13 +25,13 @@ public Outcome compete(Item it) {
   public Outcome eval(Scissors s) { return WIN; }
   @Override
   public Outcome eval(Rock r) { return LOSE; }
-  @Override
-  public String toString() { return "Paper"; }
+  @Override public String toString() {
+    return "Paper";
+  }
 }
 
 class Scissors implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
   @Override
@@ -41,13 +40,13 @@ public Outcome compete(Item it) {
   public Outcome eval(Scissors s) { return DRAW; }
   @Override
   public Outcome eval(Rock r) { return WIN; }
-  @Override
-  public String toString() { return "Scissors"; }
+  @Override public String toString() {
+    return "Scissors";
+  }
 }
 
 class Rock implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
   @Override
@@ -56,8 +55,9 @@ public Outcome compete(Item it) {
   public Outcome eval(Scissors s) { return LOSE; }
   @Override
   public Outcome eval(Rock r) { return DRAW; }
-  @Override
-  public String toString() { return "Rock"; }
+  @Override public String toString() {
+    return "Rock";
+  }
 }
 
 public class RoShamBo1 {
diff --git a/enums/RoShamBo2.java b/enums/RoShamBo2.java
index ec8ab25b1..16786562a 100644
--- a/enums/RoShamBo2.java
+++ b/enums/RoShamBo2.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Switching one enum on another
@@ -18,8 +18,7 @@ public enum RoShamBo2 implements Competitor {
     this.vSCISSORS = scissors;
     this.vROCK = rock;
   }
-  @Override
-  public Outcome compete(RoShamBo2 it) {
+  @Override public Outcome compete(RoShamBo2 it) {
     switch(it) {
       default:
       case PAPER: return vPAPER;
diff --git a/enums/RoShamBo3.java b/enums/RoShamBo3.java
index ffcd2cf17..91683dce7 100644
--- a/enums/RoShamBo3.java
+++ b/enums/RoShamBo3.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using constant-specific methods
@@ -9,8 +9,7 @@
 
 public enum RoShamBo3 implements Competitor {
   PAPER {
-    @Override
-    public Outcome compete(RoShamBo3 it) {
+    @Override public Outcome compete(RoShamBo3 it) {
       switch(it) {
         default: // To placate the compiler
         case PAPER: return DRAW;
@@ -20,8 +19,7 @@ public Outcome compete(RoShamBo3 it) {
     }
   },
   SCISSORS {
-    @Override
-    public Outcome compete(RoShamBo3 it) {
+    @Override public Outcome compete(RoShamBo3 it) {
       switch(it) {
         default:
         case PAPER: return WIN;
@@ -31,8 +29,7 @@ public Outcome compete(RoShamBo3 it) {
     }
   },
   ROCK {
-    @Override
-    public Outcome compete(RoShamBo3 it) {
+    @Override public Outcome compete(RoShamBo3 it) {
       switch(it) {
         default:
         case PAPER: return LOSE;
diff --git a/enums/RoShamBo4.java b/enums/RoShamBo4.java
index f0b473aef..2ad59aa96 100644
--- a/enums/RoShamBo4.java
+++ b/enums/RoShamBo4.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java enums.RoShamBo4}
diff --git a/enums/RoShamBo5.java b/enums/RoShamBo5.java
index 69885c017..8f6b996ec 100644
--- a/enums/RoShamBo5.java
+++ b/enums/RoShamBo5.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Multiple dispatching using an EnumMap of EnumMaps
@@ -27,8 +27,7 @@ static void initRow(RoShamBo5 it,
     row.put(RoShamBo5.SCISSORS, vSCISSORS);
     row.put(RoShamBo5.ROCK, vROCK);
   }
-  @Override
-  public Outcome compete(RoShamBo5 it) {
+  @Override public Outcome compete(RoShamBo5 it) {
     return table.get(this).get(it);
   }
   public static void main(String[] args) {
diff --git a/enums/RoShamBo6.java b/enums/RoShamBo6.java
index 164911d52..3d66d894d 100644
--- a/enums/RoShamBo6.java
+++ b/enums/RoShamBo6.java
@@ -1,5 +1,5 @@
 // enums/RoShamBo6.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Enums using "tables" instead of multiple dispatch
@@ -14,8 +14,7 @@ enum RoShamBo6 implements Competitor {
     { WIN, DRAW, LOSE }, // SCISSORS
     { LOSE, WIN, DRAW }, // ROCK
   };
-  @Override
-  public Outcome compete(RoShamBo6 other) {
+  @Override public Outcome compete(RoShamBo6 other) {
     return table[this.ordinal()][other.ordinal()];
   }
   public static void main(String[] args) {
diff --git a/enums/SecurityCategory.java b/enums/SecurityCategory.java
index 884cb56a2..18dd0f62a 100644
--- a/enums/SecurityCategory.java
+++ b/enums/SecurityCategory.java
@@ -1,5 +1,5 @@
 // enums/SecurityCategory.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // More succinct subcategorization of enums
diff --git a/enums/SpaceShip.java b/enums/SpaceShip.java
index 3623389e0..45a5485fb 100644
--- a/enums/SpaceShip.java
+++ b/enums/SpaceShip.java
@@ -1,5 +1,5 @@
 // enums/SpaceShip.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
@@ -7,8 +7,7 @@
 public enum SpaceShip {
   SCOUT, CARGO, TRANSPORT,
   CRUISER, BATTLESHIP, MOTHERSHIP;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     String id = name();
     String lower = id.substring(1).toLowerCase();
     return id.charAt(0) + lower;
diff --git a/enums/SpicinessEnum.java b/enums/SpicinessEnum.java
index eef6f89a4..02b54ee4d 100644
--- a/enums/SpicinessEnum.java
+++ b/enums/SpicinessEnum.java
@@ -1,5 +1,5 @@
 // enums/SpicinessEnum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package enums;
diff --git a/enums/TrafficLight.java b/enums/TrafficLight.java
index b018e02c7..a42089a7a 100644
--- a/enums/TrafficLight.java
+++ b/enums/TrafficLight.java
@@ -1,5 +1,5 @@
 // enums/TrafficLight.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Enums in switch statements
@@ -21,8 +21,7 @@ public void change() {
                    break;
     }
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "The traffic light is " + color;
   }
   public static void main(String[] args) {
diff --git a/enums/UpcastEnum.java b/enums/UpcastEnum.java
index a5df2a862..5665e2e3d 100644
--- a/enums/UpcastEnum.java
+++ b/enums/UpcastEnum.java
@@ -1,5 +1,5 @@
 // enums/UpcastEnum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // No values() method if you upcast an enum
diff --git a/enums/VendingMachine.java b/enums/VendingMachine.java
index bc7d7c19e..269dd0131 100644
--- a/enums/VendingMachine.java
+++ b/enums/VendingMachine.java
@@ -1,5 +1,5 @@
 // enums/VendingMachine.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java VendingMachine VendingMachineInput.txt}
@@ -37,8 +37,7 @@ public class VendingMachine {
   enum StateDuration { TRANSIENT } // Tagging enum
   enum State {
     RESTING {
-      @Override
-      void next(Input input) {
+      @Override void next(Input input) {
         switch(Category.categorize(input)) {
           case MONEY:
             amount += input.amount();
@@ -51,8 +50,7 @@ void next(Input input) {
       }
     },
     ADDING_MONEY {
-      @Override
-      void next(Input input) {
+      @Override void next(Input input) {
         switch(Category.categorize(input)) {
           case MONEY:
             amount += input.amount();
@@ -74,16 +72,14 @@ void next(Input input) {
       }
     },
     DISPENSING(StateDuration.TRANSIENT) {
-      @Override
-      void next() {
+      @Override void next() {
         System.out.println("here is your " + selection);
         amount -= selection.amount();
         state = GIVING_CHANGE;
       }
     },
     GIVING_CHANGE(StateDuration.TRANSIENT) {
-      @Override
-      void next() {
+      @Override void next() {
         if(amount > 0) {
           System.out.println("Your change: " + amount);
           amount = 0;
@@ -125,8 +121,7 @@ public static void main(String[] args) {
 
 // For a basic sanity check:
 class RandomInputSupplier implements Supplier {
-  @Override
-  public Input get() {
+  @Override public Input get() {
     return Input.randomSelection();
   }
 }
@@ -146,8 +141,7 @@ class FileInputSupplier implements Supplier {
       throw new RuntimeException(e);
     }
   }
-  @Override
-  public Input get() {
+  @Override public Input get() {
     if(!input.hasNext())
       return null;
     return Enum.valueOf(
diff --git a/enums/cartoons/EnumImplementation.java b/enums/cartoons/EnumImplementation.java
index 58902e3fc..5d1cb0d50 100644
--- a/enums/cartoons/EnumImplementation.java
+++ b/enums/cartoons/EnumImplementation.java
@@ -1,5 +1,5 @@
 // enums/cartoons/EnumImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An enum can implement an interface
@@ -14,8 +14,7 @@ enum CartoonCharacter
   SILLY, BOUNCY, NUTTY, BOB;
   private Random rand =
     new Random(47);
-  @Override
-  public CartoonCharacter get() {
+  @Override public CartoonCharacter get() {
     return values()[rand.nextInt(values().length)];
   }
 }
diff --git a/enums/menu/Course.java b/enums/menu/Course.java
index 96481f1eb..7cb54ef1a 100644
--- a/enums/menu/Course.java
+++ b/enums/menu/Course.java
@@ -1,5 +1,5 @@
 // enums/menu/Course.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package enums.menu;
diff --git a/enums/menu/Food.java b/enums/menu/Food.java
index 4b97f69ec..5592f9126 100644
--- a/enums/menu/Food.java
+++ b/enums/menu/Food.java
@@ -1,5 +1,5 @@
 // enums/menu/Food.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Subcategorization of enums within interfaces
diff --git a/enums/menu/Meal.java b/enums/menu/Meal.java
index 64bc496d6..48b7f723b 100644
--- a/enums/menu/Meal.java
+++ b/enums/menu/Meal.java
@@ -1,5 +1,5 @@
 // enums/menu/Meal.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java enums.menu.Meal}
diff --git a/enums/menu/Meal2.java b/enums/menu/Meal2.java
index df1b90a58..d5aea179c 100644
--- a/enums/menu/Meal2.java
+++ b/enums/menu/Meal2.java
@@ -1,5 +1,5 @@
 // enums/menu/Meal2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java enums.menu.Meal2}
diff --git a/enums/menu/TypeOfFood.java b/enums/menu/TypeOfFood.java
index 5e59e78bb..d11fce81c 100644
--- a/enums/menu/TypeOfFood.java
+++ b/enums/menu/TypeOfFood.java
@@ -1,5 +1,5 @@
 // enums/menu/TypeOfFood.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java enums.menu.TypeOfFood}
diff --git a/equalshashcode/ComposedEquality.java b/equalshashcode/ComposedEquality.java
index c224231ca..58ad001de 100644
--- a/equalshashcode/ComposedEquality.java
+++ b/equalshashcode/ComposedEquality.java
@@ -1,5 +1,5 @@
 // equalshashcode/ComposedEquality.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -11,8 +11,7 @@ class Part {
     this.ss = ss;
     this.dd = dd;
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof Part &&
       Objects.equals(ss, ((Part)rval).ss) &&
       Objects.equals(dd, ((Part)rval).dd);
@@ -26,8 +25,7 @@ public ComposedEquality(int i, String s, double d) {
     part = new Part(s, d);
     System.out.println("made 'ComposedEquality'");
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof ComposedEquality &&
       super.equals(rval) &&
       Objects.equals(part,
diff --git a/equalshashcode/CountedString.java b/equalshashcode/CountedString.java
index 5a6ec5fab..4b7c0aab7 100644
--- a/equalshashcode/CountedString.java
+++ b/equalshashcode/CountedString.java
@@ -1,5 +1,5 @@
 // equalshashcode/CountedString.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a good hashCode()
@@ -19,13 +19,11 @@ public CountedString(String str) {
       if(s2.equals(s))
         id++;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "String: " + s + " id: " + id +
       " hashCode(): " + hashCode();
   }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     // The very simple approach:
     // return s.hashCode() * id;
     // Using Joshua Bloch's recipe:
@@ -34,8 +32,7 @@ public int hashCode() {
     result = 37 * result + id;
     return result;
   }
-  @Override
-  public boolean equals(Object o) {
+  @Override public boolean equals(Object o) {
     return o instanceof CountedString &&
       Objects.equals(s, ((CountedString)o).s) &&
       Objects.equals(id, ((CountedString)o).id);
diff --git a/equalshashcode/DefaultComparison.java b/equalshashcode/DefaultComparison.java
index d855de369..1c5c03ab9 100644
--- a/equalshashcode/DefaultComparison.java
+++ b/equalshashcode/DefaultComparison.java
@@ -1,5 +1,5 @@
 // equalshashcode/DefaultComparison.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/equalshashcode/Equality.java b/equalshashcode/Equality.java
index 6ab13e5e9..46661bc8a 100644
--- a/equalshashcode/Equality.java
+++ b/equalshashcode/Equality.java
@@ -1,5 +1,5 @@
 // equalshashcode/Equality.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -14,8 +14,7 @@ public Equality(int i, String s, double d) {
     this.d = d;
     System.out.println("made 'Equality'");
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     if(rval == null)
       return false;
     if(rval == this)
diff --git a/equalshashcode/EqualityFactory.java b/equalshashcode/EqualityFactory.java
index 378b56b0d..1718cdba2 100644
--- a/equalshashcode/EqualityFactory.java
+++ b/equalshashcode/EqualityFactory.java
@@ -1,5 +1,5 @@
 // equalshashcode/EqualityFactory.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/equalshashcode/Groundhog.java b/equalshashcode/Groundhog.java
index 55c775633..bdc941114 100644
--- a/equalshashcode/Groundhog.java
+++ b/equalshashcode/Groundhog.java
@@ -1,5 +1,5 @@
 // equalshashcode/Groundhog.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Looks plausible, but doesn't work as a HashMap key
@@ -7,8 +7,7 @@
 public class Groundhog {
   protected int number;
   public Groundhog(int n) { number = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Groundhog #" + number;
   }
 }
diff --git a/equalshashcode/Groundhog2.java b/equalshashcode/Groundhog2.java
index 5348d1e52..124eaa9e8 100644
--- a/equalshashcode/Groundhog2.java
+++ b/equalshashcode/Groundhog2.java
@@ -1,5 +1,5 @@
 // equalshashcode/Groundhog2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A class that's used as a key in a HashMap
@@ -10,8 +10,7 @@ public class Groundhog2 extends Groundhog {
   public Groundhog2(int n) { super(n); }
   @Override
   public int hashCode() { return number; }
-  @Override
-  public boolean equals(Object o) {
+  @Override public boolean equals(Object o) {
     return o instanceof Groundhog2 &&
       Objects.equals(
         number, ((Groundhog2)o).number);
diff --git a/equalshashcode/IndividualTest.java b/equalshashcode/IndividualTest.java
index d8f509743..33bb9b96d 100644
--- a/equalshashcode/IndividualTest.java
+++ b/equalshashcode/IndividualTest.java
@@ -1,5 +1,5 @@
 // equalshashcode/IndividualTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import collections.MapOfList;
diff --git a/equalshashcode/MapEntry.java b/equalshashcode/MapEntry.java
index c6e28bf4e..fff73332a 100644
--- a/equalshashcode/MapEntry.java
+++ b/equalshashcode/MapEntry.java
@@ -1,5 +1,5 @@
 // equalshashcode/MapEntry.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A simple Map.Entry for sample Map implementations
@@ -12,31 +12,25 @@ public MapEntry(K key, V value) {
     this.key = key;
     this.value = value;
   }
-  @Override
-  public K getKey() { return key; }
-  @Override
-  public V getValue() { return value; }
-  @Override
-  public V setValue(V v) {
+  @Override public K getKey() { return key; }
+  @Override public V getValue() { return value; }
+  @Override public V setValue(V v) {
     V result = value;
     value = v;
     return result;
   }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     return Objects.hash(key, value);
   }
   @SuppressWarnings("unchecked")
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof MapEntry &&
       Objects.equals(key,
         ((MapEntry)rval).getKey()) &&
       Objects.equals(value,
         ((MapEntry)rval).getValue());
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return key + "=" + value;
   }
 }
diff --git a/equalshashcode/Prediction.java b/equalshashcode/Prediction.java
index c8ff97773..ab945fc52 100644
--- a/equalshashcode/Prediction.java
+++ b/equalshashcode/Prediction.java
@@ -1,5 +1,5 @@
 // equalshashcode/Prediction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Predicting the weather
@@ -7,8 +7,7 @@
 
 public class Prediction {
   private static Random rand = new Random(47);
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return rand.nextBoolean() ?
       "Six more weeks of Winter!" : "Early Spring!";
   }
diff --git a/equalshashcode/SimpleHashMap.java b/equalshashcode/SimpleHashMap.java
index f82022a19..b47806441 100644
--- a/equalshashcode/SimpleHashMap.java
+++ b/equalshashcode/SimpleHashMap.java
@@ -1,5 +1,5 @@
 // equalshashcode/SimpleHashMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A demonstration hashed Map
@@ -16,8 +16,7 @@ class SimpleHashMap extends AbstractMap {
   @SuppressWarnings("unchecked")
   LinkedList>[] buckets =
     new LinkedList[SIZE];
-  @Override
-  public V put(K key, V value) {
+  @Override public V put(K key, V value) {
     V oldValue = null;
     int index = Math.abs(key.hashCode()) % SIZE;
     if(buckets[index] == null)
@@ -40,8 +39,7 @@ public V put(K key, V value) {
       buckets[index].add(pair);
     return oldValue;
   }
-  @Override
-  public V get(Object key) {
+  @Override public V get(Object key) {
     int index = Math.abs(key.hashCode()) % SIZE;
     if(buckets[index] == null) return null;
     for(MapEntry iPair : buckets[index])
@@ -49,8 +47,7 @@ public V get(Object key) {
         return iPair.getValue();
     return null;
   }
-  @Override
-  public Set> entrySet() {
+  @Override public Set> entrySet() {
     Set> set= new HashSet<>();
     for(LinkedList> bucket : buckets) {
       if(bucket == null) continue;
diff --git a/equalshashcode/SlowMap.java b/equalshashcode/SlowMap.java
index 63f17092d..04d0a85d8 100644
--- a/equalshashcode/SlowMap.java
+++ b/equalshashcode/SlowMap.java
@@ -1,5 +1,5 @@
 // equalshashcode/SlowMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A Map implemented with ArrayLists
@@ -9,8 +9,7 @@
 public class SlowMap extends AbstractMap {
   private List keys = new ArrayList<>();
   private List values = new ArrayList<>();
-  @Override
-  public V put(K key, V value) {
+  @Override public V put(K key, V value) {
     V oldValue = get(key); // The old value or null
     if(!keys.contains(key)) {
       keys.add(key);
@@ -25,8 +24,7 @@ public V get(Object key) { // key: type Object, not K
       return null;
     return values.get(keys.indexOf(key));
   }
-  @Override
-  public Set> entrySet() {
+  @Override public Set> entrySet() {
     Set> set= new HashSet<>();
     Iterator ki = keys.iterator();
     Iterator vi = values.iterator();
diff --git a/equalshashcode/SpringDetector.java b/equalshashcode/SpringDetector.java
index 9b41bd3e2..d92f20b54 100644
--- a/equalshashcode/SpringDetector.java
+++ b/equalshashcode/SpringDetector.java
@@ -1,5 +1,5 @@
 // equalshashcode/SpringDetector.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // What will the weather be?
@@ -47,16 +47,16 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Groundhog #3: Six more weeks of Winter!
+Groundhog #5: Six more weeks of Winter!
+Groundhog #2: Early Spring!
+Groundhog #1: Six more weeks of Winter!
 Groundhog #0: Early Spring!
-Groundhog #8: Six more weeks of Winter!
-Groundhog #6: Early Spring!
+Groundhog #8: Early Spring!
+Groundhog #6: Six more weeks of Winter!
 Groundhog #4: Early Spring!
-Groundhog #2: Six more weeks of Winter!
-Groundhog #1: Early Spring!
-Groundhog #9: Early Spring!
-Groundhog #5: Six more weeks of Winter!
+Groundhog #3: Early Spring!
 Groundhog #7: Six more weeks of Winter!
+Groundhog #9: Six more weeks of Winter!
 Looking up prediction for Groundhog #3
 Key not found: Groundhog #3
 */
diff --git a/equalshashcode/SpringDetector2.java b/equalshashcode/SpringDetector2.java
index 1e136e477..fc0267562 100644
--- a/equalshashcode/SpringDetector2.java
+++ b/equalshashcode/SpringDetector2.java
@@ -1,5 +1,5 @@
 // equalshashcode/SpringDetector2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A working key
diff --git a/equalshashcode/StringHashCode.java b/equalshashcode/StringHashCode.java
index 222fa612a..e8c2062be 100644
--- a/equalshashcode/StringHashCode.java
+++ b/equalshashcode/StringHashCode.java
@@ -1,5 +1,5 @@
 // equalshashcode/StringHashCode.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/equalshashcode/SubtypeEquality.java b/equalshashcode/SubtypeEquality.java
index 90320c88e..8d86d6bad 100644
--- a/equalshashcode/SubtypeEquality.java
+++ b/equalshashcode/SubtypeEquality.java
@@ -1,5 +1,5 @@
 // equalshashcode/SubtypeEquality.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -15,20 +15,17 @@ class Animal {
     this.name = name;
     this.size = size;
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof Animal &&
       // Objects.equals(id, ((Animal)rval).id) && // [1]
       Objects.equals(name, ((Animal)rval).name) &&
       Objects.equals(size, ((Animal)rval).size);
   }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     return Objects.hash(name, size);
-    // return Objects.hash(name, size, id);  // [2]
+    // return Objects.hash(name, size, id);       // [2]
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return String.format("%s[%d]: %s %s %x",
       getClass().getSimpleName(), id,
       name, size, hashCode());
@@ -56,5 +53,5 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Dog[0]: Ralph MEDIUM a752aeee
+Dog[0]: Ralph MEDIUM 931523a9
 */
diff --git a/equalshashcode/SubtypeEquality2.java b/equalshashcode/SubtypeEquality2.java
index c0ac50573..a107409ff 100644
--- a/equalshashcode/SubtypeEquality2.java
+++ b/equalshashcode/SubtypeEquality2.java
@@ -1,5 +1,5 @@
 // equalshashcode/SubtypeEquality2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -8,8 +8,7 @@ class Dog2 extends Animal {
   Dog2(String name, Size size) {
     super(name, size);
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof Dog2 &&
       super.equals(rval);
   }
@@ -19,8 +18,7 @@ class Pig2 extends Animal {
   Pig2(String name, Size size) {
     super(name, size);
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof Pig2 &&
       super.equals(rval);
   }
@@ -35,6 +33,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Dog2[0]: Ralph MEDIUM a752aeee
-Pig2[1]: Ralph MEDIUM a752aeee
+Dog2[0]: Ralph MEDIUM 931523a9
+Pig2[1]: Ralph MEDIUM 931523a9
 */
diff --git a/equalshashcode/SuccinctEquality.java b/equalshashcode/SuccinctEquality.java
index 55a0d8de6..7564d5cc5 100644
--- a/equalshashcode/SuccinctEquality.java
+++ b/equalshashcode/SuccinctEquality.java
@@ -1,5 +1,5 @@
 // equalshashcode/SuccinctEquality.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -9,8 +9,7 @@ public SuccinctEquality(int i, String s, double d) {
     super(i, s, d);
     System.out.println("made 'SuccinctEquality'");
   }
-  @Override
-  public boolean equals(Object rval) {
+  @Override public boolean equals(Object rval) {
     return rval instanceof SuccinctEquality &&
       Objects.equals(i, ((SuccinctEquality)rval).i) &&
       Objects.equals(s, ((SuccinctEquality)rval).s) &&
diff --git a/exceptions/AlwaysFinally.java b/exceptions/AlwaysFinally.java
index bb2270f77..11d1e5dd6 100644
--- a/exceptions/AlwaysFinally.java
+++ b/exceptions/AlwaysFinally.java
@@ -1,5 +1,5 @@
 // exceptions/AlwaysFinally.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Finally is always executed
diff --git a/exceptions/AutoCloseableDetails.java b/exceptions/AutoCloseableDetails.java
index 24a22e9d6..3c0a0d036 100644
--- a/exceptions/AutoCloseableDetails.java
+++ b/exceptions/AutoCloseableDetails.java
@@ -1,5 +1,5 @@
 // exceptions/AutoCloseableDetails.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -8,7 +8,7 @@ class Reporter implements AutoCloseable {
   Reporter() {
     System.out.println("Creating " + name);
   }
-  public void close() {
+  @Override public void close() {
     System.out.println("Closing " + name);
   }
 }
diff --git a/exceptions/BodyException.java b/exceptions/BodyException.java
index 3e907f8ab..25a952a63 100644
--- a/exceptions/BodyException.java
+++ b/exceptions/BodyException.java
@@ -1,5 +1,5 @@
 // exceptions/BodyException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/Cleanup.java b/exceptions/Cleanup.java
index 3d072304f..0912783d0 100644
--- a/exceptions/Cleanup.java
+++ b/exceptions/Cleanup.java
@@ -1,5 +1,5 @@
 // exceptions/Cleanup.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Guaranteeing proper cleanup of a resource
diff --git a/exceptions/CleanupIdiom.java b/exceptions/CleanupIdiom.java
index e8dd62c46..fdf6bd1c9 100644
--- a/exceptions/CleanupIdiom.java
+++ b/exceptions/CleanupIdiom.java
@@ -1,5 +1,5 @@
 // exceptions/CleanupIdiom.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Disposable objects must be followed by a try-finally
diff --git a/exceptions/CloseExceptions.java b/exceptions/CloseExceptions.java
index 4309a888f..bc31496bc 100644
--- a/exceptions/CloseExceptions.java
+++ b/exceptions/CloseExceptions.java
@@ -1,5 +1,5 @@
 // exceptions/CloseExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -10,6 +10,7 @@ class Reporter2 implements AutoCloseable {
   Reporter2() {
     System.out.println("Creating " + name);
   }
+  @Override
   public void close() throws CloseException {
     System.out.println("Closing " + name);
   }
diff --git a/exceptions/ConstructorException.java b/exceptions/ConstructorException.java
index 54eaaba35..24191d1ce 100644
--- a/exceptions/ConstructorException.java
+++ b/exceptions/ConstructorException.java
@@ -1,5 +1,5 @@
 // exceptions/ConstructorException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/DynamicFields.java b/exceptions/DynamicFields.java
index da3b9617f..07f02b955 100644
--- a/exceptions/DynamicFields.java
+++ b/exceptions/DynamicFields.java
@@ -1,5 +1,5 @@
 // exceptions/DynamicFields.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A Class that dynamically adds fields to itself to
@@ -14,8 +14,7 @@ public DynamicFields(int initialSize) {
     for(int i = 0; i < initialSize; i++)
       fields[i] = new Object[] { null, null };
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     StringBuilder result = new StringBuilder();
     for(Object[] obj : fields) {
       result.append(obj[0]);
@@ -121,10 +120,10 @@ public static void main(String[] args) {
 df.getField("d") : A new value for d
 DynamicFieldsException
         at
-DynamicFields.setField(DynamicFields.java:65)
-        at DynamicFields.main(DynamicFields.java:97)
+DynamicFields.setField(DynamicFields.java:64)
+        at DynamicFields.main(DynamicFields.java:96)
 Caused by: java.lang.NullPointerException
         at
-DynamicFields.setField(DynamicFields.java:67)
+DynamicFields.setField(DynamicFields.java:66)
         ... 1 more
 */
diff --git a/exceptions/ExceptionMethods.java b/exceptions/ExceptionMethods.java
index bd6e82598..d94c0b298 100644
--- a/exceptions/ExceptionMethods.java
+++ b/exceptions/ExceptionMethods.java
@@ -1,5 +1,5 @@
 // exceptions/ExceptionMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating the Exception Methods
diff --git a/exceptions/ExceptionSilencer.java b/exceptions/ExceptionSilencer.java
index e418e9de8..c56132efe 100644
--- a/exceptions/ExceptionSilencer.java
+++ b/exceptions/ExceptionSilencer.java
@@ -1,5 +1,5 @@
 // exceptions/ExceptionSilencer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/ExtraFeatures.java b/exceptions/ExtraFeatures.java
index 8aa922afd..abf9d0bef 100644
--- a/exceptions/ExtraFeatures.java
+++ b/exceptions/ExtraFeatures.java
@@ -1,5 +1,5 @@
 // exceptions/ExtraFeatures.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Further embellishment of exception classes
@@ -13,8 +13,7 @@ class MyException2 extends Exception {
     this.x = x;
   }
   public int val() { return x; }
-  @Override
-  public String getMessage() {
+  @Override public String getMessage() {
     return "Detail Message: "+ x
       + " "+ super.getMessage();
   }
@@ -58,15 +57,15 @@ public static void main(String[] args) {
 /* Output:
 Throwing MyException2 from f()
 MyException2: Detail Message: 0 null
-        at ExtraFeatures.f(ExtraFeatures.java:24)
-        at ExtraFeatures.main(ExtraFeatures.java:38)
+        at ExtraFeatures.f(ExtraFeatures.java:23)
+        at ExtraFeatures.main(ExtraFeatures.java:37)
 Throwing MyException2 from g()
 MyException2: Detail Message: 0 Originated in g()
-        at ExtraFeatures.g(ExtraFeatures.java:29)
-        at ExtraFeatures.main(ExtraFeatures.java:43)
+        at ExtraFeatures.g(ExtraFeatures.java:28)
+        at ExtraFeatures.main(ExtraFeatures.java:42)
 Throwing MyException2 from h()
 MyException2: Detail Message: 47 Originated in h()
-        at ExtraFeatures.h(ExtraFeatures.java:34)
-        at ExtraFeatures.main(ExtraFeatures.java:48)
+        at ExtraFeatures.h(ExtraFeatures.java:33)
+        at ExtraFeatures.main(ExtraFeatures.java:47)
 e.val() = 47
 */
diff --git a/exceptions/FinallyWorks.java b/exceptions/FinallyWorks.java
index fc4fec0a4..9870849c3 100644
--- a/exceptions/FinallyWorks.java
+++ b/exceptions/FinallyWorks.java
@@ -1,5 +1,5 @@
 // exceptions/FinallyWorks.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The finally clause is always executed
diff --git a/exceptions/FullConstructors.java b/exceptions/FullConstructors.java
index f5b4c9ff2..bb10b0f1c 100644
--- a/exceptions/FullConstructors.java
+++ b/exceptions/FullConstructors.java
@@ -1,5 +1,5 @@
 // exceptions/FullConstructors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/Human.java b/exceptions/Human.java
index 7ee7dcaae..b35f77954 100644
--- a/exceptions/Human.java
+++ b/exceptions/Human.java
@@ -1,5 +1,5 @@
 // exceptions/Human.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Catching exception hierarchies
diff --git a/exceptions/InheritingExceptions.java b/exceptions/InheritingExceptions.java
index abb80c3b6..799134842 100644
--- a/exceptions/InheritingExceptions.java
+++ b/exceptions/InheritingExceptions.java
@@ -1,5 +1,5 @@
 // exceptions/InheritingExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating your own exceptions
diff --git a/exceptions/InputFile.java b/exceptions/InputFile.java
index 5c269851d..d843a8347 100644
--- a/exceptions/InputFile.java
+++ b/exceptions/InputFile.java
@@ -1,5 +1,5 @@
 // exceptions/InputFile.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Paying attention to exceptions in constructors
diff --git a/exceptions/InputFile2.java b/exceptions/InputFile2.java
index 74a68c3f1..4e8b8c49c 100644
--- a/exceptions/InputFile2.java
+++ b/exceptions/InputFile2.java
@@ -1,5 +1,5 @@
 // exceptions/InputFile2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/exceptions/LoggingExceptions.java b/exceptions/LoggingExceptions.java
index 0120ee17f..67dcac911 100644
--- a/exceptions/LoggingExceptions.java
+++ b/exceptions/LoggingExceptions.java
@@ -1,5 +1,5 @@
 // exceptions/LoggingExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An exception that reports through a Logger
@@ -33,13 +33,13 @@ public static void main(String[] args) {
 }
 /* Output:
 ___[ Error Output ]___
-May 09, 2017 6:07:17 AM LoggingException 
+Jan 24, 2021 8:48:54 AM LoggingException 
 SEVERE: LoggingException
         at
 LoggingExceptions.main(LoggingExceptions.java:20)
 
 Caught LoggingException
-May 09, 2017 6:07:17 AM LoggingException 
+Jan 24, 2021 8:48:54 AM LoggingException 
 SEVERE: LoggingException
         at
 LoggingExceptions.main(LoggingExceptions.java:25)
diff --git a/exceptions/LoggingExceptions2.java b/exceptions/LoggingExceptions2.java
index 21a921379..2d1c1683c 100644
--- a/exceptions/LoggingExceptions2.java
+++ b/exceptions/LoggingExceptions2.java
@@ -1,5 +1,5 @@
 // exceptions/LoggingExceptions2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Logging caught exceptions
@@ -25,7 +25,7 @@ public static void main(String[] args) {
 }
 /* Output:
 ___[ Error Output ]___
-May 09, 2017 6:07:17 AM LoggingExceptions2 logException
+Jan 24, 2021 8:48:54 AM LoggingExceptions2 logException
 SEVERE: java.lang.NullPointerException
         at
 LoggingExceptions2.main(LoggingExceptions2.java:17)
diff --git a/exceptions/LostMessage.java b/exceptions/LostMessage.java
index 1446d9033..75c57e1c2 100644
--- a/exceptions/LostMessage.java
+++ b/exceptions/LostMessage.java
@@ -1,19 +1,17 @@
 // exceptions/LostMessage.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // How an exception can be lost
 
 class VeryImportantException extends Exception {
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "A very important exception!";
   }
 }
 
 class HoHumException extends Exception {
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "A trivial exception";
   }
 }
diff --git a/exceptions/MainException.java b/exceptions/MainException.java
index 7a7e26387..a6378469d 100644
--- a/exceptions/MainException.java
+++ b/exceptions/MainException.java
@@ -1,5 +1,5 @@
 // exceptions/MainException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/exceptions/MessyExceptions.java b/exceptions/MessyExceptions.java
index e8f7fc9df..46d63337e 100644
--- a/exceptions/MessyExceptions.java
+++ b/exceptions/MessyExceptions.java
@@ -1,5 +1,5 @@
 // exceptions/MessyExceptions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/exceptions/MultiCatch.java b/exceptions/MultiCatch.java
index f97bde133..c54bab5ea 100644
--- a/exceptions/MultiCatch.java
+++ b/exceptions/MultiCatch.java
@@ -1,5 +1,5 @@
 // exceptions/MultiCatch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/MultiCatch2.java b/exceptions/MultiCatch2.java
index 4629e93f8..7dfd32dfe 100644
--- a/exceptions/MultiCatch2.java
+++ b/exceptions/MultiCatch2.java
@@ -1,5 +1,5 @@
 // exceptions/MultiCatch2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/MultipleReturns.java b/exceptions/MultipleReturns.java
index 3f667b335..cd8968cb6 100644
--- a/exceptions/MultipleReturns.java
+++ b/exceptions/MultipleReturns.java
@@ -1,5 +1,5 @@
 // exceptions/MultipleReturns.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/NeverCaught.java b/exceptions/NeverCaught.java
index c8bb0a2f7..bf8e101c2 100644
--- a/exceptions/NeverCaught.java
+++ b/exceptions/NeverCaught.java
@@ -1,5 +1,5 @@
 // exceptions/NeverCaught.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Ignoring RuntimeExceptions
diff --git a/exceptions/OnOffException1.java b/exceptions/OnOffException1.java
index 3333d815d..28caacc87 100644
--- a/exceptions/OnOffException1.java
+++ b/exceptions/OnOffException1.java
@@ -1,5 +1,5 @@
 // exceptions/OnOffException1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class OnOffException1 extends Exception {}
diff --git a/exceptions/OnOffException2.java b/exceptions/OnOffException2.java
index 0bb5e1644..99d149dae 100644
--- a/exceptions/OnOffException2.java
+++ b/exceptions/OnOffException2.java
@@ -1,5 +1,5 @@
 // exceptions/OnOffException2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class OnOffException2 extends Exception {}
diff --git a/exceptions/OnOffSwitch.java b/exceptions/OnOffSwitch.java
index fe05fa351..f50273e0c 100644
--- a/exceptions/OnOffSwitch.java
+++ b/exceptions/OnOffSwitch.java
@@ -1,5 +1,5 @@
 // exceptions/OnOffSwitch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Why use finally?
diff --git a/exceptions/PreciseRethrow.java b/exceptions/PreciseRethrow.java
index f8849a3d4..1dc44e4ce 100644
--- a/exceptions/PreciseRethrow.java
+++ b/exceptions/PreciseRethrow.java
@@ -1,5 +1,5 @@
 // exceptions/PreciseRethrow.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/RethrowNew.java b/exceptions/RethrowNew.java
index daa4ad418..1725d0a25 100644
--- a/exceptions/RethrowNew.java
+++ b/exceptions/RethrowNew.java
@@ -1,5 +1,5 @@
 // exceptions/RethrowNew.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Rethrow a different object from the one you caught
diff --git a/exceptions/Rethrowing.java b/exceptions/Rethrowing.java
index 5bf1a6357..7a9c7200a 100644
--- a/exceptions/Rethrowing.java
+++ b/exceptions/Rethrowing.java
@@ -1,5 +1,5 @@
 // exceptions/Rethrowing.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating fillInStackTrace()
diff --git a/exceptions/SameHandler.java b/exceptions/SameHandler.java
index 8c6805679..0e2b18252 100644
--- a/exceptions/SameHandler.java
+++ b/exceptions/SameHandler.java
@@ -1,5 +1,5 @@
 // exceptions/SameHandler.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/exceptions/StormyInning.java b/exceptions/StormyInning.java
index 644c10ba8..b12d3a944 100644
--- a/exceptions/StormyInning.java
+++ b/exceptions/StormyInning.java
@@ -1,5 +1,5 @@
 // exceptions/StormyInning.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overridden methods can throw only the exceptions
@@ -43,15 +43,12 @@ public StormyInning(String s)
   //- public void event() throws RainedOut {}
   // If the method doesn't already exist in the
   // base class, the exception is OK:
-  @Override
-  public void rainHard() throws RainedOut {}
+  @Override public void rainHard() throws RainedOut {}
   // You can choose to not throw any exceptions,
   // even if the base version does:
-  @Override
-  public void event() {}
+  @Override public void event() {}
   // Overridden methods can throw inherited exceptions:
-  @Override
-  public void atBat() throws PopFoul {}
+  @Override public void atBat() throws PopFoul {}
   public static void main(String[] args) {
     try {
       StormyInning si = new StormyInning();
diff --git a/exceptions/StreamsAreAutoCloseable.java b/exceptions/StreamsAreAutoCloseable.java
index c55bf417b..e07600c1e 100644
--- a/exceptions/StreamsAreAutoCloseable.java
+++ b/exceptions/StreamsAreAutoCloseable.java
@@ -1,5 +1,5 @@
 // exceptions/StreamsAreAutoCloseable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
@@ -13,12 +13,12 @@ public class StreamsAreAutoCloseable {
       Stream in = Files.lines(
         Paths.get("StreamsAreAutoCloseable.java"));
       PrintWriter outfile = new PrintWriter(
-        "Results.txt"); // [1]
+        "Results.txt");                         // [1]
     ) {
       in.skip(5)
         .limit(1)
         .map(String::toLowerCase)
         .forEachOrdered(outfile::println);
-    } // [2]
+    }                                           // [2]
   }
 }
diff --git a/exceptions/Switch.java b/exceptions/Switch.java
index 7d491d004..6fb0ec780 100644
--- a/exceptions/Switch.java
+++ b/exceptions/Switch.java
@@ -1,5 +1,5 @@
 // exceptions/Switch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -14,8 +14,7 @@ public void off() {
     state = false;
     System.out.println(this);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return state ? "on" : "off";
   }
 }
diff --git a/exceptions/TryAnything.java b/exceptions/TryAnything.java
index 9eeee07b1..faa446cd3 100644
--- a/exceptions/TryAnything.java
+++ b/exceptions/TryAnything.java
@@ -1,5 +1,5 @@
 // exceptions/TryAnything.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/exceptions/TryWithResources.java b/exceptions/TryWithResources.java
index cdc83a5cf..0ded56154 100644
--- a/exceptions/TryWithResources.java
+++ b/exceptions/TryWithResources.java
@@ -1,5 +1,5 @@
 // exceptions/TryWithResources.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/exceptions/TurnOffChecking.java b/exceptions/TurnOffChecking.java
index 898431b64..63e67ae7e 100644
--- a/exceptions/TurnOffChecking.java
+++ b/exceptions/TurnOffChecking.java
@@ -1,5 +1,5 @@
 // exceptions/TurnOffChecking.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Turning off" Checked exceptions
diff --git a/exceptions/WhoCalled.java b/exceptions/WhoCalled.java
index 4c4e01041..9bdfb5abf 100644
--- a/exceptions/WhoCalled.java
+++ b/exceptions/WhoCalled.java
@@ -1,5 +1,5 @@
 // exceptions/WhoCalled.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Programmatic access to stack trace information
diff --git a/exceptions/WithFinally.java b/exceptions/WithFinally.java
index 9d3efc3a4..d392d6be8 100644
--- a/exceptions/WithFinally.java
+++ b/exceptions/WithFinally.java
@@ -1,5 +1,5 @@
 // exceptions/WithFinally.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Finally Guarantees cleanup
diff --git a/files/AddAndSubtractPaths.java b/files/AddAndSubtractPaths.java
index f3984d19c..30cf4de18 100644
--- a/files/AddAndSubtractPaths.java
+++ b/files/AddAndSubtractPaths.java
@@ -1,5 +1,5 @@
 // files/AddAndSubtractPaths.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
@@ -52,36 +52,31 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Windows 10
-C:\Users\Bruce\Documents\GitHub
-(1)r on-
-java\ExtractedExamples\files\AddAndSubtractPaths.java
-RealPath: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files\AddAndSubtractPaths.java
-(2)r on-java\ExtractedExamples\strings\..\files
-RealPath: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
-(3)r on-java\ExtractedExamples\files
-RealPath: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
+Windows 8.1
+C:\Git
+(1)r OnJava8\ExtractedExamples\files\AddAndSubtractPath
+s.java
+RealPath: C:\Git\OnJava8\ExtractedExamples\files\AddAnd
+SubtractPaths.java
+(2)r OnJava8\ExtractedExamples\strings\..\files
+RealPath: C:\Git\OnJava8\ExtractedExamples\files
+(3)r OnJava8\ExtractedExamples\files
+RealPath: C:\Git\OnJava8\ExtractedExamples\files
 (4)  ..\..
-RealPath: C:\Users\Bruce\Documents\GitHub\on-java
+RealPath: C:\Git\OnJava8
 (5)  ..\..
-RealPath: C:\Users\Bruce\Documents\GitHub\on-java
-(6)r on-java
-RealPath: C:\Users\Bruce\Documents\GitHub\on-java
-(7)r on-java\ExtractedExamples\files\.\..\..
-RealPath: C:\Users\Bruce\Documents\GitHub\on-java
-(8)r on-java
-RealPath: C:\Users\Bruce\Documents\GitHub\on-java
-(9)r on-java\ExtractedExamples\files
-RealPath: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
-(10)r on-java\ExtractedExamples\strings
-RealPath: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\strings
+RealPath: C:\Git\OnJava8
+(6)r OnJava8
+RealPath: C:\Git\OnJava8
+(7)r OnJava8\ExtractedExamples\files\.\..\..
+RealPath: C:\Git\OnJava8
+(8)r OnJava8
+RealPath: C:\Git\OnJava8
+(9)r OnJava8\ExtractedExamples\files
+RealPath: C:\Git\OnJava8\ExtractedExamples\files
+(10)r OnJava8\ExtractedExamples\strings
+RealPath: C:\Git\OnJava8\ExtractedExamples\strings
 (11)  nonexistent
 java.nio.file.NoSuchFileException:
-C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files\nonexistent
+C:\Git\OnJava8\ExtractedExamples\files\nonexistent
 */
diff --git a/files/Directories.java b/files/Directories.java
index 10ad9beec..ffce7ecab 100644
--- a/files/Directories.java
+++ b/files/Directories.java
@@ -1,5 +1,5 @@
 // files/Directories.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -59,7 +59,7 @@ static void populateTestDir() throws Exception {
 test\bag
 test\bar
 test\baz
-test\DIR_5142667942049986036
+test\DIR_8683707748599240459
 test\foo
 test\Hello.txt
 *********
@@ -68,27 +68,27 @@ static void populateTestDir() throws Exception {
 test\bag\foo
 test\bag\foo\bar
 test\bag\foo\bar\baz
-test\bag\foo\bar\baz\8279660869874696036.tmp
+test\bag\foo\bar\baz\4316127347949967230.tmp
 test\bag\foo\bar\baz\File.txt
 test\bar
 test\bar\baz
 test\bar\baz\bag
 test\bar\baz\bag\foo
-test\bar\baz\bag\foo\1274043134240426261.tmp
+test\bar\baz\bag\foo\1223263495976065729.tmp
 test\bar\baz\bag\foo\File.txt
 test\baz
 test\baz\bag
 test\baz\bag\foo
 test\baz\bag\foo\bar
-test\baz\bag\foo\bar\6130572530014544105.tmp
+test\baz\bag\foo\bar\6666183168609095028.tmp
 test\baz\bag\foo\bar\File.txt
-test\DIR_5142667942049986036
-test\DIR_5142667942049986036\pre7704286843227113253.non
+test\DIR_8683707748599240459
+test\DIR_8683707748599240459\pre6366626804787365549.non
 test\foo
 test\foo\bar
 test\foo\bar\baz
 test\foo\bar\baz\bag
-test\foo\bar\baz\bag\5412864507741775436.tmp
+test\foo\bar\baz\bag\4712324129011589115.tmp
 test\foo\bar\baz\bag\File.txt
 test\Hello.txt
 */
diff --git a/files/FileSystemDemo.java b/files/FileSystemDemo.java
index 3d9024ca8..9f7d9b7df 100644
--- a/files/FileSystemDemo.java
+++ b/files/FileSystemDemo.java
@@ -1,5 +1,5 @@
 // files/FileSystemDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
@@ -26,16 +26,20 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Windows 10
-File Store: SSD (C:)
+Windows 8.1
+File Store: (C:)
+File Store: System Reserved (E:)
+File Store: (F:)
 Root Directory: C:\
 Root Directory: D:\
+Root Directory: E:\
+Root Directory: F:\
 Separator: \
 UserPrincipalLookupService:
-sun.nio.fs.WindowsFileSystem$LookupService$1@15db9742
+sun.nio.fs.WindowsFileSystem$LookupService$1@19e0bfd
 isOpen: true
 isReadOnly: false
 FileSystemProvider:
-sun.nio.fs.WindowsFileSystemProvider@6d06d69c
+sun.nio.fs.WindowsFileSystemProvider@139a55
 File Attribute Views: [owner, dos, acl, basic, user]
 */
diff --git a/files/Find.java b/files/Find.java
index ac97ebdce..d27c69ed7 100644
--- a/files/Find.java
+++ b/files/Find.java
@@ -1,5 +1,5 @@
 // files/Find.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle}
diff --git a/files/ListOfLines.java b/files/ListOfLines.java
index 6f9ef467d..ef1a7c4ec 100644
--- a/files/ListOfLines.java
+++ b/files/ListOfLines.java
@@ -1,5 +1,5 @@
 // files/ListOfLines.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/files/PartsOfPaths.java b/files/PartsOfPaths.java
index 1170fc688..ee9865d6a 100644
--- a/files/PartsOfPaths.java
+++ b/files/PartsOfPaths.java
@@ -1,5 +1,5 @@
 // files/PartsOfPaths.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
@@ -23,21 +23,15 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Windows 10
-Users
-Bruce
-Documents
-GitHub
-on-java
+Windows 8.1
+Git
+OnJava8
 ExtractedExamples
 files
 PartsOfPaths.java
 ends with '.java': false
-Users: false : false
-Bruce: false : false
-Documents: false : false
-GitHub: false : false
-on-java: false : false
+Git: false : false
+OnJava8: false : false
 ExtractedExamples: false : false
 files: false : false
 PartsOfPaths.java: false : true
diff --git a/files/PathAnalysis.java b/files/PathAnalysis.java
index 117119cdd..ee2922f07 100644
--- a/files/PathAnalysis.java
+++ b/files/PathAnalysis.java
@@ -1,5 +1,5 @@
 // files/PathAnalysis.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
@@ -38,7 +38,7 @@ static void say(String id, Object result) {
   }
 }
 /* Output:
-Windows 10
+Windows 8.1
 Exists: true
 Directory: false
 Executable: true
@@ -47,10 +47,10 @@ static void say(String id, Object result) {
 Writable: true
 notExists: false
 Hidden: false
-size: 1631
-FileStore: SSD (C:)
-LastModified: : 2017-05-09T12:07:00.428366Z
-Owner: MINDVIEWTOSHIBA\Bruce (User)
+size: 1617
+FileStore: (C:)
+LastModified: : 2021-01-24T15:48:37.461504Z
+Owner: GROOT\Bruce (User)
 ContentType: null
 SymbolicLink: false
 */
diff --git a/files/PathInfo.java b/files/PathInfo.java
index 96af9d938..019ca4594 100644
--- a/files/PathInfo.java
+++ b/files/PathInfo.java
@@ -1,5 +1,5 @@
 // files/PathInfo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
@@ -44,7 +44,7 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Windows 10
+Windows 8.1
 toString: C:\path\to\nowhere\NoFile.txt
 Exists: false
 RegularFile: false
@@ -63,40 +63,36 @@ public static void main(String[] args) {
 Parent: null
 Root: null
 ******************
-toString: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files\PathInfo.java
+toString:
+C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java
 Exists: true
 RegularFile: true
 Directory: false
 Absolute: true
 FileName: PathInfo.java
-Parent: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
+Parent: C:\Git\OnJava8\ExtractedExamples\files
 Root: C:\
 ******************
-toString: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
+toString: C:\Git\OnJava8\ExtractedExamples\files
 Exists: true
 RegularFile: false
 Directory: true
 Absolute: true
 FileName: files
-Parent: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples
+Parent: C:\Git\OnJava8\ExtractedExamples
 Root: C:\
 ******************
-toString: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files\PathInfo.java
+toString:
+C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java
 Exists: true
 RegularFile: true
 Directory: false
 Absolute: true
 FileName: PathInfo.java
-Parent: C:\Users\Bruce\Documents\GitHub\on-
-java\ExtractedExamples\files
+Parent: C:\Git\OnJava8\ExtractedExamples\files
 Root: C:\
 ******************
-URI: file:///C:/Users/Bruce/Documents/GitHub/on-
-java/ExtractedExamples/files/PathInfo.java
+URI: file:///C:/Git/OnJava8/ExtractedExamples/files/Pat
+hInfo.java
 true
 */
diff --git a/files/PathWatcher.java b/files/PathWatcher.java
index 162641d72..8a1f46107 100644
--- a/files/PathWatcher.java
+++ b/files/PathWatcher.java
@@ -1,5 +1,5 @@
 // files/PathWatcher.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle}
diff --git a/files/ReadLineStream.java b/files/ReadLineStream.java
index 64b0f562d..812ed1058 100644
--- a/files/ReadLineStream.java
+++ b/files/ReadLineStream.java
@@ -1,5 +1,5 @@
 // files/ReadLineStream.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
diff --git a/files/StreamInAndOut.java b/files/StreamInAndOut.java
index ec17c7008..4f7297d55 100644
--- a/files/StreamInAndOut.java
+++ b/files/StreamInAndOut.java
@@ -1,5 +1,5 @@
 // files/StreamInAndOut.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/files/TreeWatcher.java b/files/TreeWatcher.java
index f0660888d..1162ff807 100644
--- a/files/TreeWatcher.java
+++ b/files/TreeWatcher.java
@@ -1,5 +1,5 @@
 // files/TreeWatcher.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle}
diff --git a/files/Writing.java b/files/Writing.java
index 68a04fbcd..82745e4d5 100644
--- a/files/Writing.java
+++ b/files/Writing.java
@@ -1,5 +1,5 @@
 // files/Writing.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/functional/AnonymousClosure.java b/functional/AnonymousClosure.java
index 497a1a526..6faa0925e 100644
--- a/functional/AnonymousClosure.java
+++ b/functional/AnonymousClosure.java
@@ -1,5 +1,5 @@
 // functional/AnonymousClosure.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/BiConsumerPermutations.java b/functional/BiConsumerPermutations.java
index 75b7c32d5..091967fb1 100644
--- a/functional/BiConsumerPermutations.java
+++ b/functional/BiConsumerPermutations.java
@@ -1,5 +1,5 @@
 // functional/BiConsumerPermutations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/ClassFunctionals.java b/functional/ClassFunctionals.java
index e5101df4f..eb7548229 100644
--- a/functional/ClassFunctionals.java
+++ b/functional/ClassFunctionals.java
@@ -1,5 +1,5 @@
 // functional/ClassFunctionals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/functional/Closure1.java b/functional/Closure1.java
index 2f504f42c..90bd9671d 100644
--- a/functional/Closure1.java
+++ b/functional/Closure1.java
@@ -1,5 +1,5 @@
 // functional/Closure1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Closure2.java b/functional/Closure2.java
index 825cf4233..86129103d 100644
--- a/functional/Closure2.java
+++ b/functional/Closure2.java
@@ -1,5 +1,5 @@
 // functional/Closure2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Closure3.java b/functional/Closure3.java
index 811179fb8..40728b5f3 100644
--- a/functional/Closure3.java
+++ b/functional/Closure3.java
@@ -1,5 +1,5 @@
 // functional/Closure3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/functional/Closure4.java b/functional/Closure4.java
index 148aaf649..06f34afbf 100644
--- a/functional/Closure4.java
+++ b/functional/Closure4.java
@@ -1,5 +1,5 @@
 // functional/Closure4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Closure5.java b/functional/Closure5.java
index fb9aad779..dcd7a08f4 100644
--- a/functional/Closure5.java
+++ b/functional/Closure5.java
@@ -1,5 +1,5 @@
 // functional/Closure5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/functional/Closure6.java b/functional/Closure6.java
index 178f9b4a6..b102a67af 100644
--- a/functional/Closure6.java
+++ b/functional/Closure6.java
@@ -1,5 +1,5 @@
 // functional/Closure6.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Closure7.java b/functional/Closure7.java
index 9facdc062..098685296 100644
--- a/functional/Closure7.java
+++ b/functional/Closure7.java
@@ -1,5 +1,5 @@
 // functional/Closure7.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/functional/Closure8.java b/functional/Closure8.java
index 7ec059b2a..8cfa1041b 100644
--- a/functional/Closure8.java
+++ b/functional/Closure8.java
@@ -1,5 +1,5 @@
 // functional/Closure8.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/functional/Closure9.java b/functional/Closure9.java
index 4eddb47a0..4679e474e 100644
--- a/functional/Closure9.java
+++ b/functional/Closure9.java
@@ -1,5 +1,5 @@
 // functional/Closure9.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/functional/ConsumeFunction.java b/functional/ConsumeFunction.java
index ea84a24a1..328bd9fcf 100644
--- a/functional/ConsumeFunction.java
+++ b/functional/ConsumeFunction.java
@@ -1,5 +1,5 @@
 // functional/ConsumeFunction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/CtorReference.java b/functional/CtorReference.java
index 4c22bdf1c..ec74b00f7 100644
--- a/functional/CtorReference.java
+++ b/functional/CtorReference.java
@@ -1,5 +1,5 @@
 // functional/CtorReference.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -25,9 +25,9 @@ interface Make2Args {
 
 public class CtorReference {
   public static void main(String[] args) {
-    MakeNoArgs mna = Dog::new; // [1]
-    Make1Arg m1a = Dog::new;   // [2]
-    Make2Args m2a = Dog::new;  // [3]
+    MakeNoArgs mna = Dog::new;        // [1]
+    Make1Arg m1a = Dog::new;          // [2]
+    Make2Args m2a = Dog::new;         // [3]
 
     Dog dn = mna.make();
     Dog d1 = m1a.make("Comet");
diff --git a/functional/CurriedIntAdd.java b/functional/CurriedIntAdd.java
index e89ac8e28..6c430f70e 100644
--- a/functional/CurriedIntAdd.java
+++ b/functional/CurriedIntAdd.java
@@ -1,5 +1,5 @@
 // functional/CurriedIntAdd.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Curry3Args.java b/functional/Curry3Args.java
index 0fd376bc2..5a307480f 100644
--- a/functional/Curry3Args.java
+++ b/functional/Curry3Args.java
@@ -1,5 +1,5 @@
 // functional/Curry3Args.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/CurryingAndPartials.java b/functional/CurryingAndPartials.java
index 0addb8115..d92912a72 100644
--- a/functional/CurryingAndPartials.java
+++ b/functional/CurryingAndPartials.java
@@ -1,5 +1,5 @@
 // functional/CurryingAndPartials.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -12,12 +12,12 @@ static String uncurried(String a, String b) {
    public static void main(String[] args) {
       // Curried function:
       Function> sum =
-         a -> b -> a + b; // [1]
+         a -> b -> a + b;                         // [1]
 
       System.out.println(uncurried("Hi ", "Ho"));
 
       Function
-        hi = sum.apply("Hi "); // [2]
+        hi = sum.apply("Hi ");                    // [2]
       System.out.println(hi.apply("Ho"));
 
       // Partial application:
diff --git a/functional/FunctionComposition.java b/functional/FunctionComposition.java
index a183039d0..f20b115ca 100644
--- a/functional/FunctionComposition.java
+++ b/functional/FunctionComposition.java
@@ -1,5 +1,5 @@
 // functional/FunctionComposition.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/FunctionVariants.java b/functional/FunctionVariants.java
index a62054620..0c4b42484 100644
--- a/functional/FunctionVariants.java
+++ b/functional/FunctionVariants.java
@@ -1,5 +1,5 @@
 // functional/FunctionVariants.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/FunctionWithWrapped.java b/functional/FunctionWithWrapped.java
index b654da654..253f8820c 100644
--- a/functional/FunctionWithWrapped.java
+++ b/functional/FunctionWithWrapped.java
@@ -1,5 +1,5 @@
 // functional/FunctionWithWrapped.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/FunctionalAnnotation.java b/functional/FunctionalAnnotation.java
index 84cec6498..29cc33056 100644
--- a/functional/FunctionalAnnotation.java
+++ b/functional/FunctionalAnnotation.java
@@ -1,5 +1,5 @@
 // functional/FunctionalAnnotation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/IntCall.java b/functional/IntCall.java
index a8256a00c..910c2ac35 100644
--- a/functional/IntCall.java
+++ b/functional/IntCall.java
@@ -1,5 +1,5 @@
 // functional/IntCall.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/LambdaExpressions.java b/functional/LambdaExpressions.java
index fe7e3acb1..3c4a40b03 100644
--- a/functional/LambdaExpressions.java
+++ b/functional/LambdaExpressions.java
@@ -1,5 +1,5 @@
 // functional/LambdaExpressions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -17,15 +17,15 @@ interface Multi {
 
 public class LambdaExpressions {
 
-  static Body bod = h -> h + " No Parens!"; // [1]
+  static Body bod = h -> h + " No Parens!";      // [1]
 
   static Body bod2 = (h) -> h + " More details"; // [2]
 
-  static Description desc = () -> "Short info"; // [3]
+  static Description desc = () -> "Short info";  // [3]
 
-  static Multi mult = (h, n) -> h + n; // [4]
+  static Multi mult = (h, n) -> h + n;           // [4]
 
-  static Description moreLines = () -> { // [5]
+  static Description moreLines = () -> {         // [5]
     System.out.println("moreLines()");
     return "from moreLines()";
   };
diff --git a/functional/MethodConversion.java b/functional/MethodConversion.java
index 008ecfc0c..15e780749 100644
--- a/functional/MethodConversion.java
+++ b/functional/MethodConversion.java
@@ -1,5 +1,5 @@
 // functional/MethodConversion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/MethodReferences.java b/functional/MethodReferences.java
index 63bc365d8..4cd593455 100644
--- a/functional/MethodReferences.java
+++ b/functional/MethodReferences.java
@@ -1,47 +1,47 @@
 // functional/MethodReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
 
-interface Callable { // [1]
+interface Callable {                        // [1]
   void call(String s);
 }
 
 class Describe {
-  void show(String msg) { // [2]
+  void show(String msg) {                   // [2]
     System.out.println(msg);
   }
 }
 
 public class MethodReferences {
-  static void hello(String name) { // [3]
+  static void hello(String name) {          // [3]
     System.out.println("Hello, " + name);
   }
   static class Description {
     String about;
     Description(String desc) { about = desc; }
-    void help(String msg) { // [4]
+    void help(String msg) {                 // [4]
       System.out.println(about + " " + msg);
     }
   }
   static class Helper {
-    static void assist(String msg) { // [5]
+    static void assist(String msg) {        // [5]
       System.out.println(msg);
     }
   }
   public static void main(String[] args) {
     Describe d = new Describe();
-    Callable c = d::show; // [6]
-    c.call("call()"); // [7]
+    Callable c = d::show;                   // [6]
+    c.call("call()");                       // [7]
 
-    c = MethodReferences::hello; // [8]
+    c = MethodReferences::hello;            // [8]
     c.call("Bob");
 
-    c = new Description("valuable")::help; // [9]
+    c = new Description("valuable")::help;  // [9]
     c.call("information");
 
-    c = Helper::assist; // [10]
+    c = Helper::assist;                     // [10]
     c.call("Help!");
   }
 }
diff --git a/functional/MultiUnbound.java b/functional/MultiUnbound.java
index 4209fb040..67defb7d5 100644
--- a/functional/MultiUnbound.java
+++ b/functional/MultiUnbound.java
@@ -1,5 +1,5 @@
 // functional/MultiUnbound.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Unbound methods with multiple arguments
diff --git a/functional/PredicateComposition.java b/functional/PredicateComposition.java
index f95bbcbdd..40ddb6001 100644
--- a/functional/PredicateComposition.java
+++ b/functional/PredicateComposition.java
@@ -1,5 +1,5 @@
 // functional/PredicateComposition.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/ProduceFunction.java b/functional/ProduceFunction.java
index 034716011..5f0b0940b 100644
--- a/functional/ProduceFunction.java
+++ b/functional/ProduceFunction.java
@@ -1,15 +1,15 @@
 // functional/ProduceFunction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
 
 interface
-FuncSS extends Function {} // [1]
+FuncSS extends Function {}   // [1]
 
 public class ProduceFunction {
   static FuncSS produce() {
-    return s -> s.toLowerCase(); // [2]
+    return s -> s.toLowerCase();             // [2]
   }
   public static void main(String[] args) {
     FuncSS f = produce();
diff --git a/functional/RecursiveFactorial.java b/functional/RecursiveFactorial.java
index 2d6104413..5ddb0860c 100644
--- a/functional/RecursiveFactorial.java
+++ b/functional/RecursiveFactorial.java
@@ -1,5 +1,5 @@
 // functional/RecursiveFactorial.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/RecursiveFibonacci.java b/functional/RecursiveFibonacci.java
index 9be43dc62..4b58bb06c 100644
--- a/functional/RecursiveFibonacci.java
+++ b/functional/RecursiveFibonacci.java
@@ -1,5 +1,5 @@
 // functional/RecursiveFibonacci.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/RunnableMethodReference.java b/functional/RunnableMethodReference.java
index 5fb8cd002..e135d06f6 100644
--- a/functional/RunnableMethodReference.java
+++ b/functional/RunnableMethodReference.java
@@ -1,5 +1,5 @@
 // functional/RunnableMethodReference.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Method references with interface Runnable
diff --git a/functional/SharedStorage.java b/functional/SharedStorage.java
index c2a41f66a..0a2489253 100644
--- a/functional/SharedStorage.java
+++ b/functional/SharedStorage.java
@@ -1,5 +1,5 @@
 // functional/SharedStorage.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/functional/Strategize.java b/functional/Strategize.java
index e46c91434..b4358ee7e 100644
--- a/functional/Strategize.java
+++ b/functional/Strategize.java
@@ -1,5 +1,5 @@
 // functional/Strategize.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -8,6 +8,7 @@ interface Strategy {
 }
 
 class Soft implements Strategy {
+  @Override
   public String approach(String msg) {
     return msg.toLowerCase() + "?";
   }
@@ -23,7 +24,7 @@ public class Strategize {
   Strategy strategy;
   String msg;
   Strategize(String msg) {
-    strategy = new Soft(); // [1]
+    strategy = new Soft();                // [1]
     this.msg = msg;
   }
   void communicate() {
@@ -34,19 +35,19 @@ void changeStrategy(Strategy strategy) {
   }
   public static void main(String[] args) {
     Strategy[] strategies = {
-      new Strategy() { // [2]
+      new Strategy() {                    // [2]
         public String approach(String msg) {
           return msg.toUpperCase() + "!";
         }
       },
-      msg -> msg.substring(0, 5), // [3]
-      Unrelated::twice // [4]
+      msg -> msg.substring(0, 5),         // [3]
+      Unrelated::twice                    // [4]
     };
     Strategize s = new Strategize("Hello there");
     s.communicate();
     for(Strategy newStrategy : strategies) {
-      s.changeStrategy(newStrategy); // [5]
-      s.communicate(); // [6]
+      s.changeStrategy(newStrategy);      // [5]
+      s.communicate();                    // [6]
     }
   }
 }
diff --git a/functional/TransformFunction.java b/functional/TransformFunction.java
index 1a046eb12..dd3f7590b 100644
--- a/functional/TransformFunction.java
+++ b/functional/TransformFunction.java
@@ -1,17 +1,15 @@
 // functional/TransformFunction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
 
 class I {
-  @Override
-  public String toString() { return "I"; }
+  @Override public String toString() { return "I"; }
 }
 
 class O {
-  @Override
-  public String toString() { return "O"; }
+  @Override public String toString() { return "O"; }
 }
 
 public class TransformFunction {
diff --git a/functional/TriFunction.java b/functional/TriFunction.java
index 760496214..40b91473a 100644
--- a/functional/TriFunction.java
+++ b/functional/TriFunction.java
@@ -1,5 +1,5 @@
 // functional/TriFunction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/TriFunctionTest.java b/functional/TriFunctionTest.java
index fccf8b9a2..5af98922c 100644
--- a/functional/TriFunctionTest.java
+++ b/functional/TriFunctionTest.java
@@ -1,5 +1,5 @@
 // functional/TriFunctionTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/functional/UnboundMethodReference.java b/functional/UnboundMethodReference.java
index da2c78729..6c02b8b91 100644
--- a/functional/UnboundMethodReference.java
+++ b/functional/UnboundMethodReference.java
@@ -1,5 +1,5 @@
 // functional/UnboundMethodReference.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Method reference without an object
@@ -18,10 +18,10 @@ interface TransformX {
 
 public class UnboundMethodReference {
   public static void main(String[] args) {
-    // MakeString ms = X::f; // [1]
+    // MakeString ms = X::f;                // [1]
     TransformX sp = X::f;
     X x = new X();
-    System.out.println(sp.transform(x)); // [2]
+    System.out.println(sp.transform(x));    // [2]
     System.out.println(x.f()); // Same effect
   }
 }
diff --git a/generics/Amphibian.java b/generics/Amphibian.java
index 5e76d8b18..0dc8647f5 100644
--- a/generics/Amphibian.java
+++ b/generics/Amphibian.java
@@ -1,5 +1,5 @@
 // generics/Amphibian.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Amphibian {}
diff --git a/generics/Apply.java b/generics/Apply.java
index c93786113..8e3a23c97 100644
--- a/generics/Apply.java
+++ b/generics/Apply.java
@@ -1,5 +1,5 @@
 // generics/Apply.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
diff --git a/generics/ApplyFunctional.java b/generics/ApplyFunctional.java
index 4cce156e8..2275ca854 100644
--- a/generics/ApplyFunctional.java
+++ b/generics/ApplyFunctional.java
@@ -1,5 +1,5 @@
 // generics/ApplyFunctional.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/ApplyTest.java b/generics/ApplyTest.java
index 62ef4eecf..2ae0618d4 100644
--- a/generics/ApplyTest.java
+++ b/generics/ApplyTest.java
@@ -1,5 +1,5 @@
 // generics/ApplyTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/ArrayMaker.java b/generics/ArrayMaker.java
index f1bb6b9a4..b728267cd 100644
--- a/generics/ArrayMaker.java
+++ b/generics/ArrayMaker.java
@@ -1,5 +1,5 @@
 // generics/ArrayMaker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
diff --git a/generics/ArrayOfGeneric.java b/generics/ArrayOfGeneric.java
index 67e6cb97c..68f7a5bdf 100644
--- a/generics/ArrayOfGeneric.java
+++ b/generics/ArrayOfGeneric.java
@@ -1,5 +1,5 @@
 // generics/ArrayOfGeneric.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/ArrayOfGenericReference.java b/generics/ArrayOfGenericReference.java
index 1cb2f3455..3403e3c50 100644
--- a/generics/ArrayOfGenericReference.java
+++ b/generics/ArrayOfGenericReference.java
@@ -1,5 +1,5 @@
 // generics/ArrayOfGenericReference.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/BankTeller.java b/generics/BankTeller.java
index 68301996d..51bb12034 100644
--- a/generics/BankTeller.java
+++ b/generics/BankTeller.java
@@ -1,5 +1,5 @@
 // generics/BankTeller.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A very simple bank teller simulation
@@ -9,8 +9,7 @@
 class Customer {
   private static long counter = 1;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Customer " + id;
   }
 }
@@ -18,8 +17,7 @@ public String toString() {
 class Teller {
   private static long counter = 1;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Teller " + id;
   }
 }
diff --git a/generics/BasicBounds.java b/generics/BasicBounds.java
index 434d0fd8f..ca2c00dfa 100644
--- a/generics/BasicBounds.java
+++ b/generics/BasicBounds.java
@@ -1,5 +1,5 @@
 // generics/BasicBounds.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -48,8 +48,7 @@ class Bounded
 extends Coord implements HasColor, Weight {
   @Override
   public java.awt.Color getColor() { return null; }
-  @Override
-  public int weight() { return 0; }
+  @Override public int weight() { return 0; }
 }
 
 public class BasicBounds {
diff --git a/generics/BasicHolder.java b/generics/BasicHolder.java
index 2b8b8a9b1..5a6bc5a4e 100644
--- a/generics/BasicHolder.java
+++ b/generics/BasicHolder.java
@@ -1,5 +1,5 @@
 // generics/BasicHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/BasicSupplierDemo.java b/generics/BasicSupplierDemo.java
index 1ce95ca19..bf754154a 100644
--- a/generics/BasicSupplierDemo.java
+++ b/generics/BasicSupplierDemo.java
@@ -1,5 +1,5 @@
 // generics/BasicSupplierDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/generics/ByteSet.java b/generics/ByteSet.java
index 19b27091a..860125b6a 100644
--- a/generics/ByteSet.java
+++ b/generics/ByteSet.java
@@ -1,5 +1,5 @@
 // generics/ByteSet.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/CRGWithBasicHolder.java b/generics/CRGWithBasicHolder.java
index eb85868a4..f30f02da7 100644
--- a/generics/CRGWithBasicHolder.java
+++ b/generics/CRGWithBasicHolder.java
@@ -1,5 +1,5 @@
 // generics/CRGWithBasicHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/CaptureConversion.java b/generics/CaptureConversion.java
index 163484682..831ee7e94 100644
--- a/generics/CaptureConversion.java
+++ b/generics/CaptureConversion.java
@@ -1,5 +1,5 @@
 // generics/CaptureConversion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/CheckedList.java b/generics/CheckedList.java
index 6e330cf6b..26cae143a 100644
--- a/generics/CheckedList.java
+++ b/generics/CheckedList.java
@@ -1,5 +1,5 @@
 // generics/CheckedList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Collection.checkedList()
diff --git a/generics/ClassCasting.java b/generics/ClassCasting.java
index c6da592a6..9029b298e 100644
--- a/generics/ClassCasting.java
+++ b/generics/ClassCasting.java
@@ -1,5 +1,5 @@
 // generics/ClassCasting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/generics/ClassTypeCapture.java b/generics/ClassTypeCapture.java
index ab193dfe6..cd4cb8375 100644
--- a/generics/ClassTypeCapture.java
+++ b/generics/ClassTypeCapture.java
@@ -1,5 +1,5 @@
 // generics/ClassTypeCapture.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/ComparablePet.java b/generics/ComparablePet.java
index 3646e66aa..951b6cc15 100644
--- a/generics/ComparablePet.java
+++ b/generics/ComparablePet.java
@@ -1,5 +1,5 @@
 // generics/ComparablePet.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/CompilerIntelligence.java b/generics/CompilerIntelligence.java
index 6e4cd0e81..6b1bc4155 100644
--- a/generics/CompilerIntelligence.java
+++ b/generics/CompilerIntelligence.java
@@ -1,5 +1,5 @@
 // generics/CompilerIntelligence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/CountedObject.java b/generics/CountedObject.java
index ab4caecdb..287b480fb 100644
--- a/generics/CountedObject.java
+++ b/generics/CountedObject.java
@@ -1,5 +1,5 @@
 // generics/CountedObject.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -7,8 +7,7 @@ public class CountedObject {
   private static long counter = 0;
   private final long id = counter++;
   public long id() { return id; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "CountedObject " + id;
   }
 }
diff --git a/generics/CovariantArrays.java b/generics/CovariantArrays.java
index e202ca079..2a56b631e 100644
--- a/generics/CovariantArrays.java
+++ b/generics/CovariantArrays.java
@@ -1,5 +1,5 @@
 // generics/CovariantArrays.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/CovariantReturnTypes.java b/generics/CovariantReturnTypes.java
index 04178ad4b..870f21e4f 100644
--- a/generics/CovariantReturnTypes.java
+++ b/generics/CovariantReturnTypes.java
@@ -1,5 +1,5 @@
 // generics/CovariantReturnTypes.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -12,8 +12,7 @@ interface OrdinaryGetter {
 
 interface DerivedGetter extends OrdinaryGetter {
   // Overridden method return type can vary:
-  @Override
-  Derived get();
+  @Override Derived get();
 }
 
 public class CovariantReturnTypes {
diff --git a/generics/CreatorGeneric.java b/generics/CreatorGeneric.java
index 7fd90df46..e9a349740 100644
--- a/generics/CreatorGeneric.java
+++ b/generics/CreatorGeneric.java
@@ -1,5 +1,5 @@
 // generics/CreatorGeneric.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -12,8 +12,7 @@ abstract class GenericWithCreate {
 class X {}
 
 class XCreator extends GenericWithCreate {
-  @Override
-  X create() { return new X(); }
+  @Override X create() { return new X(); }
   void f() {
     System.out.println(
       element.getClass().getSimpleName());
diff --git a/generics/CuriouslyRecurringGeneric.java b/generics/CuriouslyRecurringGeneric.java
index ee1f3a615..53977f27b 100644
--- a/generics/CuriouslyRecurringGeneric.java
+++ b/generics/CuriouslyRecurringGeneric.java
@@ -1,5 +1,5 @@
 // generics/CuriouslyRecurringGeneric.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/Diamond.java b/generics/Diamond.java
index 32c3ff1ae..c7daa484d 100644
--- a/generics/Diamond.java
+++ b/generics/Diamond.java
@@ -1,5 +1,5 @@
 // generics/Diamond.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/DogsAndRobotMethodReferences.java b/generics/DogsAndRobotMethodReferences.java
index 7c3fa3575..612ef683e 100644
--- a/generics/DogsAndRobotMethodReferences.java
+++ b/generics/DogsAndRobotMethodReferences.java
@@ -1,5 +1,5 @@
 // generics/DogsAndRobotMethodReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Assisted Latent Typing"
diff --git a/generics/DogsAndRobots.cpp b/generics/DogsAndRobots.cpp
index 81ced5d99..a8b008f23 100644
--- a/generics/DogsAndRobots.cpp
+++ b/generics/DogsAndRobots.cpp
@@ -1,5 +1,5 @@
 // generics/DogsAndRobots.cpp
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 #include 
diff --git a/generics/DogsAndRobots.java b/generics/DogsAndRobots.java
index b61511227..4bbb9b440 100644
--- a/generics/DogsAndRobots.java
+++ b/generics/DogsAndRobots.java
@@ -1,5 +1,5 @@
 // generics/DogsAndRobots.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // No (direct) latent typing in Java
@@ -14,7 +14,9 @@ public void reproduce() {}
 }
 
 class Robot implements Performs {
+  @Override
   public void speak() { System.out.println("Click!"); }
+  @Override
   public void sit() { System.out.println("Clank!"); }
   public void oilChange() {}
 }
diff --git a/generics/DogsAndRobots.py b/generics/DogsAndRobots.py
index c9ca6fef9..ed3bfd47d 100644
--- a/generics/DogsAndRobots.py
+++ b/generics/DogsAndRobots.py
@@ -1,5 +1,5 @@
 # generics/DogsAndRobots.py
-# (c)2020 MindView LLC: see Copyright.txt
+# (c)2021 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 
diff --git a/generics/DynamicProxyMixin.java b/generics/DynamicProxyMixin.java
index 38431e31d..906278fba 100644
--- a/generics/DynamicProxyMixin.java
+++ b/generics/DynamicProxyMixin.java
@@ -1,5 +1,5 @@
 // generics/DynamicProxyMixin.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
@@ -61,6 +61,6 @@ public static void main(String[] args) {
 }
 /* Output:
 Hello
-1494331653339
+1611503350927
 1
 */
diff --git a/generics/EpicBattle.java b/generics/EpicBattle.java
index 908a33437..716606608 100644
--- a/generics/EpicBattle.java
+++ b/generics/EpicBattle.java
@@ -1,5 +1,5 @@
 // generics/EpicBattle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Bounds in Java generics
@@ -41,10 +41,8 @@ class SuperSleuth
 
 class SuperHearSmell
 implements SuperHearing, SuperSmell {
-  @Override
-  public void hearSubtleNoises() {}
-  @Override
-  public void trackBySmell() {}
+  @Override public void hearSubtleNoises() {}
+  @Override public void trackBySmell() {}
 }
 
 class DogPerson extends CanineHero {
diff --git a/generics/Erased.java b/generics/Erased.java
index 911839c39..304385afb 100644
--- a/generics/Erased.java
+++ b/generics/Erased.java
@@ -1,5 +1,5 @@
 // generics/Erased.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/ErasedTypeEquivalence.java b/generics/ErasedTypeEquivalence.java
index 6034b3048..0368a1828 100644
--- a/generics/ErasedTypeEquivalence.java
+++ b/generics/ErasedTypeEquivalence.java
@@ -1,5 +1,5 @@
 // generics/ErasedTypeEquivalence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/ErasureAndInheritance.java b/generics/ErasureAndInheritance.java
index 44a07b625..4a2e2591c 100644
--- a/generics/ErasureAndInheritance.java
+++ b/generics/ErasureAndInheritance.java
@@ -1,5 +1,5 @@
 // generics/ErasureAndInheritance.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/FactoryConstraint.java b/generics/FactoryConstraint.java
index f06510732..5e721168b 100644
--- a/generics/FactoryConstraint.java
+++ b/generics/FactoryConstraint.java
@@ -1,5 +1,5 @@
 // generics/FactoryConstraint.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -8,8 +8,7 @@
 
 class IntegerFactory implements Supplier {
   private int i = 0;
-  @Override
-  public Integer get() {
+  @Override public Integer get() {
     return ++i;
   }
 }
@@ -17,8 +16,7 @@ public Integer get() {
 class Widget {
   private int id;
   Widget(int n) { id = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Widget " + id;
   }
   public static
@@ -32,8 +30,9 @@ class Factory implements Supplier {
 class Fudge {
   private static int count = 1;
   private int n = count++;
-  @Override
-  public String toString() { return "Fudge " + n; }
+  @Override public String toString() {
+    return "Fudge " + n;
+  }
 }
 
 class Foo2 {
@@ -41,8 +40,9 @@ class Foo2 {
   Foo2(Supplier factory) {
     Suppliers.fill(x, factory, 5);
   }
-  @Override
-  public String toString() { return x.toString(); }
+  @Override public String toString() {
+    return x.toString();
+  }
 }
 
 public class FactoryConstraint {
diff --git a/generics/Fibonacci.java b/generics/Fibonacci.java
index 115400617..c20bdf225 100644
--- a/generics/Fibonacci.java
+++ b/generics/Fibonacci.java
@@ -1,5 +1,5 @@
 // generics/Fibonacci.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Generate a Fibonacci sequence
diff --git a/generics/FilledList.java b/generics/FilledList.java
index e24423cef..662d50f98 100644
--- a/generics/FilledList.java
+++ b/generics/FilledList.java
@@ -1,5 +1,5 @@
 // generics/FilledList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/GenericArray.java b/generics/GenericArray.java
index f0ffba3d2..39212feca 100644
--- a/generics/GenericArray.java
+++ b/generics/GenericArray.java
@@ -1,5 +1,5 @@
 // generics/GenericArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/GenericArray2.java b/generics/GenericArray2.java
index 7ef4179ec..ee7962623 100644
--- a/generics/GenericArray2.java
+++ b/generics/GenericArray2.java
@@ -1,5 +1,5 @@
 // generics/GenericArray2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/GenericArrayWithTypeToken.java b/generics/GenericArrayWithTypeToken.java
index 6ea36a767..3005a540d 100644
--- a/generics/GenericArrayWithTypeToken.java
+++ b/generics/GenericArrayWithTypeToken.java
@@ -1,5 +1,5 @@
 // generics/GenericArrayWithTypeToken.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
diff --git a/generics/GenericCast.java b/generics/GenericCast.java
index c3f82dac7..eb4fb651d 100644
--- a/generics/GenericCast.java
+++ b/generics/GenericCast.java
@@ -1,5 +1,5 @@
 // generics/GenericCast.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/GenericHolder.java b/generics/GenericHolder.java
index 6d998a1cb..15cfbb9e1 100644
--- a/generics/GenericHolder.java
+++ b/generics/GenericHolder.java
@@ -1,5 +1,5 @@
 // generics/GenericHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/GenericHolder2.java b/generics/GenericHolder2.java
index 9747f49b9..59c3e3569 100644
--- a/generics/GenericHolder2.java
+++ b/generics/GenericHolder2.java
@@ -1,5 +1,5 @@
 // generics/GenericHolder2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/GenericMethods.java b/generics/GenericMethods.java
index 66f40e72d..3ec451f93 100644
--- a/generics/GenericMethods.java
+++ b/generics/GenericMethods.java
@@ -1,5 +1,5 @@
 // generics/GenericMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/GenericReading.java b/generics/GenericReading.java
index 5709c7a92..a661798c5 100644
--- a/generics/GenericReading.java
+++ b/generics/GenericReading.java
@@ -1,5 +1,5 @@
 // generics/GenericReading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/GenericVarargs.java b/generics/GenericVarargs.java
index 3a6e348ca..3dfca7d44 100644
--- a/generics/GenericVarargs.java
+++ b/generics/GenericVarargs.java
@@ -1,5 +1,5 @@
 // generics/GenericVarargs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/GenericsAndCovariance.java b/generics/GenericsAndCovariance.java
index f16b837be..023bb8763 100644
--- a/generics/GenericsAndCovariance.java
+++ b/generics/GenericsAndCovariance.java
@@ -1,5 +1,5 @@
 // generics/GenericsAndCovariance.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/GenericsAndReturnTypes.java b/generics/GenericsAndReturnTypes.java
index de661864b..3eebd91ac 100644
--- a/generics/GenericsAndReturnTypes.java
+++ b/generics/GenericsAndReturnTypes.java
@@ -1,5 +1,5 @@
 // generics/GenericsAndReturnTypes.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/HasF.java b/generics/HasF.java
index f967386e3..436c19585 100644
--- a/generics/HasF.java
+++ b/generics/HasF.java
@@ -1,5 +1,5 @@
 // generics/HasF.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/HijackedInterface.java b/generics/HijackedInterface.java
index 868e1d465..edf01b7b2 100644
--- a/generics/HijackedInterface.java
+++ b/generics/HijackedInterface.java
@@ -1,5 +1,5 @@
 // generics/HijackedInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/Holder.java b/generics/Holder.java
index e4301dc66..50d22a3ca 100644
--- a/generics/Holder.java
+++ b/generics/Holder.java
@@ -1,5 +1,5 @@
 // generics/Holder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.Objects;
@@ -10,13 +10,11 @@ public Holder() {}
   public Holder(T val) { value = val; }
   public void set(T val) { value = val; }
   public T get() { return value; }
-  @Override
-  public boolean equals(Object o) {
+  @Override public boolean equals(Object o) {
     return o instanceof Holder &&
       Objects.equals(value, ((Holder)o).value);
   }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     return Objects.hashCode(value);
   }
   public static void main(String[] args) {
diff --git a/generics/Holder1.java b/generics/Holder1.java
index 0c222cb57..7af6f1c15 100644
--- a/generics/Holder1.java
+++ b/generics/Holder1.java
@@ -1,5 +1,5 @@
 // generics/Holder1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/InheritBounds.java b/generics/InheritBounds.java
index fddd25431..7bd7d22b1 100644
--- a/generics/InheritBounds.java
+++ b/generics/InheritBounds.java
@@ -1,5 +1,5 @@
 // generics/InheritBounds.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/InstantiateGenericType.cpp b/generics/InstantiateGenericType.cpp
index 1799d05ba..c260c39d5 100644
--- a/generics/InstantiateGenericType.cpp
+++ b/generics/InstantiateGenericType.cpp
@@ -1,5 +1,5 @@
 // generics/InstantiateGenericType.cpp
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // C++, not Java!
diff --git a/generics/InstantiateGenericType.java b/generics/InstantiateGenericType.java
index 9424c9a1d..93c8d62a9 100644
--- a/generics/InstantiateGenericType.java
+++ b/generics/InstantiateGenericType.java
@@ -1,5 +1,5 @@
 // generics/InstantiateGenericType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -10,11 +10,9 @@ class ClassAsFactory implements Supplier {
   ClassAsFactory(Class kind) {
     this.kind = kind;
   }
-  @SuppressWarnings("deprecation")
-  @Override
-  public T get() {
+  @Override public T get() {
     try {
-      return kind.newInstance();
+      return kind.getConstructor().newInstance();
     } catch(Exception e) {
       throw new RuntimeException(e);
     }
@@ -22,8 +20,10 @@ public T get() {
 }
 
 class Employee {
-  @Override
-  public String toString() { return "Employee"; }
+  public Employee() {}
+  @Override public String toString() {
+    return "Employee";
+  }
 }
 
 public class InstantiateGenericType {
@@ -42,5 +42,6 @@ public static void main(String[] args) {
 }
 /* Output:
 Employee
-java.lang.InstantiationException: java.lang.Integer
+java.lang.NoSuchMethodException:
+java.lang.Integer.()
 */
diff --git a/generics/IterableFibonacci.java b/generics/IterableFibonacci.java
index b5ccf285a..2b56b102a 100644
--- a/generics/IterableFibonacci.java
+++ b/generics/IterableFibonacci.java
@@ -1,5 +1,5 @@
 // generics/IterableFibonacci.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adapt the Fibonacci class to make it Iterable
@@ -9,13 +9,11 @@ public class IterableFibonacci
 extends Fibonacci implements Iterable {
   private int n;
   public IterableFibonacci(int count) { n = count; }
-  @Override
-  public Iterator iterator() {
+  @Override public Iterator iterator() {
     return new Iterator() {
       @Override
       public boolean hasNext() { return n > 0; }
-      @Override
-      public Integer next() {
+      @Override public Integer next() {
         n--;
         return IterableFibonacci.this.get();
       }
diff --git a/generics/LatentReflection.java b/generics/LatentReflection.java
index 0e9511a34..cfd9e751d 100644
--- a/generics/LatentReflection.java
+++ b/generics/LatentReflection.java
@@ -1,5 +1,5 @@
 // generics/LatentReflection.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using reflection for latent typing
@@ -12,8 +12,7 @@ public void sit() {
     System.out.println("Pretending to sit");
   }
   public void pushInvisibleWalls() {}
-  @Override
-  public String toString() { return "Mime"; }
+  @Override public String toString() { return "Mime"; }
 }
 
 // Does not implement Performs:
diff --git a/generics/LinkedStack.java b/generics/LinkedStack.java
index 5142bcc73..932df84f0 100644
--- a/generics/LinkedStack.java
+++ b/generics/LinkedStack.java
@@ -1,5 +1,5 @@
 // generics/LinkedStack.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A stack implemented with an internal linked structure
diff --git a/generics/ListMaker.java b/generics/ListMaker.java
index 582cbaea8..f127e2dde 100644
--- a/generics/ListMaker.java
+++ b/generics/ListMaker.java
@@ -1,5 +1,5 @@
 // generics/ListMaker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/ListOfGenerics.java b/generics/ListOfGenerics.java
index 10a480318..aa2f61873 100644
--- a/generics/ListOfGenerics.java
+++ b/generics/ListOfGenerics.java
@@ -1,5 +1,5 @@
 // generics/ListOfGenerics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/ListOfInt.java b/generics/ListOfInt.java
index f8ac8e11d..a47754950 100644
--- a/generics/ListOfInt.java
+++ b/generics/ListOfInt.java
@@ -1,5 +1,5 @@
 // generics/ListOfInt.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Autoboxing compensates for the inability
diff --git a/generics/LostInformation.java b/generics/LostInformation.java
index e27430d2e..6ca203424 100644
--- a/generics/LostInformation.java
+++ b/generics/LostInformation.java
@@ -1,5 +1,5 @@
 // generics/LostInformation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/Manipulation.java b/generics/Manipulation.java
index f365cf199..f3857515c 100644
--- a/generics/Manipulation.java
+++ b/generics/Manipulation.java
@@ -1,5 +1,5 @@
 // generics/Manipulation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/Manipulator2.java b/generics/Manipulator2.java
index 7c7c648bb..2d112dc60 100644
--- a/generics/Manipulator2.java
+++ b/generics/Manipulator2.java
@@ -1,5 +1,5 @@
 // generics/Manipulator2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/Manipulator3.java b/generics/Manipulator3.java
index 2201d474c..a737a727b 100644
--- a/generics/Manipulator3.java
+++ b/generics/Manipulator3.java
@@ -1,5 +1,5 @@
 // generics/Manipulator3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/Mixins.cpp b/generics/Mixins.cpp
index 89949d46b..defcac7d5 100644
--- a/generics/Mixins.cpp
+++ b/generics/Mixins.cpp
@@ -1,5 +1,5 @@
 // generics/Mixins.cpp
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 #include 
diff --git a/generics/Mixins.java b/generics/Mixins.java
index af58b81e0..d64d07d6d 100644
--- a/generics/Mixins.java
+++ b/generics/Mixins.java
@@ -1,5 +1,5 @@
 // generics/Mixins.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -42,12 +42,10 @@ class Mixin extends BasicImp
   private TimeStamped timeStamp = new TimeStampedImp();
   private SerialNumbered serialNumber =
     new SerialNumberedImp();
-  @Override
-  public long getStamp() {
+  @Override public long getStamp() {
     return timeStamp.getStamp();
   }
-  @Override
-  public long getSerialNumber() {
+  @Override public long getSerialNumber() {
     return serialNumber.getSerialNumber();
   }
 }
@@ -66,6 +64,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-test string 1 1494331663026 1
-test string 2 1494331663027 2
+test string 1 1611503367257 1
+test string 2 1611503367258 2
 */
diff --git a/generics/MultipleInterfaceVariants.java b/generics/MultipleInterfaceVariants.java
index 70a535a23..c8a58fdd0 100644
--- a/generics/MultipleInterfaceVariants.java
+++ b/generics/MultipleInterfaceVariants.java
@@ -1,5 +1,5 @@
 // generics/MultipleInterfaceVariants.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/NeedCasting.java b/generics/NeedCasting.java
index 8801f5d8b..e8604e335 100644
--- a/generics/NeedCasting.java
+++ b/generics/NeedCasting.java
@@ -1,5 +1,5 @@
 // generics/NeedCasting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/generics/NonCovariantGenerics.java b/generics/NonCovariantGenerics.java
index c219a0d3a..9b56a1d95 100644
--- a/generics/NonCovariantGenerics.java
+++ b/generics/NonCovariantGenerics.java
@@ -1,5 +1,5 @@
 // generics/NonCovariantGenerics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/NotSelfBounded.java b/generics/NotSelfBounded.java
index 76aa593cb..cdf78eb38 100644
--- a/generics/NotSelfBounded.java
+++ b/generics/NotSelfBounded.java
@@ -1,5 +1,5 @@
 // generics/NotSelfBounded.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/ObjectHolder.java b/generics/ObjectHolder.java
index f1dafd308..a363f4070 100644
--- a/generics/ObjectHolder.java
+++ b/generics/ObjectHolder.java
@@ -1,5 +1,5 @@
 // generics/ObjectHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/OrdinaryArguments.java b/generics/OrdinaryArguments.java
index 6e50550d9..02f0d5e15 100644
--- a/generics/OrdinaryArguments.java
+++ b/generics/OrdinaryArguments.java
@@ -1,5 +1,5 @@
 // generics/OrdinaryArguments.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/Performs.java b/generics/Performs.java
index ace095235..b9379e21e 100644
--- a/generics/Performs.java
+++ b/generics/Performs.java
@@ -1,5 +1,5 @@
 // generics/Performs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/PlainGenericInheritance.java b/generics/PlainGenericInheritance.java
index 93eb61c68..57e402768 100644
--- a/generics/PlainGenericInheritance.java
+++ b/generics/PlainGenericInheritance.java
@@ -1,5 +1,5 @@
 // generics/PlainGenericInheritance.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/PrimitiveGenericTest.java b/generics/PrimitiveGenericTest.java
index 793564379..b745a8f72 100644
--- a/generics/PrimitiveGenericTest.java
+++ b/generics/PrimitiveGenericTest.java
@@ -1,5 +1,5 @@
 // generics/PrimitiveGenericTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/generics/RandomList.java b/generics/RandomList.java
index d4f198bcf..470739f2b 100644
--- a/generics/RandomList.java
+++ b/generics/RandomList.java
@@ -1,5 +1,5 @@
 // generics/RandomList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/RestrictedComparablePets.java b/generics/RestrictedComparablePets.java
index 16146d7b5..7c87bb49c 100644
--- a/generics/RestrictedComparablePets.java
+++ b/generics/RestrictedComparablePets.java
@@ -1,10 +1,11 @@
 // generics/RestrictedComparablePets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 class Hamster extends ComparablePet
 implements Comparable {
+  @Override
   public int compareTo(ComparablePet arg) {
     return 0;
   }
diff --git a/generics/ReturnGenericType.java b/generics/ReturnGenericType.java
index bf46ae157..1e6dc005f 100644
--- a/generics/ReturnGenericType.java
+++ b/generics/ReturnGenericType.java
@@ -1,5 +1,5 @@
 // generics/ReturnGenericType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/SelfBounding.java b/generics/SelfBounding.java
index c8ecf0ff4..c0c509c3e 100644
--- a/generics/SelfBounding.java
+++ b/generics/SelfBounding.java
@@ -1,5 +1,5 @@
 // generics/SelfBounding.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/SelfBoundingAndCovariantArguments.java b/generics/SelfBoundingAndCovariantArguments.java
index 34262b0ed..eefa864d1 100644
--- a/generics/SelfBoundingAndCovariantArguments.java
+++ b/generics/SelfBoundingAndCovariantArguments.java
@@ -1,5 +1,5 @@
 // generics/SelfBoundingAndCovariantArguments.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/SelfBoundingMethods.java b/generics/SelfBoundingMethods.java
index e6cb79493..aab5b7b77 100644
--- a/generics/SelfBoundingMethods.java
+++ b/generics/SelfBoundingMethods.java
@@ -1,5 +1,5 @@
 // generics/SelfBoundingMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/Shape.java b/generics/Shape.java
index dd2458c2b..271220b22 100644
--- a/generics/Shape.java
+++ b/generics/Shape.java
@@ -1,13 +1,12 @@
 // generics/Shape.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class Shape {
   private static long counter = 0;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName() + " " + id;
   }
   public void rotate() {
diff --git a/generics/SimpleDogsAndRobots.java b/generics/SimpleDogsAndRobots.java
index b9cee77b9..ebe1c9438 100644
--- a/generics/SimpleDogsAndRobots.java
+++ b/generics/SimpleDogsAndRobots.java
@@ -1,5 +1,5 @@
 // generics/SimpleDogsAndRobots.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Removing the generic; code still works
diff --git a/generics/SimpleHolder.java b/generics/SimpleHolder.java
index a73af0abe..5bc15f82b 100644
--- a/generics/SimpleHolder.java
+++ b/generics/SimpleHolder.java
@@ -1,5 +1,5 @@
 // generics/SimpleHolder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/SimpleQueue.java b/generics/SimpleQueue.java
index 76fb4f3e7..18adc1bd7 100644
--- a/generics/SimpleQueue.java
+++ b/generics/SimpleQueue.java
@@ -1,5 +1,5 @@
 // generics/SimpleQueue.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A different kind of Iterable collection
@@ -9,8 +9,7 @@ public class SimpleQueue implements Iterable {
   private LinkedList storage = new LinkedList<>();
   public void add(T t) { storage.offer(t); }
   public T get() { return storage.poll(); }
-  @Override
-  public Iterator iterator() {
+  @Override public Iterator iterator() {
     return storage.iterator();
   }
 }
diff --git a/generics/Square.java b/generics/Square.java
index e3bcad934..5cca84a2c 100644
--- a/generics/Square.java
+++ b/generics/Square.java
@@ -1,5 +1,5 @@
 // generics/Square.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Square extends Shape {}
diff --git a/generics/Store.java b/generics/Store.java
index c165926a3..921470845 100644
--- a/generics/Store.java
+++ b/generics/Store.java
@@ -1,5 +1,5 @@
 // generics/Store.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Building a complex model using generic collections
@@ -17,8 +17,7 @@ class Product {
     this.price = price;
     System.out.println(toString());
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return id + ": " + description +
       ", price: $" + price;
   }
@@ -28,8 +27,7 @@ public void priceChange(double change) {
   public static Supplier generator =
     new Supplier() {
       private Random rand = new Random(47);
-      @Override
-      public Product get() {
+      @Override public Product get() {
         return new Product(rand.nextInt(1000), "Test",
           Math.round(
             rand.nextDouble() * 1000.0) + 0.99);
@@ -62,8 +60,7 @@ public Store(
     for(int i = 0; i < nAisles; i++)
       add(new Aisle(nShelves, nProducts));
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     StringBuilder result = new StringBuilder();
     for(Aisle a : this)
       for(Shelf s : a)
diff --git a/generics/SuperTypeWildcards.java b/generics/SuperTypeWildcards.java
index f8672a4fc..e675bc74e 100644
--- a/generics/SuperTypeWildcards.java
+++ b/generics/SuperTypeWildcards.java
@@ -1,5 +1,5 @@
 // generics/SuperTypeWildcards.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/Templates.cpp b/generics/Templates.cpp
index ab2a3b64a..e56fdda7c 100644
--- a/generics/Templates.cpp
+++ b/generics/Templates.cpp
@@ -1,5 +1,5 @@
 // generics/Templates.cpp
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 #include 
diff --git a/generics/ThrowGenericException.java b/generics/ThrowGenericException.java
index 994c7f885..2a8ddb5e9 100644
--- a/generics/ThrowGenericException.java
+++ b/generics/ThrowGenericException.java
@@ -1,5 +1,5 @@
 // generics/ThrowGenericException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/TupleList.java b/generics/TupleList.java
index fe93330ba..896530b40 100644
--- a/generics/TupleList.java
+++ b/generics/TupleList.java
@@ -1,5 +1,5 @@
 // generics/TupleList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Combining generic types to make complex generic types
@@ -18,6 +18,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-(Vehicle@7cca494b, Amphibian@7ba4f24f, hi, 47)
-(Vehicle@3b9a45b3, Amphibian@7699a589, hi, 47)
+(Vehicle@ec7777, Amphibian@107d329, hi, 47)
+(Vehicle@1629346, Amphibian@4b9385, hi, 47)
 */
diff --git a/generics/TupleTest.java b/generics/TupleTest.java
index e207da405..0df194a2f 100644
--- a/generics/TupleTest.java
+++ b/generics/TupleTest.java
@@ -1,5 +1,5 @@
 // generics/TupleTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
@@ -36,7 +36,7 @@ public static void main(String[] args) {
 }
 /* Output:
 (hi, 47)
-(Amphibian@1540e19d, hi, 47)
-(Vehicle@7f31245a, Amphibian@6d6f6e28, hi, 47)
-(Vehicle@330bedb4, Amphibian@2503dbd3, hi, 47, 11.1)
+(Amphibian@1c7c054, hi, 47)
+(Vehicle@14991ad, Amphibian@d93b30, hi, 47)
+(Vehicle@a14482, Amphibian@140e19d, hi, 47, 11.1)
 */
diff --git a/generics/TupleTest2.java b/generics/TupleTest2.java
index 3a0c8d148..f889d59f3 100644
--- a/generics/TupleTest2.java
+++ b/generics/TupleTest2.java
@@ -1,5 +1,5 @@
 // generics/TupleTest2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
@@ -36,7 +36,7 @@ public static void main(String[] args) {
 /* Output:
 (hi, 47)
 (hi, 47)
-(Amphibian@14ae5a5, hi, 47)
-(Vehicle@135fbaa4, Amphibian@45ee12a7, hi, 47)
-(Vehicle@4b67cf4d, Amphibian@7ea987ac, hi, 47, 11.1)
+(Amphibian@a298b7, hi, 47)
+(Vehicle@16d3586, Amphibian@154617c, hi, 47)
+(Vehicle@17327b6, Amphibian@14ae5a5, hi, 47, 11.1)
 */
diff --git a/generics/UnboundedWildcards1.java b/generics/UnboundedWildcards1.java
index 6b163a4c2..7aada9a6c 100644
--- a/generics/UnboundedWildcards1.java
+++ b/generics/UnboundedWildcards1.java
@@ -1,5 +1,5 @@
 // generics/UnboundedWildcards1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/UnboundedWildcards2.java b/generics/UnboundedWildcards2.java
index ee80d5552..f1e17630e 100644
--- a/generics/UnboundedWildcards2.java
+++ b/generics/UnboundedWildcards2.java
@@ -1,5 +1,5 @@
 // generics/UnboundedWildcards2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/Unconstrained.java b/generics/Unconstrained.java
index f683d53f3..66c6bebd6 100644
--- a/generics/Unconstrained.java
+++ b/generics/Unconstrained.java
@@ -1,5 +1,5 @@
 // generics/Unconstrained.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/generics/UseList.java b/generics/UseList.java
index 924d3b560..3c9073aff 100644
--- a/generics/UseList.java
+++ b/generics/UseList.java
@@ -1,5 +1,5 @@
 // generics/UseList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/generics/UseList2.java b/generics/UseList2.java
index 83d3b5d35..bee17d0dc 100644
--- a/generics/UseList2.java
+++ b/generics/UseList2.java
@@ -1,5 +1,5 @@
 // generics/UseList2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/generics/Vehicle.java b/generics/Vehicle.java
index 301a84e4d..dfe502c97 100644
--- a/generics/Vehicle.java
+++ b/generics/Vehicle.java
@@ -1,5 +1,5 @@
 // generics/Vehicle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Vehicle {}
diff --git a/generics/WatercolorSets.java b/generics/WatercolorSets.java
index 7956778d9..2b285eaaa 100644
--- a/generics/WatercolorSets.java
+++ b/generics/WatercolorSets.java
@@ -1,5 +1,5 @@
 // generics/WatercolorSets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import generics.watercolors.*;
@@ -36,19 +36,19 @@ public static void main(String[] args) {
 COBALT_BLUE_HUE, PERMANENT_GREEN, VIRIDIAN_HUE,
 SAP_GREEN, YELLOW_OCHRE, BURNT_SIENNA, RAW_UMBER,
 BURNT_UMBER]
-union(set1, set2): [BURNT_SIENNA, BRILLIANT_RED,
-YELLOW_OCHRE, MAGENTA, SAP_GREEN, CERULEAN_BLUE_HUE,
-ULTRAMARINE, VIRIDIAN_HUE, VIOLET, RAW_UMBER,
-ROSE_MADDER, PERMANENT_GREEN, BURNT_UMBER,
-PHTHALO_BLUE, CRIMSON, COBALT_BLUE_HUE]
-intersection(set1, set2): [PERMANENT_GREEN,
-CERULEAN_BLUE_HUE, ULTRAMARINE, VIRIDIAN_HUE,
-PHTHALO_BLUE, COBALT_BLUE_HUE]
-difference(set1, subset): [BRILLIANT_RED, MAGENTA,
-VIOLET, CRIMSON, ROSE_MADDER]
-difference(set2, subset): [BURNT_SIENNA, YELLOW_OCHRE,
-BURNT_UMBER, SAP_GREEN, RAW_UMBER]
-complement(set1, set2): [BURNT_SIENNA, BRILLIANT_RED,
-YELLOW_OCHRE, MAGENTA, SAP_GREEN, VIOLET, RAW_UMBER,
-ROSE_MADDER, BURNT_UMBER, CRIMSON]
+union(set1, set2): [MAGENTA, COBALT_BLUE_HUE, VIOLET,
+VIRIDIAN_HUE, BURNT_SIENNA, ULTRAMARINE,
+CERULEAN_BLUE_HUE, BURNT_UMBER, BRILLIANT_RED,
+PHTHALO_BLUE, YELLOW_OCHRE, SAP_GREEN, CRIMSON,
+ROSE_MADDER, RAW_UMBER, PERMANENT_GREEN]
+intersection(set1, set2): [COBALT_BLUE_HUE,
+VIRIDIAN_HUE, ULTRAMARINE, CERULEAN_BLUE_HUE,
+PHTHALO_BLUE, PERMANENT_GREEN]
+difference(set1, subset): [CRIMSON, MAGENTA, VIOLET,
+ROSE_MADDER, BRILLIANT_RED]
+difference(set2, subset): [BURNT_SIENNA, BURNT_UMBER,
+YELLOW_OCHRE, RAW_UMBER, SAP_GREEN]
+complement(set1, set2): [MAGENTA, VIOLET, BURNT_SIENNA,
+BURNT_UMBER, BRILLIANT_RED, YELLOW_OCHRE, SAP_GREEN,
+CRIMSON, ROSE_MADDER, RAW_UMBER]
 */
diff --git a/generics/Wildcards.java b/generics/Wildcards.java
index 65348ecbb..7c854bb43 100644
--- a/generics/Wildcards.java
+++ b/generics/Wildcards.java
@@ -1,5 +1,5 @@
 // generics/Wildcards.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Exploring the meaning of wildcards
diff --git a/generics/coffee/Americano.java b/generics/coffee/Americano.java
index 96cd4a1fd..86c628288 100644
--- a/generics/coffee/Americano.java
+++ b/generics/coffee/Americano.java
@@ -1,5 +1,5 @@
 // generics/coffee/Americano.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
diff --git a/generics/coffee/Breve.java b/generics/coffee/Breve.java
index 329c406b0..5afed481d 100644
--- a/generics/coffee/Breve.java
+++ b/generics/coffee/Breve.java
@@ -1,5 +1,5 @@
 // generics/coffee/Breve.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
diff --git a/generics/coffee/Cappuccino.java b/generics/coffee/Cappuccino.java
index 3ce89b50f..f50486849 100644
--- a/generics/coffee/Cappuccino.java
+++ b/generics/coffee/Cappuccino.java
@@ -1,5 +1,5 @@
 // generics/coffee/Cappuccino.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
diff --git a/generics/coffee/Coffee.java b/generics/coffee/Coffee.java
index c90d88c19..3c893cb48 100644
--- a/generics/coffee/Coffee.java
+++ b/generics/coffee/Coffee.java
@@ -1,5 +1,5 @@
 // generics/coffee/Coffee.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
@@ -7,8 +7,7 @@
 public class Coffee {
   private static long counter = 0;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName() + " " + id;
   }
 }
diff --git a/generics/coffee/CoffeeSupplier.java b/generics/coffee/CoffeeSupplier.java
index fe5dced89..5fb68a288 100644
--- a/generics/coffee/CoffeeSupplier.java
+++ b/generics/coffee/CoffeeSupplier.java
@@ -1,5 +1,5 @@
 // generics/coffee/CoffeeSupplier.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java generics.coffee.CoffeeSupplier}
@@ -18,8 +18,7 @@ public CoffeeSupplier() {}
   // For iteration:
   private int size = 0;
   public CoffeeSupplier(int sz) { size = sz; }
-  @Override
-  public Coffee get() {
+  @Override public Coffee get() {
     try {
       return (Coffee)
         types[rand.nextInt(types.length)]
@@ -36,8 +35,7 @@ class CoffeeIterator implements Iterator {
     int count = size;
     @Override
     public boolean hasNext() { return count > 0; }
-    @Override
-    public Coffee next() {
+    @Override public Coffee next() {
       count--;
       return CoffeeSupplier.this.get();
     }
@@ -46,8 +44,7 @@ public void remove() { // Not implemented
       throw new UnsupportedOperationException();
     }
   }
-  @Override
-  public Iterator iterator() {
+  @Override public Iterator iterator() {
     return new CoffeeIterator();
   }
   public static void main(String[] args) {
diff --git a/generics/coffee/Latte.java b/generics/coffee/Latte.java
index d735cc876..bf4d25831 100644
--- a/generics/coffee/Latte.java
+++ b/generics/coffee/Latte.java
@@ -1,5 +1,5 @@
 // generics/coffee/Latte.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
diff --git a/generics/coffee/Mocha.java b/generics/coffee/Mocha.java
index cc567be1e..e4eaa5a20 100644
--- a/generics/coffee/Mocha.java
+++ b/generics/coffee/Mocha.java
@@ -1,5 +1,5 @@
 // generics/coffee/Mocha.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.coffee;
diff --git a/generics/decorator/Decoration.java b/generics/decorator/Decoration.java
index 96611a75a..07651bb35 100644
--- a/generics/decorator/Decoration.java
+++ b/generics/decorator/Decoration.java
@@ -1,5 +1,5 @@
 // generics/decorator/Decoration.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java generics.decorator.Decoration}
diff --git a/generics/dogsandrobots.go b/generics/dogsandrobots.go
index f65b9c18f..cba1e10c3 100644
--- a/generics/dogsandrobots.go
+++ b/generics/dogsandrobots.go
@@ -1,5 +1,5 @@
 // generics/dogsandrobots.go
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package main
diff --git a/generics/watercolors/Watercolors.java b/generics/watercolors/Watercolors.java
index 0625e5326..33922ba10 100644
--- a/generics/watercolors/Watercolors.java
+++ b/generics/watercolors/Watercolors.java
@@ -1,5 +1,5 @@
 // generics/watercolors/Watercolors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package generics.watercolors;
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 4d9ca1649..28ff446a2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/hiding/Cake.java b/hiding/Cake.java
index d20e2cbf1..e4ee6698c 100644
--- a/hiding/Cake.java
+++ b/hiding/Cake.java
@@ -1,5 +1,5 @@
 // hiding/Cake.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Accesses a class in a separate compilation unit
diff --git a/hiding/ChocolateChip.java b/hiding/ChocolateChip.java
index 1467fff42..dd98cc883 100644
--- a/hiding/ChocolateChip.java
+++ b/hiding/ChocolateChip.java
@@ -1,5 +1,5 @@
 // hiding/ChocolateChip.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Can't use package-access member from another package
diff --git a/hiding/ChocolateChip2.java b/hiding/ChocolateChip2.java
index 03c9d1ab2..bc85fb95f 100644
--- a/hiding/ChocolateChip2.java
+++ b/hiding/ChocolateChip2.java
@@ -1,5 +1,5 @@
 // hiding/ChocolateChip2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import hiding.cookie2.*;
diff --git a/hiding/CreatePackageAccessObject.java b/hiding/CreatePackageAccessObject.java
index 8442b51f7..823d6b265 100644
--- a/hiding/CreatePackageAccessObject.java
+++ b/hiding/CreatePackageAccessObject.java
@@ -1,5 +1,5 @@
 // hiding/CreatePackageAccessObject.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/hiding/Dinner.java b/hiding/Dinner.java
index 7a7b97d59..e027e6aa0 100644
--- a/hiding/Dinner.java
+++ b/hiding/Dinner.java
@@ -1,5 +1,5 @@
 // hiding/Dinner.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Uses the library
diff --git a/hiding/FullQualification.java b/hiding/FullQualification.java
index 2fadb28cd..e0a74371e 100644
--- a/hiding/FullQualification.java
+++ b/hiding/FullQualification.java
@@ -1,5 +1,5 @@
 // hiding/FullQualification.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/hiding/IceCream.java b/hiding/IceCream.java
index d91619a26..ad78cd7e4 100644
--- a/hiding/IceCream.java
+++ b/hiding/IceCream.java
@@ -1,5 +1,5 @@
 // hiding/IceCream.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates "private" keyword
diff --git a/hiding/ImportedMyClass.java b/hiding/ImportedMyClass.java
index a644f5d83..dfd0fc111 100644
--- a/hiding/ImportedMyClass.java
+++ b/hiding/ImportedMyClass.java
@@ -1,5 +1,5 @@
 // hiding/ImportedMyClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import hiding.mypackage.*;
diff --git a/hiding/LibTest.java b/hiding/LibTest.java
index c439352a5..4c2e970f9 100644
--- a/hiding/LibTest.java
+++ b/hiding/LibTest.java
@@ -1,5 +1,5 @@
 // hiding/LibTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Uses the library
diff --git a/hiding/Lunch.java b/hiding/Lunch.java
index eca4baf03..81b46791a 100644
--- a/hiding/Lunch.java
+++ b/hiding/Lunch.java
@@ -1,5 +1,5 @@
 // hiding/Lunch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates class access specifiers. Make a class
@@ -7,14 +7,14 @@
 
 class Soup1 {
   private Soup1() {}
-  public static Soup1 makeSoup() { // [1]
+  public static Soup1 makeSoup() {          // [1]
     return new Soup1();
   }
 }
 
 class Soup2 {
   private Soup2() {}
-  private static Soup2 ps1 = new Soup2(); // [2]
+  private static Soup2 ps1 = new Soup2();   // [2]
   public static Soup2 access() {
     return ps1;
   }
diff --git a/hiding/OrganizedByAccess.java b/hiding/OrganizedByAccess.java
index 46af158fc..9553a7805 100644
--- a/hiding/OrganizedByAccess.java
+++ b/hiding/OrganizedByAccess.java
@@ -1,5 +1,5 @@
 // hiding/OrganizedByAccess.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/hiding/Pie.java b/hiding/Pie.java
index 1470fbc33..5cf3c12d7 100644
--- a/hiding/Pie.java
+++ b/hiding/Pie.java
@@ -1,5 +1,5 @@
 // hiding/Pie.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The other class
diff --git a/hiding/QualifiedMyClass.java b/hiding/QualifiedMyClass.java
index 58a097ccd..6b0beafcb 100644
--- a/hiding/QualifiedMyClass.java
+++ b/hiding/QualifiedMyClass.java
@@ -1,5 +1,5 @@
 // hiding/QualifiedMyClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/hiding/SingleImport.java b/hiding/SingleImport.java
index 5168ebe88..4e7b26dc4 100644
--- a/hiding/SingleImport.java
+++ b/hiding/SingleImport.java
@@ -1,5 +1,5 @@
 // hiding/SingleImport.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.ArrayList;
diff --git a/hiding/cookie2/Cookie.java b/hiding/cookie2/Cookie.java
index aff5bb172..faa9bd5a9 100644
--- a/hiding/cookie2/Cookie.java
+++ b/hiding/cookie2/Cookie.java
@@ -1,5 +1,5 @@
 // hiding/cookie2/Cookie.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package hiding.cookie2;
diff --git a/hiding/dessert/Cookie.java b/hiding/dessert/Cookie.java
index 803e504c2..b6de1bdb9 100644
--- a/hiding/dessert/Cookie.java
+++ b/hiding/dessert/Cookie.java
@@ -1,5 +1,5 @@
 // hiding/dessert/Cookie.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creates a library
diff --git a/hiding/mypackage/MyClass.java b/hiding/mypackage/MyClass.java
index 5245d4796..c029f6646 100644
--- a/hiding/mypackage/MyClass.java
+++ b/hiding/mypackage/MyClass.java
@@ -1,5 +1,5 @@
 // hiding/mypackage/MyClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package hiding.mypackage;
diff --git a/hiding/packageaccess/PublicConstructor.java b/hiding/packageaccess/PublicConstructor.java
index 533c28a0a..250090505 100644
--- a/hiding/packageaccess/PublicConstructor.java
+++ b/hiding/packageaccess/PublicConstructor.java
@@ -1,5 +1,5 @@
 // hiding/packageaccess/PublicConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package hiding.packageaccess;
diff --git a/housekeeping/Apricot.java b/housekeeping/Apricot.java
index dae8f33de..81932eaba 100644
--- a/housekeeping/Apricot.java
+++ b/housekeeping/Apricot.java
@@ -1,7 +1,8 @@
 // housekeeping/Apricot.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
+
 public class Apricot {
   void pick() { /* ... */ }
   void pit() { pick(); /* ... */ }
diff --git a/housekeeping/ArrayClassObj.java b/housekeeping/ArrayClassObj.java
index 44e31b59e..440087080 100644
--- a/housekeeping/ArrayClassObj.java
+++ b/housekeeping/ArrayClassObj.java
@@ -1,5 +1,5 @@
 // housekeeping/ArrayClassObj.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating an array of nonprimitive objects
diff --git a/housekeeping/ArrayInit.java b/housekeeping/ArrayInit.java
index 4186bd24e..f515f13b5 100644
--- a/housekeeping/ArrayInit.java
+++ b/housekeeping/ArrayInit.java
@@ -1,5 +1,5 @@
 // housekeeping/ArrayInit.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Array initialization
diff --git a/housekeeping/ArrayNew.java b/housekeeping/ArrayNew.java
index 022cec168..8cba539a9 100644
--- a/housekeeping/ArrayNew.java
+++ b/housekeeping/ArrayNew.java
@@ -1,5 +1,5 @@
 // housekeeping/ArrayNew.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating arrays with new
diff --git a/housekeeping/ArraysOfPrimitives.java b/housekeeping/ArraysOfPrimitives.java
index 165afe896..cfd0cf2f6 100644
--- a/housekeeping/ArraysOfPrimitives.java
+++ b/housekeeping/ArraysOfPrimitives.java
@@ -1,5 +1,5 @@
 // housekeeping/ArraysOfPrimitives.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/AutoboxingVarargs.java b/housekeeping/AutoboxingVarargs.java
index c670fa670..76bb5a7b0 100644
--- a/housekeeping/AutoboxingVarargs.java
+++ b/housekeeping/AutoboxingVarargs.java
@@ -1,5 +1,5 @@
 // housekeeping/AutoboxingVarargs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/BananaPeel.java b/housekeeping/BananaPeel.java
index b3e01b273..30d1e8095 100644
--- a/housekeeping/BananaPeel.java
+++ b/housekeeping/BananaPeel.java
@@ -1,5 +1,5 @@
 // housekeeping/BananaPeel.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/Burrito.java b/housekeeping/Burrito.java
index e3fd028bd..88bf16fc0 100644
--- a/housekeeping/Burrito.java
+++ b/housekeeping/Burrito.java
@@ -1,5 +1,5 @@
 // housekeeping/Burrito.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/Counter.java b/housekeeping/Counter.java
index d0a58ecc6..ef5733e72 100644
--- a/housekeeping/Counter.java
+++ b/housekeeping/Counter.java
@@ -1,5 +1,5 @@
 // housekeeping/Counter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Counter {
diff --git a/housekeeping/DefaultConstructor.java b/housekeeping/DefaultConstructor.java
index 22e3787dd..ac8971130 100644
--- a/housekeeping/DefaultConstructor.java
+++ b/housekeeping/DefaultConstructor.java
@@ -1,5 +1,5 @@
 // housekeeping/DefaultConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/Demotion.java b/housekeeping/Demotion.java
index ad2c4e86b..5534bccb1 100644
--- a/housekeeping/Demotion.java
+++ b/housekeeping/Demotion.java
@@ -1,5 +1,5 @@
 // housekeeping/Demotion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demotion of primitives
diff --git a/housekeeping/DynamicArray.java b/housekeeping/DynamicArray.java
index 726ec034a..d94536e30 100644
--- a/housekeeping/DynamicArray.java
+++ b/housekeeping/DynamicArray.java
@@ -1,5 +1,5 @@
 // housekeeping/DynamicArray.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Array initialization
diff --git a/housekeeping/EnumOrder.java b/housekeeping/EnumOrder.java
index a3c962847..8927ae50f 100644
--- a/housekeeping/EnumOrder.java
+++ b/housekeeping/EnumOrder.java
@@ -1,5 +1,5 @@
 // housekeeping/EnumOrder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/ExplicitStatic.java b/housekeeping/ExplicitStatic.java
index 7d9cb31ad..034fbd417 100644
--- a/housekeeping/ExplicitStatic.java
+++ b/housekeeping/ExplicitStatic.java
@@ -1,5 +1,5 @@
 // housekeeping/ExplicitStatic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Explicit static initialization with "static" clause
@@ -28,7 +28,7 @@ class Cups {
 public class ExplicitStatic {
   public static void main(String[] args) {
     System.out.println("Inside main()");
-    Cups.cup1.f(99);  // [1]
+    Cups.cup1.f(99);                  // [1]
   }
   // static Cups cups1 = new Cups();  // [2]
   // static Cups cups2 = new Cups();  // [2]
diff --git a/housekeeping/Flower.java b/housekeeping/Flower.java
index a62d7cbe5..ad90463c2 100644
--- a/housekeeping/Flower.java
+++ b/housekeeping/Flower.java
@@ -1,5 +1,5 @@
 // housekeeping/Flower.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Calling constructors with "this"
diff --git a/housekeeping/InitialValues.java b/housekeeping/InitialValues.java
index dced4dd2e..90c82ce14 100644
--- a/housekeeping/InitialValues.java
+++ b/housekeeping/InitialValues.java
@@ -1,5 +1,5 @@
 // housekeeping/InitialValues.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Shows default initial values
diff --git a/housekeeping/InitialValues2.java b/housekeeping/InitialValues2.java
index 1cb509744..678331e26 100644
--- a/housekeeping/InitialValues2.java
+++ b/housekeeping/InitialValues2.java
@@ -1,5 +1,5 @@
 // housekeeping/InitialValues2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Providing explicit initial values
diff --git a/housekeeping/Leaf.java b/housekeeping/Leaf.java
index f9c560b24..dc559c98d 100644
--- a/housekeeping/Leaf.java
+++ b/housekeeping/Leaf.java
@@ -1,5 +1,5 @@
 // housekeeping/Leaf.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple use of the "this" keyword
diff --git a/housekeeping/Measurement.java b/housekeeping/Measurement.java
index 8a920779e..c97bfbd9f 100644
--- a/housekeeping/Measurement.java
+++ b/housekeeping/Measurement.java
@@ -1,5 +1,5 @@
 // housekeeping/Measurement.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 class Depth {}
diff --git a/housekeeping/MethodInit.java b/housekeeping/MethodInit.java
index 84e15fcef..242866b16 100644
--- a/housekeeping/MethodInit.java
+++ b/housekeeping/MethodInit.java
@@ -1,5 +1,5 @@
 // housekeeping/MethodInit.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class MethodInit {
diff --git a/housekeeping/MethodInit2.java b/housekeeping/MethodInit2.java
index 24750fb2d..d00d17900 100644
--- a/housekeeping/MethodInit2.java
+++ b/housekeeping/MethodInit2.java
@@ -1,5 +1,5 @@
 // housekeeping/MethodInit2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class MethodInit2 {
diff --git a/housekeeping/MethodInit3.java b/housekeeping/MethodInit3.java
index 2a6524aba..7b201f306 100644
--- a/housekeeping/MethodInit3.java
+++ b/housekeeping/MethodInit3.java
@@ -1,5 +1,5 @@
 // housekeeping/MethodInit3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class MethodInit3 {
diff --git a/housekeeping/Mugs.java b/housekeeping/Mugs.java
index e4ebba695..bdb6f1518 100644
--- a/housekeeping/Mugs.java
+++ b/housekeeping/Mugs.java
@@ -1,5 +1,5 @@
 // housekeeping/Mugs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Instance initialization
@@ -13,7 +13,7 @@ class Mug {
 public class Mugs {
   Mug mug1;
   Mug mug2;
-  { // [1]
+  {                                         // [1]
     mug1 = new Mug(1);
     mug2 = new Mug(2);
     System.out.println("mug1 & mug2 initialized");
diff --git a/housekeeping/NewVarArgs.java b/housekeeping/NewVarArgs.java
index 291dd1346..640dda154 100644
--- a/housekeeping/NewVarArgs.java
+++ b/housekeeping/NewVarArgs.java
@@ -1,5 +1,5 @@
 // housekeeping/NewVarArgs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using array syntax to create variable argument lists
@@ -25,6 +25,6 @@ public static void main(String[] args) {
 47 3.14 11.11
 47 3.14 11.11
 one two three
-A@15db9742 A@6d06d69c A@7852e922
+A@19e0bfd A@139a55 A@1db9742
 1 2 3 4
 */
diff --git a/housekeeping/NoSynthesis.java b/housekeeping/NoSynthesis.java
index 217c20230..7cb90130d 100644
--- a/housekeeping/NoSynthesis.java
+++ b/housekeeping/NoSynthesis.java
@@ -1,5 +1,5 @@
 // housekeeping/NoSynthesis.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/OptionalTrailingArguments.java b/housekeeping/OptionalTrailingArguments.java
index d7ee9fbbf..62b2a92f8 100644
--- a/housekeeping/OptionalTrailingArguments.java
+++ b/housekeeping/OptionalTrailingArguments.java
@@ -1,5 +1,5 @@
 // housekeeping/OptionalTrailingArguments.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/OrderOfInitialization.java b/housekeeping/OrderOfInitialization.java
index c715ed7c5..dc175d315 100644
--- a/housekeeping/OrderOfInitialization.java
+++ b/housekeeping/OrderOfInitialization.java
@@ -1,5 +1,5 @@
 // housekeeping/OrderOfInitialization.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates initialization order
diff --git a/housekeeping/Overloading.java b/housekeeping/Overloading.java
index 99d21bf80..65f239529 100644
--- a/housekeeping/Overloading.java
+++ b/housekeeping/Overloading.java
@@ -1,5 +1,5 @@
 // housekeeping/Overloading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Both constructor and ordinary method overloading
diff --git a/housekeeping/OverloadingOrder.java b/housekeeping/OverloadingOrder.java
index 42f6466ec..e2cef3012 100644
--- a/housekeeping/OverloadingOrder.java
+++ b/housekeeping/OverloadingOrder.java
@@ -1,5 +1,5 @@
 // housekeeping/OverloadingOrder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overloading based on the order of the arguments
diff --git a/housekeeping/OverloadingVarargs.java b/housekeeping/OverloadingVarargs.java
index c13b7406f..dea4785c5 100644
--- a/housekeeping/OverloadingVarargs.java
+++ b/housekeeping/OverloadingVarargs.java
@@ -1,5 +1,5 @@
 // housekeeping/OverloadingVarargs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/OverloadingVarargs2.java b/housekeeping/OverloadingVarargs2.java
index c3a098451..2c1755d41 100644
--- a/housekeeping/OverloadingVarargs2.java
+++ b/housekeeping/OverloadingVarargs2.java
@@ -1,5 +1,5 @@
 // housekeeping/OverloadingVarargs2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/housekeeping/OverloadingVarargs3.java b/housekeeping/OverloadingVarargs3.java
index 23e757ec5..c49f472ea 100644
--- a/housekeeping/OverloadingVarargs3.java
+++ b/housekeeping/OverloadingVarargs3.java
@@ -1,5 +1,5 @@
 // housekeeping/OverloadingVarargs3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/PassingThis.java b/housekeeping/PassingThis.java
index ce725eabf..5a6bb9396 100644
--- a/housekeeping/PassingThis.java
+++ b/housekeeping/PassingThis.java
@@ -1,5 +1,5 @@
 // housekeeping/PassingThis.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/PrimitiveOverloading.java b/housekeeping/PrimitiveOverloading.java
index 1d8c1e2c6..9618eddfb 100644
--- a/housekeeping/PrimitiveOverloading.java
+++ b/housekeeping/PrimitiveOverloading.java
@@ -1,5 +1,5 @@
 // housekeeping/PrimitiveOverloading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Promotion of primitives and overloading
diff --git a/housekeeping/SimpleConstructor.java b/housekeeping/SimpleConstructor.java
index c6917c33d..ff28bd063 100644
--- a/housekeeping/SimpleConstructor.java
+++ b/housekeeping/SimpleConstructor.java
@@ -1,5 +1,5 @@
 // housekeeping/SimpleConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of a simple constructor
diff --git a/housekeeping/SimpleConstructor2.java b/housekeeping/SimpleConstructor2.java
index 4a191af78..ae6936efc 100644
--- a/housekeeping/SimpleConstructor2.java
+++ b/housekeeping/SimpleConstructor2.java
@@ -1,5 +1,5 @@
 // housekeeping/SimpleConstructor2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructors can have arguments
diff --git a/housekeeping/SimpleEnumUse.java b/housekeeping/SimpleEnumUse.java
index cc0de33b2..d1c69f024 100644
--- a/housekeeping/SimpleEnumUse.java
+++ b/housekeeping/SimpleEnumUse.java
@@ -1,5 +1,5 @@
 // housekeeping/SimpleEnumUse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/Spiciness.java b/housekeeping/Spiciness.java
index a134a822d..94ccfe85e 100644
--- a/housekeeping/Spiciness.java
+++ b/housekeeping/Spiciness.java
@@ -1,5 +1,5 @@
 // housekeeping/Spiciness.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/housekeeping/Spoon.java b/housekeeping/Spoon.java
index fd3448159..bf9257689 100644
--- a/housekeeping/Spoon.java
+++ b/housekeeping/Spoon.java
@@ -1,5 +1,5 @@
 // housekeeping/Spoon.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Spoon {
diff --git a/housekeeping/StaticInitialization.java b/housekeeping/StaticInitialization.java
index 0cfe99aea..eaa743d84 100644
--- a/housekeeping/StaticInitialization.java
+++ b/housekeeping/StaticInitialization.java
@@ -1,5 +1,5 @@
 // housekeeping/StaticInitialization.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Specifying initial values in a class definition
diff --git a/housekeeping/TerminationCondition.java b/housekeeping/TerminationCondition.java
index dc8d347b8..532053b7c 100644
--- a/housekeeping/TerminationCondition.java
+++ b/housekeeping/TerminationCondition.java
@@ -1,5 +1,5 @@
 // housekeeping/TerminationCondition.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using finalize() to detect an object that
@@ -15,8 +15,7 @@ void checkIn() {
     checkedOut = false;
   }
   @SuppressWarnings("deprecation")
-  @Override
-  public void finalize() {
+  @Override public void finalize() {
     if(checkedOut)
       System.out.println("Error: checked out");
     // Normally, you'll also do this:
diff --git a/housekeeping/VarArgs.java b/housekeeping/VarArgs.java
index 73a94c392..25f44d86e 100644
--- a/housekeeping/VarArgs.java
+++ b/housekeeping/VarArgs.java
@@ -1,5 +1,5 @@
 // housekeeping/VarArgs.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using array syntax to create variable argument lists
@@ -22,5 +22,5 @@ public static void main(String[] args) {
 /* Output:
 47 3.14 11.11
 one two three
-A@15db9742 A@6d06d69c A@7852e922
+A@19e0bfd A@139a55 A@1db9742
 */
diff --git a/housekeeping/VarargType.java b/housekeeping/VarargType.java
index 5b25b0536..b6ea406bc 100644
--- a/housekeeping/VarargType.java
+++ b/housekeeping/VarargType.java
@@ -1,5 +1,5 @@
 // housekeeping/VarargType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/innerclasses/AnonymousConstructor.java b/innerclasses/AnonymousConstructor.java
index d8e08e7c9..10a6b6433 100644
--- a/innerclasses/AnonymousConstructor.java
+++ b/innerclasses/AnonymousConstructor.java
@@ -1,5 +1,5 @@
 // innerclasses/AnonymousConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a constructor for an anonymous inner class
@@ -16,8 +16,7 @@ public static Base getBase(int i) {
     return new Base(i) {
       { System.out.println(
         "Inside instance initializer"); }
-      @Override
-      public void f() {
+      @Override public void f() {
         System.out.println("In anonymous f()");
       }
     };
diff --git a/innerclasses/BigEgg.java b/innerclasses/BigEgg.java
index 7b2c36246..96cb06f3a 100644
--- a/innerclasses/BigEgg.java
+++ b/innerclasses/BigEgg.java
@@ -1,5 +1,5 @@
 // innerclasses/BigEgg.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An inner class cannot be overridden like a method
diff --git a/innerclasses/BigEgg2.java b/innerclasses/BigEgg2.java
index 1631008d2..847165f3c 100644
--- a/innerclasses/BigEgg2.java
+++ b/innerclasses/BigEgg2.java
@@ -1,5 +1,5 @@
 // innerclasses/BigEgg2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Proper inheritance of an inner class
@@ -24,8 +24,7 @@ public class Yolk extends Egg2.Yolk {
     public Yolk() {
       System.out.println("BigEgg2.Yolk()");
     }
-    @Override
-    public void f() {
+    @Override public void f() {
       System.out.println("BigEgg2.Yolk.f()");
     }
   }
diff --git a/innerclasses/Callbacks.java b/innerclasses/Callbacks.java
index d16593322..9031ea242 100644
--- a/innerclasses/Callbacks.java
+++ b/innerclasses/Callbacks.java
@@ -1,5 +1,5 @@
 // innerclasses/Callbacks.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using inner classes for callbacks
@@ -13,8 +13,7 @@ interface Incrementable {
 // Very simple to just implement the interface:
 class Callee1 implements Incrementable {
   private int i = 0;
-  @Override
-  public void increment() {
+  @Override public void increment() {
     i++;
     System.out.println(i);
   }
@@ -31,15 +30,13 @@ public void increment() {
 // some other way, you must use an inner class:
 class Callee2 extends MyIncrement {
   private int i = 0;
-  @Override
-  public void increment() {
+  @Override public void increment() {
     super.increment();
     i++;
     System.out.println(i);
   }
   private class Closure implements Incrementable {
-    @Override
-    public void increment() {
+    @Override public void increment() {
       // Specify outer-class method, otherwise
       // you'll get an infinite recursion:
       Callee2.this.increment();
diff --git a/innerclasses/ClassInInterface.java b/innerclasses/ClassInInterface.java
index c3cc0589b..b06042743 100644
--- a/innerclasses/ClassInInterface.java
+++ b/innerclasses/ClassInInterface.java
@@ -1,5 +1,5 @@
 // innerclasses/ClassInInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java ClassInInterface$Test}
@@ -7,8 +7,7 @@
 public interface ClassInInterface {
   void howdy();
   class Test implements ClassInInterface {
-    @Override
-    public void howdy() {
+    @Override public void howdy() {
       System.out.println("Howdy!");
     }
     public static void main(String[] args) {
diff --git a/innerclasses/Contents.java b/innerclasses/Contents.java
index 0cebe1a0d..e31519124 100644
--- a/innerclasses/Contents.java
+++ b/innerclasses/Contents.java
@@ -1,5 +1,5 @@
 // innerclasses/Contents.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public interface Contents {
diff --git a/innerclasses/Destination.java b/innerclasses/Destination.java
index bf221526b..0702be02f 100644
--- a/innerclasses/Destination.java
+++ b/innerclasses/Destination.java
@@ -1,5 +1,5 @@
 // innerclasses/Destination.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public interface Destination {
diff --git a/innerclasses/DotNew.java b/innerclasses/DotNew.java
index 317400e80..3f77dc608 100644
--- a/innerclasses/DotNew.java
+++ b/innerclasses/DotNew.java
@@ -1,5 +1,5 @@
 // innerclasses/DotNew.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating an inner class directly using .new syntax
diff --git a/innerclasses/DotThis.java b/innerclasses/DotThis.java
index b87cb1f4c..881ba9a9e 100644
--- a/innerclasses/DotThis.java
+++ b/innerclasses/DotThis.java
@@ -1,5 +1,5 @@
 // innerclasses/DotThis.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Accessing the outer-class object
diff --git a/innerclasses/GreenhouseController.java b/innerclasses/GreenhouseController.java
index cf3ec6530..5ec13cab6 100644
--- a/innerclasses/GreenhouseController.java
+++ b/innerclasses/GreenhouseController.java
@@ -1,5 +1,5 @@
 // innerclasses/GreenhouseController.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Configure and execute the greenhouse system
diff --git a/innerclasses/GreenhouseControls.java b/innerclasses/GreenhouseControls.java
index 57458d66f..4836f8c5e 100644
--- a/innerclasses/GreenhouseControls.java
+++ b/innerclasses/GreenhouseControls.java
@@ -1,5 +1,5 @@
 // innerclasses/GreenhouseControls.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // This produces a specific application of the
@@ -14,14 +14,12 @@ public class LightOn extends Event {
     public LightOn(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here to
       // physically turn on the light.
       light = true;
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Light is on";
     }
   }
@@ -29,14 +27,12 @@ public class LightOff extends Event {
     public LightOff(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here to
       // physically turn off the light.
       light = false;
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Light is off";
     }
   }
@@ -45,13 +41,11 @@ public class WaterOn extends Event {
     public WaterOn(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here.
       water = true;
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Greenhouse water is on";
     }
   }
@@ -59,13 +53,11 @@ public class WaterOff extends Event {
     public WaterOff(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here.
       water = false;
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Greenhouse water is off";
     }
   }
@@ -74,13 +66,11 @@ public class ThermostatNight extends Event {
     public ThermostatNight(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here.
       thermostat = "Night";
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Thermostat on night setting";
     }
   }
@@ -88,13 +78,11 @@ public class ThermostatDay extends Event {
     public ThermostatDay(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       // Put hardware control code here.
       thermostat = "Day";
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Thermostat on day setting";
     }
   }
@@ -104,12 +92,10 @@ public class Bell extends Event {
     public Bell(long delayTime) {
       super(delayTime);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       addEvent(new Bell(delayTime.toMillis()));
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Bing!";
     }
   }
@@ -122,8 +108,7 @@ public class Restart extends Event {
       for(Event e : eventList)
         addEvent(e);
     }
-    @Override
-    public void action() {
+    @Override public void action() {
       for(Event e : eventList) {
         e.start(); // Rerun each event
         addEvent(e);
@@ -131,8 +116,7 @@ public void action() {
       start(); // Rerun this Event
       addEvent(this);
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Restarting system";
     }
   }
@@ -142,8 +126,7 @@ public Terminate(long delayTime) {
     }
     @Override
     public void action() { System.exit(0); }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       return "Terminating";
     }
   }
diff --git a/innerclasses/InheritInner.java b/innerclasses/InheritInner.java
index ffc868946..5e89cbe11 100644
--- a/innerclasses/InheritInner.java
+++ b/innerclasses/InheritInner.java
@@ -1,5 +1,5 @@
 // innerclasses/InheritInner.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheriting an inner class
diff --git a/innerclasses/LocalInnerClass.java b/innerclasses/LocalInnerClass.java
index 015108545..efc2ec555 100644
--- a/innerclasses/LocalInnerClass.java
+++ b/innerclasses/LocalInnerClass.java
@@ -1,5 +1,5 @@
 // innerclasses/LocalInnerClass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Holds a sequence of Objects
@@ -17,8 +17,7 @@ class LocalCounter implements Counter {
         // Local inner class can have a constructor
         System.out.println("LocalCounter()");
       }
-      @Override
-      public int next() {
+      @Override public int next() {
         System.out.print(name); // Access local final
         return count++;
       }
@@ -33,8 +32,7 @@ Counter getCounter2(final String name) {
       {
         System.out.println("Counter()");
       }
-      @Override
-      public int next() {
+      @Override public int next() {
         System.out.print(name); // Access local final
         return count++;
       }
diff --git a/innerclasses/MultiImplementation.java b/innerclasses/MultiImplementation.java
index 6eb6c494f..d5e4869af 100644
--- a/innerclasses/MultiImplementation.java
+++ b/innerclasses/MultiImplementation.java
@@ -1,5 +1,5 @@
 // innerclasses/MultiImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // For concrete or abstract classes, inner classes
diff --git a/innerclasses/MultiNestingAccess.java b/innerclasses/MultiNestingAccess.java
index bf9e3cb02..a97ffcfed 100644
--- a/innerclasses/MultiNestingAccess.java
+++ b/innerclasses/MultiNestingAccess.java
@@ -1,5 +1,5 @@
 // innerclasses/MultiNestingAccess.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Nested classes can access all members of all
diff --git a/innerclasses/Parcel1.java b/innerclasses/Parcel1.java
index 94464cbcd..270134080 100644
--- a/innerclasses/Parcel1.java
+++ b/innerclasses/Parcel1.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating inner classes
diff --git a/innerclasses/Parcel10.java b/innerclasses/Parcel10.java
index 7150c1929..1d02fb7a1 100644
--- a/innerclasses/Parcel10.java
+++ b/innerclasses/Parcel10.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel10.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using "instance initialization" to perform
diff --git a/innerclasses/Parcel11.java b/innerclasses/Parcel11.java
index 720981f0e..ccedb3b40 100644
--- a/innerclasses/Parcel11.java
+++ b/innerclasses/Parcel11.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel11.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Nested classes (static inner classes)
@@ -8,8 +8,7 @@ public class Parcel11 {
   private static class
   ParcelContents implements Contents {
     private int i = 11;
-    @Override
-    public int value() { return i; }
+    @Override public int value() { return i; }
   }
   protected static final class ParcelDestination
   implements Destination {
diff --git a/innerclasses/Parcel2.java b/innerclasses/Parcel2.java
index 1eca5cba2..e7e106d98 100644
--- a/innerclasses/Parcel2.java
+++ b/innerclasses/Parcel2.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Returning a reference to an inner class
diff --git a/innerclasses/Parcel3.java b/innerclasses/Parcel3.java
index 2e0733e05..d35f9d6aa 100644
--- a/innerclasses/Parcel3.java
+++ b/innerclasses/Parcel3.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using .new to create instances of inner classes
diff --git a/innerclasses/Parcel5.java b/innerclasses/Parcel5.java
index 622b3fd08..79ea40a89 100644
--- a/innerclasses/Parcel5.java
+++ b/innerclasses/Parcel5.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Nesting a class within a method
diff --git a/innerclasses/Parcel6.java b/innerclasses/Parcel6.java
index 7a2c866e7..4c4325ba9 100644
--- a/innerclasses/Parcel6.java
+++ b/innerclasses/Parcel6.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel6.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Nesting a class within a scope
diff --git a/innerclasses/Parcel7.java b/innerclasses/Parcel7.java
index 3a4aefbb6..c98947d49 100644
--- a/innerclasses/Parcel7.java
+++ b/innerclasses/Parcel7.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel7.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Returning an instance of an anonymous inner class
@@ -8,8 +8,7 @@ public class Parcel7 {
   public Contents contents() {
     return new Contents() { // Insert class definition
       private int i = 11;
-      @Override
-      public int value() { return i; }
+      @Override public int value() { return i; }
     }; // Semicolon required
   }
   public static void main(String[] args) {
diff --git a/innerclasses/Parcel7b.java b/innerclasses/Parcel7b.java
index bee95727e..31521df9e 100644
--- a/innerclasses/Parcel7b.java
+++ b/innerclasses/Parcel7b.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel7b.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Expanded version of Parcel7.java
@@ -7,8 +7,7 @@
 public class Parcel7b {
   class MyContents implements Contents {
     private int i = 11;
-    @Override
-    public int value() { return i; }
+    @Override public int value() { return i; }
   }
   public Contents contents() {
     return new MyContents();
diff --git a/innerclasses/Parcel8.java b/innerclasses/Parcel8.java
index 1e615ac5a..4ee309935 100644
--- a/innerclasses/Parcel8.java
+++ b/innerclasses/Parcel8.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel8.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Calling the base-class constructor
@@ -7,12 +7,11 @@
 public class Parcel8 {
   public Wrapping wrapping(int x) {
     // Base constructor call:
-    return new Wrapping(x) { // [1]
-      @Override
-      public int value() {
+    return new Wrapping(x) {          // [1]
+      @Override public int value() {
         return super.value() * 47;
       }
-    }; // [2]
+    };                                // [2]
   }
   public static void main(String[] args) {
     Parcel8 p = new Parcel8();
diff --git a/innerclasses/Parcel9.java b/innerclasses/Parcel9.java
index 775390f13..53053cd16 100644
--- a/innerclasses/Parcel9.java
+++ b/innerclasses/Parcel9.java
@@ -1,5 +1,5 @@
 // innerclasses/Parcel9.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/innerclasses/Sequence.java b/innerclasses/Sequence.java
index b5a870b98..ad9869177 100644
--- a/innerclasses/Sequence.java
+++ b/innerclasses/Sequence.java
@@ -1,5 +1,5 @@
 // innerclasses/Sequence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Holds a sequence of Objects
diff --git a/innerclasses/TestBed.java b/innerclasses/TestBed.java
index d4bc16dda..35a7fade2 100644
--- a/innerclasses/TestBed.java
+++ b/innerclasses/TestBed.java
@@ -1,5 +1,5 @@
 // innerclasses/TestBed.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Putting test code in a nested class
diff --git a/innerclasses/TestParcel.java b/innerclasses/TestParcel.java
index f1ec5d47f..76ec51bda 100644
--- a/innerclasses/TestParcel.java
+++ b/innerclasses/TestParcel.java
@@ -1,13 +1,12 @@
 // innerclasses/TestParcel.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 class Parcel4 {
   private class PContents implements Contents {
     private int i = 11;
-    @Override
-    public int value() { return i; }
+    @Override public int value() { return i; }
   }
   protected final class
   PDestination implements Destination {
diff --git a/innerclasses/Wrapping.java b/innerclasses/Wrapping.java
index 651c07488..74e9e9ab8 100644
--- a/innerclasses/Wrapping.java
+++ b/innerclasses/Wrapping.java
@@ -1,5 +1,5 @@
 // innerclasses/Wrapping.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 public class Wrapping {
diff --git a/innerclasses/controller/Controller.java b/innerclasses/controller/Controller.java
index 9a3625b36..de766961a 100644
--- a/innerclasses/controller/Controller.java
+++ b/innerclasses/controller/Controller.java
@@ -1,5 +1,5 @@
 // innerclasses/controller/Controller.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The reusable framework for control systems
diff --git a/innerclasses/controller/Event.java b/innerclasses/controller/Event.java
index 5523168f4..247e4c90b 100644
--- a/innerclasses/controller/Event.java
+++ b/innerclasses/controller/Event.java
@@ -1,5 +1,5 @@
 // innerclasses/controller/Event.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The common methods for any control event
diff --git a/innerclasses/mui/MultiInterfaces.java b/innerclasses/mui/MultiInterfaces.java
index 127a6c80b..ee69f61ab 100644
--- a/innerclasses/mui/MultiInterfaces.java
+++ b/innerclasses/mui/MultiInterfaces.java
@@ -1,5 +1,5 @@
 // innerclasses/mui/MultiInterfaces.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Two ways a class can implement multiple interfaces
diff --git a/interfaces/AbstractAccess.java b/interfaces/AbstractAccess.java
index c2e43da3a..8645d9f36 100644
--- a/interfaces/AbstractAccess.java
+++ b/interfaces/AbstractAccess.java
@@ -1,5 +1,5 @@
 // interfaces/AbstractAccess.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/AbstractWithoutAbstracts.java b/interfaces/AbstractWithoutAbstracts.java
index 2e6b700c9..587248a02 100644
--- a/interfaces/AbstractWithoutAbstracts.java
+++ b/interfaces/AbstractWithoutAbstracts.java
@@ -1,5 +1,5 @@
 // interfaces/AbstractWithoutAbstracts.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/AdaptedRandomDoubles.java b/interfaces/AdaptedRandomDoubles.java
index 6c7866554..d965e5add 100644
--- a/interfaces/AdaptedRandomDoubles.java
+++ b/interfaces/AdaptedRandomDoubles.java
@@ -1,5 +1,5 @@
 // interfaces/AdaptedRandomDoubles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating an adapter with inheritance
@@ -12,8 +12,7 @@ public class AdaptedRandomDoubles
   public AdaptedRandomDoubles(int count) {
     this.count = count;
   }
-  @Override
-  public int read(CharBuffer cb) {
+  @Override public int read(CharBuffer cb) {
     if(count-- == 0)
       return -1;
     String result = Double.toString(next()) + " ";
diff --git a/interfaces/Adventure.java b/interfaces/Adventure.java
index 1a7135d13..4e0bbbde2 100644
--- a/interfaces/Adventure.java
+++ b/interfaces/Adventure.java
@@ -1,5 +1,5 @@
 // interfaces/Adventure.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Multiple interfaces
@@ -22,8 +22,8 @@ public void fight() {}
 
 class Hero extends ActionCharacter
     implements CanFight, CanSwim, CanFly {
-  public void swim() {}
-  public void fly() {}
+  @Override public void swim() {}
+  @Override public void fly() {}
 }
 
 public class Adventure {
diff --git a/interfaces/AnImplementation.java b/interfaces/AnImplementation.java
index 3ff13a30c..29ca8df57 100644
--- a/interfaces/AnImplementation.java
+++ b/interfaces/AnImplementation.java
@@ -1,13 +1,13 @@
 // interfaces/AnImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class AnImplementation implements AnInterface {
-  public void firstMethod() {
+  @Override public void firstMethod() {
     System.out.println("firstMethod");
   }
-  public void secondMethod() {
+  @Override public void secondMethod() {
     System.out.println("secondMethod");
   }
   public static void main(String[] args) {
diff --git a/interfaces/AnInterface.java b/interfaces/AnInterface.java
index 30f82b3a0..333dbe2b5 100644
--- a/interfaces/AnInterface.java
+++ b/interfaces/AnInterface.java
@@ -1,5 +1,5 @@
 // interfaces/AnInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/Applicator.java b/interfaces/Applicator.java
index a6aa172f9..1082629a1 100644
--- a/interfaces/Applicator.java
+++ b/interfaces/Applicator.java
@@ -1,5 +1,5 @@
 // interfaces/Applicator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/interfaces/AttemptToUseBasic.java b/interfaces/AttemptToUseBasic.java
index 0d2655279..d8e67f72b 100644
--- a/interfaces/AttemptToUseBasic.java
+++ b/interfaces/AttemptToUseBasic.java
@@ -1,5 +1,5 @@
 // interfaces/AttemptToUseBasic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/interfaces/Basic.java b/interfaces/Basic.java
index 19c1c75b2..943392b02 100644
--- a/interfaces/Basic.java
+++ b/interfaces/Basic.java
@@ -1,5 +1,5 @@
 // interfaces/Basic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/Basic2.java b/interfaces/Basic2.java
index 4c8f0c93c..1c33a54f9 100644
--- a/interfaces/Basic2.java
+++ b/interfaces/Basic2.java
@@ -1,5 +1,5 @@
 // interfaces/Basic2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/Factories.java b/interfaces/Factories.java
index 87e282513..8ab076014 100644
--- a/interfaces/Factories.java
+++ b/interfaces/Factories.java
@@ -1,5 +1,5 @@
 // interfaces/Factories.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -14,34 +14,32 @@ interface ServiceFactory {
 
 class Service1 implements Service {
   Service1() {} // Package access
-  public void method1() {
+  @Override public void method1() {
     System.out.println("Service1 method1");
   }
-  public void method2() {
+  @Override public void method2() {
     System.out.println("Service1 method2");
   }
 }
 
 class Service1Factory implements ServiceFactory {
-  @Override
-  public Service getService() {
+  @Override public Service getService() {
     return new Service1();
   }
 }
 
 class Service2 implements Service {
   Service2() {} // Package access
-  public void method1() {
+  @Override public void method1() {
     System.out.println("Service2 method1");
   }
-  public void method2() {
+  @Override public void method2() {
     System.out.println("Service2 method2");
   }
 }
 
 class Service2Factory implements ServiceFactory {
-  @Override
-  public Service getService() {
+  @Override public Service getService() {
     return new Service2();
   }
 }
diff --git a/interfaces/Games.java b/interfaces/Games.java
index 867efe0cc..3190d3b1e 100644
--- a/interfaces/Games.java
+++ b/interfaces/Games.java
@@ -1,5 +1,5 @@
 // interfaces/Games.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A Game framework using Factory Methods
@@ -10,8 +10,7 @@ interface GameFactory { Game getGame(); }
 class Checkers implements Game {
   private int moves = 0;
   private static final int MOVES = 3;
-  @Override
-  public boolean move() {
+  @Override public boolean move() {
     System.out.println("Checkers move " + moves);
     return ++moves != MOVES;
   }
@@ -25,8 +24,7 @@ class CheckersFactory implements GameFactory {
 class Chess implements Game {
   private int moves = 0;
   private static final int MOVES = 4;
-  @Override
-  public boolean move() {
+  @Override public boolean move() {
     System.out.println("Chess move " + moves);
     return ++moves != MOVES;
   }
diff --git a/interfaces/HorrorShow.java b/interfaces/HorrorShow.java
index b1c687dac..079fe2ce3 100644
--- a/interfaces/HorrorShow.java
+++ b/interfaces/HorrorShow.java
@@ -1,5 +1,5 @@
 // interfaces/HorrorShow.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Extending an interface with inheritance
@@ -17,10 +17,8 @@ interface Lethal {
 }
 
 class DragonZilla implements DangerousMonster {
-  @Override
-  public void menace() {}
-  @Override
-  public void destroy() {}
+  @Override public void menace() {}
+  @Override public void destroy() {}
 }
 
 interface Vampire extends DangerousMonster, Lethal {
@@ -28,14 +26,10 @@ interface Vampire extends DangerousMonster, Lethal {
 }
 
 class VeryBadVampire implements Vampire {
-  @Override
-  public void menace() {}
-  @Override
-  public void destroy() {}
-  @Override
-  public void kill() {}
-  @Override
-  public void drinkBlood() {}
+  @Override public void menace() {}
+  @Override public void destroy() {}
+  @Override public void kill() {}
+  @Override public void drinkBlood() {}
 }
 
 public class HorrorShow {
diff --git a/interfaces/Implementation2.java b/interfaces/Implementation2.java
index 61c6efa01..07fb48324 100644
--- a/interfaces/Implementation2.java
+++ b/interfaces/Implementation2.java
@@ -1,14 +1,14 @@
 // interfaces/Implementation2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class Implementation2
 implements InterfaceWithDefault {
-  public void firstMethod() {
+  @Override public void firstMethod() {
     System.out.println("firstMethod");
   }
-  public void secondMethod() {
+  @Override public void secondMethod() {
     System.out.println("secondMethod");
   }
   public static void main(String[] args) {
diff --git a/interfaces/ImplementingAnInterface.java b/interfaces/ImplementingAnInterface.java
index 6a13ebb63..1504667fe 100644
--- a/interfaces/ImplementingAnInterface.java
+++ b/interfaces/ImplementingAnInterface.java
@@ -1,5 +1,5 @@
 // interfaces/ImplementingAnInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,6 +9,10 @@ interface Concept { // Package access
 }
 
 class Implementation implements Concept {
-  public void idea1() { System.out.println("idea1"); }
-  public void idea2() { System.out.println("idea2"); }
+  @Override public void idea1() {
+    System.out.println("idea1");
+  }
+  @Override public void idea2() {
+    System.out.println("idea2");
+  }
 }
diff --git a/interfaces/Instantiable.java b/interfaces/Instantiable.java
index 427b6ca39..80b689895 100644
--- a/interfaces/Instantiable.java
+++ b/interfaces/Instantiable.java
@@ -1,5 +1,5 @@
 // interfaces/Instantiable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,10 +9,8 @@ abstract class Uninstantiable {
 }
 
 public class Instantiable extends Uninstantiable {
-  @Override
-  void f() { System.out.println("f()"); }
-  @Override
-  int g() { return 22; }
+  @Override void f() { System.out.println("f()"); }
+  @Override int g() { return 22; }
   public static void main(String[] args) {
     Uninstantiable ui = new Instantiable();
   }
diff --git a/interfaces/InterfaceCollision.java b/interfaces/InterfaceCollision.java
index 0f7de1ac6..a3a6612b1 100644
--- a/interfaces/InterfaceCollision.java
+++ b/interfaces/InterfaceCollision.java
@@ -1,5 +1,5 @@
 // interfaces/InterfaceCollision.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -22,8 +22,7 @@ class C3 extends C implements I2 {
 
 class C4 extends C implements I3 {
   // Identical, no problem:
-  @Override
-  public int f() { return 1; }
+  @Override public int f() { return 1; }
 }
 
 // Methods differ only by return type:
diff --git a/interfaces/InterfaceWithDefault.java b/interfaces/InterfaceWithDefault.java
index a87f02db9..983beb4b4 100644
--- a/interfaces/InterfaceWithDefault.java
+++ b/interfaces/InterfaceWithDefault.java
@@ -1,5 +1,5 @@
 // interfaces/InterfaceWithDefault.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/Jim.java b/interfaces/Jim.java
index 515db6e52..a22f53dd3 100644
--- a/interfaces/Jim.java
+++ b/interfaces/Jim.java
@@ -1,5 +1,5 @@
 // interfaces/Jim.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -17,8 +17,9 @@ default void jim() {
 }
 
 public class Jim implements Jim1, Jim2 {
-  @Override
-  public void jim() { Jim2.super.jim(); }
+  @Override public void jim() {
+    Jim2.super.jim();
+  }
   public static void main(String[] args) {
     new Jim().jim();
   }
diff --git a/interfaces/MICollision.java b/interfaces/MICollision.java
index c96e5696b..a37d947ad 100644
--- a/interfaces/MICollision.java
+++ b/interfaces/MICollision.java
@@ -1,5 +1,5 @@
 // interfaces/MICollision.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/interfaces/Machine.java b/interfaces/Machine.java
index 2b1144aef..72e3fcbc9 100644
--- a/interfaces/Machine.java
+++ b/interfaces/Machine.java
@@ -1,24 +1,24 @@
 // interfaces/Machine.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
 import onjava.Operations;
 
 class Bing implements Operations {
-  public void execute() {
+  @Override public void execute() {
     Operations.show("Bing");
   }
 }
 
 class Crack implements Operations {
-  public void execute() {
+  @Override public void execute() {
     Operations.show("Crack");
   }
 }
 
 class Twist implements Operations {
-  public void execute() {
+  @Override public void execute() {
     Operations.show("Twist");
   }
 }
diff --git a/interfaces/Months.java b/interfaces/Months.java
index 27317dd5d..d475340b1 100644
--- a/interfaces/Months.java
+++ b/interfaces/Months.java
@@ -1,5 +1,5 @@
 // interfaces/Months.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using interfaces to create groups of constants
diff --git a/interfaces/MultipleInheritance.java b/interfaces/MultipleInheritance.java
index 6ce9c91e0..e2b96777c 100644
--- a/interfaces/MultipleInheritance.java
+++ b/interfaces/MultipleInheritance.java
@@ -1,5 +1,5 @@
 // interfaces/MultipleInheritance.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/interfaces/PureInterface.java b/interfaces/PureInterface.java
index 37bf9f0bd..ef7732be1 100644
--- a/interfaces/PureInterface.java
+++ b/interfaces/PureInterface.java
@@ -1,5 +1,5 @@
 // interfaces/PureInterface.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Interface only looked like this before Java 8
diff --git a/interfaces/RandVals.java b/interfaces/RandVals.java
index 0221c851d..449ae3f0e 100644
--- a/interfaces/RandVals.java
+++ b/interfaces/RandVals.java
@@ -1,5 +1,5 @@
 // interfaces/RandVals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Initializing interface fields with
diff --git a/interfaces/RandomDoubles.java b/interfaces/RandomDoubles.java
index 99154d953..afe18dc0a 100644
--- a/interfaces/RandomDoubles.java
+++ b/interfaces/RandomDoubles.java
@@ -1,5 +1,5 @@
 // interfaces/RandomDoubles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/interfaces/RandomStrings.java b/interfaces/RandomStrings.java
index 82f982308..da45cf48e 100644
--- a/interfaces/RandomStrings.java
+++ b/interfaces/RandomStrings.java
@@ -1,5 +1,5 @@
 // interfaces/RandomStrings.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Implementing an interface to conform to a method
@@ -18,8 +18,7 @@ public class RandomStrings implements Readable {
   public RandomStrings(int count) {
     this.count = count;
   }
-  @Override
-  public int read(CharBuffer cb) {
+  @Override public int read(CharBuffer cb) {
     if(count-- == 0)
       return -1; // Indicates end of input
     cb.append(CAPITALS[rand.nextInt(CAPITALS.length)]);
diff --git a/interfaces/TestRandVals.java b/interfaces/TestRandVals.java
index df3490b26..132d7af89 100644
--- a/interfaces/TestRandVals.java
+++ b/interfaces/TestRandVals.java
@@ -1,5 +1,5 @@
 // interfaces/TestRandVals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/interfaces/filters/BandPass.java b/interfaces/filters/BandPass.java
index 7d09ed285..e0e233904 100644
--- a/interfaces/filters/BandPass.java
+++ b/interfaces/filters/BandPass.java
@@ -1,5 +1,5 @@
 // interfaces/filters/BandPass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.filters;
diff --git a/interfaces/filters/Filter.java b/interfaces/filters/Filter.java
index 72e29a9e9..e2d0ae6dc 100644
--- a/interfaces/filters/Filter.java
+++ b/interfaces/filters/Filter.java
@@ -1,5 +1,5 @@
 // interfaces/filters/Filter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.filters;
diff --git a/interfaces/filters/HighPass.java b/interfaces/filters/HighPass.java
index 7bf047df5..8167e1b8b 100644
--- a/interfaces/filters/HighPass.java
+++ b/interfaces/filters/HighPass.java
@@ -1,5 +1,5 @@
 // interfaces/filters/HighPass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.filters;
diff --git a/interfaces/filters/LowPass.java b/interfaces/filters/LowPass.java
index e9320a82a..77bedf515 100644
--- a/interfaces/filters/LowPass.java
+++ b/interfaces/filters/LowPass.java
@@ -1,5 +1,5 @@
 // interfaces/filters/LowPass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.filters;
diff --git a/interfaces/filters/Waveform.java b/interfaces/filters/Waveform.java
index 406446770..8262fc102 100644
--- a/interfaces/filters/Waveform.java
+++ b/interfaces/filters/Waveform.java
@@ -1,5 +1,5 @@
 // interfaces/filters/Waveform.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.filters;
@@ -7,8 +7,7 @@
 public class Waveform {
   private static long counter;
   private final long id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Waveform " + id;
   }
 }
diff --git a/interfaces/interfaceprocessor/Applicator.java b/interfaces/interfaceprocessor/Applicator.java
index 77d7a9a66..3b063a473 100644
--- a/interfaces/interfaceprocessor/Applicator.java
+++ b/interfaces/interfaceprocessor/Applicator.java
@@ -1,5 +1,5 @@
 // interfaces/interfaceprocessor/Applicator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.interfaceprocessor;
diff --git a/interfaces/interfaceprocessor/FilterProcessor.java b/interfaces/interfaceprocessor/FilterProcessor.java
index 33689ed46..066be331a 100644
--- a/interfaces/interfaceprocessor/FilterProcessor.java
+++ b/interfaces/interfaceprocessor/FilterProcessor.java
@@ -1,5 +1,5 @@
 // interfaces/interfaceprocessor/FilterProcessor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java interfaces.interfaceprocessor.FilterProcessor}
diff --git a/interfaces/interfaceprocessor/Processor.java b/interfaces/interfaceprocessor/Processor.java
index 6315da300..343803194 100644
--- a/interfaces/interfaceprocessor/Processor.java
+++ b/interfaces/interfaceprocessor/Processor.java
@@ -1,5 +1,5 @@
 // interfaces/interfaceprocessor/Processor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package interfaces.interfaceprocessor;
diff --git a/interfaces/interfaceprocessor/StringProcessor.java b/interfaces/interfaceprocessor/StringProcessor.java
index 37cb49469..f97472b7c 100644
--- a/interfaces/interfaceprocessor/StringProcessor.java
+++ b/interfaces/interfaceprocessor/StringProcessor.java
@@ -1,5 +1,5 @@
 // interfaces/interfaceprocessor/StringProcessor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java interfaces.interfaceprocessor.StringProcessor}
@@ -8,11 +8,11 @@
 
 interface StringProcessor extends Processor {
   @Override
-  String process(Object input);  // [1]
-  String S = // [2]
+  String process(Object input);        // [1]
+  String S =                           // [2]
   "If she weighs the same as a duck, " +
   "she's made of wood";
-  static void main(String[] args) { // [3]
+  static void main(String[] args) {    // [3]
     Applicator.apply(new Upcase(), S);
     Applicator.apply(new Downcase(), S);
     Applicator.apply(new Splitter(), S);
diff --git a/interfaces/music4/Music4.java b/interfaces/music4/Music4.java
index 710341494..a875d4c4e 100644
--- a/interfaces/music4/Music4.java
+++ b/interfaces/music4/Music4.java
@@ -1,5 +1,5 @@
 // interfaces/music4/Music4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Abstract classes and methods
@@ -15,62 +15,51 @@ abstract class Instrument {
 }
 
 class Wind extends Instrument {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Wind.play() " + n);
   }
-  @Override
-  public String what() { return "Wind"; }
-  @Override
-  public void adjust() {
+  @Override public String what() { return "Wind"; }
+  @Override public void adjust() {
     System.out.println("Adjusting Wind");
   }
 }
 
 class Percussion extends Instrument {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Percussion.play() " + n);
   }
-  @Override
-  public String what() { return "Percussion"; }
-  @Override
-  public void adjust() {
+  @Override public String what() {
+    return "Percussion";
+  }
+  @Override public void adjust() {
     System.out.println("Adjusting Percussion");
   }
 }
 
 class Stringed extends Instrument {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Stringed.play() " + n);
   }
-  @Override
-  public String what() { return "Stringed"; }
-  @Override
-  public void adjust() {
+  @Override public String what() { return "Stringed"; }
+  @Override public void adjust() {
     System.out.println("Adjusting Stringed");
   }
 }
 
 class Brass extends Wind {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Brass.play() " + n);
   }
-  @Override
-  public void adjust() {
+  @Override public void adjust() {
     System.out.println("Adjusting Brass");
   }
 }
 
 class Woodwind extends Wind {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Woodwind.play() " + n);
   }
-  @Override
-  public String what() { return "Woodwind"; }
+  @Override public String what() { return "Woodwind"; }
 }
 
 public class Music4 {
diff --git a/interfaces/music5/Music5.java b/interfaces/music5/Music5.java
index 2326bdbc9..775e656b8 100644
--- a/interfaces/music5/Music5.java
+++ b/interfaces/music5/Music5.java
@@ -1,5 +1,5 @@
 // interfaces/music5/Music5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java interfaces.music5.Music5}
@@ -18,28 +18,33 @@ default void adjust() {
 }
 
 class Wind implements Instrument {
-  @Override
-  public String toString() { return "Wind"; }
+  @Override public String toString() {
+    return "Wind";
+  }
 }
 
 class Percussion implements Instrument {
-  @Override
-  public String toString() { return "Percussion"; }
+  @Override public String toString() {
+    return "Percussion";
+  }
 }
 
 class Stringed implements Instrument {
-  @Override
-  public String toString() { return "Stringed"; }
+  @Override public String toString() {
+    return "Stringed";
+  }
 }
 
 class Brass extends Wind {
-  @Override
-  public String toString() { return "Brass"; }
+  @Override public String toString() {
+    return "Brass";
+  }
 }
 
 class Woodwind extends Wind {
-  @Override
-  public String toString() { return "Woodwind"; }
+  @Override public String toString() {
+    return "Woodwind";
+  }
 }
 
 public class Music5 {
diff --git a/interfaces/nesting/NestingInterfaces.java b/interfaces/nesting/NestingInterfaces.java
index 99b466bb0..fa4d482ce 100644
--- a/interfaces/nesting/NestingInterfaces.java
+++ b/interfaces/nesting/NestingInterfaces.java
@@ -1,5 +1,5 @@
 // interfaces/nesting/NestingInterfaces.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java interfaces.nesting.NestingInterfaces}
@@ -10,34 +10,28 @@ interface B {
     void f();
   }
   public class BImp implements B {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   private class BImp2 implements B {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   public interface C {
     void f();
   }
   class CImp implements C {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   private class CImp2 implements C {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   private interface D {
     void f();
   }
   private class DImp implements D {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   public class DImp2 implements D {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   public D getD() { return new DImp2(); }
   private D dRef;
@@ -62,12 +56,10 @@ public interface H {
 
 public class NestingInterfaces {
   public class BImp implements A.B {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   class CImp implements A.C {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   // Cannot implement a private interface except
   // within that interface's defining class:
@@ -75,19 +67,15 @@ public void f() {}
   //-  public void f() {}
   //- }
   class EImp implements E {
-    @Override
-    public void g() {}
+    @Override public void g() {}
   }
   class EGImp implements E.G {
-    @Override
-    public void f() {}
+    @Override public void f() {}
   }
   class EImp2 implements E {
-    @Override
-    public void g() {}
+    @Override public void g() {}
     class EG implements E.G {
-      @Override
-      public void f() {}
+      @Override public void f() {}
     }
   }
   public static void main(String[] args) {
diff --git a/iostreams/BasicFileOutput.java b/iostreams/BasicFileOutput.java
index 1da5c6fdc..c31cf7f21 100644
--- a/iostreams/BasicFileOutput.java
+++ b/iostreams/BasicFileOutput.java
@@ -1,5 +1,5 @@
 // iostreams/BasicFileOutput.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/iostreams/BufferedInputFile.java b/iostreams/BufferedInputFile.java
index bfe6396f1..2c5c8ae7f 100644
--- a/iostreams/BufferedInputFile.java
+++ b/iostreams/BufferedInputFile.java
@@ -1,5 +1,5 @@
 // iostreams/BufferedInputFile.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/iostreams/FileOutputShortcut.java b/iostreams/FileOutputShortcut.java
index 5a160ec00..54d3e0597 100644
--- a/iostreams/FileOutputShortcut.java
+++ b/iostreams/FileOutputShortcut.java
@@ -1,5 +1,5 @@
 // iostreams/FileOutputShortcut.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/iostreams/FormattedMemoryInput.java b/iostreams/FormattedMemoryInput.java
index 055dd8826..f29e75128 100644
--- a/iostreams/FormattedMemoryInput.java
+++ b/iostreams/FormattedMemoryInput.java
@@ -1,5 +1,5 @@
 // iostreams/FormattedMemoryInput.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/iostreams/MemoryInput.java b/iostreams/MemoryInput.java
index 1326965c6..db5f8d4f9 100644
--- a/iostreams/MemoryInput.java
+++ b/iostreams/MemoryInput.java
@@ -1,5 +1,5 @@
 // iostreams/MemoryInput.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {VisuallyInspectOutput}
diff --git a/iostreams/StoringAndRecoveringData.java b/iostreams/StoringAndRecoveringData.java
index 761f022eb..961f418d7 100644
--- a/iostreams/StoringAndRecoveringData.java
+++ b/iostreams/StoringAndRecoveringData.java
@@ -1,5 +1,5 @@
 // iostreams/StoringAndRecoveringData.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/iostreams/TestEOF.java b/iostreams/TestEOF.java
index 956cb1a03..a1c939667 100644
--- a/iostreams/TestEOF.java
+++ b/iostreams/TestEOF.java
@@ -1,5 +1,5 @@
 // iostreams/TestEOF.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Testing for end of file
diff --git a/iostreams/UsingRandomAccessFile.java b/iostreams/UsingRandomAccessFile.java
index dde6d1ee8..98969a1d2 100644
--- a/iostreams/UsingRandomAccessFile.java
+++ b/iostreams/UsingRandomAccessFile.java
@@ -1,5 +1,5 @@
 // iostreams/UsingRandomAccessFile.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/javadoc/Documentation1.java b/javadoc/Documentation1.java
index 7838fbd95..790f69fd5 100644
--- a/javadoc/Documentation1.java
+++ b/javadoc/Documentation1.java
@@ -1,5 +1,5 @@
 // javadoc/Documentation1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 /** A class comment */
diff --git a/javadoc/Documentation2.java b/javadoc/Documentation2.java
index 237755f4c..397009e4c 100644
--- a/javadoc/Documentation2.java
+++ b/javadoc/Documentation2.java
@@ -1,5 +1,5 @@
 // javadoc/Documentation2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 /** 
diff --git a/javadoc/Documentation3.java b/javadoc/Documentation3.java
index a3063c3d1..df0c403bb 100644
--- a/javadoc/Documentation3.java
+++ b/javadoc/Documentation3.java
@@ -1,5 +1,5 @@
 // javadoc/Documentation3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 /** You can even insert a list:
diff --git a/javadoc/HelloDateDoc.java b/javadoc/HelloDateDoc.java
index 54b505a44..b6ebe8b47 100644
--- a/javadoc/HelloDateDoc.java
+++ b/javadoc/HelloDateDoc.java
@@ -1,5 +1,5 @@
 // javadoc/HelloDateDoc.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -22,5 +22,5 @@ public static void main(String[] args) {
 }
 /* Output:
 Hello, it's:
-Tue May 09 06:07:27 MDT 2017
+Sun Jan 24 08:49:10 MST 2021
 */
diff --git a/lowlevel/AtomicEvenProducer.java b/lowlevel/AtomicEvenProducer.java
index 8c45b61c9..d45592c93 100644
--- a/lowlevel/AtomicEvenProducer.java
+++ b/lowlevel/AtomicEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicEvenProducer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Atomic classes: occasionally useful in regular code
@@ -8,8 +8,7 @@
 public class AtomicEvenProducer extends IntGenerator {
   private AtomicInteger currentEvenValue =
     new AtomicInteger(0);
-  @Override
-  public int next() {
+  @Override public int next() {
     return currentEvenValue.addAndGet(2);
   }
   public static void main(String[] args) {
diff --git a/lowlevel/AtomicIntegerTest.java b/lowlevel/AtomicIntegerTest.java
index 09db1ca83..a93134a8e 100644
--- a/lowlevel/AtomicIntegerTest.java
+++ b/lowlevel/AtomicIntegerTest.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicIntegerTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
@@ -10,6 +10,7 @@
 public class AtomicIntegerTest extends IntTestable {
   private AtomicInteger i = new AtomicInteger(0);
   public int getAsInt() { return i.get(); }
+  @Override
   public void evenIncrement() { i.addAndGet(2); }
   public static void main(String[] args) {
     Atomicity.test(new AtomicIntegerTest());
diff --git a/lowlevel/AtomicSerialNumbers.java b/lowlevel/AtomicSerialNumbers.java
index 2e30e9c4a..ef1cdff51 100644
--- a/lowlevel/AtomicSerialNumbers.java
+++ b/lowlevel/AtomicSerialNumbers.java
@@ -1,5 +1,5 @@
 // lowlevel/AtomicSerialNumbers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.*;
@@ -8,7 +8,7 @@
 AtomicSerialNumbers extends SerialNumbers {
   private AtomicInteger serialNumber =
     new AtomicInteger();
-  public int nextSerialNumber() {
+  @Override public int nextSerialNumber() {
     return serialNumber.getAndIncrement();
   }
   public static void main(String[] args) {
diff --git a/lowlevel/Atomicity.java b/lowlevel/Atomicity.java
index 632631bf4..f8f01d641 100644
--- a/lowlevel/Atomicity.java
+++ b/lowlevel/Atomicity.java
@@ -1,5 +1,5 @@
 // lowlevel/Atomicity.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/AttemptLocking.java b/lowlevel/AttemptLocking.java
index 9dbe2b28e..8632fd58b 100644
--- a/lowlevel/AttemptLocking.java
+++ b/lowlevel/AttemptLocking.java
@@ -1,5 +1,5 @@
 // lowlevel/AttemptLocking.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Locks in the concurrent library allow you
diff --git a/lowlevel/CaptureUncaughtException.java b/lowlevel/CaptureUncaughtException.java
index 33261667d..90458aee5 100644
--- a/lowlevel/CaptureUncaughtException.java
+++ b/lowlevel/CaptureUncaughtException.java
@@ -1,12 +1,11 @@
 // lowlevel/CaptureUncaughtException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
 
 class ExceptionThread2 implements Runnable {
-  @Override
-  public void run() {
+  @Override public void run() {
     Thread t = Thread.currentThread();
     System.out.println("run() by " + t.getName());
     System.out.println(
@@ -24,8 +23,7 @@ public void uncaughtException(Thread t, Throwable e) {
 }
 
 class HandlerThreadFactory implements ThreadFactory {
-  @Override
-  public Thread newThread(Runnable r) {
+  @Override public Thread newThread(Runnable r) {
     System.out.println(this + " creating new Thread");
     Thread t = new Thread(r);
     System.out.println("created " + t);
@@ -47,10 +45,10 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-HandlerThreadFactory@4e25154f creating new Thread
+HandlerThreadFactory@106d69c creating new Thread
 created Thread[Thread-0,5,main]
-eh = MyUncaughtExceptionHandler@70dea4e
+eh = MyUncaughtExceptionHandler@52e922
 run() by Thread-0
-eh = MyUncaughtExceptionHandler@70dea4e
+eh = MyUncaughtExceptionHandler@52e922
 caught java.lang.RuntimeException
 */
diff --git a/lowlevel/CircularSet.java b/lowlevel/CircularSet.java
index 225eaeca4..f0ab28334 100644
--- a/lowlevel/CircularSet.java
+++ b/lowlevel/CircularSet.java
@@ -1,5 +1,5 @@
 // lowlevel/CircularSet.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Reuses storage so we don't run out of memory
diff --git a/lowlevel/DelayQueueDemo.java b/lowlevel/DelayQueueDemo.java
index c5575c681..bce53a85f 100644
--- a/lowlevel/DelayQueueDemo.java
+++ b/lowlevel/DelayQueueDemo.java
@@ -1,5 +1,5 @@
 // lowlevel/DelayQueueDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -20,24 +20,20 @@ class DelayedTask implements Runnable, Delayed {
       NANOSECONDS.convert(delta, MILLISECONDS);
     sequence.add(this);
   }
-  @Override
-  public long getDelay(TimeUnit unit) {
+  @Override public long getDelay(TimeUnit unit) {
     return unit.convert(
       trigger - System.nanoTime(), NANOSECONDS);
   }
-  @Override
-  public int compareTo(Delayed arg) {
+  @Override public int compareTo(Delayed arg) {
     DelayedTask that = (DelayedTask)arg;
     if(trigger < that.trigger) return -1;
     if(trigger > that.trigger) return 1;
     return 0;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     System.out.print(this + " ");
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return
       String.format("[%d] Task %d", delta, id);
   }
@@ -46,8 +42,7 @@ public String summary() {
   }
   public static class EndTask extends DelayedTask {
     EndTask(int delay) { super(delay); }
-    @Override
-    public void run() {
+    @Override public void run() {
       sequence.forEach(dt ->
         System.out.println(dt.summary()));
     }
@@ -70,7 +65,7 @@ public class DelayQueueDemo {
   }
 }
 /* Output:
-[128] Task 12 [429] Task 6 [551] Task 13 [555] Task 2
+[128] Task 12 [429] Task 6 [555] Task 2 [551] Task 13
 [693] Task 3 [809] Task 15 [961] Task 5 [1258] Task 1
 [1258] Task 20 [1520] Task 19 [1861] Task 4 [1998] Task
 17 [2200] Task 8 [2207] Task 10 [2288] Task 11 [2522]
diff --git a/lowlevel/EvenChecker.java b/lowlevel/EvenChecker.java
index 5e27a39eb..4ba64637e 100644
--- a/lowlevel/EvenChecker.java
+++ b/lowlevel/EvenChecker.java
@@ -1,5 +1,5 @@
 // lowlevel/EvenChecker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -14,8 +14,7 @@ public EvenChecker(IntGenerator generator, int id) {
     this.generator = generator;
     this.id = id;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     while(!generator.isCanceled()) {
       int val = generator.next();
       if(val % 2 != 0) {
diff --git a/lowlevel/EvenProducer.java b/lowlevel/EvenProducer.java
index 301577557..67774aa24 100644
--- a/lowlevel/EvenProducer.java
+++ b/lowlevel/EvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/EvenProducer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // When threads collide
@@ -7,9 +7,8 @@
 
 public class EvenProducer extends IntGenerator {
   private int currentEvenValue = 0;
-  @Override
-  public int next() {
-    ++currentEvenValue; // [1]
+  @Override public int next() {
+    ++currentEvenValue;                   // [1]
     ++currentEvenValue;
     return currentEvenValue;
   }
diff --git a/lowlevel/ExceptionThread.java b/lowlevel/ExceptionThread.java
index 518b9f5f1..9fee108c9 100644
--- a/lowlevel/ExceptionThread.java
+++ b/lowlevel/ExceptionThread.java
@@ -1,13 +1,12 @@
 // lowlevel/ExceptionThread.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
 import java.util.concurrent.*;
 
 public class ExceptionThread implements Runnable {
-  @Override
-  public void run() {
+  @Override public void run() {
     throw new RuntimeException();
   }
   public static void main(String[] args) {
@@ -21,7 +20,7 @@ public static void main(String[] args) {
 ___[ Error Output ]___
 Exception in thread "pool-1-thread-1"
 java.lang.RuntimeException
-        at ExceptionThread.run(ExceptionThread.java:8)
+        at ExceptionThread.run(ExceptionThread.java:7)
         at java.util.concurrent.ThreadPoolExecutor.runW
 orker(ThreadPoolExecutor.java:1142)
         at java.util.concurrent.ThreadPoolExecutor$Work
diff --git a/lowlevel/IntGenerator.java b/lowlevel/IntGenerator.java
index e1dd0f629..a5078a955 100644
--- a/lowlevel/IntGenerator.java
+++ b/lowlevel/IntGenerator.java
@@ -1,5 +1,5 @@
 // lowlevel/IntGenerator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/lowlevel/IntTestable.java b/lowlevel/IntTestable.java
index 1989ff4db..bd2f2abde 100644
--- a/lowlevel/IntTestable.java
+++ b/lowlevel/IntTestable.java
@@ -1,5 +1,5 @@
 // lowlevel/IntTestable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -7,8 +7,7 @@
 public abstract class
 IntTestable implements Runnable, IntSupplier {
   abstract void evenIncrement();
-  @Override
-  public void run() {
+  @Override public void run() {
     while(true)
       evenIncrement();
   }
diff --git a/lowlevel/MutexEvenProducer.java b/lowlevel/MutexEvenProducer.java
index ae82df827..24ce0448a 100644
--- a/lowlevel/MutexEvenProducer.java
+++ b/lowlevel/MutexEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/MutexEvenProducer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Preventing thread collisions with mutexes
@@ -9,8 +9,7 @@
 public class MutexEvenProducer extends IntGenerator {
   private int currentEvenValue = 0;
   private Lock lock = new ReentrantLock();
-  @Override
-  public int next() {
+  @Override public int next() {
     lock.lock();
     try {
       ++currentEvenValue;
diff --git a/lowlevel/NaiveExceptionHandling.java b/lowlevel/NaiveExceptionHandling.java
index 3681337ef..efda2778e 100644
--- a/lowlevel/NaiveExceptionHandling.java
+++ b/lowlevel/NaiveExceptionHandling.java
@@ -1,5 +1,5 @@
 // lowlevel/NaiveExceptionHandling.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
@@ -23,7 +23,7 @@ public static void main(String[] args) {
 ___[ Error Output ]___
 Exception in thread "pool-1-thread-1"
 java.lang.RuntimeException
-        at ExceptionThread.run(ExceptionThread.java:8)
+        at ExceptionThread.run(ExceptionThread.java:7)
         at java.util.concurrent.ThreadPoolExecutor.runW
 orker(ThreadPoolExecutor.java:1142)
         at java.util.concurrent.ThreadPoolExecutor$Work
diff --git a/lowlevel/NotAtomic.java b/lowlevel/NotAtomic.java
index c6c6c3211..00a1b0102 100644
--- a/lowlevel/NotAtomic.java
+++ b/lowlevel/NotAtomic.java
@@ -1,5 +1,5 @@
 // lowlevel/NotAtomic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // javap -c NotAtomic
diff --git a/lowlevel/NumberOfProcessors.java b/lowlevel/NumberOfProcessors.java
index 44abeb5dd..3c3abf81f 100644
--- a/lowlevel/NumberOfProcessors.java
+++ b/lowlevel/NumberOfProcessors.java
@@ -1,5 +1,5 @@
 // lowlevel/NumberOfProcessors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/PriorityBlockingQueueDemo.java b/lowlevel/PriorityBlockingQueueDemo.java
index 099a53497..4683ed841 100644
--- a/lowlevel/PriorityBlockingQueueDemo.java
+++ b/lowlevel/PriorityBlockingQueueDemo.java
@@ -1,5 +1,5 @@
 // lowlevel/PriorityBlockingQueueDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -19,13 +19,11 @@ class Prioritized implements Comparable  {
     this.priority = priority;
     sequence.add(this);
   }
-  @Override
-  public int compareTo(Prioritized arg) {
+  @Override public int compareTo(Prioritized arg) {
     return priority < arg.priority ? 1 :
       (priority > arg.priority ? -1 : 0);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return String.format(
       "[%d] Prioritized %d", priority, id);
   }
@@ -51,8 +49,7 @@ class Producer implements Runnable {
   Producer(Queue q) {
     queue = q;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     rand.ints(10, 0, 20)
       .mapToObj(Prioritized::new)
       .peek(p -> new Nap(rand.nextDouble() / 10))
@@ -68,8 +65,7 @@ class Consumer implements Runnable {
   Consumer(PriorityBlockingQueue q) {
     this.q = q;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     while(true) {
       try {
         Prioritized pt = q.take();
@@ -98,21 +94,21 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-[15] Prioritized 2
-[17] Prioritized 1
+[15] Prioritized 1
+[17] Prioritized 0
 [17] Prioritized 5
 [16] Prioritized 6
 [14] Prioritized 9
-[12] Prioritized 0
+[12] Prioritized 2
 [11] Prioritized 4
 [11] Prioritized 12
 [13] Prioritized 13
 [12] Prioritized 16
-[14] Prioritized 18
+[14] Prioritized 17
 [15] Prioritized 23
 [18] Prioritized 26
 [16] Prioritized 29
-[12] Prioritized 17
+[12] Prioritized 18
 [11] Prioritized 30
 [11] Prioritized 24
 [10] Prioritized 15
@@ -129,10 +125,10 @@ public static void main(String[] args) {
 [0] Prioritized 14
 [0] Prioritized 21
 [-1] Prioritized 28
-(0:12)(2:15)(1:17)(3:1)(4:11)
+(0:17)(1:15)(2:12)(3:1)(4:11)
 (5:17)(6:16)(7:3)(8:0)(9:14)
 (10:8)(11:8)(12:11)(13:13)(14:0)
-(15:10)(16:12)(17:12)(18:14)(19:0)
+(15:10)(16:12)(17:14)(18:12)(19:0)
 (20:2)(21:0)(22:10)(23:15)(24:11)
 (25:8)(26:18)(27:-1)(28:-1)(29:16)
 (30:11)(31:6)(32:-1)
diff --git a/lowlevel/ReOrdering.java b/lowlevel/ReOrdering.java
index 8209ac40f..77f07469e 100644
--- a/lowlevel/ReOrdering.java
+++ b/lowlevel/ReOrdering.java
@@ -1,13 +1,12 @@
 // lowlevel/ReOrdering.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class ReOrdering implements Runnable {
   int one, two, three, four, five, six;
   volatile int volaTile;
-  @Override
-  public void run() {
+  @Override public void run() {
     one = 1;
     two = 2;
     three = 3;
diff --git a/lowlevel/SafeReturn.java b/lowlevel/SafeReturn.java
index 751c96be9..70d21454e 100644
--- a/lowlevel/SafeReturn.java
+++ b/lowlevel/SafeReturn.java
@@ -1,5 +1,5 @@
 // lowlevel/SafeReturn.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -8,6 +8,7 @@
 public class SafeReturn extends IntTestable {
   private int i = 0;
   public synchronized int getAsInt() { return i; }
+  @Override
   public synchronized void evenIncrement() {
     i++; i++;
   }
diff --git a/lowlevel/SerialNumberChecker.java b/lowlevel/SerialNumberChecker.java
index 9c2b92ad2..d539411ee 100644
--- a/lowlevel/SerialNumberChecker.java
+++ b/lowlevel/SerialNumberChecker.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumberChecker.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test SerialNumbers implementations for thread-safety
@@ -12,8 +12,7 @@ public class SerialNumberChecker implements Runnable {
   public SerialNumberChecker(SerialNumbers producer) {
     this.producer = producer;
   }
-  @Override
-  public void run() {
+  @Override public void run() {
     while(true) {
       int serial = producer.nextSerialNumber();
       if(serials.contains(serial)) {
diff --git a/lowlevel/SerialNumberTest.java b/lowlevel/SerialNumberTest.java
index cdeddcd95..9c740d259 100644
--- a/lowlevel/SerialNumberTest.java
+++ b/lowlevel/SerialNumberTest.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumberTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,5 +9,8 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Duplicate: 148044
+Duplicate: 33280
+Duplicate: 33278
+Duplicate: 33290
+Duplicate: 33277
 */
diff --git a/lowlevel/SerialNumbers.java b/lowlevel/SerialNumbers.java
index 3f6101c73..aaaf74bda 100644
--- a/lowlevel/SerialNumbers.java
+++ b/lowlevel/SerialNumbers.java
@@ -1,5 +1,5 @@
 // lowlevel/SerialNumbers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/lowlevel/SettingDefaultHandler.java b/lowlevel/SettingDefaultHandler.java
index 56a046426..7fe2d5c8a 100644
--- a/lowlevel/SettingDefaultHandler.java
+++ b/lowlevel/SettingDefaultHandler.java
@@ -1,5 +1,5 @@
 // lowlevel/SettingDefaultHandler.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/SwallowedException.java b/lowlevel/SwallowedException.java
index 60edd0d6c..7f70f0cb4 100644
--- a/lowlevel/SwallowedException.java
+++ b/lowlevel/SwallowedException.java
@@ -1,5 +1,5 @@
 // lowlevel/SwallowedException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.concurrent.*;
diff --git a/lowlevel/SyncOnObject.java b/lowlevel/SyncOnObject.java
index 846c5573a..d81ad9f4b 100644
--- a/lowlevel/SyncOnObject.java
+++ b/lowlevel/SyncOnObject.java
@@ -1,5 +1,5 @@
 // lowlevel/SyncOnObject.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Synchronizing on another object
diff --git a/lowlevel/SynchronizedComparison.java b/lowlevel/SynchronizedComparison.java
index 6fbcd1f3d..274f1f0b3 100644
--- a/lowlevel/SynchronizedComparison.java
+++ b/lowlevel/SynchronizedComparison.java
@@ -1,5 +1,5 @@
 // lowlevel/SynchronizedComparison.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Synchronizing blocks instead of entire methods
@@ -13,22 +13,21 @@
 abstract class Guarded {
   AtomicLong callCount = new AtomicLong();
   public abstract void method();
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName() +
       ": " + callCount.get();
   }
 }
 
 class SynchronizedMethod extends Guarded {
-  public synchronized void method() {
+  @Override public synchronized void method() {
     new Nap(0.01);
     callCount.incrementAndGet();
   }
 }
 
 class CriticalSection extends Guarded {
-  public void method() {
+  @Override public void method() {
     new Nap(0.01);
     synchronized(this) {
       callCount.incrementAndGet();
@@ -43,8 +42,7 @@ class Caller implements Runnable {
     new AtomicLong();
   private AtomicBoolean stop =
     new AtomicBoolean(false);
-  @Override
-  public void run() {
+  @Override public void run() {
     new Timer().schedule(new TimerTask() {
       public void run() { stop.set(true); }
     }, 2500);
@@ -76,14 +74,14 @@ public static void main(String[] args) {
   }
 }
 /* Output:
--> 243
--> 243
--> 243
--> 243
-CriticalSection: 972
--> 69
--> 61
--> 83
--> 36
-SynchronizedMethod: 249
+-> 159
+-> 159
+-> 159
+-> 159
+CriticalSection: 636
+-> 65
+-> 21
+-> 11
+-> 68
+SynchronizedMethod: 165
 */
diff --git a/lowlevel/SynchronizedEvenProducer.java b/lowlevel/SynchronizedEvenProducer.java
index 377aeecbb..7fb9b06f3 100644
--- a/lowlevel/SynchronizedEvenProducer.java
+++ b/lowlevel/SynchronizedEvenProducer.java
@@ -1,5 +1,5 @@
 // lowlevel/SynchronizedEvenProducer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simplifying mutexes with the synchronized keyword
@@ -8,8 +8,7 @@
 public class
 SynchronizedEvenProducer extends IntGenerator {
   private int currentEvenValue = 0;
-  @Override
-  public synchronized int next() {
+  @Override public synchronized int next() {
     ++currentEvenValue;
     new Nap(0.01); // Cause failure faster
     ++currentEvenValue;
diff --git a/lowlevel/SynchronizedSerialNumbers.java b/lowlevel/SynchronizedSerialNumbers.java
index 1739d8401..c73cd48ee 100644
--- a/lowlevel/SynchronizedSerialNumbers.java
+++ b/lowlevel/SynchronizedSerialNumbers.java
@@ -1,11 +1,12 @@
 // lowlevel/SynchronizedSerialNumbers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class
 SynchronizedSerialNumbers extends SerialNumbers {
   private int serialNumber = 0;
+  @Override
   public synchronized int nextSerialNumber() {
     return serialNumber++;
   }
diff --git a/lowlevel/TestAbort.java b/lowlevel/TestAbort.java
index a9efe5285..ae2477e1d 100644
--- a/lowlevel/TestAbort.java
+++ b/lowlevel/TestAbort.java
@@ -1,5 +1,5 @@
 // lowlevel/TestAbort.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/lowlevel/ThreadSize.java b/lowlevel/ThreadSize.java
index 0f00023d3..ff6f91fb5 100644
--- a/lowlevel/ThreadSize.java
+++ b/lowlevel/ThreadSize.java
@@ -1,5 +1,5 @@
 // lowlevel/ThreadSize.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle} Takes a long time or hangs
@@ -8,8 +8,7 @@
 
 public class ThreadSize {
   static class Dummy extends Thread {
-    @Override
-    public void run() { new Nap(1); }
+    @Override public void run() { new Nap(1); }
   }
   public static void main(String[] args) {
     ExecutorService exec =
diff --git a/lowlevel/UnsafeReturn.java b/lowlevel/UnsafeReturn.java
index c2481fc0f..964cc3af4 100644
--- a/lowlevel/UnsafeReturn.java
+++ b/lowlevel/UnsafeReturn.java
@@ -1,5 +1,5 @@
 // lowlevel/UnsafeReturn.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -8,6 +8,7 @@
 public class UnsafeReturn extends IntTestable {
   private int i = 0;
   public int getAsInt() { return i; }
+  @Override
   public synchronized void evenIncrement() {
     i++; i++;
   }
@@ -16,5 +17,5 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-failed with: 79
+failed with: 39
 */
diff --git a/lowlevel/WorkStealingPool.java b/lowlevel/WorkStealingPool.java
index 984de7067..9848b019d 100644
--- a/lowlevel/WorkStealingPool.java
+++ b/lowlevel/WorkStealingPool.java
@@ -1,13 +1,12 @@
 // lowlevel/WorkStealingPool.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
 import java.util.concurrent.*;
 
 class ShowThread implements Runnable {
-  @Override
-  public void run() {
+  @Override public void run() {
     System.out.println(
       Thread.currentThread().getName());
   }
@@ -28,14 +27,14 @@ public static void main(String[] args)
 }
 /* Output:
 8
-ForkJoinPool-1-worker-2
 ForkJoinPool-1-worker-1
 ForkJoinPool-1-worker-2
-ForkJoinPool-1-worker-3
-ForkJoinPool-1-worker-2
 ForkJoinPool-1-worker-1
 ForkJoinPool-1-worker-3
-ForkJoinPool-1-worker-1
+ForkJoinPool-1-worker-4
 ForkJoinPool-1-worker-4
 ForkJoinPool-1-worker-2
+ForkJoinPool-1-worker-3
+ForkJoinPool-1-worker-5
+ForkJoinPool-1-worker-1
 */
diff --git a/newio/AvailableCharSets.java b/newio/AvailableCharSets.java
index eda3b93c2..bb60164c9 100644
--- a/newio/AvailableCharSets.java
+++ b/newio/AvailableCharSets.java
@@ -1,5 +1,5 @@
 // newio/AvailableCharSets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Displays Charsets and aliases
@@ -33,11 +33,9 @@ public static void main(String[] args) {
 Extended_UNIX_Code_Packed_Format_for_Japanese, euc_jp,
 eucjp, x-eucjp
 EUC-KR: ksc5601-1987, csEUCKR, ksc5601_1987, ksc5601,
-5601,
-euc_kr, ksc_5601, ks_c_5601-1987, euckr
+5601, euc_kr, ksc_5601, ks_c_5601-1987, euckr
 GB18030: gb18030-2000
 GB2312: gb2312, euc-cn, x-EUC-CN, euccn, EUC_CN,
-gb2312-80,
-gb2312-1980
+gb2312-80, gb2312-1980
                   ...
 */
diff --git a/newio/BufferToText.java b/newio/BufferToText.java
index 2f38c2c6a..147c8857b 100644
--- a/newio/BufferToText.java
+++ b/newio/BufferToText.java
@@ -1,5 +1,5 @@
 // newio/BufferToText.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Converting text to and from ByteBuffers
diff --git a/newio/ChannelCopy.java b/newio/ChannelCopy.java
index 846961310..039cecd67 100644
--- a/newio/ChannelCopy.java
+++ b/newio/ChannelCopy.java
@@ -1,5 +1,5 @@
 // newio/ChannelCopy.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Copying a file using channels and buffers
diff --git a/newio/Endians.java b/newio/Endians.java
index 11d660760..183019e36 100644
--- a/newio/Endians.java
+++ b/newio/Endians.java
@@ -1,5 +1,5 @@
 // newio/Endians.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Endian differences and data storage
diff --git a/newio/FileLocking.java b/newio/FileLocking.java
index e8c74d2a9..7bd335244 100644
--- a/newio/FileLocking.java
+++ b/newio/FileLocking.java
@@ -1,5 +1,5 @@
 // newio/FileLocking.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.channels.*;
diff --git a/newio/GetChannel.java b/newio/GetChannel.java
index 16caa3400..1c16f1274 100644
--- a/newio/GetChannel.java
+++ b/newio/GetChannel.java
@@ -1,5 +1,5 @@
 // newio/GetChannel.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Getting channels from streams
diff --git a/newio/GetData.java b/newio/GetData.java
index b2518b101..aafbdbad0 100644
--- a/newio/GetData.java
+++ b/newio/GetData.java
@@ -1,5 +1,5 @@
 // newio/GetData.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Getting different representations from a ByteBuffer
diff --git a/newio/IntBufferDemo.java b/newio/IntBufferDemo.java
index 31ffaa8f8..ae88d9a84 100644
--- a/newio/IntBufferDemo.java
+++ b/newio/IntBufferDemo.java
@@ -1,5 +1,5 @@
 // newio/IntBufferDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Manipulating ints in a ByteBuffer with an IntBuffer
diff --git a/newio/LargeMappedFiles.java b/newio/LargeMappedFiles.java
index c4976e450..dba19f8b5 100644
--- a/newio/LargeMappedFiles.java
+++ b/newio/LargeMappedFiles.java
@@ -1,5 +1,5 @@
 // newio/LargeMappedFiles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating a very large file using mapping
diff --git a/newio/LockingMappedFiles.java b/newio/LockingMappedFiles.java
index 6fe8fee52..eec5a46ec 100644
--- a/newio/LockingMappedFiles.java
+++ b/newio/LockingMappedFiles.java
@@ -1,5 +1,5 @@
 // newio/LockingMappedFiles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Locking portions of a mapped file
@@ -33,8 +33,7 @@ private static class LockAndModify extends Thread {
       buff = mbb.slice();
       start();
     }
-    @Override
-    public void run() {
+    @Override public void run() {
       try {
         // Exclusive lock with no overlap:
         FileLock fl = fc.lock(start, end, false);
diff --git a/newio/MappedIO.java b/newio/MappedIO.java
index 93b4ddf3a..f098ae269 100644
--- a/newio/MappedIO.java
+++ b/newio/MappedIO.java
@@ -1,5 +1,5 @@
 // newio/MappedIO.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromGradle} Runs too long under WSL2
@@ -27,8 +27,7 @@ public void runTest() {
   }
   private static Tester[] tests = {
     new Tester("Stream Write") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           DataOutputStream dos =
             new DataOutputStream(
@@ -44,8 +43,7 @@ public void test() {
       }
     },
     new Tester("Mapped Write") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           FileChannel fc =
             new RandomAccessFile("temp.tmp", "rw")
@@ -62,8 +60,7 @@ public void test() {
       }
     },
     new Tester("Stream Read") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           DataInputStream dis =
             new DataInputStream(
@@ -78,8 +75,7 @@ public void test() {
       }
     },
     new Tester("Mapped Read") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           FileChannel fc = new FileInputStream(
             new File("temp.tmp")).getChannel()
@@ -95,8 +91,7 @@ public void test() {
       }
     },
     new Tester("Stream Read/Write") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           RandomAccessFile raf =
             new RandomAccessFile(
@@ -113,8 +108,7 @@ public void test() {
       }
     },
     new Tester("Mapped Read/Write") {
-      @Override
-      public void test() {
+      @Override public void test() {
         try(
           FileChannel fc = new RandomAccessFile(
             new File("temp.tmp"), "rw").getChannel()
diff --git a/newio/TransferTo.java b/newio/TransferTo.java
index f3095b71e..cafc1dc18 100644
--- a/newio/TransferTo.java
+++ b/newio/TransferTo.java
@@ -1,5 +1,5 @@
 // newio/TransferTo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using transferTo() between channels
diff --git a/newio/UsingBuffers.java b/newio/UsingBuffers.java
index 3f3a6bd14..213132a34 100644
--- a/newio/UsingBuffers.java
+++ b/newio/UsingBuffers.java
@@ -1,5 +1,5 @@
 // newio/UsingBuffers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.*;
diff --git a/newio/ViewBuffers.java b/newio/ViewBuffers.java
index d7bb1adfb..0806f4df0 100644
--- a/newio/ViewBuffers.java
+++ b/newio/ViewBuffers.java
@@ -1,5 +1,5 @@
 // newio/ViewBuffers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.*;
diff --git a/newio/data.txt b/newio/data.txt
new file mode 100644
index 000000000..6dc5df604
--- /dev/null
+++ b/newio/data.txt
@@ -0,0 +1 @@
+Some text Some more
\ No newline at end of file
diff --git a/objects/HelloDate.java b/objects/HelloDate.java
index 1f613e8e1..b408b1f48 100644
--- a/objects/HelloDate.java
+++ b/objects/HelloDate.java
@@ -1,5 +1,5 @@
 // objects/HelloDate.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/objects/ShowProperties.java b/objects/ShowProperties.java
index ac2bf41ee..f61e1aaca 100644
--- a/objects/ShowProperties.java
+++ b/objects/ShowProperties.java
@@ -1,5 +1,5 @@
 // objects/ShowProperties.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -13,14 +13,14 @@ public static void main(String[] args) {
 }
 /* Output: (First 20 Lines)
 -- listing properties --
-java.runtime.name=Java(TM) SE Runtime Environment
-sun.boot.library.path=C:\Program
-Files\Java\jdk1.8.0_112\jr...
-java.vm.version=25.112-b15
+java.runtime.name=OpenJDK Runtime Environment
+sun.boot.library.path=C:\Program Files\OpenJDK\java-
+se-8u41...
+java.vm.version=25.40-b25
 java.vm.vendor=Oracle Corporation
 java.vendor.url=http://java.oracle.com/
 path.separator=;
-java.vm.name=Java HotSpot(TM) 64-Bit Server VM
+java.vm.name=OpenJDK Client VM
 file.encoding.pkg=sun.io
 user.script=
 user.country=US
@@ -28,12 +28,12 @@ public static void main(String[] args) {
 sun.os.patch.level=
 java.vm.specification.name=Java Virtual Machine
 Specification
-user.dir=C:\Users\Bruce\Documents\GitHub\on-ja...
-java.runtime.version=1.8.0_112-b15
+user.dir=C:\Git\OnJava8\ExtractedExamples\objects
+java.runtime.version=1.8.0_41-b04
 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
-java.endorsed.dirs=C:\Program
-Files\Java\jdk1.8.0_112\jr...
-os.arch=amd64
+java.endorsed.dirs=C:\Program Files\OpenJDK\java-
+se-8u41...
+os.arch=x86
 java.io.tmpdir=C:\Users\Bruce\AppData\Local\Temp\
                   ...
 */
diff --git a/onjava/ArrayShow.java b/onjava/ArrayShow.java
index 6edd148fa..1e87754b2 100644
--- a/onjava/ArrayShow.java
+++ b/onjava/ArrayShow.java
@@ -1,5 +1,5 @@
 // onjava/ArrayShow.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/BasicSupplier.java b/onjava/BasicSupplier.java
index d4bf3b3d8..838d37861 100644
--- a/onjava/BasicSupplier.java
+++ b/onjava/BasicSupplier.java
@@ -1,5 +1,5 @@
 // onjava/BasicSupplier.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Supplier from a class with a no-arg constructor
@@ -12,8 +12,7 @@ public class BasicSupplier implements Supplier {
   public BasicSupplier(Class type) {
     this.type = type;
   }
-  @Override
-  public T get() {
+  @Override public T get() {
     try {
       // Assumes type is a public class:
       return type.getConstructor().newInstance();
diff --git a/onjava/CollectionMethodDifferences.java b/onjava/CollectionMethodDifferences.java
index 375d4e419..43262312b 100644
--- a/onjava/CollectionMethodDifferences.java
+++ b/onjava/CollectionMethodDifferences.java
@@ -1,5 +1,5 @@
 // onjava/CollectionMethodDifferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.CollectionMethodDifferences}
diff --git a/onjava/ConvertTo.java b/onjava/ConvertTo.java
index cc8febd70..070723118 100644
--- a/onjava/ConvertTo.java
+++ b/onjava/ConvertTo.java
@@ -1,5 +1,5 @@
 // onjava/ConvertTo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Count.java b/onjava/Count.java
index 1f380f87c..e2382f57b 100644
--- a/onjava/Count.java
+++ b/onjava/Count.java
@@ -1,5 +1,5 @@
 // onjava/Count.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Generate incremental values of different types
@@ -12,8 +12,7 @@ public interface Count {
   class Boolean
   implements Supplier {
     private boolean b = true;
-    @Override
-    public java.lang.Boolean get() {
+    @Override public java.lang.Boolean get() {
       b = !b;
       return java.lang.Boolean.valueOf(b);
     }
@@ -66,8 +65,7 @@ public byte[] array(int sz) {
   class Character
   implements Supplier {
     private int i;
-    @Override
-    public java.lang.Character get() {
+    @Override public java.lang.Character get() {
       i = (i + 1) % CHARS.length;
       return CHARS[i];
     }
@@ -168,8 +166,7 @@ public long[] array(int sz) {
   class Float
   implements Supplier {
     private int i;
-    @Override
-    public java.lang.Float get() {
+    @Override public java.lang.Float get() {
       return java.lang.Float.valueOf(i++);
     }
     public java.lang.Float get(int n) {
@@ -193,8 +190,7 @@ public float[] array(int sz) {
   class Double
   implements Supplier {
     private int i;
-    @Override
-    public java.lang.Double get() {
+    @Override public java.lang.Double get() {
       return java.lang.Double.valueOf(i++);
     }
     public java.lang.Double get(int n) {
diff --git a/onjava/CountMap.java b/onjava/CountMap.java
index e3759053c..e4f08e7a5 100644
--- a/onjava/CountMap.java
+++ b/onjava/CountMap.java
@@ -1,5 +1,5 @@
 // onjava/CountMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Unlimited-length Map containing sample data
@@ -21,31 +21,25 @@ private static String value(int key) {
   public CountMap(int size) {
     this.size = size < 0 ? 0 : size;
   }
-  @Override
-  public String get(Object key) {
+  @Override public String get(Object key) {
     return value((Integer)key);
   }
   private static class Entry
   implements Map.Entry {
     int index;
     Entry(int index) { this.index = index; }
-    @Override
-    public boolean equals(Object o) {
+    @Override   public boolean equals(Object o) {
       return o instanceof Entry &&
         Objects.equals(index, ((Entry)o).index);
     }
-    @Override
-    public Integer getKey() { return index; }
-    @Override
-    public String getValue() {
+    @Override public Integer getKey() { return index; }
+    @Override public String getValue() {
       return value(index);
     }
-    @Override
-    public String setValue(String value) {
+    @Override public String setValue(String value) {
       throw new UnsupportedOperationException();
     }
-    @Override
-    public int hashCode() {
+    @Override public int hashCode() {
       return Objects.hashCode(index);
     }
   }
diff --git a/onjava/CountingIntegerList.java b/onjava/CountingIntegerList.java
index 7d5d4f79b..d7f73a1b5 100644
--- a/onjava/CountingIntegerList.java
+++ b/onjava/CountingIntegerList.java
@@ -1,5 +1,5 @@
 // onjava/CountingIntegerList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // List of any length, containing sample data
@@ -14,12 +14,10 @@ public class CountingIntegerList
   public CountingIntegerList(int size) {
     this.size = size < 0 ? 0 : size;
   }
-  @Override
-  public Integer get(int index) {
+  @Override public Integer get(int index) {
     return index;
   }
-  @Override
-  public int size() { return size; }
+  @Override public int size() { return size; }
   public static void main(String[] args) {
     List cil =
       new CountingIntegerList(30);
diff --git a/onjava/Countries.java b/onjava/Countries.java
index ec42b5922..13764b647 100644
--- a/onjava/Countries.java
+++ b/onjava/Countries.java
@@ -1,5 +1,5 @@
 // onjava/Countries.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Flyweight" Maps and Lists of sample data
@@ -218,23 +218,19 @@ private static class Entry
     implements Map.Entry {
       int index;
       Entry(int index) { this.index = index; }
-      @Override
-      public boolean equals(Object o) {
+      @Override public boolean equals(Object o) {
         return o instanceof FlyweightMap &&
           Objects.equals(DATA[index][0], o);
       }
-      @Override
-      public int hashCode() {
+      @Override public int hashCode() {
         return Objects.hashCode(DATA[index][0]);
       }
       @Override
       public String getKey() { return DATA[index][0]; }
-      @Override
-      public String getValue() {
+      @Override public String getValue() {
         return DATA[index][1];
       }
-      @Override
-      public String setValue(String value) {
+      @Override public String setValue(String value) {
         throw new UnsupportedOperationException();
       }
     }
@@ -251,14 +247,12 @@ else if(size > DATA.length)
         else
           this.size = size;
       }
-      @Override
-      public int size() { return size; }
+      @Override public int size() { return size; }
       private class Iter
       implements Iterator> {
         // Only one Entry object per Iterator:
         private Entry entry = new Entry(-1);
-        @Override
-        public boolean hasNext() {
+        @Override public boolean hasNext() {
           return entry.index < size - 1;
         }
         @Override
@@ -266,13 +260,11 @@ public Map.Entry next() {
           entry.index++;
           return entry;
         }
-        @Override
-        public void remove() {
+        @Override public void remove() {
           throw new UnsupportedOperationException();
         }
       }
-      @Override
-      public
+      @Override public
       Iterator> iterator() {
         return new Iter();
       }
diff --git a/onjava/Enums.java b/onjava/Enums.java
index 0440802f9..2af4b0840 100644
--- a/onjava/Enums.java
+++ b/onjava/Enums.java
@@ -1,5 +1,5 @@
 // onjava/Enums.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/FillMap.java b/onjava/FillMap.java
index eadc5495e..4f1650d52 100644
--- a/onjava/FillMap.java
+++ b/onjava/FillMap.java
@@ -1,5 +1,5 @@
 // onjava/FillMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/HTMLColors.java b/onjava/HTMLColors.java
index bdc3458f0..7a6421546 100644
--- a/onjava/HTMLColors.java
+++ b/onjava/HTMLColors.java
@@ -1,5 +1,5 @@
 // onjava/HTMLColors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sample data for collection examples
diff --git a/onjava/MouseClick.java b/onjava/MouseClick.java
index 70d982f76..1bfa28e95 100644
--- a/onjava/MouseClick.java
+++ b/onjava/MouseClick.java
@@ -1,5 +1,5 @@
 // onjava/MouseClick.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Helper interface to allow lambda expressions
diff --git a/onjava/Nap.java b/onjava/Nap.java
index 2b89745b1..264d7e69d 100644
--- a/onjava/Nap.java
+++ b/onjava/Nap.java
@@ -1,5 +1,5 @@
 // onjava/Nap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Null.java b/onjava/Null.java
index f3bb70d69..9dfae5f2f 100644
--- a/onjava/Null.java
+++ b/onjava/Null.java
@@ -1,5 +1,5 @@
 // onjava/Null.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/OSExecute.java b/onjava/OSExecute.java
index 25ac7f0ce..918f67e77 100644
--- a/onjava/OSExecute.java
+++ b/onjava/OSExecute.java
@@ -1,5 +1,5 @@
 // onjava/OSExecute.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Run an operating system command
diff --git a/onjava/OSExecuteException.java b/onjava/OSExecuteException.java
index 17d803e15..1bf097b89 100644
--- a/onjava/OSExecuteException.java
+++ b/onjava/OSExecuteException.java
@@ -1,5 +1,5 @@
 // onjava/OSExecuteException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Operations.java b/onjava/Operations.java
index 33b644c65..0f935c365 100644
--- a/onjava/Operations.java
+++ b/onjava/Operations.java
@@ -1,5 +1,5 @@
 // onjava/Operations.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Pair.java b/onjava/Pair.java
index 784ef8ac4..6dce28e3e 100644
--- a/onjava/Pair.java
+++ b/onjava/Pair.java
@@ -1,5 +1,5 @@
 // onjava/Pair.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/ProcessFiles.java b/onjava/ProcessFiles.java
index edcea73a0..af9d5e2e8 100644
--- a/onjava/ProcessFiles.java
+++ b/onjava/ProcessFiles.java
@@ -1,5 +1,5 @@
 // onjava/ProcessFiles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Rand.java b/onjava/Rand.java
index d21c0e2b2..1a589302e 100644
--- a/onjava/Rand.java
+++ b/onjava/Rand.java
@@ -1,5 +1,5 @@
 // onjava/Rand.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Generate random values of different types
@@ -13,8 +13,7 @@ public interface Rand {
   class Boolean
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Boolean get() {
+    @Override public java.lang.Boolean get() {
       return r.nextBoolean();
     }
     public java.lang.Boolean get(int n) {
@@ -35,8 +34,7 @@ public boolean[] array(int sz) {
   class Byte
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Byte get() {
+    @Override public java.lang.Byte get() {
       return (byte)r.nextInt(MOD);
     }
     public java.lang.Byte get(int n) {
@@ -57,8 +55,7 @@ public byte[] array(int sz) {
   class Character
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Character get() {
+    @Override public java.lang.Character get() {
       return (char)r.nextInt('a', 'z' + 1);
     }
     public java.lang.Character get(int n) {
@@ -79,8 +76,7 @@ public char[] array(int sz) {
   class Short
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Short get() {
+    @Override public java.lang.Short get() {
       return (short)r.nextInt(MOD);
     }
     public java.lang.Short get(int n) {
@@ -101,8 +97,7 @@ public short[] array(int sz) {
   class Integer
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Integer get() {
+    @Override public java.lang.Integer get() {
       return r.nextInt(MOD);
     }
     public java.lang.Integer get(int n) {
@@ -119,8 +114,7 @@ public java.lang.Integer[] array(int sz) {
   }
   class Pint implements IntSupplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public int getAsInt() {
+    @Override public int getAsInt() {
       return r.nextInt(MOD);
     }
     public int get(int n) { return getAsInt(); }
@@ -131,8 +125,7 @@ public int[] array(int sz) {
   class Long
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Long get() {
+    @Override public java.lang.Long get() {
       return r.nextLong(MOD);
     }
     public java.lang.Long get(int n) {
@@ -149,8 +142,7 @@ public java.lang.Long[] array(int sz) {
   }
   class Plong implements LongSupplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public long getAsLong() {
+    @Override public long getAsLong() {
       return r.nextLong(MOD);
     }
     public long get(int n) { return getAsLong(); }
@@ -161,8 +153,7 @@ public long[] array(int sz) {
   class Float
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Float get() {
+    @Override public java.lang.Float get() {
       return (float)trim(r.nextDouble());
     }
     public java.lang.Float get(int n) {
@@ -187,8 +178,7 @@ static double trim(double d) {
   class Double
   implements Supplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public java.lang.Double get() {
+    @Override public java.lang.Double get() {
       return trim(r.nextDouble());
     }
     public java.lang.Double get(int n) {
@@ -206,8 +196,7 @@ public java.lang.Double[] array(int sz) {
   }
   class Pdouble implements DoubleSupplier {
     SplittableRandom r = new SplittableRandom(47);
-    @Override
-    public double getAsDouble() {
+    @Override public double getAsDouble() {
       return trim(r.nextDouble());
     }
     public double get(int n) {
@@ -228,8 +217,7 @@ public String() {}
     public String(int strLength) {
       strlen = strLength;
     }
-    @Override
-    public java.lang.String get() {
+    @Override public java.lang.String get() {
       return r.ints(strlen, 'a', 'z' + 1)
         .collect(StringBuilder::new,
                  StringBuilder::appendCodePoint,
diff --git a/onjava/Range.java b/onjava/Range.java
index e075c9ba9..ee43244f4 100644
--- a/onjava/Range.java
+++ b/onjava/Range.java
@@ -1,5 +1,5 @@
 // onjava/Range.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Array creation methods that can be used without
diff --git a/onjava/Repeat.java b/onjava/Repeat.java
index 7ab61facf..11f4cacd8 100644
--- a/onjava/Repeat.java
+++ b/onjava/Repeat.java
@@ -1,5 +1,5 @@
 // onjava/Repeat.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/RmDir.java b/onjava/RmDir.java
index be7ea4940..fa6d1a5e9 100644
--- a/onjava/RmDir.java
+++ b/onjava/RmDir.java
@@ -1,5 +1,5 @@
 // onjava/RmDir.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
@@ -12,15 +12,13 @@ public static void rmdir(Path dir)
   throws IOException {
     Files.walkFileTree(dir,
       new SimpleFileVisitor() {
-      @Override
-      public FileVisitResult
+      @Override public FileVisitResult
       visitFile(Path file, BasicFileAttributes attrs)
       throws IOException {
         Files.delete(file);
         return FileVisitResult.CONTINUE;
       }
-      @Override
-      public FileVisitResult
+      @Override public FileVisitResult
       postVisitDirectory(Path dir, IOException exc)
       throws IOException {
         Files.delete(dir);
diff --git a/onjava/Sets.java b/onjava/Sets.java
index 62258f155..542f5bb30 100644
--- a/onjava/Sets.java
+++ b/onjava/Sets.java
@@ -1,5 +1,5 @@
 // onjava/Sets.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Stack.java b/onjava/Stack.java
index a51081768..97dc454fa 100644
--- a/onjava/Stack.java
+++ b/onjava/Stack.java
@@ -1,5 +1,5 @@
 // onjava/Stack.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A Stack class built with an ArrayDeque
@@ -13,8 +13,7 @@ public class Stack {
   public T peek() { return storage.peek(); }
   public T pop() { return storage.pop(); }
   public boolean isEmpty() { return storage.isEmpty(); }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return storage.toString();
   }
 }
diff --git a/onjava/Suppliers.java b/onjava/Suppliers.java
index 226a70cb5..05ceafab2 100644
--- a/onjava/Suppliers.java
+++ b/onjava/Suppliers.java
@@ -1,5 +1,5 @@
 // onjava/Suppliers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A utility to use with Suppliers
diff --git a/onjava/TimedAbort.java b/onjava/TimedAbort.java
index 3715cf2ee..b9ebeaf89 100644
--- a/onjava/TimedAbort.java
+++ b/onjava/TimedAbort.java
@@ -1,5 +1,5 @@
 // onjava/TimedAbort.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Terminate a program after t seconds
diff --git a/onjava/Timer.java b/onjava/Timer.java
index a695f79fa..44a24faed 100644
--- a/onjava/Timer.java
+++ b/onjava/Timer.java
@@ -1,5 +1,5 @@
 // onjava/Timer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
diff --git a/onjava/Tuple.java b/onjava/Tuple.java
index 73cfaa3ce..d1d9b80cd 100644
--- a/onjava/Tuple.java
+++ b/onjava/Tuple.java
@@ -1,5 +1,5 @@
 // onjava/Tuple.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tuple library using type argument inference
diff --git a/onjava/Tuple2.java b/onjava/Tuple2.java
index 7ca8d1994..3e2874a90 100644
--- a/onjava/Tuple2.java
+++ b/onjava/Tuple2.java
@@ -1,5 +1,5 @@
 // onjava/Tuple2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
@@ -9,8 +9,7 @@ public class Tuple2 {
   public final B a2;
   public Tuple2(A a, B b) { a1 = a; a2 = b; }
   public String rep() { return  a1 + ", " + a2; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "(" + rep() + ")";
   }
 }
diff --git a/onjava/Tuple3.java b/onjava/Tuple3.java
index 26780642c..117f4b668 100644
--- a/onjava/Tuple3.java
+++ b/onjava/Tuple3.java
@@ -1,5 +1,5 @@
 // onjava/Tuple3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
@@ -10,8 +10,7 @@ public Tuple3(A a, B b, C c) {
     super(a, b);
     a3 = c;
   }
-  @Override
-  public String rep() {
+  @Override public String rep() {
     return super.rep() + ", " + a3;
   }
 }
diff --git a/onjava/Tuple4.java b/onjava/Tuple4.java
index 5ab51dc98..1a62db093 100644
--- a/onjava/Tuple4.java
+++ b/onjava/Tuple4.java
@@ -1,5 +1,5 @@
 // onjava/Tuple4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
@@ -11,8 +11,7 @@ public Tuple4(A a, B b, C c, D d) {
     super(a, b, c);
     a4 = d;
   }
-  @Override
-  public String rep() {
+  @Override public String rep() {
     return super.rep() + ", " + a4;
   }
 }
diff --git a/onjava/Tuple5.java b/onjava/Tuple5.java
index 1df88bfdc..85a3d2d06 100644
--- a/onjava/Tuple5.java
+++ b/onjava/Tuple5.java
@@ -1,5 +1,5 @@
 // onjava/Tuple5.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package onjava;
@@ -11,8 +11,7 @@ public Tuple5(A a, B b, C c, D d, E e) {
     super(a, b, c, d);
     a5 = e;
   }
-  @Override
-  public String rep() {
+  @Override public String rep() {
     return super.rep() + ", " + a5;
   }
 }
diff --git a/onjava/TypeCounter.java b/onjava/TypeCounter.java
index d8b262b72..6e89067bc 100644
--- a/onjava/TypeCounter.java
+++ b/onjava/TypeCounter.java
@@ -1,5 +1,5 @@
 // onjava/TypeCounter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Counts instances of a type family
@@ -26,11 +26,11 @@ private void countClass(Class type) {
     put(type, quantity == null ? 1 : quantity + 1);
     Class superClass = type.getSuperclass();
     if(superClass != null &&
-       baseType.isAssignableFrom(superClass))
+       baseType.isAssignableFrom(superClass)) {
       countClass(superClass);
+    }
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     String result = entrySet().stream()
       .map(pair -> String.format("%s=%s",
         pair.getKey().getSimpleName(),
diff --git a/onjava/atunit/AtUnit.java b/onjava/atunit/AtUnit.java
index b1688cbda..7288c2f4b 100644
--- a/onjava/atunit/AtUnit.java
+++ b/onjava/atunit/AtUnit.java
@@ -1,5 +1,5 @@
 // onjava/atunit/AtUnit.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An annotation-based unit-test framework
@@ -33,8 +33,7 @@ public class AtUnit implements ProcessFiles.Strategy {
         System.out.println("  " + failed);
     }
   }
-  @Override
-  public void process(File cFile) {
+  @Override public void process(File cFile) {
     try {
       String cName = ClassNameFinder.thisClass(
         Files.readAllBytes(cFile.toPath()));
diff --git a/onjava/atunit/ClassNameFinder.java b/onjava/atunit/ClassNameFinder.java
index 3fef7faff..315a44c5f 100644
--- a/onjava/atunit/ClassNameFinder.java
+++ b/onjava/atunit/ClassNameFinder.java
@@ -1,5 +1,5 @@
 // onjava/atunit/ClassNameFinder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.atunit.ClassNameFinder}
diff --git a/onjava/atunit/Test.java b/onjava/atunit/Test.java
index 314dce9b3..ff7b10b9d 100644
--- a/onjava/atunit/Test.java
+++ b/onjava/atunit/Test.java
@@ -1,5 +1,5 @@
 // onjava/atunit/Test.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Test tag
diff --git a/onjava/atunit/TestObjectCleanup.java b/onjava/atunit/TestObjectCleanup.java
index 522311778..c15a0e1a1 100644
--- a/onjava/atunit/TestObjectCleanup.java
+++ b/onjava/atunit/TestObjectCleanup.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestObjectCleanup.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestObjectCleanup tag
diff --git a/onjava/atunit/TestObjectCreate.java b/onjava/atunit/TestObjectCreate.java
index f8b43a09d..58cf17f9c 100644
--- a/onjava/atunit/TestObjectCreate.java
+++ b/onjava/atunit/TestObjectCreate.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestObjectCreate.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestObjectCreate tag
diff --git a/onjava/atunit/TestProperty.java b/onjava/atunit/TestProperty.java
index 4e09cf95d..bbb685adb 100644
--- a/onjava/atunit/TestProperty.java
+++ b/onjava/atunit/TestProperty.java
@@ -1,5 +1,5 @@
 // onjava/atunit/TestProperty.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The @Unit @TestProperty tag
diff --git a/operators/AllOps.java b/operators/AllOps.java
index bb94e8709..3a559a7d9 100644
--- a/operators/AllOps.java
+++ b/operators/AllOps.java
@@ -1,5 +1,5 @@
 // operators/AllOps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tests all operators on all primitive data types
diff --git a/operators/Assignment.java b/operators/Assignment.java
index 7a573a392..c4b9a793e 100644
--- a/operators/Assignment.java
+++ b/operators/Assignment.java
@@ -1,5 +1,5 @@
 // operators/Assignment.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assignment with objects is a bit tricky
diff --git a/operators/AutoInc.java b/operators/AutoInc.java
index 835875de6..d018f90a8 100644
--- a/operators/AutoInc.java
+++ b/operators/AutoInc.java
@@ -1,5 +1,5 @@
 // operators/AutoInc.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the ++ and -- operators
diff --git a/operators/BitManipulation.java b/operators/BitManipulation.java
index dc30c4428..80c64c93b 100644
--- a/operators/BitManipulation.java
+++ b/operators/BitManipulation.java
@@ -1,5 +1,5 @@
 // operators/BitManipulation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the bitwise operators
diff --git a/operators/Bool.java b/operators/Bool.java
index e9984adb7..42668315b 100644
--- a/operators/Bool.java
+++ b/operators/Bool.java
@@ -1,5 +1,5 @@
 // operators/Bool.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Relational and logical operators
diff --git a/operators/Casting.java b/operators/Casting.java
index 337b24fd8..22b2b221c 100644
--- a/operators/Casting.java
+++ b/operators/Casting.java
@@ -1,5 +1,5 @@
 // operators/Casting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/CastingNumbers.java b/operators/CastingNumbers.java
index a6c04c6ea..007dc4e2c 100644
--- a/operators/CastingNumbers.java
+++ b/operators/CastingNumbers.java
@@ -1,5 +1,5 @@
 // operators/CastingNumbers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // What happens when you cast a float
diff --git a/operators/EqualsMethod.java b/operators/EqualsMethod.java
index f55b1b579..7915f7def 100644
--- a/operators/EqualsMethod.java
+++ b/operators/EqualsMethod.java
@@ -1,5 +1,5 @@
 // operators/EqualsMethod.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/EqualsMethod2.java b/operators/EqualsMethod2.java
index 213930602..75ff42c5e 100644
--- a/operators/EqualsMethod2.java
+++ b/operators/EqualsMethod2.java
@@ -1,5 +1,5 @@
 // operators/EqualsMethod2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Default equals() does not compare contents
diff --git a/operators/Equivalence.java b/operators/Equivalence.java
index cef07d646..603ef6316 100644
--- a/operators/Equivalence.java
+++ b/operators/Equivalence.java
@@ -1,5 +1,5 @@
 // operators/Equivalence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/Exponents.java b/operators/Exponents.java
index 924340dfb..8578aee51 100644
--- a/operators/Exponents.java
+++ b/operators/Exponents.java
@@ -1,5 +1,5 @@
 // operators/Exponents.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "e" means "10 to the power."
diff --git a/operators/Literals.java b/operators/Literals.java
index ad00e0b8f..3f2eef058 100644
--- a/operators/Literals.java
+++ b/operators/Literals.java
@@ -1,5 +1,5 @@
 // operators/Literals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/MathOps.java b/operators/MathOps.java
index a9b089382..125b312b8 100644
--- a/operators/MathOps.java
+++ b/operators/MathOps.java
@@ -1,5 +1,5 @@
 // operators/MathOps.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The mathematical operators
diff --git a/operators/Overflow.java b/operators/Overflow.java
index 851c1456b..68e494490 100644
--- a/operators/Overflow.java
+++ b/operators/Overflow.java
@@ -1,5 +1,5 @@
 // operators/Overflow.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Surprise! Java lets you overflow
diff --git a/operators/PassObject.java b/operators/PassObject.java
index af53ab566..698771a8d 100644
--- a/operators/PassObject.java
+++ b/operators/PassObject.java
@@ -1,5 +1,5 @@
 // operators/PassObject.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Passing objects to methods might not be
diff --git a/operators/Precedence.java b/operators/Precedence.java
index f0f8140cd..e6dcc549c 100644
--- a/operators/Precedence.java
+++ b/operators/Precedence.java
@@ -1,5 +1,5 @@
 // operators/Precedence.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/RoundingNumbers.java b/operators/RoundingNumbers.java
index e46a20561..e7396c113 100644
--- a/operators/RoundingNumbers.java
+++ b/operators/RoundingNumbers.java
@@ -1,5 +1,5 @@
 // operators/RoundingNumbers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Rounding floats and doubles
diff --git a/operators/ShortCircuit.java b/operators/ShortCircuit.java
index 8fc96711e..8e611d469 100644
--- a/operators/ShortCircuit.java
+++ b/operators/ShortCircuit.java
@@ -1,5 +1,5 @@
 // operators/ShortCircuit.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Short-circuiting behavior with logical operators
diff --git a/operators/StringOperators.java b/operators/StringOperators.java
index b1eb211fb..c83387f9e 100644
--- a/operators/StringOperators.java
+++ b/operators/StringOperators.java
@@ -1,5 +1,5 @@
 // operators/StringOperators.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/TernaryIfElse.java b/operators/TernaryIfElse.java
index d11d4e24c..51455aa74 100644
--- a/operators/TernaryIfElse.java
+++ b/operators/TernaryIfElse.java
@@ -1,5 +1,5 @@
 // operators/TernaryIfElse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/operators/URShift.java b/operators/URShift.java
index 8d24f94b5..d1bcc4f09 100644
--- a/operators/URShift.java
+++ b/operators/URShift.java
@@ -1,5 +1,5 @@
 // operators/URShift.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Test of unsigned right shift
diff --git a/operators/Underscores.java b/operators/Underscores.java
index 4d78cd503..fa1394893 100644
--- a/operators/Underscores.java
+++ b/operators/Underscores.java
@@ -1,5 +1,5 @@
 // operators/Underscores.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,7 +9,7 @@ public static void main(String[] args) {
     System.out.println(d);
     int bin = 0b0010_1111_1010_1111_1010_1111_1010_1111;
     System.out.println(Integer.toBinaryString(bin));
-    System.out.printf("%x%n", bin);  // [1]
+    System.out.printf("%x%n", bin);               // [1]
     long hex = 0x7f_e9_b7_aa;
     System.out.printf("%x%n", hex);
   }
diff --git a/patterns/BoxObserver.java b/patterns/BoxObserver.java
index c6f9ec65d..db25c5ea2 100644
--- a/patterns/BoxObserver.java
+++ b/patterns/BoxObserver.java
@@ -1,5 +1,5 @@
 // patterns/BoxObserver.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Observer pattern using
@@ -72,8 +72,7 @@ static Color newColor() {
     addMouseListener((MouseClick)
       e -> notifier.notifyObservers(OCBox.this));
   }
-  @Override
-  public void paintComponent(Graphics g) {
+  @Override public void paintComponent(Graphics g) {
     super.paintComponent(g);
     g.setColor(cColor);
     Dimension s = getSize();
diff --git a/patterns/CommandPattern.java b/patterns/CommandPattern.java
index f84533aa9..1a9612247 100644
--- a/patterns/CommandPattern.java
+++ b/patterns/CommandPattern.java
@@ -1,5 +1,5 @@
 // patterns/CommandPattern.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/patterns/Facade.java b/patterns/Facade.java
index 0c1accf27..e290cff43 100644
--- a/patterns/Facade.java
+++ b/patterns/Facade.java
@@ -1,5 +1,5 @@
 // patterns/Facade.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/patterns/PaperScissorsRock.java b/patterns/PaperScissorsRock.java
index e7a7c44e8..54063d6c7 100644
--- a/patterns/PaperScissorsRock.java
+++ b/patterns/PaperScissorsRock.java
@@ -1,5 +1,5 @@
 // patterns/PaperScissorsRock.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of multiple dispatching
@@ -19,66 +19,57 @@ interface Item {
 }
 
 class Paper implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
-  @Override
-  public Outcome eval(Paper p) {
+  @Override public Outcome eval(Paper p) {
     return Outcome.DRAW;
   }
-  @Override
-  public Outcome eval(Scissors s) {
+  @Override public Outcome eval(Scissors s) {
     return Outcome.WIN;
   }
-  @Override
-  public Outcome eval(Rock r) {
+  @Override public Outcome eval(Rock r) {
     return Outcome.LOSE;
   }
-  @Override
-  public String toString() { return "Paper"; }
+  @Override public String toString() {
+    return "Paper";
+  }
 }
 
 class Scissors implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
-  @Override
-  public Outcome eval(Paper p) {
+  @Override public Outcome eval(Paper p) {
     return Outcome.LOSE;
   }
-  @Override
-  public Outcome eval(Scissors s) {
+  @Override public Outcome eval(Scissors s) {
     return Outcome.DRAW;
   }
-  @Override
-  public Outcome eval(Rock r) {
+  @Override public Outcome eval(Rock r) {
     return Outcome.WIN;
   }
-  @Override
-  public String toString() { return "Scissors"; }
+  @Override public String toString() {
+    return "Scissors";
+  }
 }
 
 class Rock implements Item {
-  @Override
-  public Outcome compete(Item it) {
+  @Override public Outcome compete(Item it) {
     return it.eval(this);
   }
-  @Override
-  public Outcome eval(Paper p) {
+  @Override public Outcome eval(Paper p) {
     return Outcome.WIN;
   }
-  @Override
-  public Outcome eval(Scissors s) {
+  @Override public Outcome eval(Scissors s) {
     return Outcome.LOSE;
   }
-  @Override
-  public Outcome eval(Rock r) {
+  @Override public Outcome eval(Rock r) {
     return Outcome.DRAW;
   }
-  @Override
-  public String toString() { return "Rock"; }
+  @Override public String toString() {
+    return "Rock";
+  }
 }
 
 class ItemFactory {
diff --git a/patterns/ProxyDemo.java b/patterns/ProxyDemo.java
index 58b0e3a8f..011fbe7ec 100644
--- a/patterns/ProxyDemo.java
+++ b/patterns/ProxyDemo.java
@@ -1,5 +1,5 @@
 // patterns/ProxyDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of the Proxy pattern
@@ -25,13 +25,13 @@ class Proxy implements ProxyBase {
 }
 
 class Implementation implements ProxyBase {
-  public void f() {
+  @Override public void f() {
     System.out.println("Implementation.f()");
   }
-  public void g() {
+  @Override public void g() {
     System.out.println("Implementation.g()");
   }
-  public void h() {
+  @Override public void h() {
     System.out.println("Implementation.h()");
   }
 }
diff --git a/patterns/ShapeFactory1.java b/patterns/ShapeFactory1.java
index dc6f86907..950c97c55 100644
--- a/patterns/ShapeFactory1.java
+++ b/patterns/ShapeFactory1.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A simple static factory method
@@ -8,7 +8,7 @@
 import patterns.shapes.*;
 
 public class ShapeFactory1 implements FactoryMethod {
-  public Shape create(String type) {
+  @Override public Shape create(String type) {
     switch(type) {
       case "Circle": return new Circle();
       case "Square": return new Square();
diff --git a/patterns/ShapeFactory2.java b/patterns/ShapeFactory2.java
index 238811052..e8206ba2f 100644
--- a/patterns/ShapeFactory2.java
+++ b/patterns/ShapeFactory2.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -20,7 +20,7 @@ static Constructor load(String id) {
       throw new BadShapeCreation(id);
     }
   }
-  public Shape create(String id) {
+  @Override public Shape create(String id) {
     try {
       return (Shape)factories
         .computeIfAbsent(id, ShapeFactory2::load)
diff --git a/patterns/ShapeFactory3.java b/patterns/ShapeFactory3.java
index b735a81d0..fdf7b2700 100644
--- a/patterns/ShapeFactory3.java
+++ b/patterns/ShapeFactory3.java
@@ -1,5 +1,5 @@
 // patterns/ShapeFactory3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Polymorphic factory methods
@@ -18,7 +18,7 @@ class RandomShapes implements Supplier {
   RandomShapes(PolymorphicFactory... factories) {
     this.factories = factories;
   }
-  public Shape get() {
+  @Override public Shape get() {
     return factories[
       rand.nextInt(factories.length)].create();
   }
diff --git a/patterns/SingletonPattern.java b/patterns/SingletonPattern.java
index c2ca1a5f5..2ff8de0d5 100644
--- a/patterns/SingletonPattern.java
+++ b/patterns/SingletonPattern.java
@@ -1,5 +1,5 @@
 // patterns/SingletonPattern.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -21,9 +21,11 @@ final class Singleton {
     private ResourceImpl(int i) {
       this.i = i;
     }
+    @Override
     public synchronized int getValue() {
       return i;
     }
+    @Override
     public synchronized void setValue(int x) {
       i = x;
     }
diff --git a/patterns/StateDemo.java b/patterns/StateDemo.java
index 9efab5b4e..0a564bfa2 100644
--- a/patterns/StateDemo.java
+++ b/patterns/StateDemo.java
@@ -1,5 +1,5 @@
 // patterns/StateDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of the State pattern
@@ -30,16 +30,13 @@ public void changeImp(StateBase newImp) {
 }
 
 class Implementation1 implements StateBase {
-  @Override
-  public void f() {
+  @Override public void f() {
     System.out.println("Implementation1.f()");
   }
-  @Override
-  public void g() {
+  @Override public void g() {
     System.out.println("Implementation1.g()");
   }
-  @Override
-  public void h() {
+  @Override public void h() {
     System.out.println("Implementation1.h()");
   }
   @Override
@@ -47,16 +44,13 @@ public void changeImp(StateBase newImp) {}
 }
 
 class Implementation2 implements StateBase {
-  @Override
-  public void f() {
+  @Override public void f() {
     System.out.println("Implementation2.f()");
   }
-  @Override
-  public void g() {
+  @Override public void g() {
     System.out.println("Implementation2.g()");
   }
-  @Override
-  public void h() {
+  @Override public void h() {
     System.out.println("Implementation2.h()");
   }
   @Override
diff --git a/patterns/TemplateMethod.java b/patterns/TemplateMethod.java
index eff6d2790..2df6a3d4c 100644
--- a/patterns/TemplateMethod.java
+++ b/patterns/TemplateMethod.java
@@ -1,5 +1,5 @@
 // patterns/TemplateMethod.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple demonstration of Template Method
@@ -20,12 +20,10 @@ private void templateMethod() {
 
 // Create a new "application":
 class MyApp extends ApplicationFramework {
-  @Override
-  void customize1() {
+  @Override void customize1() {
     System.out.print("Hello ");
   }
-  @Override
-  void customize2() {
+  @Override void customize2() {
     System.out.println("World!");
   }
 }
diff --git a/patterns/abstractfactory/GameEnvironment.java b/patterns/abstractfactory/GameEnvironment.java
index 8c0abf7b3..a990562da 100644
--- a/patterns/abstractfactory/GameEnvironment.java
+++ b/patterns/abstractfactory/GameEnvironment.java
@@ -1,5 +1,5 @@
 // patterns/abstractfactory/GameEnvironment.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An example of the Abstract Factory pattern
@@ -32,15 +32,13 @@ public void interactWith(Obstacle ob) {
 }
 
 class Puzzle implements Obstacle {
-  @Override
-  public void action() {
+  @Override public void action() {
     System.out.println("Puzzle");
   }
 }
 
 class NastyWeapon implements Obstacle {
-  @Override
-  public void action() {
+  @Override public void action() {
     System.out.println("NastyWeapon");
   }
 }
diff --git a/patterns/adapt/Adapter.java b/patterns/adapt/Adapter.java
index 5bfcd6bf5..0e847f365 100644
--- a/patterns/adapt/Adapter.java
+++ b/patterns/adapt/Adapter.java
@@ -1,5 +1,5 @@
 // patterns/adapt/Adapter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Variations on the Adapter pattern
@@ -20,8 +20,7 @@ class ProxyAdapter implements WhatIWant {
   ProxyAdapter(WhatIHave wih) {
     whatIHave = wih;
   }
-  @Override
-  public void f() {
+  @Override public void f() {
     // Implement behavior using
     // methods in WhatIHave:
     whatIHave.g();
@@ -45,8 +44,7 @@ public void op(WhatIHave wih) {
 // Approach 3: build adapter into WhatIHave:
 class WhatIHave2 extends WhatIHave
 implements WhatIWant {
-  @Override
-  public void f() {
+  @Override public void f() {
     g();
     h();
   }
@@ -55,8 +53,7 @@ public void f() {
 // Approach 4: use an inner class:
 class WhatIHave3 extends WhatIHave {
   private class InnerAdapter implements WhatIWant{
-    @Override
-    public void f() {
+    @Override public void f() {
       g();
       h();
     }
diff --git a/patterns/chain/ChainOfResponsibility.java b/patterns/chain/ChainOfResponsibility.java
index b733e71cc..737c3c205 100644
--- a/patterns/chain/ChainOfResponsibility.java
+++ b/patterns/chain/ChainOfResponsibility.java
@@ -1,5 +1,5 @@
 // patterns/chain/ChainOfResponsibility.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the Functional interface
diff --git a/patterns/doubledispatch/Aluminum.java b/patterns/doubledispatch/Aluminum.java
index 5037fac56..f48a2077c 100644
--- a/patterns/doubledispatch/Aluminum.java
+++ b/patterns/doubledispatch/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Aluminum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aluminum for double dispatching
diff --git a/patterns/doubledispatch/Cardboard.java b/patterns/doubledispatch/Cardboard.java
index 5046ddaa2..2150328f7 100644
--- a/patterns/doubledispatch/Cardboard.java
+++ b/patterns/doubledispatch/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Cardboard.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cardboard for double dispatching
diff --git a/patterns/doubledispatch/DoubleDispatch.java b/patterns/doubledispatch/DoubleDispatch.java
index 91bee562e..f65d26805 100644
--- a/patterns/doubledispatch/DoubleDispatch.java
+++ b/patterns/doubledispatch/DoubleDispatch.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/DoubleDispatch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using multiple dispatching to handle more
@@ -10,29 +10,25 @@
 import java.util.*;
 
 class AluminumBin extends TypedBin {
-  @Override
-  public boolean add(Aluminum a) {
+  @Override public boolean add(Aluminum a) {
     return addIt(a);
   }
 }
 
 class PaperBin extends TypedBin {
-  @Override
-  public boolean add(Paper a) {
+  @Override public boolean add(Paper a) {
     return addIt(a);
   }
 }
 
 class GlassBin extends TypedBin {
-  @Override
-  public boolean add(Glass a) {
+  @Override public boolean add(Glass a) {
     return addIt(a);
   }
 }
 
 class CardboardBin extends TypedBin {
-  @Override
-  public boolean add(Cardboard a) {
+  @Override public boolean add(Cardboard a) {
     return addIt(a);
   }
 }
diff --git a/patterns/doubledispatch/Glass.java b/patterns/doubledispatch/Glass.java
index 79cf7fa26..0092652f0 100644
--- a/patterns/doubledispatch/Glass.java
+++ b/patterns/doubledispatch/Glass.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Glass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Glass for double dispatching
diff --git a/patterns/doubledispatch/Paper.java b/patterns/doubledispatch/Paper.java
index b542dfd64..67bb0fe3d 100644
--- a/patterns/doubledispatch/Paper.java
+++ b/patterns/doubledispatch/Paper.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/Paper.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Paper for double dispatching
diff --git a/patterns/doubledispatch/TypedBin.java b/patterns/doubledispatch/TypedBin.java
index 265874cc4..c730eda2d 100644
--- a/patterns/doubledispatch/TypedBin.java
+++ b/patterns/doubledispatch/TypedBin.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/TypedBin.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A List that can grab the right type
diff --git a/patterns/doubledispatch/TypedBinMember.java b/patterns/doubledispatch/TypedBinMember.java
index c7ce960a9..17fe20641 100644
--- a/patterns/doubledispatch/TypedBinMember.java
+++ b/patterns/doubledispatch/TypedBinMember.java
@@ -1,5 +1,5 @@
 // patterns/doubledispatch/TypedBinMember.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An interface for adding the double dispatching
diff --git a/patterns/dynatrash/DynaTrash.java b/patterns/dynatrash/DynaTrash.java
index 6ce33d8f0..8e8d6ac27 100644
--- a/patterns/dynatrash/DynaTrash.java
+++ b/patterns/dynatrash/DynaTrash.java
@@ -1,5 +1,5 @@
 // patterns/dynatrash/DynaTrash.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using a Map of Lists and RTTI to automatically
@@ -61,11 +61,11 @@ public static void main(String[] args) {
 weight of patterns.trash.Paper = 80.0
 weight of patterns.trash.Paper = 66.0
 ...________...________...________...________...
-weight of patterns.trash.Aluminum = 81.0
-weight of patterns.trash.Aluminum = 36.0
-weight of patterns.trash.Aluminum = 93.0
-weight of patterns.trash.Aluminum = 36.0
-Total value = 860.0499778985977
+weight of patterns.trash.Glass = 93.0
+weight of patterns.trash.Glass = 36.0
+weight of patterns.trash.Glass = 12.0
+weight of patterns.trash.Glass = 60.0
+Total value = 150.1900027245283
 weight of patterns.trash.Cardboard = 96.0
 weight of patterns.trash.Cardboard = 44.0
 weight of patterns.trash.Cardboard = 12.0
diff --git a/patterns/observer/ObservedFlower.java b/patterns/observer/ObservedFlower.java
index 009da63e3..a8c9bd006 100644
--- a/patterns/observer/ObservedFlower.java
+++ b/patterns/observer/ObservedFlower.java
@@ -1,5 +1,5 @@
 // patterns/observer/ObservedFlower.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of "Observer" pattern
@@ -26,8 +26,7 @@ public void close() { // Closes its petals
     alreadyOpen = false;
   }
   class OpenNotifier extends Observable {
-    @Override
-    public void notifyObservers() {
+    @Override public void notifyObservers() {
       if(isOpen && !alreadyOpen) {
         setChanged();
         super.notifyObservers();
@@ -36,8 +35,7 @@ public void notifyObservers() {
     }
   }
   class CloseNotifier extends Observable{
-    @Override
-    public void notifyObservers() {
+    @Override public void notifyObservers() {
       if(!isOpen && !alreadyClosed) {
         setChanged();
         super.notifyObservers();
diff --git a/patterns/recyclea/RecycleA.java b/patterns/recyclea/RecycleA.java
index a73f39e7f..184bc4b3a 100644
--- a/patterns/recyclea/RecycleA.java
+++ b/patterns/recyclea/RecycleA.java
@@ -1,5 +1,5 @@
 // patterns/recyclea/RecycleA.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Recycling with RTTI
@@ -34,8 +34,7 @@ static void sumValue(List bin) {
 class Aluminum extends Trash {
   static double val  = 1.67f;
   Aluminum(double wt) { super(wt); }
-  @Override
-  double value() { return val; }
+  @Override double value() { return val; }
   static void value(double newval) {
     val = newval;
   }
@@ -44,8 +43,7 @@ static void value(double newval) {
 class Paper extends Trash {
   static double val = 0.10f;
   Paper(double wt) { super(wt); }
-  @Override
-  double value() { return val; }
+  @Override double value() { return val; }
   static void value(double newval) {
     val = newval;
   }
@@ -54,8 +52,7 @@ static void value(double newval) {
 class Glass extends Trash {
   static double val = 0.23f;
   Glass(double wt) { super(wt); }
-  @Override
-  double value() { return val; }
+  @Override double value() { return val; }
   static void value(double newval) {
     val = newval;
   }
diff --git a/patterns/recycleb/RecycleB.java b/patterns/recycleb/RecycleB.java
index 1ca38314d..25cb6d90e 100644
--- a/patterns/recycleb/RecycleB.java
+++ b/patterns/recycleb/RecycleB.java
@@ -1,5 +1,5 @@
 // patterns/recycleb/RecycleB.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.recycleb.RecycleB}
diff --git a/patterns/recyclec/RecycleC.java b/patterns/recyclec/RecycleC.java
index 239e8e793..75dd4e5e2 100644
--- a/patterns/recyclec/RecycleC.java
+++ b/patterns/recyclec/RecycleC.java
@@ -1,5 +1,5 @@
 // patterns/recyclec/RecycleC.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adding more objects to the recycling problem
@@ -26,14 +26,14 @@ boolean grab(Trash t) {
 }
 
 class TbinList
-extends ArrayList> { // [1]
+extends ArrayList> {        // [1]
   boolean sort(T t) {
     for(Tbin ts : this)
       if(ts.grab(t))
         return true;
     return false; // bin not found for t
   }
-  void sortBin(Tbin bin) { // [2]
+  void sortBin(Tbin bin) {                 // [2]
     for(T aBin : bin)
       if(!sort(aBin))
         System.err.println("Bin not found");
@@ -50,10 +50,10 @@ public static void main(String[] args) {
     trashBins.add(new Tbin<>(Aluminum.class));
     trashBins.add(new Tbin<>(Paper.class));
     trashBins.add(new Tbin<>(Glass.class));
-    // add one line here: [*3*]
+    // add one line here:                     // [3]
     trashBins.add(new Tbin<>(Cardboard.class));
 
-    trashBins.sortBin(bin); // [4]
+    trashBins.sortBin(bin);                   // [4]
 
     trashBins.forEach(Trash::sumValue);
     Trash.sumValue(bin);
diff --git a/patterns/shapes/BadShapeCreation.java b/patterns/shapes/BadShapeCreation.java
index 2ebda8e52..52edcb692 100644
--- a/patterns/shapes/BadShapeCreation.java
+++ b/patterns/shapes/BadShapeCreation.java
@@ -1,5 +1,5 @@
 // patterns/shapes/BadShapeCreation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Circle.java b/patterns/shapes/Circle.java
index 461d55e29..3c05e664a 100644
--- a/patterns/shapes/Circle.java
+++ b/patterns/shapes/Circle.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Circle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/FactoryMethod.java b/patterns/shapes/FactoryMethod.java
index c3b22b1ff..9a4174a83 100644
--- a/patterns/shapes/FactoryMethod.java
+++ b/patterns/shapes/FactoryMethod.java
@@ -1,5 +1,5 @@
 // patterns/shapes/FactoryMethod.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/FactoryTest.java b/patterns/shapes/FactoryTest.java
index 301bb1abd..506d90360 100644
--- a/patterns/shapes/FactoryTest.java
+++ b/patterns/shapes/FactoryTest.java
@@ -1,5 +1,5 @@
 // patterns/shapes/FactoryTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Shape.java b/patterns/shapes/Shape.java
index 12fdf3e77..38ce61440 100644
--- a/patterns/shapes/Shape.java
+++ b/patterns/shapes/Shape.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Shape.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
@@ -7,8 +7,7 @@
 public class Shape {
   private static int counter = 0;
   private int id = counter++;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return
       getClass().getSimpleName() + "[" + id + "]";
   }
diff --git a/patterns/shapes/Square.java b/patterns/shapes/Square.java
index 610dd3e4c..91f879fa9 100644
--- a/patterns/shapes/Square.java
+++ b/patterns/shapes/Square.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Square.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/shapes/Triangle.java b/patterns/shapes/Triangle.java
index 9fed3d93c..c54af659c 100644
--- a/patterns/shapes/Triangle.java
+++ b/patterns/shapes/Triangle.java
@@ -1,5 +1,5 @@
 // patterns/shapes/Triangle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.shapes;
diff --git a/patterns/state/StateMachineDemo.java b/patterns/state/StateMachineDemo.java
index 29f8a8761..0046a684b 100644
--- a/patterns/state/StateMachineDemo.java
+++ b/patterns/state/StateMachineDemo.java
@@ -1,5 +1,5 @@
 // patterns/state/StateMachineDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The StateMachine pattern and Template method
@@ -24,24 +24,21 @@ protected final void runAll() {
 // A different subclass for each state:
 
 class Wash implements State {
-  @Override
-  public void run() {
+  @Override public void run() {
     System.out.println("Washing");
     new Nap(0.5);
   }
 }
 
 class Spin implements State {
-  @Override
-  public void run() {
+  @Override public void run() {
     System.out.println("Spinning");
     new Nap(0.5);
   }
 }
 
 class Rinse implements State {
-  @Override
-  public void run() {
+  @Override public void run() {
     System.out.println("Rinsing");
     new Nap(0.5);
   }
@@ -55,8 +52,7 @@ class Washer extends StateMachine {
     new Rinse(), new Spin(),
   };
   Washer() { runAll(); }
-  @Override
-  public boolean changeState() {
+  @Override public boolean changeState() {
     if(i < states.length) {
       // Change the state by setting the
       // surrogate reference to a new object:
diff --git a/patterns/strategy/StrategyPattern.java b/patterns/strategy/StrategyPattern.java
index 52561b4b1..32f989629 100644
--- a/patterns/strategy/StrategyPattern.java
+++ b/patterns/strategy/StrategyPattern.java
@@ -1,5 +1,5 @@
 // patterns/strategy/StrategyPattern.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.strategy.StrategyPattern}
diff --git a/patterns/strategy/StrategyPattern2.java b/patterns/strategy/StrategyPattern2.java
index 09465f3a5..d63c6e710 100644
--- a/patterns/strategy/StrategyPattern2.java
+++ b/patterns/strategy/StrategyPattern2.java
@@ -1,5 +1,5 @@
 // patterns/strategy/StrategyPattern2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.strategy.StrategyPattern2}
diff --git a/patterns/trash/Aluminum.java b/patterns/trash/Aluminum.java
index 0065e964a..085d7047f 100644
--- a/patterns/trash/Aluminum.java
+++ b/patterns/trash/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/trash/Aluminum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
@@ -7,8 +7,7 @@
 public class Aluminum extends Trash {
   private static double val = 1.67f;
   public Aluminum(double wt) { super(wt); }
-  @Override
-  public double value() { return val; }
+  @Override public double value() { return val; }
   public static void value(double newVal) {
     val = newVal;
   }
diff --git a/patterns/trash/Cardboard.java b/patterns/trash/Cardboard.java
index 0b54d135f..f1998630a 100644
--- a/patterns/trash/Cardboard.java
+++ b/patterns/trash/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/trash/Cardboard.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
@@ -7,8 +7,7 @@
 public class Cardboard extends Trash {
   private static double val = 0.23f;
   public Cardboard(double wt) { super(wt); }
-  @Override
-  public double value() { return val; }
+  @Override public double value() { return val; }
   public static void value(double newVal) {
     val = newVal;
   }
diff --git a/patterns/trash/Fillable.java b/patterns/trash/Fillable.java
index a61cb1112..6c00f6ea9 100644
--- a/patterns/trash/Fillable.java
+++ b/patterns/trash/Fillable.java
@@ -1,5 +1,5 @@
 // patterns/trash/Fillable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Any object that can be filled with Trash
diff --git a/patterns/trash/FillableList.java b/patterns/trash/FillableList.java
index 989a33ec5..05d83ff66 100644
--- a/patterns/trash/FillableList.java
+++ b/patterns/trash/FillableList.java
@@ -1,5 +1,5 @@
 // patterns/trash/FillableList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Adapter that makes a List Fillable
@@ -12,6 +12,5 @@ public class FillableList
   public FillableList(List vv) {
     v = vv;
   }
-  @Override
-  public void addTrash(T t) { v.add(t); }
+  @Override public void addTrash(T t) { v.add(t); }
 }
diff --git a/patterns/trash/Glass.java b/patterns/trash/Glass.java
index f7563dc42..faf73762b 100644
--- a/patterns/trash/Glass.java
+++ b/patterns/trash/Glass.java
@@ -1,5 +1,5 @@
 // patterns/trash/Glass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
@@ -7,8 +7,7 @@
 public class Glass extends Trash {
   private static double val = 0.23f;
   public Glass(double wt) { super(wt); }
-  @Override
-  public double value() { return val; }
+  @Override public double value() { return val; }
   public static void value(double newVal) {
     val = newVal;
   }
diff --git a/patterns/trash/Paper.java b/patterns/trash/Paper.java
index 2f0b36664..dd79e8eae 100644
--- a/patterns/trash/Paper.java
+++ b/patterns/trash/Paper.java
@@ -1,5 +1,5 @@
 // patterns/trash/Paper.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package patterns.trash;
@@ -7,8 +7,7 @@
 public class Paper extends Trash {
   private static double val = 0.10f;
   public Paper(double wt) { super(wt); }
-  @Override
-  public double value() { return val; }
+  @Override public double value() { return val; }
   public static void value(double newVal) {
     val = newVal;
   }
diff --git a/patterns/trash/ParseTrash.java b/patterns/trash/ParseTrash.java
index fc0c04168..7e69fea36 100644
--- a/patterns/trash/ParseTrash.java
+++ b/patterns/trash/ParseTrash.java
@@ -1,5 +1,5 @@
 // patterns/trash/ParseTrash.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Open a file and parse its contents into
diff --git a/patterns/trash/Trash.java b/patterns/trash/Trash.java
index 7d01de8c8..4920e0ba4 100644
--- a/patterns/trash/Trash.java
+++ b/patterns/trash/Trash.java
@@ -1,5 +1,5 @@
 // patterns/trash/Trash.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Base class for Trash recycling examples
@@ -28,8 +28,7 @@ void sumValue(List bin) {
     });
     System.out.println("Total value = " + val);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     // Print correct subclass name:
     return getClass().getName() +
       " w:" + weight() + " v:" +
diff --git a/patterns/trashvisitor/Aluminum.java b/patterns/trashvisitor/Aluminum.java
index 85d5fa145..9bb9c9e4d 100644
--- a/patterns/trashvisitor/Aluminum.java
+++ b/patterns/trashvisitor/Aluminum.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Aluminum.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aluminum for the visitor pattern
@@ -9,8 +9,7 @@
 public class Aluminum extends patterns.trash.Aluminum
     implements Visitable {
   public Aluminum(double wt) { super(wt); }
-  @Override
-  public void accept(Visitor v) {
+  @Override public void accept(Visitor v) {
     v.visit(this);
   }
 }
diff --git a/patterns/trashvisitor/Cardboard.java b/patterns/trashvisitor/Cardboard.java
index 978202ef1..50c3b1c9f 100644
--- a/patterns/trashvisitor/Cardboard.java
+++ b/patterns/trashvisitor/Cardboard.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Cardboard.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cardboard for the visitor pattern
@@ -9,8 +9,7 @@
 public class Cardboard extends patterns.trash.Cardboard
     implements Visitable {
   public Cardboard(double wt) { super(wt); }
-  @Override
-  public void accept(Visitor v) {
+  @Override public void accept(Visitor v) {
     v.visit(this);
   }
 }
diff --git a/patterns/trashvisitor/Glass.java b/patterns/trashvisitor/Glass.java
index fbcf4949f..71f1de037 100644
--- a/patterns/trashvisitor/Glass.java
+++ b/patterns/trashvisitor/Glass.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Glass.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Glass for the visitor pattern
@@ -9,8 +9,7 @@
 public class Glass extends patterns.trash.Glass
     implements Visitable {
   public Glass(double wt) { super(wt); }
-  @Override
-  public void accept(Visitor v) {
+  @Override public void accept(Visitor v) {
     v.visit(this);
   }
 }
diff --git a/patterns/trashvisitor/Paper.java b/patterns/trashvisitor/Paper.java
index 6e9999f1d..ad209ffdf 100644
--- a/patterns/trashvisitor/Paper.java
+++ b/patterns/trashvisitor/Paper.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Paper.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Paper for the visitor pattern
@@ -9,8 +9,7 @@
 public class Paper extends patterns.trash.Paper
     implements Visitable {
   public Paper(double wt) { super(wt); }
-  @Override
-  public void accept(Visitor v) {
+  @Override public void accept(Visitor v) {
     v.visit(this);
   }
 }
diff --git a/patterns/trashvisitor/TrashVisitor.java b/patterns/trashvisitor/TrashVisitor.java
index 8f9566236..c794d82f7 100644
--- a/patterns/trashvisitor/TrashVisitor.java
+++ b/patterns/trashvisitor/TrashVisitor.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/TrashVisitor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java patterns.trashvisitor.TrashVisitor}
@@ -17,32 +17,27 @@ class PriceVisitor implements Visitor {
   public static void show(String s) {
     System.out.println(s);
   }
-  @Override
-  public void visit(Aluminum al) {
+  @Override public void visit(Aluminum al) {
     double v = al.weight() * al.value();
     show("value of Aluminum= " + v);
     alSum += v;
   }
-  @Override
-  public void visit(Paper p) {
+  @Override public void visit(Paper p) {
     double v = p.weight() * p.value();
     show("value of Paper= " + v);
     pSum += v;
   }
-  @Override
-  public void visit(Glass g) {
+  @Override public void visit(Glass g) {
     double v = g.weight() * g.value();
     show("value of Glass= " + v);
     gSum += v;
   }
-  @Override
-  public void visit(Cardboard c) {
+  @Override public void visit(Cardboard c) {
     double v = c.weight() * c.value();
     show("value of Cardboard = " + v);
     cSum += v;
   }
-  @Override
-  public void total() {
+  @Override public void total() {
     show(
       "Total Aluminum: $" + alSum + "\n" +
       "Total Paper: $" + pSum + "\n" +
@@ -59,28 +54,23 @@ class WeightVisitor implements Visitor {
   public static void show(String s) {
     System.out.println(s);
   }
-  @Override
-  public void visit(Aluminum al) {
+  @Override public void visit(Aluminum al) {
     alSum += al.weight();
     show("Aluminum weight = " + al.weight());
   }
-  @Override
-  public void visit(Paper p) {
+  @Override public void visit(Paper p) {
     pSum += p.weight();
     show("Paper weight = " + p.weight());
   }
-  @Override
-  public void visit(Glass g) {
+  @Override public void visit(Glass g) {
     gSum += g.weight();
     show("Glass weight = " + g.weight());
   }
-  @Override
-  public void visit(Cardboard c) {
+  @Override public void visit(Cardboard c) {
     cSum += c.weight();
     show("Cardboard weight = " + c.weight());
   }
-  @Override
-  public void total() {
+  @Override public void total() {
     show("Total weight Aluminum:" + alSum);
     show("Total weight Paper:" + pSum);
     show("Total weight Glass:" + gSum);
diff --git a/patterns/trashvisitor/Visitable.java b/patterns/trashvisitor/Visitable.java
index f1f9f1da1..54563d435 100644
--- a/patterns/trashvisitor/Visitable.java
+++ b/patterns/trashvisitor/Visitable.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Visitable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An interface to add visitor functionality to the
diff --git a/patterns/trashvisitor/Visitor.java b/patterns/trashvisitor/Visitor.java
index 07ef4622d..3f9bfe460 100644
--- a/patterns/trashvisitor/Visitor.java
+++ b/patterns/trashvisitor/Visitor.java
@@ -1,5 +1,5 @@
 // patterns/trashvisitor/Visitor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The base interface for visitors
diff --git a/patterns/visitor/BeeAndFlowers.java b/patterns/visitor/BeeAndFlowers.java
index aa86ebfc5..a1d400459 100644
--- a/patterns/visitor/BeeAndFlowers.java
+++ b/patterns/visitor/BeeAndFlowers.java
@@ -1,5 +1,5 @@
 // patterns/visitor/BeeAndFlowers.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of "visitor" pattern
@@ -38,34 +38,27 @@ class Chrysanthemum implements Flower {
 // Add the ability to produce a String:
 class StringVal implements Visitor {
   String s;
-  @Override
-  public String toString() { return s; }
-  @Override
-  public void visit(Gladiolus g) {
+  @Override public String toString() { return s; }
+  @Override public void visit(Gladiolus g) {
     s = "Gladiolus";
   }
-  @Override
-  public void visit(Renuculus r) {
+  @Override public void visit(Renuculus r) {
     s = "Renuculus";
   }
-  @Override
-  public void visit(Chrysanthemum c) {
+  @Override public void visit(Chrysanthemum c) {
     s = "Chrysanthemum";
   }
 }
 
 // Add the ability to do "Bee" activities:
 class Bee implements Visitor {
-  @Override
-  public void visit(Gladiolus g) {
+  @Override public void visit(Gladiolus g) {
     System.out.println("Bee and Gladiolus");
   }
-  @Override
-  public void visit(Renuculus r) {
+  @Override public void visit(Renuculus r) {
     System.out.println("Bee and Renuculus");
   }
-  @Override
-  public void visit(Chrysanthemum c) {
+  @Override public void visit(Chrysanthemum c) {
     System.out.println("Bee and Chrysanthemum");
   }
 }
diff --git a/polymorphism/CovariantReturn.java b/polymorphism/CovariantReturn.java
index e88fe5908..5b46602aa 100644
--- a/polymorphism/CovariantReturn.java
+++ b/polymorphism/CovariantReturn.java
@@ -1,16 +1,18 @@
 // polymorphism/CovariantReturn.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 class Grain {
-  @Override
-  public String toString() { return "Grain"; }
+  @Override public String toString() {
+    return "Grain";
+  }
 }
 
 class Wheat extends Grain {
-  @Override
-  public String toString() { return "Wheat"; }
+  @Override public String toString() {
+    return "Wheat";
+  }
 }
 
 class Mill {
@@ -18,8 +20,9 @@ class Mill {
 }
 
 class WheatMill extends Mill {
-  @Override
-  Wheat process() { return new Wheat(); }
+  @Override Wheat process() {
+    return new Wheat();
+  }
 }
 
 public class CovariantReturn {
diff --git a/polymorphism/FieldAccess.java b/polymorphism/FieldAccess.java
index 95e47c5e2..e6b39229f 100644
--- a/polymorphism/FieldAccess.java
+++ b/polymorphism/FieldAccess.java
@@ -1,5 +1,5 @@
 // polymorphism/FieldAccess.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Direct field access is determined at compile time
@@ -11,8 +11,7 @@ class Super {
 
 class Sub extends Super {
   public int field = 1;
-  @Override
-  public int getField() { return field; }
+  @Override public int getField() { return field; }
   public int getSuperField() { return super.field; }
 }
 
diff --git a/polymorphism/Frog.java b/polymorphism/Frog.java
index 9226910d5..eb0669f25 100644
--- a/polymorphism/Frog.java
+++ b/polymorphism/Frog.java
@@ -1,5 +1,5 @@
 // polymorphism/Frog.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cleanup and inheritance
@@ -49,8 +49,7 @@ class Animal extends LivingCreature {
   private Description t =
     new Description("Animal not Vegetable");
   Animal() { System.out.println("Animal()"); }
-  @Override
-  protected void dispose() {
+  @Override protected void dispose() {
     System.out.println("Animal dispose");
     t.dispose();
     p.dispose();
@@ -66,8 +65,7 @@ class Amphibian extends Animal {
   Amphibian() {
     System.out.println("Amphibian()");
   }
-  @Override
-  protected void dispose() {
+  @Override protected void dispose() {
     System.out.println("Amphibian dispose");
     t.dispose();
     p.dispose();
@@ -80,8 +78,7 @@ public class Frog extends Amphibian {
     new Characteristic("Croaks");
   private Description t = new Description("Eats Bugs");
   public Frog() { System.out.println("Frog()"); }
-  @Override
-  protected void dispose() {
+  @Override protected void dispose() {
     System.out.println("Frog dispose");
     t.dispose();
     p.dispose();
diff --git a/polymorphism/PolyConstructors.java b/polymorphism/PolyConstructors.java
index 3a99f08b2..8a6d6ed5c 100644
--- a/polymorphism/PolyConstructors.java
+++ b/polymorphism/PolyConstructors.java
@@ -1,5 +1,5 @@
 // polymorphism/PolyConstructors.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructors and polymorphism
@@ -21,8 +21,7 @@ class RoundGlyph extends Glyph {
     System.out.println(
       "RoundGlyph.RoundGlyph(), radius = " + radius);
   }
-  @Override
-  void draw() {
+  @Override void draw() {
     System.out.println(
       "RoundGlyph.draw(), radius = " + radius);
   }
diff --git a/polymorphism/PrivateOverride.java b/polymorphism/PrivateOverride.java
index 9873e03da..59aba4ed2 100644
--- a/polymorphism/PrivateOverride.java
+++ b/polymorphism/PrivateOverride.java
@@ -1,5 +1,5 @@
 // polymorphism/PrivateOverride.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Trying to override a private method
diff --git a/polymorphism/PrivateOverride2.java b/polymorphism/PrivateOverride2.java
index 664672bc4..d53d9a256 100644
--- a/polymorphism/PrivateOverride2.java
+++ b/polymorphism/PrivateOverride2.java
@@ -1,5 +1,5 @@
 // polymorphism/PrivateOverride2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Detecting a mistaken override using @Override
@@ -17,6 +17,7 @@ public static void main(String[] args) {
 }
 
 class Derived2 extends PrivateOverride2 {
-  @Override
-  public void f() { System.out.println("public f()"); }
+  @Override public void f() {
+    System.out.println("public f()");
+  }
 }
diff --git a/polymorphism/RTTI.java b/polymorphism/RTTI.java
index 39c9029b9..fe56a6b26 100644
--- a/polymorphism/RTTI.java
+++ b/polymorphism/RTTI.java
@@ -1,5 +1,5 @@
 // polymorphism/RTTI.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Downcasting & Runtime type information (RTTI)
@@ -11,10 +11,8 @@ public void g() {}
 }
 
 class MoreUseful extends Useful {
-  @Override
-  public void f() {}
-  @Override
-  public void g() {}
+  @Override public void f() {}
+  @Override public void g() {}
   public void u() {}
   public void v() {}
   public void w() {}
@@ -39,5 +37,5 @@ public static void main(String[] args) {
 Exception in thread "main"
 java.lang.ClassCastException: Useful cannot be cast to
 MoreUseful
-        at RTTI.main(RTTI.java:31)
+        at RTTI.main(RTTI.java:29)
 */
diff --git a/polymorphism/ReferenceCounting.java b/polymorphism/ReferenceCounting.java
index b378117f1..634cd8c6c 100644
--- a/polymorphism/ReferenceCounting.java
+++ b/polymorphism/ReferenceCounting.java
@@ -1,5 +1,5 @@
 // polymorphism/ReferenceCounting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cleaning up shared member objects
@@ -16,8 +16,7 @@ protected void dispose() {
     if(--refcount == 0)
       System.out.println("Disposing " + this);
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Shared " + id;
   }
 }
@@ -35,8 +34,7 @@ protected void dispose() {
     System.out.println("disposing " + this);
     shared.dispose();
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Composing " + id;
   }
 }
diff --git a/polymorphism/Sandwich.java b/polymorphism/Sandwich.java
index 97f80d53e..ef39bcbae 100644
--- a/polymorphism/Sandwich.java
+++ b/polymorphism/Sandwich.java
@@ -1,5 +1,5 @@
 // polymorphism/Sandwich.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Order of constructor calls
diff --git a/polymorphism/Shapes.java b/polymorphism/Shapes.java
index 4d051e707..17d82061e 100644
--- a/polymorphism/Shapes.java
+++ b/polymorphism/Shapes.java
@@ -1,5 +1,5 @@
 // polymorphism/Shapes.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Polymorphism in Java
diff --git a/polymorphism/StaticPolymorphism.java b/polymorphism/StaticPolymorphism.java
index 1ebe733b2..2a7309f7e 100644
--- a/polymorphism/StaticPolymorphism.java
+++ b/polymorphism/StaticPolymorphism.java
@@ -1,5 +1,5 @@
 // polymorphism/StaticPolymorphism.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Static methods are not polymorphic
@@ -17,8 +17,7 @@ class StaticSub extends StaticSuper {
   public static String staticGet() {
     return "Derived staticGet()";
   }
-  @Override
-  public String dynamicGet() {
+  @Override public String dynamicGet() {
     return "Derived dynamicGet()";
   }
 }
diff --git a/polymorphism/Transmogrify.java b/polymorphism/Transmogrify.java
index 09877d530..4dbcdeb4b 100644
--- a/polymorphism/Transmogrify.java
+++ b/polymorphism/Transmogrify.java
@@ -1,5 +1,5 @@
 // polymorphism/Transmogrify.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Dynamically changing the behavior of an object
@@ -10,15 +10,13 @@ public void act() {}
 }
 
 class HappyActor extends Actor {
-  @Override
-  public void act() {
+  @Override public void act() {
     System.out.println("HappyActor");
   }
 }
 
 class SadActor extends Actor {
-  @Override
-  public void act() {
+  @Override public void act() {
     System.out.println("SadActor");
   }
 }
diff --git a/polymorphism/music/Instrument.java b/polymorphism/music/Instrument.java
index fb6c77e37..907b3566f 100644
--- a/polymorphism/music/Instrument.java
+++ b/polymorphism/music/Instrument.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Instrument.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.music;
diff --git a/polymorphism/music/Music.java b/polymorphism/music/Music.java
index 8e903ec0a..fb92e0099 100644
--- a/polymorphism/music/Music.java
+++ b/polymorphism/music/Music.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Music.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance & upcasting
diff --git a/polymorphism/music/Music2.java b/polymorphism/music/Music2.java
index a5bff54be..790adcf5d 100644
--- a/polymorphism/music/Music2.java
+++ b/polymorphism/music/Music2.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Music2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overloading instead of upcasting
@@ -7,15 +7,13 @@
 package polymorphism.music;
 
 class Stringed extends Instrument {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Stringed.play() " + n);
   }
 }
 
 class Brass extends Instrument {
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Brass.play() " + n);
   }
 }
diff --git a/polymorphism/music/Note.java b/polymorphism/music/Note.java
index 414367a96..6963bc15a 100644
--- a/polymorphism/music/Note.java
+++ b/polymorphism/music/Note.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Note.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Notes to play on musical instruments
diff --git a/polymorphism/music/Wind.java b/polymorphism/music/Wind.java
index c38ac4970..6e48f513b 100644
--- a/polymorphism/music/Wind.java
+++ b/polymorphism/music/Wind.java
@@ -1,5 +1,5 @@
 // polymorphism/music/Wind.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.music;
@@ -8,8 +8,7 @@
 // because they have the same interface:
 public class Wind extends Instrument {
   // Redefine interface method:
-  @Override
-  public void play(Note n) {
+  @Override public void play(Note n) {
     System.out.println("Wind.play() " + n);
   }
 }
diff --git a/polymorphism/music3/Music3.java b/polymorphism/music3/Music3.java
index da3eb3647..97938dd01 100644
--- a/polymorphism/music3/Music3.java
+++ b/polymorphism/music3/Music3.java
@@ -1,5 +1,5 @@
 // polymorphism/music3/Music3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // An extensible program
@@ -18,62 +18,49 @@ void adjust() {
 }
 
 class Wind extends Instrument {
-  @Override
-  void play(Note n) {
+  @Override void play(Note n) {
     System.out.println("Wind.play() " + n);
   }
-  @Override
-  String what() { return "Wind"; }
-  @Override
-  void adjust() {
+  @Override String what() { return "Wind"; }
+  @Override void adjust() {
     System.out.println("Adjusting Wind");
   }
 }
 
 class Percussion extends Instrument {
-  @Override
-  void play(Note n) {
+  @Override void play(Note n) {
     System.out.println("Percussion.play() " + n);
   }
-  @Override
-  String what() { return "Percussion"; }
-  @Override
-  void adjust() {
+  @Override String what() { return "Percussion"; }
+  @Override void adjust() {
     System.out.println("Adjusting Percussion");
   }
 }
 
 class Stringed extends Instrument {
-  @Override
-  void play(Note n) {
+  @Override void play(Note n) {
     System.out.println("Stringed.play() " + n);
   }
-  @Override
-  String what() { return "Stringed"; }
-  @Override
-  void adjust() {
+  @Override String what() { return "Stringed"; }
+  @Override void adjust() {
     System.out.println("Adjusting Stringed");
   }
 }
 
 class Brass extends Wind {
-  @Override
-  void play(Note n) {
+  @Override void play(Note n) {
     System.out.println("Brass.play() " + n);
   }
-  @Override
-  void adjust() {
+  @Override void adjust() {
     System.out.println("Adjusting Brass");
   }
 }
 
 class Woodwind extends Wind {
-  @Override
-  void play(Note n) {
+  @Override void play(Note n) {
     System.out.println("Woodwind.play() " + n);
   }
-  @Override
-  String what() { return "Woodwind"; }
+  @Override String what() { return "Woodwind"; }
 }
 
 public class Music3 {
diff --git a/polymorphism/shape/Circle.java b/polymorphism/shape/Circle.java
index fc8579506..9b97edaed 100644
--- a/polymorphism/shape/Circle.java
+++ b/polymorphism/shape/Circle.java
@@ -1,16 +1,14 @@
 // polymorphism/shape/Circle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
 
 public class Circle extends Shape {
-  @Override
-  public void draw() {
+  @Override public void draw() {
     System.out.println("Circle.draw()");
   }
-  @Override
-  public void erase() {
+  @Override public void erase() {
     System.out.println("Circle.erase()");
   }
 }
diff --git a/polymorphism/shape/RandomShapes.java b/polymorphism/shape/RandomShapes.java
index c1419f4e1..03120f5ea 100644
--- a/polymorphism/shape/RandomShapes.java
+++ b/polymorphism/shape/RandomShapes.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/RandomShapes.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A "factory" that randomly creates shapes
diff --git a/polymorphism/shape/Shape.java b/polymorphism/shape/Shape.java
index 4be93c866..d78c6dd9e 100644
--- a/polymorphism/shape/Shape.java
+++ b/polymorphism/shape/Shape.java
@@ -1,5 +1,5 @@
 // polymorphism/shape/Shape.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
diff --git a/polymorphism/shape/Square.java b/polymorphism/shape/Square.java
index 4938335b3..fb4802b10 100644
--- a/polymorphism/shape/Square.java
+++ b/polymorphism/shape/Square.java
@@ -1,16 +1,14 @@
 // polymorphism/shape/Square.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
 
 public class Square extends Shape {
-  @Override
-  public void draw() {
+  @Override public void draw() {
     System.out.println("Square.draw()");
   }
-  @Override
-  public void erase() {
+  @Override public void erase() {
     System.out.println("Square.erase()");
   }
 }
diff --git a/polymorphism/shape/Triangle.java b/polymorphism/shape/Triangle.java
index db7394a3c..baebbf870 100644
--- a/polymorphism/shape/Triangle.java
+++ b/polymorphism/shape/Triangle.java
@@ -1,16 +1,14 @@
 // polymorphism/shape/Triangle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package polymorphism.shape;
 
 public class Triangle extends Shape {
-  @Override
-  public void draw() {
+  @Override public void draw() {
     System.out.println("Triangle.draw()");
   }
-  @Override
-  public void erase() {
+  @Override public void erase() {
     System.out.println("Triangle.erase()");
   }
 }
diff --git a/references/AddingClone.java b/references/AddingClone.java
index 4f03cf06d..298b78bf3 100644
--- a/references/AddingClone.java
+++ b/references/AddingClone.java
@@ -1,5 +1,5 @@
 // references/AddingClone.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // You must go through a few gyrations
@@ -11,12 +11,10 @@ class Int2 implements Cloneable {
   private int i;
   Int2(int ii) { i = ii; }
   public void increment() { i++; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(i);
   }
-  @Override
-  public Int2 clone() {
+  @Override public Int2 clone() {
     try {
       return (Int2)super.clone();
     } catch(CloneNotSupportedException e) {
diff --git a/references/Alias1.java b/references/Alias1.java
index 1af594ec4..e3cd047b7 100644
--- a/references/Alias1.java
+++ b/references/Alias1.java
@@ -1,5 +1,5 @@
 // references/Alias1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Aliasing two references to one object
@@ -9,11 +9,11 @@ public class Alias1 {
   public Alias1(int ii) { i = ii; }
   public static void main(String[] args) {
     Alias1 x = new Alias1(7);
-    Alias1 y = x; // Assign the reference (1)
+    Alias1 y = x; // Assign the reference    // [1]
     System.out.println("x: " + x.i);
     System.out.println("y: " + y.i);
     System.out.println("Incrementing x");
-    x.i++; // [2]
+    x.i++;                                   // [2]
     System.out.println("x: " + x.i);
     System.out.println("y: " + y.i);
   }
diff --git a/references/Alias2.java b/references/Alias2.java
index aa37e1a23..789724697 100644
--- a/references/Alias2.java
+++ b/references/Alias2.java
@@ -1,5 +1,5 @@
 // references/Alias2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Method calls implicitly alias their arguments
diff --git a/references/CheckCloneable.java b/references/CheckCloneable.java
index 137937a94..0293b5cef 100644
--- a/references/CheckCloneable.java
+++ b/references/CheckCloneable.java
@@ -1,5 +1,5 @@
 // references/CheckCloneable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Check to see if a reference can be cloned
@@ -46,8 +46,7 @@ private BackOn duplicate(BackOn b) {
     // copy. A dummy copy, just to make a point:
     return new BackOn();
   }
-  @Override
-  public Object clone() {
+  @Override public Object clone() {
     // Doesn't call NoMore.clone():
     return duplicate(this);
   }
diff --git a/references/CloneArrayList.java b/references/CloneArrayList.java
index 601673c2c..811dd419c 100644
--- a/references/CloneArrayList.java
+++ b/references/CloneArrayList.java
@@ -1,5 +1,5 @@
 // references/CloneArrayList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The clone() operation works for only a few
@@ -11,8 +11,7 @@ class Int {
   private int i;
   Int(int ii) { i = ii; }
   public void increment() { i++; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(i);
   }
 }
diff --git a/references/Compete.java b/references/Compete.java
index 9e77f3a7f..9a37c00af 100644
--- a/references/Compete.java
+++ b/references/Compete.java
@@ -1,5 +1,5 @@
 // references/Compete.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
@@ -11,8 +11,7 @@ class Thing2 implements Serializable {
 }
 
 class Thing3 implements Cloneable {
-  @Override
-  public Thing3 clone() {
+  @Override public Thing3 clone() {
     try {
       return (Thing3)super.clone();
     } catch(CloneNotSupportedException e) {
@@ -23,8 +22,7 @@ public Thing3 clone() {
 
 class Thing4 implements Cloneable {
   private Thing3 t3 = new Thing3();
-  @Override
-  public Thing4 clone() {
+  @Override public Thing4 clone() {
     Thing4 t4 = null;
     try {
       t4 = (Thing4)super.clone();
@@ -84,6 +82,6 @@ public class Compete {
   }
 }
 /* Output:
-Duplication via serialization: 516 Milliseconds
-Duplication via cloning: 71 Milliseconds
+Duplication via serialization: 385 Milliseconds
+Duplication via cloning: 38 Milliseconds
 */
diff --git a/references/CopyConstructor.java b/references/CopyConstructor.java
index 2617f48b0..6ffb5303b 100644
--- a/references/CopyConstructor.java
+++ b/references/CopyConstructor.java
@@ -1,5 +1,5 @@
 // references/CopyConstructor.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A constructor to copy an object of the same
@@ -112,12 +112,12 @@ public void evaluate() {
 public class CopyConstructor {
   public static void ripen(Tomato t) {
     // Use the "copy constructor":
-    t = new Tomato(t); // [1]
+    t = new Tomato(t);                           // [1]
     System.out.println("In ripen, t is a " +
       t.getClass().getName());
   }
   public static void slice(Fruit f) {
-    f = new Fruit(f); // [2] Hmmm... will this work?
+    f = new Fruit(f); // Hmmm... will this work? // [2]
     System.out.println("In slice, f is a " +
       f.getClass().getName());
   }
diff --git a/references/DepthReading.java b/references/DepthReading.java
index 00d9dfda6..46c14fd69 100644
--- a/references/DepthReading.java
+++ b/references/DepthReading.java
@@ -1,5 +1,5 @@
 // references/DepthReading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
@@ -10,8 +10,7 @@ public class DepthReading implements Cloneable {
   public DepthReading(double depth) {
     this.depth = depth;
   }
-  @Override
-  public DepthReading clone() {
+  @Override public DepthReading clone() {
     try {
       return (DepthReading)super.clone();
     } catch(CloneNotSupportedException e) {
@@ -22,8 +21,7 @@ public DepthReading clone() {
   public void setDepth(double depth) {
     this.depth = depth;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return String.valueOf(depth);
   }
 }
diff --git a/references/HorrorFlick.java b/references/HorrorFlick.java
index 709d15bf3..e4a8656d9 100644
--- a/references/HorrorFlick.java
+++ b/references/HorrorFlick.java
@@ -1,5 +1,5 @@
 // references/HorrorFlick.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Insert Cloneability at any level of inheritance
@@ -9,8 +9,7 @@ class Person {}
 class Hero extends Person {}
 
 class Scientist extends Person implements Cloneable {
-  @Override
-  public Scientist clone() {
+  @Override public Scientist clone() {
     try {
       return (Scientist)super.clone();
     } catch(CloneNotSupportedException e) {
diff --git a/references/Immutable1.java b/references/Immutable1.java
index 55ac1f6aa..8c2240ab5 100644
--- a/references/Immutable1.java
+++ b/references/Immutable1.java
@@ -1,5 +1,5 @@
 // references/Immutable1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Immutable objects are immune to aliasing
diff --git a/references/Immutable2.java b/references/Immutable2.java
index a565f86a6..aa23cadad 100644
--- a/references/Immutable2.java
+++ b/references/Immutable2.java
@@ -1,5 +1,5 @@
 // references/Immutable2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A companion class to modify immutable objects
diff --git a/references/ImmutableInteger.java b/references/ImmutableInteger.java
index 906aa7ef0..a42ddf1ef 100644
--- a/references/ImmutableInteger.java
+++ b/references/ImmutableInteger.java
@@ -1,5 +1,5 @@
 // references/ImmutableInteger.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The Integer class cannot be changed
diff --git a/references/ImmutableStrings.java b/references/ImmutableStrings.java
index ad954e3f3..9ca8f72c7 100644
--- a/references/ImmutableStrings.java
+++ b/references/ImmutableStrings.java
@@ -1,5 +1,5 @@
 // references/ImmutableStrings.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating StringBuilder
diff --git a/references/LocalCopy.java b/references/LocalCopy.java
index 9c01c09e8..f19f63a62 100644
--- a/references/LocalCopy.java
+++ b/references/LocalCopy.java
@@ -1,5 +1,5 @@
 // references/LocalCopy.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Creating local copies with clone()
@@ -7,8 +7,7 @@
 class Duplo implements Cloneable {
   private int n;
   Duplo(int n) { this.n = n; }
-  @Override
-  public Duplo clone() { // [1]
+  @Override public Duplo clone() {              // [1]
     try {
       return (Duplo)super.clone();
     } catch(CloneNotSupportedException e) {
@@ -18,8 +17,7 @@ public Duplo clone() { // [1]
   public int getValue() { return n; }
   public void setValue(int n) { this.n = n; }
   public void increment() { n++; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(n);
   }
 }
@@ -31,7 +29,7 @@ public static Duplo g(Duplo v) {
     return v;
   }
   public static Duplo f(Duplo v) {
-    v = v.clone(); // [2] Local copy
+    v = v.clone(); // Local copy                // [2]
     v.increment();
     return v;
   }
diff --git a/references/MutableInteger.java b/references/MutableInteger.java
index dfe0cc7b7..9642777e6 100644
--- a/references/MutableInteger.java
+++ b/references/MutableInteger.java
@@ -1,5 +1,5 @@
 // references/MutableInteger.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A changeable wrapper class
@@ -12,8 +12,7 @@ class IntValue {
   public int getValue() { return n; }
   public void setValue(int n) { this.n = n; }
   public void increment() { n++; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(n);
   }
 }
diff --git a/references/OceanReading.java b/references/OceanReading.java
index b89f1b046..754a13b8d 100644
--- a/references/OceanReading.java
+++ b/references/OceanReading.java
@@ -1,5 +1,5 @@
 // references/OceanReading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
@@ -13,8 +13,7 @@ public class OceanReading implements Cloneable {
     temperature = new TemperatureReading(tdata);
     depth = new DepthReading(ddata);
   }
-  @Override
-  public OceanReading clone() {
+  @Override public OceanReading clone() {
     OceanReading or = null;
     try {
       or = (OceanReading)super.clone();
@@ -40,8 +39,7 @@ public DepthReading getDepthReading() {
   public void setDepthReading(DepthReading dr) {
     this.depth = dr;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "temperature: " + temperature +
       ", depth: " + depth;
   }
diff --git a/references/PassReferences.java b/references/PassReferences.java
index 2a1630087..1bd397438 100644
--- a/references/PassReferences.java
+++ b/references/PassReferences.java
@@ -1,5 +1,5 @@
 // references/PassReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -14,6 +14,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-p inside main(): PassReferences@15db9742
-h inside f(): PassReferences@15db9742
+p inside main(): PassReferences@19e0bfd
+h inside f(): PassReferences@19e0bfd
 */
diff --git a/references/SimplerMutableInteger.java b/references/SimplerMutableInteger.java
index 191068ca6..1da86b7be 100644
--- a/references/SimplerMutableInteger.java
+++ b/references/SimplerMutableInteger.java
@@ -1,5 +1,5 @@
 // references/SimplerMutableInteger.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A trivial wrapper class
diff --git a/references/Snake.java b/references/Snake.java
index 004f7e765..f45ec7950 100644
--- a/references/Snake.java
+++ b/references/Snake.java
@@ -1,5 +1,5 @@
 // references/Snake.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Tests cloning to see if reference
@@ -19,15 +19,13 @@ public void increment() {
     if(next != null)
       next.increment();
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     String s = ":" + c;
     if(next != null)
       s += next.toString();
     return s;
   }
-  @Override
-  public Snake clone() {
+  @Override public Snake clone() {
     try {
       return (Snake)super.clone();
     } catch(CloneNotSupportedException e) {
diff --git a/references/Stringer.java b/references/Stringer.java
index 72663bb57..0a4d0dd8a 100644
--- a/references/Stringer.java
+++ b/references/Stringer.java
@@ -1,5 +1,5 @@
 // references/Stringer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/references/TemperatureReading.java b/references/TemperatureReading.java
index 9b77cfb24..8f9afff6d 100644
--- a/references/TemperatureReading.java
+++ b/references/TemperatureReading.java
@@ -1,5 +1,5 @@
 // references/TemperatureReading.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Cloning a composed object
@@ -12,8 +12,7 @@ public TemperatureReading(double temperature) {
     time = System.currentTimeMillis();
     this.temperature = temperature;
   }
-  @Override
-  public TemperatureReading clone() {
+  @Override public TemperatureReading clone() {
     try {
       return (TemperatureReading)super.clone();
     } catch(CloneNotSupportedException e) {
@@ -26,8 +25,7 @@ public double getTemperature() {
   public void setTemperature(double temp) {
     this.temperature = temp;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return String.valueOf(temperature);
   }
 }
diff --git a/references/tests/DeepCopyTest.java b/references/tests/DeepCopyTest.java
index b65a8d89d..5a7fcb6d5 100644
--- a/references/tests/DeepCopyTest.java
+++ b/references/tests/DeepCopyTest.java
@@ -1,5 +1,5 @@
 // references/tests/DeepCopyTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package references;
diff --git a/reuse/Bath.java b/reuse/Bath.java
index 38e5e8195..51fbe2649 100644
--- a/reuse/Bath.java
+++ b/reuse/Bath.java
@@ -1,5 +1,5 @@
 // reuse/Bath.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructor initialization with composition
@@ -10,8 +10,7 @@ class Soap {
     System.out.println("Soap()");
     s = "Constructed";
   }
-  @Override
-  public String toString() { return s; }
+  @Override public String toString() { return s; }
 }
 
 public class Bath {
@@ -30,8 +29,7 @@ public Bath() {
   }
   // Instance initialization:
   { i = 47; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     if(s4 == null) // Delayed initialization:
       s4 = "Joy";
     return
diff --git a/reuse/Beetle.java b/reuse/Beetle.java
index 0a41bc176..089f85e07 100644
--- a/reuse/Beetle.java
+++ b/reuse/Beetle.java
@@ -1,5 +1,5 @@
 // reuse/Beetle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The full process of initialization
diff --git a/reuse/BlankFinal.java b/reuse/BlankFinal.java
index 93818a06a..fd96fe9b8 100644
--- a/reuse/BlankFinal.java
+++ b/reuse/BlankFinal.java
@@ -1,5 +1,5 @@
 // reuse/BlankFinal.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Blank" final fields
diff --git a/reuse/CADSystem.java b/reuse/CADSystem.java
index 55fbe0d85..c2af7deac 100644
--- a/reuse/CADSystem.java
+++ b/reuse/CADSystem.java
@@ -1,5 +1,5 @@
 // reuse/CADSystem.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Ensuring proper cleanup
@@ -20,8 +20,7 @@ class Circle extends Shape {
     super(i);
     System.out.println("Drawing Circle");
   }
-  @Override
-  void dispose() {
+  @Override void dispose() {
     System.out.println("Erasing Circle");
     super.dispose();
   }
@@ -32,8 +31,7 @@ class Triangle extends Shape {
     super(i);
     System.out.println("Drawing Triangle");
   }
-  @Override
-  void dispose() {
+  @Override void dispose() {
     System.out.println("Erasing Triangle");
     super.dispose();
   }
@@ -48,8 +46,7 @@ class Line extends Shape {
     System.out.println(
       "Drawing Line: " + start + ", " + end);
   }
-  @Override
-  void dispose() {
+  @Override void dispose() {
     System.out.println(
       "Erasing Line: " + start + ", " + end);
     super.dispose();
@@ -68,8 +65,7 @@ public CADSystem(int i) {
     t = new Triangle(1);
     System.out.println("Combined constructor");
   }
-  @Override
-  public void dispose() {
+  @Override public void dispose() {
     System.out.println("CADSystem.dispose()");
     // The order of cleanup is the reverse
     // of the order of initialization:
diff --git a/reuse/Car.java b/reuse/Car.java
index 1bc4377b5..46021e7ad 100644
--- a/reuse/Car.java
+++ b/reuse/Car.java
@@ -1,5 +1,5 @@
 // reuse/Car.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Composition with public objects
diff --git a/reuse/Cartoon.java b/reuse/Cartoon.java
index 48741bafb..4b2634570 100644
--- a/reuse/Cartoon.java
+++ b/reuse/Cartoon.java
@@ -1,5 +1,5 @@
 // reuse/Cartoon.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Constructor calls during inheritance
diff --git a/reuse/Chess.java b/reuse/Chess.java
index 30f2685bc..2bd41b001 100644
--- a/reuse/Chess.java
+++ b/reuse/Chess.java
@@ -1,5 +1,5 @@
 // reuse/Chess.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance, constructors and arguments
diff --git a/reuse/DerivedSpaceShip.java b/reuse/DerivedSpaceShip.java
index dfbe20ac3..5df55f543 100644
--- a/reuse/DerivedSpaceShip.java
+++ b/reuse/DerivedSpaceShip.java
@@ -1,5 +1,5 @@
 // reuse/DerivedSpaceShip.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,8 +9,9 @@
   public DerivedSpaceShip(String name) {
     this.name = name;
   }
-  @Override
-  public String toString() { return name; }
+  @Override public String toString() {
+    return name;
+  }
   public static void main(String[] args) {
     DerivedSpaceShip protector =
         new DerivedSpaceShip("NSEA Protector");
diff --git a/reuse/Detergent.java b/reuse/Detergent.java
index 99f4e7cc3..2f25309d1 100644
--- a/reuse/Detergent.java
+++ b/reuse/Detergent.java
@@ -1,5 +1,5 @@
 // reuse/Detergent.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance syntax & properties
@@ -10,8 +10,7 @@ class Cleanser {
   public void dilute() { append(" dilute()"); }
   public void apply() { append(" apply()"); }
   public void scrub() { append(" scrub()"); }
-  @Override
-  public String toString() { return s; }
+  @Override public String toString() { return s; }
   public static void main(String[] args) {
     Cleanser x = new Cleanser();
     x.dilute(); x.apply(); x.scrub();
@@ -21,8 +20,7 @@ public static void main(String[] args) {
 
 public class Detergent extends Cleanser {
   // Change a method:
-  @Override
-  public void scrub() {
+  @Override public void scrub() {
     append(" Detergent.scrub()");
     super.scrub(); // Call base-class version
   }
diff --git a/reuse/FinalArguments.java b/reuse/FinalArguments.java
index 46efed7e1..2c8e649d7 100644
--- a/reuse/FinalArguments.java
+++ b/reuse/FinalArguments.java
@@ -1,5 +1,5 @@
 // reuse/FinalArguments.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using "final" with method arguments
diff --git a/reuse/FinalData.java b/reuse/FinalData.java
index 4376f5c3f..97539e636 100644
--- a/reuse/FinalData.java
+++ b/reuse/FinalData.java
@@ -1,5 +1,5 @@
 // reuse/FinalData.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The effect of final on fields
@@ -27,8 +27,7 @@ public class FinalData {
   private static final Value VAL_3 = new Value(33);
   // Arrays:
   private final int[] a = { 1, 2, 3, 4, 5, 6 };
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return id + ": " + "i4 = " + i4
       + ", INT_5 = " + INT_5;
   }
diff --git a/reuse/FinalOverridingIllusion.java b/reuse/FinalOverridingIllusion.java
index e5c19ece5..a74df7bef 100644
--- a/reuse/FinalOverridingIllusion.java
+++ b/reuse/FinalOverridingIllusion.java
@@ -1,5 +1,5 @@
 // reuse/FinalOverridingIllusion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // It only looks like you can override
diff --git a/reuse/Hide.java b/reuse/Hide.java
index f718e4b08..e4122091b 100644
--- a/reuse/Hide.java
+++ b/reuse/Hide.java
@@ -1,5 +1,5 @@
 // reuse/Hide.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Overloading a base-class method name in a derived
diff --git a/reuse/Jurassic.java b/reuse/Jurassic.java
index 04b7d61c5..7d85e4fb7 100644
--- a/reuse/Jurassic.java
+++ b/reuse/Jurassic.java
@@ -1,5 +1,5 @@
 // reuse/Jurassic.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Making an entire class final
diff --git a/reuse/Lisa.java b/reuse/Lisa.java
index 85ec5cc90..68cccf0a7 100644
--- a/reuse/Lisa.java
+++ b/reuse/Lisa.java
@@ -1,5 +1,5 @@
 // reuse/Lisa.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {WillNotCompile}
diff --git a/reuse/Orc.java b/reuse/Orc.java
index c3ba40a8e..c1f984208 100644
--- a/reuse/Orc.java
+++ b/reuse/Orc.java
@@ -1,5 +1,5 @@
 // reuse/Orc.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The protected keyword
@@ -8,8 +8,7 @@ class Villain {
   private String name;
   protected void set(String nm) { name = nm; }
   Villain(String name) { this.name = name; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "I'm a Villain and my name is " + name;
   }
 }
@@ -24,8 +23,7 @@ public void change(String name, int orcNumber) {
     set(name); // Available because it's protected
     this.orcNumber = orcNumber;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Orc " + orcNumber + ": " + super.toString();
   }
   public static void main(String[] args) {
diff --git a/reuse/PlaceSetting.java b/reuse/PlaceSetting.java
index b57d6383a..ec2486a80 100644
--- a/reuse/PlaceSetting.java
+++ b/reuse/PlaceSetting.java
@@ -1,5 +1,5 @@
 // reuse/PlaceSetting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Combining composition & inheritance
diff --git a/reuse/SpaceShipControls.java b/reuse/SpaceShipControls.java
index 6fde70867..fba9aaff5 100644
--- a/reuse/SpaceShipControls.java
+++ b/reuse/SpaceShipControls.java
@@ -1,5 +1,5 @@
 // reuse/SpaceShipControls.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/reuse/SpaceShipDelegation.java b/reuse/SpaceShipDelegation.java
index c31316b29..aeeca9fc2 100644
--- a/reuse/SpaceShipDelegation.java
+++ b/reuse/SpaceShipDelegation.java
@@ -1,5 +1,5 @@
 // reuse/SpaceShipDelegation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/reuse/SprinklerSystem.java b/reuse/SprinklerSystem.java
index e0ccbe661..6cc174ff7 100644
--- a/reuse/SprinklerSystem.java
+++ b/reuse/SprinklerSystem.java
@@ -1,5 +1,5 @@
 // reuse/SprinklerSystem.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Composition for code reuse
@@ -10,8 +10,7 @@ class WaterSource {
     System.out.println("WaterSource()");
     s = "Constructed";
   }
-  @Override
-  public String toString() { return s; }
+  @Override public String toString() { return s; }
 }
 
 public class SprinklerSystem {
@@ -19,15 +18,14 @@ public class SprinklerSystem {
   private WaterSource source = new WaterSource();
   private int i;
   private float f;
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return
       "valve1 = " + valve1 + " " +
       "valve2 = " + valve2 + " " +
       "valve3 = " + valve3 + " " +
       "valve4 = " + valve4 + "\n" +
       "i = " + i + " " + "f = " + f + " " +
-      "source = " + source; // [1]
+      "source = " + source;                      // [1]
   }
   public static void main(String[] args) {
     SprinklerSystem sprinklers = new SprinklerSystem();
diff --git a/reuse/Wind.java b/reuse/Wind.java
index 3e9a05f6b..ef1c79d17 100644
--- a/reuse/Wind.java
+++ b/reuse/Wind.java
@@ -1,5 +1,5 @@
 // reuse/Wind.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Inheritance & upcasting
diff --git a/serialization/APerson.java b/serialization/APerson.java
index 1f67eb1cb..6eb667ae9 100644
--- a/serialization/APerson.java
+++ b/serialization/APerson.java
@@ -1,5 +1,5 @@
 // serialization/APerson.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Use the XOM library to write and read XML
@@ -32,8 +32,7 @@ public APerson(Element person) {
     last = person
       .getFirstChildElement("last").getValue();
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return first + " " + last;
   }
   // Make it human-readable:
diff --git a/serialization/AStoreCADState.java b/serialization/AStoreCADState.java
index 0ce8858a0..f9c9e79f9 100644
--- a/serialization/AStoreCADState.java
+++ b/serialization/AStoreCADState.java
@@ -1,5 +1,5 @@
 // serialization/AStoreCADState.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Saving the state of a fictitious CAD system
@@ -20,7 +20,7 @@ abstract class Shape implements Serializable {
     yPos = yVal;
     dimension = dim;
   }
-  public String toString() {
+  @Override public String toString() {
     return getClass() + "color[" + getColor() +
       "] xPos[" + xPos + "] yPos[" + yPos +
       "] dim[" + dimension + "]\n";
@@ -43,10 +43,10 @@ class Circle extends Shape {
   Circle(int xVal, int yVal, int dim) {
     super(xVal, yVal, dim);
   }
-  public void setColor(Color newColor) {
+  @Override public void setColor(Color newColor) {
     color = newColor;
   }
-  public Color getColor() { return color; }
+  @Override public Color getColor() { return color; }
 }
 
 class Square extends Shape {
@@ -54,10 +54,10 @@ class Square extends Shape {
   Square(int xVal, int yVal, int dim) {
     super(xVal, yVal, dim);
   }
-  public void setColor(Color newColor) {
+  @Override public void setColor(Color newColor) {
     color = newColor;
   }
-  public Color getColor() { return color; }
+  @Override public Color getColor() { return color; }
 }
 
 class Line extends Shape {
@@ -73,10 +73,10 @@ class Line extends Shape {
   Line(int xVal, int yVal, int dim) {
     super(xVal, yVal, dim);
   }
-  public void setColor(Color newColor) {
+  @Override public void setColor(Color newColor) {
     color = newColor;
   }
-  public Color getColor() { return color; }
+  @Override public Color getColor() { return color; }
 }
 
 public class AStoreCADState {
diff --git a/serialization/Alien.java b/serialization/Alien.java
index d0b0f5bfb..b0ba09a4e 100644
--- a/serialization/Alien.java
+++ b/serialization/Alien.java
@@ -1,5 +1,5 @@
 // serialization/Alien.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A serializable class
diff --git a/serialization/Blip3.java b/serialization/Blip3.java
index 6741298c0..3d66f5730 100644
--- a/serialization/Blip3.java
+++ b/serialization/Blip3.java
@@ -1,5 +1,5 @@
 // serialization/Blip3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Reconstructing an externalizable object
@@ -18,18 +18,15 @@ public Blip3(String x, int a) {
     i = a;
     // s & i initialized only in non-no-arg constructor.
   }
-  @Override
-  public String toString() { return s + i; }
-  @Override
-  public void writeExternal(ObjectOutput out)
+  @Override public String toString() { return s + i; }
+  @Override public void writeExternal(ObjectOutput out)
   throws IOException {
     System.out.println("Blip3.writeExternal");
     // You must do this:
     out.writeObject(s);
     out.writeInt(i);
   }
-  @Override
-  public void readExternal(ObjectInput in)
+  @Override public void readExternal(ObjectInput in)
   throws IOException, ClassNotFoundException {
     System.out.println("Blip3.readExternal");
     // You must do this:
diff --git a/serialization/Blips.java b/serialization/Blips.java
index 88116d844..0ae46686f 100644
--- a/serialization/Blips.java
+++ b/serialization/Blips.java
@@ -1,5 +1,5 @@
 // serialization/Blips.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple use of Externalizable & a pitfall
diff --git a/serialization/FreezeAlien.java b/serialization/FreezeAlien.java
index 0fe8e8314..3ff390b88 100644
--- a/serialization/FreezeAlien.java
+++ b/serialization/FreezeAlien.java
@@ -1,5 +1,5 @@
 // serialization/FreezeAlien.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Create a serialized output file
diff --git a/serialization/Logon.java b/serialization/Logon.java
index 3b9109681..c8f6d9c58 100644
--- a/serialization/Logon.java
+++ b/serialization/Logon.java
@@ -1,5 +1,5 @@
 // serialization/Logon.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates the "transient" keyword
@@ -16,8 +16,7 @@ public Logon(String name, String pwd) {
     username = name;
     password = pwd;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "logon info: \n   username: " +
       username + "\n   date: " + date +
       "\n   password: " + password;
@@ -52,11 +51,11 @@ public static void main(String[] args) {
 /* Output:
 logon a = logon info:
    username: Hulk
-   date: Tue May 09 06:07:47 MDT 2017
+   date: Sun Jan 24 08:49:30 MST 2021
    password: myLittlePony
-Recovering object at Tue May 09 06:07:49 MDT 2017
+Recovering object at Sun Jan 24 08:49:31 MST 2021
 logon a = logon info:
    username: Hulk
-   date: Tue May 09 06:07:47 MDT 2017
+   date: Sun Jan 24 08:49:30 MST 2021
    password: null
 */
diff --git a/serialization/MyWorld.java b/serialization/MyWorld.java
index 99e39de34..f642530fa 100644
--- a/serialization/MyWorld.java
+++ b/serialization/MyWorld.java
@@ -1,5 +1,5 @@
 // serialization/MyWorld.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
@@ -14,8 +14,7 @@ class Animal implements Serializable {
     name = nm;
     preferredHouse = h;
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return name + "[" + super.toString() +
       "], " + preferredHouse + "\n";
   }
@@ -77,24 +76,20 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-animals: [Bosco the dog[Animal@15db9742],
-House@6d06d69c
-, Ralph the hamster[Animal@7852e922], House@6d06d69c
-, Molly the cat[Animal@4e25154f], House@6d06d69c
+animals: [Bosco the dog[Animal@19e0bfd], House@139a55
+, Ralph the hamster[Animal@1db9742], House@139a55
+, Molly the cat[Animal@106d69c], House@139a55
 ]
-animals1: [Bosco the dog[Animal@7ba4f24f],
-House@3b9a45b3
-, Ralph the hamster[Animal@7699a589], House@3b9a45b3
-, Molly the cat[Animal@58372a00], House@3b9a45b3
+animals1: [Bosco the dog[Animal@1ee12a7], House@10bedb4
+, Ralph the hamster[Animal@103dbd3], House@10bedb4
+, Molly the cat[Animal@167cf4d], House@10bedb4
 ]
-animals2: [Bosco the dog[Animal@7ba4f24f],
-House@3b9a45b3
-, Ralph the hamster[Animal@7699a589], House@3b9a45b3
-, Molly the cat[Animal@58372a00], House@3b9a45b3
+animals2: [Bosco the dog[Animal@1ee12a7], House@10bedb4
+, Ralph the hamster[Animal@103dbd3], House@10bedb4
+, Molly the cat[Animal@167cf4d], House@10bedb4
 ]
-animals3: [Bosco the dog[Animal@4dd8dc3],
-House@6d03e736
-, Ralph the hamster[Animal@568db2f2], House@6d03e736
-, Molly the cat[Animal@378bf509], House@6d03e736
+animals3: [Bosco the dog[Animal@a987ac], House@a3a380
+, Ralph the hamster[Animal@1453f44], House@a3a380
+, Molly the cat[Animal@ad8086], House@a3a380
 ]
 */
diff --git a/serialization/People.java b/serialization/People.java
index 0e588749a..b30456669 100644
--- a/serialization/People.java
+++ b/serialization/People.java
@@ -1,5 +1,5 @@
 // serialization/People.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // nu.xom.Node comes from http://www.xom.nu
diff --git a/serialization/RecoverCADState.java b/serialization/RecoverCADState.java
index 612f501cf..188ac9769 100644
--- a/serialization/RecoverCADState.java
+++ b/serialization/RecoverCADState.java
@@ -1,5 +1,5 @@
 // serialization/RecoverCADState.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Restoring the state of the fictitious CAD system
diff --git a/serialization/SerialCtl.java b/serialization/SerialCtl.java
index ed891633d..dd1d41a1f 100644
--- a/serialization/SerialCtl.java
+++ b/serialization/SerialCtl.java
@@ -1,5 +1,5 @@
 // serialization/SerialCtl.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Controlling serialization by adding your own
@@ -13,8 +13,9 @@ public SerialCtl(String aa, String bb) {
     a = "Not Transient: " + aa;
     b = "Transient: " + bb;
   }
-  @Override
-  public String toString() { return a + "\n" + b; }
+  @Override public String toString() {
+    return a + "\n" + b;
+  }
   private void writeObject(ObjectOutputStream stream)
   throws IOException {
     stream.defaultWriteObject();
diff --git a/serialization/Worm.java b/serialization/Worm.java
index 666beb87b..08e3d684d 100644
--- a/serialization/Worm.java
+++ b/serialization/Worm.java
@@ -1,5 +1,5 @@
 // serialization/Worm.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates object serialization
@@ -9,8 +9,7 @@
 class Data implements Serializable {
   private int n;
   Data(int n) { this.n = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return Integer.toString(n);
   }
 }
@@ -34,8 +33,7 @@ public Worm(int i, char x) {
   public Worm() {
     System.out.println("No-arg constructor");
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     StringBuilder result = new StringBuilder(":");
     result.append(c);
     result.append("(");
diff --git a/serialization/xfiles/ThawAlien.java b/serialization/xfiles/ThawAlien.java
index 1de6ce6af..850abd40d 100644
--- a/serialization/xfiles/ThawAlien.java
+++ b/serialization/xfiles/ThawAlien.java
@@ -1,5 +1,5 @@
 // serialization/xfiles/ThawAlien.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Recover a serialized file
diff --git a/standardio/ChangeSystemOut.java b/standardio/ChangeSystemOut.java
index 2b37acb86..e0a06bb7a 100644
--- a/standardio/ChangeSystemOut.java
+++ b/standardio/ChangeSystemOut.java
@@ -1,5 +1,5 @@
 // standardio/ChangeSystemOut.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Turn System.out into a PrintWriter
diff --git a/standardio/Echo.java b/standardio/Echo.java
index d1a6103e9..1119d6ce6 100644
--- a/standardio/Echo.java
+++ b/standardio/Echo.java
@@ -1,5 +1,5 @@
 // standardio/Echo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // How to read from standard input
diff --git a/standardio/OSExecuteDemo.java b/standardio/OSExecuteDemo.java
index cc2fd4b04..608efe81b 100644
--- a/standardio/OSExecuteDemo.java
+++ b/standardio/OSExecuteDemo.java
@@ -1,5 +1,5 @@
 // standardio/OSExecuteDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates standard I/O redirection
diff --git a/standardio/Redirecting.java b/standardio/Redirecting.java
index c2986a2bd..c89ef6303 100644
--- a/standardio/Redirecting.java
+++ b/standardio/Redirecting.java
@@ -1,5 +1,5 @@
 // standardio/Redirecting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates standard I/O redirection
diff --git a/staticchecking/DogsAndRobots.cpp b/staticchecking/DogsAndRobots.cpp
index 03b69a969..e7c1cbbc7 100644
--- a/staticchecking/DogsAndRobots.cpp
+++ b/staticchecking/DogsAndRobots.cpp
@@ -1,5 +1,5 @@
 // staticchecking/DogsAndRobots.cpp
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 #include 
diff --git a/staticchecking/DogsAndRobots.py b/staticchecking/DogsAndRobots.py
index a6b239dab..df423de0b 100644
--- a/staticchecking/DogsAndRobots.py
+++ b/staticchecking/DogsAndRobots.py
@@ -1,5 +1,5 @@
 # staticchecking/DogsAndRobots.py
-# (c)2020 MindView LLC: see Copyright.txt
+# (c)2021 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 
diff --git a/staticchecking/NoBasePetSpeak.py b/staticchecking/NoBasePetSpeak.py
index cbe6c82b6..13590f221 100644
--- a/staticchecking/NoBasePetSpeak.py
+++ b/staticchecking/NoBasePetSpeak.py
@@ -1,5 +1,5 @@
 # staticchecking/NoBasePetSpeak.py
-# (c)2020 MindView LLC: see Copyright.txt
+# (c)2021 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 #- Speaking pets without base classes
diff --git a/staticchecking/PetSpeak.py b/staticchecking/PetSpeak.py
index e3734e2fc..8699a6c83 100644
--- a/staticchecking/PetSpeak.py
+++ b/staticchecking/PetSpeak.py
@@ -1,5 +1,5 @@
 # staticchecking/PetSpeak.py
-# (c)2020 MindView LLC: see Copyright.txt
+# (c)2021 MindView LLC: see Copyright.txt
 # We make no guarantees that this code is fit for any purpose.
 # Visit http://OnJava8.com for more book information.
 #- Speaking pets in Python
diff --git a/staticchecking/dogsandrobots.go b/staticchecking/dogsandrobots.go
index d3dd10cb6..6f353bd83 100644
--- a/staticchecking/dogsandrobots.go
+++ b/staticchecking/dogsandrobots.go
@@ -1,5 +1,5 @@
 // staticchecking/dogsandrobots.go
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package main
diff --git a/staticchecking/dr/DogsAndRobots.java b/staticchecking/dr/DogsAndRobots.java
index 9bede8045..3297a663a 100644
--- a/staticchecking/dr/DogsAndRobots.java
+++ b/staticchecking/dr/DogsAndRobots.java
@@ -1,5 +1,5 @@
 // staticchecking/dr/DogsAndRobots.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.dr.DogsAndRobots}
@@ -8,14 +8,14 @@
 interface Speaks { void talk(); }
 
 class Dog implements Speaks {
-  public void talk() {
+  @Override public void talk() {
     System.out.println("Woof!");
   }
   public void reproduce() { }
 }
 
 class Robot implements Speaks {
-  public void talk() {
+  @Override public void talk() {
     System.out.println("Click!");
   }
   public void oilChange() { }
diff --git a/staticchecking/drc/DogAndRobotCollections.java b/staticchecking/drc/DogAndRobotCollections.java
index 16a82ed54..fdcbed71e 100644
--- a/staticchecking/drc/DogAndRobotCollections.java
+++ b/staticchecking/drc/DogAndRobotCollections.java
@@ -1,5 +1,5 @@
 // staticchecking/drc/DogAndRobotCollections.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.drc.DogAndRobotCollections}
diff --git a/staticchecking/latent/Latent.java b/staticchecking/latent/Latent.java
index 29e53713e..04a374fb2 100644
--- a/staticchecking/latent/Latent.java
+++ b/staticchecking/latent/Latent.java
@@ -1,5 +1,5 @@
 // staticchecking/latent/Latent.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java staticchecking.latent.Latent}
@@ -22,6 +22,7 @@ public void oilChange() {}
 
 class Mime {
   public void walkAgainstTheWind() {}
+  @Override
   public String toString() { return "Mime"; }
 }
 
diff --git a/staticchecking/petspeak.go b/staticchecking/petspeak.go
index 1d5c5e462..497178a4a 100644
--- a/staticchecking/petspeak.go
+++ b/staticchecking/petspeak.go
@@ -1,5 +1,5 @@
 // staticchecking/petspeak.go
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package main
diff --git a/staticchecking/petspeak/PetSpeak.java b/staticchecking/petspeak/PetSpeak.java
index 0b850c3b4..86a3db3d7 100644
--- a/staticchecking/petspeak/PetSpeak.java
+++ b/staticchecking/petspeak/PetSpeak.java
@@ -1,5 +1,5 @@
 // staticchecking/petspeak/PetSpeak.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Speaking pets in Java
@@ -11,13 +11,13 @@ interface Pet {
 }
 
 class Cat implements Pet {
-  public void speak() {
+  @Override public void speak() {
     System.out.println("meow!");
   }
 }
 
 class Dog implements Pet {
-  public void speak() {
+  @Override public void speak() {
     System.out.println("woof!");
   }
 }
diff --git a/streams/ArrayStreams.java b/streams/ArrayStreams.java
index dfed6e83b..74c164606 100644
--- a/streams/ArrayStreams.java
+++ b/streams/ArrayStreams.java
@@ -1,5 +1,5 @@
 // streams/ArrayStreams.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Bubble.java b/streams/Bubble.java
index 5650e5ae2..86c99297d 100644
--- a/streams/Bubble.java
+++ b/streams/Bubble.java
@@ -1,5 +1,5 @@
 // streams/Bubble.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
@@ -7,8 +7,7 @@
 public class Bubble {
   public final int i;
   public Bubble(int n) { i = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Bubble(" + i + ")";
   }
   private static int count = 0;
diff --git a/streams/Bubbles.java b/streams/Bubbles.java
index 1b3bd2b9d..21efc8a44 100644
--- a/streams/Bubbles.java
+++ b/streams/Bubbles.java
@@ -1,5 +1,5 @@
 // streams/Bubbles.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/CollectionToStream.java b/streams/CollectionToStream.java
index 93236ef1f..7b7c69cea 100644
--- a/streams/CollectionToStream.java
+++ b/streams/CollectionToStream.java
@@ -1,5 +1,5 @@
 // streams/CollectionToStream.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/CreatingOptionals.java b/streams/CreatingOptionals.java
index 7e886ddc2..4f30cf52c 100644
--- a/streams/CreatingOptionals.java
+++ b/streams/CreatingOptionals.java
@@ -1,5 +1,5 @@
 // streams/CreatingOptionals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Duplicator.java b/streams/Duplicator.java
index 267279c7b..9e9f87eec 100644
--- a/streams/Duplicator.java
+++ b/streams/Duplicator.java
@@ -1,5 +1,5 @@
 // streams/Duplicator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/Fibonacci.java b/streams/Fibonacci.java
index fa53c6879..0fb47d3f3 100644
--- a/streams/Fibonacci.java
+++ b/streams/Fibonacci.java
@@ -1,5 +1,5 @@
 // streams/Fibonacci.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/FileToWords.java b/streams/FileToWords.java
index 7f7174cbe..1e90d7a4b 100644
--- a/streams/FileToWords.java
+++ b/streams/FileToWords.java
@@ -1,5 +1,5 @@
 // streams/FileToWords.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.nio.file.*;
diff --git a/streams/FileToWordsBuilder.java b/streams/FileToWordsBuilder.java
index d5ac62be5..5e830b8bb 100644
--- a/streams/FileToWordsBuilder.java
+++ b/streams/FileToWordsBuilder.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsBuilder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/streams/FileToWordsRegexp.java b/streams/FileToWordsRegexp.java
index dfff507e1..f01c853aa 100644
--- a/streams/FileToWordsRegexp.java
+++ b/streams/FileToWordsRegexp.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsRegexp.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/streams/FileToWordsTest.java b/streams/FileToWordsTest.java
index a81f72096..7c95bebd5 100644
--- a/streams/FileToWordsTest.java
+++ b/streams/FileToWordsTest.java
@@ -1,5 +1,5 @@
 // streams/FileToWordsTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/FlatMap.java b/streams/FlatMap.java
index e2b3137fa..8e5fe8d69 100644
--- a/streams/FlatMap.java
+++ b/streams/FlatMap.java
@@ -1,5 +1,5 @@
 // streams/FlatMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/ForEach.java b/streams/ForEach.java
index f0abe2558..a8ed8edea 100644
--- a/streams/ForEach.java
+++ b/streams/ForEach.java
@@ -1,5 +1,5 @@
 // streams/ForEach.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -23,6 +23,6 @@ public static void main(String[] args) {
 }
 /* Output:
 258 555 693 861 961 429 868 200 522 207 288 128 551 589
-551 861 429 589 200 522 555 693 258 128 868 288 961 207
+551 589 861 555 288 128 429 207 693 200 258 522 868 961
 258 555 693 861 961 429 868 200 522 207 288 128 551 589
 */
diff --git a/streams/FunctionMap.java b/streams/FunctionMap.java
index 3c7c90e79..9b2fc4744 100644
--- a/streams/FunctionMap.java
+++ b/streams/FunctionMap.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/FunctionMap2.java b/streams/FunctionMap2.java
index 4d9f29726..130cd7292 100644
--- a/streams/FunctionMap2.java
+++ b/streams/FunctionMap2.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Different input and output types
@@ -9,8 +9,7 @@
 class Numbered {
   final int n;
   Numbered(int n) { this.n = n; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Numbered(" + n + ")";
   }
 }
diff --git a/streams/FunctionMap3.java b/streams/FunctionMap3.java
index 74236af31..6214fa327 100644
--- a/streams/FunctionMap3.java
+++ b/streams/FunctionMap3.java
@@ -1,5 +1,5 @@
 // streams/FunctionMap3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Producing numeric output streams
diff --git a/streams/Generator.java b/streams/Generator.java
index c9aba7404..f83741216 100644
--- a/streams/Generator.java
+++ b/streams/Generator.java
@@ -1,5 +1,5 @@
 // streams/Generator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -10,7 +10,7 @@ public class Generator implements Supplier {
   Random rand = new Random(47);
   char[] letters =
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
-  public String get() {
+  @Override public String get() {
     return "" + letters[rand.nextInt(letters.length)];
   }
   public static void main(String[] args) {
diff --git a/streams/ImperativeRandoms.java b/streams/ImperativeRandoms.java
index f9baaca5b..a11a072e4 100644
--- a/streams/ImperativeRandoms.java
+++ b/streams/ImperativeRandoms.java
@@ -1,5 +1,5 @@
 // streams/ImperativeRandoms.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Informational.java b/streams/Informational.java
index dd80585c3..bc33ca4d3 100644
--- a/streams/Informational.java
+++ b/streams/Informational.java
@@ -1,5 +1,5 @@
 // streams/Informational.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/LastElement.java b/streams/LastElement.java
index 398b0488d..74a745526 100644
--- a/streams/LastElement.java
+++ b/streams/LastElement.java
@@ -1,5 +1,5 @@
 // streams/LastElement.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Looping.java b/streams/Looping.java
index 715ad052e..bfb49d031 100644
--- a/streams/Looping.java
+++ b/streams/Looping.java
@@ -1,5 +1,5 @@
 // streams/Looping.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static onjava.Repeat.*;
diff --git a/streams/Machine2.java b/streams/Machine2.java
index 3d407185c..e7b425ea7 100644
--- a/streams/Machine2.java
+++ b/streams/Machine2.java
@@ -1,5 +1,5 @@
 // streams/Machine2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/MapCollector.java b/streams/MapCollector.java
index 95811e4b1..5ab66f715 100644
--- a/streams/MapCollector.java
+++ b/streams/MapCollector.java
@@ -1,5 +1,5 @@
 // streams/MapCollector.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -14,8 +14,7 @@ class Pair {
   }
   public Character getC() { return c; }
   public Integer getI() { return i; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Pair(" + c + ", " + i + ")";
   }
 }
diff --git a/streams/Matching.java b/streams/Matching.java
index f5c01bc6d..4aa6280f5 100644
--- a/streams/Matching.java
+++ b/streams/Matching.java
@@ -1,5 +1,5 @@
 // streams/Matching.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrates short-circuiting of *Match() operations
diff --git a/streams/NumericStreamInfo.java b/streams/NumericStreamInfo.java
index 0d04b6ef3..3cc6c88e3 100644
--- a/streams/NumericStreamInfo.java
+++ b/streams/NumericStreamInfo.java
@@ -1,5 +1,5 @@
 // streams/NumericStreamInfo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/OptionalBasics.java b/streams/OptionalBasics.java
index 625c450ab..525611d21 100644
--- a/streams/OptionalBasics.java
+++ b/streams/OptionalBasics.java
@@ -1,5 +1,5 @@
 // streams/OptionalBasics.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalFilter.java b/streams/OptionalFilter.java
index a2095ec3b..72e2011c0 100644
--- a/streams/OptionalFilter.java
+++ b/streams/OptionalFilter.java
@@ -1,5 +1,5 @@
 // streams/OptionalFilter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalFlatMap.java b/streams/OptionalFlatMap.java
index 52e8e81e8..fe5bcdddf 100644
--- a/streams/OptionalFlatMap.java
+++ b/streams/OptionalFlatMap.java
@@ -1,5 +1,5 @@
 // streams/OptionalFlatMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalMap.java b/streams/OptionalMap.java
index 83ae4396b..50a385ed1 100644
--- a/streams/OptionalMap.java
+++ b/streams/OptionalMap.java
@@ -1,5 +1,5 @@
 // streams/OptionalMap.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Optionals.java b/streams/Optionals.java
index 4d0d96cbd..c4512b4bf 100644
--- a/streams/Optionals.java
+++ b/streams/Optionals.java
@@ -1,5 +1,5 @@
 // streams/Optionals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/OptionalsFromEmptyStreams.java b/streams/OptionalsFromEmptyStreams.java
index 771a84c0b..be206bf8d 100644
--- a/streams/OptionalsFromEmptyStreams.java
+++ b/streams/OptionalsFromEmptyStreams.java
@@ -1,5 +1,5 @@
 // streams/OptionalsFromEmptyStreams.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Peeking.java b/streams/Peeking.java
index d88005150..75dcb3467 100644
--- a/streams/Peeking.java
+++ b/streams/Peeking.java
@@ -1,5 +1,5 @@
 // streams/Peeking.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/streams/Prime.java b/streams/Prime.java
index e14459d1a..34e802294 100644
--- a/streams/Prime.java
+++ b/streams/Prime.java
@@ -1,5 +1,5 @@
 // streams/Prime.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/RandInts.java b/streams/RandInts.java
index 8adfc60e2..8e6c2bb2d 100644
--- a/streams/RandInts.java
+++ b/streams/RandInts.java
@@ -1,5 +1,5 @@
 // streams/RandInts.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package streams;
diff --git a/streams/RandomGenerators.java b/streams/RandomGenerators.java
index 904216ac6..78d6f231a 100644
--- a/streams/RandomGenerators.java
+++ b/streams/RandomGenerators.java
@@ -1,5 +1,5 @@
 // streams/RandomGenerators.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/RandomWords.java b/streams/RandomWords.java
index 3bf2e51bb..6f2df4edc 100644
--- a/streams/RandomWords.java
+++ b/streams/RandomWords.java
@@ -1,5 +1,5 @@
 // streams/RandomWords.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -20,11 +20,10 @@ public class RandomWords implements Supplier {
         words.add(word.toLowerCase());
     }
   }
-  public String get() {
+  @Override public String get() {
     return words.get(rand.nextInt(words.size()));
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return words.stream()
       .collect(Collectors.joining(" "));
   }
diff --git a/streams/Randoms.java b/streams/Randoms.java
index f2b5f6a8a..52e05df05 100644
--- a/streams/Randoms.java
+++ b/streams/Randoms.java
@@ -1,5 +1,5 @@
 // streams/Randoms.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Ranges.java b/streams/Ranges.java
index d8fc681ac..1a4da9018 100644
--- a/streams/Ranges.java
+++ b/streams/Ranges.java
@@ -1,5 +1,5 @@
 // streams/Ranges.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static java.util.stream.IntStream.*;
diff --git a/streams/Reduce.java b/streams/Reduce.java
index 0e9f07ba9..9d513f496 100644
--- a/streams/Reduce.java
+++ b/streams/Reduce.java
@@ -1,5 +1,5 @@
 // streams/Reduce.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -8,8 +8,7 @@
 class Frobnitz {
   int size;
   Frobnitz(int sz) { size = sz; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Frobnitz(" + size + ")";
   }
   // Generator:
diff --git a/streams/SelectElement.java b/streams/SelectElement.java
index 86846e404..a6b504498 100644
--- a/streams/SelectElement.java
+++ b/streams/SelectElement.java
@@ -1,5 +1,5 @@
 // streams/SelectElement.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/Signal.java b/streams/Signal.java
index 9dc2a9f41..4b14200f4 100644
--- a/streams/Signal.java
+++ b/streams/Signal.java
@@ -1,5 +1,5 @@
 // streams/Signal.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -10,8 +10,7 @@ public class Signal {
   private final String msg;
   public Signal(String msg) { this.msg = msg; }
   public String getMsg() { return msg; }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Signal(" + msg + ")";
   }
   static Random rand = new Random(47);
diff --git a/streams/SortedComparator.java b/streams/SortedComparator.java
index 070d60a7c..4d60a6486 100644
--- a/streams/SortedComparator.java
+++ b/streams/SortedComparator.java
@@ -1,5 +1,5 @@
 // streams/SortedComparator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/SpecialCollector.java b/streams/SpecialCollector.java
index 9526a73ea..36068bf7b 100644
--- a/streams/SpecialCollector.java
+++ b/streams/SpecialCollector.java
@@ -1,5 +1,5 @@
 // streams/SpecialCollector.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOf.java b/streams/StreamOf.java
index c143388a3..7ae3adefc 100644
--- a/streams/StreamOf.java
+++ b/streams/StreamOf.java
@@ -1,5 +1,5 @@
 // streams/StreamOf.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/StreamOfOptionals.java b/streams/StreamOfOptionals.java
index f725df578..4b0b048b0 100644
--- a/streams/StreamOfOptionals.java
+++ b/streams/StreamOfOptionals.java
@@ -1,5 +1,5 @@
 // streams/StreamOfOptionals.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOfRandoms.java b/streams/StreamOfRandoms.java
index 66bf2bc7d..6b83b83ba 100644
--- a/streams/StreamOfRandoms.java
+++ b/streams/StreamOfRandoms.java
@@ -1,5 +1,5 @@
 // streams/StreamOfRandoms.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/streams/StreamOfStreams.java b/streams/StreamOfStreams.java
index 973d83a6b..d282a6724 100644
--- a/streams/StreamOfStreams.java
+++ b/streams/StreamOfStreams.java
@@ -1,5 +1,5 @@
 // streams/StreamOfStreams.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
diff --git a/streams/TreeSetOfWords.java b/streams/TreeSetOfWords.java
index feaa56a2a..93405f74e 100644
--- a/streams/TreeSetOfWords.java
+++ b/streams/TreeSetOfWords.java
@@ -1,5 +1,5 @@
 // streams/TreeSetOfWords.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/ArrayListDisplay.java b/strings/ArrayListDisplay.java
index 7b83296f0..586f013a2 100644
--- a/strings/ArrayListDisplay.java
+++ b/strings/ArrayListDisplay.java
@@ -1,5 +1,5 @@
 // strings/ArrayListDisplay.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/BetterRead.java b/strings/BetterRead.java
index a3b7aaa2d..02c55c397 100644
--- a/strings/BetterRead.java
+++ b/strings/BetterRead.java
@@ -1,5 +1,5 @@
 // strings/BetterRead.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Concatenation.java b/strings/Concatenation.java
index 685f4dbb6..33e703a85 100644
--- a/strings/Concatenation.java
+++ b/strings/Concatenation.java
@@ -1,5 +1,5 @@
 // strings/Concatenation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/Conversion.java b/strings/Conversion.java
index f839e81a2..c417c875c 100644
--- a/strings/Conversion.java
+++ b/strings/Conversion.java
@@ -1,5 +1,5 @@
 // strings/Conversion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.math.*;
@@ -104,8 +104,8 @@ public static void main(String[] args) {
 h: 1ef462c
 y = new Conversion()
 b: true
-s: Conversion@15db9742
-h: 15db9742
+s: Conversion@19e0bfd
+h: 19e0bfd
 z = false
 b: false
 s: false
diff --git a/strings/DatabaseException.java b/strings/DatabaseException.java
index e84412546..5a7a9bd98 100644
--- a/strings/DatabaseException.java
+++ b/strings/DatabaseException.java
@@ -1,5 +1,5 @@
 // strings/DatabaseException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/Finding.java b/strings/Finding.java
index f8d7cbbce..096b080d4 100644
--- a/strings/Finding.java
+++ b/strings/Finding.java
@@ -1,5 +1,5 @@
 // strings/Finding.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Groups.java b/strings/Groups.java
index 298caf627..b98fcddcc 100644
--- a/strings/Groups.java
+++ b/strings/Groups.java
@@ -1,5 +1,5 @@
 // strings/Groups.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Hex.java b/strings/Hex.java
index 0fbcea8e4..47f05b80f 100644
--- a/strings/Hex.java
+++ b/strings/Hex.java
@@ -1,5 +1,5 @@
 // strings/Hex.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {java onjava.Hex}
diff --git a/strings/Immutable.java b/strings/Immutable.java
index 4c8b529e7..365c3ebe3 100644
--- a/strings/Immutable.java
+++ b/strings/Immutable.java
@@ -1,5 +1,5 @@
 // strings/Immutable.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/InfiniteRecursion.java b/strings/InfiniteRecursion.java
index 6941490a5..cc523ec88 100644
--- a/strings/InfiniteRecursion.java
+++ b/strings/InfiniteRecursion.java
@@ -1,5 +1,5 @@
 // strings/InfiniteRecursion.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Accidental recursion
@@ -9,8 +9,7 @@
 import java.util.stream.*;
 
 public class InfiniteRecursion {
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return
       " InfiniteRecursion address: " + this + "\n";
   }
diff --git a/strings/IntegerMatch.java b/strings/IntegerMatch.java
index 5a3a38ac8..c951a2cf9 100644
--- a/strings/IntegerMatch.java
+++ b/strings/IntegerMatch.java
@@ -1,5 +1,5 @@
 // strings/IntegerMatch.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/JGrep.java b/strings/JGrep.java
index 49cec9547..946e8ff63 100644
--- a/strings/JGrep.java
+++ b/strings/JGrep.java
@@ -1,5 +1,5 @@
 // strings/JGrep.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // A very simple version of the "grep" program
diff --git a/strings/ReFlags.java b/strings/ReFlags.java
index 856806eee..a407b6c97 100644
--- a/strings/ReFlags.java
+++ b/strings/ReFlags.java
@@ -1,5 +1,5 @@
 // strings/ReFlags.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/ReceiptBuilder.java b/strings/ReceiptBuilder.java
index 234ca1e67..e58e8bb64 100644
--- a/strings/ReceiptBuilder.java
+++ b/strings/ReceiptBuilder.java
@@ -1,5 +1,5 @@
 // strings/ReceiptBuilder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Replacing.java b/strings/Replacing.java
index dbc21afe2..90394c32e 100644
--- a/strings/Replacing.java
+++ b/strings/Replacing.java
@@ -1,5 +1,5 @@
 // strings/Replacing.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/ReplacingStringTokenizer.java b/strings/ReplacingStringTokenizer.java
index 60fad1848..9c2bee8ad 100644
--- a/strings/ReplacingStringTokenizer.java
+++ b/strings/ReplacingStringTokenizer.java
@@ -1,5 +1,5 @@
 // strings/ReplacingStringTokenizer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/Resetting.java b/strings/Resetting.java
index f15653903..67c4c8cd5 100644
--- a/strings/Resetting.java
+++ b/strings/Resetting.java
@@ -1,5 +1,5 @@
 // strings/Resetting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Rudolph.java b/strings/Rudolph.java
index 7a338510a..b90813c7d 100644
--- a/strings/Rudolph.java
+++ b/strings/Rudolph.java
@@ -1,5 +1,5 @@
 // strings/Rudolph.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/ScannerDelimiter.java b/strings/ScannerDelimiter.java
index a06ed990d..7ac41a4c3 100644
--- a/strings/ScannerDelimiter.java
+++ b/strings/ScannerDelimiter.java
@@ -1,5 +1,5 @@
 // strings/ScannerDelimiter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/SimpleFormat.java b/strings/SimpleFormat.java
index a3a6e52fe..106f92572 100644
--- a/strings/SimpleFormat.java
+++ b/strings/SimpleFormat.java
@@ -1,5 +1,5 @@
 // strings/SimpleFormat.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/strings/SimpleRead.java b/strings/SimpleRead.java
index e85a058a5..15533b973 100644
--- a/strings/SimpleRead.java
+++ b/strings/SimpleRead.java
@@ -1,5 +1,5 @@
 // strings/SimpleRead.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/strings/SplitDemo.java b/strings/SplitDemo.java
index 657453922..3d5eb6719 100644
--- a/strings/SplitDemo.java
+++ b/strings/SplitDemo.java
@@ -1,5 +1,5 @@
 // strings/SplitDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Splitting.java b/strings/Splitting.java
index 0afe3a402..f22ea1a37 100644
--- a/strings/Splitting.java
+++ b/strings/Splitting.java
@@ -1,5 +1,5 @@
 // strings/Splitting.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/StartEnd.java b/strings/StartEnd.java
index 03caf520c..072dde8de 100644
--- a/strings/StartEnd.java
+++ b/strings/StartEnd.java
@@ -1,5 +1,5 @@
 // strings/StartEnd.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/TestRegularExpression.java b/strings/TestRegularExpression.java
index fe79ce8b2..d20af088f 100644
--- a/strings/TestRegularExpression.java
+++ b/strings/TestRegularExpression.java
@@ -1,5 +1,5 @@
 // strings/TestRegularExpression.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple regular expression demonstration
diff --git a/strings/TheReplacements.java b/strings/TheReplacements.java
index 2319552fe..cd543ab59 100644
--- a/strings/TheReplacements.java
+++ b/strings/TheReplacements.java
@@ -1,5 +1,5 @@
 // strings/TheReplacements.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/ThreatAnalyzer.java b/strings/ThreatAnalyzer.java
index fc145c86e..28c500054 100644
--- a/strings/ThreatAnalyzer.java
+++ b/strings/ThreatAnalyzer.java
@@ -1,5 +1,5 @@
 // strings/ThreatAnalyzer.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.regex.*;
diff --git a/strings/Turtle.java b/strings/Turtle.java
index 68977bfc2..f3121b755 100644
--- a/strings/Turtle.java
+++ b/strings/Turtle.java
@@ -1,5 +1,5 @@
 // strings/Turtle.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.io.*;
diff --git a/strings/UsingStringBuilder.java b/strings/UsingStringBuilder.java
index 0ff324102..a5511ff63 100644
--- a/strings/UsingStringBuilder.java
+++ b/strings/UsingStringBuilder.java
@@ -1,5 +1,5 @@
 // strings/UsingStringBuilder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/strings/WhitherStringBuilder.java b/strings/WhitherStringBuilder.java
index 0c46cae3b..f39d3f11f 100644
--- a/strings/WhitherStringBuilder.java
+++ b/strings/WhitherStringBuilder.java
@@ -1,5 +1,5 @@
 // strings/WhitherStringBuilder.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/AnonymousImplementation.java b/typeinfo/AnonymousImplementation.java
index 34fa7832c..7cff12823 100644
--- a/typeinfo/AnonymousImplementation.java
+++ b/typeinfo/AnonymousImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/AnonymousImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Anonymous inner classes can't hide from reflection
@@ -8,7 +8,7 @@
 class AnonymousA {
   public static A makeA() {
     return new A() {
-      public void f() {
+      @Override public void f() {
         System.out.println("public C.f()");
       }
       public void g() {
diff --git a/typeinfo/BoundedClassReferences.java b/typeinfo/BoundedClassReferences.java
index ed0945e60..58d7eb009 100644
--- a/typeinfo/BoundedClassReferences.java
+++ b/typeinfo/BoundedClassReferences.java
@@ -1,5 +1,5 @@
 // typeinfo/BoundedClassReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/ClassCasts.java b/typeinfo/ClassCasts.java
index fd0e17cf6..5f36ba4b3 100644
--- a/typeinfo/ClassCasts.java
+++ b/typeinfo/ClassCasts.java
@@ -1,5 +1,5 @@
 // typeinfo/ClassCasts.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/ClassInitialization.java b/typeinfo/ClassInitialization.java
index ba1d50e81..3814949d8 100644
--- a/typeinfo/ClassInitialization.java
+++ b/typeinfo/ClassInitialization.java
@@ -1,5 +1,5 @@
 // typeinfo/ClassInitialization.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -35,9 +35,9 @@ public class ClassInitialization {
     System.out.println("After creating Initable ref");
     // Does not trigger initialization:
     System.out.println(Initable.STATIC_FINAL);
-    // Does trigger initialization:
+    // Triggers initialization:
     System.out.println(Initable.STATIC_FINAL2);
-    // Does trigger initialization:
+    // Triggers initialization:
     System.out.println(Initable2.staticNonFinal);
     Class initable3 = Class.forName("Initable3");
     System.out.println("After creating Initable3 ref");
diff --git a/typeinfo/DynamicSupplier.java b/typeinfo/DynamicSupplier.java
index 271af6399..1bcf039a7 100644
--- a/typeinfo/DynamicSupplier.java
+++ b/typeinfo/DynamicSupplier.java
@@ -1,15 +1,19 @@
 // typeinfo/DynamicSupplier.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
 import java.util.stream.*;
 
-class CountedInteger {
+class ID {
   private static long counter;
   private final long id = counter++;
-  @Override
-  public String toString() { return Long.toString(id); }
+  @Override public String toString() {
+    return Long.toString(id);
+  }
+  // A public default constructor is required
+  // to call getConstructor().newInstance():
+  public ID() {}
 }
 
 public class DynamicSupplier implements Supplier {
@@ -17,17 +21,16 @@ public class DynamicSupplier implements Supplier {
   public DynamicSupplier(Class type) {
     this.type = type;
   }
-  @SuppressWarnings("deprecation")
-  public T get() {
+  @Override public T get() {
     try {
-      return type.newInstance();
+      return type.getConstructor().newInstance();
     } catch(Exception e) {
       throw new RuntimeException(e);
     }
   }
   public static void main(String[] args) {
     Stream.generate(
-      new DynamicSupplier<>(CountedInteger.class))
+      new DynamicSupplier<>(ID.class))
       .skip(10)
       .limit(5)
       .forEach(System.out::println);
diff --git a/typeinfo/FamilyVsExactType.java b/typeinfo/FamilyVsExactType.java
index 5981bbe63..10e1b3804 100644
--- a/typeinfo/FamilyVsExactType.java
+++ b/typeinfo/FamilyVsExactType.java
@@ -1,5 +1,5 @@
 // typeinfo/FamilyVsExactType.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // The difference between instanceof and class
diff --git a/typeinfo/GenericClassReferences.java b/typeinfo/GenericClassReferences.java
index 81ba7f7d0..9925fb199 100644
--- a/typeinfo/GenericClassReferences.java
+++ b/typeinfo/GenericClassReferences.java
@@ -1,14 +1,14 @@
 // typeinfo/GenericClassReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
 public class GenericClassReferences {
   public static void main(String[] args) {
     Class intClass = int.class;
+    intClass = double.class;
     Class genericIntClass = int.class;
     genericIntClass = Integer.class; // Same thing
-    intClass = double.class;
     // genericIntClass = double.class; // Illegal
   }
 }
diff --git a/typeinfo/HiddenImplementation.java b/typeinfo/HiddenImplementation.java
index 7b41f6575..88dcb2386 100644
--- a/typeinfo/HiddenImplementation.java
+++ b/typeinfo/HiddenImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/HiddenImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sneaking around package hiding
diff --git a/typeinfo/ID2.java b/typeinfo/ID2.java
new file mode 100644
index 000000000..8463a4fe9
--- /dev/null
+++ b/typeinfo/ID2.java
@@ -0,0 +1,27 @@
+// typeinfo/ID2.java
+// (c)2021 MindView LLC: see Copyright.txt
+// We make no guarantees that this code is fit for any purpose.
+// Visit http://OnJava8.com for more book information.
+import java.util.stream.*;
+
+public class ID2 {
+  private static long counter;
+  private final long id = counter++;
+  @Override public String toString() {
+    return Long.toString(id);
+  }
+  public static void main(String[] args) {
+    Stream.generate(
+      new DynamicSupplier<>(ID2.class))
+      .skip(10)
+      .limit(5)
+      .forEach(System.out::println);
+  }
+}
+/* Output:
+10
+11
+12
+13
+14
+*/
diff --git a/typeinfo/InnerImplementation.java b/typeinfo/InnerImplementation.java
index 2b6541fa5..1c15b7518 100644
--- a/typeinfo/InnerImplementation.java
+++ b/typeinfo/InnerImplementation.java
@@ -1,5 +1,5 @@
 // typeinfo/InnerImplementation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Private inner classes can't hide from reflection
@@ -7,7 +7,7 @@
 
 class InnerA {
   private static class C implements A {
-    public void f() {
+    @Override public void f() {
       System.out.println("public C.f()");
     }
     public void g() {
diff --git a/typeinfo/InterfaceViolation.java b/typeinfo/InterfaceViolation.java
index 06b13f65c..84300720e 100644
--- a/typeinfo/InterfaceViolation.java
+++ b/typeinfo/InterfaceViolation.java
@@ -1,12 +1,12 @@
 // typeinfo/InterfaceViolation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Sneaking around an interface
 import typeinfo.interfacea.*;
 
 class B implements A {
-  public void f() {}
+  @Override public void f() {}
   public void g() {}
 }
 
diff --git a/typeinfo/ModifyingPrivateFields.java b/typeinfo/ModifyingPrivateFields.java
index fa1a175d8..0d68972e4 100644
--- a/typeinfo/ModifyingPrivateFields.java
+++ b/typeinfo/ModifyingPrivateFields.java
@@ -1,5 +1,5 @@
 // typeinfo/ModifyingPrivateFields.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
@@ -8,8 +8,7 @@ class WithPrivateFinalField {
   private int i = 1;
   private final String s = "I'm totally safe";
   private String s2 = "Am I safe?";
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "i = " + i + ", " + s + ", " + s2;
   }
 }
diff --git a/typeinfo/NullRobot.java b/typeinfo/NullRobot.java
index d174ca946..a3d0ed6b3 100644
--- a/typeinfo/NullRobot.java
+++ b/typeinfo/NullRobot.java
@@ -1,5 +1,5 @@
 // typeinfo/NullRobot.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using a dynamic proxy to create an Optional
@@ -20,13 +20,11 @@ private class NRobot implements Null, Robot {
     public String name() { return nullName; }
     @Override
     public String model() { return nullName; }
-    @Override
-    public List operations() {
+    @Override public List operations() {
       return Collections.emptyList();
     }
   }
-  @Override
-  public Object
+  @Override public Object
   invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
     return method.invoke(proxied, args);
@@ -43,8 +41,8 @@ public class NullRobot {
   }
   public static void main(String[] args) {
     Stream.of(
-      new SnowRemovalRobot("SnowBee"),
-      newNullRobot(SnowRemovalRobot.class)
+      new SnowRobot("SnowBee"),
+      newNullRobot(SnowRobot.class)
     ).forEach(Robot::test);
   }
 }
@@ -58,6 +56,6 @@ public static void main(String[] args) {
 SnowBee can clear the roof
 SnowBee clearing roof
 [Null Robot]
-Robot name: SnowRemovalRobot NullRobot
-Robot model: SnowRemovalRobot NullRobot
+Robot name: SnowRobot NullRobot
+Robot model: SnowRobot NullRobot
 */
diff --git a/typeinfo/Operation.java b/typeinfo/Operation.java
index dc8722301..d3013aca9 100644
--- a/typeinfo/Operation.java
+++ b/typeinfo/Operation.java
@@ -1,5 +1,5 @@
 // typeinfo/Operation.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.function.*;
diff --git a/typeinfo/Person.java b/typeinfo/Person.java
index 7a9807c0c..77dc091e0 100644
--- a/typeinfo/Person.java
+++ b/typeinfo/Person.java
@@ -1,5 +1,5 @@
 // typeinfo/Person.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Optional with regular classes
@@ -25,8 +25,7 @@ class Person {
   }
   Person(String last) { this(null, last, null); }
   Person() { this(null, null, null); }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     if(empty)
       return "";
     return (first.orElse("") +
diff --git a/typeinfo/PetCount.java b/typeinfo/PetCount.java
deleted file mode 100644
index 53438d29a..000000000
--- a/typeinfo/PetCount.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// typeinfo/PetCount.java
-// (c)2020 MindView LLC: see Copyright.txt
-// We make no guarantees that this code is fit for any purpose.
-// Visit http://OnJava8.com for more book information.
-// Using instanceof
-import typeinfo.pets.*;
-import java.util.*;
-
-public class PetCount {
-  static class Counter extends HashMap {
-    public void count(String type) {
-      Integer quantity = get(type);
-      if(quantity == null)
-        put(type, 1);
-      else
-        put(type, quantity + 1);
-    }
-  }
-  public static void
-  countPets(PetCreator creator) {
-    Counter counter = new Counter();
-    for(Pet pet : Pets.array(20)) {
-      // List each individual pet:
-      System.out.print(
-        pet.getClass().getSimpleName() + " ");
-      if(pet instanceof Pet)
-        counter.count("Pet");
-      if(pet instanceof Dog)
-        counter.count("Dog");
-      if(pet instanceof Mutt)
-        counter.count("Mutt");
-      if(pet instanceof Pug)
-        counter.count("Pug");
-      if(pet instanceof Cat)
-        counter.count("Cat");
-      if(pet instanceof EgyptianMau)
-        counter.count("EgyptianMau");
-      if(pet instanceof Manx)
-        counter.count("Manx");
-      if(pet instanceof Cymric)
-        counter.count("Cymric");
-      if(pet instanceof Rodent)
-        counter.count("Rodent");
-      if(pet instanceof Rat)
-        counter.count("Rat");
-      if(pet instanceof Mouse)
-        counter.count("Mouse");
-      if(pet instanceof Hamster)
-        counter.count("Hamster");
-    }
-    // Show the counts:
-    System.out.println();
-    System.out.println(counter);
-  }
-  public static void main(String[] args) {
-    countPets(new ForNameCreator());
-  }
-}
-/* Output:
-Rat Manx Cymric Mutt Pug Cymric Pug Manx Cymric Rat
-EgyptianMau Hamster EgyptianMau Mutt Mutt Cymric Mouse
-Pug Mouse Cymric
-{EgyptianMau=2, Pug=3, Rat=2, Cymric=5, Mouse=2, Cat=9,
-Manx=7, Rodent=5, Mutt=3, Dog=6, Pet=20, Hamster=1}
-*/
diff --git a/typeinfo/PetCounter.java b/typeinfo/PetCounter.java
new file mode 100644
index 000000000..bc0642f5e
--- /dev/null
+++ b/typeinfo/PetCounter.java
@@ -0,0 +1,64 @@
+// typeinfo/PetCounter.java
+// (c)2021 MindView LLC: see Copyright.txt
+// We make no guarantees that this code is fit for any purpose.
+// Visit http://OnJava8.com for more book information.
+// Using instanceof
+import typeinfo.pets.*;
+import java.util.*;
+
+public class PetCounter {
+  static class Counter extends HashMap {
+    public void count(String type) {
+      Integer quantity = get(type);
+      if(quantity == null)
+        put(type, 1);
+      else
+        put(type, quantity + 1);
+    }
+  }
+  private Counter counter = new Counter();
+  private void countPet(Pet pet) {
+    System.out.print(
+      pet.getClass().getSimpleName() + " ");
+    if(pet instanceof Pet)
+      counter.count("Pet");
+    if(pet instanceof Dog)
+      counter.count("Dog");
+    if(pet instanceof Mutt)
+      counter.count("Mutt");
+    if(pet instanceof Pug)
+      counter.count("Pug");
+    if(pet instanceof Cat)
+      counter.count("Cat");
+    if(pet instanceof EgyptianMau)
+      counter.count("EgyptianMau");
+    if(pet instanceof Manx)
+      counter.count("Manx");
+    if(pet instanceof Cymric)
+      counter.count("Cymric");
+    if(pet instanceof Rodent)
+      counter.count("Rodent");
+    if(pet instanceof Rat)
+      counter.count("Rat");
+    if(pet instanceof Mouse)
+      counter.count("Mouse");
+    if(pet instanceof Hamster)
+      counter.count("Hamster");
+  }
+  public void count(Creator creator) {
+    creator.stream().limit(20)
+      .forEach(pet -> countPet(pet));
+    System.out.println();
+    System.out.println(counter);
+  }
+  public static void main(String[] args) {
+    new PetCounter().count(new ForNamePetCreator());
+  }
+}
+/* Output:
+Rat Manx Cymric Mutt Pug Cymric Pug Manx Cymric Rat
+EgyptianMau Hamster EgyptianMau Mutt Mutt Cymric Mouse
+Pug Mouse Cymric
+{EgyptianMau=2, Pug=3, Rat=2, Cymric=5, Mouse=2, Cat=9,
+Manx=7, Rodent=5, Mutt=3, Dog=6, Pet=20, Hamster=1}
+*/
diff --git a/typeinfo/PetCount2.java b/typeinfo/PetCounter2.java
similarity index 75%
rename from typeinfo/PetCount2.java
rename to typeinfo/PetCounter2.java
index c65e01388..1293a1075 100644
--- a/typeinfo/PetCount2.java
+++ b/typeinfo/PetCounter2.java
@@ -1,12 +1,12 @@
-// typeinfo/PetCount2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// typeinfo/PetCounter2.java
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
 
-public class PetCount2 {
+public class PetCounter2 {
   public static void main(String[] args) {
-    PetCount.countPets(Pets.CREATOR);
+    new PetCounter().count(new PetCreator());
   }
 }
 /* Output:
diff --git a/typeinfo/PetCount3.java b/typeinfo/PetCounter3.java
similarity index 75%
rename from typeinfo/PetCount3.java
rename to typeinfo/PetCounter3.java
index 5b08fb660..ed4c51bd6 100644
--- a/typeinfo/PetCount3.java
+++ b/typeinfo/PetCounter3.java
@@ -1,5 +1,5 @@
-// typeinfo/PetCount3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// typeinfo/PetCounter3.java
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using isInstance()
@@ -8,12 +8,12 @@
 import onjava.*;
 import typeinfo.pets.*;
 
-public class PetCount3 {
+public class PetCounter3 {
   static class Counter extends
-  LinkedHashMap, Integer> {
+  HashMap, Integer> {
     Counter() {
-      super(LiteralPetCreator.ALL_TYPES.stream()
-        .map(lpc -> Pair.make(lpc, 0))
+      super(PetCreator.ALL_TYPES.stream()
+        .map(type -> Pair.make(type, 0))
         .collect(
           Collectors.toMap(Pair::key, Pair::value)));
     }
@@ -24,8 +24,7 @@ public void count(Pet pet) {
         .forEach(pair ->
           put(pair.getKey(), pair.getValue() + 1));
     }
-    @Override
-    public String toString() {
+    @Override public String toString() {
       String result = entrySet().stream()
         .map(pair -> String.format("%s=%s",
           pair.getKey().getSimpleName(),
@@ -36,7 +35,7 @@ public String toString() {
   }
   public static void main(String[] args) {
     Counter petCount = new Counter();
-    Pets.stream()
+    new PetCreator().stream()
       .limit(20)
       .peek(petCount::count)
       .forEach(p -> System.out.print(
@@ -48,6 +47,7 @@ public static void main(String[] args) {
 Rat Manx Cymric Mutt Pug Cymric Pug Manx Cymric Rat
 EgyptianMau Hamster EgyptianMau Mutt Mutt Cymric Mouse
 Pug Mouse Cymric
-{Rat=2, Pug=3, Mutt=3, Mouse=2, Cat=9, Dog=6, Cymric=5,
-EgyptianMau=2, Rodent=5, Hamster=1, Manx=7, Pet=20}
+{EgyptianMau=2, Mouse=2, Pet=20, Cymric=5, Rat=2,
+Dog=6, Mutt=3, Hamster=1, Cat=9, Manx=7, Rodent=5,
+Pug=3}
 */
diff --git a/typeinfo/PetCount4.java b/typeinfo/PetCounter4.java
similarity index 70%
rename from typeinfo/PetCount4.java
rename to typeinfo/PetCounter4.java
index 1ea4873ac..a7058c927 100644
--- a/typeinfo/PetCount4.java
+++ b/typeinfo/PetCounter4.java
@@ -1,14 +1,14 @@
-// typeinfo/PetCount4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// typeinfo/PetCounter4.java
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import typeinfo.pets.*;
 import onjava.*;
 
-public class PetCount4 {
+public class PetCounter4 {
   public static void main(String[] args) {
     TypeCounter counter = new TypeCounter(Pet.class);
-    Pets.stream()
+    new PetCreator().stream()
       .limit(20)
       .peek(counter::count)
       .forEach(p -> System.out.print(
@@ -20,7 +20,7 @@ public static void main(String[] args) {
 Rat Manx Cymric Mutt Pug Cymric Pug Manx Cymric Rat
 EgyptianMau Hamster EgyptianMau Mutt Mutt Cymric Mouse
 Pug Mouse Cymric
-{Dog=6, Manx=7, Cat=9, Rodent=5, Hamster=1, Rat=2,
-Pug=3, Mutt=3, Cymric=5, EgyptianMau=2, Pet=20,
-Mouse=2}
+{Rodent=5, Mouse=2, Hamster=1, Cymric=5, Dog=6,
+EgyptianMau=2, Pet=20, Rat=2, Pug=3, Manx=7, Cat=9,
+Mutt=3}
 */
diff --git a/typeinfo/Position.java b/typeinfo/Position.java
index ca81643b0..44df82691 100644
--- a/typeinfo/Position.java
+++ b/typeinfo/Position.java
@@ -1,5 +1,5 @@
 // typeinfo/Position.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
@@ -28,8 +28,7 @@ public void setPerson(Person newPerson) {
     person = Optional.ofNullable(newPerson)
       .orElse(new Person());
   }
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return "Position: " + title +
       ", Employee: " + person;
   }
diff --git a/typeinfo/RegisteredFactories.java b/typeinfo/RegisteredFactories.java
index 7708cc4ee..bc7d05457 100644
--- a/typeinfo/RegisteredFactories.java
+++ b/typeinfo/RegisteredFactories.java
@@ -1,5 +1,5 @@
 // typeinfo/RegisteredFactories.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Registering Factories in the base class
@@ -8,8 +8,7 @@
 import java.util.stream.*;
 
 class Part implements Supplier {
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName();
   }
   static List> prototypes =
@@ -23,7 +22,7 @@ public String toString() {
       new GeneratorBelt()
     );
   private static Random rand = new Random(47);
-  public Part get() {
+  @Override public Part get() {
     int n = rand.nextInt(prototypes.size());
     return prototypes.get(n).get();
   }
@@ -42,8 +41,7 @@ class AirFilter extends Filter {
 }
 
 class CabinAirFilter extends Filter {
-  @Override
-  public CabinAirFilter get() {
+  @Override public CabinAirFilter get() {
     return new CabinAirFilter();
   }
 }
@@ -61,15 +59,13 @@ class FanBelt extends Belt {
 }
 
 class GeneratorBelt extends Belt {
-  @Override
-  public GeneratorBelt get() {
+  @Override public GeneratorBelt get() {
     return new GeneratorBelt();
   }
 }
 
 class PowerSteeringBelt extends Belt {
-  @Override
-  public PowerSteeringBelt get() {
+  @Override public PowerSteeringBelt get() {
     return new PowerSteeringBelt();
   }
 }
diff --git a/typeinfo/Robot.java b/typeinfo/Robot.java
index 803ee9fe2..ed7adc3f9 100644
--- a/typeinfo/Robot.java
+++ b/typeinfo/Robot.java
@@ -1,5 +1,5 @@
 // typeinfo/Robot.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import onjava.*;
diff --git a/typeinfo/SelectingMethods.java b/typeinfo/SelectingMethods.java
index d87e928bc..eb679194b 100644
--- a/typeinfo/SelectingMethods.java
+++ b/typeinfo/SelectingMethods.java
@@ -1,5 +1,5 @@
 // typeinfo/SelectingMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Looking for particular methods in a dynamic proxy
@@ -10,8 +10,7 @@ class MethodSelector implements InvocationHandler {
   MethodSelector(Object proxied) {
     this.proxied = proxied;
   }
-  @Override
-  public Object
+  @Override public Object
   invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
     if(method.getName().equals("interesting"))
@@ -29,20 +28,16 @@ interface SomeMethods {
 }
 
 class Implementation implements SomeMethods {
-  @Override
-  public void boring1() {
+  @Override public void boring1() {
     System.out.println("boring1");
   }
-  @Override
-  public void boring2() {
+  @Override public void boring2() {
     System.out.println("boring2");
   }
-  @Override
-  public void interesting(String arg) {
+  @Override public void interesting(String arg) {
     System.out.println("interesting " + arg);
   }
-  @Override
-  public void boring3() {
+  @Override public void boring3() {
     System.out.println("boring3");
   }
 }
diff --git a/typeinfo/Shapes.java b/typeinfo/Shapes.java
index 34a2bc561..ec9296504 100644
--- a/typeinfo/Shapes.java
+++ b/typeinfo/Shapes.java
@@ -1,28 +1,32 @@
 // typeinfo/Shapes.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.stream.*;
 
 abstract class Shape {
-  void draw() { System.out.println(this + ".draw()"); }
-  @Override
-  public abstract String toString();
+  void draw() {
+    System.out.println(this + ".draw()");
+  }
+  @Override public abstract String toString();
 }
 
 class Circle extends Shape {
-  @Override
-  public String toString() { return "Circle"; }
+  @Override public String toString() {
+    return "Circle";
+  }
 }
 
 class Square extends Shape {
-  @Override
-  public String toString() { return "Square"; }
+  @Override public String toString() {
+    return "Square";
+  }
 }
 
 class Triangle extends Shape {
-  @Override
-  public String toString() { return "Triangle"; }
+  @Override public String toString() {
+    return "Triangle";
+  }
 }
 
 public class Shapes {
diff --git a/typeinfo/ShowMethods.java b/typeinfo/ShowMethods.java
index be1b635b0..ad4f16eb5 100644
--- a/typeinfo/ShowMethods.java
+++ b/typeinfo/ShowMethods.java
@@ -1,5 +1,5 @@
 // typeinfo/ShowMethods.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using reflection to show all the methods of a class,
@@ -56,11 +56,11 @@ public static void main(String[] args) {
 }
 /* Output:
 public static void main(String[])
-public final void wait() throws InterruptedException
 public final void wait(long,int) throws
 InterruptedException
 public final native void wait(long) throws
 InterruptedException
+public final void wait() throws InterruptedException
 public boolean equals(Object)
 public String toString()
 public native int hashCode()
diff --git a/typeinfo/SimpleDynamicProxy.java b/typeinfo/SimpleDynamicProxy.java
index bece57f8a..544b780b2 100644
--- a/typeinfo/SimpleDynamicProxy.java
+++ b/typeinfo/SimpleDynamicProxy.java
@@ -1,5 +1,5 @@
 // typeinfo/SimpleDynamicProxy.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.lang.reflect.*;
@@ -9,8 +9,7 @@ class DynamicProxyHandler implements InvocationHandler {
   DynamicProxyHandler(Object proxied) {
     this.proxied = proxied;
   }
-  @Override
-  public Object
+  @Override public Object
   invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
     System.out.println(
@@ -47,7 +46,7 @@ public static void main(String[] args) {
 doSomething
 **** proxy: class $Proxy0, method: public abstract void
 Interface.somethingElse(java.lang.String), args:
-[Ljava.lang.Object;@6bc7c054
+[Ljava.lang.Object;@1b84c92
   bonobo
 somethingElse bonobo
 */
diff --git a/typeinfo/SimpleProxyDemo.java b/typeinfo/SimpleProxyDemo.java
index 24c3c2c25..1e5eea41e 100644
--- a/typeinfo/SimpleProxyDemo.java
+++ b/typeinfo/SimpleProxyDemo.java
@@ -1,5 +1,5 @@
 // typeinfo/SimpleProxyDemo.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
@@ -9,12 +9,10 @@ interface Interface {
 }
 
 class RealObject implements Interface {
-  @Override
-  public void doSomething() {
+  @Override public void doSomething() {
     System.out.println("doSomething");
   }
-  @Override
-  public void somethingElse(String arg) {
+  @Override public void somethingElse(String arg) {
     System.out.println("somethingElse " + arg);
   }
 }
@@ -24,13 +22,11 @@ class SimpleProxy implements Interface {
   SimpleProxy(Interface proxied) {
     this.proxied = proxied;
   }
-  @Override
-  public void doSomething() {
+  @Override public void doSomething() {
     System.out.println("SimpleProxy doSomething");
     proxied.doSomething();
   }
-  @Override
-  public void somethingElse(String arg) {
+  @Override public void somethingElse(String arg) {
     System.out.println(
       "SimpleProxy somethingElse " + arg);
     proxied.somethingElse(arg);
diff --git a/typeinfo/SnowRemovalRobot.java b/typeinfo/SnowRobot.java
similarity index 73%
rename from typeinfo/SnowRemovalRobot.java
rename to typeinfo/SnowRobot.java
index af5b46cd9..b28b1f7fb 100644
--- a/typeinfo/SnowRemovalRobot.java
+++ b/typeinfo/SnowRobot.java
@@ -1,18 +1,18 @@
-// typeinfo/SnowRemovalRobot.java
-// (c)2020 MindView LLC: see Copyright.txt
+// typeinfo/SnowRobot.java
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
 
-public class SnowRemovalRobot implements Robot {
+public class SnowRobot implements Robot {
   private String name;
-  public SnowRemovalRobot(String name) {
+  public SnowRobot(String name) {
     this.name = name;
   }
-  @Override
-  public String name() { return name; }
-  @Override
-  public String model() { return "SnowBot Series 11"; }
+  @Override public String name() { return name; }
+  @Override public String model() {
+    return "SnowBot Series 11";
+  }
   private List ops = Arrays.asList(
     new Operation(
       () -> name + " can shovel snow",
@@ -25,9 +25,10 @@ public SnowRemovalRobot(String name) {
       () -> name + " can clear the roof",
       () -> System.out.println(
         name + " clearing roof")));
+  @Override
   public List operations() { return ops; }
   public static void main(String[] args) {
-    Robot.test(new SnowRemovalRobot("Slusher"));
+    Robot.test(new SnowRobot("Slusher"));
   }
 }
 /* Output:
diff --git a/typeinfo/Staff.java b/typeinfo/Staff.java
index 569e598f7..204280343 100644
--- a/typeinfo/Staff.java
+++ b/typeinfo/Staff.java
@@ -1,5 +1,5 @@
 // typeinfo/Staff.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import java.util.*;
diff --git a/typeinfo/SweetShop.java b/typeinfo/SweetShop.java
index f85b8c3f9..a046b281c 100644
--- a/typeinfo/SweetShop.java
+++ b/typeinfo/SweetShop.java
@@ -1,5 +1,5 @@
 // typeinfo/SweetShop.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Examination of the way the class loader works
diff --git a/typeinfo/WildcardClassReferences.java b/typeinfo/WildcardClassReferences.java
index 32d75e868..066b15d5d 100644
--- a/typeinfo/WildcardClassReferences.java
+++ b/typeinfo/WildcardClassReferences.java
@@ -1,5 +1,5 @@
 // typeinfo/WildcardClassReferences.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 
diff --git a/typeinfo/interfacea/A.java b/typeinfo/interfacea/A.java
index 2ebb99d32..359fb98ef 100644
--- a/typeinfo/interfacea/A.java
+++ b/typeinfo/interfacea/A.java
@@ -1,5 +1,5 @@
 // typeinfo/interfacea/A.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.interfacea;
diff --git a/typeinfo/packageaccess/HiddenC.java b/typeinfo/packageaccess/HiddenC.java
index 9fb8ffde9..53277281e 100644
--- a/typeinfo/packageaccess/HiddenC.java
+++ b/typeinfo/packageaccess/HiddenC.java
@@ -1,13 +1,12 @@
 // typeinfo/packageaccess/HiddenC.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.packageaccess;
 import typeinfo.interfacea.*;
 
 class C implements A {
-  @Override
-  public void f() {
+  @Override public void f() {
     System.out.println("public C.f()");
   }
   public void g() {
diff --git a/typeinfo/pets/Cat.java b/typeinfo/pets/Cat.java
index 75781fd7f..68594e746 100644
--- a/typeinfo/pets/Cat.java
+++ b/typeinfo/pets/Cat.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Cat.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Creator.java b/typeinfo/pets/Creator.java
new file mode 100644
index 000000000..e3703e76c
--- /dev/null
+++ b/typeinfo/pets/Creator.java
@@ -0,0 +1,38 @@
+// typeinfo/pets/Creator.java
+// (c)2021 MindView LLC: see Copyright.txt
+// We make no guarantees that this code is fit for any purpose.
+// Visit http://OnJava8.com for more book information.
+// Creates random Pets
+package typeinfo.pets;
+import java.util.*;
+import java.util.function.*;
+import java.util.stream.*;
+import java.lang.reflect.InvocationTargetException;
+
+public abstract class Creator implements Supplier {
+  private Random rand = new Random(47);
+  // The different types of Pet to create:
+  public abstract List> types();
+  @Override public Pet get() { // Create one random Pet
+    int n = rand.nextInt(types().size());
+    try {
+      return types().get(n)
+        .getConstructor().newInstance();
+    } catch(InstantiationException |
+            NoSuchMethodException |
+            InvocationTargetException |
+            IllegalAccessException e) {
+      throw new RuntimeException(e);
+    }
+  }
+  public Stream stream() {
+    return Stream.generate(this);
+  }
+  public Pet[] array(int size) {
+    return stream().limit(size).toArray(Pet[]::new);
+  }
+  public List list(int size) {
+    return stream().limit(size)
+      .collect(Collectors.toCollection(ArrayList::new));
+  }
+}
diff --git a/typeinfo/pets/Cymric.java b/typeinfo/pets/Cymric.java
index fd86fa953..4835e4a25 100644
--- a/typeinfo/pets/Cymric.java
+++ b/typeinfo/pets/Cymric.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Cymric.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Dog.java b/typeinfo/pets/Dog.java
index 68f43a322..2e5b9a8ab 100644
--- a/typeinfo/pets/Dog.java
+++ b/typeinfo/pets/Dog.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Dog.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/EgyptianMau.java b/typeinfo/pets/EgyptianMau.java
index adbdfbb18..e728de938 100644
--- a/typeinfo/pets/EgyptianMau.java
+++ b/typeinfo/pets/EgyptianMau.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/EgyptianMau.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/ForNameCreator.java b/typeinfo/pets/ForNamePetCreator.java
similarity index 82%
rename from typeinfo/pets/ForNameCreator.java
rename to typeinfo/pets/ForNamePetCreator.java
index 29351efa0..6e35740d2 100644
--- a/typeinfo/pets/ForNameCreator.java
+++ b/typeinfo/pets/ForNamePetCreator.java
@@ -1,11 +1,11 @@
-// typeinfo/pets/ForNameCreator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// typeinfo/pets/ForNamePetCreator.java
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
 import java.util.*;
 
-public class ForNameCreator extends PetCreator {
+public class ForNamePetCreator extends Creator {
   private static List> types =
     new ArrayList<>();
   // Types you want randomly created:
@@ -30,8 +30,7 @@ private static void loader() {
     }
   }
   static { loader(); }
-  @Override
-  public List> types() {
+  @Override public List> types() {
     return types;
   }
 }
diff --git a/typeinfo/pets/Hamster.java b/typeinfo/pets/Hamster.java
index 8408ef623..9763b30b4 100644
--- a/typeinfo/pets/Hamster.java
+++ b/typeinfo/pets/Hamster.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Hamster.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Individual.java b/typeinfo/pets/Individual.java
index e3c87dacb..1783621db 100644
--- a/typeinfo/pets/Individual.java
+++ b/typeinfo/pets/Individual.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Individual.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
@@ -13,23 +13,19 @@
   public Individual(String name) { this.name = name; }
   // 'name' is optional:
   public Individual() {}
-  @Override
-  public String toString() {
+  @Override public String toString() {
     return getClass().getSimpleName() +
       (name == null ? "" : " " + name);
   }
   public long id() { return id; }
-  @Override
-  public boolean equals(Object o) {
+  @Override public boolean equals(Object o) {
     return o instanceof Individual &&
       Objects.equals(id, ((Individual)o).id);
   }
-  @Override
-  public int hashCode() {
+  @Override public int hashCode() {
     return Objects.hash(name, id);
   }
-  @Override
-  public int compareTo(Individual arg) {
+  @Override public int compareTo(Individual arg) {
     // Compare by class name first:
     String first = getClass().getSimpleName();
     String argFirst = arg.getClass().getSimpleName();
diff --git a/typeinfo/pets/LiteralPetCreator.java b/typeinfo/pets/LiteralPetCreator.java
deleted file mode 100644
index 398baac8c..000000000
--- a/typeinfo/pets/LiteralPetCreator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// typeinfo/pets/LiteralPetCreator.java
-// (c)2020 MindView LLC: see Copyright.txt
-// We make no guarantees that this code is fit for any purpose.
-// Visit http://OnJava8.com for more book information.
-// Using class literals
-// {java typeinfo.pets.LiteralPetCreator}
-package typeinfo.pets;
-import java.util.*;
-
-public class LiteralPetCreator extends PetCreator {
-  // No try block needed.
-  @SuppressWarnings("unchecked")
-  public static
-  final List> ALL_TYPES =
-    Collections.unmodifiableList(Arrays.asList(
-      Pet.class, Dog.class, Cat.class, Rodent.class,
-      Mutt.class, Pug.class, EgyptianMau.class,
-      Manx.class, Cymric.class, Rat.class,
-      Mouse.class, Hamster.class));
-  // Types for random creation:
-  private static final
-  List> TYPES =
-    ALL_TYPES.subList(ALL_TYPES.indexOf(Mutt.class),
-      ALL_TYPES.size());
-  @Override
-  public List> types() {
-    return TYPES;
-  }
-  public static void main(String[] args) {
-    System.out.println(TYPES);
-  }
-}
-/* Output:
-[class typeinfo.pets.Mutt, class typeinfo.pets.Pug,
-class typeinfo.pets.EgyptianMau, class
-typeinfo.pets.Manx, class typeinfo.pets.Cymric, class
-typeinfo.pets.Rat, class typeinfo.pets.Mouse, class
-typeinfo.pets.Hamster]
-*/
diff --git a/typeinfo/pets/Manx.java b/typeinfo/pets/Manx.java
index 6a5534b13..bf949bc0e 100644
--- a/typeinfo/pets/Manx.java
+++ b/typeinfo/pets/Manx.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Manx.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Mouse.java b/typeinfo/pets/Mouse.java
index bbb97cda0..07a7aac8f 100644
--- a/typeinfo/pets/Mouse.java
+++ b/typeinfo/pets/Mouse.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Mouse.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Mutt.java b/typeinfo/pets/Mutt.java
index f51814b93..be99e73b2 100644
--- a/typeinfo/pets/Mutt.java
+++ b/typeinfo/pets/Mutt.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Mutt.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Person.java b/typeinfo/pets/Person.java
index 4dcfff2ce..f2055e649 100644
--- a/typeinfo/pets/Person.java
+++ b/typeinfo/pets/Person.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Person.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Pet.java b/typeinfo/pets/Pet.java
index dcbfd4ab7..b4c934aca 100644
--- a/typeinfo/pets/Pet.java
+++ b/typeinfo/pets/Pet.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Pet.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/PetCreator.java b/typeinfo/pets/PetCreator.java
index 76909aa9a..3541160b4 100644
--- a/typeinfo/pets/PetCreator.java
+++ b/typeinfo/pets/PetCreator.java
@@ -1,28 +1,42 @@
 // typeinfo/pets/PetCreator.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// Creates random sequences of Pets
+// Using class literals
+// {java typeinfo.pets.PetCreator}
 package typeinfo.pets;
 import java.util.*;
-import java.util.function.*;
-import java.lang.reflect.InvocationTargetException;
 
-public abstract
-class PetCreator implements Supplier {
-  private Random rand = new Random(47);
-  // The List of the different types of Pet to create:
-  public abstract List> types();
-  public Pet get() { // Create one random Pet
-    int n = rand.nextInt(types().size());
-    try {
-      return types().get(n)
-             .getConstructor().newInstance();
-    } catch(InstantiationException |
-            NoSuchMethodException |
-            InvocationTargetException |
-            IllegalAccessException e) {
-      throw new RuntimeException(e);
-    }
+public class PetCreator extends Creator {
+  // No try block needed.
+  public static final
+  List> ALL_TYPES =
+    Collections.unmodifiableList(Arrays.asList(
+      Pet.class, Dog.class, Cat.class, Rodent.class,
+      Mutt.class, Pug.class, EgyptianMau.class,
+      Manx.class, Cymric.class, Rat.class,
+      Mouse.class, Hamster.class));
+  // Types for random creation:
+  private static final
+  List> TYPES =
+    ALL_TYPES.subList(
+      ALL_TYPES.indexOf(Mutt.class),
+      ALL_TYPES.size());
+  @Override
+  public List> types() {
+    return TYPES;
+  }
+  public static void main(String[] args) {
+    System.out.println(TYPES);
+    List pets = new PetCreator().list(7);
+    System.out.println(pets);
   }
 }
+/* Output:
+[class typeinfo.pets.Mutt, class typeinfo.pets.Pug,
+class typeinfo.pets.EgyptianMau, class
+typeinfo.pets.Manx, class typeinfo.pets.Cymric, class
+typeinfo.pets.Rat, class typeinfo.pets.Mouse, class
+typeinfo.pets.Hamster]
+[Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug]
+*/
diff --git a/typeinfo/pets/Pets.java b/typeinfo/pets/Pets.java
deleted file mode 100644
index be3037a16..000000000
--- a/typeinfo/pets/Pets.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// typeinfo/pets/Pets.java
-// (c)2020 MindView LLC: see Copyright.txt
-// We make no guarantees that this code is fit for any purpose.
-// Visit http://OnJava8.com for more book information.
-// Facade to produce a default PetCreator
-package typeinfo.pets;
-import java.util.*;
-import java.util.stream.*;
-
-public class Pets {
-  public static final PetCreator CREATOR =
-    new LiteralPetCreator();
-  public static Pet get() {
-    return CREATOR.get();
-  }
-  public static Pet[] array(int size) {
-    Pet[] result = new Pet[size];
-    for(int i = 0; i < size; i++)
-      result[i] = CREATOR.get();
-    return result;
-  }
-  public static List list(int size) {
-    List result = new ArrayList<>();
-    Collections.addAll(result, array(size));
-    return result;
-  }
-  public static Stream stream() {
-    return Stream.generate(CREATOR);
-  }
-}
diff --git a/typeinfo/pets/Pug.java b/typeinfo/pets/Pug.java
index 9d8ab4670..83da95189 100644
--- a/typeinfo/pets/Pug.java
+++ b/typeinfo/pets/Pug.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Pug.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Rat.java b/typeinfo/pets/Rat.java
index 2ce5534b8..68a346fb2 100644
--- a/typeinfo/pets/Rat.java
+++ b/typeinfo/pets/Rat.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Rat.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/pets/Rodent.java b/typeinfo/pets/Rodent.java
index 7b998d0aa..cab79e752 100644
--- a/typeinfo/pets/Rodent.java
+++ b/typeinfo/pets/Rodent.java
@@ -1,5 +1,5 @@
 // typeinfo/pets/Rodent.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package typeinfo.pets;
diff --git a/typeinfo/toys/GenericToyTest.java b/typeinfo/toys/GenericToyTest.java
index 7dc016cdc..930fbc779 100644
--- a/typeinfo/toys/GenericToyTest.java
+++ b/typeinfo/toys/GenericToyTest.java
@@ -1,5 +1,5 @@
 // typeinfo/toys/GenericToyTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Testing class Class
@@ -7,17 +7,16 @@
 package typeinfo.toys;
 
 public class GenericToyTest {
-  @SuppressWarnings("deprecation")
   public static void
   main(String[] args) throws Exception {
-    Class ftClass = FancyToy.class;
+    Class ftc = FancyToy.class;
     // Produces exact type:
-    FancyToy fancyToy = ftClass.newInstance();
-    Class up =
-      ftClass.getSuperclass();
+    FancyToy fancyToy =
+      ftc.getConstructor().newInstance();
+    Class up = ftc.getSuperclass();
     // This won't compile:
-    // Class up2 = ftClass.getSuperclass();
+    // Class up2 = ftc.getSuperclass();
     // Only produces Object:
-    Object obj = up.newInstance();
+    Object obj = up.getConstructor().newInstance();
   }
 }
diff --git a/typeinfo/toys/ToyTest.java b/typeinfo/toys/ToyTest.java
index e4e5e92db..f67261f42 100644
--- a/typeinfo/toys/ToyTest.java
+++ b/typeinfo/toys/ToyTest.java
@@ -1,5 +1,5 @@
 // typeinfo/toys/ToyTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Testing class Class
@@ -14,13 +14,13 @@ interface Shoots {}
 class Toy {
   // Comment out the following no-arg
   // constructor to see NoSuchMethodError
-  Toy() {}
-  Toy(int i) {}
+  public Toy() {}
+  public Toy(int i) {}
 }
 
 class FancyToy extends Toy
 implements HasBatteries, Waterproof, Shoots {
-  FancyToy() { super(1); }
+  public FancyToy() { super(1); }
 }
 
 public class ToyTest {
@@ -47,7 +47,7 @@ public static void main(String[] args) {
     Class up = c.getSuperclass();
     Object obj = null;
     try {
-      // Requires no-arg constructor:
+      // Requires public no-arg constructor:
       obj = up.newInstance();
     } catch(Exception e) {
       throw new
diff --git a/validating/Assert1.java b/validating/Assert1.java
index 013a72f6f..53dbfda30 100644
--- a/validating/Assert1.java
+++ b/validating/Assert1.java
@@ -1,5 +1,5 @@
 // validating/Assert1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Non-informative style of assert
diff --git a/validating/Assert2.java b/validating/Assert2.java
index 61b4827d7..cdc9f89dd 100644
--- a/validating/Assert2.java
+++ b/validating/Assert2.java
@@ -1,5 +1,5 @@
 // validating/Assert2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assert with an information-expression
diff --git a/validating/BadMicroBenchmark.java b/validating/BadMicroBenchmark.java
index 2634e67c9..5e1ddbd7c 100644
--- a/validating/BadMicroBenchmark.java
+++ b/validating/BadMicroBenchmark.java
@@ -1,5 +1,5 @@
 // validating/BadMicroBenchmark.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ExcludeFromTravisCI}
@@ -24,6 +24,5 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-setAll: 272
-parallelSetAll: 301
+Insufficient memory
 */
diff --git a/validating/BadMicroBenchmark2.java b/validating/BadMicroBenchmark2.java
index 123036a0c..aab204bfb 100644
--- a/validating/BadMicroBenchmark2.java
+++ b/validating/BadMicroBenchmark2.java
@@ -1,5 +1,5 @@
 // validating/BadMicroBenchmark2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Relying on a common resource
@@ -28,8 +28,8 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-parallelSetAll: 1147
-setAll: 174
-parallelSetAll: 86
-setAll: 39
+parallelSetAll: 1008
+setAll: 294
+parallelSetAll: 78
+setAll: 88
 */
diff --git a/validating/CircularQueue.java b/validating/CircularQueue.java
index 405e44101..b42509cf9 100644
--- a/validating/CircularQueue.java
+++ b/validating/CircularQueue.java
@@ -1,5 +1,5 @@
 // validating/CircularQueue.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstration of Design by Contract (DbC)
diff --git a/validating/CircularQueueException.java b/validating/CircularQueueException.java
index 142b8ece2..c30710df0 100644
--- a/validating/CircularQueueException.java
+++ b/validating/CircularQueueException.java
@@ -1,5 +1,5 @@
 // validating/CircularQueueException.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/CountedList.java b/validating/CountedList.java
index 6c780f216..30de1acc5 100644
--- a/validating/CountedList.java
+++ b/validating/CountedList.java
@@ -1,5 +1,5 @@
 // validating/CountedList.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Keeps track of how many of itself are created.
diff --git a/validating/GuavaAssertions.java b/validating/GuavaAssertions.java
index a499f079b..85c724f6f 100644
--- a/validating/GuavaAssertions.java
+++ b/validating/GuavaAssertions.java
@@ -1,5 +1,5 @@
 // validating/GuavaAssertions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Assertions that are always enabled.
diff --git a/validating/GuavaPreconditions.java b/validating/GuavaPreconditions.java
index 3cfc66ae9..f8f9c702a 100644
--- a/validating/GuavaPreconditions.java
+++ b/validating/GuavaPreconditions.java
@@ -1,5 +1,5 @@
 // validating/GuavaPreconditions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Demonstrating Guava Preconditions
diff --git a/validating/Inverter1.java b/validating/Inverter1.java
index 8ef828d6e..78ec38dc1 100644
--- a/validating/Inverter1.java
+++ b/validating/Inverter1.java
@@ -1,9 +1,10 @@
 // validating/Inverter1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
 
 public class Inverter1 implements StringInverter {
+  @Override
   public String invert(String str) { return str; }
 }
diff --git a/validating/Inverter2.java b/validating/Inverter2.java
index 3fb862fd4..5ea22f6fd 100644
--- a/validating/Inverter2.java
+++ b/validating/Inverter2.java
@@ -1,12 +1,12 @@
 // validating/Inverter2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
 import static java.lang.Character.*;
 
 public class Inverter2 implements StringInverter {
-  public String invert(String str) {
+  @Override public String invert(String str) {
     String result = "";
     for(int i = 0; i < str.length(); i++) {
       char c = str.charAt(i);
diff --git a/validating/Inverter3.java b/validating/Inverter3.java
index 4bd53c82a..eecf815e3 100644
--- a/validating/Inverter3.java
+++ b/validating/Inverter3.java
@@ -1,12 +1,12 @@
 // validating/Inverter3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
 import static java.lang.Character.*;
 
 public class Inverter3 implements StringInverter {
-  public String invert(String str) {
+  @Override public String invert(String str) {
     if(str.length() > 30)
       throw new RuntimeException("argument too long!");
     String result = "";
diff --git a/validating/Inverter4.java b/validating/Inverter4.java
index 0b7870594..4bb15f12f 100644
--- a/validating/Inverter4.java
+++ b/validating/Inverter4.java
@@ -1,5 +1,5 @@
 // validating/Inverter4.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
@@ -9,7 +9,7 @@ public class Inverter4 implements StringInverter {
   static final String ALLOWED =
     "abcdefghijklmnopqrstuvwxyz ,." +
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-  public String invert(String str) {
+  @Override public String invert(String str) {
     if(str.length() > 30)
       throw new RuntimeException("argument too long!");
     String result = "";
diff --git a/validating/LoaderAssertions.java b/validating/LoaderAssertions.java
index 52cac3471..aa150ad7e 100644
--- a/validating/LoaderAssertions.java
+++ b/validating/LoaderAssertions.java
@@ -1,5 +1,5 @@
 // validating/LoaderAssertions.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using the class loader to enable assertions
diff --git a/validating/NonNullConstruction.java b/validating/NonNullConstruction.java
index a95483dd4..4caa3de54 100644
--- a/validating/NonNullConstruction.java
+++ b/validating/NonNullConstruction.java
@@ -1,5 +1,5 @@
 // validating/NonNullConstruction.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import static com.google.common.base.Preconditions.*;
diff --git a/validating/SLF4JLevels.java b/validating/SLF4JLevels.java
index c851e7c31..d56821a52 100644
--- a/validating/SLF4JLevels.java
+++ b/validating/SLF4JLevels.java
@@ -1,5 +1,5 @@
 // validating/SLF4JLevels.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import org.slf4j.*;
@@ -16,14 +16,14 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-2017-05-09T06:07:52.846
+2021-01-24T08:49:37.658
 [main] TRACE SLF4JLevels - Hello
-2017-05-09T06:07:52.849
+2021-01-24T08:49:37.661
 [main] DEBUG SLF4JLevels - Logging
-2017-05-09T06:07:52.849
+2021-01-24T08:49:37.661
 [main] INFO  SLF4JLevels - Using
-2017-05-09T06:07:52.850
+2021-01-24T08:49:37.661
 [main] WARN  SLF4JLevels - the SLF4J
-2017-05-09T06:07:52.851
+2021-01-24T08:49:37.661
 [main] ERROR SLF4JLevels - Facade
 */
diff --git a/validating/SLF4JLogging.java b/validating/SLF4JLogging.java
index f2e94d6e5..f8eeb696c 100644
--- a/validating/SLF4JLogging.java
+++ b/validating/SLF4JLogging.java
@@ -1,5 +1,5 @@
 // validating/SLF4JLogging.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import org.slf4j.*;
@@ -12,6 +12,6 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-2017-05-09T06:07:53.418
+2021-01-24T08:49:38.496
 [main] INFO  SLF4JLogging - hello logging
 */
diff --git a/validating/SimpleDebugging.java b/validating/SimpleDebugging.java
index 863e7de39..721820e74 100644
--- a/validating/SimpleDebugging.java
+++ b/validating/SimpleDebugging.java
@@ -1,5 +1,5 @@
 // validating/SimpleDebugging.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // {ThrowsException}
diff --git a/validating/StringInverter.java b/validating/StringInverter.java
index 34c933a73..542788935 100644
--- a/validating/StringInverter.java
+++ b/validating/StringInverter.java
@@ -1,5 +1,5 @@
 // validating/StringInverter.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/jmh/JMH1.java b/validating/jmh/JMH1.java
index 79eb749ab..63657c3fa 100644
--- a/validating/jmh/JMH1.java
+++ b/validating/jmh/JMH1.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH1.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/jmh/JMH2.java b/validating/jmh/JMH2.java
index ae7b56f9d..5010b00ed 100644
--- a/validating/jmh/JMH2.java
+++ b/validating/jmh/JMH2.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH2.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/jmh/JMH3.java b/validating/jmh/JMH3.java
index 8ce9bb0c1..7bf22de11 100644
--- a/validating/jmh/JMH3.java
+++ b/validating/jmh/JMH3.java
@@ -1,5 +1,5 @@
 // validating/jmh/JMH3.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating.jmh;
diff --git a/validating/tests/CircularQueueTest.java b/validating/tests/CircularQueueTest.java
index 8da6dc276..920b459be 100644
--- a/validating/tests/CircularQueueTest.java
+++ b/validating/tests/CircularQueueTest.java
@@ -1,5 +1,5 @@
 // validating/tests/CircularQueueTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/tests/CountedListTest.java b/validating/tests/CountedListTest.java
index a9dc0c717..74a29b376 100644
--- a/validating/tests/CountedListTest.java
+++ b/validating/tests/CountedListTest.java
@@ -1,5 +1,5 @@
 // validating/tests/CountedListTest.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Simple use of JUnit to test CountedList.
diff --git a/validating/tests/DynamicStringInverterTests.java b/validating/tests/DynamicStringInverterTests.java
index dc980971a..338b65fb0 100644
--- a/validating/tests/DynamicStringInverterTests.java
+++ b/validating/tests/DynamicStringInverterTests.java
@@ -1,5 +1,5 @@
 // validating/tests/DynamicStringInverterTests.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;
diff --git a/validating/tests/StringInverterTests.java b/validating/tests/StringInverterTests.java
index e32873b87..01ada920e 100644
--- a/validating/tests/StringInverterTests.java
+++ b/validating/tests/StringInverterTests.java
@@ -1,5 +1,5 @@
 // validating/tests/StringInverterTests.java
-// (c)2020 MindView LLC: see Copyright.txt
+// (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 package validating;

From 4b98623f523bb2c0440de6345b3365288748b1bc Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 31 Jan 2021 15:52:55 -0700
Subject: [PATCH 26/46] Update build.gradle

Experiment
---
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index b4feb13d5..3e35bffb1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,7 +17,7 @@ subprojects {
     apply from: "$rootProject.projectDir/gradle/jmh.gradle"
     // apply from: "$rootProject.projectDir/gradle/checkstyle.gradle"
     apply from: "$rootProject.projectDir/gradle/findbugs.gradle"
-    apply plugin: 'com.mindviewinc.tagging'
+    // apply plugin: 'com.mindviewinc.tagging'
 }
 
 apply from: 'gradle/subprojects.gradle'

From cf109e7860d50fcfdc23512a189d98fbc391f04e Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 31 Jan 2021 16:03:09 -0700
Subject: [PATCH 27/46] Update build.gradle

---
 build.gradle | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build.gradle b/build.gradle
index 3e35bffb1..b4feb13d5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -17,7 +17,7 @@ subprojects {
     apply from: "$rootProject.projectDir/gradle/jmh.gradle"
     // apply from: "$rootProject.projectDir/gradle/checkstyle.gradle"
     apply from: "$rootProject.projectDir/gradle/findbugs.gradle"
-    // apply plugin: 'com.mindviewinc.tagging'
+    apply plugin: 'com.mindviewinc.tagging'
 }
 
 apply from: 'gradle/subprojects.gradle'

From 03691ccbc0ef8f96c7af033ebe233caee6e04f8c Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 31 Jan 2021 16:12:26 -0700
Subject: [PATCH 28/46] Update README.md

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 985dbbe42..b2ad92597 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Example Source Code for the Book "On Java 8" by Bruce Eckel
 
-Download release from [here](https://github.com/BruceEckel/OnJava8-Examples/releases/tag/v1.0).
+Download the latest release from [here](https://github.com/BruceEckel/OnJava8-Examples/releases/).
 
 To compile and run these programs, you only need JDK 8 installed.
 Invoking `gradlew` will automatically download and install Gradle.

From 68e98a30751aa9ae68c872325e92214bbc6c271a Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 31 Jan 2021 17:50:14 -0700
Subject: [PATCH 29/46] Fixed onjava/Range.java, added TestRange.java

---
 concurrent/PSP2.txt                |  4 ++--
 housekeeping/Overloading.java      |  2 +-
 interfaces/InterfaceCollision.java |  4 ++--
 onjava/Range.java                  | 32 +++++++++++++-----------------
 onjava/TestRange.java              | 29 +++++++++++++++++++++++++++
 5 files changed, 48 insertions(+), 23 deletions(-)
 create mode 100644 onjava/TestRange.java

diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt
index 4b372a616..224433884 100644
--- a/concurrent/PSP2.txt
+++ b/concurrent/PSP2.txt
@@ -5,7 +5,7 @@
 4: main
 5: main
 6: main
+6: ForkJoinPool.commonPool-worker-9
 7: main
-8: main
+8: ForkJoinPool.commonPool-worker-9
 9: main
-10: ForkJoinPool.commonPool-worker-5
diff --git a/housekeeping/Overloading.java b/housekeeping/Overloading.java
index 65f239529..55307f4fa 100644
--- a/housekeeping/Overloading.java
+++ b/housekeeping/Overloading.java
@@ -32,7 +32,7 @@ public static void main(String[] args) {
       t.info();
       t.info("overloaded method");
     }
-    // Overloaded constructor:
+    // Calls overloaded constructor:
     new Tree();
   }
 }
diff --git a/interfaces/InterfaceCollision.java b/interfaces/InterfaceCollision.java
index a3a6612b1..e00fb8a84 100644
--- a/interfaces/InterfaceCollision.java
+++ b/interfaces/InterfaceCollision.java
@@ -12,12 +12,12 @@ class C2 implements I1, I2 {
   @Override
   public void f() {}
   @Override
-  public int f(int i) { return 1; } // overloaded
+  public int f(int i) { return 1; } // Overloaded
 }
 
 class C3 extends C implements I2 {
   @Override
-  public int f(int i) { return 1; } // overloaded
+  public int f(int i) { return 1; } // Overloaded
 }
 
 class C4 extends C implements I3 {
diff --git a/onjava/Range.java b/onjava/Range.java
index ee43244f4..82041db5e 100644
--- a/onjava/Range.java
+++ b/onjava/Range.java
@@ -2,33 +2,29 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// Array creation methods that can be used without
-// qualifiers, using static imports:
+// Create arrays initialized with integer values.
 package onjava;
 
 public class Range {
-  // Produce a sequence [0..n)
-  public static int[] range(int n) {
-    int[] result = new int[n];
-    for(int i = 0; i < n; i++)
-      result[i] = i;
-    return result;
-  }
-  // Produce a sequence [start..end)
-  public static int[] range(int start, int end) {
-    int sz = end - start;
-    int[] result = new int[sz];
-    for(int i = 0; i < sz; i++)
-      result[i] = start + i;
-    return result;
-  }
   // Produce sequence [start..end) incrementing by step
   public static
   int[] range(int start, int end, int step) {
-    int sz = (end - start)/step;
+    if (step == 0)
+      throw new
+        IllegalArgumentException("Step cannot be zero");
+    int sz = Math.max(0, step >= 0 ?
+        (end + step - 1 - start) / step
+      : (end + step + 1 - start) / step);
     int[] result = new int[sz];
     for(int i = 0; i < sz; i++)
       result[i] = start + (i * step);
     return result;
+  }  // Produce a sequence [start..end)
+  public static int[] range(int start, int end) {
+    return range(start, end, 1);
+  }
+  // Produce a sequence [0..n)
+  public static int[] range(int n) {
+    return range(0, n);
   }
 }
diff --git a/onjava/TestRange.java b/onjava/TestRange.java
new file mode 100644
index 000000000..cd132d791
--- /dev/null
+++ b/onjava/TestRange.java
@@ -0,0 +1,29 @@
+// onjava/TestRange.java
+// (c)2021 MindView LLC: see Copyright.txt
+// We make no guarantees that this code is fit for any purpose.
+// Visit http://OnJava8.com for more book information.
+// Basic test of Range.java
+import static onjava.Range.*;
+import java.util.Arrays;
+
+public class TestRange {
+  private static void show(int[] rng) {
+    System.out.println(Arrays.toString(rng));
+  }
+  public static void main(String[] args) {
+    show(range(10, 21, 3));
+    show(range(21, 10, -3));
+    show(range(-5, 5, -3));
+    show(range(-5, 5, 3));
+    show(range(10, 21));
+    show(range(10));
+  }
+}
+/* Output:
+[10, 13, 16, 19]
+[21, 18, 15, 12]
+[]
+[-5, -2, 1, 4]
+[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
+[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+*/

From f5929969b128fe1832ec90701cfc4f5f1a7b2cdf Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Thu, 4 Feb 2021 07:21:51 -0700
Subject: [PATCH 30/46] Rewrote Operators: Testing Object Equivalence

---
 concurrent/PSP2.txt              | 15 +++++-----
 operators/AllOps.java            |  2 +-
 operators/AutoInc.java           |  2 +-
 operators/DoubleEquivalence.java | 47 ++++++++++++++++++++++++++++++
 operators/EqualsMethod.java      | 26 +++++++++++++++--
 operators/EqualsMethod2.java     | 21 --------------
 operators/Equivalence.java       | 49 ++++++++++++++++++++++++++++----
 7 files changed, 123 insertions(+), 39 deletions(-)
 create mode 100644 operators/DoubleEquivalence.java
 delete mode 100644 operators/EqualsMethod2.java

diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt
index 224433884..491bd153f 100644
--- a/concurrent/PSP2.txt
+++ b/concurrent/PSP2.txt
@@ -1,11 +1,12 @@
 0: main
 1: main
-2: main
+1: ForkJoinPool.commonPool-worker-3
+1: ForkJoinPool.commonPool-worker-5
+3: ForkJoinPool.commonPool-worker-5
 3: main
-4: main
+5: ForkJoinPool.commonPool-worker-5
 5: main
-6: main
-6: ForkJoinPool.commonPool-worker-9
-7: main
-8: ForkJoinPool.commonPool-worker-9
-9: main
+7: ForkJoinPool.commonPool-worker-5
+8: main
+8: ForkJoinPool.commonPool-worker-3
+10: ForkJoinPool.commonPool-worker-5
diff --git a/operators/AllOps.java b/operators/AllOps.java
index 3a559a7d9..d48e82af1 100644
--- a/operators/AllOps.java
+++ b/operators/AllOps.java
@@ -6,7 +6,7 @@
 // to show which ones are accepted by the Java compiler
 
 public class AllOps {
-  // To accept the results of a boolean test:
+  // To accept the results of a Boolean test:
   void f(boolean b) {}
   void boolTest(boolean x, boolean y) {
     // Arithmetic operators:
diff --git a/operators/AutoInc.java b/operators/AutoInc.java
index d018f90a8..bcb090935 100644
--- a/operators/AutoInc.java
+++ b/operators/AutoInc.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// Demonstrates the ++ and -- operators
+// The ++ and -- operators
 
 public class AutoInc {
   public static void main(String[] args) {
diff --git a/operators/DoubleEquivalence.java b/operators/DoubleEquivalence.java
new file mode 100644
index 000000000..e00160381
--- /dev/null
+++ b/operators/DoubleEquivalence.java
@@ -0,0 +1,47 @@
+// operators/DoubleEquivalence.java
+// (c)2021 MindView LLC: see Copyright.txt
+// We make no guarantees that this code is fit for any purpose.
+// Visit http://OnJava8.com for more book information.
+
+public class DoubleEquivalence {
+  static void show(String desc, Double n1, Double n2) {
+    System.out.println(desc + ":");
+    System.out.printf(
+      "%e==%e %b %b%n", n1, n2, n1 == n2, n1.equals(n2));
+  }
+  @SuppressWarnings("deprecation")
+  public static void test(double x1, double x2) {
+    // x1.equals(x2) // Won't compile
+    System.out.printf("%e==%e %b%n", x1, x2, x1 == x2);
+    Double d1 = x1;
+    Double d2 = x2;
+    show("Automatic", d1, d2);
+    Double r1 = new Double(x1);
+    Double r2 = new Double(x2);
+    show("new Double()", r1, r2);
+    Double v1 = Double.valueOf(x1);
+    Double v2 = Double.valueOf(x2);
+    show("Double.valueOf()", v1, v2);
+  }
+  public static void main(String[] args) {
+    test(0, Double.MIN_VALUE);
+    test(Double.MAX_VALUE,
+      Double.MAX_VALUE - Double.MIN_VALUE * 1_000_000);
+  }
+}
+/* Output:
+0.000000e+00==4.900000e-324 false
+Automatic:
+0.000000e+00==4.900000e-324 false false
+new Double():
+0.000000e+00==4.900000e-324 false false
+Double.valueOf():
+0.000000e+00==4.900000e-324 false false
+1.797693e+308==1.797693e+308 true
+Automatic:
+1.797693e+308==1.797693e+308 false true
+new Double():
+1.797693e+308==1.797693e+308 false true
+Double.valueOf():
+1.797693e+308==1.797693e+308 false true
+*/
diff --git a/operators/EqualsMethod.java b/operators/EqualsMethod.java
index 7915f7def..2f281aeb5 100644
--- a/operators/EqualsMethod.java
+++ b/operators/EqualsMethod.java
@@ -2,14 +2,34 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
+// Default equals() does not compare contents
+
+class ValA {
+  int i;
+}
+
+class ValB {
+  int i;
+  // Works for this example, not a complete equals():
+  public boolean equals(Object o) {
+    ValB rval = (ValB)o;  // Cast o to be a ValB
+    return i == rval.i;
+  }
+}
 
 public class EqualsMethod {
   public static void main(String[] args) {
-    Integer n1 = 47;
-    Integer n2 = 47;
-    System.out.println(n1.equals(n2));
+    ValA va1 = new ValA();
+    ValA va2 = new ValA();
+    va1.i = va2.i = 100;
+    System.out.println(va1.equals(va2));
+    ValB vb1 = new ValB();
+    ValB vb2 = new ValB();
+    vb1.i = vb2.i = 100;
+    System.out.println(vb1.equals(vb2));
   }
 }
 /* Output:
+false
 true
 */
diff --git a/operators/EqualsMethod2.java b/operators/EqualsMethod2.java
deleted file mode 100644
index 75ff42c5e..000000000
--- a/operators/EqualsMethod2.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// operators/EqualsMethod2.java
-// (c)2021 MindView LLC: see Copyright.txt
-// We make no guarantees that this code is fit for any purpose.
-// Visit http://OnJava8.com for more book information.
-// Default equals() does not compare contents
-
-class Value {
-  int i;
-}
-
-public class EqualsMethod2 {
-  public static void main(String[] args) {
-    Value v1 = new Value();
-    Value v2 = new Value();
-    v1.i = v2.i = 100;
-    System.out.println(v1.equals(v2));
-  }
-}
-/* Output:
-false
-*/
diff --git a/operators/Equivalence.java b/operators/Equivalence.java
index 603ef6316..25f7f3e70 100644
--- a/operators/Equivalence.java
+++ b/operators/Equivalence.java
@@ -4,14 +4,51 @@
 // Visit http://OnJava8.com for more book information.
 
 public class Equivalence {
+  static void show(String desc, Integer n1, Integer n2) {
+    System.out.println(desc + ":");
+    System.out.printf(
+      "%d==%d %b %b%n", n1, n2, n1 == n2, n1.equals(n2));
+  }
+  @SuppressWarnings("deprecation")
+  public static void test(int value) {
+    Integer i1 = value;                             // [1]
+    Integer i2 = value;
+    show("Automatic", i1, i2);
+    // Old way, deprecated in Java 9 and on:
+    Integer r1 = new Integer(value);                // [2]
+    Integer r2 = new Integer(value);
+    show("new Integer()", r1, r2);
+    // Preferred in Java 9 and on:
+    Integer v1 = Integer.valueOf(value);            // [3]
+    Integer v2 = Integer.valueOf(value);
+    show("Integer.valueOf()", v1, v2);
+    // Primitives can't use equals():
+    int x = value;                                  // [4]
+    int y = value;
+    // x.equals(y); // Doesn't compile
+    System.out.println("Primitive int:");
+    System.out.printf("%d==%d %b%n", x, y, x == y);
+  }
   public static void main(String[] args) {
-    Integer n1 = 47;
-    Integer n2 = 47;
-    System.out.println(n1 == n2);
-    System.out.println(n1 != n2);
+    test(127);
+    test(128);
   }
 }
 /* Output:
-true
-false
+Automatic:
+127==127 true true
+new Integer():
+127==127 false true
+Integer.valueOf():
+127==127 true true
+Primitive int:
+127==127 true
+Automatic:
+128==128 false true
+new Integer():
+128==128 false true
+Integer.valueOf():
+128==128 false true
+Primitive int:
+128==128 true
 */

From d97d374947cfefc2a2577507e4ff47824977baaf Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Sun, 7 Feb 2021 10:33:13 -0700
Subject: [PATCH 31/46] Update DoubleEquivalence.java

---
 operators/DoubleEquivalence.java | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/operators/DoubleEquivalence.java b/operators/DoubleEquivalence.java
index e00160381..5f06e25f5 100644
--- a/operators/DoubleEquivalence.java
+++ b/operators/DoubleEquivalence.java
@@ -25,6 +25,7 @@ public static void test(double x1, double x2) {
   }
   public static void main(String[] args) {
     test(0, Double.MIN_VALUE);
+    System.out.println("------------------------");
     test(Double.MAX_VALUE,
       Double.MAX_VALUE - Double.MIN_VALUE * 1_000_000);
   }
@@ -37,6 +38,7 @@ public static void main(String[] args) {
 0.000000e+00==4.900000e-324 false false
 Double.valueOf():
 0.000000e+00==4.900000e-324 false false
+------------------------
 1.797693e+308==1.797693e+308 true
 Automatic:
 1.797693e+308==1.797693e+308 false true

From 129df0b75273d0375d96484918f6a2c20c144295 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Wed, 10 Feb 2021 12:04:53 -0700
Subject: [PATCH 32/46] Update settings.gradle

---
 settings.gradle | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/settings.gradle b/settings.gradle
index 376ca1053..9ab61dfbe 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,8 +1,6 @@
 def isSubproject = { File file ->
     file.isDirectory() &&
-    !file.name.contains('.git') &&
-    !file.name.contains('.gradle') &&
-    !file.name.contains('.idea') &&
+    !file.name.startsWith('.') &&
     !file.name.contains('build') &&
     !file.name.contains('gradle') &&
     !file.name.contains('test')

From ede3954d8680e09467b1be5baf96fa1ee2989cc5 Mon Sep 17 00:00:00 2001
From: Bruce Eckel 
Date: Thu, 4 Mar 2021 16:15:04 -0700
Subject: [PATCH 33/46] March 2021 Book Update

See notes in "Foreword to the Leanpub Edition"
---
 collections/AdapterMethodIdiom.java           |   2 +-
 collections/CollectionSequence.java           |   2 +-
 collections/CrossCollectionIteration.java     |   2 +-
 collections/CrossCollectionIteration2.java    |   2 +-
 collections/InterfaceVsIterator.java          |   2 +-
 collections/LinkedListFeatures.java           |   2 +-
 collections/ListFeatures.java                 |   2 +-
 collections/ListIteration.java                |   2 +-
 collections/MapOfList.java                    |   2 +-
 collections/MultiIterableClass.java           |   2 +-
 collections/NonCollectionSequence.java        |   2 +-
 collections/PetMap.java                       |   2 +-
 collections/SimpleIteration.java              |   2 +-
 collectiontopics/CollectionMethods.java       |   3 +-
 concurrent/PSP2.txt                           | 518 +++++++++++++++++-
 enums/PostOffice.java                         |  22 +-
 enums/menu/Food.java                          |   2 +-
 enums/menu/Meal2.java                         |   2 +-
 equalshashcode/IndividualTest.java            |   2 +-
 generics/CheckedList.java                     |   6 +-
 generics/DogsAndRobotMethodReferences.java    |   2 +-
 generics/DogsAndRobots.java                   |   2 +-
 generics/GenericHolder.java                   |   2 +-
 gradle/subprojects.gradle                     |   6 +-
 housekeeping/Flower.java                      |   4 +-
 housekeeping/OverloadingOrder.java            |   2 +-
 housekeeping/SimpleConstructor2.java          |   2 +-
 javadoc/Documentation3.java                   |   2 +
 onjava/BasicSupplier.java                     |   2 +-
 onjava/Countries.java                         |   2 +-
 onjava/MouseClick.java                        |   2 +-
 onjava/atunit/AtUnit.java                     |   6 +-
 patterns/BoxObserver.java                     |  77 ++-
 patterns/CleanTheFloor.java                   |  42 ++
 patterns/CommandPattern.java                  |  21 +-
 patterns/Macro.java                           |  25 +
 patterns/PaperScissorsRock.java               |   2 +-
 patterns/ProxyDemo.java                       |   8 +-
 patterns/Resource.java                        |   9 +
 patterns/ShapeFactory1.java                   |   2 +-
 patterns/ShapeFactory2.java                   |   4 +-
 patterns/ShapeFactory3.java                   |   9 +-
 patterns/Single.java                          |  18 +
 patterns/SingletonPattern.java                |  75 ++-
 patterns/SingletonPattern2.java               |  16 +
 patterns/SingletonPattern3.java               |  33 ++
 patterns/StateDemo.java                       |  51 +-
 patterns/TemplateMethod.java                  |  28 +-
 patterns/TestSingle.java                      |  20 +
 patterns/TypeMap.java                         |  21 +
 patterns/abstractfactory/GameEnvironment.java |  24 +-
 patterns/adapt/Adapter.java                   |   2 +-
 patterns/chain/ChainOfResponsibility.java     |  53 +-
 patterns/chain/Result.java                    |  21 +
 patterns/doubledispatch/Aluminum.java         |   4 +-
 patterns/doubledispatch/Cardboard.java        |   4 +-
 patterns/doubledispatch/DoubleDispatch.java   |  86 +--
 patterns/doubledispatch/Glass.java            |   4 +-
 patterns/doubledispatch/Paper.java            |   4 +-
 patterns/doubledispatch/TypedBin.java         |  15 +-
 patterns/doubledispatch/TypedBinMember.java   |   7 +-
 patterns/dynatrash/DynaTrash.java             |  74 ---
 patterns/observer/ObservedFlower.java         | 120 ++--
 patterns/recyclea/RecycleA.java               | 140 ++---
 patterns/recycleb/RecycleB.java               |  72 ++-
 patterns/recyclec/RecycleC.java               | 126 +++--
 patterns/state/StateMachineDemo.java          |  26 +-
 patterns/strategy/StrategyPattern.java        |  12 +-
 patterns/strategy/StrategyPattern2.java       |   4 +
 patterns/trash/Aluminum.java                  |  10 +-
 patterns/trash/Bins.java                      |  35 ++
 patterns/trash/Cardboard.java                 |  10 +-
 patterns/trash/ClassToListOfTrashMap.java     |  20 +
 patterns/trash/DynaFactory.java               |  44 ++
 patterns/trash/Fillable.java                  |   2 +-
 patterns/trash/FillableList.java              |  12 +-
 patterns/trash/Glass.java                     |  10 +-
 patterns/trash/GroupingBy.java                |  41 ++
 patterns/trash/Paper.java                     |  10 +-
 patterns/trash/ParseTrash.java                |  89 ++-
 patterns/trash/Price.java                     |  13 +
 patterns/trash/Trash.dat                      |  46 +-
 patterns/trash/Trash.java                     |  91 +--
 patterns/trash/TrashInfo.java                 |  18 +
 patterns/trash/TrashValue.java                |  21 +
 patterns/trash/TrashVisitor.java              | 104 ++++
 patterns/trash/TypeMapTrash.java              |  52 ++
 patterns/trash/Visitor.java                   |  31 ++
 patterns/trashvisitor/Aluminum.java           |  15 -
 patterns/trashvisitor/Cardboard.java          |  15 -
 patterns/trashvisitor/Glass.java              |  15 -
 patterns/trashvisitor/Paper.java              |  15 -
 patterns/trashvisitor/TrashVisitor.java       | 117 ----
 patterns/trashvisitor/Visitable.java          |  12 -
 patterns/trashvisitor/Visitor.java            |  14 -
 patterns/visitor/BeeAndFlowers.java           |  30 +-
 polymorphism/{RTTI.java => Reflect.java}      |   9 +-
 references/CopyConstructor.java               |   8 +-
 .../AnonymousImplementation.java              |   4 +-
 .../BoundedClassReferences.java               |   2 +-
 {typeinfo => reflection}/ClassCasts.java      |   2 +-
 .../ClassInitialization.java                  |   2 +-
 {typeinfo => reflection}/DynamicSupplier.java |   2 +-
 .../FamilyVsExactType.java                    |  10 +-
 .../GenericClassReferences.java               |   2 +-
 .../HiddenImplementation.java                 |   8 +-
 {typeinfo => reflection}/ID2.java             |   2 +-
 .../InnerImplementation.java                  |   6 +-
 .../InterfaceViolation.java                   |   4 +-
 .../ModifyingPrivateFields.java               |   2 +-
 {typeinfo => reflection}/NullRobot.java       |   2 +-
 {typeinfo => reflection}/Operation.java       |   2 +-
 {typeinfo => reflection}/Person.java          |   2 +-
 {typeinfo => reflection}/PetCounter.java      |   4 +-
 {typeinfo => reflection}/PetCounter2.java     |   4 +-
 {typeinfo => reflection}/PetCounter3.java     |   4 +-
 {typeinfo => reflection}/PetCounter4.java     |   4 +-
 {typeinfo => reflection}/Position.java        |   2 +-
 .../RegisteredFactories.java                  |   2 +-
 {typeinfo => reflection}/Robot.java           |   2 +-
 .../SelectingMethods.java                     |   2 +-
 {typeinfo => reflection}/Shapes.java          |   2 +-
 {typeinfo => reflection}/ShowMethods.java     |   2 +-
 .../SimpleDynamicProxy.java                   |   2 +-
 {typeinfo => reflection}/SimpleProxyDemo.java |   2 +-
 {typeinfo => reflection}/SnowRobot.java       |   2 +-
 {typeinfo => reflection}/Staff.java           |   2 +-
 {typeinfo => reflection}/SweetShop.java       |   2 +-
 .../WildcardClassReferences.java              |   2 +-
 {typeinfo => reflection}/interfacea/A.java    |   4 +-
 .../packageaccess/HiddenC.java                |   6 +-
 {typeinfo => reflection}/pets/Cat.java        |   4 +-
 {typeinfo => reflection}/pets/Creator.java    |   4 +-
 {typeinfo => reflection}/pets/Cymric.java     |   4 +-
 {typeinfo => reflection}/pets/Dog.java        |   4 +-
 .../pets/EgyptianMau.java                     |   4 +-
 .../pets/ForNamePetCreator.java               |  20 +-
 {typeinfo => reflection}/pets/Hamster.java    |   4 +-
 {typeinfo => reflection}/pets/Individual.java |   4 +-
 {typeinfo => reflection}/pets/Manx.java       |   4 +-
 {typeinfo => reflection}/pets/Mouse.java      |   4 +-
 {typeinfo => reflection}/pets/Mutt.java       |   4 +-
 {typeinfo => reflection}/pets/Person.java     |   4 +-
 {typeinfo => reflection}/pets/Pet.java        |   4 +-
 {typeinfo => reflection}/pets/PetCreator.java |  16 +-
 {typeinfo => reflection}/pets/Pug.java        |   4 +-
 {typeinfo => reflection}/pets/Rat.java        |   4 +-
 {typeinfo => reflection}/pets/Rodent.java     |   4 +-
 .../toys/GenericToyTest.java                  |   6 +-
 {typeinfo => reflection}/toys/ToyTest.java    |  32 +-
 reuse/Bath.java                               |   8 +-
 serialization/AStoreCADState.java             |  22 +-
 serialization/Blip3.java                      |   2 +-
 serialization/RecoverCADState.java            |  20 +-
 serialization/Worm.java                       |   2 +-
 155 files changed, 1856 insertions(+), 1217 deletions(-)
 create mode 100644 patterns/CleanTheFloor.java
 create mode 100644 patterns/Macro.java
 create mode 100644 patterns/Resource.java
 create mode 100644 patterns/Single.java
 create mode 100644 patterns/SingletonPattern2.java
 create mode 100644 patterns/SingletonPattern3.java
 create mode 100644 patterns/TestSingle.java
 create mode 100644 patterns/TypeMap.java
 create mode 100644 patterns/chain/Result.java
 delete mode 100644 patterns/dynatrash/DynaTrash.java
 create mode 100644 patterns/trash/Bins.java
 create mode 100644 patterns/trash/ClassToListOfTrashMap.java
 create mode 100644 patterns/trash/DynaFactory.java
 create mode 100644 patterns/trash/GroupingBy.java
 create mode 100644 patterns/trash/Price.java
 create mode 100644 patterns/trash/TrashInfo.java
 create mode 100644 patterns/trash/TrashValue.java
 create mode 100644 patterns/trash/TrashVisitor.java
 create mode 100644 patterns/trash/TypeMapTrash.java
 create mode 100644 patterns/trash/Visitor.java
 delete mode 100644 patterns/trashvisitor/Aluminum.java
 delete mode 100644 patterns/trashvisitor/Cardboard.java
 delete mode 100644 patterns/trashvisitor/Glass.java
 delete mode 100644 patterns/trashvisitor/Paper.java
 delete mode 100644 patterns/trashvisitor/TrashVisitor.java
 delete mode 100644 patterns/trashvisitor/Visitable.java
 delete mode 100644 patterns/trashvisitor/Visitor.java
 rename polymorphism/{RTTI.java => Reflect.java} (81%)
 rename {typeinfo => reflection}/AnonymousImplementation.java (94%)
 rename {typeinfo => reflection}/BoundedClassReferences.java (90%)
 rename {typeinfo => reflection}/ClassCasts.java (93%)
 rename {typeinfo => reflection}/ClassInitialization.java (97%)
 rename {typeinfo => reflection}/DynamicSupplier.java (96%)
 rename {typeinfo => reflection}/FamilyVsExactType.java (90%)
 rename {typeinfo => reflection}/GenericClassReferences.java (91%)
 rename {typeinfo => reflection}/HiddenImplementation.java (88%)
 rename {typeinfo => reflection}/ID2.java (96%)
 rename {typeinfo => reflection}/InnerImplementation.java (90%)
 rename {typeinfo => reflection}/InterfaceViolation.java (88%)
 rename {typeinfo => reflection}/ModifyingPrivateFields.java (97%)
 rename {typeinfo => reflection}/NullRobot.java (98%)
 rename {typeinfo => reflection}/Operation.java (93%)
 rename {typeinfo => reflection}/Person.java (98%)
 rename {typeinfo => reflection}/PetCounter.java (97%)
 rename {typeinfo => reflection}/PetCounter2.java (90%)
 rename {typeinfo => reflection}/PetCounter3.java (96%)
 rename {typeinfo => reflection}/PetCounter4.java (92%)
 rename {typeinfo => reflection}/Position.java (98%)
 rename {typeinfo => reflection}/RegisteredFactories.java (98%)
 rename {typeinfo => reflection}/Robot.java (96%)
 rename {typeinfo => reflection}/SelectingMethods.java (97%)
 rename {typeinfo => reflection}/Shapes.java (96%)
 rename {typeinfo => reflection}/ShowMethods.java (98%)
 rename {typeinfo => reflection}/SimpleDynamicProxy.java (97%)
 rename {typeinfo => reflection}/SimpleProxyDemo.java (97%)
 rename {typeinfo => reflection}/SnowRobot.java (97%)
 rename {typeinfo => reflection}/Staff.java (98%)
 rename {typeinfo => reflection}/SweetShop.java (97%)
 rename {typeinfo => reflection}/WildcardClassReferences.java (87%)
 rename {typeinfo => reflection}/interfacea/A.java (75%)
 rename {typeinfo => reflection}/packageaccess/HiddenC.java (84%)
 rename {typeinfo => reflection}/pets/Cat.java (83%)
 rename {typeinfo => reflection}/pets/Creator.java (95%)
 rename {typeinfo => reflection}/pets/Cymric.java (83%)
 rename {typeinfo => reflection}/pets/Dog.java (83%)
 rename {typeinfo => reflection}/pets/EgyptianMau.java (82%)
 rename {typeinfo => reflection}/pets/ForNamePetCreator.java (71%)
 rename {typeinfo => reflection}/pets/Hamster.java (83%)
 rename {typeinfo => reflection}/pets/Individual.java (95%)
 rename {typeinfo => reflection}/pets/Manx.java (83%)
 rename {typeinfo => reflection}/pets/Mouse.java (83%)
 rename {typeinfo => reflection}/pets/Mutt.java (83%)
 rename {typeinfo => reflection}/pets/Person.java (81%)
 rename {typeinfo => reflection}/pets/Pet.java (83%)
 rename {typeinfo => reflection}/pets/PetCreator.java (75%)
 rename {typeinfo => reflection}/pets/Pug.java (83%)
 rename {typeinfo => reflection}/pets/Rat.java (83%)
 rename {typeinfo => reflection}/pets/Rodent.java (83%)
 rename {typeinfo => reflection}/toys/GenericToyTest.java (85%)
 rename {typeinfo => reflection}/toys/ToyTest.java (67%)

diff --git a/collections/AdapterMethodIdiom.java b/collections/AdapterMethodIdiom.java
index 47fe3e8be..ffb8fbf5b 100644
--- a/collections/AdapterMethodIdiom.java
+++ b/collections/AdapterMethodIdiom.java
@@ -33,7 +33,7 @@ public void remove() { // Not implemented
 public class AdapterMethodIdiom {
   public static void main(String[] args) {
     ReversibleArrayList ral =
-      new ReversibleArrayList(
+      new ReversibleArrayList<>(
         Arrays.asList("To be or not to be".split(" ")));
     // Grabs the ordinary iterator via iterator():
     for(String s : ral)
diff --git a/collections/CollectionSequence.java b/collections/CollectionSequence.java
index 65f93254e..ea0e45740 100644
--- a/collections/CollectionSequence.java
+++ b/collections/CollectionSequence.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class CollectionSequence
diff --git a/collections/CrossCollectionIteration.java b/collections/CrossCollectionIteration.java
index 6be887668..2aaf7e95a 100644
--- a/collections/CrossCollectionIteration.java
+++ b/collections/CrossCollectionIteration.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class CrossCollectionIteration {
diff --git a/collections/CrossCollectionIteration2.java b/collections/CrossCollectionIteration2.java
index de7fe2809..e8aa755d0 100644
--- a/collections/CrossCollectionIteration2.java
+++ b/collections/CrossCollectionIteration2.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class CrossCollectionIteration2 {
diff --git a/collections/InterfaceVsIterator.java b/collections/InterfaceVsIterator.java
index 5e3c147be..fdb50a588 100644
--- a/collections/InterfaceVsIterator.java
+++ b/collections/InterfaceVsIterator.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class InterfaceVsIterator {
diff --git a/collections/LinkedListFeatures.java b/collections/LinkedListFeatures.java
index 3552fa10e..489c699f2 100644
--- a/collections/LinkedListFeatures.java
+++ b/collections/LinkedListFeatures.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class LinkedListFeatures {
diff --git a/collections/ListFeatures.java b/collections/ListFeatures.java
index cf1e7b01e..12fb6b4f1 100644
--- a/collections/ListFeatures.java
+++ b/collections/ListFeatures.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class ListFeatures {
diff --git a/collections/ListIteration.java b/collections/ListIteration.java
index ce49b5295..4967f5260 100644
--- a/collections/ListIteration.java
+++ b/collections/ListIteration.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class ListIteration {
diff --git a/collections/MapOfList.java b/collections/MapOfList.java
index d3b385add..d7357a6ed 100644
--- a/collections/MapOfList.java
+++ b/collections/MapOfList.java
@@ -4,7 +4,7 @@
 // Visit http://OnJava8.com for more book information.
 // {java collections.MapOfList}
 package collections;
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class MapOfList {
diff --git a/collections/MultiIterableClass.java b/collections/MultiIterableClass.java
index e55d811e3..3c5e7ae26 100644
--- a/collections/MultiIterableClass.java
+++ b/collections/MultiIterableClass.java
@@ -29,7 +29,7 @@ public Iterable randomized() {
     return new Iterable() {
       public Iterator iterator() {
         List shuffled =
-          new ArrayList(Arrays.asList(words));
+          new ArrayList<>(Arrays.asList(words));
         Collections.shuffle(shuffled, new Random(47));
         return shuffled.iterator();
       }
diff --git a/collections/NonCollectionSequence.java b/collections/NonCollectionSequence.java
index 8a6c8bb55..dc8678274 100644
--- a/collections/NonCollectionSequence.java
+++ b/collections/NonCollectionSequence.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 class PetSequence {
diff --git a/collections/PetMap.java b/collections/PetMap.java
index 44885c803..dc64bf574 100644
--- a/collections/PetMap.java
+++ b/collections/PetMap.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class PetMap {
diff --git a/collections/SimpleIteration.java b/collections/SimpleIteration.java
index 234a716b1..089774963 100644
--- a/collections/SimpleIteration.java
+++ b/collections/SimpleIteration.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class SimpleIteration {
diff --git a/collectiontopics/CollectionMethods.java b/collectiontopics/CollectionMethods.java
index 21c12bb5a..08660e62e 100644
--- a/collectiontopics/CollectionMethods.java
+++ b/collectiontopics/CollectionMethods.java
@@ -56,8 +56,7 @@ public static void main(String[] args) {
     // c2 and c3 (an intersection of sets):
     c2.retainAll(c3);
     show(c2);
-    // Throw away all the elements
-    // in c2 that also appear in c3:
+    // Discard all c2 elements that also appear in c3:
     c2.removeAll(c3);
     System.out.println(
       "c2.isEmpty() = " +  c2.isEmpty());
diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt
index 491bd153f..f9ed83610 100644
--- a/concurrent/PSP2.txt
+++ b/concurrent/PSP2.txt
@@ -1,12 +1,512 @@
+0: ForkJoinPool.commonPool-worker-1
 0: main
-1: main
-1: ForkJoinPool.commonPool-worker-3
-1: ForkJoinPool.commonPool-worker-5
-3: ForkJoinPool.commonPool-worker-5
+2: main
+2: ForkJoinPool.commonPool-worker-1
 3: main
-5: ForkJoinPool.commonPool-worker-5
+4: ForkJoinPool.commonPool-worker-1
 5: main
-7: ForkJoinPool.commonPool-worker-5
-8: main
-8: ForkJoinPool.commonPool-worker-3
-10: ForkJoinPool.commonPool-worker-5
+6: ForkJoinPool.commonPool-worker-1
+7: main
+9: ForkJoinPool.commonPool-worker-1
+9: main
+11: ForkJoinPool.commonPool-worker-1
+11: main
+12: ForkJoinPool.commonPool-worker-1
+13: main
+15: ForkJoinPool.commonPool-worker-1
+15: main
+17: main
+18: main
+19: main
+20: main
+21: main
+17: ForkJoinPool.commonPool-worker-1
+23: main
+23: ForkJoinPool.commonPool-worker-1
+24: main
+25: ForkJoinPool.commonPool-worker-1
+26: main
+27: ForkJoinPool.commonPool-worker-1
+28: main
+29: ForkJoinPool.commonPool-worker-1
+30: main
+32: main
+32: ForkJoinPool.commonPool-worker-1
+33: main
+35: ForkJoinPool.commonPool-worker-1
+36: ForkJoinPool.commonPool-worker-1
+37: ForkJoinPool.commonPool-worker-1
+38: ForkJoinPool.commonPool-worker-1
+35: main
+39: ForkJoinPool.commonPool-worker-1
+41: ForkJoinPool.commonPool-worker-1
+40: main
+42: ForkJoinPool.commonPool-worker-1
+43: main
+44: ForkJoinPool.commonPool-worker-1
+45: main
+46: ForkJoinPool.commonPool-worker-1
+47: main
+49: main
+50: main
+50: ForkJoinPool.commonPool-worker-1
+51: main
+52: ForkJoinPool.commonPool-worker-1
+53: main
+55: ForkJoinPool.commonPool-worker-1
+55: main
+56: ForkJoinPool.commonPool-worker-1
+58: ForkJoinPool.commonPool-worker-1
+57: main
+59: ForkJoinPool.commonPool-worker-1
+60: main
+61: ForkJoinPool.commonPool-worker-1
+62: main
+63: ForkJoinPool.commonPool-worker-1
+64: main
+65: ForkJoinPool.commonPool-worker-1
+66: main
+67: ForkJoinPool.commonPool-worker-1
+68: main
+69: ForkJoinPool.commonPool-worker-1
+71: ForkJoinPool.commonPool-worker-1
+72: ForkJoinPool.commonPool-worker-1
+70: main
+73: ForkJoinPool.commonPool-worker-1
+75: ForkJoinPool.commonPool-worker-1
+76: ForkJoinPool.commonPool-worker-1
+74: main
+77: ForkJoinPool.commonPool-worker-1
+78: ForkJoinPool.commonPool-worker-1
+79: main
+80: ForkJoinPool.commonPool-worker-1
+81: main
+82: ForkJoinPool.commonPool-worker-1
+83: main
+84: ForkJoinPool.commonPool-worker-1
+85: main
+86: ForkJoinPool.commonPool-worker-1
+87: main
+89: ForkJoinPool.commonPool-worker-1
+90: ForkJoinPool.commonPool-worker-1
+89: main
+91: ForkJoinPool.commonPool-worker-1
+92: main
+93: ForkJoinPool.commonPool-worker-1
+94: main
+95: ForkJoinPool.commonPool-worker-1
+96: main
+98: main
+97: ForkJoinPool.commonPool-worker-1
+99: main
+100: ForkJoinPool.commonPool-worker-1
+101: main
+103: ForkJoinPool.commonPool-worker-1
+103: main
+104: ForkJoinPool.commonPool-worker-1
+106: ForkJoinPool.commonPool-worker-1
+107: ForkJoinPool.commonPool-worker-1
+106: main
+108: ForkJoinPool.commonPool-worker-1
+110: ForkJoinPool.commonPool-worker-1
+108: ForkJoinPool.commonPool-worker-2
+111: ForkJoinPool.commonPool-worker-1
+110: main
+113: ForkJoinPool.commonPool-worker-1
+112: ForkJoinPool.commonPool-worker-2
+115: ForkJoinPool.commonPool-worker-1
+116: main
+116: ForkJoinPool.commonPool-worker-2
+117: ForkJoinPool.commonPool-worker-1
+118: main
+119: ForkJoinPool.commonPool-worker-2
+120: ForkJoinPool.commonPool-worker-1
+121: main
+123: ForkJoinPool.commonPool-worker-1
+124: main
+124: ForkJoinPool.commonPool-worker-2
+126: main
+126: ForkJoinPool.commonPool-worker-1
+127: ForkJoinPool.commonPool-worker-2
+128: main
+130: ForkJoinPool.commonPool-worker-1
+130: ForkJoinPool.commonPool-worker-2
+131: main
+133: ForkJoinPool.commonPool-worker-1
+134: ForkJoinPool.commonPool-worker-2
+134: main
+136: ForkJoinPool.commonPool-worker-1
+137: main
+137: ForkJoinPool.commonPool-worker-2
+138: ForkJoinPool.commonPool-worker-1
+140: main
+140: ForkJoinPool.commonPool-worker-2
+141: ForkJoinPool.commonPool-worker-1
+143: main
+143: ForkJoinPool.commonPool-worker-2
+145: ForkJoinPool.commonPool-worker-1
+146: main
+146: ForkJoinPool.commonPool-worker-2
+148: ForkJoinPool.commonPool-worker-1
+149: main
+149: ForkJoinPool.commonPool-worker-2
+151: ForkJoinPool.commonPool-worker-1
+152: ForkJoinPool.commonPool-worker-2
+154: ForkJoinPool.commonPool-worker-1
+154: ForkJoinPool.commonPool-worker-2
+152: main
+156: ForkJoinPool.commonPool-worker-1
+156: ForkJoinPool.commonPool-worker-2
+159: ForkJoinPool.commonPool-worker-1
+159: ForkJoinPool.commonPool-worker-2
+161: ForkJoinPool.commonPool-worker-1
+159: main
+162: ForkJoinPool.commonPool-worker-1
+161: ForkJoinPool.commonPool-worker-2
+164: ForkJoinPool.commonPool-worker-1
+163: main
+166: ForkJoinPool.commonPool-worker-1
+168: ForkJoinPool.commonPool-worker-1
+168: main
+169: ForkJoinPool.commonPool-worker-1
+170: main
+167: ForkJoinPool.commonPool-worker-2
+171: ForkJoinPool.commonPool-worker-1
+172: main
+168: ForkJoinPool.commonPool-worker-3
+174: ForkJoinPool.commonPool-worker-1
+175: main
+178: ForkJoinPool.commonPool-worker-1
+178: main
+178: ForkJoinPool.commonPool-worker-3
+175: ForkJoinPool.commonPool-worker-2
+179: ForkJoinPool.commonPool-worker-1
+181: main
+183: ForkJoinPool.commonPool-worker-1
+183: ForkJoinPool.commonPool-worker-2
+184: main
+184: ForkJoinPool.commonPool-worker-3
+185: ForkJoinPool.commonPool-worker-1
+187: main
+187: ForkJoinPool.commonPool-worker-2
+189: ForkJoinPool.commonPool-worker-1
+191: main
+189: ForkJoinPool.commonPool-worker-3
+191: ForkJoinPool.commonPool-worker-2
+193: main
+193: ForkJoinPool.commonPool-worker-1
+195: ForkJoinPool.commonPool-worker-3
+195: ForkJoinPool.commonPool-worker-2
+197: main
+199: ForkJoinPool.commonPool-worker-3
+199: ForkJoinPool.commonPool-worker-2
+197: ForkJoinPool.commonPool-worker-1
+200: main
+202: ForkJoinPool.commonPool-worker-3
+203: ForkJoinPool.commonPool-worker-2
+204: ForkJoinPool.commonPool-worker-1
+204: main
+205: ForkJoinPool.commonPool-worker-3
+207: ForkJoinPool.commonPool-worker-2
+208: ForkJoinPool.commonPool-worker-1
+208: main
+209: ForkJoinPool.commonPool-worker-3
+211: ForkJoinPool.commonPool-worker-2
+211: ForkJoinPool.commonPool-worker-1
+213: main
+213: ForkJoinPool.commonPool-worker-3
+215: ForkJoinPool.commonPool-worker-2
+215: ForkJoinPool.commonPool-worker-1
+217: main
+217: ForkJoinPool.commonPool-worker-3
+219: ForkJoinPool.commonPool-worker-2
+220: ForkJoinPool.commonPool-worker-1
+221: main
+221: ForkJoinPool.commonPool-worker-3
+224: ForkJoinPool.commonPool-worker-1
+225: main
+225: ForkJoinPool.commonPool-worker-3
+223: ForkJoinPool.commonPool-worker-2
+227: ForkJoinPool.commonPool-worker-1
+227: main
+229: ForkJoinPool.commonPool-worker-3
+229: ForkJoinPool.commonPool-worker-2
+231: ForkJoinPool.commonPool-worker-1
+231: main
+233: ForkJoinPool.commonPool-worker-3
+233: ForkJoinPool.commonPool-worker-2
+235: ForkJoinPool.commonPool-worker-1
+236: main
+237: ForkJoinPool.commonPool-worker-3
+237: ForkJoinPool.commonPool-worker-2
+239: ForkJoinPool.commonPool-worker-1
+241: main
+241: ForkJoinPool.commonPool-worker-2
+241: ForkJoinPool.commonPool-worker-3
+243: ForkJoinPool.commonPool-worker-1
+244: main
+244: ForkJoinPool.commonPool-worker-2
+245: ForkJoinPool.commonPool-worker-3
+247: ForkJoinPool.commonPool-worker-1
+249: ForkJoinPool.commonPool-worker-3
+251: ForkJoinPool.commonPool-worker-3
+250: ForkJoinPool.commonPool-worker-1
+251: ForkJoinPool.commonPool-worker-2
+253: ForkJoinPool.commonPool-worker-3
+254: ForkJoinPool.commonPool-worker-1
+254: ForkJoinPool.commonPool-worker-2
+251: main
+255: ForkJoinPool.commonPool-worker-3
+257: ForkJoinPool.commonPool-worker-1
+257: ForkJoinPool.commonPool-worker-2
+259: ForkJoinPool.commonPool-worker-3
+261: ForkJoinPool.commonPool-worker-1
+261: ForkJoinPool.commonPool-worker-2
+262: ForkJoinPool.commonPool-worker-3
+263: ForkJoinPool.commonPool-worker-1
+264: ForkJoinPool.commonPool-worker-2
+265: ForkJoinPool.commonPool-worker-3
+267: ForkJoinPool.commonPool-worker-1
+267: ForkJoinPool.commonPool-worker-2
+261: main
+268: ForkJoinPool.commonPool-worker-3
+269: ForkJoinPool.commonPool-worker-1
+270: ForkJoinPool.commonPool-worker-2
+272: ForkJoinPool.commonPool-worker-3
+273: ForkJoinPool.commonPool-worker-1
+276: ForkJoinPool.commonPool-worker-3
+276: ForkJoinPool.commonPool-worker-1
+274: ForkJoinPool.commonPool-worker-2
+277: ForkJoinPool.commonPool-worker-3
+279: ForkJoinPool.commonPool-worker-1
+279: ForkJoinPool.commonPool-worker-2
+275: main
+281: ForkJoinPool.commonPool-worker-1
+280: ForkJoinPool.commonPool-worker-3
+282: ForkJoinPool.commonPool-worker-2
+285: ForkJoinPool.commonPool-worker-1
+286: ForkJoinPool.commonPool-worker-3
+286: ForkJoinPool.commonPool-worker-2
+288: ForkJoinPool.commonPool-worker-1
+289: ForkJoinPool.commonPool-worker-3
+289: ForkJoinPool.commonPool-worker-2
+286: main
+291: ForkJoinPool.commonPool-worker-1
+292: ForkJoinPool.commonPool-worker-3
+293: ForkJoinPool.commonPool-worker-2
+293: main
+296: ForkJoinPool.commonPool-worker-3
+296: ForkJoinPool.commonPool-worker-2
+297: main
+297: ForkJoinPool.commonPool-worker-1
+299: ForkJoinPool.commonPool-worker-3
+299: ForkJoinPool.commonPool-worker-2
+301: main
+301: ForkJoinPool.commonPool-worker-1
+303: ForkJoinPool.commonPool-worker-3
+303: ForkJoinPool.commonPool-worker-2
+305: main
+305: ForkJoinPool.commonPool-worker-1
+307: ForkJoinPool.commonPool-worker-3
+307: ForkJoinPool.commonPool-worker-2
+309: main
+309: ForkJoinPool.commonPool-worker-1
+311: ForkJoinPool.commonPool-worker-3
+311: ForkJoinPool.commonPool-worker-2
+313: main
+313: ForkJoinPool.commonPool-worker-1
+315: ForkJoinPool.commonPool-worker-3
+315: ForkJoinPool.commonPool-worker-2
+317: ForkJoinPool.commonPool-worker-1
+319: ForkJoinPool.commonPool-worker-3
+319: ForkJoinPool.commonPool-worker-2
+320: ForkJoinPool.commonPool-worker-1
+322: ForkJoinPool.commonPool-worker-3
+317: main
+323: ForkJoinPool.commonPool-worker-1
+322: ForkJoinPool.commonPool-worker-2
+324: ForkJoinPool.commonPool-worker-3
+328: main
+328: ForkJoinPool.commonPool-worker-3
+328: ForkJoinPool.commonPool-worker-2
+330: ForkJoinPool.commonPool-worker-3
+329: main
+331: ForkJoinPool.commonPool-worker-2
+332: ForkJoinPool.commonPool-worker-3
+334: ForkJoinPool.commonPool-worker-2
+335: main
+335: ForkJoinPool.commonPool-worker-3
+337: ForkJoinPool.commonPool-worker-2
+338: main
+338: ForkJoinPool.commonPool-worker-3
+340: ForkJoinPool.commonPool-worker-2
+341: main
+341: ForkJoinPool.commonPool-worker-3
+343: ForkJoinPool.commonPool-worker-2
+343: main
+344: ForkJoinPool.commonPool-worker-3
+346: ForkJoinPool.commonPool-worker-2
+347: main
+347: ForkJoinPool.commonPool-worker-3
+349: ForkJoinPool.commonPool-worker-2
+350: main
+350: ForkJoinPool.commonPool-worker-3
+351: ForkJoinPool.commonPool-worker-2
+353: main
+353: ForkJoinPool.commonPool-worker-3
+355: ForkJoinPool.commonPool-worker-2
+356: main
+356: ForkJoinPool.commonPool-worker-3
+358: ForkJoinPool.commonPool-worker-2
+359: main
+359: ForkJoinPool.commonPool-worker-3
+361: ForkJoinPool.commonPool-worker-2
+362: main
+362: ForkJoinPool.commonPool-worker-3
+365: main
+364: ForkJoinPool.commonPool-worker-2
+365: ForkJoinPool.commonPool-worker-3
+366: main
+368: ForkJoinPool.commonPool-worker-2
+369: main
+369: ForkJoinPool.commonPool-worker-3
+372: ForkJoinPool.commonPool-worker-3
+371: ForkJoinPool.commonPool-worker-2
+372: main
+374: ForkJoinPool.commonPool-worker-3
+374: ForkJoinPool.commonPool-worker-2
+376: ForkJoinPool.commonPool-worker-3
+377: ForkJoinPool.commonPool-worker-2
+378: ForkJoinPool.commonPool-worker-3
+376: main
+379: ForkJoinPool.commonPool-worker-2
+380: ForkJoinPool.commonPool-worker-3
+382: ForkJoinPool.commonPool-worker-2
+383: ForkJoinPool.commonPool-worker-3
+384: ForkJoinPool.commonPool-worker-2
+385: ForkJoinPool.commonPool-worker-3
+383: main
+386: ForkJoinPool.commonPool-worker-2
+387: ForkJoinPool.commonPool-worker-3
+390: ForkJoinPool.commonPool-worker-2
+390: ForkJoinPool.commonPool-worker-3
+392: ForkJoinPool.commonPool-worker-2
+392: ForkJoinPool.commonPool-worker-3
+390: main
+394: ForkJoinPool.commonPool-worker-2
+394: ForkJoinPool.commonPool-worker-3
+397: ForkJoinPool.commonPool-worker-2
+397: ForkJoinPool.commonPool-worker-3
+399: ForkJoinPool.commonPool-worker-2
+397: main
+400: ForkJoinPool.commonPool-worker-3
+401: ForkJoinPool.commonPool-worker-3
+401: ForkJoinPool.commonPool-worker-2
+404: ForkJoinPool.commonPool-worker-3
+404: ForkJoinPool.commonPool-worker-2
+403: main
+406: ForkJoinPool.commonPool-worker-3
+406: ForkJoinPool.commonPool-worker-2
+408: main
+409: ForkJoinPool.commonPool-worker-3
+409: ForkJoinPool.commonPool-worker-2
+411: main
+412: ForkJoinPool.commonPool-worker-3
+412: ForkJoinPool.commonPool-worker-2
+414: main
+414: ForkJoinPool.commonPool-worker-3
+415: ForkJoinPool.commonPool-worker-2
+418: ForkJoinPool.commonPool-worker-3
+418: ForkJoinPool.commonPool-worker-2
+419: ForkJoinPool.commonPool-worker-3
+420: ForkJoinPool.commonPool-worker-2
+421: ForkJoinPool.commonPool-worker-3
+422: ForkJoinPool.commonPool-worker-2
+423: ForkJoinPool.commonPool-worker-3
+424: ForkJoinPool.commonPool-worker-2
+425: ForkJoinPool.commonPool-worker-3
+426: ForkJoinPool.commonPool-worker-2
+427: ForkJoinPool.commonPool-worker-3
+428: ForkJoinPool.commonPool-worker-2
+430: ForkJoinPool.commonPool-worker-2
+430: ForkJoinPool.commonPool-worker-3
+432: ForkJoinPool.commonPool-worker-3
+432: ForkJoinPool.commonPool-worker-2
+433: ForkJoinPool.commonPool-worker-3
+434: ForkJoinPool.commonPool-worker-2
+435: ForkJoinPool.commonPool-worker-3
+436: ForkJoinPool.commonPool-worker-2
+437: ForkJoinPool.commonPool-worker-3
+438: ForkJoinPool.commonPool-worker-2
+439: ForkJoinPool.commonPool-worker-3
+440: ForkJoinPool.commonPool-worker-2
+441: ForkJoinPool.commonPool-worker-3
+442: ForkJoinPool.commonPool-worker-2
+443: ForkJoinPool.commonPool-worker-3
+444: ForkJoinPool.commonPool-worker-2
+445: ForkJoinPool.commonPool-worker-3
+446: ForkJoinPool.commonPool-worker-2
+447: ForkJoinPool.commonPool-worker-3
+448: ForkJoinPool.commonPool-worker-2
+449: ForkJoinPool.commonPool-worker-3
+450: ForkJoinPool.commonPool-worker-2
+451: ForkJoinPool.commonPool-worker-3
+452: ForkJoinPool.commonPool-worker-2
+453: ForkJoinPool.commonPool-worker-3
+454: ForkJoinPool.commonPool-worker-2
+456: ForkJoinPool.commonPool-worker-2
+455: ForkJoinPool.commonPool-worker-3
+458: ForkJoinPool.commonPool-worker-3
+457: ForkJoinPool.commonPool-worker-2
+459: ForkJoinPool.commonPool-worker-3
+460: ForkJoinPool.commonPool-worker-2
+461: ForkJoinPool.commonPool-worker-3
+462: ForkJoinPool.commonPool-worker-2
+463: ForkJoinPool.commonPool-worker-3
+464: ForkJoinPool.commonPool-worker-2
+465: ForkJoinPool.commonPool-worker-3
+466: ForkJoinPool.commonPool-worker-2
+467: ForkJoinPool.commonPool-worker-3
+468: ForkJoinPool.commonPool-worker-2
+469: ForkJoinPool.commonPool-worker-3
+470: ForkJoinPool.commonPool-worker-2
+471: ForkJoinPool.commonPool-worker-3
+472: ForkJoinPool.commonPool-worker-2
+473: ForkJoinPool.commonPool-worker-3
+474: ForkJoinPool.commonPool-worker-2
+475: ForkJoinPool.commonPool-worker-3
+476: ForkJoinPool.commonPool-worker-2
+477: ForkJoinPool.commonPool-worker-3
+478: ForkJoinPool.commonPool-worker-2
+479: ForkJoinPool.commonPool-worker-3
+480: ForkJoinPool.commonPool-worker-2
+482: ForkJoinPool.commonPool-worker-2
+481: ForkJoinPool.commonPool-worker-3
+484: ForkJoinPool.commonPool-worker-3
+484: ForkJoinPool.commonPool-worker-2
+327: ForkJoinPool.commonPool-worker-1
+485: ForkJoinPool.commonPool-worker-3
+486: ForkJoinPool.commonPool-worker-2
+488: ForkJoinPool.commonPool-worker-3
+488: ForkJoinPool.commonPool-worker-1
+489: ForkJoinPool.commonPool-worker-2
+490: ForkJoinPool.commonPool-worker-3
+491: ForkJoinPool.commonPool-worker-1
+492: ForkJoinPool.commonPool-worker-2
+495: ForkJoinPool.commonPool-worker-2
+493: ForkJoinPool.commonPool-worker-3
+496: ForkJoinPool.commonPool-worker-2
+497: ForkJoinPool.commonPool-worker-3
+499: ForkJoinPool.commonPool-worker-3
+500: ForkJoinPool.commonPool-worker-3
+501: ForkJoinPool.commonPool-worker-3
+502: ForkJoinPool.commonPool-worker-3
+503: ForkJoinPool.commonPool-worker-3
+504: ForkJoinPool.commonPool-worker-3
+505: ForkJoinPool.commonPool-worker-3
+506: ForkJoinPool.commonPool-worker-3
+507: ForkJoinPool.commonPool-worker-3
+508: ForkJoinPool.commonPool-worker-3
+509: ForkJoinPool.commonPool-worker-3
+510: ForkJoinPool.commonPool-worker-3
+511: ForkJoinPool.commonPool-worker-3
diff --git a/enums/PostOffice.java b/enums/PostOffice.java
index c5faa8cb4..2aef48f95 100644
--- a/enums/PostOffice.java
+++ b/enums/PostOffice.java
@@ -26,7 +26,7 @@ enum ReturnAddress {MISSING,OK1,OK2,OK3,OK4,OK5}
   public String details() {
     return toString() +
       ", General Delivery: " + generalDelivery +
-      ", Address Scanability: " + scannability +
+      ", Address Scannability: " + scannability +
       ", Address Readability: " + readability +
       ", Address Address: " + address +
       ", Return address: " + returnAddress;
@@ -138,52 +138,52 @@ public static void main(String[] args) {
   }
 }
 /* Output:
-Mail 0, General Delivery: NO2, Address Scanability:
+Mail 0, General Delivery: NO2, Address Scannability:
 UNSCANNABLE, Address Readability: YES3, Address
 Address: OK1, Return address: OK1
 Delivering Mail 0 normally
 *****
-Mail 1, General Delivery: NO5, Address Scanability:
+Mail 1, General Delivery: NO5, Address Scannability:
 YES3, Address Readability: ILLEGIBLE, Address Address:
 OK5, Return address: OK1
 Delivering Mail 1 automatically
 *****
-Mail 2, General Delivery: YES, Address Scanability:
+Mail 2, General Delivery: YES, Address Scannability:
 YES3, Address Readability: YES1, Address Address: OK1,
 Return address: OK5
 Using general delivery for Mail 2
 *****
-Mail 3, General Delivery: NO4, Address Scanability:
+Mail 3, General Delivery: NO4, Address Scannability:
 YES3, Address Readability: YES1, Address Address:
 INCORRECT, Return address: OK4
 Returning Mail 3 to sender
 *****
-Mail 4, General Delivery: NO4, Address Scanability:
+Mail 4, General Delivery: NO4, Address Scannability:
 UNSCANNABLE, Address Readability: YES1, Address
 Address: INCORRECT, Return address: OK2
 Returning Mail 4 to sender
 *****
-Mail 5, General Delivery: NO3, Address Scanability:
+Mail 5, General Delivery: NO3, Address Scannability:
 YES1, Address Readability: ILLEGIBLE, Address Address:
 OK4, Return address: OK2
 Delivering Mail 5 automatically
 *****
-Mail 6, General Delivery: YES, Address Scanability:
+Mail 6, General Delivery: YES, Address Scannability:
 YES4, Address Readability: ILLEGIBLE, Address Address:
 OK4, Return address: OK4
 Using general delivery for Mail 6
 *****
-Mail 7, General Delivery: YES, Address Scanability:
+Mail 7, General Delivery: YES, Address Scannability:
 YES3, Address Readability: YES4, Address Address: OK2,
 Return address: MISSING
 Using general delivery for Mail 7
 *****
-Mail 8, General Delivery: NO3, Address Scanability:
+Mail 8, General Delivery: NO3, Address Scannability:
 YES1, Address Readability: YES3, Address Address:
 INCORRECT, Return address: MISSING
 Mail 8 is a dead letter
 *****
-Mail 9, General Delivery: NO1, Address Scanability:
+Mail 9, General Delivery: NO1, Address Scannability:
 UNSCANNABLE, Address Readability: YES2, Address
 Address: OK1, Return address: OK4
 Delivering Mail 9 normally
diff --git a/enums/menu/Food.java b/enums/menu/Food.java
index 5592f9126..51f4a8a07 100644
--- a/enums/menu/Food.java
+++ b/enums/menu/Food.java
@@ -11,7 +11,7 @@ enum Appetizer implements Food {
   }
   enum MainCourse implements Food {
     LASAGNE, BURRITO, PAD_THAI,
-    LENTILS, HUMMOUS, VINDALOO;
+    LENTILS, HUMMUS, VINDALOO;
   }
   enum Dessert implements Food {
     TIRAMISU, GELATO, BLACK_FOREST_CAKE,
diff --git a/enums/menu/Meal2.java b/enums/menu/Meal2.java
index d5aea179c..0064926e0 100644
--- a/enums/menu/Meal2.java
+++ b/enums/menu/Meal2.java
@@ -21,7 +21,7 @@ enum Appetizer implements Food {
     }
     enum MainCourse implements Food {
       LASAGNE, BURRITO, PAD_THAI,
-      LENTILS, HUMMOUS, VINDALOO;
+      LENTILS, HUMMUS, VINDALOO;
     }
     enum Dessert implements Food {
       TIRAMISU, GELATO, BLACK_FOREST_CAKE,
diff --git a/equalshashcode/IndividualTest.java b/equalshashcode/IndividualTest.java
index 33bb9b96d..0be8de2d9 100644
--- a/equalshashcode/IndividualTest.java
+++ b/equalshashcode/IndividualTest.java
@@ -3,7 +3,7 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 import collections.MapOfList;
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class IndividualTest {
diff --git a/generics/CheckedList.java b/generics/CheckedList.java
index 26cae143a..71ebe3d0a 100644
--- a/generics/CheckedList.java
+++ b/generics/CheckedList.java
@@ -3,7 +3,7 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // Using Collection.checkedList()
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.*;
 
 public class CheckedList {
@@ -30,6 +30,6 @@ public static void main(String[] args) {
 }
 /* Output:
 Expected: java.lang.ClassCastException: Attempt to
-insert class typeinfo.pets.Cat element into collection
-with element type class typeinfo.pets.Dog
+insert class reflection.pets.Cat element into collection
+with element type class reflection.pets.Dog
 */
diff --git a/generics/DogsAndRobotMethodReferences.java b/generics/DogsAndRobotMethodReferences.java
index 612ef683e..2e9d003e5 100644
--- a/generics/DogsAndRobotMethodReferences.java
+++ b/generics/DogsAndRobotMethodReferences.java
@@ -3,7 +3,7 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // "Assisted Latent Typing"
-import typeinfo.pets.*;
+import reflection.pets.*;
 import java.util.function.*;
 
 class PerformingDogA extends Dog {
diff --git a/generics/DogsAndRobots.java b/generics/DogsAndRobots.java
index 4bbb9b440..228e363d3 100644
--- a/generics/DogsAndRobots.java
+++ b/generics/DogsAndRobots.java
@@ -3,7 +3,7 @@
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
 // No (direct) latent typing in Java
-import typeinfo.pets.*;
+import reflection.pets.*;
 
 class PerformingDog extends Dog implements Performs {
   @Override
diff --git a/generics/GenericHolder.java b/generics/GenericHolder.java
index 15cfbb9e1..b04aa17a8 100644
--- a/generics/GenericHolder.java
+++ b/generics/GenericHolder.java
@@ -10,7 +10,7 @@ public GenericHolder() {}
   public T get() { return a; }
   public static void main(String[] args) {
     GenericHolder h3 =
-      new GenericHolder();
+      new GenericHolder<>();
     h3.set(new Automobile()); // type checked
     Automobile a = h3.get(); // No cast needed
     //- h3.set("Not an Automobile"); // Error
diff --git a/gradle/subprojects.gradle b/gradle/subprojects.gradle
index e9d857d87..e4fb9764a 100644
--- a/gradle/subprojects.gradle
+++ b/gradle/subprojects.gradle
@@ -6,7 +6,7 @@ project(':validating') {
 
 project(':equalshashcode') {
     dependencies {
-        compile project(':typeinfo')
+        compile project(':reflection')
         compile project(':collections')
     }
 }
@@ -48,13 +48,13 @@ project(':hiding') {
 
 project(':generics') {
     dependencies {
-        compile project(':typeinfo')
+        compile project(':reflection')
     }
 }
 
 project(':collections') {
     dependencies {
-        compile project(':typeinfo')
+        compile project(':reflection')
     }
 }
 
diff --git a/housekeeping/Flower.java b/housekeeping/Flower.java
index ad90463c2..fa519d1d6 100644
--- a/housekeeping/Flower.java
+++ b/housekeeping/Flower.java
@@ -26,7 +26,7 @@ public class Flower {
   }
   Flower() {
     this("hi", 47);
-    System.out.println("no-arg constructor");
+    System.out.println("Zero-argument constructor");
   }
   void printPetalCount() {
     //- this(11); // Not inside non-constructor!
@@ -41,6 +41,6 @@ public static void main(String[] args) {
 /* Output:
 Constructor w/ int arg only, petalCount= 47
 String & int args
-no-arg constructor
+Zero-argument constructor
 petalCount = 47 s = hi
 */
diff --git a/housekeeping/OverloadingOrder.java b/housekeeping/OverloadingOrder.java
index e2cef3012..434768d77 100644
--- a/housekeeping/OverloadingOrder.java
+++ b/housekeeping/OverloadingOrder.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// Overloading based on the order of the arguments
+// Overloading based on parameter order
 
 public class OverloadingOrder {
   static void f(String s, int i) {
diff --git a/housekeeping/SimpleConstructor2.java b/housekeeping/SimpleConstructor2.java
index ae6936efc..2a002daf6 100644
--- a/housekeeping/SimpleConstructor2.java
+++ b/housekeeping/SimpleConstructor2.java
@@ -2,7 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
-// Constructors can have arguments
+// Constructors can have parameters
 
 class Rock2 {
   Rock2(int i) {
diff --git a/javadoc/Documentation3.java b/javadoc/Documentation3.java
index df0c403bb..c48351ea5 100644
--- a/javadoc/Documentation3.java
+++ b/javadoc/Documentation3.java
@@ -2,6 +2,7 @@
 // (c)2021 MindView LLC: see Copyright.txt
 // We make no guarantees that this code is fit for any purpose.
 // Visit http://OnJava8.com for more book information.
+
 /** You can even insert a list:
  * 
    *
  1. Item one @@ -9,4 +10,5 @@ *
  2. Item three *
*/ + public class Documentation3 {} diff --git a/onjava/BasicSupplier.java b/onjava/BasicSupplier.java index 838d37861..45bb58111 100644 --- a/onjava/BasicSupplier.java +++ b/onjava/BasicSupplier.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Supplier from a class with a no-arg constructor +// Supplier from a class with a zero-argument constructor package onjava; import java.util.function.*; import java.lang.reflect.InvocationTargetException; diff --git a/onjava/Countries.java b/onjava/Countries.java index 13764b647..666dda293 100644 --- a/onjava/Countries.java +++ b/onjava/Countries.java @@ -130,7 +130,7 @@ public class Countries { {"MOLDOVA","Chisinau"}, {"RUSSIA","Moscow"}, {"TAJIKISTAN","Dushanbe"}, - {"TURKMENISTAN","Ashkabad"}, + {"TURKMENISTAN","Ashkhabad"}, {"UKRAINE","Kyiv"}, {"UZBEKISTAN","Tashkent"}, // Europe diff --git a/onjava/MouseClick.java b/onjava/MouseClick.java index 1bfa28e95..ea7e530da 100644 --- a/onjava/MouseClick.java +++ b/onjava/MouseClick.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Helper interface to allow lambda expressions +// Helper interface to allow lambda expressions. package onjava; import java.awt.event.*; diff --git a/onjava/atunit/AtUnit.java b/onjava/atunit/AtUnit.java index 7288c2f4b..976010884 100644 --- a/onjava/atunit/AtUnit.java +++ b/onjava/atunit/AtUnit.java @@ -63,11 +63,11 @@ public class AtUnit implements ProcessFiles.Strategy { .getDeclaredConstructor() .getModifiers())) { System.out.println("Error: " + testClass + - " no-arg constructor must be public"); + " zero-argument constructor must be public"); System.exit(1); } } catch(NoSuchMethodException e) { - // Synthesized no-arg constructor; OK + // Synthesized zero-argument constructor; OK } System.out.println(testClass.getName()); } @@ -159,7 +159,7 @@ Method checkForCleanupMethod(Method m) { throw new RuntimeException("Couldn't run " + "@TestObject (creator) method."); } - } else { // Use the no-arg constructor: + } else { // Use the zero-argument constructor: try { return testClass .getConstructor().newInstance(); diff --git a/patterns/BoxObserver.java b/patterns/BoxObserver.java index db25c5ea2..b48120bc1 100644 --- a/patterns/BoxObserver.java +++ b/patterns/BoxObserver.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Demonstration of Observer pattern using +// Demonstration of the Observer pattern using // Java's built-in observer classes. // {ExcludeFromGradle} // Won't work under WSL2 import javax.swing.*; @@ -12,46 +12,34 @@ import onjava.*; import onjava.MouseClick; -// You must inherit a new type of Observable: @SuppressWarnings("deprecation") -class BoxObservable extends Observable { - @Override - public void notifyObservers(Object b) { - // Otherwise it won't propagate changes: - setChanged(); - super.notifyObservers(b); - } -} - -@SuppressWarnings("deprecation") -public class BoxObserver extends JFrame { - Observable notifier = new BoxObservable(); - public BoxObserver(int grid) { +class Boxes extends JFrame { + Observable notifier = new Observable() { + @Override + public void notifyObservers(Object b) { + setChanged(); + super.notifyObservers(b); + } + }; + public Boxes(int grid) { setTitle("Demonstrates Observer pattern"); Container cp = getContentPane(); cp.setLayout(new GridLayout(grid, grid)); for(int x = 0; x < grid; x++) for(int y = 0; y < grid; y++) - cp.add(new OCBox(x, y, notifier)); - } - public static void main(String[] args) { - // For automated test runs: - // new TimedAbort(4); - int grid = 8; - if(args.length > 0) - grid = Integer.parseInt(args[0]); - JFrame f = new BoxObserver(grid); - f.setSize(500, 400); - f.setVisible(true); - f.setDefaultCloseOperation(DISPOSE_ON_CLOSE); + cp.add(new Box(x, y, notifier)); + setSize(500, 400); + setVisible(true); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); } } @SuppressWarnings("deprecation") -class OCBox extends JPanel implements Observer { - Observable notifier; - int x, y; // Locations in grid - Color cColor = newColor(); +class Box extends JPanel implements Observer { + int x, y; // Location in grid + Color color = COLORS[ + (int)(Math.random() * COLORS.length) + ]; static final Color[] COLORS = { Color.black, Color.blue, Color.cyan, Color.darkGray, Color.gray, Color.green, @@ -59,35 +47,38 @@ class OCBox extends JPanel implements Observer { Color.orange, Color.pink, Color.red, Color.white, Color.yellow }; - static Color newColor() { - return COLORS[ - (int)(Math.random() * COLORS.length) - ]; - } - OCBox(int x, int y, Observable notifier) { + Box(int x, int y, Observable notifier) { this.x = x; this.y = y; notifier.addObserver(this); - this.notifier = notifier; addMouseListener((MouseClick) - e -> notifier.notifyObservers(OCBox.this)); + e -> notifier.notifyObservers(Box.this)); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); - g.setColor(cColor); + g.setColor(color); Dimension s = getSize(); g.fillRect(0, 0, s.width, s.height); } @Override public void update(Observable o, Object arg) { - OCBox clicked = (OCBox)arg; + Box clicked = (Box)arg; if(nextTo(clicked)) { - cColor = clicked.cColor; + color = clicked.color; repaint(); } } - private boolean nextTo(OCBox b) { + private boolean nextTo(Box b) { return Math.abs(x - b.x) <= 1 && Math.abs(y - b.y) <= 1; } } + +public class BoxObserver { + public static void main(String[] args) { + int grid = 8; + if(args.length > 0) + grid = Integer.parseInt(args[0]); + new Boxes(grid); + } +} diff --git a/patterns/CleanTheFloor.java b/patterns/CleanTheFloor.java new file mode 100644 index 000000000..8196f44bd --- /dev/null +++ b/patterns/CleanTheFloor.java @@ -0,0 +1,42 @@ +// patterns/CleanTheFloor.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// State with different compositional interface. + +class FloorCleaner { + private Attachment attachment = new Vacuum(); + public void change(Attachment newAttachment) { + attachment = newAttachment; + } + public void clean() { attachment.action(); } +} + +interface Attachment { + void action(); +} + +class Vacuum implements Attachment { + @Override public void action() { + System.out.println("Vacuuming"); + } +} + +class Mop implements Attachment { + @Override public void action() { + System.out.println("Mopping"); + } +} + +public class CleanTheFloor { + public static void main(String[] args) { + FloorCleaner floorCleaner = new FloorCleaner(); + floorCleaner.clean(); + floorCleaner.change(new Mop()); + floorCleaner.clean(); + } +} +/* Output: +Vacuuming +Mopping +*/ diff --git a/patterns/CommandPattern.java b/patterns/CommandPattern.java index 1a9612247..05bc61202 100644 --- a/patterns/CommandPattern.java +++ b/patterns/CommandPattern.java @@ -4,16 +4,23 @@ // Visit http://OnJava8.com for more book information. import java.util.*; +class Command { + public final String msg; + public Command(String msg) { + this.msg = msg; + } +} + public class CommandPattern { + public static void show(Command cmd) { + System.out.println(cmd.msg); + } public static void main(String[] args) { - List macro = Arrays.asList( - () -> System.out.print("Hello "), - () -> System.out.print("World! "), - () -> System.out.print("I'm the command pattern!") - ); - macro.forEach(Runnable::run); + show(new Command("First Command")); + show(new Command("Second Command")); } } /* Output: -Hello World! I'm the command pattern! +First Command +Second Command */ diff --git a/patterns/Macro.java b/patterns/Macro.java new file mode 100644 index 000000000..586b128ea --- /dev/null +++ b/patterns/Macro.java @@ -0,0 +1,25 @@ +// patterns/Macro.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +import java.util.*; + +public class Macro { + public static void main(String[] args) { + List macro = new ArrayList<>( + Arrays.asList( + () -> System.out.print("Hello "), + () -> System.out.println("World! ") + )); + macro.forEach(Runnable::run); + macro.add( + () -> System.out.print("I'm the command pattern!") + ); + macro.forEach(Runnable::run); + } +} +/* Output: +Hello World! +Hello World! +I'm the command pattern! +*/ diff --git a/patterns/PaperScissorsRock.java b/patterns/PaperScissorsRock.java index 54063d6c7..ce48dd4d5 100644 --- a/patterns/PaperScissorsRock.java +++ b/patterns/PaperScissorsRock.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Demonstration of multiple dispatching +// Demonstration of multiple dispatching. import java.util.*; import java.util.function.*; import java.util.stream.*; diff --git a/patterns/ProxyDemo.java b/patterns/ProxyDemo.java index 011fbe7ec..31f45aedb 100644 --- a/patterns/ProxyDemo.java +++ b/patterns/ProxyDemo.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Simple demonstration of the Proxy pattern +// Basic demonstration of the Proxy pattern. interface ProxyBase { void f(); @@ -11,10 +11,8 @@ interface ProxyBase { } class Proxy implements ProxyBase { - private ProxyBase implementation; - Proxy() { - implementation = new Implementation(); - } + private ProxyBase implementation = + new Implementation(); // Pass method calls to the implementation: @Override public void f() { implementation.f(); } diff --git a/patterns/Resource.java b/patterns/Resource.java new file mode 100644 index 000000000..1a8ceda50 --- /dev/null +++ b/patterns/Resource.java @@ -0,0 +1,9 @@ +// patterns/Resource.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +public interface Resource { + T get(); + void set(T x); +} diff --git a/patterns/ShapeFactory1.java b/patterns/ShapeFactory1.java index 950c97c55..a47b75b7d 100644 --- a/patterns/ShapeFactory1.java +++ b/patterns/ShapeFactory1.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// A simple static factory method +// A basic static factory method. import java.util.*; import java.util.stream.*; import patterns.shapes.*; diff --git a/patterns/ShapeFactory2.java b/patterns/ShapeFactory2.java index e8206ba2f..552e36306 100644 --- a/patterns/ShapeFactory2.java +++ b/patterns/ShapeFactory2.java @@ -8,9 +8,9 @@ import patterns.shapes.*; public class ShapeFactory2 implements FactoryMethod { - Map factories = + private Map factories = new HashMap<>(); - static Constructor load(String id) { + private static Constructor load(String id) { System.out.println("loading " + id); try { return Class.forName("patterns.shapes." + id) diff --git a/patterns/ShapeFactory3.java b/patterns/ShapeFactory3.java index fdf7b2700..6571c5362 100644 --- a/patterns/ShapeFactory3.java +++ b/patterns/ShapeFactory3.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Polymorphic factory methods +// Polymorphic factory methods. import java.util.*; import java.util.function.*; import java.util.stream.*; @@ -19,14 +19,15 @@ class RandomShapes implements Supplier { this.factories = factories; } @Override public Shape get() { - return factories[ - rand.nextInt(factories.length)].create(); + return + factories[rand.nextInt(factories.length)] + .create(); } } public class ShapeFactory3 { public static void main(String[] args) { - RandomShapes rs = new RandomShapes( + RandomShapes rs = new RandomShapes( // [1] Circle::new, Square::new, Triangle::new ); Stream.generate(rs) diff --git a/patterns/Single.java b/patterns/Single.java new file mode 100644 index 000000000..6bdb2d6e8 --- /dev/null +++ b/patterns/Single.java @@ -0,0 +1,18 @@ +// patterns/Single.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +@SuppressWarnings("unchecked") +public final class Single { + private static Object single; // [1] + public Single(T val) { + if(single != null) + throw new RuntimeException( + "Attempt to reassign Single<" + + val.getClass().getSimpleName() + ">" + ); + single = val; + } + public T get() { return (T)single; } +} diff --git a/patterns/SingletonPattern.java b/patterns/SingletonPattern.java index 2ff8de0d5..3ed313e6c 100644 --- a/patterns/SingletonPattern.java +++ b/patterns/SingletonPattern.java @@ -3,58 +3,45 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -interface Resource { - int getValue(); - void setValue(int x); -} - -// This isn't inherited from a Cloneable -// base class and cloneability isn't added so -// making it final prevents cloneability from -// being added through inheritance. This also -// implements thread-safe lazy initialization: - -final class Singleton { - private static final class - ResourceImpl implements Resource { - private int i; - private ResourceImpl(int i) { - this.i = i; - } - @Override - public synchronized int getValue() { - return i; - } - @Override - public synchronized void setValue(int x) { - i = x; - } +final class IntegerSingleton + implements Resource { + private static IntegerSingleton value = + new IntegerSingleton(); + private Integer i = Integer.valueOf(0); + private IntegerSingleton() { + System.out.println("IntegerSingleton()"); } - private static class ResourceHolder { - private static Resource resource = - new ResourceImpl(47); - } - public static Resource getResource() { - return ResourceHolder.resource; + public static IntegerSingleton instance() { + return value; } + @Override public synchronized + Integer get() { return i; } + @Override public synchronized + void set(Integer x) { i = x; } } public class SingletonPattern { + public static void show(Resource r) { + T val = r.get(); + System.out.println(val); + } + public static void put(Resource r, T val) { + r.set(val); + } public static void main(String[] args) { - Resource r = Singleton.getResource(); - System.out.println(r.getValue()); - Resource s2 = Singleton.getResource(); - s2.setValue(9); - System.out.println(r.getValue()); - try { - // Can't do this: compile-time error. - // Singleton s3 = (Singleton)s2.clone(); - } catch(Exception e) { - throw new RuntimeException(e); - } + System.out.println("Inside main()"); + Resource ir = + IntegerSingleton.instance(); + Resource ir2 = + IntegerSingleton.instance(); + show(ir); + put(ir2, Integer.valueOf(9)); + show(ir); } } /* Output: -47 +Inside main() +IntegerSingleton() +0 9 */ diff --git a/patterns/SingletonPattern2.java b/patterns/SingletonPattern2.java new file mode 100644 index 000000000..c02fa9f20 --- /dev/null +++ b/patterns/SingletonPattern2.java @@ -0,0 +1,16 @@ +// patterns/SingletonPattern2.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +public class SingletonPattern2 { + public static void main(String[] args) { + Single pi = + new Single<>(Double.valueOf(3.14159)); + Double x = pi.get(); + System.out.println(x); + } +} +/* Output: +3.14159 +*/ diff --git a/patterns/SingletonPattern3.java b/patterns/SingletonPattern3.java new file mode 100644 index 000000000..7aee59f08 --- /dev/null +++ b/patterns/SingletonPattern3.java @@ -0,0 +1,33 @@ +// patterns/SingletonPattern3.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +class MyString { + private String s; + public MyString(String s) { + this.s = s; + } + public synchronized + void change(String s) { + this.s = s; + } + @Override public synchronized + String toString() { + return s; + } +} + +public class SingletonPattern3 { + public static void main(String[] args) { + Single x = + new Single<>(new MyString("Hello")); + System.out.println(x.get()); + x.get().change("World!"); + System.out.println(x.get()); + } +} +/* Output: +Hello +World! +*/ diff --git a/patterns/StateDemo.java b/patterns/StateDemo.java index 0a564bfa2..e96bac6ff 100644 --- a/patterns/StateDemo.java +++ b/patterns/StateDemo.java @@ -2,34 +2,24 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Simple demonstration of the State pattern +// Basic demonstration of the State pattern. -interface StateBase { - void f(); - void g(); - void h(); - void changeImp(StateBase newImp); -} - -class State implements StateBase { - private StateBase implementation; - State(StateBase imp) { +class State { + private State implementation; + protected State() {} + public State(State imp) { implementation = imp; } - @Override - public void changeImp(StateBase newImp) { + public void change(State newImp) { implementation = newImp; } - // Pass method calls to the implementation: - @Override + // Forward method calls to the implementation: public void f() { implementation.f(); } - @Override public void g() { implementation.g(); } - @Override public void h() { implementation.h(); } } -class Implementation1 implements StateBase { +class Implementation1 extends State { @Override public void f() { System.out.println("Implementation1.f()"); } @@ -39,11 +29,9 @@ class Implementation1 implements StateBase { @Override public void h() { System.out.println("Implementation1.h()"); } - @Override - public void changeImp(StateBase newImp) {} } -class Implementation2 implements StateBase { +class Implementation2 extends State { @Override public void f() { System.out.println("Implementation2.f()"); } @@ -53,28 +41,27 @@ class Implementation2 implements StateBase { @Override public void h() { System.out.println("Implementation2.h()"); } - @Override - public void changeImp(StateBase newImp) {} } public class StateDemo { - static void test(StateBase b) { - b.f(); - b.g(); - b.h(); + static void test(State s) { + s.f(); + s.g(); + s.h(); } public static void main(String[] args) { - StateBase b = - new State(new Implementation1()); - test(b); - b.changeImp(new Implementation2()); - test(b); + State s = new State(new Implementation1()); + test(s); + System.out.println("Changing implementation"); + s.change(new Implementation2()); + test(s); } } /* Output: Implementation1.f() Implementation1.g() Implementation1.h() +Changing implementation Implementation2.f() Implementation2.g() Implementation2.h() diff --git a/patterns/TemplateMethod.java b/patterns/TemplateMethod.java index 2df6a3d4c..e9774e183 100644 --- a/patterns/TemplateMethod.java +++ b/patterns/TemplateMethod.java @@ -2,29 +2,29 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Simple demonstration of Template Method +// Basic Template Method pattern. import java.util.stream.*; abstract class ApplicationFramework { ApplicationFramework() { templateMethod(); } - abstract void customize1(); - abstract void customize2(); + abstract void customize1(int n); + abstract void customize2(int n); // "private" means automatically "final": private void templateMethod() { IntStream.range(0, 5).forEach( - n -> { customize1(); customize2(); }); + n -> { customize1(n); customize2(n); }); } } -// Create a new "application": +// Create a new application: class MyApp extends ApplicationFramework { - @Override void customize1() { - System.out.print("Hello "); + @Override void customize1(int n) { + System.out.print("customize1 " + n); } - @Override void customize2() { - System.out.println("World!"); + @Override void customize2(int n) { + System.out.println(" customize2 " + n); } } @@ -34,9 +34,9 @@ public static void main(String[] args) { } } /* Output: -Hello World! -Hello World! -Hello World! -Hello World! -Hello World! +customize1 0 customize2 0 +customize1 1 customize2 1 +customize1 2 customize2 2 +customize1 3 customize2 3 +customize1 4 customize2 4 */ diff --git a/patterns/TestSingle.java b/patterns/TestSingle.java new file mode 100644 index 000000000..209f06477 --- /dev/null +++ b/patterns/TestSingle.java @@ -0,0 +1,20 @@ +// patterns/TestSingle.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +public class TestSingle { + public static void main(String[] args) { + Single ss = new Single<>("hello"); + System.out.println(ss.get()); + try { + Single ss2 = new Single<>("world"); + } catch(Exception e) { + System.out.println(e.getMessage()); + } + } +} +/* Output: +hello +Attempt to reassign Single +*/ diff --git a/patterns/TypeMap.java b/patterns/TypeMap.java new file mode 100644 index 000000000..db2f393a7 --- /dev/null +++ b/patterns/TypeMap.java @@ -0,0 +1,21 @@ +// patterns/TypeMap.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Generic TypeMap works for any types. +package patterns; +import java.util.*; +import java.util.stream.*; + +public class TypeMap { + public final Map> map = + new HashMap<>(); + public void add(T o) { + Class type = o.getClass(); + map.computeIfAbsent(type, + k -> new ArrayList()).add(o); + } + public Stream> values() { + return map.values().stream(); + } +} diff --git a/patterns/abstractfactory/GameEnvironment.java b/patterns/abstractfactory/GameEnvironment.java index a990562da..51b42d553 100644 --- a/patterns/abstractfactory/GameEnvironment.java +++ b/patterns/abstractfactory/GameEnvironment.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// An example of the Abstract Factory pattern +// An example of the Abstract Factory pattern. // {java patterns.abstractfactory.GameEnvironment} package patterns.abstractfactory; import java.util.function.*; @@ -23,10 +23,10 @@ public void interactWith(Obstacle ob) { } } -class KungFuGuy implements Player { +class Fighter implements Player { @Override public void interactWith(Obstacle ob) { - System.out.print("KungFuGuy now battles a "); + System.out.print("Fighter now battles a "); ob.action(); } } @@ -37,9 +37,9 @@ class Puzzle implements Obstacle { } } -class NastyWeapon implements Obstacle { +class Weapon implements Obstacle { @Override public void action() { - System.out.println("NastyWeapon"); + System.out.println("Weapon"); } } @@ -58,11 +58,11 @@ class KittiesAndPuzzles } } -class KillAndDismember +class Melee extends GameElementFactory { - KillAndDismember() { - player = KungFuGuy::new; - obstacle = NastyWeapon::new; + Melee() { + player = Fighter::new; + obstacle = Weapon::new; } } @@ -80,15 +80,15 @@ public void play() { public static void main(String[] args) { GameElementFactory kp = new KittiesAndPuzzles(), - kd = new KillAndDismember(); + ml = new Melee(); GameEnvironment g1 = new GameEnvironment(kp), - g2 = new GameEnvironment(kd); + g2 = new GameEnvironment(ml); g1.play(); g2.play(); } } /* Output: Kitty has encountered a Puzzle -KungFuGuy now battles a NastyWeapon +Fighter now battles a Weapon */ diff --git a/patterns/adapt/Adapter.java b/patterns/adapt/Adapter.java index 0e847f365..0b3a0919f 100644 --- a/patterns/adapt/Adapter.java +++ b/patterns/adapt/Adapter.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Variations on the Adapter pattern +// Variations on the Adapter pattern. // {java patterns.adapt.Adapter} package patterns.adapt; diff --git a/patterns/chain/ChainOfResponsibility.java b/patterns/chain/ChainOfResponsibility.java index 737c3c205..b291c3e00 100644 --- a/patterns/chain/ChainOfResponsibility.java +++ b/patterns/chain/ChainOfResponsibility.java @@ -2,55 +2,32 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Using the Functional interface // {java patterns.chain.ChainOfResponsibility} package patterns.chain; import java.util.*; import java.util.function.*; -class Result { - boolean success; - List line; - Result(List data) { - success = true; - line = data; - } - Result() { - success = false; - line = Collections.emptyList(); - } -} - -class Fail extends Result {} - interface Algorithm { Result algorithm(List line); } class FindMinima { - public static Result leastSquares(List line) { - System.out.println("LeastSquares.algorithm"); - boolean weSucceed = false; - if(weSucceed) // Actual test/calculation here - return new Result(Arrays.asList(1.1, 2.2)); + public static Result test( + boolean success, String id, double d1, double d2) { + System.out.println(id); + if(success) // Actual test/calculation here + return new Result(Arrays.asList(d1, d2)); else // Try the next one in the chain: - return new Fail(); + return Result.fail; + } + public static Result leastSquares(List line) { + return test(false, "LeastSquares", 1.1, 2.2); } public static Result perturbation(List line) { - System.out.println("Perturbation.algorithm"); - boolean weSucceed = false; - if(weSucceed) // Actual test/calculation here - return new Result(Arrays.asList(3.3, 4.4)); - else - return new Fail(); + return test(false, "Perturbation", 3.3, 4.4); } public static Result bisection(List line) { - System.out.println("Bisection.algorithm"); - boolean weSucceed = true; - if(weSucceed) // Actual test/calculation here - return new Result(Arrays.asList(5.5, 6.6)); - else - return new Fail(); + return test(true, "Bisection", 5.5, 6.6); } static List, Result>> algorithms = Arrays.asList( @@ -65,7 +42,7 @@ public static Result minima(List line) { if(result.success) return result; } - return new Fail(); + return Result.fail; } } @@ -83,8 +60,8 @@ public static void main(String[] args) { } } /* Output: -LeastSquares.algorithm -Perturbation.algorithm -Bisection.algorithm +LeastSquares +Perturbation +Bisection [5.5, 6.6] */ diff --git a/patterns/chain/Result.java b/patterns/chain/Result.java new file mode 100644 index 000000000..dc459b399 --- /dev/null +++ b/patterns/chain/Result.java @@ -0,0 +1,21 @@ +// patterns/chain/Result.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Carries the result or indicates failure. +package patterns.chain; +import java.util.*; + +public class Result { + public final boolean success; + public final List line; + public Result(List data) { + success = true; + line = data; + } + private Result() { + success = false; + line = Collections.emptyList(); + } + public static final Result fail = new Result(); +} diff --git a/patterns/doubledispatch/Aluminum.java b/patterns/doubledispatch/Aluminum.java index f48a2077c..9f5678b11 100644 --- a/patterns/doubledispatch/Aluminum.java +++ b/patterns/doubledispatch/Aluminum.java @@ -2,13 +2,13 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Aluminum for double dispatching +// Aluminum with double dispatching. package patterns.doubledispatch; import patterns.trash.*; import java.util.*; public class Aluminum extends patterns.trash.Aluminum - implements TypedBinMember { +implements TypedBinMember { public Aluminum(double wt) { super(wt); } @Override public boolean addToBin(List tbins) { diff --git a/patterns/doubledispatch/Cardboard.java b/patterns/doubledispatch/Cardboard.java index 2150328f7..390292322 100644 --- a/patterns/doubledispatch/Cardboard.java +++ b/patterns/doubledispatch/Cardboard.java @@ -2,13 +2,13 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Cardboard for double dispatching +// Cardboard with double dispatching. package patterns.doubledispatch; import patterns.trash.*; import java.util.*; public class Cardboard extends patterns.trash.Cardboard - implements TypedBinMember { +implements TypedBinMember { public Cardboard(double wt) { super(wt); } @Override public boolean addToBin(List tbins) { diff --git a/patterns/doubledispatch/DoubleDispatch.java b/patterns/doubledispatch/DoubleDispatch.java index f65d26805..d1ddfe253 100644 --- a/patterns/doubledispatch/DoubleDispatch.java +++ b/patterns/doubledispatch/DoubleDispatch.java @@ -3,90 +3,104 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using multiple dispatching to handle more -// than one unknown type during a method call +// than one unknown type during a method call. // {java patterns.doubledispatch.DoubleDispatch} package patterns.doubledispatch; import patterns.trash.*; import java.util.*; class AluminumBin extends TypedBin { + public AluminumBin() { super("Aluminum"); } @Override public boolean add(Aluminum a) { return addIt(a); } } class PaperBin extends TypedBin { + public PaperBin() { super("Paper"); } @Override public boolean add(Paper a) { return addIt(a); } } class GlassBin extends TypedBin { + public GlassBin() { super("Glass"); } @Override public boolean add(Glass a) { return addIt(a); } } class CardboardBin extends TypedBin { + public CardboardBin() { super("Cardboard"); } @Override public boolean add(Cardboard a) { return addIt(a); } } class TrashBinSet { - private List binSet = Arrays.asList( - new AluminumBin(), - new PaperBin(), - new GlassBin(), - new CardboardBin() - ); + public final List binSet = + Arrays.asList( + new AluminumBin(), new PaperBin(), + new GlassBin(), new CardboardBin() + ); @SuppressWarnings("unchecked") public void sortIntoBins(List bin) { bin.forEach( aBin -> { TypedBinMember t = (TypedBinMember)aBin; if(!t.addToBin(binSet)) - System.err.println("Couldn't add " + t); + throw new RuntimeException( + "sortIntoBins() couldn't add " + t); }); } - public List binSet() { return binSet; } } public class DoubleDispatch { public static void main(String[] args) { List bin = new ArrayList<>(); - TrashBinSet bins = new TrashBinSet(); - // ParseTrash still works, without changes: ParseTrash.fillBin("doubledispatch", bin); + TrashBinSet bins = new TrashBinSet(); // Sort from the master bin into the // individually-typed bins: bins.sortIntoBins(bin); - // Perform sumValue for each bin... - bins.binSet() - .forEach(tb -> Trash.sumValue(tb.v)); - // ... and for the master bin - Trash.sumValue(bin); + // Sum value of each bin... + bins.binSet.forEach(tb -> + TrashValue.sum(tb.bin(), tb.type)); + // ... and for the master bin: + TrashValue.sum(bin, "Trash"); } } -/* Output: (First and Last 10 Lines) -Loading patterns.doubledispatch.Glass +/* Output: +Loading patterns.doubledispatch.Cardboard Loading patterns.doubledispatch.Paper Loading patterns.doubledispatch.Aluminum -Loading patterns.doubledispatch.Cardboard -weight of patterns.doubledispatch.Aluminum = 89.0 -weight of patterns.doubledispatch.Aluminum = 76.0 -weight of patterns.doubledispatch.Aluminum = 25.0 -weight of patterns.doubledispatch.Aluminum = 34.0 -weight of patterns.doubledispatch.Aluminum = 27.0 -weight of patterns.doubledispatch.Aluminum = 18.0 -...________...________...________...________... -weight of patterns.doubledispatch.Aluminum = 93.0 -weight of patterns.doubledispatch.Glass = 93.0 -weight of patterns.doubledispatch.Paper = 80.0 -weight of patterns.doubledispatch.Glass = 36.0 -weight of patterns.doubledispatch.Glass = 12.0 -weight of patterns.doubledispatch.Glass = 60.0 -weight of patterns.doubledispatch.Paper = 66.0 -weight of patterns.doubledispatch.Aluminum = 36.0 -weight of patterns.doubledispatch.Cardboard = 22.0 -Total value = 1086.0599818825722 +Loading patterns.doubledispatch.Glass +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Total Aluminum value = 13.19 +Paper weight: 8.00 * price: 0.10 = 0.80 +Paper weight: 6.60 * price: 0.10 = 0.66 +Paper weight: 9.10 * price: 0.10 = 0.91 +Total Paper value = 2.37 +Glass weight: 5.40 * price: 0.23 = 1.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Glass value = 3.06 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Total Cardboard value = 0.86 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Paper weight: 8.00 * price: 0.10 = 0.80 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Glass weight: 5.40 * price: 0.23 = 1.24 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Paper weight: 6.60 * price: 0.10 = 0.66 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Paper weight: 9.10 * price: 0.10 = 0.91 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Trash value = 19.48 */ diff --git a/patterns/doubledispatch/Glass.java b/patterns/doubledispatch/Glass.java index 0092652f0..c0800cdf2 100644 --- a/patterns/doubledispatch/Glass.java +++ b/patterns/doubledispatch/Glass.java @@ -2,13 +2,13 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Glass for double dispatching +// Glass with double dispatching. package patterns.doubledispatch; import patterns.trash.*; import java.util.*; public class Glass extends patterns.trash.Glass - implements TypedBinMember { +implements TypedBinMember { public Glass(double wt) { super(wt); } @Override public boolean addToBin(List tbins) { diff --git a/patterns/doubledispatch/Paper.java b/patterns/doubledispatch/Paper.java index 67bb0fe3d..de25cab37 100644 --- a/patterns/doubledispatch/Paper.java +++ b/patterns/doubledispatch/Paper.java @@ -2,13 +2,13 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Paper for double dispatching +// Paper with double dispatching. package patterns.doubledispatch; import patterns.trash.*; import java.util.*; public class Paper extends patterns.trash.Paper - implements TypedBinMember { +implements TypedBinMember { public Paper(double wt) { super(wt); } @Override public boolean addToBin(List tbins) { diff --git a/patterns/doubledispatch/TypedBin.java b/patterns/doubledispatch/TypedBin.java index c730eda2d..8484552c4 100644 --- a/patterns/doubledispatch/TypedBin.java +++ b/patterns/doubledispatch/TypedBin.java @@ -2,15 +2,24 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// A List that can grab the right type +// A List that can grab the right type. package patterns.doubledispatch; import patterns.trash.*; import java.util.*; public class TypedBin { - List v = new ArrayList<>(); + private List typedBin = + new ArrayList<>(); + public final String type; + public TypedBin(String type) { + this.type = type; + } + public List bin() { + // Returns a copy of typedBin: + return new ArrayList(typedBin); + } protected boolean addIt(Trash t) { - v.add(t); + typedBin.add(t); return true; } public boolean add(Aluminum a) { diff --git a/patterns/doubledispatch/TypedBinMember.java b/patterns/doubledispatch/TypedBinMember.java index 17fe20641..109745b4f 100644 --- a/patterns/doubledispatch/TypedBinMember.java +++ b/patterns/doubledispatch/TypedBinMember.java @@ -2,13 +2,12 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// An interface for adding the double dispatching -// method to the trash hierarchy without -// modifying the original hierarchy +// Adapts the double-dispatching +// method into the trash hierarchy without +// modifying the original hierarchy. package patterns.doubledispatch; import java.util.*; public interface TypedBinMember { - // The new method: boolean addToBin(List bins); } diff --git a/patterns/dynatrash/DynaTrash.java b/patterns/dynatrash/DynaTrash.java deleted file mode 100644 index 8e8d6ac27..000000000 --- a/patterns/dynatrash/DynaTrash.java +++ /dev/null @@ -1,74 +0,0 @@ -// patterns/dynatrash/DynaTrash.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Using a Map of Lists and RTTI to automatically -// sort trash into Lists. This solution, despite -// the use of RTTI, is extensible. -// {java patterns.dynatrash.DynaTrash} -package patterns.dynatrash; -import patterns.trash.*; -import java.util.*; -import java.util.stream.*; - -// Generic TypeMap works in any situation: -class TypeMap { - private Map> t = new HashMap<>(); - public void add(T o) { - Class type = o.getClass(); - if(t.containsKey(type)) - t.get(type).add(o); - else { - List v = new ArrayList<>(); - v.add(o); - t.put(type,v); - } - } - public Stream> values() { - return t.values().stream(); - } -} - -// Adapter class for callbacks -// from ParseTrash.fillBin(): -class TypeMapAdapter implements Fillable { - TypeMap map; - TypeMapAdapter(TypeMap tm) { - map = tm; - } - @Override - public void addTrash(Trash t) { map.add(t); } -} - -public class DynaTrash { - @SuppressWarnings("unchecked") - public static void main(String[] args) { - TypeMap bin = new TypeMap<>(); - ParseTrash.fillBin( - "trash", new TypeMapAdapter(bin)); - bin.values().forEach(Trash::sumValue); - } -} -/* Output: (First and Last 10 Lines) -Loading patterns.trash.Glass -Loading patterns.trash.Paper -Loading patterns.trash.Aluminum -Loading patterns.trash.Cardboard -weight of patterns.trash.Paper = 22.0 -weight of patterns.trash.Paper = 11.0 -weight of patterns.trash.Paper = 88.0 -weight of patterns.trash.Paper = 91.0 -weight of patterns.trash.Paper = 80.0 -weight of patterns.trash.Paper = 66.0 -...________...________...________...________... -weight of patterns.trash.Glass = 93.0 -weight of patterns.trash.Glass = 36.0 -weight of patterns.trash.Glass = 12.0 -weight of patterns.trash.Glass = 60.0 -Total value = 150.1900027245283 -weight of patterns.trash.Cardboard = 96.0 -weight of patterns.trash.Cardboard = 44.0 -weight of patterns.trash.Cardboard = 12.0 -weight of patterns.trash.Cardboard = 22.0 -Total value = 40.02000072598457 -*/ diff --git a/patterns/observer/ObservedFlower.java b/patterns/observer/ObservedFlower.java index a8c9bd006..acfb0f656 100644 --- a/patterns/observer/ObservedFlower.java +++ b/patterns/observer/ObservedFlower.java @@ -2,30 +2,18 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Demonstration of "Observer" pattern +// Demonstration of the Observer pattern. // {java patterns.observer.ObservedFlower} package patterns.observer; import java.util.*; +import java.util.function.*; @SuppressWarnings("deprecation") class Flower { - private boolean isOpen; - private boolean alreadyOpen; - private boolean alreadyClosed; - Flower() { isOpen = false; } - OpenNotifier opening = new OpenNotifier(); - CloseNotifier closing = new CloseNotifier(); - public void open() { // Opens its petals - isOpen = true; - opening.notifyObservers(); - alreadyClosed = false; - } - public void close() { // Closes its petals - isOpen = false; - closing.notifyObservers(); - alreadyOpen = false; - } - class OpenNotifier extends Observable { + private boolean isOpen = false; + private boolean alreadyOpen = false; + private boolean alreadyClosed = false; + Observable opening = new Observable() { @Override public void notifyObservers() { if(isOpen && !alreadyOpen) { setChanged(); @@ -33,8 +21,8 @@ class OpenNotifier extends Observable { alreadyOpen = true; } } - } - class CloseNotifier extends Observable{ + }; + Observable closing = new Observable() { @Override public void notifyObservers() { if(!isOpen && !alreadyClosed) { setChanged(); @@ -42,38 +30,43 @@ class CloseNotifier extends Observable{ alreadyClosed = true; } } + }; + public void open() { // Opens its petals + isOpen = true; + opening.notifyObservers(); + alreadyClosed = false; + } + public void close() { // Closes its petals + isOpen = false; + closing.notifyObservers(); + alreadyOpen = false; } } @SuppressWarnings("deprecation") class Bee { - private String name; - Bee(String nm) { name = nm; } + private String id; + Bee(String name) { id = name; } // Observe openings: - public Observer openObserver() { - return (ob, a) -> System.out.println( - "Bee " + name + "'s breakfast time!"); - } + public final Observer whenOpened = (ob, a) -> + System.out.println( + "Bee " + id + "'s breakfast time!"); // Observe closings: - public Observer closeObserver() { - return (ob, a) -> System.out.println( - "Bee " + name + "'s bed time!"); - } + public final Observer whenClosed = (ob, a) -> + System.out.println( + "Bee " + id + "'s bed time!"); } @SuppressWarnings("deprecation") class Hummingbird { - private String name; - Hummingbird(String nm) { name = nm; } - public Observer openObserver() { - return (ob, a) -> System.out.println( - "Hummingbird " + name + - "'s breakfast time!"); - } - public Observer closeObserver() { - return (ob, a) -> System.out.println( - "Hummingbird " + name + "'s bed time!"); - } + private String id; + Hummingbird(String name) { id = name; } + public final Observer whenOpened = (ob, a) -> + System.out.println("Hummingbird " + + id + "'s breakfast time!"); + public final Observer whenClosed = (ob, a) -> + System.out.println("Hummingbird " + + id + "'s bed time!"); } public class ObservedFlower { @@ -85,39 +78,46 @@ public static void main(String[] args) { Hummingbird ha = new Hummingbird("A"), hb = new Hummingbird("B"); - f.opening.addObserver(ha.openObserver()); - f.opening.addObserver(hb.openObserver()); - f.opening.addObserver(ba.openObserver()); - f.opening.addObserver(bb.openObserver()); - f.closing.addObserver(ha.closeObserver()); - f.closing.addObserver(hb.closeObserver()); - f.closing.addObserver(ba.closeObserver()); - f.closing.addObserver(bb.closeObserver()); - // Hummingbird B decides to sleep in: - f.opening.deleteObserver(hb.openObserver()); + f.opening.addObserver(ha.whenOpened); + f.opening.addObserver(hb.whenOpened); + f.opening.addObserver(ba.whenOpened); + f.opening.addObserver(bb.whenOpened); + f.closing.addObserver(ha.whenClosed); + f.closing.addObserver(hb.whenClosed); + f.closing.addObserver(ba.whenClosed); + f.closing.addObserver(bb.whenClosed); + // Hummingbird B decides to sleep in. + // Removing whenOpened stops open updates. + f.opening.deleteObserver(hb.whenOpened); // A change that interests observers: f.open(); - f.open(); // It's already open, no change. - // Bee A doesn't want to go to bed: - f.closing.deleteObserver(ba.closeObserver()); + f.open(); // No effect: it's already open. + System.out.println("---------------"); + // Bee A doesn't want to go to bed. + // Removing whenClosed stops close updates. + f.closing.deleteObserver(ba.whenClosed); f.close(); - f.close(); // It's already closed; no change + System.out.println("+++++++++++++++"); + f.close(); // No effect: it's already closed. + System.out.println("==============="); f.opening.deleteObservers(); - f.open(); - f.close(); + f.open(); // No observers to update. + System.out.println("###############"); + f.close(); // Close observers are still there. } } /* Output: Bee B's breakfast time! Bee A's breakfast time! -Hummingbird B's breakfast time! Hummingbird A's breakfast time! +--------------- Bee B's bed time! -Bee A's bed time! Hummingbird B's bed time! Hummingbird A's bed time! ++++++++++++++++ +=============== +############### Bee B's bed time! -Bee A's bed time! Hummingbird B's bed time! Hummingbird A's bed time! */ diff --git a/patterns/recyclea/RecycleA.java b/patterns/recyclea/RecycleA.java index 184bc4b3a..483e700ed 100644 --- a/patterns/recyclea/RecycleA.java +++ b/patterns/recyclea/RecycleA.java @@ -2,72 +2,25 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Recycling with RTTI +// Recycling with reflection. // {java patterns.recyclea.RecycleA} package patterns.recyclea; import java.util.*; import java.util.function.*; import java.util.stream.*; +import patterns.trash.*; -abstract class Trash { - double weight; - Trash(double wt) { weight = wt; } - abstract double value(); - // Sums the value of Trash in a bin: - private static double val; - static void sumValue(List bin) { - val = 0.0f; - bin.forEach( t -> { - // Polymorphism in action: - val += t.weight * t.value(); - System.out.println( - "weight of " + - // Using RTTI to get type - // information about the class: - t.getClass().getSimpleName() + - " = " + t.weight); - }); - System.out.println("Total value = " + val); - } -} - -class Aluminum extends Trash { - static double val = 1.67f; - Aluminum(double wt) { super(wt); } - @Override double value() { return val; } - static void value(double newval) { - val = newval; - } -} - -class Paper extends Trash { - static double val = 0.10f; - Paper(double wt) { super(wt); } - @Override double value() { return val; } - static void value(double newval) { - val = newval; - } -} - -class Glass extends Trash { - static double val = 0.23f; - Glass(double wt) { super(wt); } - @Override double value() { return val; } - static void value(double newval) { - val = newval; - } -} - -class TrashFactory { - static List> ttypes = +class SimpleFactory { + static final + List> constructors = Arrays.asList( Aluminum::new, Paper::new, Glass::new); - static final int SZ = ttypes.size(); + static final int SIZE = constructors.size(); private static SplittableRandom rand = - new SplittableRandom(47); - public static Trash newTrash() { - return ttypes - .get(rand.nextInt(SZ)) + new SplittableRandom(42); + public static Trash random() { + return constructors + .get(rand.nextInt(SIZE)) .apply(rand.nextDouble()); } } @@ -75,50 +28,37 @@ public static Trash newTrash() { public class RecycleA { public static void main(String[] args) { List bin = - Stream.generate(TrashFactory::newTrash) - .limit(25) + Stream.generate(SimpleFactory::random) + .limit(10) .collect(Collectors.toList()); - List glassBin = new ArrayList<>(); - List paperBin = new ArrayList<>(); - List alBin = new ArrayList<>(); - // Sort the Trash: - bin.forEach( t -> { - // RTTI to discover Trash type: - if(t instanceof Aluminum) - alBin.add((Aluminum)t); - if(t instanceof Paper) - paperBin.add((Paper)t); - if(t instanceof Glass) - glassBin.add((Glass)t); - }); - Trash.sumValue(alBin); - Trash.sumValue(paperBin); - Trash.sumValue(glassBin); - Trash.sumValue(bin); + Bins bins = new Bins(bin); + bins.show(); } } -/* Output: (First and Last 11 Lines) -weight of Aluminum = 0.2893030122276371 -weight of Aluminum = 0.1970234961398979 -weight of Aluminum = 0.36295525806274787 -weight of Aluminum = 0.4825532324565849 -weight of Aluminum = 0.8036398273294586 -weight of Aluminum = 0.510430896154935 -weight of Aluminum = 0.6703377164093444 -weight of Aluminum = 0.41477933066243455 -weight of Aluminum = 0.3603022312124007 -weight of Aluminum = 0.43690089841661006 -weight of Aluminum = 0.6708820087907101 -...________...________...________...________... -weight of Aluminum = 0.41477933066243455 -weight of Aluminum = 0.3603022312124007 -weight of Aluminum = 0.43690089841661006 -weight of Glass = 0.5999637765664924 -weight of Glass = 0.7748836191212746 -weight of Paper = 0.5735994548427199 -weight of Glass = 0.5362827750851034 -weight of Aluminum = 0.6708820087907101 -weight of Paper = 0.8370669795210507 -weight of Glass = 0.3397919679731668 -Total value = 9.90671597531968 +/* Output: +Aluminum weight: 0.34 * price: 1.67 = 0.57 +Aluminum weight: 0.62 * price: 1.67 = 1.03 +Aluminum weight: 0.49 * price: 1.67 = 0.82 +Aluminum weight: 0.50 * price: 1.67 = 0.83 +Total Aluminum value = 3.26 +Paper weight: 0.69 * price: 0.10 = 0.07 +Total Paper value = 0.07 +Glass weight: 0.16 * price: 0.23 = 0.04 +Glass weight: 0.87 * price: 0.23 = 0.20 +Glass weight: 0.80 * price: 0.23 = 0.18 +Glass weight: 0.52 * price: 0.23 = 0.12 +Glass weight: 0.20 * price: 0.23 = 0.05 +Total Glass value = 0.59 +Total Cardboard value = 0.00 +Glass weight: 0.16 * price: 0.23 = 0.04 +Aluminum weight: 0.34 * price: 1.67 = 0.57 +Glass weight: 0.87 * price: 0.23 = 0.20 +Glass weight: 0.80 * price: 0.23 = 0.18 +Aluminum weight: 0.62 * price: 1.67 = 1.03 +Aluminum weight: 0.49 * price: 1.67 = 0.82 +Glass weight: 0.52 * price: 0.23 = 0.12 +Glass weight: 0.20 * price: 0.23 = 0.05 +Aluminum weight: 0.50 * price: 1.67 = 0.83 +Paper weight: 0.69 * price: 0.10 = 0.07 +Total Trash value = 3.91 */ diff --git a/patterns/recycleb/RecycleB.java b/patterns/recycleb/RecycleB.java index 25cb6d90e..b65f1db3d 100644 --- a/patterns/recycleb/RecycleB.java +++ b/patterns/recycleb/RecycleB.java @@ -10,47 +10,43 @@ public class RecycleB { public static void main(String[] args) { List bin = new ArrayList<>(); - // Fill up the Trash bin: ParseTrash.fillBin("trash", bin); - List glassBin = new ArrayList<>(); - List paperBin = new ArrayList<>(); - List alBin = new ArrayList<>(); - // Sort the Trash: - bin.forEach( t -> { - // RTTI to discover Trash type: - if(t instanceof Aluminum) - alBin.add((Aluminum)t); - if(t instanceof Paper) - paperBin.add((Paper)t); - if(t instanceof Glass) - glassBin.add((Glass)t); - }); - Trash.sumValue(alBin); - Trash.sumValue(paperBin); - Trash.sumValue(glassBin); - Trash.sumValue(bin); + Bins bins = new Bins(bin); + bins.show(); } } -/* Output: (First and Last 10 Lines) -Loading patterns.trash.Glass +/* Output: +Loading patterns.trash.Cardboard Loading patterns.trash.Paper Loading patterns.trash.Aluminum -Loading patterns.trash.Cardboard -weight of patterns.trash.Aluminum = 89.0 -weight of patterns.trash.Aluminum = 76.0 -weight of patterns.trash.Aluminum = 25.0 -weight of patterns.trash.Aluminum = 34.0 -weight of patterns.trash.Aluminum = 27.0 -weight of patterns.trash.Aluminum = 18.0 -...________...________...________...________... -weight of patterns.trash.Aluminum = 93.0 -weight of patterns.trash.Glass = 93.0 -weight of patterns.trash.Paper = 80.0 -weight of patterns.trash.Glass = 36.0 -weight of patterns.trash.Glass = 12.0 -weight of patterns.trash.Glass = 60.0 -weight of patterns.trash.Paper = 66.0 -weight of patterns.trash.Aluminum = 36.0 -weight of patterns.trash.Cardboard = 22.0 -Total value = 1086.0599818825722 +Loading patterns.trash.Glass +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Total Aluminum value = 13.19 +Paper weight: 8.00 * price: 0.10 = 0.80 +Paper weight: 6.60 * price: 0.10 = 0.66 +Paper weight: 9.10 * price: 0.10 = 0.91 +Total Paper value = 2.37 +Glass weight: 5.40 * price: 0.23 = 1.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Glass value = 3.06 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Total Cardboard value = 0.86 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Paper weight: 8.00 * price: 0.10 = 0.80 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Glass weight: 5.40 * price: 0.23 = 1.24 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Paper weight: 6.60 * price: 0.10 = 0.66 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Paper weight: 9.10 * price: 0.10 = 0.91 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Trash value = 19.48 */ diff --git a/patterns/recyclec/RecycleC.java b/patterns/recyclec/RecycleC.java index 75dd4e5e2..611c30907 100644 --- a/patterns/recyclec/RecycleC.java +++ b/patterns/recyclec/RecycleC.java @@ -2,83 +2,105 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Adding more objects to the recycling problem // {java patterns.recyclec.RecycleC} package patterns.recyclec; import patterns.trash.*; import java.util.*; -// A List that admits only the right type: -class Tbin extends ArrayList { - Class binType; - Tbin(Class type) { - binType = type; +// A List that only admits the right type: +class +TrashBin extends ArrayList { + final Class binType; + TrashBin(Class binType) { + this.binType = binType; } @SuppressWarnings("unchecked") boolean grab(Trash t) { - // Comparing class types: + // Compare class types: if(t.getClass().equals(binType)) { - add((T)t); // Downcast to this TBin's type - return true; // Object grabbed + add((T)t); // Downcast to this TrashBin type + return true; // Trash grabbed } - return false; // Object not grabbed + return false; // Trash not grabbed } } -class TbinList -extends ArrayList> { // [1] - boolean sort(T t) { - for(Tbin ts : this) +class TrashBinList +extends ArrayList> { // [1] + @SuppressWarnings("unchecked") + public TrashBinList(Class... types) { + for(Class type : types) + add(new TrashBin<>(type)); + } + public boolean sort(T t) { + for(TrashBin ts : this) if(ts.grab(t)) return true; - return false; // bin not found for t + return false; // TrashBin not found for t + } + public void sortBin(TrashBin bin) { // [2] + for(T trash : bin) + if(!sort(trash)) + throw new RuntimeException( + "Bin not found for " + trash); } - void sortBin(Tbin bin) { // [2] - for(T aBin : bin) - if(!sort(aBin)) - System.err.println("Bin not found"); + public void show() { + for(TrashBin tbin : this) { + String typeName = tbin.binType.getSimpleName(); + TrashValue.sum(tbin, typeName); + } } } public class RecycleC { - static Tbin bin = new Tbin<>(Trash.class); public static void main(String[] args) { - // Fill up the Trash bin: + TrashBin bin = + new TrashBin<>(Trash.class); ParseTrash.fillBin("trash", bin); - - TbinList trashBins = new TbinList<>(); - trashBins.add(new Tbin<>(Aluminum.class)); - trashBins.add(new Tbin<>(Paper.class)); - trashBins.add(new Tbin<>(Glass.class)); - // add one line here: // [3] - trashBins.add(new Tbin<>(Cardboard.class)); - + @SuppressWarnings("unchecked") + TrashBinList trashBins = + new TrashBinList<>( + Aluminum.class, Paper.class, Glass.class, + // Add one item: + Cardboard.class // [3] + ); trashBins.sortBin(bin); // [4] - - trashBins.forEach(Trash::sumValue); - Trash.sumValue(bin); + trashBins.show(); + TrashValue.sum(bin, "Trash"); } } -/* Output: (First and Last 10 Lines) -Loading patterns.trash.Glass +/* Output: +Loading patterns.trash.Cardboard Loading patterns.trash.Paper Loading patterns.trash.Aluminum -Loading patterns.trash.Cardboard -weight of patterns.trash.Aluminum = 89.0 -weight of patterns.trash.Aluminum = 76.0 -weight of patterns.trash.Aluminum = 25.0 -weight of patterns.trash.Aluminum = 34.0 -weight of patterns.trash.Aluminum = 27.0 -weight of patterns.trash.Aluminum = 18.0 -...________...________...________...________... -weight of patterns.trash.Aluminum = 93.0 -weight of patterns.trash.Glass = 93.0 -weight of patterns.trash.Paper = 80.0 -weight of patterns.trash.Glass = 36.0 -weight of patterns.trash.Glass = 12.0 -weight of patterns.trash.Glass = 60.0 -weight of patterns.trash.Paper = 66.0 -weight of patterns.trash.Aluminum = 36.0 -weight of patterns.trash.Cardboard = 22.0 -Total value = 1086.0599818825722 +Loading patterns.trash.Glass +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Total Aluminum value = 13.19 +Paper weight: 8.00 * price: 0.10 = 0.80 +Paper weight: 6.60 * price: 0.10 = 0.66 +Paper weight: 9.10 * price: 0.10 = 0.91 +Total Paper value = 2.37 +Glass weight: 5.40 * price: 0.23 = 1.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Glass value = 3.06 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Total Cardboard value = 0.86 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Paper weight: 8.00 * price: 0.10 = 0.80 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Glass weight: 5.40 * price: 0.23 = 1.24 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Paper weight: 6.60 * price: 0.10 = 0.66 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Paper weight: 9.10 * price: 0.10 = 0.91 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Trash value = 19.48 */ diff --git a/patterns/state/StateMachineDemo.java b/patterns/state/StateMachineDemo.java index 0046a684b..1b9630a9c 100644 --- a/patterns/state/StateMachineDemo.java +++ b/patterns/state/StateMachineDemo.java @@ -2,9 +2,10 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// The StateMachine pattern and Template method +// The State Machine pattern. // {java patterns.state.StateMachineDemo} package patterns.state; +import java.util.*; import onjava.Nap; interface State { @@ -16,7 +17,7 @@ abstract class StateMachine { protected abstract boolean changeState(); // Template method: protected final void runAll() { - while(changeState()) // Customizable + while(changeState()) currentState.run(); } } @@ -46,20 +47,19 @@ class Rinse implements State { class Washer extends StateMachine { private int i = 0; - // The state table: - private State[] states = { - new Wash(), new Spin(), - new Rinse(), new Spin(), - }; + private Iterator states = + Arrays.asList( + new Wash(), new Spin(), + new Rinse(), new Spin() + ).iterator(); Washer() { runAll(); } @Override public boolean changeState() { - if(i < states.length) { - // Change the state by setting the - // surrogate reference to a new object: - currentState = states[i++]; - return true; - } else + if(!states.hasNext()) return false; + // Set the surrogate reference + // to a new State object: + currentState = states.next(); + return true; } } diff --git a/patterns/strategy/StrategyPattern.java b/patterns/strategy/StrategyPattern.java index 32f989629..7e06bc1e6 100644 --- a/patterns/strategy/StrategyPattern.java +++ b/patterns/strategy/StrategyPattern.java @@ -9,13 +9,14 @@ // The common strategy base type: class FindMinima { + protected Function, List> algorithm; } -// The various strategies: +// The various strategies, each producing dummy data: class LeastSquares extends FindMinima { LeastSquares() { - // Line is a sequence of points (Dummy data): + // Line is a sequence of points: algorithm = (line) -> Arrays.asList(1.1, 2.2); } } @@ -35,8 +36,8 @@ class Bisection extends FindMinima { // The "Context" controls the strategy: class MinimaSolver { private FindMinima strategy; - MinimaSolver(FindMinima strat) { - strategy = strat; + MinimaSolver(FindMinima strategy) { + this.strategy = strategy; } List minima(List line) { return strategy.algorithm.apply(line); @@ -54,11 +55,14 @@ public static void main(String[] args) { 1.0, 2.0, 1.0, 2.0, -1.0, 3.0, 4.0, 5.0, 4.0 ); System.out.println(solver.minima(line)); + solver.changeAlgorithm(new Perturbation()); + System.out.println(solver.minima(line)); solver.changeAlgorithm(new Bisection()); System.out.println(solver.minima(line)); } } /* Output: [1.1, 2.2] +[3.3, 4.4] [5.5, 6.6] */ diff --git a/patterns/strategy/StrategyPattern2.java b/patterns/strategy/StrategyPattern2.java index d63c6e710..640b1c05d 100644 --- a/patterns/strategy/StrategyPattern2.java +++ b/patterns/strategy/StrategyPattern2.java @@ -9,6 +9,7 @@ // "Context" is now incorporated: class FindMinima2 { + private Function, List> algorithm; FindMinima2() { leastSquares(); } // default // The various strategies: @@ -33,11 +34,14 @@ public static void main(String[] args) { 1.0, 2.0, 1.0, 2.0, -1.0, 3.0, 4.0, 5.0, 4.0 ); System.out.println(solver.minima(line)); + solver.perturbation(); + System.out.println(solver.minima(line)); solver.bisection(); System.out.println(solver.minima(line)); } } /* Output: [1.1, 2.2] +[3.3, 4.4] [5.5, 6.6] */ diff --git a/patterns/trash/Aluminum.java b/patterns/trash/Aluminum.java index 085d7047f..620cd5e62 100644 --- a/patterns/trash/Aluminum.java +++ b/patterns/trash/Aluminum.java @@ -5,10 +5,12 @@ package patterns.trash; public class Aluminum extends Trash { - private static double val = 1.67f; public Aluminum(double wt) { super(wt); } - @Override public double value() { return val; } - public static void value(double newVal) { - val = newVal; + @Override public double price() { + return Price.ALUMINUM; + } + // Ignore for now; to be used later: + @Override public void accept(Visitor v) { + v.visit(this); } } diff --git a/patterns/trash/Bins.java b/patterns/trash/Bins.java new file mode 100644 index 000000000..304708b39 --- /dev/null +++ b/patterns/trash/Bins.java @@ -0,0 +1,35 @@ +// patterns/trash/Bins.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package patterns.trash; +import java.util.*; + +public class Bins { + final List bin; + final List aluminum = new ArrayList<>(); + final List paper = new ArrayList<>(); + final List glass = new ArrayList<>(); + final List cardboard = new ArrayList<>(); + public Bins(List source) { + bin = new ArrayList<>(source); // Copy + bin.forEach( t -> { + // Use reflection to discover Trash type: + if(t instanceof Aluminum) + aluminum.add((Aluminum)t); + if(t instanceof Paper) + paper.add((Paper)t); + if(t instanceof Glass) + glass.add((Glass)t); + if(t instanceof Cardboard) + cardboard.add((Cardboard)t); + }); + } + public void show() { + TrashValue.sum(aluminum, "Aluminum"); + TrashValue.sum(paper, "Paper"); + TrashValue.sum(glass, "Glass"); + TrashValue.sum(cardboard, "Cardboard"); + TrashValue.sum(bin, "Trash"); + } +} diff --git a/patterns/trash/Cardboard.java b/patterns/trash/Cardboard.java index f1998630a..923f6647e 100644 --- a/patterns/trash/Cardboard.java +++ b/patterns/trash/Cardboard.java @@ -5,10 +5,12 @@ package patterns.trash; public class Cardboard extends Trash { - private static double val = 0.23f; public Cardboard(double wt) { super(wt); } - @Override public double value() { return val; } - public static void value(double newVal) { - val = newVal; + @Override public double price() { + return Price.CARDBOARD; + } + // Ignore for now; to be used later: + @Override public void accept(Visitor v) { + v.visit(this); } } diff --git a/patterns/trash/ClassToListOfTrashMap.java b/patterns/trash/ClassToListOfTrashMap.java new file mode 100644 index 000000000..2095cdd41 --- /dev/null +++ b/patterns/trash/ClassToListOfTrashMap.java @@ -0,0 +1,20 @@ +// patterns/trash/ClassToListOfTrashMap.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Display a Map>. +package patterns.trash; +import java.util.*; + +public class ClassToListOfTrashMap { + public static void + show(Map> map) { + map.values().forEach( bin -> { + String typeName = "Trash"; + if(!bin.isEmpty()) + typeName = + bin.get(0).getClass().getSimpleName(); + TrashValue.sum(bin, typeName); + }); + } +} diff --git a/patterns/trash/DynaFactory.java b/patterns/trash/DynaFactory.java new file mode 100644 index 000000000..1331e9ba2 --- /dev/null +++ b/patterns/trash/DynaFactory.java @@ -0,0 +1,44 @@ +// patterns/trash/DynaFactory.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Dynamic discovery of Trash types. +package patterns.trash; +import java.util.*; +import java.util.function.*; +import java.lang.reflect.*; + +public class DynaFactory { + private Map constructors = + new HashMap<>(); + private String packageName; + public DynaFactory(String packageName) { + this.packageName = packageName; + } + @SuppressWarnings("unchecked") + public + T create(TrashInfo info) { + try { + String typename = + "patterns." + packageName + "." + info.type; + return (T)constructors.computeIfAbsent( + typename, this::findConstructor + ).newInstance(info.data); + } catch(Exception e) { + throw new RuntimeException( + "Cannot create() Trash: " + info, e); + } + } + private + Constructor findConstructor(String typename) { + try { + System.out.println("Loading " + typename); + return Class.forName(typename) + .getConstructor(double.class); + } catch(Exception e) { + throw new RuntimeException( + "Trash(double) Constructor Not Found: " + + typename, e); + } + } +} diff --git a/patterns/trash/Fillable.java b/patterns/trash/Fillable.java index 6c00f6ea9..329c92bdb 100644 --- a/patterns/trash/Fillable.java +++ b/patterns/trash/Fillable.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Any object that can be filled with Trash +// Any object that can be filled with Trash. package patterns.trash; public interface Fillable { diff --git a/patterns/trash/FillableList.java b/patterns/trash/FillableList.java index 05d83ff66..8a0bfa745 100644 --- a/patterns/trash/FillableList.java +++ b/patterns/trash/FillableList.java @@ -2,15 +2,17 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Adapter that makes a List Fillable +// Adapter that makes a List Fillable. package patterns.trash; import java.util.*; public class FillableList implements Fillable { - private List v; - public FillableList(List vv) { - v = vv; + private List list; + public FillableList(List list) { + this.list = list; + } + @Override public void addTrash(T t) { + list.add(t); } - @Override public void addTrash(T t) { v.add(t); } } diff --git a/patterns/trash/Glass.java b/patterns/trash/Glass.java index faf73762b..df08c9963 100644 --- a/patterns/trash/Glass.java +++ b/patterns/trash/Glass.java @@ -5,10 +5,12 @@ package patterns.trash; public class Glass extends Trash { - private static double val = 0.23f; public Glass(double wt) { super(wt); } - @Override public double value() { return val; } - public static void value(double newVal) { - val = newVal; + @Override public double price() { + return Price.GLASS; + } + // Ignore for now; to be used later: + @Override public void accept(Visitor v) { + v.visit(this); } } diff --git a/patterns/trash/GroupingBy.java b/patterns/trash/GroupingBy.java new file mode 100644 index 000000000..6c8f8bc67 --- /dev/null +++ b/patterns/trash/GroupingBy.java @@ -0,0 +1,41 @@ +// patterns/trash/GroupingBy.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {java patterns.trash.GroupingBy} +package patterns.trash; +import java.util.*; +import java.util.stream.*; + +public class GroupingBy { + public static void main(String[] args) { + List bin = new ArrayList<>(); + ParseTrash.fillBin("trash", bin); + Map> m = + bin.stream().collect( + Collectors.groupingBy(Object::getClass)); + ClassToListOfTrashMap.show(m); + } +} +/* Output: +Loading patterns.trash.Cardboard +Loading patterns.trash.Paper +Loading patterns.trash.Aluminum +Loading patterns.trash.Glass +Glass weight: 5.40 * price: 0.23 = 1.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Glass value = 3.06 +Paper weight: 8.00 * price: 0.10 = 0.80 +Paper weight: 6.60 * price: 0.10 = 0.66 +Paper weight: 9.10 * price: 0.10 = 0.91 +Total Paper value = 2.37 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Total Cardboard value = 0.86 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Total Aluminum value = 13.19 +*/ diff --git a/patterns/trash/Paper.java b/patterns/trash/Paper.java index dd79e8eae..5a47cea18 100644 --- a/patterns/trash/Paper.java +++ b/patterns/trash/Paper.java @@ -5,10 +5,12 @@ package patterns.trash; public class Paper extends Trash { - private static double val = 0.10f; public Paper(double wt) { super(wt); } - @Override public double value() { return val; } - public static void value(double newVal) { - val = newVal; + @Override public double price() { + return Price.PAPER; + } + // Ignore for now; to be used later: + @Override public void accept(Visitor v) { + v.visit(this); } } diff --git a/patterns/trash/ParseTrash.java b/patterns/trash/ParseTrash.java index 7e69fea36..0ea5df241 100644 --- a/patterns/trash/ParseTrash.java +++ b/patterns/trash/ParseTrash.java @@ -2,8 +2,8 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Open a file and parse its contents into -// Trash objects, placing each into a List +// Opens a file and parses its contents into +// Trash objects, placing each into a Fillable. // {java patterns.trash.ParseTrash} package patterns.trash; import java.util.*; @@ -13,79 +13,56 @@ import java.nio.file.Files; public class ParseTrash { + public static String source = "Trash.dat"; public static void - fillBin(String pckg, Fillable bin) { + fillBin(String packageName, Fillable bin) { + DynaFactory factory = + new DynaFactory(packageName); try { - Files.lines(Paths.get("trash", "Trash.dat")) - // Remove empty lines and comment lines: + Files.lines(Paths.get("trash", source)) + // Remove comments and empty lines: .filter(line -> line.trim().length() != 0) .filter(line -> !line.startsWith("//")) - .forEach( line -> { - String type = "patterns." + pckg + "." + - line.substring( + .forEach(line -> { + String type = line.substring( 0, line.indexOf(':')).trim(); double weight = Double.valueOf( line.substring(line.indexOf(':') + 1) .trim()); - bin.addTrash(Trash.factory( - new Trash.Info(type, weight))); + bin.addTrash(factory.create( + new TrashInfo(type, weight))); }); - } catch(IOException | - NumberFormatException | - Trash.TrashClassNotFoundException | - Trash.CannotCreateTrashException e) { + } catch(IOException | NumberFormatException e) { throw new RuntimeException(e); } } - // Special case to handle List: + // Special case to handle a List: public static void - fillBin(String pckg, List bin) { - fillBin(pckg, new FillableList<>(bin)); + fillBin(String packageName, List bin) { + fillBin(packageName, new FillableList<>(bin)); } // Basic test: public static void main(String[] args) { - List t = new ArrayList<>(); - fillBin("trash", t); - t.forEach(System.out::println); + List bin = new ArrayList<>(); + fillBin("trash", bin); + bin.forEach(System.out::println); } } /* Output: -Loading patterns.trash.Glass +Loading patterns.trash.Cardboard Loading patterns.trash.Paper Loading patterns.trash.Aluminum -Loading patterns.trash.Cardboard -patterns.trash.Glass w:54.0 v:0.23 -patterns.trash.Paper w:22.0 v:0.10 -patterns.trash.Paper w:11.0 v:0.10 -patterns.trash.Glass w:17.0 v:0.23 -patterns.trash.Aluminum w:89.0 v:1.67 -patterns.trash.Paper w:88.0 v:0.10 -patterns.trash.Aluminum w:76.0 v:1.67 -patterns.trash.Cardboard w:96.0 v:0.23 -patterns.trash.Aluminum w:25.0 v:1.67 -patterns.trash.Aluminum w:34.0 v:1.67 -patterns.trash.Glass w:11.0 v:0.23 -patterns.trash.Glass w:68.0 v:0.23 -patterns.trash.Glass w:43.0 v:0.23 -patterns.trash.Aluminum w:27.0 v:1.67 -patterns.trash.Cardboard w:44.0 v:0.23 -patterns.trash.Aluminum w:18.0 v:1.67 -patterns.trash.Paper w:91.0 v:0.10 -patterns.trash.Glass w:63.0 v:0.23 -patterns.trash.Glass w:50.0 v:0.23 -patterns.trash.Glass w:80.0 v:0.23 -patterns.trash.Aluminum w:81.0 v:1.67 -patterns.trash.Cardboard w:12.0 v:0.23 -patterns.trash.Glass w:12.0 v:0.23 -patterns.trash.Glass w:54.0 v:0.23 -patterns.trash.Aluminum w:36.0 v:1.67 -patterns.trash.Aluminum w:93.0 v:1.67 -patterns.trash.Glass w:93.0 v:0.23 -patterns.trash.Paper w:80.0 v:0.10 -patterns.trash.Glass w:36.0 v:0.23 -patterns.trash.Glass w:12.0 v:0.23 -patterns.trash.Glass w:60.0 v:0.23 -patterns.trash.Paper w:66.0 v:0.10 -patterns.trash.Aluminum w:36.0 v:1.67 -patterns.trash.Cardboard w:22.0 v:0.23 +Loading patterns.trash.Glass +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Paper weight: 8.00 * price: 0.10 = 0.80 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Glass weight: 5.40 * price: 0.23 = 1.24 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Paper weight: 6.60 * price: 0.10 = 0.66 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Paper weight: 9.10 * price: 0.10 = 0.91 +Glass weight: 3.60 * price: 0.23 = 0.83 */ diff --git a/patterns/trash/Price.java b/patterns/trash/Price.java new file mode 100644 index 000000000..9aa071816 --- /dev/null +++ b/patterns/trash/Price.java @@ -0,0 +1,13 @@ +// patterns/trash/Price.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package patterns.trash; + +public interface Price { + double + ALUMINUM = 1.67, + PAPER = 0.10, + GLASS = 0.23, + CARDBOARD = 0.11; +} diff --git a/patterns/trash/Trash.dat b/patterns/trash/Trash.dat index 436a7a719..13bd6187a 100644 --- a/patterns/trash/Trash.dat +++ b/patterns/trash/Trash.dat @@ -1,35 +1,13 @@ // patterns/trash/Trash.dat -Glass:54 -Paper:22 -Paper:11 -Glass:17 -Aluminum:89 -Paper:88 -Aluminum:76 -Cardboard:96 -Aluminum:25 -Aluminum:34 -Glass:11 -Glass:68 -Glass:43 -Aluminum:27 -Cardboard:44 -Aluminum:18 -Paper:91 -Glass:63 -Glass:50 -Glass:80 -Aluminum:81 -Cardboard:12 -Glass:12 -Glass:54 -Aluminum:36 -Aluminum:93 -Glass:93 -Paper:80 -Glass:36 -Glass:12 -Glass:60 -Paper:66 -Aluminum:36 -Cardboard:22 +Cardboard:4.4 +Paper:8.0 +Aluminum:1.8 +Glass:5.4 +Aluminum:3.4 +Cardboard:2.2 +Glass:4.3 +Cardboard:1.2 +Paper:6.6 +Aluminum:2.7 +Paper:9.1 +Glass:3.6 diff --git a/patterns/trash/Trash.java b/patterns/trash/Trash.java index 4920e0ba4..9f9feca89 100644 --- a/patterns/trash/Trash.java +++ b/patterns/trash/Trash.java @@ -2,90 +2,21 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Base class for Trash recycling examples +// Base class for Trash recycling examples. package patterns.trash; -import java.util.*; -import java.lang.reflect.*; public abstract class Trash { - private double weight; - public Trash(double wt) { weight = wt; } - public Trash() {} - public abstract double value(); - public double weight() { return weight; } - // Sums the value of Trash in a bin: - static double val; - public static - void sumValue(List bin) { - val = 0.0f; - bin.forEach( t -> { - val += t.weight() * t.value(); - System.out.println("weight of " + - // RTTI gets type information - // about the class: - t.getClass().getName() + - " = " + t.weight()); - }); - System.out.println("Total value = " + val); + public final double weight; + public Trash(double weight) { + this.weight = weight; } + public abstract double price(); @Override public String toString() { - // Print correct subclass name: - return getClass().getName() + - " w:" + weight() + " v:" + - String.format("%.2f", value()); - } - // Remainder of class supports dynamic creation: - public static class CannotCreateTrashException - extends RuntimeException { - public CannotCreateTrashException(Exception why) { - super(why); - } - } - public static class TrashClassNotFoundException - extends RuntimeException { - public TrashClassNotFoundException(Exception why) { - super(why); - } - } - public static class Info { - public String id; - public double data; - public Info(String name, double data) { - id = name; - this.data = data; - } - } - private static List trashTypes = - new ArrayList<>(); - @SuppressWarnings("unchecked") - public static T factory(Info info) { - for(Class trashType : trashTypes) { - // Determine the type and create one: - if(trashType.getName().contains(info.id)) { - try { - // Get the dynamic constructor method - // that takes a double argument: - Constructor ctor = - trashType.getConstructor(double.class); - // Call the constructor to create a - // new object: - return - (T)ctor.newInstance(info.data); - } catch(Exception e) { - throw new CannotCreateTrashException(e); - } - } - } - // The necessary Class was not in the list. Try to - // load it, but it must be in your class path! - try { - System.out.println("Loading " + info.id); - trashTypes.add(Class.forName(info.id)); - } catch(Exception e) { - throw new TrashClassNotFoundException(e); - } - // Loaded successfully. Recursive call - // should work this time: - return factory(info); + return String.format( + "%s weight: %.2f * price: %.2f = %.2f", + getClass().getSimpleName(), + weight, price(), weight * price()); } + // Ignore for now; to be used later: + public abstract void accept(Visitor v); } diff --git a/patterns/trash/TrashInfo.java b/patterns/trash/TrashInfo.java new file mode 100644 index 000000000..9adc67882 --- /dev/null +++ b/patterns/trash/TrashInfo.java @@ -0,0 +1,18 @@ +// patterns/trash/TrashInfo.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Messenger class carrying Trash creation data. +package patterns.trash; + +public class TrashInfo { + public final String type; + public final double data; + public TrashInfo(String type, double data) { + this.type = type; + this.data = data; + } + @Override public String toString() { + return "TrashInfo(" + type + ", " + data + ")"; + } +} diff --git a/patterns/trash/TrashValue.java b/patterns/trash/TrashValue.java new file mode 100644 index 000000000..0ca9caaf0 --- /dev/null +++ b/patterns/trash/TrashValue.java @@ -0,0 +1,21 @@ +// patterns/trash/TrashValue.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Sums the value of Trash in a bin. +package patterns.trash; +import java.util.*; + +public class TrashValue { + private static double total; + public static void + sum(List bin, String type) { + total = 0.0; + bin.forEach( t -> { + System.out.println(t); + total += t.weight * t.price(); + }); + System.out.printf( + "Total %s value = %.2f%n", type, total); + } +} diff --git a/patterns/trash/TrashVisitor.java b/patterns/trash/TrashVisitor.java new file mode 100644 index 000000000..3f8431e1b --- /dev/null +++ b/patterns/trash/TrashVisitor.java @@ -0,0 +1,104 @@ +// patterns/trash/TrashVisitor.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Related algorithms packaged in +// each implementation of Visitor. +// {java patterns.trash.TrashVisitor} +package patterns.trash; +import java.util.*; + +class PriceVisitor extends Visitor { + public PriceVisitor() { super("price"); } + @Override public void visit(Aluminum al) { + double price = al.weight * al.price(); + show("Aluminum", price); + alTotal += price; + } + @Override public void visit(Paper p) { + double price = p.weight * p.price(); + show("Paper", price); + pTotal += price; + } + @Override public void visit(Glass g) { + double price = g.weight * g.price(); + show("Glass", price); + gTotal += price; + } + @Override public void visit(Cardboard c) { + double price = c.weight * c.price(); + show("Cardboard", price); + cTotal += price; + } +} + +class WeightVisitor extends Visitor { + public WeightVisitor() { super("weight"); } + @Override public void visit(Aluminum al) { + show("Aluminum", al.weight); + alTotal += al.weight; + } + @Override public void visit(Paper p) { + show("Paper", p.weight); + pTotal += p.weight; + } + @Override public void visit(Glass g) { + show("Glass", g.weight); + gTotal += g.weight; + } + @Override public void visit(Cardboard c) { + show("Cardboard", c.weight); + cTotal += c.weight; + } +} + +public class TrashVisitor { + public static void main(String[] args) { + List bin = new ArrayList<>(); + ParseTrash.fillBin("trash", bin); + List visitors = Arrays.asList( + new PriceVisitor(), new WeightVisitor()); + bin.forEach( + trash -> visitors.forEach(trash::accept) + ); + visitors.forEach(Visitor::total); + } +} +/* Output: +Loading patterns.trash.Cardboard +Loading patterns.trash.Paper +Loading patterns.trash.Aluminum +Loading patterns.trash.Glass +Cardboard price: 0.48 +Cardboard weight: 4.40 +Paper price: 0.80 +Paper weight: 8.00 +Aluminum price: 3.01 +Aluminum weight: 1.80 +Glass price: 1.24 +Glass weight: 5.40 +Aluminum price: 5.68 +Aluminum weight: 3.40 +Cardboard price: 0.24 +Cardboard weight: 2.20 +Glass price: 0.99 +Glass weight: 4.30 +Cardboard price: 0.13 +Cardboard weight: 1.20 +Paper price: 0.66 +Paper weight: 6.60 +Aluminum price: 4.51 +Aluminum weight: 2.70 +Paper price: 0.91 +Paper weight: 9.10 +Glass price: 0.83 +Glass weight: 3.60 +Total Aluminum price: 13.19 +Total Paper price: 2.37 +Total Glass price: 3.06 +Total Cardboard price: 0.86 +Total Aluminum weight: 7.90 +Total Paper weight: 23.70 +Total Glass weight: 13.30 +Total Cardboard weight: 7.80 +*/ diff --git a/patterns/trash/TypeMapTrash.java b/patterns/trash/TypeMapTrash.java new file mode 100644 index 000000000..bd04ab1de --- /dev/null +++ b/patterns/trash/TypeMapTrash.java @@ -0,0 +1,52 @@ +// patterns/trash/TypeMapTrash.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// Using a Map of Lists and reflection to sort +// Trash into Lists. This is extensible, despite +// the use of reflection. +// {java patterns.trash.TypeMapTrash} +package patterns.trash; +import patterns.TypeMap; + +// Adapter class for ParseTrash.fillBin(): +class TypeMapAdapter implements Fillable { + private TypeMap map; + TypeMapAdapter(TypeMap map) { + this.map = map; + } + @Override + public void addTrash(Trash t) { map.add(t); } +} + +public class TypeMapTrash { + @SuppressWarnings("unchecked") + public static void main(String[] args) { + TypeMap bin = new TypeMap<>(); + ParseTrash.fillBin( + "trash", new TypeMapAdapter(bin)); + ClassToListOfTrashMap.show(bin.map); + } +} +/* Output: +Loading patterns.trash.Cardboard +Loading patterns.trash.Paper +Loading patterns.trash.Aluminum +Loading patterns.trash.Glass +Paper weight: 8.00 * price: 0.10 = 0.80 +Paper weight: 6.60 * price: 0.10 = 0.66 +Paper weight: 9.10 * price: 0.10 = 0.91 +Total Paper value = 2.37 +Glass weight: 5.40 * price: 0.23 = 1.24 +Glass weight: 4.30 * price: 0.23 = 0.99 +Glass weight: 3.60 * price: 0.23 = 0.83 +Total Glass value = 3.06 +Aluminum weight: 1.80 * price: 1.67 = 3.01 +Aluminum weight: 3.40 * price: 1.67 = 5.68 +Aluminum weight: 2.70 * price: 1.67 = 4.51 +Total Aluminum value = 13.19 +Cardboard weight: 4.40 * price: 0.11 = 0.48 +Cardboard weight: 2.20 * price: 0.11 = 0.24 +Cardboard weight: 1.20 * price: 0.11 = 0.13 +Total Cardboard value = 0.86 +*/ diff --git a/patterns/trash/Visitor.java b/patterns/trash/Visitor.java new file mode 100644 index 000000000..34f0fff83 --- /dev/null +++ b/patterns/trash/Visitor.java @@ -0,0 +1,31 @@ +// patterns/trash/Visitor.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// The base class for Visitors. +package patterns.trash; + +public abstract class Visitor { + protected double alTotal; // Aluminum + protected double pTotal; // Paper + protected double gTotal; // Glass + protected double cTotal; // Cardboard + protected String descriptor; + protected Visitor(String descriptor) { + this.descriptor = descriptor; + } + protected void show(String type, double value) { + System.out.printf( + "%s %s: %.2f%n", type, descriptor, value); + } + public void total() { + show("Total Aluminum", alTotal); + show("Total Paper", pTotal); + show("Total Glass", gTotal); + show("Total Cardboard", cTotal); + } + abstract void visit(Aluminum a); + abstract void visit(Paper p); + abstract void visit(Glass g); + abstract void visit(Cardboard c); +} diff --git a/patterns/trashvisitor/Aluminum.java b/patterns/trashvisitor/Aluminum.java deleted file mode 100644 index 9bb9c9e4d..000000000 --- a/patterns/trashvisitor/Aluminum.java +++ /dev/null @@ -1,15 +0,0 @@ -// patterns/trashvisitor/Aluminum.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Aluminum for the visitor pattern -package patterns.trashvisitor; -import patterns.trash.*; - -public class Aluminum extends patterns.trash.Aluminum - implements Visitable { - public Aluminum(double wt) { super(wt); } - @Override public void accept(Visitor v) { - v.visit(this); - } -} diff --git a/patterns/trashvisitor/Cardboard.java b/patterns/trashvisitor/Cardboard.java deleted file mode 100644 index 50c3b1c9f..000000000 --- a/patterns/trashvisitor/Cardboard.java +++ /dev/null @@ -1,15 +0,0 @@ -// patterns/trashvisitor/Cardboard.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Cardboard for the visitor pattern -package patterns.trashvisitor; -import patterns.trash.*; - -public class Cardboard extends patterns.trash.Cardboard - implements Visitable { - public Cardboard(double wt) { super(wt); } - @Override public void accept(Visitor v) { - v.visit(this); - } -} diff --git a/patterns/trashvisitor/Glass.java b/patterns/trashvisitor/Glass.java deleted file mode 100644 index 71f1de037..000000000 --- a/patterns/trashvisitor/Glass.java +++ /dev/null @@ -1,15 +0,0 @@ -// patterns/trashvisitor/Glass.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Glass for the visitor pattern -package patterns.trashvisitor; -import patterns.trash.*; - -public class Glass extends patterns.trash.Glass - implements Visitable { - public Glass(double wt) { super(wt); } - @Override public void accept(Visitor v) { - v.visit(this); - } -} diff --git a/patterns/trashvisitor/Paper.java b/patterns/trashvisitor/Paper.java deleted file mode 100644 index ad209ffdf..000000000 --- a/patterns/trashvisitor/Paper.java +++ /dev/null @@ -1,15 +0,0 @@ -// patterns/trashvisitor/Paper.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Paper for the visitor pattern -package patterns.trashvisitor; -import patterns.trash.*; - -public class Paper extends patterns.trash.Paper - implements Visitable { - public Paper(double wt) { super(wt); } - @Override public void accept(Visitor v) { - v.visit(this); - } -} diff --git a/patterns/trashvisitor/TrashVisitor.java b/patterns/trashvisitor/TrashVisitor.java deleted file mode 100644 index c794d82f7..000000000 --- a/patterns/trashvisitor/TrashVisitor.java +++ /dev/null @@ -1,117 +0,0 @@ -// patterns/trashvisitor/TrashVisitor.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// {java patterns.trashvisitor.TrashVisitor} -package patterns.trashvisitor; -import patterns.trash.*; -import java.util.*; - -// Specific group of algorithms packaged -// in each implementation of Visitor: -class PriceVisitor implements Visitor { - private double alSum; // Aluminum - private double pSum; // Paper - private double gSum; // Glass - private double cSum; // Cardboard - public static void show(String s) { - System.out.println(s); - } - @Override public void visit(Aluminum al) { - double v = al.weight() * al.value(); - show("value of Aluminum= " + v); - alSum += v; - } - @Override public void visit(Paper p) { - double v = p.weight() * p.value(); - show("value of Paper= " + v); - pSum += v; - } - @Override public void visit(Glass g) { - double v = g.weight() * g.value(); - show("value of Glass= " + v); - gSum += v; - } - @Override public void visit(Cardboard c) { - double v = c.weight() * c.value(); - show("value of Cardboard = " + v); - cSum += v; - } - @Override public void total() { - show( - "Total Aluminum: $" + alSum + "\n" + - "Total Paper: $" + pSum + "\n" + - "Total Glass: $" + gSum + "\n" + - "Total Cardboard: $" + cSum); - } -} - -class WeightVisitor implements Visitor { - private double alSum; // Aluminum - private double pSum; // Paper - private double gSum; // Glass - private double cSum; // Cardboard - public static void show(String s) { - System.out.println(s); - } - @Override public void visit(Aluminum al) { - alSum += al.weight(); - show("Aluminum weight = " + al.weight()); - } - @Override public void visit(Paper p) { - pSum += p.weight(); - show("Paper weight = " + p.weight()); - } - @Override public void visit(Glass g) { - gSum += g.weight(); - show("Glass weight = " + g.weight()); - } - @Override public void visit(Cardboard c) { - cSum += c.weight(); - show("Cardboard weight = " + c.weight()); - } - @Override public void total() { - show("Total weight Aluminum:" + alSum); - show("Total weight Paper:" + pSum); - show("Total weight Glass:" + gSum); - show("Total weight Cardboard:" + cSum); - } -} - -public class TrashVisitor { - public static void main(String[] args) { - List bin = new ArrayList<>(); - // ParseTrash still works, without changes: - ParseTrash.fillBin("trashvisitor", bin); - List visitors = Arrays.asList( - new PriceVisitor(), new WeightVisitor()); - bin.forEach( t -> { - Visitable v = (Visitable) t; - visitors.forEach(visitor -> v.accept(visitor)); - }); - visitors.forEach(Visitor::total); - } -} -/* Output: (First and Last 10 Lines) -Loading patterns.trashvisitor.Glass -Loading patterns.trashvisitor.Paper -Loading patterns.trashvisitor.Aluminum -Loading patterns.trashvisitor.Cardboard -value of Glass= 12.420000225305557 -Glass weight = 54.0 -value of Paper= 2.2000000327825546 -Paper weight = 22.0 -value of Paper= 1.1000000163912773 -Paper weight = 11.0 -...________...________...________...________... -value of Cardboard = 5.060000091791153 -Cardboard weight = 22.0 -Total Aluminum: $860.0499778985977 -Total Paper: $35.80000053346157 -Total Glass: $150.1900027245283 -Total Cardboard: $40.02000072598457 -Total weight Aluminum:515.0 -Total weight Paper:358.0 -Total weight Glass:653.0 -Total weight Cardboard:174.0 -*/ diff --git a/patterns/trashvisitor/Visitable.java b/patterns/trashvisitor/Visitable.java deleted file mode 100644 index 54563d435..000000000 --- a/patterns/trashvisitor/Visitable.java +++ /dev/null @@ -1,12 +0,0 @@ -// patterns/trashvisitor/Visitable.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// An interface to add visitor functionality to the -// Trash hierarchy without modifying the base class -package patterns.trashvisitor; - -public interface Visitable { - // The new method: - void accept(Visitor v); -} diff --git a/patterns/trashvisitor/Visitor.java b/patterns/trashvisitor/Visitor.java deleted file mode 100644 index 3f9bfe460..000000000 --- a/patterns/trashvisitor/Visitor.java +++ /dev/null @@ -1,14 +0,0 @@ -// patterns/trashvisitor/Visitor.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// The base interface for visitors -package patterns.trashvisitor; - -public interface Visitor { - void visit(Aluminum a); - void visit(Paper p); - void visit(Glass g); - void visit(Cardboard c); - void total(); -} diff --git a/patterns/visitor/BeeAndFlowers.java b/patterns/visitor/BeeAndFlowers.java index a1d400459..395966190 100644 --- a/patterns/visitor/BeeAndFlowers.java +++ b/patterns/visitor/BeeAndFlowers.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Demonstration of "visitor" pattern +// Demonstration of the Visitor pattern. // {java patterns.visitor.BeeAndFlowers} package patterns.visitor; import java.util.*; @@ -11,7 +11,7 @@ interface Visitor { void visit(Gladiolus g); - void visit(Renuculus r); + void visit(Ranunculus r); void visit(Chrysanthemum c); } @@ -25,7 +25,7 @@ class Gladiolus implements Flower { public void accept(Visitor v) { v.visit(this);} } -class Renuculus implements Flower { +class Ranunculus implements Flower { @Override public void accept(Visitor v) { v.visit(this);} } @@ -37,13 +37,13 @@ class Chrysanthemum implements Flower { // Add the ability to produce a String: class StringVal implements Visitor { - String s; + private String s; @Override public String toString() { return s; } @Override public void visit(Gladiolus g) { s = "Gladiolus"; } - @Override public void visit(Renuculus r) { - s = "Renuculus"; + @Override public void visit(Ranunculus r) { + s = "Ranunculus"; } @Override public void visit(Chrysanthemum c) { s = "Chrysanthemum"; @@ -55,8 +55,8 @@ class Bee implements Visitor { @Override public void visit(Gladiolus g) { System.out.println("Bee and Gladiolus"); } - @Override public void visit(Renuculus r) { - System.out.println("Bee and Renuculus"); + @Override public void visit(Ranunculus r) { + System.out.println("Bee and Ranunculus"); } @Override public void visit(Chrysanthemum c) { System.out.println("Bee and Chrysanthemum"); @@ -66,7 +66,7 @@ class Bee implements Visitor { class FlowerFactory { static List> flowers = Arrays.asList(Gladiolus::new, - Renuculus::new, Chrysanthemum::new); + Ranunculus::new, Chrysanthemum::new); static final int SZ = flowers.size(); private static SplittableRandom rand = new SplittableRandom(47); @@ -95,21 +95,21 @@ public static void main(String[] args) { Gladiolus Chrysanthemum Gladiolus -Renuculus +Ranunculus Chrysanthemum -Renuculus +Ranunculus Chrysanthemum Chrysanthemum Chrysanthemum -Renuculus +Ranunculus Bee and Gladiolus Bee and Chrysanthemum Bee and Gladiolus -Bee and Renuculus +Bee and Ranunculus Bee and Chrysanthemum -Bee and Renuculus +Bee and Ranunculus Bee and Chrysanthemum Bee and Chrysanthemum Bee and Chrysanthemum -Bee and Renuculus +Bee and Ranunculus */ diff --git a/polymorphism/RTTI.java b/polymorphism/Reflect.java similarity index 81% rename from polymorphism/RTTI.java rename to polymorphism/Reflect.java index fe56a6b26..341e86f68 100644 --- a/polymorphism/RTTI.java +++ b/polymorphism/Reflect.java @@ -1,8 +1,7 @@ -// polymorphism/RTTI.java +// polymorphism/Reflect.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Downcasting & Runtime type information (RTTI) // {ThrowsException} class Useful { @@ -18,7 +17,7 @@ public void v() {} public void w() {} } -public class RTTI { +public class Reflect { public static void main(String[] args) { Useful[] x = { new Useful(), @@ -28,7 +27,7 @@ public static void main(String[] args) { x[1].g(); // Compile time: method not found in Useful: //- x[1].u(); - ((MoreUseful)x[1]).u(); // Downcast/RTTI + ((MoreUseful)x[1]).u(); // Downcast/Reflect ((MoreUseful)x[0]).u(); // Exception thrown } } @@ -37,5 +36,5 @@ public static void main(String[] args) { Exception in thread "main" java.lang.ClassCastException: Useful cannot be cast to MoreUseful - at RTTI.main(RTTI.java:29) + at Reflect.main(Reflect.java:28) */ diff --git a/references/CopyConstructor.java b/references/CopyConstructor.java index 6ffb5303b..fe16259fa 100644 --- a/references/CopyConstructor.java +++ b/references/CopyConstructor.java @@ -13,7 +13,7 @@ class FruitQualities { private int ripeness; private int smell; // etc. - // No-arg constructor: + // Zero-argument constructor: FruitQualities() { // Do something meaningful... } @@ -32,7 +32,7 @@ class FruitQualities { class Seed { // Members... - Seed() { /* No-arg constructor */ } + Seed() { /* Zero-argument constructor */ } Seed(Seed s) { /* Copy constructor */ } } @@ -81,7 +81,7 @@ class Tomato extends Fruit { class ZebraQualities extends FruitQualities { private int stripedness; - // No-arg constructor: + // Zero-argument constructor: ZebraQualities() { super(); // do something meaningful... @@ -117,7 +117,7 @@ public static void ripen(Tomato t) { t.getClass().getName()); } public static void slice(Fruit f) { - f = new Fruit(f); // Hmmm... will this work? // [2] + f = new Fruit(f); // Hmm... will this work? // [2] System.out.println("In slice, f is a " + f.getClass().getName()); } diff --git a/typeinfo/AnonymousImplementation.java b/reflection/AnonymousImplementation.java similarity index 94% rename from typeinfo/AnonymousImplementation.java rename to reflection/AnonymousImplementation.java index 7cff12823..290798bbf 100644 --- a/typeinfo/AnonymousImplementation.java +++ b/reflection/AnonymousImplementation.java @@ -1,9 +1,9 @@ -// typeinfo/AnonymousImplementation.java +// reflection/AnonymousImplementation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Anonymous inner classes can't hide from reflection -import typeinfo.interfacea.*; +import reflection.interfacea.*; class AnonymousA { public static A makeA() { diff --git a/typeinfo/BoundedClassReferences.java b/reflection/BoundedClassReferences.java similarity index 90% rename from typeinfo/BoundedClassReferences.java rename to reflection/BoundedClassReferences.java index 58d7eb009..6d2960591 100644 --- a/typeinfo/BoundedClassReferences.java +++ b/reflection/BoundedClassReferences.java @@ -1,4 +1,4 @@ -// typeinfo/BoundedClassReferences.java +// reflection/BoundedClassReferences.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/ClassCasts.java b/reflection/ClassCasts.java similarity index 93% rename from typeinfo/ClassCasts.java rename to reflection/ClassCasts.java index 5f36ba4b3..3efd64c39 100644 --- a/typeinfo/ClassCasts.java +++ b/reflection/ClassCasts.java @@ -1,4 +1,4 @@ -// typeinfo/ClassCasts.java +// reflection/ClassCasts.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/ClassInitialization.java b/reflection/ClassInitialization.java similarity index 97% rename from typeinfo/ClassInitialization.java rename to reflection/ClassInitialization.java index 3814949d8..21b711338 100644 --- a/typeinfo/ClassInitialization.java +++ b/reflection/ClassInitialization.java @@ -1,4 +1,4 @@ -// typeinfo/ClassInitialization.java +// reflection/ClassInitialization.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/DynamicSupplier.java b/reflection/DynamicSupplier.java similarity index 96% rename from typeinfo/DynamicSupplier.java rename to reflection/DynamicSupplier.java index 1bcf039a7..910d12154 100644 --- a/typeinfo/DynamicSupplier.java +++ b/reflection/DynamicSupplier.java @@ -1,4 +1,4 @@ -// typeinfo/DynamicSupplier.java +// reflection/DynamicSupplier.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/FamilyVsExactType.java b/reflection/FamilyVsExactType.java similarity index 90% rename from typeinfo/FamilyVsExactType.java rename to reflection/FamilyVsExactType.java index 10e1b3804..db2bc9daf 100644 --- a/typeinfo/FamilyVsExactType.java +++ b/reflection/FamilyVsExactType.java @@ -1,10 +1,10 @@ -// typeinfo/FamilyVsExactType.java +// reflection/FamilyVsExactType.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // The difference between instanceof and class -// {java typeinfo.FamilyVsExactType} -package typeinfo; +// {java reflection.FamilyVsExactType} +package reflection; class Base {} class Derived extends Base {} @@ -41,7 +41,7 @@ public static void main(String[] args) { } } /* Output: -Testing x of type class typeinfo.Base +Testing x of type class reflection.Base x instanceof Base true x instanceof Derived false Base.isInstance(x) true @@ -50,7 +50,7 @@ public static void main(String[] args) { x.getClass() == Derived.class false x.getClass().equals(Base.class)) true x.getClass().equals(Derived.class)) false -Testing x of type class typeinfo.Derived +Testing x of type class reflection.Derived x instanceof Base true x instanceof Derived true Base.isInstance(x) true diff --git a/typeinfo/GenericClassReferences.java b/reflection/GenericClassReferences.java similarity index 91% rename from typeinfo/GenericClassReferences.java rename to reflection/GenericClassReferences.java index 9925fb199..66601f93c 100644 --- a/typeinfo/GenericClassReferences.java +++ b/reflection/GenericClassReferences.java @@ -1,4 +1,4 @@ -// typeinfo/GenericClassReferences.java +// reflection/GenericClassReferences.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/HiddenImplementation.java b/reflection/HiddenImplementation.java similarity index 88% rename from typeinfo/HiddenImplementation.java rename to reflection/HiddenImplementation.java index 88dcb2386..1d536d309 100644 --- a/typeinfo/HiddenImplementation.java +++ b/reflection/HiddenImplementation.java @@ -1,10 +1,10 @@ -// typeinfo/HiddenImplementation.java +// reflection/HiddenImplementation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sneaking around package hiding -import typeinfo.interfacea.*; -import typeinfo.packageaccess.*; +import reflection.interfacea.*; +import reflection.packageaccess.*; import java.lang.reflect.*; public class HiddenImplementation { @@ -36,7 +36,7 @@ public class HiddenImplementation { } /* Output: public C.f() -typeinfo.packageaccess.C +reflection.packageaccess.C public C.g() package C.u() protected C.v() diff --git a/typeinfo/ID2.java b/reflection/ID2.java similarity index 96% rename from typeinfo/ID2.java rename to reflection/ID2.java index 8463a4fe9..6ff472af1 100644 --- a/typeinfo/ID2.java +++ b/reflection/ID2.java @@ -1,4 +1,4 @@ -// typeinfo/ID2.java +// reflection/ID2.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/InnerImplementation.java b/reflection/InnerImplementation.java similarity index 90% rename from typeinfo/InnerImplementation.java rename to reflection/InnerImplementation.java index 1c15b7518..248049c27 100644 --- a/typeinfo/InnerImplementation.java +++ b/reflection/InnerImplementation.java @@ -1,9 +1,9 @@ -// typeinfo/InnerImplementation.java +// reflection/InnerImplementation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Private inner classes can't hide from reflection -import typeinfo.interfacea.*; +// Private inner classes can't hide from reflection. +import reflection.interfacea.*; class InnerA { private static class C implements A { diff --git a/typeinfo/InterfaceViolation.java b/reflection/InterfaceViolation.java similarity index 88% rename from typeinfo/InterfaceViolation.java rename to reflection/InterfaceViolation.java index 84300720e..ef8bfc954 100644 --- a/typeinfo/InterfaceViolation.java +++ b/reflection/InterfaceViolation.java @@ -1,9 +1,9 @@ -// typeinfo/InterfaceViolation.java +// reflection/InterfaceViolation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Sneaking around an interface -import typeinfo.interfacea.*; +import reflection.interfacea.*; class B implements A { @Override public void f() {} diff --git a/typeinfo/ModifyingPrivateFields.java b/reflection/ModifyingPrivateFields.java similarity index 97% rename from typeinfo/ModifyingPrivateFields.java rename to reflection/ModifyingPrivateFields.java index 0d68972e4..99b929531 100644 --- a/typeinfo/ModifyingPrivateFields.java +++ b/reflection/ModifyingPrivateFields.java @@ -1,4 +1,4 @@ -// typeinfo/ModifyingPrivateFields.java +// reflection/ModifyingPrivateFields.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/NullRobot.java b/reflection/NullRobot.java similarity index 98% rename from typeinfo/NullRobot.java rename to reflection/NullRobot.java index a3d0ed6b3..c3e19659f 100644 --- a/typeinfo/NullRobot.java +++ b/reflection/NullRobot.java @@ -1,4 +1,4 @@ -// typeinfo/NullRobot.java +// reflection/NullRobot.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/Operation.java b/reflection/Operation.java similarity index 93% rename from typeinfo/Operation.java rename to reflection/Operation.java index d3013aca9..4b749e7d1 100644 --- a/typeinfo/Operation.java +++ b/reflection/Operation.java @@ -1,4 +1,4 @@ -// typeinfo/Operation.java +// reflection/Operation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/Person.java b/reflection/Person.java similarity index 98% rename from typeinfo/Person.java rename to reflection/Person.java index 77dc091e0..070a2490f 100644 --- a/typeinfo/Person.java +++ b/reflection/Person.java @@ -1,4 +1,4 @@ -// typeinfo/Person.java +// reflection/Person.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/PetCounter.java b/reflection/PetCounter.java similarity index 97% rename from typeinfo/PetCounter.java rename to reflection/PetCounter.java index bc0642f5e..974880620 100644 --- a/typeinfo/PetCounter.java +++ b/reflection/PetCounter.java @@ -1,9 +1,9 @@ -// typeinfo/PetCounter.java +// reflection/PetCounter.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using instanceof -import typeinfo.pets.*; +import reflection.pets.*; import java.util.*; public class PetCounter { diff --git a/typeinfo/PetCounter2.java b/reflection/PetCounter2.java similarity index 90% rename from typeinfo/PetCounter2.java rename to reflection/PetCounter2.java index 1293a1075..ccac0b57f 100644 --- a/typeinfo/PetCounter2.java +++ b/reflection/PetCounter2.java @@ -1,8 +1,8 @@ -// typeinfo/PetCounter2.java +// reflection/PetCounter2.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -import typeinfo.pets.*; +import reflection.pets.*; public class PetCounter2 { public static void main(String[] args) { diff --git a/typeinfo/PetCounter3.java b/reflection/PetCounter3.java similarity index 96% rename from typeinfo/PetCounter3.java rename to reflection/PetCounter3.java index ed4c51bd6..aec88ef0b 100644 --- a/typeinfo/PetCounter3.java +++ b/reflection/PetCounter3.java @@ -1,4 +1,4 @@ -// typeinfo/PetCounter3.java +// reflection/PetCounter3.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. @@ -6,7 +6,7 @@ import java.util.*; import java.util.stream.*; import onjava.*; -import typeinfo.pets.*; +import reflection.pets.*; public class PetCounter3 { static class Counter extends diff --git a/typeinfo/PetCounter4.java b/reflection/PetCounter4.java similarity index 92% rename from typeinfo/PetCounter4.java rename to reflection/PetCounter4.java index a7058c927..9015e66c7 100644 --- a/typeinfo/PetCounter4.java +++ b/reflection/PetCounter4.java @@ -1,8 +1,8 @@ -// typeinfo/PetCounter4.java +// reflection/PetCounter4.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -import typeinfo.pets.*; +import reflection.pets.*; import onjava.*; public class PetCounter4 { diff --git a/typeinfo/Position.java b/reflection/Position.java similarity index 98% rename from typeinfo/Position.java rename to reflection/Position.java index 44df82691..ea07ca78f 100644 --- a/typeinfo/Position.java +++ b/reflection/Position.java @@ -1,4 +1,4 @@ -// typeinfo/Position.java +// reflection/Position.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/RegisteredFactories.java b/reflection/RegisteredFactories.java similarity index 98% rename from typeinfo/RegisteredFactories.java rename to reflection/RegisteredFactories.java index bc7d05457..04267c425 100644 --- a/typeinfo/RegisteredFactories.java +++ b/reflection/RegisteredFactories.java @@ -1,4 +1,4 @@ -// typeinfo/RegisteredFactories.java +// reflection/RegisteredFactories.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/Robot.java b/reflection/Robot.java similarity index 96% rename from typeinfo/Robot.java rename to reflection/Robot.java index ed7adc3f9..00818d378 100644 --- a/typeinfo/Robot.java +++ b/reflection/Robot.java @@ -1,4 +1,4 @@ -// typeinfo/Robot.java +// reflection/Robot.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/SelectingMethods.java b/reflection/SelectingMethods.java similarity index 97% rename from typeinfo/SelectingMethods.java rename to reflection/SelectingMethods.java index eb679194b..9002cf356 100644 --- a/typeinfo/SelectingMethods.java +++ b/reflection/SelectingMethods.java @@ -1,4 +1,4 @@ -// typeinfo/SelectingMethods.java +// reflection/SelectingMethods.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/Shapes.java b/reflection/Shapes.java similarity index 96% rename from typeinfo/Shapes.java rename to reflection/Shapes.java index ec9296504..05d15df5c 100644 --- a/typeinfo/Shapes.java +++ b/reflection/Shapes.java @@ -1,4 +1,4 @@ -// typeinfo/Shapes.java +// reflection/Shapes.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/ShowMethods.java b/reflection/ShowMethods.java similarity index 98% rename from typeinfo/ShowMethods.java rename to reflection/ShowMethods.java index ad4f16eb5..48024cdc4 100644 --- a/typeinfo/ShowMethods.java +++ b/reflection/ShowMethods.java @@ -1,4 +1,4 @@ -// typeinfo/ShowMethods.java +// reflection/ShowMethods.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/SimpleDynamicProxy.java b/reflection/SimpleDynamicProxy.java similarity index 97% rename from typeinfo/SimpleDynamicProxy.java rename to reflection/SimpleDynamicProxy.java index 544b780b2..9eeb02926 100644 --- a/typeinfo/SimpleDynamicProxy.java +++ b/reflection/SimpleDynamicProxy.java @@ -1,4 +1,4 @@ -// typeinfo/SimpleDynamicProxy.java +// reflection/SimpleDynamicProxy.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/SimpleProxyDemo.java b/reflection/SimpleProxyDemo.java similarity index 97% rename from typeinfo/SimpleProxyDemo.java rename to reflection/SimpleProxyDemo.java index 1e5eea41e..24f7b0166 100644 --- a/typeinfo/SimpleProxyDemo.java +++ b/reflection/SimpleProxyDemo.java @@ -1,4 +1,4 @@ -// typeinfo/SimpleProxyDemo.java +// reflection/SimpleProxyDemo.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/SnowRobot.java b/reflection/SnowRobot.java similarity index 97% rename from typeinfo/SnowRobot.java rename to reflection/SnowRobot.java index b28b1f7fb..227dcb49d 100644 --- a/typeinfo/SnowRobot.java +++ b/reflection/SnowRobot.java @@ -1,4 +1,4 @@ -// typeinfo/SnowRobot.java +// reflection/SnowRobot.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/Staff.java b/reflection/Staff.java similarity index 98% rename from typeinfo/Staff.java rename to reflection/Staff.java index 204280343..8c3bb76e8 100644 --- a/typeinfo/Staff.java +++ b/reflection/Staff.java @@ -1,4 +1,4 @@ -// typeinfo/Staff.java +// reflection/Staff.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/SweetShop.java b/reflection/SweetShop.java similarity index 97% rename from typeinfo/SweetShop.java rename to reflection/SweetShop.java index a046b281c..d5f964f0a 100644 --- a/typeinfo/SweetShop.java +++ b/reflection/SweetShop.java @@ -1,4 +1,4 @@ -// typeinfo/SweetShop.java +// reflection/SweetShop.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/WildcardClassReferences.java b/reflection/WildcardClassReferences.java similarity index 87% rename from typeinfo/WildcardClassReferences.java rename to reflection/WildcardClassReferences.java index 066b15d5d..d7266f732 100644 --- a/typeinfo/WildcardClassReferences.java +++ b/reflection/WildcardClassReferences.java @@ -1,4 +1,4 @@ -// typeinfo/WildcardClassReferences.java +// reflection/WildcardClassReferences.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. diff --git a/typeinfo/interfacea/A.java b/reflection/interfacea/A.java similarity index 75% rename from typeinfo/interfacea/A.java rename to reflection/interfacea/A.java index 359fb98ef..2b4c33ec9 100644 --- a/typeinfo/interfacea/A.java +++ b/reflection/interfacea/A.java @@ -1,8 +1,8 @@ -// typeinfo/interfacea/A.java +// reflection/interfacea/A.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.interfacea; +package reflection.interfacea; public interface A { void f(); diff --git a/typeinfo/packageaccess/HiddenC.java b/reflection/packageaccess/HiddenC.java similarity index 84% rename from typeinfo/packageaccess/HiddenC.java rename to reflection/packageaccess/HiddenC.java index 53277281e..24fb20d4b 100644 --- a/typeinfo/packageaccess/HiddenC.java +++ b/reflection/packageaccess/HiddenC.java @@ -1,9 +1,9 @@ -// typeinfo/packageaccess/HiddenC.java +// reflection/packageaccess/HiddenC.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.packageaccess; -import typeinfo.interfacea.*; +package reflection.packageaccess; +import reflection.interfacea.*; class C implements A { @Override public void f() { diff --git a/typeinfo/pets/Cat.java b/reflection/pets/Cat.java similarity index 83% rename from typeinfo/pets/Cat.java rename to reflection/pets/Cat.java index 68594e746..2ed2aba94 100644 --- a/typeinfo/pets/Cat.java +++ b/reflection/pets/Cat.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Cat.java +// reflection/pets/Cat.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Cat extends Pet { public Cat(String name) { super(name); } diff --git a/typeinfo/pets/Creator.java b/reflection/pets/Creator.java similarity index 95% rename from typeinfo/pets/Creator.java rename to reflection/pets/Creator.java index e3703e76c..f5f152fe8 100644 --- a/typeinfo/pets/Creator.java +++ b/reflection/pets/Creator.java @@ -1,9 +1,9 @@ -// typeinfo/pets/Creator.java +// reflection/pets/Creator.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Creates random Pets -package typeinfo.pets; +package reflection.pets; import java.util.*; import java.util.function.*; import java.util.stream.*; diff --git a/typeinfo/pets/Cymric.java b/reflection/pets/Cymric.java similarity index 83% rename from typeinfo/pets/Cymric.java rename to reflection/pets/Cymric.java index 4835e4a25..11521fe85 100644 --- a/typeinfo/pets/Cymric.java +++ b/reflection/pets/Cymric.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Cymric.java +// reflection/pets/Cymric.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Cymric extends Manx { public Cymric(String name) { super(name); } diff --git a/typeinfo/pets/Dog.java b/reflection/pets/Dog.java similarity index 83% rename from typeinfo/pets/Dog.java rename to reflection/pets/Dog.java index 2e5b9a8ab..abd370ff2 100644 --- a/typeinfo/pets/Dog.java +++ b/reflection/pets/Dog.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Dog.java +// reflection/pets/Dog.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Dog extends Pet { public Dog(String name) { super(name); } diff --git a/typeinfo/pets/EgyptianMau.java b/reflection/pets/EgyptianMau.java similarity index 82% rename from typeinfo/pets/EgyptianMau.java rename to reflection/pets/EgyptianMau.java index e728de938..4e314fb63 100644 --- a/typeinfo/pets/EgyptianMau.java +++ b/reflection/pets/EgyptianMau.java @@ -1,8 +1,8 @@ -// typeinfo/pets/EgyptianMau.java +// reflection/pets/EgyptianMau.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class EgyptianMau extends Cat { public EgyptianMau(String name) { super(name); } diff --git a/typeinfo/pets/ForNamePetCreator.java b/reflection/pets/ForNamePetCreator.java similarity index 71% rename from typeinfo/pets/ForNamePetCreator.java rename to reflection/pets/ForNamePetCreator.java index 6e35740d2..92648db5d 100644 --- a/typeinfo/pets/ForNamePetCreator.java +++ b/reflection/pets/ForNamePetCreator.java @@ -1,8 +1,8 @@ -// typeinfo/pets/ForNamePetCreator.java +// reflection/pets/ForNamePetCreator.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; import java.util.*; public class ForNamePetCreator extends Creator { @@ -10,14 +10,14 @@ public class ForNamePetCreator extends Creator { new ArrayList<>(); // Types you want randomly created: private static String[] typeNames = { - "typeinfo.pets.Mutt", - "typeinfo.pets.Pug", - "typeinfo.pets.EgyptianMau", - "typeinfo.pets.Manx", - "typeinfo.pets.Cymric", - "typeinfo.pets.Rat", - "typeinfo.pets.Mouse", - "typeinfo.pets.Hamster" + "reflection.pets.Mutt", + "reflection.pets.Pug", + "reflection.pets.EgyptianMau", + "reflection.pets.Manx", + "reflection.pets.Cymric", + "reflection.pets.Rat", + "reflection.pets.Mouse", + "reflection.pets.Hamster" }; @SuppressWarnings("unchecked") private static void loader() { diff --git a/typeinfo/pets/Hamster.java b/reflection/pets/Hamster.java similarity index 83% rename from typeinfo/pets/Hamster.java rename to reflection/pets/Hamster.java index 9763b30b4..fb09f3ab8 100644 --- a/typeinfo/pets/Hamster.java +++ b/reflection/pets/Hamster.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Hamster.java +// reflection/pets/Hamster.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Hamster extends Rodent { public Hamster(String name) { super(name); } diff --git a/typeinfo/pets/Individual.java b/reflection/pets/Individual.java similarity index 95% rename from typeinfo/pets/Individual.java rename to reflection/pets/Individual.java index 1783621db..524fba6e4 100644 --- a/typeinfo/pets/Individual.java +++ b/reflection/pets/Individual.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Individual.java +// reflection/pets/Individual.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; import java.util.*; public class diff --git a/typeinfo/pets/Manx.java b/reflection/pets/Manx.java similarity index 83% rename from typeinfo/pets/Manx.java rename to reflection/pets/Manx.java index bf949bc0e..a5c6bea91 100644 --- a/typeinfo/pets/Manx.java +++ b/reflection/pets/Manx.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Manx.java +// reflection/pets/Manx.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Manx extends Cat { public Manx(String name) { super(name); } diff --git a/typeinfo/pets/Mouse.java b/reflection/pets/Mouse.java similarity index 83% rename from typeinfo/pets/Mouse.java rename to reflection/pets/Mouse.java index 07a7aac8f..9ad9b290d 100644 --- a/typeinfo/pets/Mouse.java +++ b/reflection/pets/Mouse.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Mouse.java +// reflection/pets/Mouse.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Mouse extends Rodent { public Mouse(String name) { super(name); } diff --git a/typeinfo/pets/Mutt.java b/reflection/pets/Mutt.java similarity index 83% rename from typeinfo/pets/Mutt.java rename to reflection/pets/Mutt.java index be99e73b2..f50ba64de 100644 --- a/typeinfo/pets/Mutt.java +++ b/reflection/pets/Mutt.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Mutt.java +// reflection/pets/Mutt.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Mutt extends Dog { public Mutt(String name) { super(name); } diff --git a/typeinfo/pets/Person.java b/reflection/pets/Person.java similarity index 81% rename from typeinfo/pets/Person.java rename to reflection/pets/Person.java index f2055e649..bfe61ca3b 100644 --- a/typeinfo/pets/Person.java +++ b/reflection/pets/Person.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Person.java +// reflection/pets/Person.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Person extends Individual { public Person(String name) { super(name); } diff --git a/typeinfo/pets/Pet.java b/reflection/pets/Pet.java similarity index 83% rename from typeinfo/pets/Pet.java rename to reflection/pets/Pet.java index b4c934aca..a3a0cf2ed 100644 --- a/typeinfo/pets/Pet.java +++ b/reflection/pets/Pet.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Pet.java +// reflection/pets/Pet.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Pet extends Individual { public Pet(String name) { super(name); } diff --git a/typeinfo/pets/PetCreator.java b/reflection/pets/PetCreator.java similarity index 75% rename from typeinfo/pets/PetCreator.java rename to reflection/pets/PetCreator.java index 3541160b4..1f01ceed3 100644 --- a/typeinfo/pets/PetCreator.java +++ b/reflection/pets/PetCreator.java @@ -1,10 +1,10 @@ -// typeinfo/pets/PetCreator.java +// reflection/pets/PetCreator.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Using class literals -// {java typeinfo.pets.PetCreator} -package typeinfo.pets; +// {java reflection.pets.PetCreator} +package reflection.pets; import java.util.*; public class PetCreator extends Creator { @@ -33,10 +33,10 @@ public static void main(String[] args) { } } /* Output: -[class typeinfo.pets.Mutt, class typeinfo.pets.Pug, -class typeinfo.pets.EgyptianMau, class -typeinfo.pets.Manx, class typeinfo.pets.Cymric, class -typeinfo.pets.Rat, class typeinfo.pets.Mouse, class -typeinfo.pets.Hamster] +[class reflection.pets.Mutt, class reflection.pets.Pug, +class reflection.pets.EgyptianMau, class +reflection.pets.Manx, class reflection.pets.Cymric, class +reflection.pets.Rat, class reflection.pets.Mouse, class +reflection.pets.Hamster] [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug] */ diff --git a/typeinfo/pets/Pug.java b/reflection/pets/Pug.java similarity index 83% rename from typeinfo/pets/Pug.java rename to reflection/pets/Pug.java index 83da95189..1a150b865 100644 --- a/typeinfo/pets/Pug.java +++ b/reflection/pets/Pug.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Pug.java +// reflection/pets/Pug.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Pug extends Dog { public Pug(String name) { super(name); } diff --git a/typeinfo/pets/Rat.java b/reflection/pets/Rat.java similarity index 83% rename from typeinfo/pets/Rat.java rename to reflection/pets/Rat.java index 68a346fb2..cd006426d 100644 --- a/typeinfo/pets/Rat.java +++ b/reflection/pets/Rat.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Rat.java +// reflection/pets/Rat.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Rat extends Rodent { public Rat(String name) { super(name); } diff --git a/typeinfo/pets/Rodent.java b/reflection/pets/Rodent.java similarity index 83% rename from typeinfo/pets/Rodent.java rename to reflection/pets/Rodent.java index cab79e752..3c9063ba3 100644 --- a/typeinfo/pets/Rodent.java +++ b/reflection/pets/Rodent.java @@ -1,8 +1,8 @@ -// typeinfo/pets/Rodent.java +// reflection/pets/Rodent.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -package typeinfo.pets; +package reflection.pets; public class Rodent extends Pet { public Rodent(String name) { super(name); } diff --git a/typeinfo/toys/GenericToyTest.java b/reflection/toys/GenericToyTest.java similarity index 85% rename from typeinfo/toys/GenericToyTest.java rename to reflection/toys/GenericToyTest.java index 930fbc779..3332bcd64 100644 --- a/typeinfo/toys/GenericToyTest.java +++ b/reflection/toys/GenericToyTest.java @@ -1,10 +1,10 @@ -// typeinfo/toys/GenericToyTest.java +// reflection/toys/GenericToyTest.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Testing class Class -// {java typeinfo.toys.GenericToyTest} -package typeinfo.toys; +// {java reflection.toys.GenericToyTest} +package reflection.toys; public class GenericToyTest { public static void diff --git a/typeinfo/toys/ToyTest.java b/reflection/toys/ToyTest.java similarity index 67% rename from typeinfo/toys/ToyTest.java rename to reflection/toys/ToyTest.java index f67261f42..e81e64b7e 100644 --- a/typeinfo/toys/ToyTest.java +++ b/reflection/toys/ToyTest.java @@ -1,10 +1,10 @@ -// typeinfo/toys/ToyTest.java +// reflection/toys/ToyTest.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Testing class Class -// {java typeinfo.toys.ToyTest} -package typeinfo.toys; +// {java reflection.toys.ToyTest} +package reflection.toys; import java.lang.reflect.InvocationTargetException; interface HasBatteries {} @@ -12,7 +12,7 @@ interface Waterproof {} interface Shoots {} class Toy { - // Comment out the following no-arg + // Comment out the following zero-argument // constructor to see NoSuchMethodError public Toy() {} public Toy(int i) {} @@ -36,7 +36,7 @@ static void printInfo(Class cc) { public static void main(String[] args) { Class c = null; try { - c = Class.forName("typeinfo.toys.FancyToy"); + c = Class.forName("reflection.toys.FancyToy"); } catch(ClassNotFoundException e) { System.out.println("Can't find FancyToy"); System.exit(1); @@ -47,7 +47,7 @@ public static void main(String[] args) { Class up = c.getSuperclass(); Object obj = null; try { - // Requires public no-arg constructor: + // Requires public zero-argument constructor: obj = up.newInstance(); } catch(Exception e) { throw new @@ -57,22 +57,22 @@ public static void main(String[] args) { } } /* Output: -Class name: typeinfo.toys.FancyToy is interface? +Class name: reflection.toys.FancyToy is interface? [false] Simple name: FancyToy -Canonical name : typeinfo.toys.FancyToy -Class name: typeinfo.toys.HasBatteries is interface? +Canonical name : reflection.toys.FancyToy +Class name: reflection.toys.HasBatteries is interface? [true] Simple name: HasBatteries -Canonical name : typeinfo.toys.HasBatteries -Class name: typeinfo.toys.Waterproof is interface? +Canonical name : reflection.toys.HasBatteries +Class name: reflection.toys.Waterproof is interface? [true] Simple name: Waterproof -Canonical name : typeinfo.toys.Waterproof -Class name: typeinfo.toys.Shoots is interface? [true] +Canonical name : reflection.toys.Waterproof +Class name: reflection.toys.Shoots is interface? [true] Simple name: Shoots -Canonical name : typeinfo.toys.Shoots -Class name: typeinfo.toys.Toy is interface? [false] +Canonical name : reflection.toys.Shoots +Class name: reflection.toys.Toy is interface? [false] Simple name: Toy -Canonical name : typeinfo.toys.Toy +Canonical name : reflection.toys.Toy */ diff --git a/reuse/Bath.java b/reuse/Bath.java index 51fbe2649..f31a1490d 100644 --- a/reuse/Bath.java +++ b/reuse/Bath.java @@ -18,14 +18,14 @@ public class Bath { s1 = "Happy", s2 = "Happy", s3, s4; - private Soap castille; + private Soap castile; private int i; private float toy; public Bath() { System.out.println("Inside Bath()"); s3 = "Joy"; toy = 3.14f; - castille = new Soap(); + castile = new Soap(); } // Instance initialization: { i = 47; } @@ -39,7 +39,7 @@ public Bath() { "s4 = " + s4 + "\n" + "i = " + i + "\n" + "toy = " + toy + "\n" + - "castille = " + castille; + "castile = " + castile; } public static void main(String[] args) { Bath b = new Bath(); @@ -55,5 +55,5 @@ Inside Bath() s4 = Joy i = 47 toy = 3.14 -castille = Constructed +castile = Constructed */ diff --git a/serialization/AStoreCADState.java b/serialization/AStoreCADState.java index f9c9e79f9..93b7d5f53 100644 --- a/serialization/AStoreCADState.java +++ b/serialization/AStoreCADState.java @@ -21,7 +21,7 @@ abstract class Shape implements Serializable { dimension = dim; } @Override public String toString() { - return getClass() + "color[" + getColor() + + return getClass() + "Color[" + getColor() + "] xPos[" + xPos + "] yPos[" + yPos + "] dim[" + dimension + "]\n"; } @@ -106,15 +106,15 @@ public static void main(String[] args) { } } /* Output: -[class Circlecolor[GREEN] xPos[58] yPos[55] dim[93] -, class Squarecolor[GREEN] xPos[61] yPos[61] dim[29] -, class Linecolor[GREEN] xPos[68] yPos[0] dim[22] -, class Circlecolor[GREEN] xPos[7] yPos[88] dim[28] -, class Squarecolor[GREEN] xPos[51] yPos[89] dim[9] -, class Linecolor[GREEN] xPos[78] yPos[98] dim[61] -, class Circlecolor[GREEN] xPos[20] yPos[58] dim[16] -, class Squarecolor[GREEN] xPos[40] yPos[11] dim[22] -, class Linecolor[GREEN] xPos[4] yPos[83] dim[6] -, class Circlecolor[GREEN] xPos[75] yPos[10] dim[42] +[class CircleColor[GREEN] xPos[58] yPos[55] dim[93] +, class SquareColor[GREEN] xPos[61] yPos[61] dim[29] +, class LineColor[GREEN] xPos[68] yPos[0] dim[22] +, class CircleColor[GREEN] xPos[7] yPos[88] dim[28] +, class SquareColor[GREEN] xPos[51] yPos[89] dim[9] +, class LineColor[GREEN] xPos[78] yPos[98] dim[61] +, class CircleColor[GREEN] xPos[20] yPos[58] dim[16] +, class SquareColor[GREEN] xPos[40] yPos[11] dim[22] +, class LineColor[GREEN] xPos[4] yPos[83] dim[6] +, class CircleColor[GREEN] xPos[75] yPos[10] dim[42] ] */ diff --git a/serialization/Blip3.java b/serialization/Blip3.java index 3d66f5730..0e6907375 100644 --- a/serialization/Blip3.java +++ b/serialization/Blip3.java @@ -16,7 +16,7 @@ public Blip3(String x, int a) { System.out.println("Blip3(String x, int a)"); s = x; i = a; - // s & i initialized only in non-no-arg constructor. + // s & i initialized only in non-zero-argument constructor. } @Override public String toString() { return s + i; } @Override public void writeExternal(ObjectOutput out) diff --git a/serialization/RecoverCADState.java b/serialization/RecoverCADState.java index 188ac9769..b27da662e 100644 --- a/serialization/RecoverCADState.java +++ b/serialization/RecoverCADState.java @@ -28,15 +28,15 @@ public static void main(String[] args) { } } /* Output: -[class Circlecolor[RED] xPos[58] yPos[55] dim[93] -, class Squarecolor[RED] xPos[61] yPos[61] dim[29] -, class Linecolor[GREEN] xPos[68] yPos[0] dim[22] -, class Circlecolor[RED] xPos[7] yPos[88] dim[28] -, class Squarecolor[RED] xPos[51] yPos[89] dim[9] -, class Linecolor[GREEN] xPos[78] yPos[98] dim[61] -, class Circlecolor[RED] xPos[20] yPos[58] dim[16] -, class Squarecolor[RED] xPos[40] yPos[11] dim[22] -, class Linecolor[GREEN] xPos[4] yPos[83] dim[6] -, class Circlecolor[RED] xPos[75] yPos[10] dim[42] +[class CircleColor[RED] xPos[58] yPos[55] dim[93] +, class SquareColor[RED] xPos[61] yPos[61] dim[29] +, class LineColor[GREEN] xPos[68] yPos[0] dim[22] +, class CircleColor[RED] xPos[7] yPos[88] dim[28] +, class SquareColor[RED] xPos[51] yPos[89] dim[9] +, class LineColor[GREEN] xPos[78] yPos[98] dim[61] +, class CircleColor[RED] xPos[20] yPos[58] dim[16] +, class SquareColor[RED] xPos[40] yPos[11] dim[22] +, class LineColor[GREEN] xPos[4] yPos[83] dim[6] +, class CircleColor[RED] xPos[75] yPos[10] dim[42] ] */ diff --git a/serialization/Worm.java b/serialization/Worm.java index 08e3d684d..7959be098 100644 --- a/serialization/Worm.java +++ b/serialization/Worm.java @@ -31,7 +31,7 @@ public Worm(int i, char x) { next = new Worm(i, (char)(x + 1)); } public Worm() { - System.out.println("No-arg constructor"); + System.out.println("Zero-argument constructor"); } @Override public String toString() { StringBuilder result = new StringBuilder(":"); From a75a55dc81f707951f3eb3c2cc0311c17b280bc2 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Fri, 5 Mar 2021 02:28:04 -0700 Subject: [PATCH 34/46] Break out common code from RoShamBo1.java, reuse in patterns --- concurrent/PSP2.txt | 522 +++++--------------------------- enums/Item.java | 12 + enums/Paper.java | 21 ++ enums/RoShamBo1.java | 53 ---- enums/Rock.java | 21 ++ enums/Scissors.java | 21 ++ gradle/subprojects.gradle | 6 + patterns/PaperScissorsRock.java | 69 +---- 8 files changed, 156 insertions(+), 569 deletions(-) create mode 100644 enums/Item.java create mode 100644 enums/Paper.java create mode 100644 enums/Rock.java create mode 100644 enums/Scissors.java diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt index f9ed83610..7cdafb838 100644 --- a/concurrent/PSP2.txt +++ b/concurrent/PSP2.txt @@ -1,512 +1,128 @@ -0: ForkJoinPool.commonPool-worker-1 0: main +1: main 2: main -2: ForkJoinPool.commonPool-worker-1 3: main -4: ForkJoinPool.commonPool-worker-1 +4: main 5: main -6: ForkJoinPool.commonPool-worker-1 +6: main 7: main -9: ForkJoinPool.commonPool-worker-1 +8: main 9: main -11: ForkJoinPool.commonPool-worker-1 +10: main 11: main -12: ForkJoinPool.commonPool-worker-1 +12: main 13: main -15: ForkJoinPool.commonPool-worker-1 +14: main 15: main +16: main 17: main 18: main 19: main 20: main 21: main -17: ForkJoinPool.commonPool-worker-1 +22: main 23: main -23: ForkJoinPool.commonPool-worker-1 24: main -25: ForkJoinPool.commonPool-worker-1 +25: main 26: main -27: ForkJoinPool.commonPool-worker-1 +27: main 28: main -29: ForkJoinPool.commonPool-worker-1 +29: main 30: main +31: main 32: main -32: ForkJoinPool.commonPool-worker-1 33: main -35: ForkJoinPool.commonPool-worker-1 -36: ForkJoinPool.commonPool-worker-1 -37: ForkJoinPool.commonPool-worker-1 -38: ForkJoinPool.commonPool-worker-1 +34: main 35: main -39: ForkJoinPool.commonPool-worker-1 -41: ForkJoinPool.commonPool-worker-1 +36: main +37: main +38: main +39: main 40: main -42: ForkJoinPool.commonPool-worker-1 +41: main +42: main 43: main -44: ForkJoinPool.commonPool-worker-1 +44: main 45: main -46: ForkJoinPool.commonPool-worker-1 +46: main 47: main +48: main 49: main 50: main -50: ForkJoinPool.commonPool-worker-1 51: main -52: ForkJoinPool.commonPool-worker-1 +52: main 53: main -55: ForkJoinPool.commonPool-worker-1 +54: main 55: main -56: ForkJoinPool.commonPool-worker-1 -58: ForkJoinPool.commonPool-worker-1 +56: main 57: main -59: ForkJoinPool.commonPool-worker-1 +58: main +59: main 60: main -61: ForkJoinPool.commonPool-worker-1 +61: main 62: main -63: ForkJoinPool.commonPool-worker-1 +63: main 64: main -65: ForkJoinPool.commonPool-worker-1 +65: main 66: main -67: ForkJoinPool.commonPool-worker-1 +67: main 68: main -69: ForkJoinPool.commonPool-worker-1 -71: ForkJoinPool.commonPool-worker-1 -72: ForkJoinPool.commonPool-worker-1 +69: main 70: main -73: ForkJoinPool.commonPool-worker-1 -75: ForkJoinPool.commonPool-worker-1 -76: ForkJoinPool.commonPool-worker-1 +71: main +72: main +73: main 74: main -77: ForkJoinPool.commonPool-worker-1 -78: ForkJoinPool.commonPool-worker-1 +75: main +76: main +77: main +78: main 79: main -80: ForkJoinPool.commonPool-worker-1 +80: main 81: main -82: ForkJoinPool.commonPool-worker-1 +82: main 83: main -84: ForkJoinPool.commonPool-worker-1 +84: main 85: main -86: ForkJoinPool.commonPool-worker-1 +86: main 87: main -89: ForkJoinPool.commonPool-worker-1 -90: ForkJoinPool.commonPool-worker-1 +88: main 89: main -91: ForkJoinPool.commonPool-worker-1 +90: main +91: main 92: main -93: ForkJoinPool.commonPool-worker-1 +93: main 94: main -95: ForkJoinPool.commonPool-worker-1 +95: main 96: main +97: main 98: main -97: ForkJoinPool.commonPool-worker-1 99: main -100: ForkJoinPool.commonPool-worker-1 +100: main 101: main -103: ForkJoinPool.commonPool-worker-1 +102: main 103: main -104: ForkJoinPool.commonPool-worker-1 -106: ForkJoinPool.commonPool-worker-1 -107: ForkJoinPool.commonPool-worker-1 +104: main +105: main 106: main -108: ForkJoinPool.commonPool-worker-1 -110: ForkJoinPool.commonPool-worker-1 -108: ForkJoinPool.commonPool-worker-2 -111: ForkJoinPool.commonPool-worker-1 +107: main +108: main +109: main 110: main -113: ForkJoinPool.commonPool-worker-1 -112: ForkJoinPool.commonPool-worker-2 -115: ForkJoinPool.commonPool-worker-1 +111: main +112: main +113: main +114: main +115: main 116: main -116: ForkJoinPool.commonPool-worker-2 -117: ForkJoinPool.commonPool-worker-1 +117: main 118: main -119: ForkJoinPool.commonPool-worker-2 -120: ForkJoinPool.commonPool-worker-1 +119: main +120: main 121: main -123: ForkJoinPool.commonPool-worker-1 +122: main +123: main 124: main -124: ForkJoinPool.commonPool-worker-2 +125: main 126: main -126: ForkJoinPool.commonPool-worker-1 -127: ForkJoinPool.commonPool-worker-2 -128: main -130: ForkJoinPool.commonPool-worker-1 -130: ForkJoinPool.commonPool-worker-2 -131: main -133: ForkJoinPool.commonPool-worker-1 -134: ForkJoinPool.commonPool-worker-2 -134: main -136: ForkJoinPool.commonPool-worker-1 -137: main -137: ForkJoinPool.commonPool-worker-2 -138: ForkJoinPool.commonPool-worker-1 -140: main -140: ForkJoinPool.commonPool-worker-2 -141: ForkJoinPool.commonPool-worker-1 -143: main -143: ForkJoinPool.commonPool-worker-2 -145: ForkJoinPool.commonPool-worker-1 -146: main -146: ForkJoinPool.commonPool-worker-2 -148: ForkJoinPool.commonPool-worker-1 -149: main -149: ForkJoinPool.commonPool-worker-2 -151: ForkJoinPool.commonPool-worker-1 -152: ForkJoinPool.commonPool-worker-2 -154: ForkJoinPool.commonPool-worker-1 -154: ForkJoinPool.commonPool-worker-2 -152: main -156: ForkJoinPool.commonPool-worker-1 -156: ForkJoinPool.commonPool-worker-2 -159: ForkJoinPool.commonPool-worker-1 -159: ForkJoinPool.commonPool-worker-2 -161: ForkJoinPool.commonPool-worker-1 -159: main -162: ForkJoinPool.commonPool-worker-1 -161: ForkJoinPool.commonPool-worker-2 -164: ForkJoinPool.commonPool-worker-1 -163: main -166: ForkJoinPool.commonPool-worker-1 -168: ForkJoinPool.commonPool-worker-1 -168: main -169: ForkJoinPool.commonPool-worker-1 -170: main -167: ForkJoinPool.commonPool-worker-2 -171: ForkJoinPool.commonPool-worker-1 -172: main -168: ForkJoinPool.commonPool-worker-3 -174: ForkJoinPool.commonPool-worker-1 -175: main -178: ForkJoinPool.commonPool-worker-1 -178: main -178: ForkJoinPool.commonPool-worker-3 -175: ForkJoinPool.commonPool-worker-2 -179: ForkJoinPool.commonPool-worker-1 -181: main -183: ForkJoinPool.commonPool-worker-1 -183: ForkJoinPool.commonPool-worker-2 -184: main -184: ForkJoinPool.commonPool-worker-3 -185: ForkJoinPool.commonPool-worker-1 -187: main -187: ForkJoinPool.commonPool-worker-2 -189: ForkJoinPool.commonPool-worker-1 -191: main -189: ForkJoinPool.commonPool-worker-3 -191: ForkJoinPool.commonPool-worker-2 -193: main -193: ForkJoinPool.commonPool-worker-1 -195: ForkJoinPool.commonPool-worker-3 -195: ForkJoinPool.commonPool-worker-2 -197: main -199: ForkJoinPool.commonPool-worker-3 -199: ForkJoinPool.commonPool-worker-2 -197: ForkJoinPool.commonPool-worker-1 -200: main -202: ForkJoinPool.commonPool-worker-3 -203: ForkJoinPool.commonPool-worker-2 -204: ForkJoinPool.commonPool-worker-1 -204: main -205: ForkJoinPool.commonPool-worker-3 -207: ForkJoinPool.commonPool-worker-2 -208: ForkJoinPool.commonPool-worker-1 -208: main -209: ForkJoinPool.commonPool-worker-3 -211: ForkJoinPool.commonPool-worker-2 -211: ForkJoinPool.commonPool-worker-1 -213: main -213: ForkJoinPool.commonPool-worker-3 -215: ForkJoinPool.commonPool-worker-2 -215: ForkJoinPool.commonPool-worker-1 -217: main -217: ForkJoinPool.commonPool-worker-3 -219: ForkJoinPool.commonPool-worker-2 -220: ForkJoinPool.commonPool-worker-1 -221: main -221: ForkJoinPool.commonPool-worker-3 -224: ForkJoinPool.commonPool-worker-1 -225: main -225: ForkJoinPool.commonPool-worker-3 -223: ForkJoinPool.commonPool-worker-2 -227: ForkJoinPool.commonPool-worker-1 -227: main -229: ForkJoinPool.commonPool-worker-3 -229: ForkJoinPool.commonPool-worker-2 -231: ForkJoinPool.commonPool-worker-1 -231: main -233: ForkJoinPool.commonPool-worker-3 -233: ForkJoinPool.commonPool-worker-2 -235: ForkJoinPool.commonPool-worker-1 -236: main -237: ForkJoinPool.commonPool-worker-3 -237: ForkJoinPool.commonPool-worker-2 -239: ForkJoinPool.commonPool-worker-1 -241: main -241: ForkJoinPool.commonPool-worker-2 -241: ForkJoinPool.commonPool-worker-3 -243: ForkJoinPool.commonPool-worker-1 -244: main -244: ForkJoinPool.commonPool-worker-2 -245: ForkJoinPool.commonPool-worker-3 -247: ForkJoinPool.commonPool-worker-1 -249: ForkJoinPool.commonPool-worker-3 -251: ForkJoinPool.commonPool-worker-3 -250: ForkJoinPool.commonPool-worker-1 -251: ForkJoinPool.commonPool-worker-2 -253: ForkJoinPool.commonPool-worker-3 -254: ForkJoinPool.commonPool-worker-1 -254: ForkJoinPool.commonPool-worker-2 -251: main -255: ForkJoinPool.commonPool-worker-3 -257: ForkJoinPool.commonPool-worker-1 -257: ForkJoinPool.commonPool-worker-2 -259: ForkJoinPool.commonPool-worker-3 -261: ForkJoinPool.commonPool-worker-1 -261: ForkJoinPool.commonPool-worker-2 -262: ForkJoinPool.commonPool-worker-3 -263: ForkJoinPool.commonPool-worker-1 -264: ForkJoinPool.commonPool-worker-2 -265: ForkJoinPool.commonPool-worker-3 -267: ForkJoinPool.commonPool-worker-1 -267: ForkJoinPool.commonPool-worker-2 -261: main -268: ForkJoinPool.commonPool-worker-3 -269: ForkJoinPool.commonPool-worker-1 -270: ForkJoinPool.commonPool-worker-2 -272: ForkJoinPool.commonPool-worker-3 -273: ForkJoinPool.commonPool-worker-1 -276: ForkJoinPool.commonPool-worker-3 -276: ForkJoinPool.commonPool-worker-1 -274: ForkJoinPool.commonPool-worker-2 -277: ForkJoinPool.commonPool-worker-3 -279: ForkJoinPool.commonPool-worker-1 -279: ForkJoinPool.commonPool-worker-2 -275: main -281: ForkJoinPool.commonPool-worker-1 -280: ForkJoinPool.commonPool-worker-3 -282: ForkJoinPool.commonPool-worker-2 -285: ForkJoinPool.commonPool-worker-1 -286: ForkJoinPool.commonPool-worker-3 -286: ForkJoinPool.commonPool-worker-2 -288: ForkJoinPool.commonPool-worker-1 -289: ForkJoinPool.commonPool-worker-3 -289: ForkJoinPool.commonPool-worker-2 -286: main -291: ForkJoinPool.commonPool-worker-1 -292: ForkJoinPool.commonPool-worker-3 -293: ForkJoinPool.commonPool-worker-2 -293: main -296: ForkJoinPool.commonPool-worker-3 -296: ForkJoinPool.commonPool-worker-2 -297: main -297: ForkJoinPool.commonPool-worker-1 -299: ForkJoinPool.commonPool-worker-3 -299: ForkJoinPool.commonPool-worker-2 -301: main -301: ForkJoinPool.commonPool-worker-1 -303: ForkJoinPool.commonPool-worker-3 -303: ForkJoinPool.commonPool-worker-2 -305: main -305: ForkJoinPool.commonPool-worker-1 -307: ForkJoinPool.commonPool-worker-3 -307: ForkJoinPool.commonPool-worker-2 -309: main -309: ForkJoinPool.commonPool-worker-1 -311: ForkJoinPool.commonPool-worker-3 -311: ForkJoinPool.commonPool-worker-2 -313: main -313: ForkJoinPool.commonPool-worker-1 -315: ForkJoinPool.commonPool-worker-3 -315: ForkJoinPool.commonPool-worker-2 -317: ForkJoinPool.commonPool-worker-1 -319: ForkJoinPool.commonPool-worker-3 -319: ForkJoinPool.commonPool-worker-2 -320: ForkJoinPool.commonPool-worker-1 -322: ForkJoinPool.commonPool-worker-3 -317: main -323: ForkJoinPool.commonPool-worker-1 -322: ForkJoinPool.commonPool-worker-2 -324: ForkJoinPool.commonPool-worker-3 -328: main -328: ForkJoinPool.commonPool-worker-3 -328: ForkJoinPool.commonPool-worker-2 -330: ForkJoinPool.commonPool-worker-3 -329: main -331: ForkJoinPool.commonPool-worker-2 -332: ForkJoinPool.commonPool-worker-3 -334: ForkJoinPool.commonPool-worker-2 -335: main -335: ForkJoinPool.commonPool-worker-3 -337: ForkJoinPool.commonPool-worker-2 -338: main -338: ForkJoinPool.commonPool-worker-3 -340: ForkJoinPool.commonPool-worker-2 -341: main -341: ForkJoinPool.commonPool-worker-3 -343: ForkJoinPool.commonPool-worker-2 -343: main -344: ForkJoinPool.commonPool-worker-3 -346: ForkJoinPool.commonPool-worker-2 -347: main -347: ForkJoinPool.commonPool-worker-3 -349: ForkJoinPool.commonPool-worker-2 -350: main -350: ForkJoinPool.commonPool-worker-3 -351: ForkJoinPool.commonPool-worker-2 -353: main -353: ForkJoinPool.commonPool-worker-3 -355: ForkJoinPool.commonPool-worker-2 -356: main -356: ForkJoinPool.commonPool-worker-3 -358: ForkJoinPool.commonPool-worker-2 -359: main -359: ForkJoinPool.commonPool-worker-3 -361: ForkJoinPool.commonPool-worker-2 -362: main -362: ForkJoinPool.commonPool-worker-3 -365: main -364: ForkJoinPool.commonPool-worker-2 -365: ForkJoinPool.commonPool-worker-3 -366: main -368: ForkJoinPool.commonPool-worker-2 -369: main -369: ForkJoinPool.commonPool-worker-3 -372: ForkJoinPool.commonPool-worker-3 -371: ForkJoinPool.commonPool-worker-2 -372: main -374: ForkJoinPool.commonPool-worker-3 -374: ForkJoinPool.commonPool-worker-2 -376: ForkJoinPool.commonPool-worker-3 -377: ForkJoinPool.commonPool-worker-2 -378: ForkJoinPool.commonPool-worker-3 -376: main -379: ForkJoinPool.commonPool-worker-2 -380: ForkJoinPool.commonPool-worker-3 -382: ForkJoinPool.commonPool-worker-2 -383: ForkJoinPool.commonPool-worker-3 -384: ForkJoinPool.commonPool-worker-2 -385: ForkJoinPool.commonPool-worker-3 -383: main -386: ForkJoinPool.commonPool-worker-2 -387: ForkJoinPool.commonPool-worker-3 -390: ForkJoinPool.commonPool-worker-2 -390: ForkJoinPool.commonPool-worker-3 -392: ForkJoinPool.commonPool-worker-2 -392: ForkJoinPool.commonPool-worker-3 -390: main -394: ForkJoinPool.commonPool-worker-2 -394: ForkJoinPool.commonPool-worker-3 -397: ForkJoinPool.commonPool-worker-2 -397: ForkJoinPool.commonPool-worker-3 -399: ForkJoinPool.commonPool-worker-2 -397: main -400: ForkJoinPool.commonPool-worker-3 -401: ForkJoinPool.commonPool-worker-3 -401: ForkJoinPool.commonPool-worker-2 -404: ForkJoinPool.commonPool-worker-3 -404: ForkJoinPool.commonPool-worker-2 -403: main -406: ForkJoinPool.commonPool-worker-3 -406: ForkJoinPool.commonPool-worker-2 -408: main -409: ForkJoinPool.commonPool-worker-3 -409: ForkJoinPool.commonPool-worker-2 -411: main -412: ForkJoinPool.commonPool-worker-3 -412: ForkJoinPool.commonPool-worker-2 -414: main -414: ForkJoinPool.commonPool-worker-3 -415: ForkJoinPool.commonPool-worker-2 -418: ForkJoinPool.commonPool-worker-3 -418: ForkJoinPool.commonPool-worker-2 -419: ForkJoinPool.commonPool-worker-3 -420: ForkJoinPool.commonPool-worker-2 -421: ForkJoinPool.commonPool-worker-3 -422: ForkJoinPool.commonPool-worker-2 -423: ForkJoinPool.commonPool-worker-3 -424: ForkJoinPool.commonPool-worker-2 -425: ForkJoinPool.commonPool-worker-3 -426: ForkJoinPool.commonPool-worker-2 -427: ForkJoinPool.commonPool-worker-3 -428: ForkJoinPool.commonPool-worker-2 -430: ForkJoinPool.commonPool-worker-2 -430: ForkJoinPool.commonPool-worker-3 -432: ForkJoinPool.commonPool-worker-3 -432: ForkJoinPool.commonPool-worker-2 -433: ForkJoinPool.commonPool-worker-3 -434: ForkJoinPool.commonPool-worker-2 -435: ForkJoinPool.commonPool-worker-3 -436: ForkJoinPool.commonPool-worker-2 -437: ForkJoinPool.commonPool-worker-3 -438: ForkJoinPool.commonPool-worker-2 -439: ForkJoinPool.commonPool-worker-3 -440: ForkJoinPool.commonPool-worker-2 -441: ForkJoinPool.commonPool-worker-3 -442: ForkJoinPool.commonPool-worker-2 -443: ForkJoinPool.commonPool-worker-3 -444: ForkJoinPool.commonPool-worker-2 -445: ForkJoinPool.commonPool-worker-3 -446: ForkJoinPool.commonPool-worker-2 -447: ForkJoinPool.commonPool-worker-3 -448: ForkJoinPool.commonPool-worker-2 -449: ForkJoinPool.commonPool-worker-3 -450: ForkJoinPool.commonPool-worker-2 -451: ForkJoinPool.commonPool-worker-3 -452: ForkJoinPool.commonPool-worker-2 -453: ForkJoinPool.commonPool-worker-3 -454: ForkJoinPool.commonPool-worker-2 -456: ForkJoinPool.commonPool-worker-2 -455: ForkJoinPool.commonPool-worker-3 -458: ForkJoinPool.commonPool-worker-3 -457: ForkJoinPool.commonPool-worker-2 -459: ForkJoinPool.commonPool-worker-3 -460: ForkJoinPool.commonPool-worker-2 -461: ForkJoinPool.commonPool-worker-3 -462: ForkJoinPool.commonPool-worker-2 -463: ForkJoinPool.commonPool-worker-3 -464: ForkJoinPool.commonPool-worker-2 -465: ForkJoinPool.commonPool-worker-3 -466: ForkJoinPool.commonPool-worker-2 -467: ForkJoinPool.commonPool-worker-3 -468: ForkJoinPool.commonPool-worker-2 -469: ForkJoinPool.commonPool-worker-3 -470: ForkJoinPool.commonPool-worker-2 -471: ForkJoinPool.commonPool-worker-3 -472: ForkJoinPool.commonPool-worker-2 -473: ForkJoinPool.commonPool-worker-3 -474: ForkJoinPool.commonPool-worker-2 -475: ForkJoinPool.commonPool-worker-3 -476: ForkJoinPool.commonPool-worker-2 -477: ForkJoinPool.commonPool-worker-3 -478: ForkJoinPool.commonPool-worker-2 -479: ForkJoinPool.commonPool-worker-3 -480: ForkJoinPool.commonPool-worker-2 -482: ForkJoinPool.commonPool-worker-2 -481: ForkJoinPool.commonPool-worker-3 -484: ForkJoinPool.commonPool-worker-3 -484: ForkJoinPool.commonPool-worker-2 -327: ForkJoinPool.commonPool-worker-1 -485: ForkJoinPool.commonPool-worker-3 -486: ForkJoinPool.commonPool-worker-2 -488: ForkJoinPool.commonPool-worker-3 -488: ForkJoinPool.commonPool-worker-1 -489: ForkJoinPool.commonPool-worker-2 -490: ForkJoinPool.commonPool-worker-3 -491: ForkJoinPool.commonPool-worker-1 -492: ForkJoinPool.commonPool-worker-2 -495: ForkJoinPool.commonPool-worker-2 -493: ForkJoinPool.commonPool-worker-3 -496: ForkJoinPool.commonPool-worker-2 -497: ForkJoinPool.commonPool-worker-3 -499: ForkJoinPool.commonPool-worker-3 -500: ForkJoinPool.commonPool-worker-3 -501: ForkJoinPool.commonPool-worker-3 -502: ForkJoinPool.commonPool-worker-3 -503: ForkJoinPool.commonPool-worker-3 -504: ForkJoinPool.commonPool-worker-3 -505: ForkJoinPool.commonPool-worker-3 -506: ForkJoinPool.commonPool-worker-3 -507: ForkJoinPool.commonPool-worker-3 -508: ForkJoinPool.commonPool-worker-3 -509: ForkJoinPool.commonPool-worker-3 -510: ForkJoinPool.commonPool-worker-3 -511: ForkJoinPool.commonPool-worker-3 +127: main diff --git a/enums/Item.java b/enums/Item.java new file mode 100644 index 000000000..1fd45d2fe --- /dev/null +++ b/enums/Item.java @@ -0,0 +1,12 @@ +// enums/Item.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package enums; + +public interface Item { + Outcome compete(Item it); + Outcome eval(Paper p); + Outcome eval(Scissors s); + Outcome eval(Rock r); +} diff --git a/enums/Paper.java b/enums/Paper.java new file mode 100644 index 000000000..7273a5c18 --- /dev/null +++ b/enums/Paper.java @@ -0,0 +1,21 @@ +// enums/Paper.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package enums; +import static enums.Outcome.*; + +public class Paper implements Item { + @Override public Outcome compete(Item it) { + return it.eval(this); + } + @Override + public Outcome eval(Paper p) { return DRAW; } + @Override + public Outcome eval(Scissors s) { return WIN; } + @Override + public Outcome eval(Rock r) { return LOSE; } + @Override public String toString() { + return "Paper"; + } +} diff --git a/enums/RoShamBo1.java b/enums/RoShamBo1.java index bf77aad82..d20f0bbcd 100644 --- a/enums/RoShamBo1.java +++ b/enums/RoShamBo1.java @@ -6,59 +6,6 @@ // {java enums.RoShamBo1} package enums; import java.util.*; -import static enums.Outcome.*; - -interface Item { - Outcome compete(Item it); - Outcome eval(Paper p); - Outcome eval(Scissors s); - Outcome eval(Rock r); -} - -class Paper implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override - public Outcome eval(Paper p) { return DRAW; } - @Override - public Outcome eval(Scissors s) { return WIN; } - @Override - public Outcome eval(Rock r) { return LOSE; } - @Override public String toString() { - return "Paper"; - } -} - -class Scissors implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override - public Outcome eval(Paper p) { return LOSE; } - @Override - public Outcome eval(Scissors s) { return DRAW; } - @Override - public Outcome eval(Rock r) { return WIN; } - @Override public String toString() { - return "Scissors"; - } -} - -class Rock implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override - public Outcome eval(Paper p) { return WIN; } - @Override - public Outcome eval(Scissors s) { return LOSE; } - @Override - public Outcome eval(Rock r) { return DRAW; } - @Override public String toString() { - return "Rock"; - } -} public class RoShamBo1 { static final int SIZE = 20; diff --git a/enums/Rock.java b/enums/Rock.java new file mode 100644 index 000000000..f9e5f7046 --- /dev/null +++ b/enums/Rock.java @@ -0,0 +1,21 @@ +// enums/Rock.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package enums; +import static enums.Outcome.*; + +public class Rock implements Item { + @Override public Outcome compete(Item it) { + return it.eval(this); + } + @Override + public Outcome eval(Paper p) { return WIN; } + @Override + public Outcome eval(Scissors s) { return LOSE; } + @Override + public Outcome eval(Rock r) { return DRAW; } + @Override public String toString() { + return "Rock"; + } +} diff --git a/enums/Scissors.java b/enums/Scissors.java new file mode 100644 index 000000000..45bab4996 --- /dev/null +++ b/enums/Scissors.java @@ -0,0 +1,21 @@ +// enums/Scissors.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +package enums; +import static enums.Outcome.*; + +public class Scissors implements Item { + @Override public Outcome compete(Item it) { + return it.eval(this); + } + @Override + public Outcome eval(Paper p) { return LOSE; } + @Override + public Outcome eval(Scissors s) { return DRAW; } + @Override + public Outcome eval(Rock r) { return WIN; } + @Override public String toString() { + return "Scissors"; + } +} diff --git a/gradle/subprojects.gradle b/gradle/subprojects.gradle index e4fb9764a..945aa9231 100644 --- a/gradle/subprojects.gradle +++ b/gradle/subprojects.gradle @@ -58,6 +58,12 @@ project(':collections') { } } +project(':patterns') { + dependencies { + compile project(':enums') + } +} + configure(subprojects - project(':onjava')) { dependencies { compile project(':onjava') diff --git a/patterns/PaperScissorsRock.java b/patterns/PaperScissorsRock.java index ce48dd4d5..478ac6755 100644 --- a/patterns/PaperScissorsRock.java +++ b/patterns/PaperScissorsRock.java @@ -6,72 +6,15 @@ import java.util.*; import java.util.function.*; import java.util.stream.*; +import enums.Outcome; +import static enums.Outcome.*; +import enums.Item; +import enums.Paper; +import enums.Scissors; +import enums.Rock; import onjava.*; import static onjava.Tuple.*; -enum Outcome { WIN, LOSE, DRAW } - -interface Item { - Outcome compete(Item it); - Outcome eval(Paper p); - Outcome eval(Scissors s); - Outcome eval(Rock r); -} - -class Paper implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override public Outcome eval(Paper p) { - return Outcome.DRAW; - } - @Override public Outcome eval(Scissors s) { - return Outcome.WIN; - } - @Override public Outcome eval(Rock r) { - return Outcome.LOSE; - } - @Override public String toString() { - return "Paper"; - } -} - -class Scissors implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override public Outcome eval(Paper p) { - return Outcome.LOSE; - } - @Override public Outcome eval(Scissors s) { - return Outcome.DRAW; - } - @Override public Outcome eval(Rock r) { - return Outcome.WIN; - } - @Override public String toString() { - return "Scissors"; - } -} - -class Rock implements Item { - @Override public Outcome compete(Item it) { - return it.eval(this); - } - @Override public Outcome eval(Paper p) { - return Outcome.WIN; - } - @Override public Outcome eval(Scissors s) { - return Outcome.LOSE; - } - @Override public Outcome eval(Rock r) { - return Outcome.DRAW; - } - @Override public String toString() { - return "Rock"; - } -} - class ItemFactory { static List> items = Arrays.asList( From 5ef986390e83eddc010b8f45d2c18624ba0e94cd Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Sun, 18 Apr 2021 09:35:27 -0600 Subject: [PATCH 35/46] Fixed issue #46 --- generics/Diamond.java | 6 ++---- generics/GenericHolder.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/generics/Diamond.java b/generics/Diamond.java index c7daa484d..9ebc43d37 100644 --- a/generics/Diamond.java +++ b/generics/Diamond.java @@ -3,11 +3,9 @@ // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -class Bob {} - public class Diamond { public static void main(String[] args) { - GenericHolder h3 = new GenericHolder<>(); - h3.set(new Bob()); + GenericHolder h3 = + new GenericHolder<>(); } } diff --git a/generics/GenericHolder.java b/generics/GenericHolder.java index b04aa17a8..15cfbb9e1 100644 --- a/generics/GenericHolder.java +++ b/generics/GenericHolder.java @@ -10,7 +10,7 @@ public GenericHolder() {} public T get() { return a; } public static void main(String[] args) { GenericHolder h3 = - new GenericHolder<>(); + new GenericHolder(); h3.set(new Automobile()); // type checked Automobile a = h3.get(); // No cast needed //- h3.set("Not an Automobile"); // Error From d911e390d6439a615e7116ecfc0f5fd57ddda869 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Wed, 21 Apr 2021 11:15:54 -0600 Subject: [PATCH 36/46] Update README.md --- README.md | 349 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 339 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b2ad92597..b71fd296d 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,313 @@ -# Example Source Code for the Book "On Java 8" by Bruce Eckel +# Examples for *On Java 8* by Bruce Eckel -Download the latest release from [here](https://github.com/BruceEckel/OnJava8-Examples/releases/). +If you want to experiment with the code examples from the book [On Java +8](https://www.onjava8.com/), you're in the right place. -To compile and run these programs, you only need JDK 8 installed. -Invoking `gradlew` will automatically download and install Gradle. -Gradle will also install all additional libraries necessary to compile -and run the Java examples in the book. +These examples are automatically extracted directly from the book. This repository +includes tests to verify that the code in the book is correct. + +## Contents + +- [Building From the Command Line: Quick Version](#building-from-the-command-line-quick-version) +- [Building From the Command Line: Detailed Instructions](#building-from-the-command-line-detailed-instructions) + * [Install Java](#install-java) + + [Windows](#windows) + + [Macintosh](#macintosh) + + [Linux](#linux) + * [Verify Your Installation](#verify-your-installation) + * [Installing and Running the Book Examples](#installing-and-running-the-book-examples) +- [Appendix A: Command-Line Basics](#appendix-a-command-line-basics) + * [Editors](#editors) + * [The Shell](#the-shell) + + [Starting a Shell](#starting-a-shell) + + [Directories](#directories) + + [Basic Shell Operations](#basic-shell-operations) + + [Unpacking a Zip Archive](#unpacking-a-zip-archive) +- [Appendix B: Testing](#appendix-b-testing) +- [Troubleshooting](#troubleshooting) + +# Building From the Command Line: Quick Version + +Before you can run the examples from this repository, you must install +[JDK8](http://www.oracle.com/technetwork/java/javase/downloads/index.html), the +*Java Development Kit* for version 8 of the language. + +If you just want to download and check the code, [Download +Here](https://github.com/BruceEckel/OnJava8-Examples/archive/refs/heads/master.zip) +and [unzip it](#unpacking-a-zip-archive) into your destination directory. Open +a [shell/command window](#appendix-a-command-line-basics) and move into the +root of that directory. You'll know you are in the right directory if you see +the files `gradlew` and `gradlew.bat`. + +You'll need an Internet connection the first time you compile the code, +because Gradle needs to first install itself, then all the support libraries. +Once these are installed you can perform additional compiling and running +offline. + +On Mac/Linux, enter: + +``` +./gradlew test +``` + +(If you get a *Permission denied* error, run `chmod +x ./gradlew`) + +On Windows, enter + +``` +gradlew test +``` + +If all goes well, the tests will run. Everything should complete without errors. + +All the book examples are in the subdirectory `Examples` in subdirectories +corresponding to the atom names. + +# Building From the Command Line: Detailed Instructions + +If you are not familiar with the command line, first read [Command-Line +Basics](#appendix-a-command-line-basics). + +## Install Java + +You must first install the *Java Development Kit* (JDK). + +### Windows + +1. Follow the instructions to [install Chocolatey](https://chocolatey.org/). + +2. At a [shell prompt](#appendix-a-command-line-basics), type: `choco install +jdk8` (you may also select a more recent version, like `jdk11`). The +installation process takes some time, but when it's finished Java is installed +and the necessary environment variables are set. + +### Macintosh + +The Mac comes with a much older version of Java that won't work for the +examples in this book, so you'll need to update it to (at least) Java 8. + + 1. Follow the instructions at this link to [Install HomeBrew](http://brew.sh/) + + 2. At a [shell prompt](#appendix-a-command-line-basics), first type + `brew update`. When that completes, enter `brew cask install java`. + +**NOTE:** Sometimes the default version of Java that you get with the above +installation will be too recent and not validated by the Mac's security +system. If this happens you'll either need to turn off the security by hand +or install an earlier version of Java. For either choice, you'll need to Google +for answers on how to solve the problem (often the easiest approach is to just +search for the error message produced by the Mac). + +### Linux + +Use the standard package installer with the following [shell commands](#appendix-a-command-line-basics): + +*Ubuntu/Debian*: + + 1. `sudo apt-get update` + + 2. `sudo apt-get install default-jdk` + +*Fedora/Redhat*: + +``` +su -c "yum install java-1.8.0-openjdk" +``` + +## Verify Your Installation + +[Open a new shell](#appendix-a-command-line-basics) and type: + +``` +java -version +``` + +You should see something like the following (Version numbers and actual text +will vary): + +``` +openjdk version "11" 2018-09-25 +OpenJDK Runtime Environment 18.9 (build 11+28) +OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) +``` + +If you see a message that the command is not found or not recognized, review +the installation instructions. If you still can't get it to work, check +[StackOverflow](http://stackoverflow.com/search?q=installing+java). + +## Installing and Running the Book Examples + +Once you have Java installed, the process to install and run the book examples +is the same for all platforms: + +1. Download the book examples from the +[GitHub Repository](https://github.com/BruceEckel/OnJava8-Examples/archive/refs/heads/master.zip). + +2. [Unzip](#unpacking-a-zip-archive) the downloaded file into the directory of your choice. + +3. Use the Windows Explorer, the Mac Finder, or Nautilus or equivalent on Linux +to browse to the directory where you uzipped `OnJava8-Examples`, and +[open a shell](#appendix-a-command-line-basics) there. + +4. If you're in the right directory, you should see files named `gradlew` and +`gradlew.bat` in that directory, along with numerous other files and +directories. The directories correspond to the chapters in the book. + +5. At the shell prompt, type `gradlew test` (Windows) or `./gradlew test` +(Mac/Linux). + +The first time you do this, Gradle will install itself and numerous other +packages, so it will take some time. After everything is installed, subsequent +builds and runs will be much faster. + +Note that you must be connected to the Internet the first time you run `gradlew` +so that Gradle can download the necessary packages. + +# Appendix A: Command-Line Basics + +Because it is possible for a "dedicated beginner" to learn programming from +this book, you may not have previously used your computer's command-line shell. +If you have, you can go directly to the +[installation instructions](#building-from-the-command-line-detailed-instructions). + +## Editors + +To create and modify Java program files—the code listings shown in this +book—you need a program called an *editor*. You'll also need the editor to +make changes to your system configuration files, which is sometimes required +during installation. + +Programming editors vary from heavyweight *Integrated Development Environments* +(IDEs, like Eclipse, NetBeans and IntelliJ IDEA) to more basic text +manipulation applications. If you already have an IDE and are comfortable with +it, feel free to use that for this book. + +Numerous explanations in this book are specific to IntelliJ IDEA so if you +don't already have an IDE you might as well start with IDEA. There are many +other editors; these are a subculture unto themselves and people sometimes get +into heated arguments about their merits. If you find one you like better, it's +not too hard to change. The important thing is to choose one and get +comfortable with it. + +## The Shell + +If you haven't programmed before, you might be unfamiliar with your operating +system *shell* (also called the *command prompt* in Windows). The shell harkens +back to the early days of computing when everything happened by typing commands +and the computer responded by displaying responses—everything was text-based. + +Although it can seem primitive in the age of graphical user interfaces, a shell +provides a surprising number of valuable features. + +To learn more about your shell than we cover here, see +[Bash Shell](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) for Mac/Linux +or [Windows Shell](https://en.wikipedia.org/wiki/Windows_shell). + +### Starting a Shell + +**Mac**: Click on the *Spotlight* (the magnifying-glass icon in the upper-right +corner of the screen) and type "terminal." Click on the application that looks +like a little TV screen (you might also be able to hit "Return"). This starts a +shell in your home directory. + +**Windows**: First, start the Windows Explorer to navigate through your +directories: + +- *Windows 7*: click the "Start" button in the lower left corner of the screen. +In the Start Menu search box area type "explorer" and then press the "Enter" +key. + +- *Windows 8*: click Windows+Q, type "explorer" and then press the "Enter" key. + +- *Windows 10*: click Windows+E. + +Once the Windows Explorer is running, move through the folders on your computer +by double-clicking on them with the mouse. Navigate to the desired folder. Now +click the file tab at the top left of the Explorer window and select "Open +Windows Powershell." This opens a shell in the destination directory. + +**Linux**: To open a shell in your home directory: + +- *Debian*: Press Alt+F2. In the dialog that pops up, type 'gnome-terminal' + +- *Ubuntu*: Either right-click on the desktop and select 'Open Terminal', or + press Ctrl+Alt+T + +- *Redhat*: Right-click on the desktop and select 'Open Terminal' + +- *Fedora*: Press Alt+F2. In the dialog that pops up, type 'gnome-terminal' + + +### Directories + +*Directories* are one of the fundamental elements of a shell. Directories hold +files, as well as other directories. Think of a directory as a tree with +branches. If `books` is a directory on your system and it has two other +directories as branches, for example `math` and `art`, we say that you have a +directory `books` with two *subdirectories* `math` and `art`. We refer to them +as `books/math` and `books/art` since `books` is their *parent* directory. +Note that Windows uses backslashes rather than forward slashes to separate the +parts of a directory. + +### Basic Shell Operations + +The shell operations shown here are approximately identical across operating +systems. For the purposes of this book, here are the essential operations in a +shell: + +- **Change directory**: Use `cd` followed by the name of the + directory where you want to move, or `cd ..` if you want to move + up a directory. If you want to move to a different directory while + remembering where you came from, use `pushd` followed by the different + directory name. Then, to return to the previous directory, just say + `popd`. + +- **Directory listing**: `ls` (`dir` in Windows) displays all the files and + subdirectory names in the current directory. Use the wildcard `*` (asterisk) to + narrow your search. For example, if you want to list all the files ending in + ".kt," you say `ls *.kt` (Windows: `dir *.kt`). If you want to list the + files starting with "F" and ending in ".kt," you say `ls F*.kt` (Windows: + `dir F*.kt`). + +- **Create a directory**: use the `mkdir` ("make directory") command + (Windows: `md`), followed by the name of the directory you want to create. + For example, `mkdir books` (Windows: `md books`). + +- **Remove a file**: Use `rm` ("remove") followed by the name of the file + you wish to remove (Windows: `del`). For example, `rm somefile.kt` (Windows: + `del somefile.kt`). + +- **Remove a directory**: use the `rm -r` command to remove the files in + the directory and the directory itself (Windows: `deltree`). For example, + `rm -r books` (Windows: `deltree books`). + +- **Repeat a command**: The "up arrow" on all three operating + systems moves through previous commands so you can edit and + repeat them. On Mac/Linux, `!!` repeats the last command and + `!n` repeats the nth command. + +- **Command history**: Use `history` in Mac/Linux or press the F7 key in Windows. + This gives you a list of all the commands you've entered. Mac/Linux provides + numbers to refer to when you want to repeat a command. + +### Unpacking a Zip Archive + +A file name ending with `.zip` is an archive containing other files in a +compressed format. Both Linux and Mac have command-line `unzip` utilities, and +it's possible to install a command-line `unzip` for Windows via the Internet. + +However, in all three systems the graphical file browser (Windows Explorer, the +Mac Finder, or Nautilus or equivalent on Linux) will browse to the directory +containing your zip file. Then right-mouse-click on the file and select "Open" +on the Mac, "Extract Here" on Linux, or "Extract all ..." on Windows. + +# Appendix B: Testing + +The test system is built in so that we (the authors) can verify the correctness +of what goes into the book. + +You don't need to run the tests, but if you want to, you can just run `gradlew +test` (on Windows) or `./gradlew test` (Mac/Linux). To compile and run everything, the command is: @@ -32,12 +334,39 @@ program in the **strings** chapter subdirectory: `gradlew :strings:ReplacingStringTokenizer` -However, if the file name is unique throughout the book (the majority are), you can just give the -program name, like this: +However, if the file name is unique throughout the book (the majority are), you +can just give the program name, like this: `gradlew ReplacingStringTokenizer` -Note that all commands are run from the base directory where the example code is installed, and where you find the -`gradlew` script. +Note that all commands are run from the base directory where the example code is +installed, and where you find the `gradlew` script. You can learn about other options by just typing `gradlew` with no arguments. + +# Troubleshooting + +If any terminology or processes described here remain unclear to you, you can +usually find explanations or answers through [Google](https://www.google.com/). +For more specific issues or problems, try +[StackOverflow](http://stackoverflow.com/). Sometimes you can find installation +instructions on [YouTube](https://www.youtube.com/). + +Sometimes a Gradle build will be unable to connect to the internet and download +the necessary components, producing an error message containing: + +``` +javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty +``` + +Normally this means you have multiple Java installations on your machine +(applications built with Java ordinarily install their own version of Java), and +somehow the `cacerts` security file is interfering with the `cacerts` file for +the Java you have installed. It can be difficult to know which `cacerts` file is +interfering with yours. The brute-force approach is to search for all the +`cacerts` files on your machine and begin uninstalling the associated +applications---or in some cases, simply removing the directory containing the +`cacerts` file---until the Gradle build begins to work. You might also need to +adjust some environment variables and/or your path. Once you get the Gradle +build working successfully, you should be able to reinstall any applications you +removed in the process. From a545bd39c027737727f8d24ba5dfb90b81b9a8de Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Wed, 21 Apr 2021 11:24:15 -0600 Subject: [PATCH 37/46] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b71fd296d..5f975e29e 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ includes tests to verify that the code in the book is correct. + [Basic Shell Operations](#basic-shell-operations) + [Unpacking a Zip Archive](#unpacking-a-zip-archive) - [Appendix B: Testing](#appendix-b-testing) -- [Troubleshooting](#troubleshooting) +- [Appendix C: Troubleshooting](#appendix-c-troubleshooting) # Building From the Command Line: Quick Version @@ -344,7 +344,7 @@ installed, and where you find the `gradlew` script. You can learn about other options by just typing `gradlew` with no arguments. -# Troubleshooting +# Appendix C: Troubleshooting If any terminology or processes described here remain unclear to you, you can usually find explanations or answers through [Google](https://www.google.com/). From 816c30e91244eaa77e82a2bddce1dedd453b7a89 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 6 Jul 2021 10:26:19 -0600 Subject: [PATCH 38/46] Create NOTES.md --- NOTES.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 NOTES.md diff --git a/NOTES.md b/NOTES.md new file mode 100644 index 000000000..5401db816 --- /dev/null +++ b/NOTES.md @@ -0,0 +1,3 @@ +For generating table of contents in README.md +https://ecotrust-canada.github.io/markdown-toc/ +(Replace double hyphens with single hyphens after generation) From 9706bfaa651d739a07a937a404486cf21054dded Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Fri, 3 Sep 2021 17:55:34 -0600 Subject: [PATCH 39/46] Added support for // {NewFeature} tag for features newer than Java 8 --- .../main/groovy/com/mindviewinc/plugins/TaggingPlugin.groovy | 1 + buildSrc/src/main/groovy/com/mindviewinc/plugins/Tags.groovy | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/buildSrc/src/main/groovy/com/mindviewinc/plugins/TaggingPlugin.groovy b/buildSrc/src/main/groovy/com/mindviewinc/plugins/TaggingPlugin.groovy index a72daddee..518a7d5f2 100644 --- a/buildSrc/src/main/groovy/com/mindviewinc/plugins/TaggingPlugin.groovy +++ b/buildSrc/src/main/groovy/com/mindviewinc/plugins/TaggingPlugin.groovy @@ -26,6 +26,7 @@ class TaggingPlugin implements Plugin { // Exclude java sources that will not compile if (tags.willNotCompile + || tags.newFeature // Uses a feature introduced after Java 8 || (tags.lowLevelAppendix && runningInAppveyor) // Exclude entire lowlevel appendix || (tags.excludeFromAppveyorCI && runningInAppveyor) || (tags.excludeFromTravisCI && runningInTravis) diff --git a/buildSrc/src/main/groovy/com/mindviewinc/plugins/Tags.groovy b/buildSrc/src/main/groovy/com/mindviewinc/plugins/Tags.groovy index 9f343be93..f61ed4d79 100644 --- a/buildSrc/src/main/groovy/com/mindviewinc/plugins/Tags.groovy +++ b/buildSrc/src/main/groovy/com/mindviewinc/plugins/Tags.groovy @@ -10,6 +10,7 @@ class Tags { Boolean throwsException = false Boolean errorOutputExpected = false Boolean excludeFromGradle = false + Boolean newFeature = false // For language feature introduced after Java 8 Boolean ignoreOutput = false // This tag isn't used in the build... String fileRoot String mainClass @@ -45,6 +46,7 @@ class Tags { throwsException = hasTag('ThrowsException') errorOutputExpected = hasTag('ErrorOutputExpected') excludeFromGradle = hasTag('ExcludeFromGradle') + newFeature = hasTag('NewFeature') ignoreOutput = hasTag('IgnoreOutput') javap = extract('javap') // Includes only arguments to command runFirst = extract('RunFirst:') @@ -83,6 +85,7 @@ class Tags { throwsException || errorOutputExpected || excludeFromGradle || + newFeature || ignoreOutput || javaCmd || args || @@ -105,6 +108,7 @@ class Tags { throwsException errorOutputExpected excludeFromGradle + newFeature ignoreOutput fileRoot mainClass From 3a84d492f976d3dd9d7ea6169afd8fe3635899ed Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 7 Sep 2021 14:06:38 -0600 Subject: [PATCH 40/46] Changed from old "compile" to new "implementation" Worked successfully with Gradle 6.8.1 and JDK11 --- gradle/java.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle/java.gradle b/gradle/java.gradle index eadc4ef94..99898c1d0 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -18,7 +18,7 @@ sourceSets { include '*.xml' } } - + test { java { srcDir file("tests") @@ -32,8 +32,8 @@ repositories { dependencies { // Logging: - compile 'org.slf4j:slf4j-api:1.7.21' - compile 'ch.qos.logback:logback-classic:1.1.7' + implementation 'org.slf4j:slf4j-api:1.7.21' + implementation 'ch.qos.logback:logback-classic:1.1.7' // You can also use the JDK's built-in logging as the back end: // compile group: 'org.slf4j:slf4j-jdk14:1.7.21' -} \ No newline at end of file +} From eeb09a6997d48abb1917c9d188f86e301c3c41e0 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Mon, 20 Sep 2021 17:33:35 -0600 Subject: [PATCH 41/46] Partial update to JDK 17 Features --- collections/BasicRecord.java | 29 ++++ collections/CompactConstructor.java | 16 ++ collections/ComposedRecord.java | 10 ++ collections/CopyRecord.java | 18 +++ collections/FinalFields.java | 12 ++ collections/GenericTypeInference.java | 20 +++ collections/ImplementingRecord.java | 14 ++ collections/NestedLocalRecords.java | 12 ++ collections/NormalConstructor.java | 11 ++ collections/PlusTen.java | 20 +++ concurrent/PSP2.txt | 168 ++++++++++++++++++--- exceptions/BetterNullPointerReports.java | 43 ++++++ exceptions/EffectivelyFinalTWR.java | 48 ++++++ exceptions/MessyExceptions.java | 2 +- exceptions/TryWithResources.java | 2 +- housekeeping/ArrayInit.java | 10 +- housekeeping/ForTypeInference.java | 19 +++ housekeeping/NewVarArgs.java | 2 +- housekeeping/PrimitiveOverloading.java | 24 +-- housekeeping/TypeInference.java | 36 +++++ housekeeping/VarArgs.java | 3 +- interfaces/CheckedDowncast.java | 19 +++ interfaces/MICollision.java | 2 +- interfaces/Machine.java | 36 ----- interfaces/MetalWork.java | 39 +++++ interfaces/NonSealed.java | 11 ++ interfaces/PermittedSubclasses.java | 22 +++ interfaces/PrivateInterfaceMethods.java | 54 +++++++ interfaces/SameFile.java | 9 ++ interfaces/Sealed.java | 12 ++ interfaces/SealedCat.java | 6 + interfaces/SealedDog.java | 6 + interfaces/SealedInterface.java | 12 ++ interfaces/SealedPets.java | 6 + interfaces/SealedRecords.java | 12 ++ interfaces/SealedSubclasses.java | 10 ++ onjava/{Operations.java => Operation.java} | 9 +- operators/Equivalence.java | 4 +- operators/Literals.java | 2 +- operators/URShift.java | 3 +- streams/Machine2.java | 23 --- streams/MetalWork2.java | 23 +++ strings/DataPoint.java | 32 ++++ strings/Indentation.java | 33 ++++ strings/TextBlocks.java | 37 +++++ 45 files changed, 822 insertions(+), 119 deletions(-) create mode 100644 collections/BasicRecord.java create mode 100644 collections/CompactConstructor.java create mode 100644 collections/ComposedRecord.java create mode 100644 collections/CopyRecord.java create mode 100644 collections/FinalFields.java create mode 100644 collections/GenericTypeInference.java create mode 100644 collections/ImplementingRecord.java create mode 100644 collections/NestedLocalRecords.java create mode 100644 collections/NormalConstructor.java create mode 100644 collections/PlusTen.java create mode 100644 exceptions/BetterNullPointerReports.java create mode 100644 exceptions/EffectivelyFinalTWR.java create mode 100644 housekeeping/ForTypeInference.java create mode 100644 housekeeping/TypeInference.java create mode 100644 interfaces/CheckedDowncast.java delete mode 100644 interfaces/Machine.java create mode 100644 interfaces/MetalWork.java create mode 100644 interfaces/NonSealed.java create mode 100644 interfaces/PermittedSubclasses.java create mode 100644 interfaces/PrivateInterfaceMethods.java create mode 100644 interfaces/SameFile.java create mode 100644 interfaces/Sealed.java create mode 100644 interfaces/SealedCat.java create mode 100644 interfaces/SealedDog.java create mode 100644 interfaces/SealedInterface.java create mode 100644 interfaces/SealedPets.java create mode 100644 interfaces/SealedRecords.java create mode 100644 interfaces/SealedSubclasses.java rename onjava/{Operations.java => Operation.java} (66%) delete mode 100644 streams/Machine2.java create mode 100644 streams/MetalWork2.java create mode 100644 strings/DataPoint.java create mode 100644 strings/Indentation.java create mode 100644 strings/TextBlocks.java diff --git a/collections/BasicRecord.java b/collections/BasicRecord.java new file mode 100644 index 000000000..0fa0f2510 --- /dev/null +++ b/collections/BasicRecord.java @@ -0,0 +1,29 @@ +// collections/BasicRecord.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 +import java.util.*; + +record Employee(String name, int id) {} + +public class BasicRecord { + public static void main(String[] args) { + var bob = new Employee("Bob Dobbs", 11); + var dot = new Employee("Dorothy Gale", 9); + // bob.id = 12; // Error: + // id has private access in Employee + System.out.println(bob.name()); // Accessor + System.out.println(bob.id()); // Accessor + System.out.println(bob); // toString() + // Employee works as the key in a Map: + var map = Map.of(bob, "A", dot, "B"); + System.out.println(map); + } +} +/* Output: +Bob Dobbs +11 +Employee[name=Bob Dobbs, id=11] +{Employee[name=Dorothy Gale, id=9]=B, Employee[name=Bob Dobbs, id=11]=A} +*/ diff --git a/collections/CompactConstructor.java b/collections/CompactConstructor.java new file mode 100644 index 000000000..017dcbf9b --- /dev/null +++ b/collections/CompactConstructor.java @@ -0,0 +1,16 @@ +// collections/CompactConstructor.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +record Point(int x, int y) { + void assertPositive(int val) { + if(val < 0) + throw new IllegalArgumentException("negative"); + } + Point { // Compact: No parameter list + assertPositive(x); + assertPositive(y); + } +} diff --git a/collections/ComposedRecord.java b/collections/ComposedRecord.java new file mode 100644 index 000000000..1e234b257 --- /dev/null +++ b/collections/ComposedRecord.java @@ -0,0 +1,10 @@ +// collections/ComposedRecord.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +record Company(Employee[] e) {} + +// class Conglomerate extends Company {} +// error: cannot inherit from final Company diff --git a/collections/CopyRecord.java b/collections/CopyRecord.java new file mode 100644 index 000000000..7e2d9dd1b --- /dev/null +++ b/collections/CopyRecord.java @@ -0,0 +1,18 @@ +// collections/CopyRecord.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +record R(int a, double b, char c) {} + +public class CopyRecord { + public static void main(String[] args) { + var r1 = new R(11, 2.2, 'z'); + var r2 = new R(r1.a(), r1.b(), r1.c()); + System.out.println(r1.equals(r2)); + } +} +/* Output: +true +*/ diff --git a/collections/FinalFields.java b/collections/FinalFields.java new file mode 100644 index 000000000..1cf0f4f4e --- /dev/null +++ b/collections/FinalFields.java @@ -0,0 +1,12 @@ +// collections/FinalFields.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 +import java.util.*; + +record FinalFields(int i) { + int timesTen() { return i * 10; } + // void tryToChange() { i++; } // Error: + // cannot assign a value to final variable i +} diff --git a/collections/GenericTypeInference.java b/collections/GenericTypeInference.java new file mode 100644 index 000000000..83264de2c --- /dev/null +++ b/collections/GenericTypeInference.java @@ -0,0 +1,20 @@ +// collections/GenericTypeInference.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 11 +import java.util.*; + +public class GenericTypeInference { + void old() { + ArrayList apples = new ArrayList<>(); + } + void modern() { + var apples = new ArrayList(); + } + void pitFall() { + var apples = new ArrayList<>(); + apples.add(new Apple()); + apples.get(0); // Comes back as plain Object + } +} diff --git a/collections/ImplementingRecord.java b/collections/ImplementingRecord.java new file mode 100644 index 000000000..4a453f775 --- /dev/null +++ b/collections/ImplementingRecord.java @@ -0,0 +1,14 @@ +// collections/ImplementingRecord.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +interface Star { + double brightness(); + double density(); +} + +record RedDwarf(double brightness) implements Star { + @Override public double density() { return 100.0; } +} diff --git a/collections/NestedLocalRecords.java b/collections/NestedLocalRecords.java new file mode 100644 index 000000000..5ae375668 --- /dev/null +++ b/collections/NestedLocalRecords.java @@ -0,0 +1,12 @@ +// collections/NestedLocalRecords.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +public class NestedLocalRecords { + record Nested(String s) {} + void method() { + record Local(String s) {} + } +} diff --git a/collections/NormalConstructor.java b/collections/NormalConstructor.java new file mode 100644 index 000000000..da926b643 --- /dev/null +++ b/collections/NormalConstructor.java @@ -0,0 +1,11 @@ +// collections/NormalConstructor.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +record Value(int x) { + Value(int x) { // With the parameter list + this.x = x; // Must explicitly initialize + } +} diff --git a/collections/PlusTen.java b/collections/PlusTen.java new file mode 100644 index 000000000..a52bfed5b --- /dev/null +++ b/collections/PlusTen.java @@ -0,0 +1,20 @@ +// collections/PlusTen.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +record PlusTen(int x) { + PlusTen { + x += 10; + } + // Adjustment to field can only happen in + // the constructor. Still not legal: + // void mutate() { x += 10; } + public static void main(String[] args) { + System.out.println(new PlusTen(10)); + } +} +/* Output: +PlusTen[x=20] +*/ diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt index 7cdafb838..d41bfa1fc 100644 --- a/concurrent/PSP2.txt +++ b/concurrent/PSP2.txt @@ -1,5 +1,5 @@ 0: main -1: main +1: ForkJoinPool.commonPool-worker-2 2: main 3: main 4: main @@ -107,22 +107,150 @@ 106: main 107: main 108: main -109: main -110: main -111: main -112: main -113: main -114: main -115: main -116: main -117: main -118: main -119: main -120: main -121: main -122: main -123: main -124: main -125: main -126: main -127: main +108: ForkJoinPool.commonPool-worker-2 +109: ForkJoinPool.commonPool-worker-2 +110: ForkJoinPool.commonPool-worker-2 +111: ForkJoinPool.commonPool-worker-2 +112: ForkJoinPool.commonPool-worker-2 +113: ForkJoinPool.commonPool-worker-2 +114: ForkJoinPool.commonPool-worker-2 +115: ForkJoinPool.commonPool-worker-2 +116: ForkJoinPool.commonPool-worker-2 +117: ForkJoinPool.commonPool-worker-2 +118: ForkJoinPool.commonPool-worker-2 +119: ForkJoinPool.commonPool-worker-2 +120: ForkJoinPool.commonPool-worker-2 +121: ForkJoinPool.commonPool-worker-2 +122: ForkJoinPool.commonPool-worker-2 +123: ForkJoinPool.commonPool-worker-2 +124: ForkJoinPool.commonPool-worker-2 +125: ForkJoinPool.commonPool-worker-2 +126: ForkJoinPool.commonPool-worker-2 +127: ForkJoinPool.commonPool-worker-2 +128: ForkJoinPool.commonPool-worker-2 +129: ForkJoinPool.commonPool-worker-2 +130: ForkJoinPool.commonPool-worker-2 +131: ForkJoinPool.commonPool-worker-2 +132: ForkJoinPool.commonPool-worker-2 +133: ForkJoinPool.commonPool-worker-2 +134: ForkJoinPool.commonPool-worker-2 +135: ForkJoinPool.commonPool-worker-2 +136: ForkJoinPool.commonPool-worker-2 +137: ForkJoinPool.commonPool-worker-2 +138: ForkJoinPool.commonPool-worker-2 +139: ForkJoinPool.commonPool-worker-2 +140: ForkJoinPool.commonPool-worker-2 +141: ForkJoinPool.commonPool-worker-2 +142: ForkJoinPool.commonPool-worker-2 +143: ForkJoinPool.commonPool-worker-2 +144: ForkJoinPool.commonPool-worker-2 +145: ForkJoinPool.commonPool-worker-2 +146: ForkJoinPool.commonPool-worker-2 +147: ForkJoinPool.commonPool-worker-2 +148: ForkJoinPool.commonPool-worker-2 +149: ForkJoinPool.commonPool-worker-2 +150: ForkJoinPool.commonPool-worker-2 +151: ForkJoinPool.commonPool-worker-2 +152: ForkJoinPool.commonPool-worker-2 +153: ForkJoinPool.commonPool-worker-2 +154: ForkJoinPool.commonPool-worker-2 +155: ForkJoinPool.commonPool-worker-2 +156: ForkJoinPool.commonPool-worker-2 +157: ForkJoinPool.commonPool-worker-2 +158: ForkJoinPool.commonPool-worker-2 +159: ForkJoinPool.commonPool-worker-2 +160: ForkJoinPool.commonPool-worker-2 +161: ForkJoinPool.commonPool-worker-2 +162: ForkJoinPool.commonPool-worker-2 +163: ForkJoinPool.commonPool-worker-2 +164: ForkJoinPool.commonPool-worker-2 +165: ForkJoinPool.commonPool-worker-2 +166: ForkJoinPool.commonPool-worker-2 +167: ForkJoinPool.commonPool-worker-2 +168: ForkJoinPool.commonPool-worker-2 +169: ForkJoinPool.commonPool-worker-2 +170: ForkJoinPool.commonPool-worker-2 +171: ForkJoinPool.commonPool-worker-2 +172: ForkJoinPool.commonPool-worker-2 +173: ForkJoinPool.commonPool-worker-2 +174: ForkJoinPool.commonPool-worker-2 +175: ForkJoinPool.commonPool-worker-2 +176: ForkJoinPool.commonPool-worker-2 +177: ForkJoinPool.commonPool-worker-2 +178: ForkJoinPool.commonPool-worker-2 +179: ForkJoinPool.commonPool-worker-2 +180: ForkJoinPool.commonPool-worker-2 +181: ForkJoinPool.commonPool-worker-2 +182: ForkJoinPool.commonPool-worker-2 +183: ForkJoinPool.commonPool-worker-2 +184: ForkJoinPool.commonPool-worker-2 +185: ForkJoinPool.commonPool-worker-2 +186: ForkJoinPool.commonPool-worker-2 +187: ForkJoinPool.commonPool-worker-2 +188: ForkJoinPool.commonPool-worker-2 +189: ForkJoinPool.commonPool-worker-2 +190: ForkJoinPool.commonPool-worker-2 +191: ForkJoinPool.commonPool-worker-2 +192: ForkJoinPool.commonPool-worker-2 +193: ForkJoinPool.commonPool-worker-2 +194: ForkJoinPool.commonPool-worker-2 +195: ForkJoinPool.commonPool-worker-2 +196: ForkJoinPool.commonPool-worker-2 +197: ForkJoinPool.commonPool-worker-2 +198: ForkJoinPool.commonPool-worker-2 +199: ForkJoinPool.commonPool-worker-2 +200: ForkJoinPool.commonPool-worker-2 +201: ForkJoinPool.commonPool-worker-2 +202: ForkJoinPool.commonPool-worker-2 +203: ForkJoinPool.commonPool-worker-2 +204: ForkJoinPool.commonPool-worker-2 +205: ForkJoinPool.commonPool-worker-2 +206: ForkJoinPool.commonPool-worker-2 +207: ForkJoinPool.commonPool-worker-2 +208: ForkJoinPool.commonPool-worker-2 +209: ForkJoinPool.commonPool-worker-2 +210: ForkJoinPool.commonPool-worker-2 +211: ForkJoinPool.commonPool-worker-2 +212: ForkJoinPool.commonPool-worker-2 +213: ForkJoinPool.commonPool-worker-2 +214: ForkJoinPool.commonPool-worker-2 +215: ForkJoinPool.commonPool-worker-2 +216: ForkJoinPool.commonPool-worker-2 +217: ForkJoinPool.commonPool-worker-2 +218: ForkJoinPool.commonPool-worker-2 +219: ForkJoinPool.commonPool-worker-2 +220: ForkJoinPool.commonPool-worker-2 +221: ForkJoinPool.commonPool-worker-2 +222: ForkJoinPool.commonPool-worker-2 +223: ForkJoinPool.commonPool-worker-2 +224: ForkJoinPool.commonPool-worker-2 +225: ForkJoinPool.commonPool-worker-2 +226: ForkJoinPool.commonPool-worker-2 +227: ForkJoinPool.commonPool-worker-2 +228: ForkJoinPool.commonPool-worker-2 +229: ForkJoinPool.commonPool-worker-2 +230: ForkJoinPool.commonPool-worker-2 +231: ForkJoinPool.commonPool-worker-2 +232: ForkJoinPool.commonPool-worker-2 +233: ForkJoinPool.commonPool-worker-2 +234: ForkJoinPool.commonPool-worker-2 +236: main +237: main +238: main +239: main +240: main +241: main +242: main +243: main +244: main +245: main +246: main +247: main +248: main +249: main +250: main +251: main +252: main +253: main +254: main +255: main diff --git a/exceptions/BetterNullPointerReports.java b/exceptions/BetterNullPointerReports.java new file mode 100644 index 000000000..e5ef495b2 --- /dev/null +++ b/exceptions/BetterNullPointerReports.java @@ -0,0 +1,43 @@ +// exceptions/BetterNullPointerReports.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 15 + +class A { + String s; + A(String s) { + this.s = s; + } +} + +class B { + A a; + B(A a) { + this.a = a; + } +} + +class C { + B b; + C(B b) { + this.b = b; + } +} + +public class BetterNullPointerReports { + public static void main(String[] args) { + C[] ca = { + new C(new B(new A(null))), + new C(new B(null)), + new C(null), + }; + for(C c: ca) { + try { + System.out.println(c.b.a.s); + } catch(NullPointerException npe) { + System.out.println(npe); + } + } + } +} diff --git a/exceptions/EffectivelyFinalTWR.java b/exceptions/EffectivelyFinalTWR.java new file mode 100644 index 000000000..7ebeaf0d0 --- /dev/null +++ b/exceptions/EffectivelyFinalTWR.java @@ -0,0 +1,48 @@ +// exceptions/EffectivelyFinalTWR.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 9 +import java.io.*; + +public class EffectivelyFinalTWR { + static void old() { + try ( + InputStream r1 = new FileInputStream( + new File("TryWithResources.java")); + InputStream r2 = new FileInputStream( + new File("EffectivelyFinalTWR.java")); + ) { + r1.read(); + r2.read(); + } catch(IOException e) { + // Handle exceptions + } + } + static void jdk9() throws IOException { + final InputStream r1 = new FileInputStream( + new File("TryWithResources.java")); + // Effectively final: + InputStream r2 = new FileInputStream( + new File("EffectivelyFinalTWR.java")); + try (r1; r2) { + r1.read(); + r2.read(); + } + // r1 and r2 are still in scope. Accessing + // either one throws an exception: + r1.read(); + r2.read(); + } + public static void main(String[] args) { + old(); + try { + jdk9(); + } catch(IOException e) { + System.out.println(e); + } + } +} +/* Output: +java.io.IOException: Stream Closed +*/ diff --git a/exceptions/MessyExceptions.java b/exceptions/MessyExceptions.java index 46d63337e..1441abd04 100644 --- a/exceptions/MessyExceptions.java +++ b/exceptions/MessyExceptions.java @@ -13,7 +13,7 @@ public static void main(String[] args) { int contents = in.read(); // Process contents } catch(IOException e) { - // Handle the error + // Handle errors } finally { if(in != null) { try { diff --git a/exceptions/TryWithResources.java b/exceptions/TryWithResources.java index 0ded56154..a82d261c3 100644 --- a/exceptions/TryWithResources.java +++ b/exceptions/TryWithResources.java @@ -13,7 +13,7 @@ public static void main(String[] args) { int contents = in.read(); // Process contents } catch(IOException e) { - // Handle the error + // Handle errors } } } diff --git a/housekeeping/ArrayInit.java b/housekeeping/ArrayInit.java index f515f13b5..fc5ffb1ef 100644 --- a/housekeeping/ArrayInit.java +++ b/housekeeping/ArrayInit.java @@ -7,14 +7,8 @@ public class ArrayInit { public static void main(String[] args) { - Integer[] a = { - 1, 2, - 3, // Autoboxing - }; - Integer[] b = new Integer[]{ - 1, 2, - 3, // Autoboxing - }; + Integer[] a = { 1, 2, 3, }; + Integer[] b = new Integer[]{ 1, 2, 3, }; System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); } diff --git a/housekeeping/ForTypeInference.java b/housekeeping/ForTypeInference.java new file mode 100644 index 000000000..844ff10e1 --- /dev/null +++ b/housekeeping/ForTypeInference.java @@ -0,0 +1,19 @@ +// housekeeping/ForTypeInference.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 11 + +public class ForTypeInference { + public static void main(String[] args) { + for(var s : Spiciness.values()) + System.out.println(s); + } +} +/* Ouput: +NOT +MILD +MEDIUM +HOT +FLAMING +*/ diff --git a/housekeeping/NewVarArgs.java b/housekeeping/NewVarArgs.java index 640dda154..6ee8d4a72 100644 --- a/housekeeping/NewVarArgs.java +++ b/housekeeping/NewVarArgs.java @@ -2,7 +2,7 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -// Using array syntax to create variable argument lists +// Using ellipses to define a variable argument list public class NewVarArgs { static void printArray(Object... args) { diff --git a/housekeeping/PrimitiveOverloading.java b/housekeeping/PrimitiveOverloading.java index 9618eddfb..6a120b0cd 100644 --- a/housekeeping/PrimitiveOverloading.java +++ b/housekeeping/PrimitiveOverloading.java @@ -101,20 +101,12 @@ public static void main(String[] args) { } } /* Output: -5: f1(int) f2(int) f3(int) f4(int) f5(long) f6(float) -f7(double) -char: f1(char) f2(int) f3(int) f4(int) f5(long) -f6(float) f7(double) -byte: f1(byte) f2(byte) f3(short) f4(int) f5(long) -f6(float) f7(double) -short: f1(short) f2(short) f3(short) f4(int) f5(long) -f6(float) f7(double) -int: f1(int) f2(int) f3(int) f4(int) f5(long) f6(float) -f7(double) -long: f1(long) f2(long) f3(long) f4(long) f5(long) -f6(float) f7(double) -float: f1(float) f2(float) f3(float) f4(float) -f5(float) f6(float) f7(double) -double: f1(double) f2(double) f3(double) f4(double) -f5(double) f6(double) f7(double) +5: f1(int) f2(int) f3(int) f4(int) f5(long) f6(float) f7(double) +char: f1(char) f2(int) f3(int) f4(int) f5(long) f6(float) f7(double) +byte: f1(byte) f2(byte) f3(short) f4(int) f5(long) f6(float) f7(double) +short: f1(short) f2(short) f3(short) f4(int) f5(long) f6(float) f7(double) +int: f1(int) f2(int) f3(int) f4(int) f5(long) f6(float) f7(double) +long: f1(long) f2(long) f3(long) f4(long) f5(long) f6(float) f7(double) +float: f1(float) f2(float) f3(float) f4(float) f5(float) f6(float) f7(double) +double: f1(double) f2(double) f3(double) f4(double) f5(double) f6(double) f7(double) */ diff --git a/housekeeping/TypeInference.java b/housekeeping/TypeInference.java new file mode 100644 index 000000000..9f06fc2d8 --- /dev/null +++ b/housekeeping/TypeInference.java @@ -0,0 +1,36 @@ +// housekeeping/TypeInference.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 11 + +class Plumbus {} + +public class TypeInference { + void method() { + // Explicit type: + String hello1 = "Hello"; + // Type inference: + var hello = "Hello!"; + // Works for user-defined types: + Plumbus pb1 = new Plumbus(); + var pb2 = new Plumbus(); + } + // Also works for static methods: + static void staticMethod() { + var hello = "Hello!"; + var pb2 = new Plumbus(); + } +} + +class NoInference { + String field1 = "Field initialization"; + // var field2 = "Can't do this"; + // void method() { + // var noInitializer; // No inference data + // var aNull = null; // No inference data + // } + // var inferReturnType() { + // return "Can't infer return type"; + // } +} diff --git a/housekeeping/VarArgs.java b/housekeeping/VarArgs.java index 25f44d86e..0899b8614 100644 --- a/housekeeping/VarArgs.java +++ b/housekeeping/VarArgs.java @@ -13,8 +13,7 @@ static void printArray(Object[] args) { System.out.println(); } public static void main(String[] args) { - printArray(new Object[]{ - 47, (float) 3.14, 11.11}); + printArray(new Object[]{47, (float) 3.14, 11.11}); printArray(new Object[]{"one", "two", "three" }); printArray(new Object[]{new A(), new A(), new A()}); } diff --git a/interfaces/CheckedDowncast.java b/interfaces/CheckedDowncast.java new file mode 100644 index 000000000..90689585d --- /dev/null +++ b/interfaces/CheckedDowncast.java @@ -0,0 +1,19 @@ +// interfaces/CheckedDowncast.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed interface II permits JJ {} +final class JJ implements II {} +class Something {} + +public class CheckedDowncast { + public void f() { + II i = new JJ(); + JJ j = (JJ)i; + // Something s = (Something)i; + // error: incompatible types: II cannot + // be converted to Something + } +} diff --git a/interfaces/MICollision.java b/interfaces/MICollision.java index a37d947ad..ab1c8090f 100644 --- a/interfaces/MICollision.java +++ b/interfaces/MICollision.java @@ -37,7 +37,7 @@ default void sam(int i) { } } -// This works because the argument lists are distinct: +// Works because the argument lists are distinct: class Sam implements Sam1, Sam2 {} interface Max1 { diff --git a/interfaces/Machine.java b/interfaces/Machine.java deleted file mode 100644 index 72e3fcbc9..000000000 --- a/interfaces/Machine.java +++ /dev/null @@ -1,36 +0,0 @@ -// interfaces/Machine.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -import java.util.*; -import onjava.Operations; - -class Bing implements Operations { - @Override public void execute() { - Operations.show("Bing"); - } -} - -class Crack implements Operations { - @Override public void execute() { - Operations.show("Crack"); - } -} - -class Twist implements Operations { - @Override public void execute() { - Operations.show("Twist"); - } -} - -public class Machine { - public static void main(String[] args) { - Operations.runOps( - new Bing(), new Crack(), new Twist()); - } -} -/* Output: -Bing -Crack -Twist -*/ diff --git a/interfaces/MetalWork.java b/interfaces/MetalWork.java new file mode 100644 index 000000000..071b13ac9 --- /dev/null +++ b/interfaces/MetalWork.java @@ -0,0 +1,39 @@ +// interfaces/MetalWork.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +import onjava.Operation; + +class Heat implements Operation { + @Override public void execute() { + Operation.show("Heat"); + } +} + +public class MetalWork { + public static void main(String[] args) { + // Must be defined in a static context + // to access a method reference: + Operation twist = new Operation() { + public void execute() { + Operation.show("Twist"); + } + }; + Operation.runOps( + new Heat(), // [1] + new Operation() { // [2] + public void execute() { + Operation.show("Hammer"); + } + }, + twist::execute, // [3] + () -> Operation.show("Anneal") // [4] + ); + } +} +/* Output: +Heat +Hammer +Twist +Anneal +*/ diff --git a/interfaces/NonSealed.java b/interfaces/NonSealed.java new file mode 100644 index 000000000..8bc4b8fae --- /dev/null +++ b/interfaces/NonSealed.java @@ -0,0 +1,11 @@ +// interfaces/NonSealed.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed class Super permits Sub1, Sub2 {} +final class Sub1 extends Super {} +non-sealed class Sub2 extends Super {} +class Any1 extends Sub2 {} +class Any2 extends Sub2 {} diff --git a/interfaces/PermittedSubclasses.java b/interfaces/PermittedSubclasses.java new file mode 100644 index 000000000..73afd6eb7 --- /dev/null +++ b/interfaces/PermittedSubclasses.java @@ -0,0 +1,22 @@ +// interfaces/PermittedSubclasses.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed class Color permits Red, Green, Blue {} +final class Red extends Color {} +final class Green extends Color {} +final class Blue extends Color {} + +public class PermittedSubclasses { + public static void main(String[] args) { + for(var p: Color.class.getPermittedSubclasses()) + System.out.println(p.getSimpleName()); + } +} +/* Output: +Red +Green +Blue +*/ diff --git a/interfaces/PrivateInterfaceMethods.java b/interfaces/PrivateInterfaceMethods.java new file mode 100644 index 000000000..ebad9bd5b --- /dev/null +++ b/interfaces/PrivateInterfaceMethods.java @@ -0,0 +1,54 @@ +// interfaces/PrivateInterfaceMethods.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 9 + +interface Old { + default void fd() { + System.out.println("Old::fd()"); + } + static void fs() { + System.out.println("Old::fs()"); + } + default void f() { + fd(); + } + static void g() { + fs(); + } +} + +class ImplOld implements Old {} + +interface JDK9 { + private void fd() { // Automatically default + System.out.println("JDK9::fd()"); + } + private static void fs() { + System.out.println("JDK9::fs()"); + } + default void f() { + fd(); + } + static void g() { + fs(); + } +} + +class ImplJDK9 implements JDK9 {} + +public class PrivateInterfaceMethods { + public static void main(String[] args) { + new ImplOld().f(); + Old.g(); + new ImplJDK9().f(); + JDK9.g(); + } +} +/* Output: +Old::fd() +Old::fs() +JDK9::fd() +JDK9::fs() +*/ diff --git a/interfaces/SameFile.java b/interfaces/SameFile.java new file mode 100644 index 000000000..e20e93ae7 --- /dev/null +++ b/interfaces/SameFile.java @@ -0,0 +1,9 @@ +// interfaces/SameFile.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed class Shape {} +final class Circle extends Shape {} +final class Triangle extends Shape {} diff --git a/interfaces/Sealed.java b/interfaces/Sealed.java new file mode 100644 index 000000000..5124606c0 --- /dev/null +++ b/interfaces/Sealed.java @@ -0,0 +1,12 @@ +// interfaces/Sealed.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed class Base permits D1, D2 {} + +final class D1 extends Base {} +final class D2 extends Base {} +// Illegal: +// final class D3 extends Base {} diff --git a/interfaces/SealedCat.java b/interfaces/SealedCat.java new file mode 100644 index 000000000..0356ccac8 --- /dev/null +++ b/interfaces/SealedCat.java @@ -0,0 +1,6 @@ +// interfaces/SealedCat.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 +final class Cat extends Pet {} diff --git a/interfaces/SealedDog.java b/interfaces/SealedDog.java new file mode 100644 index 000000000..f0441afde --- /dev/null +++ b/interfaces/SealedDog.java @@ -0,0 +1,6 @@ +// interfaces/SealedDog.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 +final class Dog extends Pet {} diff --git a/interfaces/SealedInterface.java b/interfaces/SealedInterface.java new file mode 100644 index 000000000..315517bb1 --- /dev/null +++ b/interfaces/SealedInterface.java @@ -0,0 +1,12 @@ +// interfaces/SealedInterface.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed interface Ifc permits Imp1, Imp2 {} +final class Imp1 implements Ifc {} +final class Imp2 implements Ifc {} + +sealed abstract class AC permits X {} +final class X extends AC {} diff --git a/interfaces/SealedPets.java b/interfaces/SealedPets.java new file mode 100644 index 000000000..79ab9e5bc --- /dev/null +++ b/interfaces/SealedPets.java @@ -0,0 +1,6 @@ +// interfaces/SealedPets.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 +sealed class Pet permits Dog, Cat {} diff --git a/interfaces/SealedRecords.java b/interfaces/SealedRecords.java new file mode 100644 index 000000000..c1fd7b7eb --- /dev/null +++ b/interfaces/SealedRecords.java @@ -0,0 +1,12 @@ +// interfaces/SealedRecords.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed interface Employee + permits CLevel, Programmer {} +record CLevel(String type) + implements Employee {} +record Programmer(String experience) + implements Employee {} diff --git a/interfaces/SealedSubclasses.java b/interfaces/SealedSubclasses.java new file mode 100644 index 000000000..68b83af3e --- /dev/null +++ b/interfaces/SealedSubclasses.java @@ -0,0 +1,10 @@ +// interfaces/SealedSubclasses.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 17 + +sealed class Bottom permits Level1 {} +sealed class Level1 extends Bottom permits Level2 {} +sealed class Level2 extends Level1 permits Level3 {} +final class Level3 extends Level2 {} diff --git a/onjava/Operations.java b/onjava/Operation.java similarity index 66% rename from onjava/Operations.java rename to onjava/Operation.java index 0f935c365..f540bb76a 100644 --- a/onjava/Operations.java +++ b/onjava/Operation.java @@ -1,14 +1,13 @@ -// onjava/Operations.java +// onjava/Operation.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. package onjava; -import java.util.*; -public interface Operations { +public interface Operation { void execute(); - static void runOps(Operations... ops) { - for(Operations op : ops) + static void runOps(Operation... ops) { + for(Operation op : ops) op.execute(); } static void show(String msg) { diff --git a/operators/Equivalence.java b/operators/Equivalence.java index 25f7f3e70..dafc49524 100644 --- a/operators/Equivalence.java +++ b/operators/Equivalence.java @@ -14,11 +14,11 @@ public static void test(int value) { Integer i1 = value; // [1] Integer i2 = value; show("Automatic", i1, i2); - // Old way, deprecated in Java 9 and on: + // Old way, deprecated since Java 9: Integer r1 = new Integer(value); // [2] Integer r2 = new Integer(value); show("new Integer()", r1, r2); - // Preferred in Java 9 and on: + // Preferred since Java 9: Integer v1 = Integer.valueOf(value); // [3] Integer v2 = Integer.valueOf(value); show("Integer.valueOf()", v1, v2); diff --git a/operators/Literals.java b/operators/Literals.java index 3f2eef058..67232c222 100644 --- a/operators/Literals.java +++ b/operators/Literals.java @@ -17,7 +17,7 @@ public static void main(String[] args) { char c = 0xffff; // max char hex value System.out.println( "c: " + Integer.toBinaryString(c)); - byte b = 0x7f; // max byte hex value 10101111; + byte b = 0x7f; // max byte hex value 0111111; System.out.println( "b: " + Integer.toBinaryString(b)); short s = 0x7fff; // max short hex value diff --git a/operators/URShift.java b/operators/URShift.java index d1bcc4f09..7596408cd 100644 --- a/operators/URShift.java +++ b/operators/URShift.java @@ -30,8 +30,7 @@ public static void main(String[] args) { /* Output: 11111111111111111111111111111111 1111111111111111111111 -1111111111111111111111111111111111111111111111111111111 -111111111 +1111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 diff --git a/streams/Machine2.java b/streams/Machine2.java deleted file mode 100644 index e7b425ea7..000000000 --- a/streams/Machine2.java +++ /dev/null @@ -1,23 +0,0 @@ -// streams/Machine2.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -import java.util.*; -import onjava.Operations; - -public class Machine2 { - public static void main(String[] args) { - Arrays.stream(new Operations[] { - () -> Operations.show("Bing"), - () -> Operations.show("Crack"), - () -> Operations.show("Twist"), - () -> Operations.show("Pop") - }).forEach(Operations::execute); - } -} -/* Output: -Bing -Crack -Twist -Pop -*/ diff --git a/streams/MetalWork2.java b/streams/MetalWork2.java new file mode 100644 index 000000000..0bf74152f --- /dev/null +++ b/streams/MetalWork2.java @@ -0,0 +1,23 @@ +// streams/MetalWork2.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +import java.util.*; +import onjava.Operation; + +public class MetalWork2 { + public static void main(String[] args) { + Arrays.stream(new Operation[] { + () -> Operation.show("Heat"), + () -> Operation.show("Hammer"), + () -> Operation.show("Twist"), + () -> Operation.show("Anneal") + }).forEach(Operation::execute); + } +} +/* Output: +Heat +Hammer +Twist +Anneal +*/ diff --git a/strings/DataPoint.java b/strings/DataPoint.java new file mode 100644 index 000000000..719e0959d --- /dev/null +++ b/strings/DataPoint.java @@ -0,0 +1,32 @@ +// strings/DataPoint.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 15 + +public class DataPoint { + private String location; + private Double temperature; + public DataPoint(String loc, Double temp) { + location = loc; + temperature = temp; + } + @Override public String toString() { + return """ + Location: %s + Temperature: %.2f + """.formatted(location, temperature); + } + public static void main(String[] args) { + var hill = new DataPoint("Hill", 45.2); + var dale = new DataPoint("Dale", 65.2); + System.out.print(hill); + System.out.print(dale); + } +} +/* Output: +Location: Hill +Temperature: 45.20 +Location: Dale +Temperature: 65.20 +*/ diff --git a/strings/Indentation.java b/strings/Indentation.java new file mode 100644 index 000000000..71a88365f --- /dev/null +++ b/strings/Indentation.java @@ -0,0 +1,33 @@ +// strings/Indentation.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 15 + +public class Indentation { + public static final String NONE = """ + XXX + YYY + """; // No indentation + public static final String TWO = """ + XXX + YYY + """; // Produces indent of 2 + public static final String EIGHT = """ + XXX + YYY + """; // Produces indent of 8 + public static void main(String[] args) { + System.out.print(NONE); + System.out.print(TWO); + System.out.print(EIGHT); + } +} +/* Output: +XXX +YYY + XXX + YYY + XXX + YYY +*/ diff --git a/strings/TextBlocks.java b/strings/TextBlocks.java new file mode 100644 index 000000000..0e634001d --- /dev/null +++ b/strings/TextBlocks.java @@ -0,0 +1,37 @@ +// strings/TextBlocks.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 15 +// Poem: Antigonish by Hughes Mearns + +public class TextBlocks { + public static final String OLD = + "Yesterday, upon the stair,\n" + + "I met a man who wasn't there\n" + + "He wasn't there again today\n" + + "I wish, I wish he'd go away...\n" + + "\n" + + "When I came home last night at three\n" + + "The man was waiting there for me\n" + + "But when I looked around the hall\n" + + "I couldn't see him there at all!\n"; + + public static final String NEW = """ + Yesterday, upon the stair, + I met a man who wasn't there + He wasn't there again today + I wish, I wish he'd go away... + + When I came home last night at three + The man was waiting there for me + But when I looked around the hall + I couldn't see him there at all! + """; + public static void main(String[] args) { + System.out.println(OLD.equals(NEW)); + } +} +/* Output: +true +*/ From c0068e7d8a2d803e409d46b877d0c682767f8591 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Sun, 7 Nov 2021 17:23:11 -0700 Subject: [PATCH 42/46] Message about broken Gradle for JDK 16 or 17 --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5f975e29e..73131ecd0 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ If you want to experiment with the code examples from the book [On Java These examples are automatically extracted directly from the book. This repository includes tests to verify that the code in the book is correct. +> NOTE: Do not attempt to use JDK 16 or greater with gradle. +> This produces a `BUG!` message from Gradle, which is broken for those versions. +> To test new Java features in JDK 16 or 17 you must compile and run those examples by hand. + ## Contents - [Building From the Command Line: Quick Version](#building-from-the-command-line-quick-version) From 0fedf4317859c3267f565ab446c411d960c6860e Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Sun, 7 Nov 2021 17:39:59 -0700 Subject: [PATCH 43/46] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 73131ecd0..ad462ebc0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ includes tests to verify that the code in the book is correct. > NOTE: Do not attempt to use JDK 16 or greater with gradle. > This produces a `BUG!` message from Gradle, which is broken for those versions. -> To test new Java features in JDK 16 or 17 you must compile and run those examples by hand. ## Contents From cab823f881c083d599a2dbf8098ff259ed480b90 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Sun, 7 Nov 2021 17:48:46 -0700 Subject: [PATCH 44/46] New Feature Examples, Corrections & Rewrites --- README.md | 1 + collectiontopics/CanonicalMapping.java | 52 ++---- collectiontopics/ListSortSearch.java | 6 +- collectiontopics/QueueBehavior.java | 2 +- concurrent/PSP2.txt | 248 +------------------------ enumerations/ArrowInSwitch.java | 42 +++++ enumerations/CaseNull.java | 92 +++++++++ enumerations/Dominance.java | 20 ++ enumerations/EnumSwitch.java | 17 ++ enumerations/NormalLiskov.java | 40 ++++ enumerations/ObjectMatch.java | 46 +++++ enumerations/OddScoping.java | 27 +++ enumerations/People.java | 46 +++++ enumerations/Pet.java | 16 ++ enumerations/PetPatternMatch.java | 22 +++ enumerations/PetPatternMatch2.java | 36 ++++ enumerations/Planets.java | 36 ++++ enumerations/SealedPatternMatch.java | 48 +++++ enumerations/Shapes.java | 53 ++++++ enumerations/SmartCasting.java | 36 ++++ enumerations/SwitchExpression.java | 38 ++++ enumerations/Tanks.java | 47 +++++ housekeeping/ForTypeInference.java | 2 +- onjava/Range.java | 2 +- serialization/AStoreCADState.java | 66 +++---- serialization/RecoverCADState.java | 20 +- streams/StreamOfRandoms.java | 3 +- strings/BackSlashes.java | 26 +++ strings/IntegerMatch.java | 12 +- strings/JGrep.java | 38 ++-- validating/SimpleDebugging.java | 15 -- 31 files changed, 779 insertions(+), 376 deletions(-) create mode 100644 enumerations/ArrowInSwitch.java create mode 100644 enumerations/CaseNull.java create mode 100644 enumerations/Dominance.java create mode 100644 enumerations/EnumSwitch.java create mode 100644 enumerations/NormalLiskov.java create mode 100644 enumerations/ObjectMatch.java create mode 100644 enumerations/OddScoping.java create mode 100644 enumerations/People.java create mode 100644 enumerations/Pet.java create mode 100644 enumerations/PetPatternMatch.java create mode 100644 enumerations/PetPatternMatch2.java create mode 100644 enumerations/Planets.java create mode 100644 enumerations/SealedPatternMatch.java create mode 100644 enumerations/Shapes.java create mode 100644 enumerations/SmartCasting.java create mode 100644 enumerations/SwitchExpression.java create mode 100644 enumerations/Tanks.java create mode 100644 strings/BackSlashes.java diff --git a/README.md b/README.md index ad462ebc0..73131ecd0 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ includes tests to verify that the code in the book is correct. > NOTE: Do not attempt to use JDK 16 or greater with gradle. > This produces a `BUG!` message from Gradle, which is broken for those versions. +> To test new Java features in JDK 16 or 17 you must compile and run those examples by hand. ## Contents diff --git a/collectiontopics/CanonicalMapping.java b/collectiontopics/CanonicalMapping.java index 72735a3ba..f464599b5 100644 --- a/collectiontopics/CanonicalMapping.java +++ b/collectiontopics/CanonicalMapping.java @@ -4,49 +4,29 @@ // Visit http://OnJava8.com for more book information. // Demonstrates WeakHashMap import java.util.*; - -class Element { - private String ident; - Element(String id) { ident = id; } - @Override public String toString() { return ident; } - @Override public int hashCode() { - return Objects.hashCode(ident); - } - @Override public boolean equals(Object r) { - return r instanceof Element && - Objects.equals(ident, ((Element)r).ident); - } - @SuppressWarnings("deprecation") - @Override protected void finalize() { - System.out.println("Finalizing " + - getClass().getSimpleName() + " " + ident); - } -} - -class Key extends Element { - Key(String id) { super(id); } -} - -class Value extends Element { - Value(String id) { super(id); } -} +import java.util.stream.*; public class CanonicalMapping { + static void showKeys(Map m) { + // Display sorted keys + List keys = new ArrayList<>(m.keySet()); + Collections.sort(keys); + System.out.println(keys); + } public static void main(String[] args) { - int size = 1000; - // Or, choose size via the command line: - if(args.length > 0) - size = Integer.valueOf(args[0]); - Key[] keys = new Key[size]; - WeakHashMap map = + int size = 100; + String[] savedKeys = new String[size]; + WeakHashMap map = new WeakHashMap<>(); for(int i = 0; i < size; i++) { - Key k = new Key(Integer.toString(i)); - Value v = new Value(Integer.toString(i)); + String key = String.format("%03d", i); + String value = Integer.toString(i); if(i % 3 == 0) - keys[i] = k; // Save as "real" references - map.put(k, v); + savedKeys[i] = key; // Save as "real" references + map.put(key, value); } + showKeys(map); System.gc(); + showKeys(map); } } diff --git a/collectiontopics/ListSortSearch.java b/collectiontopics/ListSortSearch.java index 13df7af28..2f2ca2d7e 100644 --- a/collectiontopics/ListSortSearch.java +++ b/collectiontopics/ListSortSearch.java @@ -13,9 +13,9 @@ public static void main(String[] args) { System.out.println(list); Collections.shuffle(list, new Random(47)); System.out.println("Shuffled: " + list); - // Use ListIterator to trim off last elements: - ListIterator it = list.listIterator(10); - while(it.hasNext()) { + ListIterator it = + list.listIterator(10); // [1] + while(it.hasNext()) { // [2] it.next(); it.remove(); } diff --git a/collectiontopics/QueueBehavior.java b/collectiontopics/QueueBehavior.java index 1547e0d96..16f7582e2 100644 --- a/collectiontopics/QueueBehavior.java +++ b/collectiontopics/QueueBehavior.java @@ -15,7 +15,7 @@ static Stream strings() { } static void test(int id, Queue queue) { System.out.print(id + ": "); - strings().map(queue::offer).count(); + strings().forEach(queue::offer); while(queue.peek() != null) System.out.print(queue.remove() + " "); System.out.println(); diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt index d41bfa1fc..f206148e4 100644 --- a/concurrent/PSP2.txt +++ b/concurrent/PSP2.txt @@ -1,5 +1,5 @@ 0: main -1: ForkJoinPool.commonPool-worker-2 +1: main 2: main 3: main 4: main @@ -8,249 +8,3 @@ 7: main 8: main 9: main -10: main -11: main -12: main -13: main -14: main -15: main -16: main -17: main -18: main -19: main -20: main -21: main -22: main -23: main -24: main -25: main -26: main -27: main -28: main -29: main -30: main -31: main -32: main -33: main -34: main -35: main -36: main -37: main -38: main -39: main -40: main -41: main -42: main -43: main -44: main -45: main -46: main -47: main -48: main -49: main -50: main -51: main -52: main -53: main -54: main -55: main -56: main -57: main -58: main -59: main -60: main -61: main -62: main -63: main -64: main -65: main -66: main -67: main -68: main -69: main -70: main -71: main -72: main -73: main -74: main -75: main -76: main -77: main -78: main -79: main -80: main -81: main -82: main -83: main -84: main -85: main -86: main -87: main -88: main -89: main -90: main -91: main -92: main -93: main -94: main -95: main -96: main -97: main -98: main -99: main -100: main -101: main -102: main -103: main -104: main -105: main -106: main -107: main -108: main -108: ForkJoinPool.commonPool-worker-2 -109: ForkJoinPool.commonPool-worker-2 -110: ForkJoinPool.commonPool-worker-2 -111: ForkJoinPool.commonPool-worker-2 -112: ForkJoinPool.commonPool-worker-2 -113: ForkJoinPool.commonPool-worker-2 -114: ForkJoinPool.commonPool-worker-2 -115: ForkJoinPool.commonPool-worker-2 -116: ForkJoinPool.commonPool-worker-2 -117: ForkJoinPool.commonPool-worker-2 -118: ForkJoinPool.commonPool-worker-2 -119: ForkJoinPool.commonPool-worker-2 -120: ForkJoinPool.commonPool-worker-2 -121: ForkJoinPool.commonPool-worker-2 -122: ForkJoinPool.commonPool-worker-2 -123: ForkJoinPool.commonPool-worker-2 -124: ForkJoinPool.commonPool-worker-2 -125: ForkJoinPool.commonPool-worker-2 -126: ForkJoinPool.commonPool-worker-2 -127: ForkJoinPool.commonPool-worker-2 -128: ForkJoinPool.commonPool-worker-2 -129: ForkJoinPool.commonPool-worker-2 -130: ForkJoinPool.commonPool-worker-2 -131: ForkJoinPool.commonPool-worker-2 -132: ForkJoinPool.commonPool-worker-2 -133: ForkJoinPool.commonPool-worker-2 -134: ForkJoinPool.commonPool-worker-2 -135: ForkJoinPool.commonPool-worker-2 -136: ForkJoinPool.commonPool-worker-2 -137: ForkJoinPool.commonPool-worker-2 -138: ForkJoinPool.commonPool-worker-2 -139: ForkJoinPool.commonPool-worker-2 -140: ForkJoinPool.commonPool-worker-2 -141: ForkJoinPool.commonPool-worker-2 -142: ForkJoinPool.commonPool-worker-2 -143: ForkJoinPool.commonPool-worker-2 -144: ForkJoinPool.commonPool-worker-2 -145: ForkJoinPool.commonPool-worker-2 -146: ForkJoinPool.commonPool-worker-2 -147: ForkJoinPool.commonPool-worker-2 -148: ForkJoinPool.commonPool-worker-2 -149: ForkJoinPool.commonPool-worker-2 -150: ForkJoinPool.commonPool-worker-2 -151: ForkJoinPool.commonPool-worker-2 -152: ForkJoinPool.commonPool-worker-2 -153: ForkJoinPool.commonPool-worker-2 -154: ForkJoinPool.commonPool-worker-2 -155: ForkJoinPool.commonPool-worker-2 -156: ForkJoinPool.commonPool-worker-2 -157: ForkJoinPool.commonPool-worker-2 -158: ForkJoinPool.commonPool-worker-2 -159: ForkJoinPool.commonPool-worker-2 -160: ForkJoinPool.commonPool-worker-2 -161: ForkJoinPool.commonPool-worker-2 -162: ForkJoinPool.commonPool-worker-2 -163: ForkJoinPool.commonPool-worker-2 -164: ForkJoinPool.commonPool-worker-2 -165: ForkJoinPool.commonPool-worker-2 -166: ForkJoinPool.commonPool-worker-2 -167: ForkJoinPool.commonPool-worker-2 -168: ForkJoinPool.commonPool-worker-2 -169: ForkJoinPool.commonPool-worker-2 -170: ForkJoinPool.commonPool-worker-2 -171: ForkJoinPool.commonPool-worker-2 -172: ForkJoinPool.commonPool-worker-2 -173: ForkJoinPool.commonPool-worker-2 -174: ForkJoinPool.commonPool-worker-2 -175: ForkJoinPool.commonPool-worker-2 -176: ForkJoinPool.commonPool-worker-2 -177: ForkJoinPool.commonPool-worker-2 -178: ForkJoinPool.commonPool-worker-2 -179: ForkJoinPool.commonPool-worker-2 -180: ForkJoinPool.commonPool-worker-2 -181: ForkJoinPool.commonPool-worker-2 -182: ForkJoinPool.commonPool-worker-2 -183: ForkJoinPool.commonPool-worker-2 -184: ForkJoinPool.commonPool-worker-2 -185: ForkJoinPool.commonPool-worker-2 -186: ForkJoinPool.commonPool-worker-2 -187: ForkJoinPool.commonPool-worker-2 -188: ForkJoinPool.commonPool-worker-2 -189: ForkJoinPool.commonPool-worker-2 -190: ForkJoinPool.commonPool-worker-2 -191: ForkJoinPool.commonPool-worker-2 -192: ForkJoinPool.commonPool-worker-2 -193: ForkJoinPool.commonPool-worker-2 -194: ForkJoinPool.commonPool-worker-2 -195: ForkJoinPool.commonPool-worker-2 -196: ForkJoinPool.commonPool-worker-2 -197: ForkJoinPool.commonPool-worker-2 -198: ForkJoinPool.commonPool-worker-2 -199: ForkJoinPool.commonPool-worker-2 -200: ForkJoinPool.commonPool-worker-2 -201: ForkJoinPool.commonPool-worker-2 -202: ForkJoinPool.commonPool-worker-2 -203: ForkJoinPool.commonPool-worker-2 -204: ForkJoinPool.commonPool-worker-2 -205: ForkJoinPool.commonPool-worker-2 -206: ForkJoinPool.commonPool-worker-2 -207: ForkJoinPool.commonPool-worker-2 -208: ForkJoinPool.commonPool-worker-2 -209: ForkJoinPool.commonPool-worker-2 -210: ForkJoinPool.commonPool-worker-2 -211: ForkJoinPool.commonPool-worker-2 -212: ForkJoinPool.commonPool-worker-2 -213: ForkJoinPool.commonPool-worker-2 -214: ForkJoinPool.commonPool-worker-2 -215: ForkJoinPool.commonPool-worker-2 -216: ForkJoinPool.commonPool-worker-2 -217: ForkJoinPool.commonPool-worker-2 -218: ForkJoinPool.commonPool-worker-2 -219: ForkJoinPool.commonPool-worker-2 -220: ForkJoinPool.commonPool-worker-2 -221: ForkJoinPool.commonPool-worker-2 -222: ForkJoinPool.commonPool-worker-2 -223: ForkJoinPool.commonPool-worker-2 -224: ForkJoinPool.commonPool-worker-2 -225: ForkJoinPool.commonPool-worker-2 -226: ForkJoinPool.commonPool-worker-2 -227: ForkJoinPool.commonPool-worker-2 -228: ForkJoinPool.commonPool-worker-2 -229: ForkJoinPool.commonPool-worker-2 -230: ForkJoinPool.commonPool-worker-2 -231: ForkJoinPool.commonPool-worker-2 -232: ForkJoinPool.commonPool-worker-2 -233: ForkJoinPool.commonPool-worker-2 -234: ForkJoinPool.commonPool-worker-2 -236: main -237: main -238: main -239: main -240: main -241: main -242: main -243: main -244: main -245: main -246: main -247: main -248: main -249: main -250: main -251: main -252: main -253: main -254: main -255: main diff --git a/enumerations/ArrowInSwitch.java b/enumerations/ArrowInSwitch.java new file mode 100644 index 000000000..f583d7ee2 --- /dev/null +++ b/enumerations/ArrowInSwitch.java @@ -0,0 +1,42 @@ +// enumerations/ArrowInSwitch.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 14 +import static java.util.stream.IntStream.range; + +public class ArrowInSwitch { + static void colons(int i) { + switch(i) { + case 1: System.out.println("one"); + break; + case 2: System.out.println("two"); + break; + case 3: System.out.println("three"); + break; + default: System.out.println("default"); + } + } + static void arrows(int i) { + switch(i) { + case 1 -> System.out.println("one"); + case 2 -> System.out.println("two"); + case 3 -> System.out.println("three"); + default -> System.out.println("default"); + } + } + public static void main(String[] args) { + range(0, 4).forEach(i -> colons(i)); + range(0, 4).forEach(i -> arrows(i)); + } +} +/* Output: +default +one +two +three +default +one +two +three +*/ diff --git a/enumerations/CaseNull.java b/enumerations/CaseNull.java new file mode 100644 index 000000000..6b5004920 --- /dev/null +++ b/enumerations/CaseNull.java @@ -0,0 +1,92 @@ +// enumerations/CaseNull.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; +import java.util.function.*; + +public class CaseNull { + static void old(String s) { + if(s == null) { + System.out.println("null"); + return; + } + switch(s) { + case "XX" -> System.out.println("XX"); + default -> System.out.println("default"); + } + } + static void checkNull(String s) { + switch(s) { + case "XX" -> System.out.println("XX"); + case null -> System.out.println("null"); + default -> System.out.println("default"); + } + // Works with colon syntax, too: + switch(s) { + case "XX": System.out.println("XX"); + break; + case null: System.out.println("null"); + break; + default : System.out.println("default"); + } + } + static void defaultOnly(String s) { + switch(s) { + case "XX" -> System.out.println("XX"); + default -> System.out.println("default"); + } + } + static void combineNullAndCase(String s) { + switch(s) { + case "XX", null -> System.out.println("XX|null"); + default -> System.out.println("default"); + } + } + static void combineNullAndDefault(String s) { + switch(s) { + case "XX" -> System.out.println("XX"); + case null, default -> System.out.println("both"); + } + } + static void test(Consumer cs) { + cs.accept("XX"); + cs.accept("YY"); + try { + cs.accept(null); + } catch(NullPointerException e) { + System.out.println(e.getMessage()); + } + } + public static void main(String[] args) { + test(CaseNull::old); + test(CaseNull::checkNull); + test(CaseNull::defaultOnly); + test(CaseNull::combineNullAndCase); + test(CaseNull::combineNullAndDefault); + } +} +/* Output: +XX +default +null +XX +XX +default +default +null +null +XX +default +Cannot invoke "String.hashCode()" because "" is null +XX|null +default +XX|null +XX +both +both +*/ diff --git a/enumerations/Dominance.java b/enumerations/Dominance.java new file mode 100644 index 000000000..893e755e2 --- /dev/null +++ b/enumerations/Dominance.java @@ -0,0 +1,20 @@ +// enumerations/Dominance.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +import java.util.*; + +sealed interface Base {} +record Derived() implements Base {} + +public class Dominance { + static String test(Base base) { + return switch(base) { + case Derived d -> "Derived"; + case Base b -> "B"; // [1] + }; + } +} diff --git a/enumerations/EnumSwitch.java b/enumerations/EnumSwitch.java new file mode 100644 index 000000000..a17546eab --- /dev/null +++ b/enumerations/EnumSwitch.java @@ -0,0 +1,17 @@ +// enumerations/EnumSwitch.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 14 + +public class EnumSwitch { + enum Signal { GREEN, YELLOW, RED, } + Signal color = Signal.RED; + public void change() { + color = switch(color) { + case RED -> Signal.GREEN; + case GREEN -> Signal.YELLOW; + case YELLOW -> Signal.RED; + }; + } +} diff --git a/enumerations/NormalLiskov.java b/enumerations/NormalLiskov.java new file mode 100644 index 000000000..c121700ab --- /dev/null +++ b/enumerations/NormalLiskov.java @@ -0,0 +1,40 @@ +// enumerations/NormalLiskov.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +import java.util.stream.*; + +interface LifeForm { + String move(); + String react(); +} + +class Worm implements LifeForm { + @Override public String move() { + return "Worm::move()"; + } + @Override public String react() { + return "Worm::react()"; + } +} + +class Giraffe implements LifeForm { + @Override public String move() { + return "Giraffe::move()"; + } + @Override public String react() { + return "Giraffe::react()"; + } +} + +public class NormalLiskov { + public static void main(String[] args) { + Stream.of(new Worm(), new Giraffe()) + .forEach(lf -> System.out.println( + lf.move() + " " + lf.react())); + } +} +/* Output: +Worm::move() Worm::react() +Giraffe::move() Giraffe::react() +*/ diff --git a/enumerations/ObjectMatch.java b/enumerations/ObjectMatch.java new file mode 100644 index 000000000..490b79a0b --- /dev/null +++ b/enumerations/ObjectMatch.java @@ -0,0 +1,46 @@ +// enumerations/ObjectMatch.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; + +record XX() {} + +public class ObjectMatch { + static String match(Object o) { + return switch(o) { + case Dog d -> "Walk the dog"; + case Fish f -> "Change the fish water"; + case Pet sp -> "Not dog or fish"; + case String s -> "String " + s; + case Integer i -> "Integer " + i; + case String[] sa -> String.join(", ", sa); + case null, XX xx -> "null or XX: " + xx; + default -> "Something else"; + }; + } + public static void main(String[] args) { + List.of(new Dog(), new Fish(), new Pet(), + "Oscar", Integer.valueOf(12), + Double.valueOf("47.74"), + new String[]{ "to", "the", "point" }, + new XX() + ).forEach( + p -> System.out.println(match(p)) + ); + } +} +/* Output: +Walk the dog +Change the fish water +Not dog or fish +String Oscar +Integer 12 +Something else +to, the, point +null or Object: XX[] +*/ diff --git a/enumerations/OddScoping.java b/enumerations/OddScoping.java new file mode 100644 index 000000000..fd938e98a --- /dev/null +++ b/enumerations/OddScoping.java @@ -0,0 +1,27 @@ +// enumerations/OddScoping.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +public class OddScoping { + static void f(Object o) { + if(!(o instanceof String s)) { + System.out.println("Not a String"); + throw new RuntimeException(); + } + // s is in scope here! + System.out.println(s.toUpperCase()); // [1] + } + public static void main(String[] args) { + f("Curiouser and Curiouser"); + f(null); + } +} +/* Output: +CURIOUSER AND CURIOUSER +Not a String +Exception in thread "main" java.lang.RuntimeException + at OddScoping.f(OddScoping.java:8) + at OddScoping.main(OddScoping.java:15) +*/ diff --git a/enumerations/People.java b/enumerations/People.java new file mode 100644 index 000000000..183d34c79 --- /dev/null +++ b/enumerations/People.java @@ -0,0 +1,46 @@ +// enumerations/People.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; + +record Person(String name, int age) {} + +public class People { + static String categorize(Person person) { + return switch(person) { + case Person p && p.age() > 40 // [1] + -> p + " is middle aged"; + case Person p && + (p.name().contains("D") || p.age() == 14) + -> p + " D or 14"; + case Person p && !(p.age() >= 100) // [2] + -> p + " is not a centenarian"; + case Person p -> p + " Everyone else"; + }; + } + public static void main(String[] args) { + List.of( + new Person("Dorothy", 15), + new Person("John Bigboote", 42), + new Person("Morty", 14), + new Person("Morty Jr.", 1), + new Person("Jose", 39), + new Person("Kane", 118) + ).forEach( + p -> System.out.println(categorize(p)) + ); + } +} +/* Output: +Person[name=Dorothy, age=15] D or 14 +Person[name=John Bigboote, age=42] is middle aged +Person[name=Morty, age=14] D or 14 +Person[name=Morty Jr., age=1] is not a centenarian +Person[name=Jose, age=39] is not a centenarian +Person[name=Kane, age=118] is middle aged +*/ diff --git a/enumerations/Pet.java b/enumerations/Pet.java new file mode 100644 index 000000000..0508905e3 --- /dev/null +++ b/enumerations/Pet.java @@ -0,0 +1,16 @@ +// enumerations/Pet.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +public class Pet { + void feed() {} +} + +class Dog extends Pet { + void walk() {} +} + +class Fish extends Pet { + void changeWater() {} +} diff --git a/enumerations/PetPatternMatch.java b/enumerations/PetPatternMatch.java new file mode 100644 index 000000000..d538ef2b8 --- /dev/null +++ b/enumerations/PetPatternMatch.java @@ -0,0 +1,22 @@ +// enumerations/PetPatternMatch.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +import java.util.*; + +public class PetPatternMatch { + static void careFor(Pet p) { + switch(p) { + case Dog d -> d.walk(); + case Fish f -> f.changeWater(); + case Pet sp -> sp.feed(); + }; + } + static void petCare() { + List.of(new Dog(), new Fish()) + .forEach(p -> careFor(p)); + } +} diff --git a/enumerations/PetPatternMatch2.java b/enumerations/PetPatternMatch2.java new file mode 100644 index 000000000..76b44f4ee --- /dev/null +++ b/enumerations/PetPatternMatch2.java @@ -0,0 +1,36 @@ +// enumerations/PetPatternMatch2.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +package sealedpet; +import java.util.*; + +sealed interface Pet { + void feed(); +} + +final class Dog implements Pet { + @Override public void feed() {} + void walk() {} +} + +final class Fish implements Pet { + @Override public void feed() {} + void changeWater() {} +} + +public class PetPatternMatch2 { + static void careFor(Pet p) { + switch(p) { + case Dog d -> d.walk(); + case Fish f -> f.changeWater(); + }; + } + static void petCare() { + List.of(new Dog(), new Fish()) + .forEach(p -> careFor(p)); + } +} diff --git a/enumerations/Planets.java b/enumerations/Planets.java new file mode 100644 index 000000000..9554c684f --- /dev/null +++ b/enumerations/Planets.java @@ -0,0 +1,36 @@ +// enumerations/Planets.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 14 + +enum CelestialBody { + MERCURY, VENUS, EARTH, MARS, JUPITER, + SATURN, URANUS, NEPTUNE, PLUTO +} + +public class Planets { + public static String classify(CelestialBody b) { + var result = switch(b) { + case MERCURY, VENUS, EARTH, + MARS, JUPITER, + SATURN, URANUS, NEPTUNE -> { + System.out.print("A planet: "); + yield b.toString(); + } + case PLUTO -> { + System.out.print("Not a planet: "); + yield b.toString(); + } + }; + return result; + } + public static void main(String[] args) { + System.out.println(classify(CelestialBody.MARS)); + System.out.println(classify(CelestialBody.PLUTO)); + } +} +/* Output: +A planet: MARS +Not a planet: PLUTO +*/ diff --git a/enumerations/SealedPatternMatch.java b/enumerations/SealedPatternMatch.java new file mode 100644 index 000000000..b5051303b --- /dev/null +++ b/enumerations/SealedPatternMatch.java @@ -0,0 +1,48 @@ +// enumerations/SealedPatternMatch.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; + +sealed interface Transport {}; +record Bicycle(String id) implements Transport {}; +record Glider(int size) implements Transport {}; +record Surfboard(double weight) implements Transport {}; +// If you uncomment this: +// record Skis(int length) implements Transport {}; +// You get an error: "the switch expression +// does not cover all possible input values" + +public class SealedPatternMatch { + static String exhaustive(Transport t) { + return switch(t) { + case Bicycle b -> "Bicycle " + b.id(); + case Glider g -> "Glider " + g.size(); + case Surfboard s -> "Surfboard " + s.weight(); + }; + } + public static void main(String[] args) { + List.of( + new Bicycle("Bob"), + new Glider(65), + new Surfboard(6.4) + ).forEach( + t -> System.out.println(exhaustive(t)) + ); + try { + exhaustive(null); // Always possible! // [1] + } catch(NullPointerException e) { + System.out.println("Not exhaustive: " + e); + } + } +} +/* Output: +Bicycle Bob +Glider 65 +Surfboard 6.4 +Not exhaustive: java.lang.NullPointerException +*/ diff --git a/enumerations/Shapes.java b/enumerations/Shapes.java new file mode 100644 index 000000000..031fc4851 --- /dev/null +++ b/enumerations/Shapes.java @@ -0,0 +1,53 @@ +// enumerations/Shapes.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; + +sealed interface Shape { + double area(); +} + +record Circle(double radius) implements Shape { + @Override public double area() { + return Math.PI * radius * radius; + } +} + +record Rectangle(double side1, double side2) + implements Shape { + @Override public double area() { + return side1 * side2; + } +} + +public class Shapes { + static void classify(Shape s) { + System.out.println(switch(s) { + case Circle c && c.area() < 100.0 + -> "Small Circle: " + c; + case Circle c -> "Large Circle: " + c; + case Rectangle r && r.side1() == r.side2() + -> "Square: " + r; + case Rectangle r -> "Rectangle: " + r; + }); + } + public static void main(String[] args) { + List.of( + new Circle(5.0), + new Circle(25.0), + new Rectangle(12.0, 12.0), + new Rectangle(12.0, 15.0) + ).forEach(t -> classify(t)); + } +} +/* Output: +Small Circle: Circle[radius=5.0] +Large Circle: Circle[radius=25.0] +Square: Rectangle[side1=12.0, side2=12.0] +Rectangle: Rectangle[side1=12.0, side2=15.0] +*/ diff --git a/enumerations/SmartCasting.java b/enumerations/SmartCasting.java new file mode 100644 index 000000000..848c0e9de --- /dev/null +++ b/enumerations/SmartCasting.java @@ -0,0 +1,36 @@ +// enumerations/SmartCasting.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 16 + +public class SmartCasting { + static void dumb(Object x) { + if(x instanceof String) { + String s = (String)x; + if(s.length() > 0) { + System.out.format( + "%d %s%n", s.length(), s.toUpperCase()); + } + } + } + static void smart(Object x) { + if(x instanceof String s && s.length() > 0) { + System.out.format( + "%d %s%n", s.length(), s.toUpperCase()); + } + } + static void wrong(Object x) { + // "Or" never works: + // if(x instanceof String s || s.length() > 0) {} + // error: cannot find symbol ^ + } + public static void main(String[] args) { + dumb("dumb"); + smart("smart"); + } +} +/* Output: +4 DUMB +5 SMART +*/ diff --git a/enumerations/SwitchExpression.java b/enumerations/SwitchExpression.java new file mode 100644 index 000000000..06a0fe49b --- /dev/null +++ b/enumerations/SwitchExpression.java @@ -0,0 +1,38 @@ +// enumerations/SwitchExpression.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Since JDK 14 +import java.util.*; + +public class SwitchExpression { + static int colon(String s) { + var result = switch(s) { + case "i": yield 1; + case "j": yield 2; + case "k": yield 3; + default: yield 0; + }; + return result; + } + static int arrow(String s) { + var result = switch(s) { + case "i" -> 1; + case "j" -> 2; + case "k" -> 3; + default -> 0; + }; + return result; + } + public static void main(String[] args) { + for(var s: new String[]{"i", "j", "k", "z"}) + System.out.format( + "%s %d %d%n", s, colon(s), arrow(s)); + } +} +/* Output: +i 1 1 +j 2 2 +k 3 3 +z 0 0 +*/ diff --git a/enumerations/Tanks.java b/enumerations/Tanks.java new file mode 100644 index 000000000..0604693f5 --- /dev/null +++ b/enumerations/Tanks.java @@ -0,0 +1,47 @@ +// enumerations/Tanks.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. +// {NewFeature} Preview in JDK 17 +// Compile with javac flags: +// --enable-preview --source 17 +// Run with java flag: --enable-preview +import java.util.*; + +enum Type { TOXIC, FLAMMABLE, NEUTRAL } + +record Level(int percent) { + Level { + if(percent < 0 || percent > 100) + throw new IndexOutOfBoundsException( + percent + " percent"); + } +} + +record Tank(Type type, Level level) {} + +public class Tanks { + static String check(Tank tank) { + return switch(tank) { + case Tank t && t.type() == Type.TOXIC + -> "Toxic: " + t; + case Tank t && ( // [1] + t.type() == Type.TOXIC && + t.level().percent() < 50 + ) -> "Toxic, low: " + t; + case Tank t && t.type() == Type.FLAMMABLE + -> "Flammable: " + t; + // Equivalent to "default": + case Tank t -> "Other Tank: " + t; + }; + } + public static void main(String[] args) { + List.of( + new Tank(Type.TOXIC, new Level(49)), + new Tank(Type.FLAMMABLE, new Level(52)), + new Tank(Type.NEUTRAL, new Level(75)) + ).forEach( + t -> System.out.println(check(t)) + ); + } +} diff --git a/housekeeping/ForTypeInference.java b/housekeeping/ForTypeInference.java index 844ff10e1..8db4b9034 100644 --- a/housekeeping/ForTypeInference.java +++ b/housekeeping/ForTypeInference.java @@ -10,7 +10,7 @@ public static void main(String[] args) { System.out.println(s); } } -/* Ouput: +/* Output: NOT MILD MEDIUM diff --git a/onjava/Range.java b/onjava/Range.java index 82041db5e..3003dbd52 100644 --- a/onjava/Range.java +++ b/onjava/Range.java @@ -9,7 +9,7 @@ public class Range { // Produce sequence [start..end) incrementing by step public static int[] range(int start, int end, int step) { - if (step == 0) + if(step == 0) throw new IllegalArgumentException("Step cannot be zero"); int sz = Math.max(0, step >= 0 ? diff --git a/serialization/AStoreCADState.java b/serialization/AStoreCADState.java index 93b7d5f53..ef496b808 100644 --- a/serialization/AStoreCADState.java +++ b/serialization/AStoreCADState.java @@ -11,85 +11,74 @@ enum Color { RED, BLUE, GREEN } abstract class Shape implements Serializable { private int xPos, yPos, dimension; - private static Random rand = new Random(47); - private static int counter = 0; - public abstract void setColor(Color newColor); - public abstract Color getColor(); Shape(int xVal, int yVal, int dim) { xPos = xVal; yPos = yVal; dimension = dim; } + public abstract void setColor(Color newColor); + public abstract Color getColor(); @Override public String toString() { - return getClass() + "Color[" + getColor() + - "] xPos[" + xPos + "] yPos[" + yPos + - "] dim[" + dimension + "]\n"; + return "\n" + getClass() + " " + getColor() + + " xPos[" + xPos + "] yPos[" + yPos + + "] dim[" + dimension + "]"; } + private static Random rand = new Random(47); + private static int counter = 0; public static Shape randomFactory() { int xVal = rand.nextInt(100); int yVal = rand.nextInt(100); int dim = rand.nextInt(100); - switch(counter++ % 3) { + switch(counter++ % 2) { default: case 0: return new Circle(xVal, yVal, dim); - case 1: return new Square(xVal, yVal, dim); - case 2: return new Line(xVal, yVal, dim); + case 1: return new Line(xVal, yVal, dim); } } } class Circle extends Shape { - private static Color color = Color.RED; Circle(int xVal, int yVal, int dim) { super(xVal, yVal, dim); } + private static Color color = Color.RED; @Override public void setColor(Color newColor) { color = newColor; } @Override public Color getColor() { return color; } } -class Square extends Shape { - private static Color color = Color.RED; - Square(int xVal, int yVal, int dim) { +class Line extends Shape { + Line(int xVal, int yVal, int dim) { super(xVal, yVal, dim); } + private static Color color = Color.RED; @Override public void setColor(Color newColor) { color = newColor; } @Override public Color getColor() { return color; } -} - -class Line extends Shape { - private static Color color = Color.RED; public static void serializeStaticState(ObjectOutputStream os) - throws IOException { os.writeObject(color); } + throws IOException { + os.writeObject(color); + } public static void deserializeStaticState(ObjectInputStream os) throws IOException, ClassNotFoundException { color = (Color)os.readObject(); } - Line(int xVal, int yVal, int dim) { - super(xVal, yVal, dim); - } - @Override public void setColor(Color newColor) { - color = newColor; - } - @Override public Color getColor() { return color; } } public class AStoreCADState { public static void main(String[] args) { List> shapeTypes = - Arrays.asList( - Circle.class, Square.class, Line.class); - List shapes = IntStream.range(0, 10) + Arrays.asList(Circle.class, Line.class); + List shapes = IntStream.range(0, 5) .mapToObj(i -> Shape.randomFactory()) .collect(Collectors.toList()); // Set all the static colors to GREEN: shapes.forEach(s -> s.setColor(Color.GREEN)); - // Save the state vector: + // Serialize everything to CADState.dat: try( ObjectOutputStream out = new ObjectOutputStream( @@ -106,15 +95,10 @@ public static void main(String[] args) { } } /* Output: -[class CircleColor[GREEN] xPos[58] yPos[55] dim[93] -, class SquareColor[GREEN] xPos[61] yPos[61] dim[29] -, class LineColor[GREEN] xPos[68] yPos[0] dim[22] -, class CircleColor[GREEN] xPos[7] yPos[88] dim[28] -, class SquareColor[GREEN] xPos[51] yPos[89] dim[9] -, class LineColor[GREEN] xPos[78] yPos[98] dim[61] -, class CircleColor[GREEN] xPos[20] yPos[58] dim[16] -, class SquareColor[GREEN] xPos[40] yPos[11] dim[22] -, class LineColor[GREEN] xPos[4] yPos[83] dim[6] -, class CircleColor[GREEN] xPos[75] yPos[10] dim[42] -] +[ +class Circle GREEN xPos[58] yPos[55] dim[93], +class Line GREEN xPos[61] yPos[61] dim[29], +class Circle GREEN xPos[68] yPos[0] dim[22], +class Line GREEN xPos[7] yPos[88] dim[28], +class Circle GREEN xPos[51] yPos[89] dim[9]] */ diff --git a/serialization/RecoverCADState.java b/serialization/RecoverCADState.java index b27da662e..3c4bec35d 100644 --- a/serialization/RecoverCADState.java +++ b/serialization/RecoverCADState.java @@ -19,8 +19,7 @@ public static void main(String[] args) { List> shapeTypes = (List>)in.readObject(); Line.deserializeStaticState(in); - List shapes = - (List)in.readObject(); + List shapes = (List)in.readObject(); System.out.println(shapes); } catch(IOException | ClassNotFoundException e) { throw new RuntimeException(e); @@ -28,15 +27,10 @@ public static void main(String[] args) { } } /* Output: -[class CircleColor[RED] xPos[58] yPos[55] dim[93] -, class SquareColor[RED] xPos[61] yPos[61] dim[29] -, class LineColor[GREEN] xPos[68] yPos[0] dim[22] -, class CircleColor[RED] xPos[7] yPos[88] dim[28] -, class SquareColor[RED] xPos[51] yPos[89] dim[9] -, class LineColor[GREEN] xPos[78] yPos[98] dim[61] -, class CircleColor[RED] xPos[20] yPos[58] dim[16] -, class SquareColor[RED] xPos[40] yPos[11] dim[22] -, class LineColor[GREEN] xPos[4] yPos[83] dim[6] -, class CircleColor[RED] xPos[75] yPos[10] dim[42] -] +[ +class Circle RED xPos[58] yPos[55] dim[93], +class Line GREEN xPos[61] yPos[61] dim[29], +class Circle RED xPos[68] yPos[0] dim[22], +class Line GREEN xPos[7] yPos[88] dim[28], +class Circle RED xPos[51] yPos[89] dim[9]] */ diff --git a/streams/StreamOfRandoms.java b/streams/StreamOfRandoms.java index 6b83b83ba..07efa25e0 100644 --- a/streams/StreamOfRandoms.java +++ b/streams/StreamOfRandoms.java @@ -15,6 +15,5 @@ public static void main(String[] args) { } } /* Output: -58 -1 55 93 -1 61 61 29 -1 68 0 22 7 -1 88 28 51 89 9 --1 +58 -1 55 93 -1 61 61 29 -1 68 0 22 7 -1 88 28 51 89 9 -1 */ diff --git a/strings/BackSlashes.java b/strings/BackSlashes.java new file mode 100644 index 000000000..6363defcc --- /dev/null +++ b/strings/BackSlashes.java @@ -0,0 +1,26 @@ +// strings/BackSlashes.java +// (c)2021 MindView LLC: see Copyright.txt +// We make no guarantees that this code is fit for any purpose. +// Visit http://OnJava8.com for more book information. + +public class BackSlashes { + public static void main(String[] args) { + String one = "\\"; + String two = "\\\\"; + String three = "\\\\\\"; + System.out.println(one); + System.out.println(two); + System.out.println(three); + System.out.println(one.matches("\\\\")); + System.out.println(two.matches("\\\\\\\\")); + System.out.println(three.matches("\\\\\\\\\\\\")); + } +} +/* Output: +\ +\\ +\\\ +true +true +true +*/ diff --git a/strings/IntegerMatch.java b/strings/IntegerMatch.java index c951a2cf9..822c5d4c6 100644 --- a/strings/IntegerMatch.java +++ b/strings/IntegerMatch.java @@ -2,13 +2,17 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. +import java.util.stream.*; public class IntegerMatch { public static void main(String[] args) { - System.out.println("-1234".matches("-?\\d+")); - System.out.println("5678".matches("-?\\d+")); - System.out.println("+911".matches("-?\\d+")); - System.out.println("+911".matches("(-|\\+)?\\d+")); + String possiblyMinus = "-?\\d+"; + Stream.of( + "-1234".matches(possiblyMinus), + "5678".matches(possiblyMinus), + "+911".matches(possiblyMinus), + "+911".matches("(-|\\+)?\\d+") + ).forEach(System.out::println); } } /* Output: diff --git a/strings/JGrep.java b/strings/JGrep.java index 946e8ff63..368fd13ef 100644 --- a/strings/JGrep.java +++ b/strings/JGrep.java @@ -4,7 +4,7 @@ // Visit http://OnJava8.com for more book information. // A very simple version of the "grep" program // {java JGrep -// WhitherStringBuilder.java 'return|for|String'} +// WhitherStringBuilder.java "return|for|String"} import java.util.regex.*; import java.nio.file.*; import java.util.stream.*; @@ -18,19 +18,33 @@ public class JGrep { System.exit(0); } Pattern p = Pattern.compile(args[1]); - // Iterate through the lines of the input file: - int index = 0; Matcher m = p.matcher(""); - for(String line : - Files.readAllLines(Paths.get(args[0]))) { - m.reset(line); - while(m.find()) - System.out.println(index++ + ": " + - m.group() + ": " + m.start()); - } + // Iterate through the lines of the input file: + Files.readAllLines(Paths.get(args[0])).forEach( + line -> { + m.reset(line); + while(m.find()) + System.out.println( + m.group() + ": " + m.start()); + } + ); } } /* Output: -0: for: 4 -1: for: 4 +String: 18 +String: 20 +String: 9 +String: 25 +String: 4 +for: 4 +String: 8 +return: 4 +String: 9 +String: 25 +String: 4 +String: 31 +for: 4 +String: 8 +return: 4 +String: 20 */ diff --git a/validating/SimpleDebugging.java b/validating/SimpleDebugging.java index 721820e74..609e8e7d5 100644 --- a/validating/SimpleDebugging.java +++ b/validating/SimpleDebugging.java @@ -23,18 +23,3 @@ public static void main(String[] args) { foo1(); } } -/* Output: -In foo1 -In foo2 -In foo3 -___[ Error Output ]___ -Exception in thread "main" -java.lang.ArithmeticException: / by zero - at -SimpleDebugging.foo3(SimpleDebugging.java:17) - at -SimpleDebugging.foo2(SimpleDebugging.java:11) - at SimpleDebugging.foo1(SimpleDebugging.java:7) - at -SimpleDebugging.main(SimpleDebugging.java:20) -*/ From 7bf3a4c7b75ca6cca0a5651edf11ea0e9ec7fd5f Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Sun, 7 Nov 2021 17:50:15 -0700 Subject: [PATCH 45/46] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 73131ecd0..ad462ebc0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ includes tests to verify that the code in the book is correct. > NOTE: Do not attempt to use JDK 16 or greater with gradle. > This produces a `BUG!` message from Gradle, which is broken for those versions. -> To test new Java features in JDK 16 or 17 you must compile and run those examples by hand. ## Contents From ade1d5ef122bdfc1320370e2fde7a62245e26d41 Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Tue, 14 Dec 2021 12:38:46 -0700 Subject: [PATCH 46/46] Further Updates prior to releasing Version 2.0 of book --- .../ApplesAndOrangesWithoutGenerics.java | 2 +- collections/AsListInference.java | 4 + concurrent/PSP2.txt | 10 - concurrent/primes.txt | 100000 --------------- files/AddAndSubtractPaths.java | 13 +- files/FileSystemDemo.java | 8 +- files/PartsOfPaths.java | 2 +- files/PathAnalysis.java | 6 +- files/PathInfo.java | 39 +- functional/MethodReferences.java | 1 - generics/coffee/CoffeeSupplier.java | 2 +- newio/data.txt | 1 - references/ImmutableStrings.java | 25 - references/Stringer.java | 22 - streams/RandomGenerators.java | 8 +- 15 files changed, 46 insertions(+), 100097 deletions(-) delete mode 100644 concurrent/PSP2.txt delete mode 100644 concurrent/primes.txt delete mode 100644 newio/data.txt delete mode 100644 references/ImmutableStrings.java delete mode 100644 references/Stringer.java diff --git a/collections/ApplesAndOrangesWithoutGenerics.java b/collections/ApplesAndOrangesWithoutGenerics.java index 6ca4a6f4b..4cbe23073 100644 --- a/collections/ApplesAndOrangesWithoutGenerics.java +++ b/collections/ApplesAndOrangesWithoutGenerics.java @@ -24,7 +24,7 @@ public static void main(String[] args) { apples.add(new Orange()); for(Object apple : apples) { ((Apple) apple).id(); - // Orange is detected only at run time + // Orange is detected only at runtime } } } diff --git a/collections/AsListInference.java b/collections/AsListInference.java index e4b825447..b25ac8e61 100644 --- a/collections/AsListInference.java +++ b/collections/AsListInference.java @@ -16,19 +16,23 @@ public static void main(String[] args) { List snow1 = Arrays.asList( new Crusty(), new Slush(), new Powder()); //- snow1.add(new Heavy()); // Exception + //- snow1.remove(0); // Exception List snow2 = Arrays.asList( new Light(), new Heavy()); //- snow2.add(new Slush()); // Exception + //- snow2.remove(0); // Exception List snow3 = new ArrayList<>(); Collections.addAll(snow3, new Light(), new Heavy(), new Powder()); snow3.add(new Crusty()); + snow3.remove(0); // Hint with explicit type argument specification: List snow4 = Arrays.asList( new Light(), new Heavy(), new Slush()); //- snow4.add(new Powder()); // Exception + //- snow4.remove(0); // Exception } } diff --git a/concurrent/PSP2.txt b/concurrent/PSP2.txt deleted file mode 100644 index f206148e4..000000000 --- a/concurrent/PSP2.txt +++ /dev/null @@ -1,10 +0,0 @@ -0: main -1: main -2: main -3: main -4: main -5: main -6: main -7: main -8: main -9: main diff --git a/concurrent/primes.txt b/concurrent/primes.txt deleted file mode 100644 index 6dc8a58ab..000000000 --- a/concurrent/primes.txt +++ /dev/null @@ -1,100000 +0,0 @@ -2 -3 -5 -7 -11 -13 -17 -19 -23 -29 -31 -37 -41 -43 -47 -53 -59 -61 -67 -71 -73 -79 -83 -89 -97 -101 -103 -107 -109 -113 -127 -131 -137 -139 -149 -151 -157 -163 -167 -173 -179 -181 -191 -193 -197 -199 -211 -223 -227 -229 -233 -239 -241 -251 -257 -263 -269 -271 -277 -281 -283 -293 -307 -311 -313 -317 -331 -337 -347 -349 -353 -359 -367 -373 -379 -383 -389 -397 -401 -409 -419 -421 -431 -433 -439 -443 -449 -457 -461 -463 -467 -479 -487 -491 -499 -503 -509 -521 -523 -541 -547 -557 -563 -569 -571 -577 -587 -593 -599 -601 -607 -613 -617 -619 -631 -641 -643 -647 -653 -659 -661 -673 -677 -683 -691 -701 -709 -719 -727 -733 -739 -743 -751 -757 -761 -769 -773 -787 -797 -809 -811 -821 -823 -827 -829 -839 -853 -857 -859 -863 -877 -881 -883 -887 -907 -911 -919 -929 -937 -941 -947 -953 -967 -971 -977 -983 -991 -997 -1009 -1013 -1019 -1021 -1031 -1033 -1039 -1049 -1051 -1061 -1063 -1069 -1087 -1091 -1093 -1097 -1103 -1109 -1117 -1123 -1129 -1151 -1153 -1163 -1171 -1181 -1187 -1193 -1201 -1213 -1217 -1223 -1229 -1231 -1237 -1249 -1259 -1277 -1279 -1283 -1289 -1291 -1297 -1301 -1303 -1307 -1319 -1321 -1327 -1361 -1367 -1373 -1381 -1399 -1409 -1423 -1427 -1429 -1433 -1439 -1447 -1451 -1453 -1459 -1471 -1481 -1483 -1487 -1489 -1493 -1499 -1511 -1523 -1531 -1543 -1549 -1553 -1559 -1567 -1571 -1579 -1583 -1597 -1601 -1607 -1609 -1613 -1619 -1621 -1627 -1637 -1657 -1663 -1667 -1669 -1693 -1697 -1699 -1709 -1721 -1723 -1733 -1741 -1747 -1753 -1759 -1777 -1783 -1787 -1789 -1801 -1811 -1823 -1831 -1847 -1861 -1867 -1871 -1873 -1877 -1879 -1889 -1901 -1907 -1913 -1931 -1933 -1949 -1951 -1973 -1979 -1987 -1993 -1997 -1999 -2003 -2011 -2017 -2027 -2029 -2039 -2053 -2063 -2069 -2081 -2083 -2087 -2089 -2099 -2111 -2113 -2129 -2131 -2137 -2141 -2143 -2153 -2161 -2179 -2203 -2207 -2213 -2221 -2237 -2239 -2243 -2251 -2267 -2269 -2273 -2281 -2287 -2293 -2297 -2309 -2311 -2333 -2339 -2341 -2347 -2351 -2357 -2371 -2377 -2381 -2383 -2389 -2393 -2399 -2411 -2417 -2423 -2437 -2441 -2447 -2459 -2467 -2473 -2477 -2503 -2521 -2531 -2539 -2543 -2549 -2551 -2557 -2579 -2591 -2593 -2609 -2617 -2621 -2633 -2647 -2657 -2659 -2663 -2671 -2677 -2683 -2687 -2689 -2693 -2699 -2707 -2711 -2713 -2719 -2729 -2731 -2741 -2749 -2753 -2767 -2777 -2789 -2791 -2797 -2801 -2803 -2819 -2833 -2837 -2843 -2851 -2857 -2861 -2879 -2887 -2897 -2903 -2909 -2917 -2927 -2939 -2953 -2957 -2963 -2969 -2971 -2999 -3001 -3011 -3019 -3023 -3037 -3041 -3049 -3061 -3067 -3079 -3083 -3089 -3109 -3119 -3121 -3137 -3163 -3167 -3169 -3181 -3187 -3191 -3203 -3209 -3217 -3221 -3229 -3251 -3253 -3257 -3259 -3271 -3299 -3301 -3307 -3313 -3319 -3323 -3329 -3331 -3343 -3347 -3359 -3361 -3371 -3373 -3389 -3391 -3407 -3413 -3433 -3449 -3457 -3461 -3463 -3467 -3469 -3491 -3499 -3511 -3517 -3527 -3529 -3533 -3539 -3541 -3547 -3557 -3559 -3571 -3581 -3583 -3593 -3607 -3613 -3617 -3623 -3631 -3637 -3643 -3659 -3671 -3673 -3677 -3691 -3697 -3701 -3709 -3719 -3727 -3733 -3739 -3761 -3767 -3769 -3779 -3793 -3797 -3803 -3821 -3823 -3833 -3847 -3851 -3853 -3863 -3877 -3881 -3889 -3907 -3911 -3917 -3919 -3923 -3929 -3931 -3943 -3947 -3967 -3989 -4001 -4003 -4007 -4013 -4019 -4021 -4027 -4049 -4051 -4057 -4073 -4079 -4091 -4093 -4099 -4111 -4127 -4129 -4133 -4139 -4153 -4157 -4159 -4177 -4201 -4211 -4217 -4219 -4229 -4231 -4241 -4243 -4253 -4259 -4261 -4271 -4273 -4283 -4289 -4297 -4327 -4337 -4339 -4349 -4357 -4363 -4373 -4391 -4397 -4409 -4421 -4423 -4441 -4447 -4451 -4457 -4463 -4481 -4483 -4493 -4507 -4513 -4517 -4519 -4523 -4547 -4549 -4561 -4567 -4583 -4591 -4597 -4603 -4621 -4637 -4639 -4643 -4649 -4651 -4657 -4663 -4673 -4679 -4691 -4703 -4721 -4723 -4729 -4733 -4751 -4759 -4783 -4787 -4789 -4793 -4799 -4801 -4813 -4817 -4831 -4861 -4871 -4877 -4889 -4903 -4909 -4919 -4931 -4933 -4937 -4943 -4951 -4957 -4967 -4969 -4973 -4987 -4993 -4999 -5003 -5009 -5011 -5021 -5023 -5039 -5051 -5059 -5077 -5081 -5087 -5099 -5101 -5107 -5113 -5119 -5147 -5153 -5167 -5171 -5179 -5189 -5197 -5209 -5227 -5231 -5233 -5237 -5261 -5273 -5279 -5281 -5297 -5303 -5309 -5323 -5333 -5347 -5351 -5381 -5387 -5393 -5399 -5407 -5413 -5417 -5419 -5431 -5437 -5441 -5443 -5449 -5471 -5477 -5479 -5483 -5501 -5503 -5507 -5519 -5521 -5527 -5531 -5557 -5563 -5569 -5573 -5581 -5591 -5623 -5639 -5641 -5647 -5651 -5653 -5657 -5659 -5669 -5683 -5689 -5693 -5701 -5711 -5717 -5737 -5741 -5743 -5749 -5779 -5783 -5791 -5801 -5807 -5813 -5821 -5827 -5839 -5843 -5849 -5851 -5857 -5861 -5867 -5869 -5879 -5881 -5897 -5903 -5923 -5927 -5939 -5953 -5981 -5987 -6007 -6011 -6029 -6037 -6043 -6047 -6053 -6067 -6073 -6079 -6089 -6091 -6101 -6113 -6121 -6131 -6133 -6143 -6151 -6163 -6173 -6197 -6199 -6203 -6211 -6217 -6221 -6229 -6247 -6257 -6263 -6269 -6271 -6277 -6287 -6299 -6301 -6311 -6317 -6323 -6329 -6337 -6343 -6353 -6359 -6361 -6367 -6373 -6379 -6389 -6397 -6421 -6427 -6449 -6451 -6469 -6473 -6481 -6491 -6521 -6529 -6547 -6551 -6553 -6563 -6569 -6571 -6577 -6581 -6599 -6607 -6619 -6637 -6653 -6659 -6661 -6673 -6679 -6689 -6691 -6701 -6703 -6709 -6719 -6733 -6737 -6761 -6763 -6779 -6781 -6791 -6793 -6803 -6823 -6827 -6829 -6833 -6841 -6857 -6863 -6869 -6871 -6883 -6899 -6907 -6911 -6917 -6947 -6949 -6959 -6961 -6967 -6971 -6977 -6983 -6991 -6997 -7001 -7013 -7019 -7027 -7039 -7043 -7057 -7069 -7079 -7103 -7109 -7121 -7127 -7129 -7151 -7159 -7177 -7187 -7193 -7207 -7211 -7213 -7219 -7229 -7237 -7243 -7247 -7253 -7283 -7297 -7307 -7309 -7321 -7331 -7333 -7349 -7351 -7369 -7393 -7411 -7417 -7433 -7451 -7457 -7459 -7477 -7481 -7487 -7489 -7499 -7507 -7517 -7523 -7529 -7537 -7541 -7547 -7549 -7559 -7561 -7573 -7577 -7583 -7589 -7591 -7603 -7607 -7621 -7639 -7643 -7649 -7669 -7673 -7681 -7687 -7691 -7699 -7703 -7717 -7723 -7727 -7741 -7753 -7757 -7759 -7789 -7793 -7817 -7823 -7829 -7841 -7853 -7867 -7873 -7877 -7879 -7883 -7901 -7907 -7919 -7927 -7933 -7937 -7949 -7951 -7963 -7993 -8009 -8011 -8017 -8039 -8053 -8059 -8069 -8081 -8087 -8089 -8093 -8101 -8111 -8117 -8123 -8147 -8161 -8167 -8171 -8179 -8191 -8209 -8219 -8221 -8231 -8233 -8237 -8243 -8263 -8269 -8273 -8287 -8291 -8293 -8297 -8311 -8317 -8329 -8353 -8363 -8369 -8377 -8387 -8389 -8419 -8423 -8429 -8431 -8443 -8447 -8461 -8467 -8501 -8513 -8521 -8527 -8537 -8539 -8543 -8563 -8573 -8581 -8597 -8599 -8609 -8623 -8627 -8629 -8641 -8647 -8663 -8669 -8677 -8681 -8689 -8693 -8699 -8707 -8713 -8719 -8731 -8737 -8741 -8747 -8753 -8761 -8779 -8783 -8803 -8807 -8819 -8821 -8831 -8837 -8839 -8849 -8861 -8863 -8867 -8887 -8893 -8923 -8929 -8933 -8941 -8951 -8963 -8969 -8971 -8999 -9001 -9007 -9011 -9013 -9029 -9041 -9043 -9049 -9059 -9067 -9091 -9103 -9109 -9127 -9133 -9137 -9151 -9157 -9161 -9173 -9181 -9187 -9199 -9203 -9209 -9221 -9227 -9239 -9241 -9257 -9277 -9281 -9283 -9293 -9311 -9319 -9323 -9337 -9341 -9343 -9349 -9371 -9377 -9391 -9397 -9403 -9413 -9419 -9421 -9431 -9433 -9437 -9439 -9461 -9463 -9467 -9473 -9479 -9491 -9497 -9511 -9521 -9533 -9539 -9547 -9551 -9587 -9601 -9613 -9619 -9623 -9629 -9631 -9643 -9649 -9661 -9677 -9679 -9689 -9697 -9719 -9721 -9733 -9739 -9743 -9749 -9767 -9769 -9781 -9787 -9791 -9803 -9811 -9817 -9829 -9833 -9839 -9851 -9857 -9859 -9871 -9883 -9887 -9901 -9907 -9923 -9929 -9931 -9941 -9949 -9967 -9973 -10007 -10009 -10037 -10039 -10061 -10067 -10069 -10079 -10091 -10093 -10099 -10103 -10111 -10133 -10139 -10141 -10151 -10159 -10163 -10169 -10177 -10181 -10193 -10211 -10223 -10243 -10247 -10253 -10259 -10267 -10271 -10273 -10289 -10301 -10303 -10313 -10321 -10331 -10333 -10337 -10343 -10357 -10369 -10391 -10399 -10427 -10429 -10433 -10453 -10457 -10459 -10463 -10477 -10487 -10499 -10501 -10513 -10529 -10531 -10559 -10567 -10589 -10597 -10601 -10607 -10613 -10627 -10631 -10639 -10651 -10657 -10663 -10667 -10687 -10691 -10709 -10711 -10723 -10729 -10733 -10739 -10753 -10771 -10781 -10789 -10799 -10831 -10837 -10847 -10853 -10859 -10861 -10867 -10883 -10889 -10891 -10903 -10909 -10937 -10939 -10949 -10957 -10973 -10979 -10987 -10993 -11003 -11027 -11047 -11057 -11059 -11069 -11071 -11083 -11087 -11093 -11113 -11117 -11119 -11131 -11149 -11159 -11161 -11171 -11173 -11177 -11197 -11213 -11239 -11243 -11251 -11257 -11261 -11273 -11279 -11287 -11299 -11311 -11317 -11321 -11329 -11351 -11353 -11369 -11383 -11393 -11399 -11411 -11423 -11437 -11443 -11447 -11467 -11471 -11483 -11489 -11491 -11497 -11503 -11519 -11527 -11549 -11551 -11579 -11587 -11593 -11597 -11617 -11621 -11633 -11657 -11677 -11681 -11689 -11699 -11701 -11717 -11719 -11731 -11743 -11777 -11779 -11783 -11789 -11801 -11807 -11813 -11821 -11827 -11831 -11833 -11839 -11863 -11867 -11887 -11897 -11903 -11909 -11923 -11927 -11933 -11939 -11941 -11953 -11959 -11969 -11971 -11981 -11987 -12007 -12011 -12037 -12041 -12043 -12049 -12071 -12073 -12097 -12101 -12107 -12109 -12113 -12119 -12143 -12149 -12157 -12161 -12163 -12197 -12203 -12211 -12227 -12239 -12241 -12251 -12253 -12263 -12269 -12277 -12281 -12289 -12301 -12323 -12329 -12343 -12347 -12373 -12377 -12379 -12391 -12401 -12409 -12413 -12421 -12433 -12437 -12451 -12457 -12473 -12479 -12487 -12491 -12497 -12503 -12511 -12517 -12527 -12539 -12541 -12547 -12553 -12569 -12577 -12583 -12589 -12601 -12611 -12613 -12619 -12637 -12641 -12647 -12653 -12659 -12671 -12689 -12697 -12703 -12713 -12721 -12739 -12743 -12757 -12763 -12781 -12791 -12799 -12809 -12821 -12823 -12829 -12841 -12853 -12889 -12893 -12899 -12907 -12911 -12917 -12919 -12923 -12941 -12953 -12959 -12967 -12973 -12979 -12983 -13001 -13003 -13007 -13009 -13033 -13037 -13043 -13049 -13063 -13093 -13099 -13103 -13109 -13121 -13127 -13147 -13151 -13159 -13163 -13171 -13177 -13183 -13187 -13217 -13219 -13229 -13241 -13249 -13259 -13267 -13291 -13297 -13309 -13313 -13327 -13331 -13337 -13339 -13367 -13381 -13397 -13399 -13411 -13417 -13421 -13441 -13451 -13457 -13463 -13469 -13477 -13487 -13499 -13513 -13523 -13537 -13553 -13567 -13577 -13591 -13597 -13613 -13619 -13627 -13633 -13649 -13669 -13679 -13681 -13687 -13691 -13693 -13697 -13709 -13711 -13721 -13723 -13729 -13751 -13757 -13759 -13763 -13781 -13789 -13799 -13807 -13829 -13831 -13841 -13859 -13873 -13877 -13879 -13883 -13901 -13903 -13907 -13913 -13921 -13931 -13933 -13963 -13967 -13997 -13999 -14009 -14011 -14029 -14033 -14051 -14057 -14071 -14081 -14083 -14087 -14107 -14143 -14149 -14153 -14159 -14173 -14177 -14197 -14207 -14221 -14243 -14249 -14251 -14281 -14293 -14303 -14321 -14323 -14327 -14341 -14347 -14369 -14387 -14389 -14401 -14407 -14411 -14419 -14423 -14431 -14437 -14447 -14449 -14461 -14479 -14489 -14503 -14519 -14533 -14537 -14543 -14549 -14551 -14557 -14561 -14563 -14591 -14593 -14621 -14627 -14629 -14633 -14639 -14653 -14657 -14669 -14683 -14699 -14713 -14717 -14723 -14731 -14737 -14741 -14747 -14753 -14759 -14767 -14771 -14779 -14783 -14797 -14813 -14821 -14827 -14831 -14843 -14851 -14867 -14869 -14879 -14887 -14891 -14897 -14923 -14929 -14939 -14947 -14951 -14957 -14969 -14983 -15013 -15017 -15031 -15053 -15061 -15073 -15077 -15083 -15091 -15101 -15107 -15121 -15131 -15137 -15139 -15149 -15161 -15173 -15187 -15193 -15199 -15217 -15227 -15233 -15241 -15259 -15263 -15269 -15271 -15277 -15287 -15289 -15299 -15307 -15313 -15319 -15329 -15331 -15349 -15359 -15361 -15373 -15377 -15383 -15391 -15401 -15413 -15427 -15439 -15443 -15451 -15461 -15467 -15473 -15493 -15497 -15511 -15527 -15541 -15551 -15559 -15569 -15581 -15583 -15601 -15607 -15619 -15629 -15641 -15643 -15647 -15649 -15661 -15667 -15671 -15679 -15683 -15727 -15731 -15733 -15737 -15739 -15749 -15761 -15767 -15773 -15787 -15791 -15797 -15803 -15809 -15817 -15823 -15859 -15877 -15881 -15887 -15889 -15901 -15907 -15913 -15919 -15923 -15937 -15959 -15971 -15973 -15991 -16001 -16007 -16033 -16057 -16061 -16063 -16067 -16069 -16073 -16087 -16091 -16097 -16103 -16111 -16127 -16139 -16141 -16183 -16187 -16189 -16193 -16217 -16223 -16229 -16231 -16249 -16253 -16267 -16273 -16301 -16319 -16333 -16339 -16349 -16361 -16363 -16369 -16381 -16411 -16417 -16421 -16427 -16433 -16447 -16451 -16453 -16477 -16481 -16487 -16493 -16519 -16529 -16547 -16553 -16561 -16567 -16573 -16603 -16607 -16619 -16631 -16633 -16649 -16651 -16657 -16661 -16673 -16691 -16693 -16699 -16703 -16729 -16741 -16747 -16759 -16763 -16787 -16811 -16823 -16829 -16831 -16843 -16871 -16879 -16883 -16889 -16901 -16903 -16921 -16927 -16931 -16937 -16943 -16963 -16979 -16981 -16987 -16993 -17011 -17021 -17027 -17029 -17033 -17041 -17047 -17053 -17077 -17093 -17099 -17107 -17117 -17123 -17137 -17159 -17167 -17183 -17189 -17191 -17203 -17207 -17209 -17231 -17239 -17257 -17291 -17293 -17299 -17317 -17321 -17327 -17333 -17341 -17351 -17359 -17377 -17383 -17387 -17389 -17393 -17401 -17417 -17419 -17431 -17443 -17449 -17467 -17471 -17477 -17483 -17489 -17491 -17497 -17509 -17519 -17539 -17551 -17569 -17573 -17579 -17581 -17597 -17599 -17609 -17623 -17627 -17657 -17659 -17669 -17681 -17683 -17707 -17713 -17729 -17737 -17747 -17749 -17761 -17783 -17789 -17791 -17807 -17827 -17837 -17839 -17851 -17863 -17881 -17891 -17903 -17909 -17911 -17921 -17923 -17929 -17939 -17957 -17959 -17971 -17977 -17981 -17987 -17989 -18013 -18041 -18043 -18047 -18049 -18059 -18061 -18077 -18089 -18097 -18119 -18121 -18127 -18131 -18133 -18143 -18149 -18169 -18181 -18191 -18199 -18211 -18217 -18223 -18229 -18233 -18251 -18253 -18257 -18269 -18287 -18289 -18301 -18307 -18311 -18313 -18329 -18341 -18353 -18367 -18371 -18379 -18397 -18401 -18413 -18427 -18433 -18439 -18443 -18451 -18457 -18461 -18481 -18493 -18503 -18517 -18521 -18523 -18539 -18541 -18553 -18583 -18587 -18593 -18617 -18637 -18661 -18671 -18679 -18691 -18701 -18713 -18719 -18731 -18743 -18749 -18757 -18773 -18787 -18793 -18797 -18803 -18839 -18859 -18869 -18899 -18911 -18913 -18917 -18919 -18947 -18959 -18973 -18979 -19001 -19009 -19013 -19031 -19037 -19051 -19069 -19073 -19079 -19081 -19087 -19121 -19139 -19141 -19157 -19163 -19181 -19183 -19207 -19211 -19213 -19219 -19231 -19237 -19249 -19259 -19267 -19273 -19289 -19301 -19309 -19319 -19333 -19373 -19379 -19381 -19387 -19391 -19403 -19417 -19421 -19423 -19427 -19429 -19433 -19441 -19447 -19457 -19463 -19469 -19471 -19477 -19483 -19489 -19501 -19507 -19531 -19541 -19543 -19553 -19559 -19571 -19577 -19583 -19597 -19603 -19609 -19661 -19681 -19687 -19697 -19699 -19709 -19717 -19727 -19739 -19751 -19753 -19759 -19763 -19777 -19793 -19801 -19813 -19819 -19841 -19843 -19853 -19861 -19867 -19889 -19891 -19913 -19919 -19927 -19937 -19949 -19961 -19963 -19973 -19979 -19991 -19993 -19997 -20011 -20021 -20023 -20029 -20047 -20051 -20063 -20071 -20089 -20101 -20107 -20113 -20117 -20123 -20129 -20143 -20147 -20149 -20161 -20173 -20177 -20183 -20201 -20219 -20231 -20233 -20249 -20261 -20269 -20287 -20297 -20323 -20327 -20333 -20341 -20347 -20353 -20357 -20359 -20369 -20389 -20393 -20399 -20407 -20411 -20431 -20441 -20443 -20477 -20479 -20483 -20507 -20509 -20521 -20533 -20543 -20549 -20551 -20563 -20593 -20599 -20611 -20627 -20639 -20641 -20663 -20681 -20693 -20707 -20717 -20719 -20731 -20743 -20747 -20749 -20753 -20759 -20771 -20773 -20789 -20807 -20809 -20849 -20857 -20873 -20879 -20887 -20897 -20899 -20903 -20921 -20929 -20939 -20947 -20959 -20963 -20981 -20983 -21001 -21011 -21013 -21017 -21019 -21023 -21031 -21059 -21061 -21067 -21089 -21101 -21107 -21121 -21139 -21143 -21149 -21157 -21163 -21169 -21179 -21187 -21191 -21193 -21211 -21221 -21227 -21247 -21269 -21277 -21283 -21313 -21317 -21319 -21323 -21341 -21347 -21377 -21379 -21383 -21391 -21397 -21401 -21407 -21419 -21433 -21467 -21481 -21487 -21491 -21493 -21499 -21503 -21517 -21521 -21523 -21529 -21557 -21559 -21563 -21569 -21577 -21587 -21589 -21599 -21601 -21611 -21613 -21617 -21647 -21649 -21661 -21673 -21683 -21701 -21713 -21727 -21737 -21739 -21751 -21757 -21767 -21773 -21787 -21799 -21803 -21817 -21821 -21839 -21841 -21851 -21859 -21863 -21871 -21881 -21893 -21911 -21929 -21937 -21943 -21961 -21977 -21991 -21997 -22003 -22013 -22027 -22031 -22037 -22039 -22051 -22063 -22067 -22073 -22079 -22091 -22093 -22109 -22111 -22123 -22129 -22133 -22147 -22153 -22157 -22159 -22171 -22189 -22193 -22229 -22247 -22259 -22271 -22273 -22277 -22279 -22283 -22291 -22303 -22307 -22343 -22349 -22367 -22369 -22381 -22391 -22397 -22409 -22433 -22441 -22447 -22453 -22469 -22481 -22483 -22501 -22511 -22531 -22541 -22543 -22549 -22567 -22571 -22573 -22613 -22619 -22621 -22637 -22639 -22643 -22651 -22669 -22679 -22691 -22697 -22699 -22709 -22717 -22721 -22727 -22739 -22741 -22751 -22769 -22777 -22783 -22787 -22807 -22811 -22817 -22853 -22859 -22861 -22871 -22877 -22901 -22907 -22921 -22937 -22943 -22961 -22963 -22973 -22993 -23003 -23011 -23017 -23021 -23027 -23029 -23039 -23041 -23053 -23057 -23059 -23063 -23071 -23081 -23087 -23099 -23117 -23131 -23143 -23159 -23167 -23173 -23189 -23197 -23201 -23203 -23209 -23227 -23251 -23269 -23279 -23291 -23293 -23297 -23311 -23321 -23327 -23333 -23339 -23357 -23369 -23371 -23399 -23417 -23431 -23447 -23459 -23473 -23497 -23509 -23531 -23537 -23539 -23549 -23557 -23561 -23563 -23567 -23581 -23593 -23599 -23603 -23609 -23623 -23627 -23629 -23633 -23663 -23669 -23671 -23677 -23687 -23689 -23719 -23741 -23743 -23747 -23753 -23761 -23767 -23773 -23789 -23801 -23813 -23819 -23827 -23831 -23833 -23857 -23869 -23873 -23879 -23887 -23893 -23899 -23909 -23911 -23917 -23929 -23957 -23971 -23977 -23981 -23993 -24001 -24007 -24019 -24023 -24029 -24043 -24049 -24061 -24071 -24077 -24083 -24091 -24097 -24103 -24107 -24109 -24113 -24121 -24133 -24137 -24151 -24169 -24179 -24181 -24197 -24203 -24223 -24229 -24239 -24247 -24251 -24281 -24317 -24329 -24337 -24359 -24371 -24373 -24379 -24391 -24407 -24413 -24419 -24421 -24439 -24443 -24469 -24473 -24481 -24499 -24509 -24517 -24527 -24533 -24547 -24551 -24571 -24593 -24611 -24623 -24631 -24659 -24671 -24677 -24683 -24691 -24697 -24709 -24733 -24749 -24763 -24767 -24781 -24793 -24799 -24809 -24821 -24841 -24847 -24851 -24859 -24877 -24889 -24907 -24917 -24919 -24923 -24943 -24953 -24967 -24971 -24977 -24979 -24989 -25013 -25031 -25033 -25037 -25057 -25073 -25087 -25097 -25111 -25117 -25121 -25127 -25147 -25153 -25163 -25169 -25171 -25183 -25189 -25219 -25229 -25237 -25243 -25247 -25253 -25261 -25301 -25303 -25307 -25309 -25321 -25339 -25343 -25349 -25357 -25367 -25373 -25391 -25409 -25411 -25423 -25439 -25447 -25453 -25457 -25463 -25469 -25471 -25523 -25537 -25541 -25561 -25577 -25579 -25583 -25589 -25601 -25603 -25609 -25621 -25633 -25639 -25643 -25657 -25667 -25673 -25679 -25693 -25703 -25717 -25733 -25741 -25747 -25759 -25763 -25771 -25793 -25799 -25801 -25819 -25841 -25847 -25849 -25867 -25873 -25889 -25903 -25913 -25919 -25931 -25933 -25939 -25943 -25951 -25969 -25981 -25997 -25999 -26003 -26017 -26021 -26029 -26041 -26053 -26083 -26099 -26107 -26111 -26113 -26119 -26141 -26153 -26161 -26171 -26177 -26183 -26189 -26203 -26209 -26227 -26237 -26249 -26251 -26261 -26263 -26267 -26293 -26297 -26309 -26317 -26321 -26339 -26347 -26357 -26371 -26387 -26393 -26399 -26407 -26417 -26423 -26431 -26437 -26449 -26459 -26479 -26489 -26497 -26501 -26513 -26539 -26557 -26561 -26573 -26591 -26597 -26627 -26633 -26641 -26647 -26669 -26681 -26683 -26687 -26693 -26699 -26701 -26711 -26713 -26717 -26723 -26729 -26731 -26737 -26759 -26777 -26783 -26801 -26813 -26821 -26833 -26839 -26849 -26861 -26863 -26879 -26881 -26891 -26893 -26903 -26921 -26927 -26947 -26951 -26953 -26959 -26981 -26987 -26993 -27011 -27017 -27031 -27043 -27059 -27061 -27067 -27073 -27077 -27091 -27103 -27107 -27109 -27127 -27143 -27179 -27191 -27197 -27211 -27239 -27241 -27253 -27259 -27271 -27277 -27281 -27283 -27299 -27329 -27337 -27361 -27367 -27397 -27407 -27409 -27427 -27431 -27437 -27449 -27457 -27479 -27481 -27487 -27509 -27527 -27529 -27539 -27541 -27551 -27581 -27583 -27611 -27617 -27631 -27647 -27653 -27673 -27689 -27691 -27697 -27701 -27733 -27737 -27739 -27743 -27749 -27751 -27763 -27767 -27773 -27779 -27791 -27793 -27799 -27803 -27809 -27817 -27823 -27827 -27847 -27851 -27883 -27893 -27901 -27917 -27919 -27941 -27943 -27947 -27953 -27961 -27967 -27983 -27997 -28001 -28019 -28027 -28031 -28051 -28057 -28069 -28081 -28087 -28097 -28099 -28109 -28111 -28123 -28151 -28163 -28181 -28183 -28201 -28211 -28219 -28229 -28277 -28279 -28283 -28289 -28297 -28307 -28309 -28319 -28349 -28351 -28387 -28393 -28403 -28409 -28411 -28429 -28433 -28439 -28447 -28463 -28477 -28493 -28499 -28513 -28517 -28537 -28541 -28547 -28549 -28559 -28571 -28573 -28579 -28591 -28597 -28603 -28607 -28619 -28621 -28627 -28631 -28643 -28649 -28657 -28661 -28663 -28669 -28687 -28697 -28703 -28711 -28723 -28729 -28751 -28753 -28759 -28771 -28789 -28793 -28807 -28813 -28817 -28837 -28843 -28859 -28867 -28871 -28879 -28901 -28909 -28921 -28927 -28933 -28949 -28961 -28979 -29009 -29017 -29021 -29023 -29027 -29033 -29059 -29063 -29077 -29101 -29123 -29129 -29131 -29137 -29147 -29153 -29167 -29173 -29179 -29191 -29201 -29207 -29209 -29221 -29231 -29243 -29251 -29269 -29287 -29297 -29303 -29311 -29327 -29333 -29339 -29347 -29363 -29383 -29387 -29389 -29399 -29401 -29411 -29423 -29429 -29437 -29443 -29453 -29473 -29483 -29501 -29527 -29531 -29537 -29567 -29569 -29573 -29581 -29587 -29599 -29611 -29629 -29633 -29641 -29663 -29669 -29671 -29683 -29717 -29723 -29741 -29753 -29759 -29761 -29789 -29803 -29819 -29833 -29837 -29851 -29863 -29867 -29873 -29879 -29881 -29917 -29921 -29927 -29947 -29959 -29983 -29989 -30011 -30013 -30029 -30047 -30059 -30071 -30089 -30091 -30097 -30103 -30109 -30113 -30119 -30133 -30137 -30139 -30161 -30169 -30181 -30187 -30197 -30203 -30211 -30223 -30241 -30253 -30259 -30269 -30271 -30293 -30307 -30313 -30319 -30323 -30341 -30347 -30367 -30389 -30391 -30403 -30427 -30431 -30449 -30467 -30469 -30491 -30493 -30497 -30509 -30517 -30529 -30539 -30553 -30557 -30559 -30577 -30593 -30631 -30637 -30643 -30649 -30661 -30671 -30677 -30689 -30697 -30703 -30707 -30713 -30727 -30757 -30763 -30773 -30781 -30803 -30809 -30817 -30829 -30839 -30841 -30851 -30853 -30859 -30869 -30871 -30881 -30893 -30911 -30931 -30937 -30941 -30949 -30971 -30977 -30983 -31013 -31019 -31033 -31039 -31051 -31063 -31069 -31079 -31081 -31091 -31121 -31123 -31139 -31147 -31151 -31153 -31159 -31177 -31181 -31183 -31189 -31193 -31219 -31223 -31231 -31237 -31247 -31249 -31253 -31259 -31267 -31271 -31277 -31307 -31319 -31321 -31327 -31333 -31337 -31357 -31379 -31387 -31391 -31393 -31397 -31469 -31477 -31481 -31489 -31511 -31513 -31517 -31531 -31541 -31543 -31547 -31567 -31573 -31583 -31601 -31607 -31627 -31643 -31649 -31657 -31663 -31667 -31687 -31699 -31721 -31723 -31727 -31729 -31741 -31751 -31769 -31771 -31793 -31799 -31817 -31847 -31849 -31859 -31873 -31883 -31891 -31907 -31957 -31963 -31973 -31981 -31991 -32003 -32009 -32027 -32029 -32051 -32057 -32059 -32063 -32069 -32077 -32083 -32089 -32099 -32117 -32119 -32141 -32143 -32159 -32173 -32183 -32189 -32191 -32203 -32213 -32233 -32237 -32251 -32257 -32261 -32297 -32299 -32303 -32309 -32321 -32323 -32327 -32341 -32353 -32359 -32363 -32369 -32371 -32377 -32381 -32401 -32411 -32413 -32423 -32429 -32441 -32443 -32467 -32479 -32491 -32497 -32503 -32507 -32531 -32533 -32537 -32561 -32563 -32569 -32573 -32579 -32587 -32603 -32609 -32611 -32621 -32633 -32647 -32653 -32687 -32693 -32707 -32713 -32717 -32719 -32749 -32771 -32779 -32783 -32789 -32797 -32801 -32803 -32831 -32833 -32839 -32843 -32869 -32887 -32909 -32911 -32917 -32933 -32939 -32941 -32957 -32969 -32971 -32983 -32987 -32993 -32999 -33013 -33023 -33029 -33037 -33049 -33053 -33071 -33073 -33083 -33091 -33107 -33113 -33119 -33149 -33151 -33161 -33179 -33181 -33191 -33199 -33203 -33211 -33223 -33247 -33287 -33289 -33301 -33311 -33317 -33329 -33331 -33343 -33347 -33349 -33353 -33359 -33377 -33391 -33403 -33409 -33413 -33427 -33457 -33461 -33469 -33479 -33487 -33493 -33503 -33521 -33529 -33533 -33547 -33563 -33569 -33577 -33581 -33587 -33589 -33599 -33601 -33613 -33617 -33619 -33623 -33629 -33637 -33641 -33647 -33679 -33703 -33713 -33721 -33739 -33749 -33751 -33757 -33767 -33769 -33773 -33791 -33797 -33809 -33811 -33827 -33829 -33851 -33857 -33863 -33871 -33889 -33893 -33911 -33923 -33931 -33937 -33941 -33961 -33967 -33997 -34019 -34031 -34033 -34039 -34057 -34061 -34123 -34127 -34129 -34141 -34147 -34157 -34159 -34171 -34183 -34211 -34213 -34217 -34231 -34253 -34259 -34261 -34267 -34273 -34283 -34297 -34301 -34303 -34313 -34319 -34327 -34337 -34351 -34361 -34367 -34369 -34381 -34403 -34421 -34429 -34439 -34457 -34469 -34471 -34483 -34487 -34499 -34501 -34511 -34513 -34519 -34537 -34543 -34549 -34583 -34589 -34591 -34603 -34607 -34613 -34631 -34649 -34651 -34667 -34673 -34679 -34687 -34693 -34703 -34721 -34729 -34739 -34747 -34757 -34759 -34763 -34781 -34807 -34819 -34841 -34843 -34847 -34849 -34871 -34877 -34883 -34897 -34913 -34919 -34939 -34949 -34961 -34963 -34981 -35023 -35027 -35051 -35053 -35059 -35069 -35081 -35083 -35089 -35099 -35107 -35111 -35117 -35129 -35141 -35149 -35153 -35159 -35171 -35201 -35221 -35227 -35251 -35257 -35267 -35279 -35281 -35291 -35311 -35317 -35323 -35327 -35339 -35353 -35363 -35381 -35393 -35401 -35407 -35419 -35423 -35437 -35447 -35449 -35461 -35491 -35507 -35509 -35521 -35527 -35531 -35533 -35537 -35543 -35569 -35573 -35591 -35593 -35597 -35603 -35617 -35671 -35677 -35729 -35731 -35747 -35753 -35759 -35771 -35797 -35801 -35803 -35809 -35831 -35837 -35839 -35851 -35863 -35869 -35879 -35897 -35899 -35911 -35923 -35933 -35951 -35963 -35969 -35977 -35983 -35993 -35999 -36007 -36011 -36013 -36017 -36037 -36061 -36067 -36073 -36083 -36097 -36107 -36109 -36131 -36137 -36151 -36161 -36187 -36191 -36209 -36217 -36229 -36241 -36251 -36263 -36269 -36277 -36293 -36299 -36307 -36313 -36319 -36341 -36343 -36353 -36373 -36383 -36389 -36433 -36451 -36457 -36467 -36469 -36473 -36479 -36493 -36497 -36523 -36527 -36529 -36541 -36551 -36559 -36563 -36571 -36583 -36587 -36599 -36607 -36629 -36637 -36643 -36653 -36671 -36677 -36683 -36691 -36697 -36709 -36713 -36721 -36739 -36749 -36761 -36767 -36779 -36781 -36787 -36791 -36793 -36809 -36821 -36833 -36847 -36857 -36871 -36877 -36887 -36899 -36901 -36913 -36919 -36923 -36929 -36931 -36943 -36947 -36973 -36979 -36997 -37003 -37013 -37019 -37021 -37039 -37049 -37057 -37061 -37087 -37097 -37117 -37123 -37139 -37159 -37171 -37181 -37189 -37199 -37201 -37217 -37223 -37243 -37253 -37273 -37277 -37307 -37309 -37313 -37321 -37337 -37339 -37357 -37361 -37363 -37369 -37379 -37397 -37409 -37423 -37441 -37447 -37463 -37483 -37489 -37493 -37501 -37507 -37511 -37517 -37529 -37537 -37547 -37549 -37561 -37567 -37571 -37573 -37579 -37589 -37591 -37607 -37619 -37633 -37643 -37649 -37657 -37663 -37691 -37693 -37699 -37717 -37747 -37781 -37783 -37799 -37811 -37813 -37831 -37847 -37853 -37861 -37871 -37879 -37889 -37897 -37907 -37951 -37957 -37963 -37967 -37987 -37991 -37993 -37997 -38011 -38039 -38047 -38053 -38069 -38083 -38113 -38119 -38149 -38153 -38167 -38177 -38183 -38189 -38197 -38201 -38219 -38231 -38237 -38239 -38261 -38273 -38281 -38287 -38299 -38303 -38317 -38321 -38327 -38329 -38333 -38351 -38371 -38377 -38393 -38431 -38447 -38449 -38453 -38459 -38461 -38501 -38543 -38557 -38561 -38567 -38569 -38593 -38603 -38609 -38611 -38629 -38639 -38651 -38653 -38669 -38671 -38677 -38693 -38699 -38707 -38711 -38713 -38723 -38729 -38737 -38747 -38749 -38767 -38783 -38791 -38803 -38821 -38833 -38839 -38851 -38861 -38867 -38873 -38891 -38903 -38917 -38921 -38923 -38933 -38953 -38959 -38971 -38977 -38993 -39019 -39023 -39041 -39043 -39047 -39079 -39089 -39097 -39103 -39107 -39113 -39119 -39133 -39139 -39157 -39161 -39163 -39181 -39191 -39199 -39209 -39217 -39227 -39229 -39233 -39239 -39241 -39251 -39293 -39301 -39313 -39317 -39323 -39341 -39343 -39359 -39367 -39371 -39373 -39383 -39397 -39409 -39419 -39439 -39443 -39451 -39461 -39499 -39503 -39509 -39511 -39521 -39541 -39551 -39563 -39569 -39581 -39607 -39619 -39623 -39631 -39659 -39667 -39671 -39679 -39703 -39709 -39719 -39727 -39733 -39749 -39761 -39769 -39779 -39791 -39799 -39821 -39827 -39829 -39839 -39841 -39847 -39857 -39863 -39869 -39877 -39883 -39887 -39901 -39929 -39937 -39953 -39971 -39979 -39983 -39989 -40009 -40013 -40031 -40037 -40039 -40063 -40087 -40093 -40099 -40111 -40123 -40127 -40129 -40151 -40153 -40163 -40169 -40177 -40189 -40193 -40213 -40231 -40237 -40241 -40253 -40277 -40283 -40289 -40343 -40351 -40357 -40361 -40387 -40423 -40427 -40429 -40433 -40459 -40471 -40483 -40487 -40493 -40499 -40507 -40519 -40529 -40531 -40543 -40559 -40577 -40583 -40591 -40597 -40609 -40627 -40637 -40639 -40693 -40697 -40699 -40709 -40739 -40751 -40759 -40763 -40771 -40787 -40801 -40813 -40819 -40823 -40829 -40841 -40847 -40849 -40853 -40867 -40879 -40883 -40897 -40903 -40927 -40933 -40939 -40949 -40961 -40973 -40993 -41011 -41017 -41023 -41039 -41047 -41051 -41057 -41077 -41081 -41113 -41117 -41131 -41141 -41143 -41149 -41161 -41177 -41179 -41183 -41189 -41201 -41203 -41213 -41221 -41227 -41231 -41233 -41243 -41257 -41263 -41269 -41281 -41299 -41333 -41341 -41351 -41357 -41381 -41387 -41389 -41399 -41411 -41413 -41443 -41453 -41467 -41479 -41491 -41507 -41513 -41519 -41521 -41539 -41543 -41549 -41579 -41593 -41597 -41603 -41609 -41611 -41617 -41621 -41627 -41641 -41647 -41651 -41659 -41669 -41681 -41687 -41719 -41729 -41737 -41759 -41761 -41771 -41777 -41801 -41809 -41813 -41843 -41849 -41851 -41863 -41879 -41887 -41893 -41897 -41903 -41911 -41927 -41941 -41947 -41953 -41957 -41959 -41969 -41981 -41983 -41999 -42013 -42017 -42019 -42023 -42043 -42061 -42071 -42073 -42083 -42089 -42101 -42131 -42139 -42157 -42169 -42179 -42181 -42187 -42193 -42197 -42209 -42221 -42223 -42227 -42239 -42257 -42281 -42283 -42293 -42299 -42307 -42323 -42331 -42337 -42349 -42359 -42373 -42379 -42391 -42397 -42403 -42407 -42409 -42433 -42437 -42443 -42451 -42457 -42461 -42463 -42467 -42473 -42487 -42491 -42499 -42509 -42533 -42557 -42569 -42571 -42577 -42589 -42611 -42641 -42643 -42649 -42667 -42677 -42683 -42689 -42697 -42701 -42703 -42709 -42719 -42727 -42737 -42743 -42751 -42767 -42773 -42787 -42793 -42797 -42821 -42829 -42839 -42841 -42853 -42859 -42863 -42899 -42901 -42923 -42929 -42937 -42943 -42953 -42961 -42967 -42979 -42989 -43003 -43013 -43019 -43037 -43049 -43051 -43063 -43067 -43093 -43103 -43117 -43133 -43151 -43159 -43177 -43189 -43201 -43207 -43223 -43237 -43261 -43271 -43283 -43291 -43313 -43319 -43321 -43331 -43391 -43397 -43399 -43403 -43411 -43427 -43441 -43451 -43457 -43481 -43487 -43499 -43517 -43541 -43543 -43573 -43577 -43579 -43591 -43597 -43607 -43609 -43613 -43627 -43633 -43649 -43651 -43661 -43669 -43691 -43711 -43717 -43721 -43753 -43759 -43777 -43781 -43783 -43787 -43789 -43793 -43801 -43853 -43867 -43889 -43891 -43913 -43933 -43943 -43951 -43961 -43963 -43969 -43973 -43987 -43991 -43997 -44017 -44021 -44027 -44029 -44041 -44053 -44059 -44071 -44087 -44089 -44101 -44111 -44119 -44123 -44129 -44131 -44159 -44171 -44179 -44189 -44201 -44203 -44207 -44221 -44249 -44257 -44263 -44267 -44269 -44273 -44279 -44281 -44293 -44351 -44357 -44371 -44381 -44383 -44389 -44417 -44449 -44453 -44483 -44491 -44497 -44501 -44507 -44519 -44531 -44533 -44537 -44543 -44549 -44563 -44579 -44587 -44617 -44621 -44623 -44633 -44641 -44647 -44651 -44657 -44683 -44687 -44699 -44701 -44711 -44729 -44741 -44753 -44771 -44773 -44777 -44789 -44797 -44809 -44819 -44839 -44843 -44851 -44867 -44879 -44887 -44893 -44909 -44917 -44927 -44939 -44953 -44959 -44963 -44971 -44983 -44987 -45007 -45013 -45053 -45061 -45077 -45083 -45119 -45121 -45127 -45131 -45137 -45139 -45161 -45179 -45181 -45191 -45197 -45233 -45247 -45259 -45263 -45281 -45289 -45293 -45307 -45317 -45319 -45329 -45337 -45341 -45343 -45361 -45377 -45389 -45403 -45413 -45427 -45433 -45439 -45481 -45491 -45497 -45503 -45523 -45533 -45541 -45553 -45557 -45569 -45587 -45589 -45599 -45613 -45631 -45641 -45659 -45667 -45673 -45677 -45691 -45697 -45707 -45737 -45751 -45757 -45763 -45767 -45779 -45817 -45821 -45823 -45827 -45833 -45841 -45853 -45863 -45869 -45887 -45893 -45943 -45949 -45953 -45959 -45971 -45979 -45989 -46021 -46027 -46049 -46051 -46061 -46073 -46091 -46093 -46099 -46103 -46133 -46141 -46147 -46153 -46171 -46181 -46183 -46187 -46199 -46219 -46229 -46237 -46261 -46271 -46273 -46279 -46301 -46307 -46309 -46327 -46337 -46349 -46351 -46381 -46399 -46411 -46439 -46441 -46447 -46451 -46457 -46471 -46477 -46489 -46499 -46507 -46511 -46523 -46549 -46559 -46567 -46573 -46589 -46591 -46601 -46619 -46633 -46639 -46643 -46649 -46663 -46679 -46681 -46687 -46691 -46703 -46723 -46727 -46747 -46751 -46757 -46769 -46771 -46807 -46811 -46817 -46819 -46829 -46831 -46853 -46861 -46867 -46877 -46889 -46901 -46919 -46933 -46957 -46993 -46997 -47017 -47041 -47051 -47057 -47059 -47087 -47093 -47111 -47119 -47123 -47129 -47137 -47143 -47147 -47149 -47161 -47189 -47207 -47221 -47237 -47251 -47269 -47279 -47287 -47293 -47297 -47303 -47309 -47317 -47339 -47351 -47353 -47363 -47381 -47387 -47389 -47407 -47417 -47419 -47431 -47441 -47459 -47491 -47497 -47501 -47507 -47513 -47521 -47527 -47533 -47543 -47563 -47569 -47581 -47591 -47599 -47609 -47623 -47629 -47639 -47653 -47657 -47659 -47681 -47699 -47701 -47711 -47713 -47717 -47737 -47741 -47743 -47777 -47779 -47791 -47797 -47807 -47809 -47819 -47837 -47843 -47857 -47869 -47881 -47903 -47911 -47917 -47933 -47939 -47947 -47951 -47963 -47969 -47977 -47981 -48017 -48023 -48029 -48049 -48073 -48079 -48091 -48109 -48119 -48121 -48131 -48157 -48163 -48179 -48187 -48193 -48197 -48221 -48239 -48247 -48259 -48271 -48281 -48299 -48311 -48313 -48337 -48341 -48353 -48371 -48383 -48397 -48407 -48409 -48413 -48437 -48449 -48463 -48473 -48479 -48481 -48487 -48491 -48497 -48523 -48527 -48533 -48539 -48541 -48563 -48571 -48589 -48593 -48611 -48619 -48623 -48647 -48649 -48661 -48673 -48677 -48679 -48731 -48733 -48751 -48757 -48761 -48767 -48779 -48781 -48787 -48799 -48809 -48817 -48821 -48823 -48847 -48857 -48859 -48869 -48871 -48883 -48889 -48907 -48947 -48953 -48973 -48989 -48991 -49003 -49009 -49019 -49031 -49033 -49037 -49043 -49057 -49069 -49081 -49103 -49109 -49117 -49121 -49123 -49139 -49157 -49169 -49171 -49177 -49193 -49199 -49201 -49207 -49211 -49223 -49253 -49261 -49277 -49279 -49297 -49307 -49331 -49333 -49339 -49363 -49367 -49369 -49391 -49393 -49409 -49411 -49417 -49429 -49433 -49451 -49459 -49463 -49477 -49481 -49499 -49523 -49529 -49531 -49537 -49547 -49549 -49559 -49597 -49603 -49613 -49627 -49633 -49639 -49663 -49667 -49669 -49681 -49697 -49711 -49727 -49739 -49741 -49747 -49757 -49783 -49787 -49789 -49801 -49807 -49811 -49823 -49831 -49843 -49853 -49871 -49877 -49891 -49919 -49921 -49927 -49937 -49939 -49943 -49957 -49991 -49993 -49999 -50021 -50023 -50033 -50047 -50051 -50053 -50069 -50077 -50087 -50093 -50101 -50111 -50119 -50123 -50129 -50131 -50147 -50153 -50159 -50177 -50207 -50221 -50227 -50231 -50261 -50263 -50273 -50287 -50291 -50311 -50321 -50329 -50333 -50341 -50359 -50363 -50377 -50383 -50387 -50411 -50417 -50423 -50441 -50459 -50461 -50497 -50503 -50513 -50527 -50539 -50543 -50549 -50551 -50581 -50587 -50591 -50593 -50599 -50627 -50647 -50651 -50671 -50683 -50707 -50723 -50741 -50753 -50767 -50773 -50777 -50789 -50821 -50833 -50839 -50849 -50857 -50867 -50873 -50891 -50893 -50909 -50923 -50929 -50951 -50957 -50969 -50971 -50989 -50993 -51001 -51031 -51043 -51047 -51059 -51061 -51071 -51109 -51131 -51133 -51137 -51151 -51157 -51169 -51193 -51197 -51199 -51203 -51217 -51229 -51239 -51241 -51257 -51263 -51283 -51287 -51307 -51329 -51341 -51343 -51347 -51349 -51361 -51383 -51407 -51413 -51419 -51421 -51427 -51431 -51437 -51439 -51449 -51461 -51473 -51479 -51481 -51487 -51503 -51511 -51517 -51521 -51539 -51551 -51563 -51577 -51581 -51593 -51599 -51607 -51613 -51631 -51637 -51647 -51659 -51673 -51679 -51683 -51691 -51713 -51719 -51721 -51749 -51767 -51769 -51787 -51797 -51803 -51817 -51827 -51829 -51839 -51853 -51859 -51869 -51871 -51893 -51899 -51907 -51913 -51929 -51941 -51949 -51971 -51973 -51977 -51991 -52009 -52021 -52027 -52051 -52057 -52067 -52069 -52081 -52103 -52121 -52127 -52147 -52153 -52163 -52177 -52181 -52183 -52189 -52201 -52223 -52237 -52249 -52253 -52259 -52267 -52289 -52291 -52301 -52313 -52321 -52361 -52363 -52369 -52379 -52387 -52391 -52433 -52453 -52457 -52489 -52501 -52511 -52517 -52529 -52541 -52543 -52553 -52561 -52567 -52571 -52579 -52583 -52609 -52627 -52631 -52639 -52667 -52673 -52691 -52697 -52709 -52711 -52721 -52727 -52733 -52747 -52757 -52769 -52783 -52807 -52813 -52817 -52837 -52859 -52861 -52879 -52883 -52889 -52901 -52903 -52919 -52937 -52951 -52957 -52963 -52967 -52973 -52981 -52999 -53003 -53017 -53047 -53051 -53069 -53077 -53087 -53089 -53093 -53101 -53113 -53117 -53129 -53147 -53149 -53161 -53171 -53173 -53189 -53197 -53201 -53231 -53233 -53239 -53267 -53269 -53279 -53281 -53299 -53309 -53323 -53327 -53353 -53359 -53377 -53381 -53401 -53407 -53411 -53419 -53437 -53441 -53453 -53479 -53503 -53507 -53527 -53549 -53551 -53569 -53591 -53593 -53597 -53609 -53611 -53617 -53623 -53629 -53633 -53639 -53653 -53657 -53681 -53693 -53699 -53717 -53719 -53731 -53759 -53773 -53777 -53783 -53791 -53813 -53819 -53831 -53849 -53857 -53861 -53881 -53887 -53891 -53897 -53899 -53917 -53923 -53927 -53939 -53951 -53959 -53987 -53993 -54001 -54011 -54013 -54037 -54049 -54059 -54083 -54091 -54101 -54121 -54133 -54139 -54151 -54163 -54167 -54181 -54193 -54217 -54251 -54269 -54277 -54287 -54293 -54311 -54319 -54323 -54331 -54347 -54361 -54367 -54371 -54377 -54401 -54403 -54409 -54413 -54419 -54421 -54437 -54443 -54449 -54469 -54493 -54497 -54499 -54503 -54517 -54521 -54539 -54541 -54547 -54559 -54563 -54577 -54581 -54583 -54601 -54617 -54623 -54629 -54631 -54647 -54667 -54673 -54679 -54709 -54713 -54721 -54727 -54751 -54767 -54773 -54779 -54787 -54799 -54829 -54833 -54851 -54869 -54877 -54881 -54907 -54917 -54919 -54941 -54949 -54959 -54973 -54979 -54983 -55001 -55009 -55021 -55049 -55051 -55057 -55061 -55073 -55079 -55103 -55109 -55117 -55127 -55147 -55163 -55171 -55201 -55207 -55213 -55217 -55219 -55229 -55243 -55249 -55259 -55291 -55313 -55331 -55333 -55337 -55339 -55343 -55351 -55373 -55381 -55399 -55411 -55439 -55441 -55457 -55469 -55487 -55501 -55511 -55529 -55541 -55547 -55579 -55589 -55603 -55609 -55619 -55621 -55631 -55633 -55639 -55661 -55663 -55667 -55673 -55681 -55691 -55697 -55711 -55717 -55721 -55733 -55763 -55787 -55793 -55799 -55807 -55813 -55817 -55819 -55823 -55829 -55837 -55843 -55849 -55871 -55889 -55897 -55901 -55903 -55921 -55927 -55931 -55933 -55949 -55967 -55987 -55997 -56003 -56009 -56039 -56041 -56053 -56081 -56087 -56093 -56099 -56101 -56113 -56123 -56131 -56149 -56167 -56171 -56179 -56197 -56207 -56209 -56237 -56239 -56249 -56263 -56267 -56269 -56299 -56311 -56333 -56359 -56369 -56377 -56383 -56393 -56401 -56417 -56431 -56437 -56443 -56453 -56467 -56473 -56477 -56479 -56489 -56501 -56503 -56509 -56519 -56527 -56531 -56533 -56543 -56569 -56591 -56597 -56599 -56611 -56629 -56633 -56659 -56663 -56671 -56681 -56687 -56701 -56711 -56713 -56731 -56737 -56747 -56767 -56773 -56779 -56783 -56807 -56809 -56813 -56821 -56827 -56843 -56857 -56873 -56891 -56893 -56897 -56909 -56911 -56921 -56923 -56929 -56941 -56951 -56957 -56963 -56983 -56989 -56993 -56999 -57037 -57041 -57047 -57059 -57073 -57077 -57089 -57097 -57107 -57119 -57131 -57139 -57143 -57149 -57163 -57173 -57179 -57191 -57193 -57203 -57221 -57223 -57241 -57251 -57259 -57269 -57271 -57283 -57287 -57301 -57329 -57331 -57347 -57349 -57367 -57373 -57383 -57389 -57397 -57413 -57427 -57457 -57467 -57487 -57493 -57503 -57527 -57529 -57557 -57559 -57571 -57587 -57593 -57601 -57637 -57641 -57649 -57653 -57667 -57679 -57689 -57697 -57709 -57713 -57719 -57727 -57731 -57737 -57751 -57773 -57781 -57787 -57791 -57793 -57803 -57809 -57829 -57839 -57847 -57853 -57859 -57881 -57899 -57901 -57917 -57923 -57943 -57947 -57973 -57977 -57991 -58013 -58027 -58031 -58043 -58049 -58057 -58061 -58067 -58073 -58099 -58109 -58111 -58129 -58147 -58151 -58153 -58169 -58171 -58189 -58193 -58199 -58207 -58211 -58217 -58229 -58231 -58237 -58243 -58271 -58309 -58313 -58321 -58337 -58363 -58367 -58369 -58379 -58391 -58393 -58403 -58411 -58417 -58427 -58439 -58441 -58451 -58453 -58477 -58481 -58511 -58537 -58543 -58549 -58567 -58573 -58579 -58601 -58603 -58613 -58631 -58657 -58661 -58679 -58687 -58693 -58699 -58711 -58727 -58733 -58741 -58757 -58763 -58771 -58787 -58789 -58831 -58889 -58897 -58901 -58907 -58909 -58913 -58921 -58937 -58943 -58963 -58967 -58979 -58991 -58997 -59009 -59011 -59021 -59023 -59029 -59051 -59053 -59063 -59069 -59077 -59083 -59093 -59107 -59113 -59119 -59123 -59141 -59149 -59159 -59167 -59183 -59197 -59207 -59209 -59219 -59221 -59233 -59239 -59243 -59263 -59273 -59281 -59333 -59341 -59351 -59357 -59359 -59369 -59377 -59387 -59393 -59399 -59407 -59417 -59419 -59441 -59443 -59447 -59453 -59467 -59471 -59473 -59497 -59509 -59513 -59539 -59557 -59561 -59567 -59581 -59611 -59617 -59621 -59627 -59629 -59651 -59659 -59663 -59669 -59671 -59693 -59699 -59707 -59723 -59729 -59743 -59747 -59753 -59771 -59779 -59791 -59797 -59809 -59833 -59863 -59879 -59887 -59921 -59929 -59951 -59957 -59971 -59981 -59999 -60013 -60017 -60029 -60037 -60041 -60077 -60083 -60089 -60091 -60101 -60103 -60107 -60127 -60133 -60139 -60149 -60161 -60167 -60169 -60209 -60217 -60223 -60251 -60257 -60259 -60271 -60289 -60293 -60317 -60331 -60337 -60343 -60353 -60373 -60383 -60397 -60413 -60427 -60443 -60449 -60457 -60493 -60497 -60509 -60521 -60527 -60539 -60589 -60601 -60607 -60611 -60617 -60623 -60631 -60637 -60647 -60649 -60659 -60661 -60679 -60689 -60703 -60719 -60727 -60733 -60737 -60757 -60761 -60763 -60773 -60779 -60793 -60811 -60821 -60859 -60869 -60887 -60889 -60899 -60901 -60913 -60917 -60919 -60923 -60937 -60943 -60953 -60961 -61001 -61007 -61027 -61031 -61043 -61051 -61057 -61091 -61099 -61121 -61129 -61141 -61151 -61153 -61169 -61211 -61223 -61231 -61253 -61261 -61283 -61291 -61297 -61331 -61333 -61339 -61343 -61357 -61363 -61379 -61381 -61403 -61409 -61417 -61441 -61463 -61469 -61471 -61483 -61487 -61493 -61507 -61511 -61519 -61543 -61547 -61553 -61559 -61561 -61583 -61603 -61609 -61613 -61627 -61631 -61637 -61643 -61651 -61657 -61667 -61673 -61681 -61687 -61703 -61717 -61723 -61729 -61751 -61757 -61781 -61813 -61819 -61837 -61843 -61861 -61871 -61879 -61909 -61927 -61933 -61949 -61961 -61967 -61979 -61981 -61987 -61991 -62003 -62011 -62017 -62039 -62047 -62053 -62057 -62071 -62081 -62099 -62119 -62129 -62131 -62137 -62141 -62143 -62171 -62189 -62191 -62201 -62207 -62213 -62219 -62233 -62273 -62297 -62299 -62303 -62311 -62323 -62327 -62347 -62351 -62383 -62401 -62417 -62423 -62459 -62467 -62473 -62477 -62483 -62497 -62501 -62507 -62533 -62539 -62549 -62563 -62581 -62591 -62597 -62603 -62617 -62627 -62633 -62639 -62653 -62659 -62683 -62687 -62701 -62723 -62731 -62743 -62753 -62761 -62773 -62791 -62801 -62819 -62827 -62851 -62861 -62869 -62873 -62897 -62903 -62921 -62927 -62929 -62939 -62969 -62971 -62981 -62983 -62987 -62989 -63029 -63031 -63059 -63067 -63073 -63079 -63097 -63103 -63113 -63127 -63131 -63149 -63179 -63197 -63199 -63211 -63241 -63247 -63277 -63281 -63299 -63311 -63313 -63317 -63331 -63337 -63347 -63353 -63361 -63367 -63377 -63389 -63391 -63397 -63409 -63419 -63421 -63439 -63443 -63463 -63467 -63473 -63487 -63493 -63499 -63521 -63527 -63533 -63541 -63559 -63577 -63587 -63589 -63599 -63601 -63607 -63611 -63617 -63629 -63647 -63649 -63659 -63667 -63671 -63689 -63691 -63697 -63703 -63709 -63719 -63727 -63737 -63743 -63761 -63773 -63781 -63793 -63799 -63803 -63809 -63823 -63839 -63841 -63853 -63857 -63863 -63901 -63907 -63913 -63929 -63949 -63977 -63997 -64007 -64013 -64019 -64033 -64037 -64063 -64067 -64081 -64091 -64109 -64123 -64151 -64153 -64157 -64171 -64187 -64189 -64217 -64223 -64231 -64237 -64271 -64279 -64283 -64301 -64303 -64319 -64327 -64333 -64373 -64381 -64399 -64403 -64433 -64439 -64451 -64453 -64483 -64489 -64499 -64513 -64553 -64567 -64577 -64579 -64591 -64601 -64609 -64613 -64621 -64627 -64633 -64661 -64663 -64667 -64679 -64693 -64709 -64717 -64747 -64763 -64781 -64783 -64793 -64811 -64817 -64849 -64853 -64871 -64877 -64879 -64891 -64901 -64919 -64921 -64927 -64937 -64951 -64969 -64997 -65003 -65011 -65027 -65029 -65033 -65053 -65063 -65071 -65089 -65099 -65101 -65111 -65119 -65123 -65129 -65141 -65147 -65167 -65171 -65173 -65179 -65183 -65203 -65213 -65239 -65257 -65267 -65269 -65287 -65293 -65309 -65323 -65327 -65353 -65357 -65371 -65381 -65393 -65407 -65413 -65419 -65423 -65437 -65447 -65449 -65479 -65497 -65519 -65521 -65537 -65539 -65543 -65551 -65557 -65563 -65579 -65581 -65587 -65599 -65609 -65617 -65629 -65633 -65647 -65651 -65657 -65677 -65687 -65699 -65701 -65707 -65713 -65717 -65719 -65729 -65731 -65761 -65777 -65789 -65809 -65827 -65831 -65837 -65839 -65843 -65851 -65867 -65881 -65899 -65921 -65927 -65929 -65951 -65957 -65963 -65981 -65983 -65993 -66029 -66037 -66041 -66047 -66067 -66071 -66083 -66089 -66103 -66107 -66109 -66137 -66161 -66169 -66173 -66179 -66191 -66221 -66239 -66271 -66293 -66301 -66337 -66343 -66347 -66359 -66361 -66373 -66377 -66383 -66403 -66413 -66431 -66449 -66457 -66463 -66467 -66491 -66499 -66509 -66523 -66529 -66533 -66541 -66553 -66569 -66571 -66587 -66593 -66601 -66617 -66629 -66643 -66653 -66683 -66697 -66701 -66713 -66721 -66733 -66739 -66749 -66751 -66763 -66791 -66797 -66809 -66821 -66841 -66851 -66853 -66863 -66877 -66883 -66889 -66919 -66923 -66931 -66943 -66947 -66949 -66959 -66973 -66977 -67003 -67021 -67033 -67043 -67049 -67057 -67061 -67073 -67079 -67103 -67121 -67129 -67139 -67141 -67153 -67157 -67169 -67181 -67187 -67189 -67211 -67213 -67217 -67219 -67231 -67247 -67261 -67271 -67273 -67289 -67307 -67339 -67343 -67349 -67369 -67391 -67399 -67409 -67411 -67421 -67427 -67429 -67433 -67447 -67453 -67477 -67481 -67489 -67493 -67499 -67511 -67523 -67531 -67537 -67547 -67559 -67567 -67577 -67579 -67589 -67601 -67607 -67619 -67631 -67651 -67679 -67699 -67709 -67723 -67733 -67741 -67751 -67757 -67759 -67763 -67777 -67783 -67789 -67801 -67807 -67819 -67829 -67843 -67853 -67867 -67883 -67891 -67901 -67927 -67931 -67933 -67939 -67943 -67957 -67961 -67967 -67979 -67987 -67993 -68023 -68041 -68053 -68059 -68071 -68087 -68099 -68111 -68113 -68141 -68147 -68161 -68171 -68207 -68209 -68213 -68219 -68227 -68239 -68261 -68279 -68281 -68311 -68329 -68351 -68371 -68389 -68399 -68437 -68443 -68447 -68449 -68473 -68477 -68483 -68489 -68491 -68501 -68507 -68521 -68531 -68539 -68543 -68567 -68581 -68597 -68611 -68633 -68639 -68659 -68669 -68683 -68687 -68699 -68711 -68713 -68729 -68737 -68743 -68749 -68767 -68771 -68777 -68791 -68813 -68819 -68821 -68863 -68879 -68881 -68891 -68897 -68899 -68903 -68909 -68917 -68927 -68947 -68963 -68993 -69001 -69011 -69019 -69029 -69031 -69061 -69067 -69073 -69109 -69119 -69127 -69143 -69149 -69151 -69163 -69191 -69193 -69197 -69203 -69221 -69233 -69239 -69247 -69257 -69259 -69263 -69313 -69317 -69337 -69341 -69371 -69379 -69383 -69389 -69401 -69403 -69427 -69431 -69439 -69457 -69463 -69467 -69473 -69481 -69491 -69493 -69497 -69499 -69539 -69557 -69593 -69623 -69653 -69661 -69677 -69691 -69697 -69709 -69737 -69739 -69761 -69763 -69767 -69779 -69809 -69821 -69827 -69829 -69833 -69847 -69857 -69859 -69877 -69899 -69911 -69929 -69931 -69941 -69959 -69991 -69997 -70001 -70003 -70009 -70019 -70039 -70051 -70061 -70067 -70079 -70099 -70111 -70117 -70121 -70123 -70139 -70141 -70157 -70163 -70177 -70181 -70183 -70199 -70201 -70207 -70223 -70229 -70237 -70241 -70249 -70271 -70289 -70297 -70309 -70313 -70321 -70327 -70351 -70373 -70379 -70381 -70393 -70423 -70429 -70439 -70451 -70457 -70459 -70481 -70487 -70489 -70501 -70507 -70529 -70537 -70549 -70571 -70573 -70583 -70589 -70607 -70619 -70621 -70627 -70639 -70657 -70663 -70667 -70687 -70709 -70717 -70729 -70753 -70769 -70783 -70793 -70823 -70841 -70843 -70849 -70853 -70867 -70877 -70879 -70891 -70901 -70913 -70919 -70921 -70937 -70949 -70951 -70957 -70969 -70979 -70981 -70991 -70997 -70999 -71011 -71023 -71039 -71059 -71069 -71081 -71089 -71119 -71129 -71143 -71147 -71153 -71161 -71167 -71171 -71191 -71209 -71233 -71237 -71249 -71257 -71261 -71263 -71287 -71293 -71317 -71327 -71329 -71333 -71339 -71341 -71347 -71353 -71359 -71363 -71387 -71389 -71399 -71411 -71413 -71419 -71429 -71437 -71443 -71453 -71471 -71473 -71479 -71483 -71503 -71527 -71537 -71549 -71551 -71563 -71569 -71593 -71597 -71633 -71647 -71663 -71671 -71693 -71699 -71707 -71711 -71713 -71719 -71741 -71761 -71777 -71789 -71807 -71809 -71821 -71837 -71843 -71849 -71861 -71867 -71879 -71881 -71887 -71899 -71909 -71917 -71933 -71941 -71947 -71963 -71971 -71983 -71987 -71993 -71999 -72019 -72031 -72043 -72047 -72053 -72073 -72077 -72089 -72091 -72101 -72103 -72109 -72139 -72161 -72167 -72169 -72173 -72211 -72221 -72223 -72227 -72229 -72251 -72253 -72269 -72271 -72277 -72287 -72307 -72313 -72337 -72341 -72353 -72367 -72379 -72383 -72421 -72431 -72461 -72467 -72469 -72481 -72493 -72497 -72503 -72533 -72547 -72551 -72559 -72577 -72613 -72617 -72623 -72643 -72647 -72649 -72661 -72671 -72673 -72679 -72689 -72701 -72707 -72719 -72727 -72733 -72739 -72763 -72767 -72797 -72817 -72823 -72859 -72869 -72871 -72883 -72889 -72893 -72901 -72907 -72911 -72923 -72931 -72937 -72949 -72953 -72959 -72973 -72977 -72997 -73009 -73013 -73019 -73037 -73039 -73043 -73061 -73063 -73079 -73091 -73121 -73127 -73133 -73141 -73181 -73189 -73237 -73243 -73259 -73277 -73291 -73303 -73309 -73327 -73331 -73351 -73361 -73363 -73369 -73379 -73387 -73417 -73421 -73433 -73453 -73459 -73471 -73477 -73483 -73517 -73523 -73529 -73547 -73553 -73561 -73571 -73583 -73589 -73597 -73607 -73609 -73613 -73637 -73643 -73651 -73673 -73679 -73681 -73693 -73699 -73709 -73721 -73727 -73751 -73757 -73771 -73783 -73819 -73823 -73847 -73849 -73859 -73867 -73877 -73883 -73897 -73907 -73939 -73943 -73951 -73961 -73973 -73999 -74017 -74021 -74027 -74047 -74051 -74071 -74077 -74093 -74099 -74101 -74131 -74143 -74149 -74159 -74161 -74167 -74177 -74189 -74197 -74201 -74203 -74209 -74219 -74231 -74257 -74279 -74287 -74293 -74297 -74311 -74317 -74323 -74353 -74357 -74363 -74377 -74381 -74383 -74411 -74413 -74419 -74441 -74449 -74453 -74471 -74489 -74507 -74509 -74521 -74527 -74531 -74551 -74561 -74567 -74573 -74587 -74597 -74609 -74611 -74623 -74653 -74687 -74699 -74707 -74713 -74717 -74719 -74729 -74731 -74747 -74759 -74761 -74771 -74779 -74797 -74821 -74827 -74831 -74843 -74857 -74861 -74869 -74873 -74887 -74891 -74897 -74903 -74923 -74929 -74933 -74941 -74959 -75011 -75013 -75017 -75029 -75037 -75041 -75079 -75083 -75109 -75133 -75149 -75161 -75167 -75169 -75181 -75193 -75209 -75211 -75217 -75223 -75227 -75239 -75253 -75269 -75277 -75289 -75307 -75323 -75329 -75337 -75347 -75353 -75367 -75377 -75389 -75391 -75401 -75403 -75407 -75431 -75437 -75479 -75503 -75511 -75521 -75527 -75533 -75539 -75541 -75553 -75557 -75571 -75577 -75583 -75611 -75617 -75619 -75629 -75641 -75653 -75659 -75679 -75683 -75689 -75703 -75707 -75709 -75721 -75731 -75743 -75767 -75773 -75781 -75787 -75793 -75797 -75821 -75833 -75853 -75869 -75883 -75913 -75931 -75937 -75941 -75967 -75979 -75983 -75989 -75991 -75997 -76001 -76003 -76031 -76039 -76079 -76081 -76091 -76099 -76103 -76123 -76129 -76147 -76157 -76159 -76163 -76207 -76213 -76231 -76243 -76249 -76253 -76259 -76261 -76283 -76289 -76303 -76333 -76343 -76367 -76369 -76379 -76387 -76403 -76421 -76423 -76441 -76463 -76471 -76481 -76487 -76493 -76507 -76511 -76519 -76537 -76541 -76543 -76561 -76579 -76597 -76603 -76607 -76631 -76649 -76651 -76667 -76673 -76679 -76697 -76717 -76733 -76753 -76757 -76771 -76777 -76781 -76801 -76819 -76829 -76831 -76837 -76847 -76871 -76873 -76883 -76907 -76913 -76919 -76943 -76949 -76961 -76963 -76991 -77003 -77017 -77023 -77029 -77041 -77047 -77069 -77081 -77093 -77101 -77137 -77141 -77153 -77167 -77171 -77191 -77201 -77213 -77237 -77239 -77243 -77249 -77261 -77263 -77267 -77269 -77279 -77291 -77317 -77323 -77339 -77347 -77351 -77359 -77369 -77377 -77383 -77417 -77419 -77431 -77447 -77471 -77477 -77479 -77489 -77491 -77509 -77513 -77521 -77527 -77543 -77549 -77551 -77557 -77563 -77569 -77573 -77587 -77591 -77611 -77617 -77621 -77641 -77647 -77659 -77681 -77687 -77689 -77699 -77711 -77713 -77719 -77723 -77731 -77743 -77747 -77761 -77773 -77783 -77797 -77801 -77813 -77839 -77849 -77863 -77867 -77893 -77899 -77929 -77933 -77951 -77969 -77977 -77983 -77999 -78007 -78017 -78031 -78041 -78049 -78059 -78079 -78101 -78121 -78137 -78139 -78157 -78163 -78167 -78173 -78179 -78191 -78193 -78203 -78229 -78233 -78241 -78259 -78277 -78283 -78301 -78307 -78311 -78317 -78341 -78347 -78367 -78401 -78427 -78437 -78439 -78467 -78479 -78487 -78497 -78509 -78511 -78517 -78539 -78541 -78553 -78569 -78571 -78577 -78583 -78593 -78607 -78623 -78643 -78649 -78653 -78691 -78697 -78707 -78713 -78721 -78737 -78779 -78781 -78787 -78791 -78797 -78803 -78809 -78823 -78839 -78853 -78857 -78877 -78887 -78889 -78893 -78901 -78919 -78929 -78941 -78977 -78979 -78989 -79031 -79039 -79043 -79063 -79087 -79103 -79111 -79133 -79139 -79147 -79151 -79153 -79159 -79181 -79187 -79193 -79201 -79229 -79231 -79241 -79259 -79273 -79279 -79283 -79301 -79309 -79319 -79333 -79337 -79349 -79357 -79367 -79379 -79393 -79397 -79399 -79411 -79423 -79427 -79433 -79451 -79481 -79493 -79531 -79537 -79549 -79559 -79561 -79579 -79589 -79601 -79609 -79613 -79621 -79627 -79631 -79633 -79657 -79669 -79687 -79691 -79693 -79697 -79699 -79757 -79769 -79777 -79801 -79811 -79813 -79817 -79823 -79829 -79841 -79843 -79847 -79861 -79867 -79873 -79889 -79901 -79903 -79907 -79939 -79943 -79967 -79973 -79979 -79987 -79997 -79999 -80021 -80039 -80051 -80071 -80077 -80107 -80111 -80141 -80147 -80149 -80153 -80167 -80173 -80177 -80191 -80207 -80209 -80221 -80231 -80233 -80239 -80251 -80263 -80273 -80279 -80287 -80309 -80317 -80329 -80341 -80347 -80363 -80369 -80387 -80407 -80429 -80447 -80449 -80471 -80473 -80489 -80491 -80513 -80527 -80537 -80557 -80567 -80599 -80603 -80611 -80621 -80627 -80629 -80651 -80657 -80669 -80671 -80677 -80681 -80683 -80687 -80701 -80713 -80737 -80747 -80749 -80761 -80777 -80779 -80783 -80789 -80803 -80809 -80819 -80831 -80833 -80849 -80863 -80897 -80909 -80911 -80917 -80923 -80929 -80933 -80953 -80963 -80989 -81001 -81013 -81017 -81019 -81023 -81031 -81041 -81043 -81047 -81049 -81071 -81077 -81083 -81097 -81101 -81119 -81131 -81157 -81163 -81173 -81181 -81197 -81199 -81203 -81223 -81233 -81239 -81281 -81283 -81293 -81299 -81307 -81331 -81343 -81349 -81353 -81359 -81371 -81373 -81401 -81409 -81421 -81439 -81457 -81463 -81509 -81517 -81527 -81533 -81547 -81551 -81553 -81559 -81563 -81569 -81611 -81619 -81629 -81637 -81647 -81649 -81667 -81671 -81677 -81689 -81701 -81703 -81707 -81727 -81737 -81749 -81761 -81769 -81773 -81799 -81817 -81839 -81847 -81853 -81869 -81883 -81899 -81901 -81919 -81929 -81931 -81937 -81943 -81953 -81967 -81971 -81973 -82003 -82007 -82009 -82013 -82021 -82031 -82037 -82039 -82051 -82067 -82073 -82129 -82139 -82141 -82153 -82163 -82171 -82183 -82189 -82193 -82207 -82217 -82219 -82223 -82231 -82237 -82241 -82261 -82267 -82279 -82301 -82307 -82339 -82349 -82351 -82361 -82373 -82387 -82393 -82421 -82457 -82463 -82469 -82471 -82483 -82487 -82493 -82499 -82507 -82529 -82531 -82549 -82559 -82561 -82567 -82571 -82591 -82601 -82609 -82613 -82619 -82633 -82651 -82657 -82699 -82721 -82723 -82727 -82729 -82757 -82759 -82763 -82781 -82787 -82793 -82799 -82811 -82813 -82837 -82847 -82883 -82889 -82891 -82903 -82913 -82939 -82963 -82981 -82997 -83003 -83009 -83023 -83047 -83059 -83063 -83071 -83077 -83089 -83093 -83101 -83117 -83137 -83177 -83203 -83207 -83219 -83221 -83227 -83231 -83233 -83243 -83257 -83267 -83269 -83273 -83299 -83311 -83339 -83341 -83357 -83383 -83389 -83399 -83401 -83407 -83417 -83423 -83431 -83437 -83443 -83449 -83459 -83471 -83477 -83497 -83537 -83557 -83561 -83563 -83579 -83591 -83597 -83609 -83617 -83621 -83639 -83641 -83653 -83663 -83689 -83701 -83717 -83719 -83737 -83761 -83773 -83777 -83791 -83813 -83833 -83843 -83857 -83869 -83873 -83891 -83903 -83911 -83921 -83933 -83939 -83969 -83983 -83987 -84011 -84017 -84047 -84053 -84059 -84061 -84067 -84089 -84121 -84127 -84131 -84137 -84143 -84163 -84179 -84181 -84191 -84199 -84211 -84221 -84223 -84229 -84239 -84247 -84263 -84299 -84307 -84313 -84317 -84319 -84347 -84349 -84377 -84389 -84391 -84401 -84407 -84421 -84431 -84437 -84443 -84449 -84457 -84463 -84467 -84481 -84499 -84503 -84509 -84521 -84523 -84533 -84551 -84559 -84589 -84629 -84631 -84649 -84653 -84659 -84673 -84691 -84697 -84701 -84713 -84719 -84731 -84737 -84751 -84761 -84787 -84793 -84809 -84811 -84827 -84857 -84859 -84869 -84871 -84913 -84919 -84947 -84961 -84967 -84977 -84979 -84991 -85009 -85021 -85027 -85037 -85049 -85061 -85081 -85087 -85091 -85093 -85103 -85109 -85121 -85133 -85147 -85159 -85193 -85199 -85201 -85213 -85223 -85229 -85237 -85243 -85247 -85259 -85297 -85303 -85313 -85331 -85333 -85361 -85363 -85369 -85381 -85411 -85427 -85429 -85439 -85447 -85451 -85453 -85469 -85487 -85513 -85517 -85523 -85531 -85549 -85571 -85577 -85597 -85601 -85607 -85619 -85621 -85627 -85639 -85643 -85661 -85667 -85669 -85691 -85703 -85711 -85717 -85733 -85751 -85781 -85793 -85817 -85819 -85829 -85831 -85837 -85843 -85847 -85853 -85889 -85903 -85909 -85931 -85933 -85991 -85999 -86011 -86017 -86027 -86029 -86069 -86077 -86083 -86111 -86113 -86117 -86131 -86137 -86143 -86161 -86171 -86179 -86183 -86197 -86201 -86209 -86239 -86243 -86249 -86257 -86263 -86269 -86287 -86291 -86293 -86297 -86311 -86323 -86341 -86351 -86353 -86357 -86369 -86371 -86381 -86389 -86399 -86413 -86423 -86441 -86453 -86461 -86467 -86477 -86491 -86501 -86509 -86531 -86533 -86539 -86561 -86573 -86579 -86587 -86599 -86627 -86629 -86677 -86689 -86693 -86711 -86719 -86729 -86743 -86753 -86767 -86771 -86783 -86813 -86837 -86843 -86851 -86857 -86861 -86869 -86923 -86927 -86929 -86939 -86951 -86959 -86969 -86981 -86993 -87011 -87013 -87037 -87041 -87049 -87071 -87083 -87103 -87107 -87119 -87121 -87133 -87149 -87151 -87179 -87181 -87187 -87211 -87221 -87223 -87251 -87253 -87257 -87277 -87281 -87293 -87299 -87313 -87317 -87323 -87337 -87359 -87383 -87403 -87407 -87421 -87427 -87433 -87443 -87473 -87481 -87491 -87509 -87511 -87517 -87523 -87539 -87541 -87547 -87553 -87557 -87559 -87583 -87587 -87589 -87613 -87623 -87629 -87631 -87641 -87643 -87649 -87671 -87679 -87683 -87691 -87697 -87701 -87719 -87721 -87739 -87743 -87751 -87767 -87793 -87797 -87803 -87811 -87833 -87853 -87869 -87877 -87881 -87887 -87911 -87917 -87931 -87943 -87959 -87961 -87973 -87977 -87991 -88001 -88003 -88007 -88019 -88037 -88069 -88079 -88093 -88117 -88129 -88169 -88177 -88211 -88223 -88237 -88241 -88259 -88261 -88289 -88301 -88321 -88327 -88337 -88339 -88379 -88397 -88411 -88423 -88427 -88463 -88469 -88471 -88493 -88499 -88513 -88523 -88547 -88589 -88591 -88607 -88609 -88643 -88651 -88657 -88661 -88663 -88667 -88681 -88721 -88729 -88741 -88747 -88771 -88789 -88793 -88799 -88801 -88807 -88811 -88813 -88817 -88819 -88843 -88853 -88861 -88867 -88873 -88883 -88897 -88903 -88919 -88937 -88951 -88969 -88993 -88997 -89003 -89009 -89017 -89021 -89041 -89051 -89057 -89069 -89071 -89083 -89087 -89101 -89107 -89113 -89119 -89123 -89137 -89153 -89189 -89203 -89209 -89213 -89227 -89231 -89237 -89261 -89269 -89273 -89293 -89303 -89317 -89329 -89363 -89371 -89381 -89387 -89393 -89399 -89413 -89417 -89431 -89443 -89449 -89459 -89477 -89491 -89501 -89513 -89519 -89521 -89527 -89533 -89561 -89563 -89567 -89591 -89597 -89599 -89603 -89611 -89627 -89633 -89653 -89657 -89659 -89669 -89671 -89681 -89689 -89753 -89759 -89767 -89779 -89783 -89797 -89809 -89819 -89821 -89833 -89839 -89849 -89867 -89891 -89897 -89899 -89909 -89917 -89923 -89939 -89959 -89963 -89977 -89983 -89989 -90001 -90007 -90011 -90017 -90019 -90023 -90031 -90053 -90059 -90067 -90071 -90073 -90089 -90107 -90121 -90127 -90149 -90163 -90173 -90187 -90191 -90197 -90199 -90203 -90217 -90227 -90239 -90247 -90263 -90271 -90281 -90289 -90313 -90353 -90359 -90371 -90373 -90379 -90397 -90401 -90403 -90407 -90437 -90439 -90469 -90473 -90481 -90499 -90511 -90523 -90527 -90529 -90533 -90547 -90583 -90599 -90617 -90619 -90631 -90641 -90647 -90659 -90677 -90679 -90697 -90703 -90709 -90731 -90749 -90787 -90793 -90803 -90821 -90823 -90833 -90841 -90847 -90863 -90887 -90901 -90907 -90911 -90917 -90931 -90947 -90971 -90977 -90989 -90997 -91009 -91019 -91033 -91079 -91081 -91097 -91099 -91121 -91127 -91129 -91139 -91141 -91151 -91153 -91159 -91163 -91183 -91193 -91199 -91229 -91237 -91243 -91249 -91253 -91283 -91291 -91297 -91303 -91309 -91331 -91367 -91369 -91373 -91381 -91387 -91393 -91397 -91411 -91423 -91433 -91453 -91457 -91459 -91463 -91493 -91499 -91513 -91529 -91541 -91571 -91573 -91577 -91583 -91591 -91621 -91631 -91639 -91673 -91691 -91703 -91711 -91733 -91753 -91757 -91771 -91781 -91801 -91807 -91811 -91813 -91823 -91837 -91841 -91867 -91873 -91909 -91921 -91939 -91943 -91951 -91957 -91961 -91967 -91969 -91997 -92003 -92009 -92033 -92041 -92051 -92077 -92083 -92107 -92111 -92119 -92143 -92153 -92173 -92177 -92179 -92189 -92203 -92219 -92221 -92227 -92233 -92237 -92243 -92251 -92269 -92297 -92311 -92317 -92333 -92347 -92353 -92357 -92363 -92369 -92377 -92381 -92383 -92387 -92399 -92401 -92413 -92419 -92431 -92459 -92461 -92467 -92479 -92489 -92503 -92507 -92551 -92557 -92567 -92569 -92581 -92593 -92623 -92627 -92639 -92641 -92647 -92657 -92669 -92671 -92681 -92683 -92693 -92699 -92707 -92717 -92723 -92737 -92753 -92761 -92767 -92779 -92789 -92791 -92801 -92809 -92821 -92831 -92849 -92857 -92861 -92863 -92867 -92893 -92899 -92921 -92927 -92941 -92951 -92957 -92959 -92987 -92993 -93001 -93047 -93053 -93059 -93077 -93083 -93089 -93097 -93103 -93113 -93131 -93133 -93139 -93151 -93169 -93179 -93187 -93199 -93229 -93239 -93241 -93251 -93253 -93257 -93263 -93281 -93283 -93287 -93307 -93319 -93323 -93329 -93337 -93371 -93377 -93383 -93407 -93419 -93427 -93463 -93479 -93481 -93487 -93491 -93493 -93497 -93503 -93523 -93529 -93553 -93557 -93559 -93563 -93581 -93601 -93607 -93629 -93637 -93683 -93701 -93703 -93719 -93739 -93761 -93763 -93787 -93809 -93811 -93827 -93851 -93871 -93887 -93889 -93893 -93901 -93911 -93913 -93923 -93937 -93941 -93949 -93967 -93971 -93979 -93983 -93997 -94007 -94009 -94033 -94049 -94057 -94063 -94079 -94099 -94109 -94111 -94117 -94121 -94151 -94153 -94169 -94201 -94207 -94219 -94229 -94253 -94261 -94273 -94291 -94307 -94309 -94321 -94327 -94331 -94343 -94349 -94351 -94379 -94397 -94399 -94421 -94427 -94433 -94439 -94441 -94447 -94463 -94477 -94483 -94513 -94529 -94531 -94541 -94543 -94547 -94559 -94561 -94573 -94583 -94597 -94603 -94613 -94621 -94649 -94651 -94687 -94693 -94709 -94723 -94727 -94747 -94771 -94777 -94781 -94789 -94793 -94811 -94819 -94823 -94837 -94841 -94847 -94849 -94873 -94889 -94903 -94907 -94933 -94949 -94951 -94961 -94993 -94999 -95003 -95009 -95021 -95027 -95063 -95071 -95083 -95087 -95089 -95093 -95101 -95107 -95111 -95131 -95143 -95153 -95177 -95189 -95191 -95203 -95213 -95219 -95231 -95233 -95239 -95257 -95261 -95267 -95273 -95279 -95287 -95311 -95317 -95327 -95339 -95369 -95383 -95393 -95401 -95413 -95419 -95429 -95441 -95443 -95461 -95467 -95471 -95479 -95483 -95507 -95527 -95531 -95539 -95549 -95561 -95569 -95581 -95597 -95603 -95617 -95621 -95629 -95633 -95651 -95701 -95707 -95713 -95717 -95723 -95731 -95737 -95747 -95773 -95783 -95789 -95791 -95801 -95803 -95813 -95819 -95857 -95869 -95873 -95881 -95891 -95911 -95917 -95923 -95929 -95947 -95957 -95959 -95971 -95987 -95989 -96001 -96013 -96017 -96043 -96053 -96059 -96079 -96097 -96137 -96149 -96157 -96167 -96179 -96181 -96199 -96211 -96221 -96223 -96233 -96259 -96263 -96269 -96281 -96289 -96293 -96323 -96329 -96331 -96337 -96353 -96377 -96401 -96419 -96431 -96443 -96451 -96457 -96461 -96469 -96479 -96487 -96493 -96497 -96517 -96527 -96553 -96557 -96581 -96587 -96589 -96601 -96643 -96661 -96667 -96671 -96697 -96703 -96731 -96737 -96739 -96749 -96757 -96763 -96769 -96779 -96787 -96797 -96799 -96821 -96823 -96827 -96847 -96851 -96857 -96893 -96907 -96911 -96931 -96953 -96959 -96973 -96979 -96989 -96997 -97001 -97003 -97007 -97021 -97039 -97073 -97081 -97103 -97117 -97127 -97151 -97157 -97159 -97169 -97171 -97177 -97187 -97213 -97231 -97241 -97259 -97283 -97301 -97303 -97327 -97367 -97369 -97373 -97379 -97381 -97387 -97397 -97423 -97429 -97441 -97453 -97459 -97463 -97499 -97501 -97511 -97523 -97547 -97549 -97553 -97561 -97571 -97577 -97579 -97583 -97607 -97609 -97613 -97649 -97651 -97673 -97687 -97711 -97729 -97771 -97777 -97787 -97789 -97813 -97829 -97841 -97843 -97847 -97849 -97859 -97861 -97871 -97879 -97883 -97919 -97927 -97931 -97943 -97961 -97967 -97973 -97987 -98009 -98011 -98017 -98041 -98047 -98057 -98081 -98101 -98123 -98129 -98143 -98179 -98207 -98213 -98221 -98227 -98251 -98257 -98269 -98297 -98299 -98317 -98321 -98323 -98327 -98347 -98369 -98377 -98387 -98389 -98407 -98411 -98419 -98429 -98443 -98453 -98459 -98467 -98473 -98479 -98491 -98507 -98519 -98533 -98543 -98561 -98563 -98573 -98597 -98621 -98627 -98639 -98641 -98663 -98669 -98689 -98711 -98713 -98717 -98729 -98731 -98737 -98773 -98779 -98801 -98807 -98809 -98837 -98849 -98867 -98869 -98873 -98887 -98893 -98897 -98899 -98909 -98911 -98927 -98929 -98939 -98947 -98953 -98963 -98981 -98993 -98999 -99013 -99017 -99023 -99041 -99053 -99079 -99083 -99089 -99103 -99109 -99119 -99131 -99133 -99137 -99139 -99149 -99173 -99181 -99191 -99223 -99233 -99241 -99251 -99257 -99259 -99277 -99289 -99317 -99347 -99349 -99367 -99371 -99377 -99391 -99397 -99401 -99409 -99431 -99439 -99469 -99487 -99497 -99523 -99527 -99529 -99551 -99559 -99563 -99571 -99577 -99581 -99607 -99611 -99623 -99643 -99661 -99667 -99679 -99689 -99707 -99709 -99713 -99719 -99721 -99733 -99761 -99767 -99787 -99793 -99809 -99817 -99823 -99829 -99833 -99839 -99859 -99871 -99877 -99881 -99901 -99907 -99923 -99929 -99961 -99971 -99989 -99991 -100003 -100019 -100043 -100049 -100057 -100069 -100103 -100109 -100129 -100151 -100153 -100169 -100183 -100189 -100193 -100207 -100213 -100237 -100267 -100271 -100279 -100291 -100297 -100313 -100333 -100343 -100357 -100361 -100363 -100379 -100391 -100393 -100403 -100411 -100417 -100447 -100459 -100469 -100483 -100493 -100501 -100511 -100517 -100519 -100523 -100537 -100547 -100549 -100559 -100591 -100609 -100613 -100621 -100649 -100669 -100673 -100693 -100699 -100703 -100733 -100741 -100747 -100769 -100787 -100799 -100801 -100811 -100823 -100829 -100847 -100853 -100907 -100913 -100927 -100931 -100937 -100943 -100957 -100981 -100987 -100999 -101009 -101021 -101027 -101051 -101063 -101081 -101089 -101107 -101111 -101113 -101117 -101119 -101141 -101149 -101159 -101161 -101173 -101183 -101197 -101203 -101207 -101209 -101221 -101267 -101273 -101279 -101281 -101287 -101293 -101323 -101333 -101341 -101347 -101359 -101363 -101377 -101383 -101399 -101411 -101419 -101429 -101449 -101467 -101477 -101483 -101489 -101501 -101503 -101513 -101527 -101531 -101533 -101537 -101561 -101573 -101581 -101599 -101603 -101611 -101627 -101641 -101653 -101663 -101681 -101693 -101701 -101719 -101723 -101737 -101741 -101747 -101749 -101771 -101789 -101797 -101807 -101833 -101837 -101839 -101863 -101869 -101873 -101879 -101891 -101917 -101921 -101929 -101939 -101957 -101963 -101977 -101987 -101999 -102001 -102013 -102019 -102023 -102031 -102043 -102059 -102061 -102071 -102077 -102079 -102101 -102103 -102107 -102121 -102139 -102149 -102161 -102181 -102191 -102197 -102199 -102203 -102217 -102229 -102233 -102241 -102251 -102253 -102259 -102293 -102299 -102301 -102317 -102329 -102337 -102359 -102367 -102397 -102407 -102409 -102433 -102437 -102451 -102461 -102481 -102497 -102499 -102503 -102523 -102533 -102539 -102547 -102551 -102559 -102563 -102587 -102593 -102607 -102611 -102643 -102647 -102653 -102667 -102673 -102677 -102679 -102701 -102761 -102763 -102769 -102793 -102797 -102811 -102829 -102841 -102859 -102871 -102877 -102881 -102911 -102913 -102929 -102931 -102953 -102967 -102983 -103001 -103007 -103043 -103049 -103067 -103069 -103079 -103087 -103091 -103093 -103099 -103123 -103141 -103171 -103177 -103183 -103217 -103231 -103237 -103289 -103291 -103307 -103319 -103333 -103349 -103357 -103387 -103391 -103393 -103399 -103409 -103421 -103423 -103451 -103457 -103471 -103483 -103511 -103529 -103549 -103553 -103561 -103567 -103573 -103577 -103583 -103591 -103613 -103619 -103643 -103651 -103657 -103669 -103681 -103687 -103699 -103703 -103723 -103769 -103787 -103801 -103811 -103813 -103837 -103841 -103843 -103867 -103889 -103903 -103913 -103919 -103951 -103963 -103967 -103969 -103979 -103981 -103991 -103993 -103997 -104003 -104009 -104021 -104033 -104047 -104053 -104059 -104087 -104089 -104107 -104113 -104119 -104123 -104147 -104149 -104161 -104173 -104179 -104183 -104207 -104231 -104233 -104239 -104243 -104281 -104287 -104297 -104309 -104311 -104323 -104327 -104347 -104369 -104381 -104383 -104393 -104399 -104417 -104459 -104471 -104473 -104479 -104491 -104513 -104527 -104537 -104543 -104549 -104551 -104561 -104579 -104593 -104597 -104623 -104639 -104651 -104659 -104677 -104681 -104683 -104693 -104701 -104707 -104711 -104717 -104723 -104729 -104743 -104759 -104761 -104773 -104779 -104789 -104801 -104803 -104827 -104831 -104849 -104851 -104869 -104879 -104891 -104911 -104917 -104933 -104947 -104953 -104959 -104971 -104987 -104999 -105019 -105023 -105031 -105037 -105071 -105097 -105107 -105137 -105143 -105167 -105173 -105199 -105211 -105227 -105229 -105239 -105251 -105253 -105263 -105269 -105277 -105319 -105323 -105331 -105337 -105341 -105359 -105361 -105367 -105373 -105379 -105389 -105397 -105401 -105407 -105437 -105449 -105467 -105491 -105499 -105503 -105509 -105517 -105527 -105529 -105533 -105541 -105557 -105563 -105601 -105607 -105613 -105619 -105649 -105653 -105667 -105673 -105683 -105691 -105701 -105727 -105733 -105751 -105761 -105767 -105769 -105817 -105829 -105863 -105871 -105883 -105899 -105907 -105913 -105929 -105943 -105953 -105967 -105971 -105977 -105983 -105997 -106013 -106019 -106031 -106033 -106087 -106103 -106109 -106121 -106123 -106129 -106163 -106181 -106187 -106189 -106207 -106213 -106217 -106219 -106243 -106261 -106273 -106277 -106279 -106291 -106297 -106303 -106307 -106319 -106321 -106331 -106349 -106357 -106363 -106367 -106373 -106391 -106397 -106411 -106417 -106427 -106433 -106441 -106451 -106453 -106487 -106501 -106531 -106537 -106541 -106543 -106591 -106619 -106621 -106627 -106637 -106649 -106657 -106661 -106663 -106669 -106681 -106693 -106699 -106703 -106721 -106727 -106739 -106747 -106751 -106753 -106759 -106781 -106783 -106787 -106801 -106823 -106853 -106859 -106861 -106867 -106871 -106877 -106903 -106907 -106921 -106937 -106949 -106957 -106961 -106963 -106979 -106993 -107021 -107033 -107053 -107057 -107069 -107071 -107077 -107089 -107099 -107101 -107119 -107123 -107137 -107171 -107183 -107197 -107201 -107209 -107227 -107243 -107251 -107269 -107273 -107279 -107309 -107323 -107339 -107347 -107351 -107357 -107377 -107441 -107449 -107453 -107467 -107473 -107507 -107509 -107563 -107581 -107599 -107603 -107609 -107621 -107641 -107647 -107671 -107687 -107693 -107699 -107713 -107717 -107719 -107741 -107747 -107761 -107773 -107777 -107791 -107827 -107837 -107839 -107843 -107857 -107867 -107873 -107881 -107897 -107903 -107923 -107927 -107941 -107951 -107971 -107981 -107999 -108007 -108011 -108013 -108023 -108037 -108041 -108061 -108079 -108089 -108107 -108109 -108127 -108131 -108139 -108161 -108179 -108187 -108191 -108193 -108203 -108211 -108217 -108223 -108233 -108247 -108263 -108271 -108287 -108289 -108293 -108301 -108343 -108347 -108359 -108377 -108379 -108401 -108413 -108421 -108439 -108457 -108461 -108463 -108497 -108499 -108503 -108517 -108529 -108533 -108541 -108553 -108557 -108571 -108587 -108631 -108637 -108643 -108649 -108677 -108707 -108709 -108727 -108739 -108751 -108761 -108769 -108791 -108793 -108799 -108803 -108821 -108827 -108863 -108869 -108877 -108881 -108883 -108887 -108893 -108907 -108917 -108923 -108929 -108943 -108947 -108949 -108959 -108961 -108967 -108971 -108991 -109001 -109013 -109037 -109049 -109063 -109073 -109097 -109103 -109111 -109121 -109133 -109139 -109141 -109147 -109159 -109169 -109171 -109199 -109201 -109211 -109229 -109253 -109267 -109279 -109297 -109303 -109313 -109321 -109331 -109357 -109363 -109367 -109379 -109387 -109391 -109397 -109423 -109433 -109441 -109451 -109453 -109469 -109471 -109481 -109507 -109517 -109519 -109537 -109541 -109547 -109567 -109579 -109583 -109589 -109597 -109609 -109619 -109621 -109639 -109661 -109663 -109673 -109717 -109721 -109741 -109751 -109789 -109793 -109807 -109819 -109829 -109831 -109841 -109843 -109847 -109849 -109859 -109873 -109883 -109891 -109897 -109903 -109913 -109919 -109937 -109943 -109961 -109987 -110017 -110023 -110039 -110051 -110059 -110063 -110069 -110083 -110119 -110129 -110161 -110183 -110221 -110233 -110237 -110251 -110261 -110269 -110273 -110281 -110291 -110311 -110321 -110323 -110339 -110359 -110419 -110431 -110437 -110441 -110459 -110477 -110479 -110491 -110501 -110503 -110527 -110533 -110543 -110557 -110563 -110567 -110569 -110573 -110581 -110587 -110597 -110603 -110609 -110623 -110629 -110641 -110647 -110651 -110681 -110711 -110729 -110731 -110749 -110753 -110771 -110777 -110807 -110813 -110819 -110821 -110849 -110863 -110879 -110881 -110899 -110909 -110917 -110921 -110923 -110927 -110933 -110939 -110947 -110951 -110969 -110977 -110989 -111029 -111031 -111043 -111049 -111053 -111091 -111103 -111109 -111119 -111121 -111127 -111143 -111149 -111187 -111191 -111211 -111217 -111227 -111229 -111253 -111263 -111269 -111271 -111301 -111317 -111323 -111337 -111341 -111347 -111373 -111409 -111427 -111431 -111439 -111443 -111467 -111487 -111491 -111493 -111497 -111509 -111521 -111533 -111539 -111577 -111581 -111593 -111599 -111611 -111623 -111637 -111641 -111653 -111659 -111667 -111697 -111721 -111731 -111733 -111751 -111767 -111773 -111779 -111781 -111791 -111799 -111821 -111827 -111829 -111833 -111847 -111857 -111863 -111869 -111871 -111893 -111913 -111919 -111949 -111953 -111959 -111973 -111977 -111997 -112019 -112031 -112061 -112067 -112069 -112087 -112097 -112103 -112111 -112121 -112129 -112139 -112153 -112163 -112181 -112199 -112207 -112213 -112223 -112237 -112241 -112247 -112249 -112253 -112261 -112279 -112289 -112291 -112297 -112303 -112327 -112331 -112337 -112339 -112349 -112361 -112363 -112397 -112403 -112429 -112459 -112481 -112501 -112507 -112543 -112559 -112571 -112573 -112577 -112583 -112589 -112601 -112603 -112621 -112643 -112657 -112663 -112687 -112691 -112741 -112757 -112759 -112771 -112787 -112799 -112807 -112831 -112843 -112859 -112877 -112901 -112909 -112913 -112919 -112921 -112927 -112939 -112951 -112967 -112979 -112997 -113011 -113017 -113021 -113023 -113027 -113039 -113041 -113051 -113063 -113081 -113083 -113089 -113093 -113111 -113117 -113123 -113131 -113143 -113147 -113149 -113153 -113159 -113161 -113167 -113171 -113173 -113177 -113189 -113209 -113213 -113227 -113233 -113279 -113287 -113327 -113329 -113341 -113357 -113359 -113363 -113371 -113381 -113383 -113417 -113437 -113453 -113467 -113489 -113497 -113501 -113513 -113537 -113539 -113557 -113567 -113591 -113621 -113623 -113647 -113657 -113683 -113717 -113719 -113723 -113731 -113749 -113759 -113761 -113777 -113779 -113783 -113797 -113809 -113819 -113837 -113843 -113891 -113899 -113903 -113909 -113921 -113933 -113947 -113957 -113963 -113969 -113983 -113989 -114001 -114013 -114031 -114041 -114043 -114067 -114073 -114077 -114083 -114089 -114113 -114143 -114157 -114161 -114167 -114193 -114197 -114199 -114203 -114217 -114221 -114229 -114259 -114269 -114277 -114281 -114299 -114311 -114319 -114329 -114343 -114371 -114377 -114407 -114419 -114451 -114467 -114473 -114479 -114487 -114493 -114547 -114553 -114571 -114577 -114593 -114599 -114601 -114613 -114617 -114641 -114643 -114649 -114659 -114661 -114671 -114679 -114689 -114691 -114713 -114743 -114749 -114757 -114761 -114769 -114773 -114781 -114797 -114799 -114809 -114827 -114833 -114847 -114859 -114883 -114889 -114901 -114913 -114941 -114967 -114973 -114997 -115001 -115013 -115019 -115021 -115057 -115061 -115067 -115079 -115099 -115117 -115123 -115127 -115133 -115151 -115153 -115163 -115183 -115201 -115211 -115223 -115237 -115249 -115259 -115279 -115301 -115303 -115309 -115319 -115321 -115327 -115331 -115337 -115343 -115361 -115363 -115399 -115421 -115429 -115459 -115469 -115471 -115499 -115513 -115523 -115547 -115553 -115561 -115571 -115589 -115597 -115601 -115603 -115613 -115631 -115637 -115657 -115663 -115679 -115693 -115727 -115733 -115741 -115751 -115757 -115763 -115769 -115771 -115777 -115781 -115783 -115793 -115807 -115811 -115823 -115831 -115837 -115849 -115853 -115859 -115861 -115873 -115877 -115879 -115883 -115891 -115901 -115903 -115931 -115933 -115963 -115979 -115981 -115987 -116009 -116027 -116041 -116047 -116089 -116099 -116101 -116107 -116113 -116131 -116141 -116159 -116167 -116177 -116189 -116191 -116201 -116239 -116243 -116257 -116269 -116273 -116279 -116293 -116329 -116341 -116351 -116359 -116371 -116381 -116387 -116411 -116423 -116437 -116443 -116447 -116461 -116471 -116483 -116491 -116507 -116531 -116533 -116537 -116539 -116549 -116579 -116593 -116639 -116657 -116663 -116681 -116687 -116689 -116707 -116719 -116731 -116741 -116747 -116789 -116791 -116797 -116803 -116819 -116827 -116833 -116849 -116867 -116881 -116903 -116911 -116923 -116927 -116929 -116933 -116953 -116959 -116969 -116981 -116989 -116993 -117017 -117023 -117037 -117041 -117043 -117053 -117071 -117101 -117109 -117119 -117127 -117133 -117163 -117167 -117191 -117193 -117203 -117209 -117223 -117239 -117241 -117251 -117259 -117269 -117281 -117307 -117319 -117329 -117331 -117353 -117361 -117371 -117373 -117389 -117413 -117427 -117431 -117437 -117443 -117497 -117499 -117503 -117511 -117517 -117529 -117539 -117541 -117563 -117571 -117577 -117617 -117619 -117643 -117659 -117671 -117673 -117679 -117701 -117703 -117709 -117721 -117727 -117731 -117751 -117757 -117763 -117773 -117779 -117787 -117797 -117809 -117811 -117833 -117839 -117841 -117851 -117877 -117881 -117883 -117889 -117899 -117911 -117917 -117937 -117959 -117973 -117977 -117979 -117989 -117991 -118033 -118037 -118043 -118051 -118057 -118061 -118081 -118093 -118127 -118147 -118163 -118169 -118171 -118189 -118211 -118213 -118219 -118247 -118249 -118253 -118259 -118273 -118277 -118297 -118343 -118361 -118369 -118373 -118387 -118399 -118409 -118411 -118423 -118429 -118453 -118457 -118463 -118471 -118493 -118529 -118543 -118549 -118571 -118583 -118589 -118603 -118619 -118621 -118633 -118661 -118669 -118673 -118681 -118687 -118691 -118709 -118717 -118739 -118747 -118751 -118757 -118787 -118799 -118801 -118819 -118831 -118843 -118861 -118873 -118891 -118897 -118901 -118903 -118907 -118913 -118927 -118931 -118967 -118973 -119027 -119033 -119039 -119047 -119057 -119069 -119083 -119087 -119089 -119099 -119101 -119107 -119129 -119131 -119159 -119173 -119179 -119183 -119191 -119227 -119233 -119237 -119243 -119267 -119291 -119293 -119297 -119299 -119311 -119321 -119359 -119363 -119389 -119417 -119419 -119429 -119447 -119489 -119503 -119513 -119533 -119549 -119551 -119557 -119563 -119569 -119591 -119611 -119617 -119627 -119633 -119653 -119657 -119659 -119671 -119677 -119687 -119689 -119699 -119701 -119723 -119737 -119747 -119759 -119771 -119773 -119783 -119797 -119809 -119813 -119827 -119831 -119839 -119849 -119851 -119869 -119881 -119891 -119921 -119923 -119929 -119953 -119963 -119971 -119981 -119983 -119993 -120011 -120017 -120041 -120047 -120049 -120067 -120077 -120079 -120091 -120097 -120103 -120121 -120157 -120163 -120167 -120181 -120193 -120199 -120209 -120223 -120233 -120247 -120277 -120283 -120293 -120299 -120319 -120331 -120349 -120371 -120383 -120391 -120397 -120401 -120413 -120427 -120431 -120473 -120503 -120511 -120539 -120551 -120557 -120563 -120569 -120577 -120587 -120607 -120619 -120623 -120641 -120647 -120661 -120671 -120677 -120689 -120691 -120709 -120713 -120721 -120737 -120739 -120749 -120763 -120767 -120779 -120811 -120817 -120823 -120829 -120833 -120847 -120851 -120863 -120871 -120877 -120889 -120899 -120907 -120917 -120919 -120929 -120937 -120941 -120943 -120947 -120977 -120997 -121001 -121007 -121013 -121019 -121021 -121039 -121061 -121063 -121067 -121081 -121123 -121139 -121151 -121157 -121169 -121171 -121181 -121189 -121229 -121259 -121267 -121271 -121283 -121291 -121309 -121313 -121321 -121327 -121333 -121343 -121349 -121351 -121357 -121367 -121369 -121379 -121403 -121421 -121439 -121441 -121447 -121453 -121469 -121487 -121493 -121501 -121507 -121523 -121531 -121547 -121553 -121559 -121571 -121577 -121579 -121591 -121607 -121609 -121621 -121631 -121633 -121637 -121661 -121687 -121697 -121711 -121721 -121727 -121763 -121787 -121789 -121843 -121853 -121867 -121883 -121889 -121909 -121921 -121931 -121937 -121949 -121951 -121963 -121967 -121993 -121997 -122011 -122021 -122027 -122029 -122033 -122039 -122041 -122051 -122053 -122069 -122081 -122099 -122117 -122131 -122147 -122149 -122167 -122173 -122201 -122203 -122207 -122209 -122219 -122231 -122251 -122263 -122267 -122273 -122279 -122299 -122321 -122323 -122327 -122347 -122363 -122387 -122389 -122393 -122399 -122401 -122443 -122449 -122453 -122471 -122477 -122489 -122497 -122501 -122503 -122509 -122527 -122533 -122557 -122561 -122579 -122597 -122599 -122609 -122611 -122651 -122653 -122663 -122693 -122701 -122719 -122741 -122743 -122753 -122761 -122777 -122789 -122819 -122827 -122833 -122839 -122849 -122861 -122867 -122869 -122887 -122891 -122921 -122929 -122939 -122953 -122957 -122963 -122971 -123001 -123007 -123017 -123031 -123049 -123059 -123077 -123083 -123091 -123113 -123121 -123127 -123143 -123169 -123191 -123203 -123209 -123217 -123229 -123239 -123259 -123269 -123289 -123307 -123311 -123323 -123341 -123373 -123377 -123379 -123397 -123401 -123407 -123419 -123427 -123433 -123439 -123449 -123457 -123479 -123491 -123493 -123499 -123503 -123517 -123527 -123547 -123551 -123553 -123581 -123583 -123593 -123601 -123619 -123631 -123637 -123653 -123661 -123667 -123677 -123701 -123707 -123719 -123727 -123731 -123733 -123737 -123757 -123787 -123791 -123803 -123817 -123821 -123829 -123833 -123853 -123863 -123887 -123911 -123923 -123931 -123941 -123953 -123973 -123979 -123983 -123989 -123997 -124001 -124021 -124067 -124087 -124097 -124121 -124123 -124133 -124139 -124147 -124153 -124171 -124181 -124183 -124193 -124199 -124213 -124231 -124247 -124249 -124277 -124291 -124297 -124301 -124303 -124309 -124337 -124339 -124343 -124349 -124351 -124363 -124367 -124427 -124429 -124433 -124447 -124459 -124471 -124477 -124489 -124493 -124513 -124529 -124541 -124543 -124561 -124567 -124577 -124601 -124633 -124643 -124669 -124673 -124679 -124693 -124699 -124703 -124717 -124721 -124739 -124753 -124759 -124769 -124771 -124777 -124781 -124783 -124793 -124799 -124819 -124823 -124847 -124853 -124897 -124907 -124909 -124919 -124951 -124979 -124981 -124987 -124991 -125003 -125017 -125029 -125053 -125063 -125093 -125101 -125107 -125113 -125117 -125119 -125131 -125141 -125149 -125183 -125197 -125201 -125207 -125219 -125221 -125231 -125243 -125261 -125269 -125287 -125299 -125303 -125311 -125329 -125339 -125353 -125371 -125383 -125387 -125399 -125407 -125423 -125429 -125441 -125453 -125471 -125497 -125507 -125509 -125527 -125539 -125551 -125591 -125597 -125617 -125621 -125627 -125639 -125641 -125651 -125659 -125669 -125683 -125687 -125693 -125707 -125711 -125717 -125731 -125737 -125743 -125753 -125777 -125789 -125791 -125803 -125813 -125821 -125863 -125887 -125897 -125899 -125921 -125927 -125929 -125933 -125941 -125959 -125963 -126001 -126011 -126013 -126019 -126023 -126031 -126037 -126041 -126047 -126067 -126079 -126097 -126107 -126127 -126131 -126143 -126151 -126173 -126199 -126211 -126223 -126227 -126229 -126233 -126241 -126257 -126271 -126307 -126311 -126317 -126323 -126337 -126341 -126349 -126359 -126397 -126421 -126433 -126443 -126457 -126461 -126473 -126481 -126487 -126491 -126493 -126499 -126517 -126541 -126547 -126551 -126583 -126601 -126611 -126613 -126631 -126641 -126653 -126683 -126691 -126703 -126713 -126719 -126733 -126739 -126743 -126751 -126757 -126761 -126781 -126823 -126827 -126839 -126851 -126857 -126859 -126913 -126923 -126943 -126949 -126961 -126967 -126989 -127031 -127033 -127037 -127051 -127079 -127081 -127103 -127123 -127133 -127139 -127157 -127163 -127189 -127207 -127217 -127219 -127241 -127247 -127249 -127261 -127271 -127277 -127289 -127291 -127297 -127301 -127321 -127331 -127343 -127363 -127373 -127399 -127403 -127423 -127447 -127453 -127481 -127487 -127493 -127507 -127529 -127541 -127549 -127579 -127583 -127591 -127597 -127601 -127607 -127609 -127637 -127643 -127649 -127657 -127663 -127669 -127679 -127681 -127691 -127703 -127709 -127711 -127717 -127727 -127733 -127739 -127747 -127763 -127781 -127807 -127817 -127819 -127837 -127843 -127849 -127859 -127867 -127873 -127877 -127913 -127921 -127931 -127951 -127973 -127979 -127997 -128021 -128033 -128047 -128053 -128099 -128111 -128113 -128119 -128147 -128153 -128159 -128173 -128189 -128201 -128203 -128213 -128221 -128237 -128239 -128257 -128273 -128287 -128291 -128311 -128321 -128327 -128339 -128341 -128347 -128351 -128377 -128389 -128393 -128399 -128411 -128413 -128431 -128437 -128449 -128461 -128467 -128473 -128477 -128483 -128489 -128509 -128519 -128521 -128549 -128551 -128563 -128591 -128599 -128603 -128621 -128629 -128657 -128659 -128663 -128669 -128677 -128683 -128693 -128717 -128747 -128749 -128761 -128767 -128813 -128819 -128831 -128833 -128837 -128857 -128861 -128873 -128879 -128903 -128923 -128939 -128941 -128951 -128959 -128969 -128971 -128981 -128983 -128987 -128993 -129001 -129011 -129023 -129037 -129049 -129061 -129083 -129089 -129097 -129113 -129119 -129121 -129127 -129169 -129187 -129193 -129197 -129209 -129221 -129223 -129229 -129263 -129277 -129281 -129287 -129289 -129293 -129313 -129341 -129347 -129361 -129379 -129401 -129403 -129419 -129439 -129443 -129449 -129457 -129461 -129469 -129491 -129497 -129499 -129509 -129517 -129527 -129529 -129533 -129539 -129553 -129581 -129587 -129589 -129593 -129607 -129629 -129631 -129641 -129643 -129671 -129707 -129719 -129733 -129737 -129749 -129757 -129763 -129769 -129793 -129803 -129841 -129853 -129887 -129893 -129901 -129917 -129919 -129937 -129953 -129959 -129967 -129971 -130003 -130021 -130027 -130043 -130051 -130057 -130069 -130073 -130079 -130087 -130099 -130121 -130127 -130147 -130171 -130183 -130199 -130201 -130211 -130223 -130241 -130253 -130259 -130261 -130267 -130279 -130303 -130307 -130337 -130343 -130349 -130363 -130367 -130369 -130379 -130399 -130409 -130411 -130423 -130439 -130447 -130457 -130469 -130477 -130483 -130489 -130513 -130517 -130523 -130531 -130547 -130553 -130579 -130589 -130619 -130621 -130631 -130633 -130639 -130643 -130649 -130651 -130657 -130681 -130687 -130693 -130699 -130729 -130769 -130783 -130787 -130807 -130811 -130817 -130829 -130841 -130843 -130859 -130873 -130927 -130957 -130969 -130973 -130981 -130987 -131009 -131011 -131023 -131041 -131059 -131063 -131071 -131101 -131111 -131113 -131129 -131143 -131149 -131171 -131203 -131213 -131221 -131231 -131249 -131251 -131267 -131293 -131297 -131303 -131311 -131317 -131321 -131357 -131363 -131371 -131381 -131413 -131431 -131437 -131441 -131447 -131449 -131477 -131479 -131489 -131497 -131501 -131507 -131519 -131543 -131561 -131581 -131591 -131611 -131617 -131627 -131639 -131641 -131671 -131687 -131701 -131707 -131711 -131713 -131731 -131743 -131749 -131759 -131771 -131777 -131779 -131783 -131797 -131837 -131839 -131849 -131861 -131891 -131893 -131899 -131909 -131927 -131933 -131939 -131941 -131947 -131959 -131969 -132001 -132019 -132047 -132049 -132059 -132071 -132103 -132109 -132113 -132137 -132151 -132157 -132169 -132173 -132199 -132229 -132233 -132241 -132247 -132257 -132263 -132283 -132287 -132299 -132313 -132329 -132331 -132347 -132361 -132367 -132371 -132383 -132403 -132409 -132421 -132437 -132439 -132469 -132491 -132499 -132511 -132523 -132527 -132529 -132533 -132541 -132547 -132589 -132607 -132611 -132619 -132623 -132631 -132637 -132647 -132661 -132667 -132679 -132689 -132697 -132701 -132707 -132709 -132721 -132739 -132749 -132751 -132757 -132761 -132763 -132817 -132833 -132851 -132857 -132859 -132863 -132887 -132893 -132911 -132929 -132947 -132949 -132953 -132961 -132967 -132971 -132989 -133013 -133033 -133039 -133051 -133069 -133073 -133087 -133097 -133103 -133109 -133117 -133121 -133153 -133157 -133169 -133183 -133187 -133201 -133213 -133241 -133253 -133261 -133271 -133277 -133279 -133283 -133303 -133319 -133321 -133327 -133337 -133349 -133351 -133379 -133387 -133391 -133403 -133417 -133439 -133447 -133451 -133481 -133493 -133499 -133519 -133541 -133543 -133559 -133571 -133583 -133597 -133631 -133633 -133649 -133657 -133669 -133673 -133691 -133697 -133709 -133711 -133717 -133723 -133733 -133769 -133781 -133801 -133811 -133813 -133831 -133843 -133853 -133873 -133877 -133919 -133949 -133963 -133967 -133979 -133981 -133993 -133999 -134033 -134039 -134047 -134053 -134059 -134077 -134081 -134087 -134089 -134093 -134129 -134153 -134161 -134171 -134177 -134191 -134207 -134213 -134219 -134227 -134243 -134257 -134263 -134269 -134287 -134291 -134293 -134327 -134333 -134339 -134341 -134353 -134359 -134363 -134369 -134371 -134399 -134401 -134417 -134437 -134443 -134471 -134489 -134503 -134507 -134513 -134581 -134587 -134591 -134593 -134597 -134609 -134639 -134669 -134677 -134681 -134683 -134699 -134707 -134731 -134741 -134753 -134777 -134789 -134807 -134837 -134839 -134851 -134857 -134867 -134873 -134887 -134909 -134917 -134921 -134923 -134947 -134951 -134989 -134999 -135007 -135017 -135019 -135029 -135043 -135049 -135059 -135077 -135089 -135101 -135119 -135131 -135151 -135173 -135181 -135193 -135197 -135209 -135211 -135221 -135241 -135257 -135271 -135277 -135281 -135283 -135301 -135319 -135329 -135347 -135349 -135353 -135367 -135389 -135391 -135403 -135409 -135427 -135431 -135433 -135449 -135461 -135463 -135467 -135469 -135479 -135497 -135511 -135533 -135559 -135571 -135581 -135589 -135593 -135599 -135601 -135607 -135613 -135617 -135623 -135637 -135647 -135649 -135661 -135671 -135697 -135701 -135719 -135721 -135727 -135731 -135743 -135757 -135781 -135787 -135799 -135829 -135841 -135851 -135859 -135887 -135893 -135899 -135911 -135913 -135929 -135937 -135977 -135979 -136013 -136027 -136033 -136043 -136057 -136067 -136069 -136093 -136099 -136111 -136133 -136139 -136163 -136177 -136189 -136193 -136207 -136217 -136223 -136237 -136247 -136261 -136273 -136277 -136303 -136309 -136319 -136327 -136333 -136337 -136343 -136351 -136361 -136373 -136379 -136393 -136397 -136399 -136403 -136417 -136421 -136429 -136447 -136453 -136463 -136471 -136481 -136483 -136501 -136511 -136519 -136523 -136531 -136537 -136541 -136547 -136559 -136573 -136601 -136603 -136607 -136621 -136649 -136651 -136657 -136691 -136693 -136709 -136711 -136727 -136733 -136739 -136751 -136753 -136769 -136777 -136811 -136813 -136841 -136849 -136859 -136861 -136879 -136883 -136889 -136897 -136943 -136949 -136951 -136963 -136973 -136979 -136987 -136991 -136993 -136999 -137029 -137077 -137087 -137089 -137117 -137119 -137131 -137143 -137147 -137153 -137177 -137183 -137191 -137197 -137201 -137209 -137219 -137239 -137251 -137273 -137279 -137303 -137321 -137339 -137341 -137353 -137359 -137363 -137369 -137383 -137387 -137393 -137399 -137413 -137437 -137443 -137447 -137453 -137477 -137483 -137491 -137507 -137519 -137537 -137567 -137573 -137587 -137593 -137597 -137623 -137633 -137639 -137653 -137659 -137699 -137707 -137713 -137723 -137737 -137743 -137771 -137777 -137791 -137803 -137827 -137831 -137849 -137867 -137869 -137873 -137909 -137911 -137927 -137933 -137941 -137947 -137957 -137983 -137993 -137999 -138007 -138041 -138053 -138059 -138071 -138077 -138079 -138101 -138107 -138113 -138139 -138143 -138157 -138163 -138179 -138181 -138191 -138197 -138209 -138239 -138241 -138247 -138251 -138283 -138289 -138311 -138319 -138323 -138337 -138349 -138371 -138373 -138389 -138401 -138403 -138407 -138427 -138433 -138449 -138451 -138461 -138469 -138493 -138497 -138511 -138517 -138547 -138559 -138563 -138569 -138571 -138577 -138581 -138587 -138599 -138617 -138629 -138637 -138641 -138647 -138661 -138679 -138683 -138727 -138731 -138739 -138763 -138793 -138797 -138799 -138821 -138829 -138841 -138863 -138869 -138883 -138889 -138893 -138899 -138917 -138923 -138937 -138959 -138967 -138977 -139021 -139033 -139067 -139079 -139091 -139109 -139121 -139123 -139133 -139169 -139177 -139187 -139199 -139201 -139241 -139267 -139273 -139291 -139297 -139301 -139303 -139309 -139313 -139333 -139339 -139343 -139361 -139367 -139369 -139387 -139393 -139397 -139409 -139423 -139429 -139439 -139457 -139459 -139483 -139487 -139493 -139501 -139511 -139537 -139547 -139571 -139589 -139591 -139597 -139609 -139619 -139627 -139661 -139663 -139681 -139697 -139703 -139709 -139721 -139729 -139739 -139747 -139753 -139759 -139787 -139801 -139813 -139831 -139837 -139861 -139871 -139883 -139891 -139901 -139907 -139921 -139939 -139943 -139967 -139969 -139981 -139987 -139991 -139999 -140009 -140053 -140057 -140069 -140071 -140111 -140123 -140143 -140159 -140167 -140171 -140177 -140191 -140197 -140207 -140221 -140227 -140237 -140249 -140263 -140269 -140281 -140297 -140317 -140321 -140333 -140339 -140351 -140363 -140381 -140401 -140407 -140411 -140417 -140419 -140423 -140443 -140449 -140453 -140473 -140477 -140521 -140527 -140533 -140549 -140551 -140557 -140587 -140593 -140603 -140611 -140617 -140627 -140629 -140639 -140659 -140663 -140677 -140681 -140683 -140689 -140717 -140729 -140731 -140741 -140759 -140761 -140773 -140779 -140797 -140813 -140827 -140831 -140837 -140839 -140863 -140867 -140869 -140891 -140893 -140897 -140909 -140929 -140939 -140977 -140983 -140989 -141023 -141041 -141061 -141067 -141073 -141079 -141101 -141107 -141121 -141131 -141157 -141161 -141179 -141181 -141199 -141209 -141221 -141223 -141233 -141241 -141257 -141263 -141269 -141277 -141283 -141301 -141307 -141311 -141319 -141353 -141359 -141371 -141397 -141403 -141413 -141439 -141443 -141461 -141481 -141497 -141499 -141509 -141511 -141529 -141539 -141551 -141587 -141601 -141613 -141619 -141623 -141629 -141637 -141649 -141653 -141667 -141671 -141677 -141679 -141689 -141697 -141707 -141709 -141719 -141731 -141761 -141767 -141769 -141773 -141793 -141803 -141811 -141829 -141833 -141851 -141853 -141863 -141871 -141907 -141917 -141931 -141937 -141941 -141959 -141961 -141971 -141991 -142007 -142019 -142031 -142039 -142049 -142057 -142061 -142067 -142097 -142099 -142111 -142123 -142151 -142157 -142159 -142169 -142183 -142189 -142193 -142211 -142217 -142223 -142231 -142237 -142271 -142297 -142319 -142327 -142357 -142369 -142381 -142391 -142403 -142421 -142427 -142433 -142453 -142469 -142501 -142529 -142537 -142543 -142547 -142553 -142559 -142567 -142573 -142589 -142591 -142601 -142607 -142609 -142619 -142657 -142673 -142697 -142699 -142711 -142733 -142757 -142759 -142771 -142787 -142789 -142799 -142811 -142837 -142841 -142867 -142871 -142873 -142897 -142903 -142907 -142939 -142949 -142963 -142969 -142973 -142979 -142981 -142993 -143053 -143063 -143093 -143107 -143111 -143113 -143137 -143141 -143159 -143177 -143197 -143239 -143243 -143249 -143257 -143261 -143263 -143281 -143287 -143291 -143329 -143333 -143357 -143387 -143401 -143413 -143419 -143443 -143461 -143467 -143477 -143483 -143489 -143501 -143503 -143509 -143513 -143519 -143527 -143537 -143551 -143567 -143569 -143573 -143593 -143609 -143617 -143629 -143651 -143653 -143669 -143677 -143687 -143699 -143711 -143719 -143729 -143743 -143779 -143791 -143797 -143807 -143813 -143821 -143827 -143831 -143833 -143873 -143879 -143881 -143909 -143947 -143953 -143971 -143977 -143981 -143999 -144013 -144031 -144037 -144061 -144071 -144073 -144103 -144139 -144161 -144163 -144167 -144169 -144173 -144203 -144223 -144241 -144247 -144253 -144259 -144271 -144289 -144299 -144307 -144311 -144323 -144341 -144349 -144379 -144383 -144407 -144409 -144413 -144427 -144439 -144451 -144461 -144479 -144481 -144497 -144511 -144539 -144541 -144563 -144569 -144577 -144583 -144589 -144593 -144611 -144629 -144659 -144667 -144671 -144701 -144709 -144719 -144731 -144737 -144751 -144757 -144763 -144773 -144779 -144791 -144817 -144829 -144839 -144847 -144883 -144887 -144889 -144899 -144917 -144931 -144941 -144961 -144967 -144973 -144983 -145007 -145009 -145021 -145031 -145037 -145043 -145063 -145069 -145091 -145109 -145121 -145133 -145139 -145177 -145193 -145207 -145213 -145219 -145253 -145259 -145267 -145283 -145289 -145303 -145307 -145349 -145361 -145381 -145391 -145399 -145417 -145423 -145433 -145441 -145451 -145459 -145463 -145471 -145477 -145487 -145501 -145511 -145513 -145517 -145531 -145543 -145547 -145549 -145577 -145589 -145601 -145603 -145633 -145637 -145643 -145661 -145679 -145681 -145687 -145703 -145709 -145721 -145723 -145753 -145757 -145759 -145771 -145777 -145799 -145807 -145819 -145823 -145829 -145861 -145879 -145897 -145903 -145931 -145933 -145949 -145963 -145967 -145969 -145987 -145991 -146009 -146011 -146021 -146023 -146033 -146051 -146057 -146059 -146063 -146077 -146093 -146099 -146117 -146141 -146161 -146173 -146191 -146197 -146203 -146213 -146221 -146239 -146249 -146273 -146291 -146297 -146299 -146309 -146317 -146323 -146347 -146359 -146369 -146381 -146383 -146389 -146407 -146417 -146423 -146437 -146449 -146477 -146513 -146519 -146521 -146527 -146539 -146543 -146563 -146581 -146603 -146609 -146617 -146639 -146647 -146669 -146677 -146681 -146683 -146701 -146719 -146743 -146749 -146767 -146777 -146801 -146807 -146819 -146833 -146837 -146843 -146849 -146857 -146891 -146893 -146917 -146921 -146933 -146941 -146953 -146977 -146983 -146987 -146989 -147011 -147029 -147031 -147047 -147073 -147083 -147089 -147097 -147107 -147137 -147139 -147151 -147163 -147179 -147197 -147209 -147211 -147221 -147227 -147229 -147253 -147263 -147283 -147289 -147293 -147299 -147311 -147319 -147331 -147341 -147347 -147353 -147377 -147391 -147397 -147401 -147409 -147419 -147449 -147451 -147457 -147481 -147487 -147503 -147517 -147541 -147547 -147551 -147557 -147571 -147583 -147607 -147613 -147617 -147629 -147647 -147661 -147671 -147673 -147689 -147703 -147709 -147727 -147739 -147743 -147761 -147769 -147773 -147779 -147787 -147793 -147799 -147811 -147827 -147853 -147859 -147863 -147881 -147919 -147937 -147949 -147977 -147997 -148013 -148021 -148061 -148063 -148073 -148079 -148091 -148123 -148139 -148147 -148151 -148153 -148157 -148171 -148193 -148199 -148201 -148207 -148229 -148243 -148249 -148279 -148301 -148303 -148331 -148339 -148361 -148367 -148381 -148387 -148399 -148403 -148411 -148429 -148439 -148457 -148469 -148471 -148483 -148501 -148513 -148517 -148531 -148537 -148549 -148573 -148579 -148609 -148627 -148633 -148639 -148663 -148667 -148669 -148691 -148693 -148711 -148721 -148723 -148727 -148747 -148763 -148781 -148783 -148793 -148817 -148829 -148853 -148859 -148861 -148867 -148873 -148891 -148913 -148921 -148927 -148931 -148933 -148949 -148957 -148961 -148991 -148997 -149011 -149021 -149027 -149033 -149053 -149057 -149059 -149069 -149077 -149087 -149099 -149101 -149111 -149113 -149119 -149143 -149153 -149159 -149161 -149173 -149183 -149197 -149213 -149239 -149249 -149251 -149257 -149269 -149287 -149297 -149309 -149323 -149333 -149341 -149351 -149371 -149377 -149381 -149393 -149399 -149411 -149417 -149419 -149423 -149441 -149459 -149489 -149491 -149497 -149503 -149519 -149521 -149531 -149533 -149543 -149551 -149561 -149563 -149579 -149603 -149623 -149627 -149629 -149689 -149711 -149713 -149717 -149729 -149731 -149749 -149759 -149767 -149771 -149791 -149803 -149827 -149837 -149839 -149861 -149867 -149873 -149893 -149899 -149909 -149911 -149921 -149939 -149953 -149969 -149971 -149993 -150001 -150011 -150041 -150053 -150061 -150067 -150077 -150083 -150089 -150091 -150097 -150107 -150131 -150151 -150169 -150193 -150197 -150203 -150209 -150211 -150217 -150221 -150223 -150239 -150247 -150287 -150299 -150301 -150323 -150329 -150343 -150373 -150377 -150379 -150383 -150401 -150407 -150413 -150427 -150431 -150439 -150473 -150497 -150503 -150517 -150523 -150533 -150551 -150559 -150571 -150583 -150587 -150589 -150607 -150611 -150617 -150649 -150659 -150697 -150707 -150721 -150743 -150767 -150769 -150779 -150791 -150797 -150827 -150833 -150847 -150869 -150881 -150883 -150889 -150893 -150901 -150907 -150919 -150929 -150959 -150961 -150967 -150979 -150989 -150991 -151007 -151009 -151013 -151027 -151049 -151051 -151057 -151091 -151121 -151141 -151153 -151157 -151163 -151169 -151171 -151189 -151201 -151213 -151237 -151241 -151243 -151247 -151253 -151273 -151279 -151289 -151303 -151337 -151339 -151343 -151357 -151379 -151381 -151391 -151397 -151423 -151429 -151433 -151451 -151471 -151477 -151483 -151499 -151507 -151517 -151523 -151531 -151537 -151549 -151553 -151561 -151573 -151579 -151597 -151603 -151607 -151609 -151631 -151637 -151643 -151651 -151667 -151673 -151681 -151687 -151693 -151703 -151717 -151729 -151733 -151769 -151771 -151783 -151787 -151799 -151813 -151817 -151841 -151847 -151849 -151871 -151883 -151897 -151901 -151903 -151909 -151937 -151939 -151967 -151969 -152003 -152017 -152027 -152029 -152039 -152041 -152063 -152077 -152081 -152083 -152093 -152111 -152123 -152147 -152183 -152189 -152197 -152203 -152213 -152219 -152231 -152239 -152249 -152267 -152287 -152293 -152297 -152311 -152363 -152377 -152381 -152389 -152393 -152407 -152417 -152419 -152423 -152429 -152441 -152443 -152459 -152461 -152501 -152519 -152531 -152533 -152539 -152563 -152567 -152597 -152599 -152617 -152623 -152629 -152639 -152641 -152657 -152671 -152681 -152717 -152723 -152729 -152753 -152767 -152777 -152783 -152791 -152809 -152819 -152821 -152833 -152837 -152839 -152843 -152851 -152857 -152879 -152897 -152899 -152909 -152939 -152941 -152947 -152953 -152959 -152981 -152989 -152993 -153001 -153059 -153067 -153071 -153073 -153077 -153089 -153107 -153113 -153133 -153137 -153151 -153191 -153247 -153259 -153269 -153271 -153277 -153281 -153287 -153313 -153319 -153337 -153343 -153353 -153359 -153371 -153379 -153407 -153409 -153421 -153427 -153437 -153443 -153449 -153457 -153469 -153487 -153499 -153509 -153511 -153521 -153523 -153529 -153533 -153557 -153563 -153589 -153607 -153611 -153623 -153641 -153649 -153689 -153701 -153719 -153733 -153739 -153743 -153749 -153757 -153763 -153817 -153841 -153871 -153877 -153887 -153889 -153911 -153913 -153929 -153941 -153947 -153949 -153953 -153991 -153997 -154001 -154027 -154043 -154057 -154061 -154067 -154073 -154079 -154081 -154087 -154097 -154111 -154127 -154153 -154157 -154159 -154181 -154183 -154211 -154213 -154229 -154243 -154247 -154267 -154277 -154279 -154291 -154303 -154313 -154321 -154333 -154339 -154351 -154369 -154373 -154387 -154409 -154417 -154423 -154439 -154459 -154487 -154493 -154501 -154523 -154543 -154571 -154573 -154579 -154589 -154591 -154613 -154619 -154621 -154643 -154667 -154669 -154681 -154691 -154699 -154723 -154727 -154733 -154747 -154753 -154769 -154787 -154789 -154799 -154807 -154823 -154841 -154849 -154871 -154873 -154877 -154883 -154897 -154927 -154933 -154937 -154943 -154981 -154991 -155003 -155009 -155017 -155027 -155047 -155069 -155081 -155083 -155087 -155119 -155137 -155153 -155161 -155167 -155171 -155191 -155201 -155203 -155209 -155219 -155231 -155251 -155269 -155291 -155299 -155303 -155317 -155327 -155333 -155371 -155377 -155381 -155383 -155387 -155399 -155413 -155423 -155443 -155453 -155461 -155473 -155501 -155509 -155521 -155537 -155539 -155557 -155569 -155579 -155581 -155593 -155599 -155609 -155621 -155627 -155653 -155657 -155663 -155671 -155689 -155693 -155699 -155707 -155717 -155719 -155723 -155731 -155741 -155747 -155773 -155777 -155783 -155797 -155801 -155809 -155821 -155833 -155849 -155851 -155861 -155863 -155887 -155891 -155893 -155921 -156007 -156011 -156019 -156041 -156059 -156061 -156071 -156089 -156109 -156119 -156127 -156131 -156139 -156151 -156157 -156217 -156227 -156229 -156241 -156253 -156257 -156259 -156269 -156307 -156319 -156329 -156347 -156353 -156361 -156371 -156419 -156421 -156437 -156467 -156487 -156491 -156493 -156511 -156521 -156539 -156577 -156589 -156593 -156601 -156619 -156623 -156631 -156641 -156659 -156671 -156677 -156679 -156683 -156691 -156703 -156707 -156719 -156727 -156733 -156749 -156781 -156797 -156799 -156817 -156823 -156833 -156841 -156887 -156899 -156901 -156913 -156941 -156943 -156967 -156971 -156979 -157007 -157013 -157019 -157037 -157049 -157051 -157057 -157061 -157081 -157103 -157109 -157127 -157133 -157141 -157163 -157177 -157181 -157189 -157207 -157211 -157217 -157219 -157229 -157231 -157243 -157247 -157253 -157259 -157271 -157273 -157277 -157279 -157291 -157303 -157307 -157321 -157327 -157349 -157351 -157363 -157393 -157411 -157427 -157429 -157433 -157457 -157477 -157483 -157489 -157513 -157519 -157523 -157543 -157559 -157561 -157571 -157579 -157627 -157637 -157639 -157649 -157667 -157669 -157679 -157721 -157733 -157739 -157747 -157769 -157771 -157793 -157799 -157813 -157823 -157831 -157837 -157841 -157867 -157877 -157889 -157897 -157901 -157907 -157931 -157933 -157951 -157991 -157999 -158003 -158009 -158017 -158029 -158047 -158071 -158077 -158113 -158129 -158141 -158143 -158161 -158189 -158201 -158209 -158227 -158231 -158233 -158243 -158261 -158269 -158293 -158303 -158329 -158341 -158351 -158357 -158359 -158363 -158371 -158393 -158407 -158419 -158429 -158443 -158449 -158489 -158507 -158519 -158527 -158537 -158551 -158563 -158567 -158573 -158581 -158591 -158597 -158611 -158617 -158621 -158633 -158647 -158657 -158663 -158699 -158731 -158747 -158749 -158759 -158761 -158771 -158777 -158791 -158803 -158843 -158849 -158863 -158867 -158881 -158909 -158923 -158927 -158941 -158959 -158981 -158993 -159013 -159017 -159023 -159059 -159073 -159079 -159097 -159113 -159119 -159157 -159161 -159167 -159169 -159179 -159191 -159193 -159199 -159209 -159223 -159227 -159233 -159287 -159293 -159311 -159319 -159337 -159347 -159349 -159361 -159389 -159403 -159407 -159421 -159431 -159437 -159457 -159463 -159469 -159473 -159491 -159499 -159503 -159521 -159539 -159541 -159553 -159563 -159569 -159571 -159589 -159617 -159623 -159629 -159631 -159667 -159671 -159673 -159683 -159697 -159701 -159707 -159721 -159737 -159739 -159763 -159769 -159773 -159779 -159787 -159791 -159793 -159799 -159811 -159833 -159839 -159853 -159857 -159869 -159871 -159899 -159911 -159931 -159937 -159977 -159979 -160001 -160009 -160019 -160031 -160033 -160049 -160073 -160079 -160081 -160087 -160091 -160093 -160117 -160141 -160159 -160163 -160169 -160183 -160201 -160207 -160217 -160231 -160243 -160253 -160309 -160313 -160319 -160343 -160357 -160367 -160373 -160387 -160397 -160403 -160409 -160423 -160441 -160453 -160481 -160483 -160499 -160507 -160541 -160553 -160579 -160583 -160591 -160603 -160619 -160621 -160627 -160637 -160639 -160649 -160651 -160663 -160669 -160681 -160687 -160697 -160709 -160711 -160723 -160739 -160751 -160753 -160757 -160781 -160789 -160807 -160813 -160817 -160829 -160841 -160861 -160877 -160879 -160883 -160903 -160907 -160933 -160967 -160969 -160981 -160997 -161009 -161017 -161033 -161039 -161047 -161053 -161059 -161071 -161087 -161093 -161123 -161137 -161141 -161149 -161159 -161167 -161201 -161221 -161233 -161237 -161263 -161267 -161281 -161303 -161309 -161323 -161333 -161339 -161341 -161363 -161377 -161387 -161407 -161411 -161453 -161459 -161461 -161471 -161503 -161507 -161521 -161527 -161531 -161543 -161561 -161563 -161569 -161573 -161591 -161599 -161611 -161627 -161639 -161641 -161659 -161683 -161717 -161729 -161731 -161741 -161743 -161753 -161761 -161771 -161773 -161779 -161783 -161807 -161831 -161839 -161869 -161873 -161879 -161881 -161911 -161921 -161923 -161947 -161957 -161969 -161971 -161977 -161983 -161999 -162007 -162011 -162017 -162053 -162059 -162079 -162091 -162109 -162119 -162143 -162209 -162221 -162229 -162251 -162257 -162263 -162269 -162277 -162287 -162289 -162293 -162343 -162359 -162389 -162391 -162413 -162419 -162439 -162451 -162457 -162473 -162493 -162499 -162517 -162523 -162527 -162529 -162553 -162557 -162563 -162577 -162593 -162601 -162611 -162623 -162629 -162641 -162649 -162671 -162677 -162683 -162691 -162703 -162709 -162713 -162727 -162731 -162739 -162749 -162751 -162779 -162787 -162791 -162821 -162823 -162829 -162839 -162847 -162853 -162859 -162881 -162889 -162901 -162907 -162917 -162937 -162947 -162971 -162973 -162989 -162997 -163003 -163019 -163021 -163027 -163061 -163063 -163109 -163117 -163127 -163129 -163147 -163151 -163169 -163171 -163181 -163193 -163199 -163211 -163223 -163243 -163249 -163259 -163307 -163309 -163321 -163327 -163337 -163351 -163363 -163367 -163393 -163403 -163409 -163411 -163417 -163433 -163469 -163477 -163481 -163483 -163487 -163517 -163543 -163561 -163567 -163573 -163601 -163613 -163621 -163627 -163633 -163637 -163643 -163661 -163673 -163679 -163697 -163729 -163733 -163741 -163753 -163771 -163781 -163789 -163811 -163819 -163841 -163847 -163853 -163859 -163861 -163871 -163883 -163901 -163909 -163927 -163973 -163979 -163981 -163987 -163991 -163993 -163997 -164011 -164023 -164039 -164051 -164057 -164071 -164089 -164093 -164113 -164117 -164147 -164149 -164173 -164183 -164191 -164201 -164209 -164231 -164233 -164239 -164249 -164251 -164267 -164279 -164291 -164299 -164309 -164321 -164341 -164357 -164363 -164371 -164377 -164387 -164413 -164419 -164429 -164431 -164443 -164447 -164449 -164471 -164477 -164503 -164513 -164531 -164569 -164581 -164587 -164599 -164617 -164621 -164623 -164627 -164653 -164663 -164677 -164683 -164701 -164707 -164729 -164743 -164767 -164771 -164789 -164809 -164821 -164831 -164837 -164839 -164881 -164893 -164911 -164953 -164963 -164987 -164999 -165001 -165037 -165041 -165047 -165049 -165059 -165079 -165083 -165089 -165103 -165133 -165161 -165173 -165181 -165203 -165211 -165229 -165233 -165247 -165287 -165293 -165311 -165313 -165317 -165331 -165343 -165349 -165367 -165379 -165383 -165391 -165397 -165437 -165443 -165449 -165457 -165463 -165469 -165479 -165511 -165523 -165527 -165533 -165541 -165551 -165553 -165559 -165569 -165587 -165589 -165601 -165611 -165617 -165653 -165667 -165673 -165701 -165703 -165707 -165709 -165713 -165719 -165721 -165749 -165779 -165799 -165811 -165817 -165829 -165833 -165857 -165877 -165883 -165887 -165901 -165931 -165941 -165947 -165961 -165983 -166013 -166021 -166027 -166031 -166043 -166063 -166081 -166099 -166147 -166151 -166157 -166169 -166183 -166189 -166207 -166219 -166237 -166247 -166259 -166273 -166289 -166297 -166301 -166303 -166319 -166349 -166351 -166357 -166363 -166393 -166399 -166403 -166409 -166417 -166429 -166457 -166471 -166487 -166541 -166561 -166567 -166571 -166597 -166601 -166603 -166609 -166613 -166619 -166627 -166631 -166643 -166657 -166667 -166669 -166679 -166693 -166703 -166723 -166739 -166741 -166781 -166783 -166799 -166807 -166823 -166841 -166843 -166847 -166849 -166853 -166861 -166867 -166871 -166909 -166919 -166931 -166949 -166967 -166973 -166979 -166987 -167009 -167017 -167021 -167023 -167033 -167039 -167047 -167051 -167071 -167077 -167081 -167087 -167099 -167107 -167113 -167117 -167119 -167149 -167159 -167173 -167177 -167191 -167197 -167213 -167221 -167249 -167261 -167267 -167269 -167309 -167311 -167317 -167329 -167339 -167341 -167381 -167393 -167407 -167413 -167423 -167429 -167437 -167441 -167443 -167449 -167471 -167483 -167491 -167521 -167537 -167543 -167593 -167597 -167611 -167621 -167623 -167627 -167633 -167641 -167663 -167677 -167683 -167711 -167729 -167747 -167759 -167771 -167777 -167779 -167801 -167809 -167861 -167863 -167873 -167879 -167887 -167891 -167899 -167911 -167917 -167953 -167971 -167987 -168013 -168023 -168029 -168037 -168043 -168067 -168071 -168083 -168089 -168109 -168127 -168143 -168151 -168193 -168197 -168211 -168227 -168247 -168253 -168263 -168269 -168277 -168281 -168293 -168323 -168331 -168347 -168353 -168391 -168409 -168433 -168449 -168451 -168457 -168463 -168481 -168491 -168499 -168523 -168527 -168533 -168541 -168559 -168599 -168601 -168617 -168629 -168631 -168643 -168673 -168677 -168697 -168713 -168719 -168731 -168737 -168743 -168761 -168769 -168781 -168803 -168851 -168863 -168869 -168887 -168893 -168899 -168901 -168913 -168937 -168943 -168977 -168991 -169003 -169007 -169009 -169019 -169049 -169063 -169067 -169069 -169079 -169093 -169097 -169111 -169129 -169151 -169159 -169177 -169181 -169199 -169217 -169219 -169241 -169243 -169249 -169259 -169283 -169307 -169313 -169319 -169321 -169327 -169339 -169343 -169361 -169369 -169373 -169399 -169409 -169427 -169457 -169471 -169483 -169489 -169493 -169501 -169523 -169531 -169553 -169567 -169583 -169591 -169607 -169627 -169633 -169639 -169649 -169657 -169661 -169667 -169681 -169691 -169693 -169709 -169733 -169751 -169753 -169769 -169777 -169783 -169789 -169817 -169823 -169831 -169837 -169843 -169859 -169889 -169891 -169909 -169913 -169919 -169933 -169937 -169943 -169951 -169957 -169987 -169991 -170003 -170021 -170029 -170047 -170057 -170063 -170081 -170099 -170101 -170111 -170123 -170141 -170167 -170179 -170189 -170197 -170207 -170213 -170227 -170231 -170239 -170243 -170249 -170263 -170267 -170279 -170293 -170299 -170327 -170341 -170347 -170351 -170353 -170363 -170369 -170371 -170383 -170389 -170393 -170413 -170441 -170447 -170473 -170483 -170497 -170503 -170509 -170537 -170539 -170551 -170557 -170579 -170603 -170609 -170627 -170633 -170641 -170647 -170669 -170689 -170701 -170707 -170711 -170741 -170749 -170759 -170761 -170767 -170773 -170777 -170801 -170809 -170813 -170827 -170837 -170843 -170851 -170857 -170873 -170881 -170887 -170899 -170921 -170927 -170953 -170957 -170971 -171007 -171023 -171029 -171043 -171047 -171049 -171053 -171077 -171079 -171091 -171103 -171131 -171161 -171163 -171167 -171169 -171179 -171203 -171233 -171251 -171253 -171263 -171271 -171293 -171299 -171317 -171329 -171341 -171383 -171401 -171403 -171427 -171439 -171449 -171467 -171469 -171473 -171481 -171491 -171517 -171529 -171539 -171541 -171553 -171559 -171571 -171583 -171617 -171629 -171637 -171641 -171653 -171659 -171671 -171673 -171679 -171697 -171707 -171713 -171719 -171733 -171757 -171761 -171763 -171793 -171799 -171803 -171811 -171823 -171827 -171851 -171863 -171869 -171877 -171881 -171889 -171917 -171923 -171929 -171937 -171947 -172001 -172009 -172021 -172027 -172031 -172049 -172069 -172079 -172093 -172097 -172127 -172147 -172153 -172157 -172169 -172171 -172181 -172199 -172213 -172217 -172219 -172223 -172243 -172259 -172279 -172283 -172297 -172307 -172313 -172321 -172331 -172343 -172351 -172357 -172373 -172399 -172411 -172421 -172423 -172427 -172433 -172439 -172441 -172489 -172507 -172517 -172519 -172541 -172553 -172561 -172573 -172583 -172589 -172597 -172603 -172607 -172619 -172633 -172643 -172649 -172657 -172663 -172673 -172681 -172687 -172709 -172717 -172721 -172741 -172751 -172759 -172787 -172801 -172807 -172829 -172849 -172853 -172859 -172867 -172871 -172877 -172883 -172933 -172969 -172973 -172981 -172987 -172993 -172999 -173021 -173023 -173039 -173053 -173059 -173081 -173087 -173099 -173137 -173141 -173149 -173177 -173183 -173189 -173191 -173207 -173209 -173219 -173249 -173263 -173267 -173273 -173291 -173293 -173297 -173309 -173347 -173357 -173359 -173429 -173431 -173473 -173483 -173491 -173497 -173501 -173531 -173539 -173543 -173549 -173561 -173573 -173599 -173617 -173629 -173647 -173651 -173659 -173669 -173671 -173683 -173687 -173699 -173707 -173713 -173729 -173741 -173743 -173773 -173777 -173779 -173783 -173807 -173819 -173827 -173839 -173851 -173861 -173867 -173891 -173897 -173909 -173917 -173923 -173933 -173969 -173977 -173981 -173993 -174007 -174017 -174019 -174047 -174049 -174061 -174067 -174071 -174077 -174079 -174091 -174101 -174121 -174137 -174143 -174149 -174157 -174169 -174197 -174221 -174241 -174257 -174259 -174263 -174281 -174289 -174299 -174311 -174329 -174331 -174337 -174347 -174367 -174389 -174407 -174413 -174431 -174443 -174457 -174467 -174469 -174481 -174487 -174491 -174527 -174533 -174569 -174571 -174583 -174599 -174613 -174617 -174631 -174637 -174649 -174653 -174659 -174673 -174679 -174703 -174721 -174737 -174749 -174761 -174763 -174767 -174773 -174799 -174821 -174829 -174851 -174859 -174877 -174893 -174901 -174907 -174917 -174929 -174931 -174943 -174959 -174989 -174991 -175003 -175013 -175039 -175061 -175067 -175069 -175079 -175081 -175103 -175129 -175141 -175211 -175229 -175261 -175267 -175277 -175291 -175303 -175309 -175327 -175333 -175349 -175361 -175391 -175393 -175403 -175411 -175433 -175447 -175453 -175463 -175481 -175493 -175499 -175519 -175523 -175543 -175573 -175601 -175621 -175631 -175633 -175649 -175663 -175673 -175687 -175691 -175699 -175709 -175723 -175727 -175753 -175757 -175759 -175781 -175783 -175811 -175829 -175837 -175843 -175853 -175859 -175873 -175891 -175897 -175909 -175919 -175937 -175939 -175949 -175961 -175963 -175979 -175991 -175993 -176017 -176021 -176023 -176041 -176047 -176051 -176053 -176063 -176081 -176087 -176089 -176123 -176129 -176153 -176159 -176161 -176179 -176191 -176201 -176207 -176213 -176221 -176227 -176237 -176243 -176261 -176299 -176303 -176317 -176321 -176327 -176329 -176333 -176347 -176353 -176357 -176369 -176383 -176389 -176401 -176413 -176417 -176419 -176431 -176459 -176461 -176467 -176489 -176497 -176503 -176507 -176509 -176521 -176531 -176537 -176549 -176551 -176557 -176573 -176591 -176597 -176599 -176609 -176611 -176629 -176641 -176651 -176677 -176699 -176711 -176713 -176741 -176747 -176753 -176777 -176779 -176789 -176791 -176797 -176807 -176809 -176819 -176849 -176857 -176887 -176899 -176903 -176921 -176923 -176927 -176933 -176951 -176977 -176983 -176989 -177007 -177011 -177013 -177019 -177043 -177091 -177101 -177109 -177113 -177127 -177131 -177167 -177173 -177209 -177211 -177217 -177223 -177239 -177257 -177269 -177283 -177301 -177319 -177323 -177337 -177347 -177379 -177383 -177409 -177421 -177427 -177431 -177433 -177467 -177473 -177481 -177487 -177493 -177511 -177533 -177539 -177553 -177589 -177601 -177623 -177647 -177677 -177679 -177691 -177739 -177743 -177761 -177763 -177787 -177791 -177797 -177811 -177823 -177839 -177841 -177883 -177887 -177889 -177893 -177907 -177913 -177917 -177929 -177943 -177949 -177953 -177967 -177979 -178001 -178021 -178037 -178039 -178067 -178069 -178091 -178093 -178103 -178117 -178127 -178141 -178151 -178169 -178183 -178187 -178207 -178223 -178231 -178247 -178249 -178259 -178261 -178289 -178301 -178307 -178327 -178333 -178349 -178351 -178361 -178393 -178397 -178403 -178417 -178439 -178441 -178447 -178469 -178481 -178487 -178489 -178501 -178513 -178531 -178537 -178559 -178561 -178567 -178571 -178597 -178601 -178603 -178609 -178613 -178621 -178627 -178639 -178643 -178681 -178691 -178693 -178697 -178753 -178757 -178781 -178793 -178799 -178807 -178813 -178817 -178819 -178831 -178853 -178859 -178873 -178877 -178889 -178897 -178903 -178907 -178909 -178921 -178931 -178933 -178939 -178951 -178973 -178987 -179021 -179029 -179033 -179041 -179051 -179057 -179083 -179089 -179099 -179107 -179111 -179119 -179143 -179161 -179167 -179173 -179203 -179209 -179213 -179233 -179243 -179261 -179269 -179281 -179287 -179317 -179321 -179327 -179351 -179357 -179369 -179381 -179383 -179393 -179407 -179411 -179429 -179437 -179441 -179453 -179461 -179471 -179479 -179483 -179497 -179519 -179527 -179533 -179549 -179563 -179573 -179579 -179581 -179591 -179593 -179603 -179623 -179633 -179651 -179657 -179659 -179671 -179687 -179689 -179693 -179717 -179719 -179737 -179743 -179749 -179779 -179801 -179807 -179813 -179819 -179821 -179827 -179833 -179849 -179897 -179899 -179903 -179909 -179917 -179923 -179939 -179947 -179951 -179953 -179957 -179969 -179981 -179989 -179999 -180001 -180007 -180023 -180043 -180053 -180071 -180073 -180077 -180097 -180137 -180161 -180179 -180181 -180211 -180221 -180233 -180239 -180241 -180247 -180259 -180263 -180281 -180287 -180289 -180307 -180311 -180317 -180331 -180337 -180347 -180361 -180371 -180379 -180391 -180413 -180419 -180437 -180463 -180473 -180491 -180497 -180503 -180511 -180533 -180539 -180541 -180547 -180563 -180569 -180617 -180623 -180629 -180647 -180667 -180679 -180701 -180731 -180749 -180751 -180773 -180779 -180793 -180797 -180799 -180811 -180847 -180871 -180883 -180907 -180949 -180959 -181001 -181003 -181019 -181031 -181039 -181061 -181063 -181081 -181087 -181123 -181141 -181157 -181183 -181193 -181199 -181201 -181211 -181213 -181219 -181243 -181253 -181273 -181277 -181283 -181297 -181301 -181303 -181361 -181387 -181397 -181399 -181409 -181421 -181439 -181457 -181459 -181499 -181501 -181513 -181523 -181537 -181549 -181553 -181603 -181607 -181609 -181619 -181639 -181667 -181669 -181693 -181711 -181717 -181721 -181729 -181739 -181751 -181757 -181759 -181763 -181777 -181787 -181789 -181813 -181837 -181871 -181873 -181889 -181891 -181903 -181913 -181919 -181927 -181931 -181943 -181957 -181967 -181981 -181997 -182009 -182011 -182027 -182029 -182041 -182047 -182057 -182059 -182089 -182099 -182101 -182107 -182111 -182123 -182129 -182131 -182141 -182159 -182167 -182177 -182179 -182201 -182209 -182233 -182239 -182243 -182261 -182279 -182297 -182309 -182333 -182339 -182341 -182353 -182387 -182389 -182417 -182423 -182431 -182443 -182453 -182467 -182471 -182473 -182489 -182503 -182509 -182519 -182537 -182549 -182561 -182579 -182587 -182593 -182599 -182603 -182617 -182627 -182639 -182641 -182653 -182657 -182659 -182681 -182687 -182701 -182711 -182713 -182747 -182773 -182779 -182789 -182803 -182813 -182821 -182839 -182851 -182857 -182867 -182887 -182893 -182899 -182921 -182927 -182929 -182933 -182953 -182957 -182969 -182981 -182999 -183023 -183037 -183041 -183047 -183059 -183067 -183089 -183091 -183119 -183151 -183167 -183191 -183203 -183247 -183259 -183263 -183283 -183289 -183299 -183301 -183307 -183317 -183319 -183329 -183343 -183349 -183361 -183373 -183377 -183383 -183389 -183397 -183437 -183439 -183451 -183461 -183473 -183479 -183487 -183497 -183499 -183503 -183509 -183511 -183523 -183527 -183569 -183571 -183577 -183581 -183587 -183593 -183611 -183637 -183661 -183683 -183691 -183697 -183707 -183709 -183713 -183761 -183763 -183797 -183809 -183823 -183829 -183871 -183877 -183881 -183907 -183917 -183919 -183943 -183949 -183959 -183971 -183973 -183979 -184003 -184007 -184013 -184031 -184039 -184043 -184057 -184073 -184081 -184087 -184111 -184117 -184133 -184153 -184157 -184181 -184187 -184189 -184199 -184211 -184231 -184241 -184259 -184271 -184273 -184279 -184291 -184309 -184321 -184333 -184337 -184351 -184369 -184409 -184417 -184441 -184447 -184463 -184477 -184487 -184489 -184511 -184517 -184523 -184553 -184559 -184567 -184571 -184577 -184607 -184609 -184627 -184631 -184633 -184649 -184651 -184669 -184687 -184693 -184703 -184711 -184721 -184727 -184733 -184753 -184777 -184823 -184829 -184831 -184837 -184843 -184859 -184879 -184901 -184903 -184913 -184949 -184957 -184967 -184969 -184993 -184997 -184999 -185021 -185027 -185051 -185057 -185063 -185069 -185071 -185077 -185089 -185099 -185123 -185131 -185137 -185149 -185153 -185161 -185167 -185177 -185183 -185189 -185221 -185233 -185243 -185267 -185291 -185299 -185303 -185309 -185323 -185327 -185359 -185363 -185369 -185371 -185401 -185429 -185441 -185467 -185477 -185483 -185491 -185519 -185527 -185531 -185533 -185539 -185543 -185551 -185557 -185567 -185569 -185593 -185599 -185621 -185641 -185651 -185677 -185681 -185683 -185693 -185699 -185707 -185711 -185723 -185737 -185747 -185749 -185753 -185767 -185789 -185797 -185813 -185819 -185821 -185831 -185833 -185849 -185869 -185873 -185893 -185897 -185903 -185917 -185923 -185947 -185951 -185957 -185959 -185971 -185987 -185993 -186007 -186013 -186019 -186023 -186037 -186041 -186049 -186071 -186097 -186103 -186107 -186113 -186119 -186149 -186157 -186161 -186163 -186187 -186191 -186211 -186227 -186229 -186239 -186247 -186253 -186259 -186271 -186283 -186299 -186301 -186311 -186317 -186343 -186377 -186379 -186391 -186397 -186419 -186437 -186451 -186469 -186479 -186481 -186551 -186569 -186581 -186583 -186587 -186601 -186619 -186629 -186647 -186649 -186653 -186671 -186679 -186689 -186701 -186707 -186709 -186727 -186733 -186743 -186757 -186761 -186763 -186773 -186793 -186799 -186841 -186859 -186869 -186871 -186877 -186883 -186889 -186917 -186947 -186959 -187003 -187009 -187027 -187043 -187049 -187067 -187069 -187073 -187081 -187091 -187111 -187123 -187127 -187129 -187133 -187139 -187141 -187163 -187171 -187177 -187181 -187189 -187193 -187211 -187217 -187219 -187223 -187237 -187273 -187277 -187303 -187337 -187339 -187349 -187361 -187367 -187373 -187379 -187387 -187393 -187409 -187417 -187423 -187433 -187441 -187463 -187469 -187471 -187477 -187507 -187513 -187531 -187547 -187559 -187573 -187597 -187631 -187633 -187637 -187639 -187651 -187661 -187669 -187687 -187699 -187711 -187721 -187751 -187763 -187787 -187793 -187823 -187843 -187861 -187871 -187877 -187883 -187897 -187907 -187909 -187921 -187927 -187931 -187951 -187963 -187973 -187987 -188011 -188017 -188021 -188029 -188107 -188137 -188143 -188147 -188159 -188171 -188179 -188189 -188197 -188249 -188261 -188273 -188281 -188291 -188299 -188303 -188311 -188317 -188323 -188333 -188351 -188359 -188369 -188389 -188401 -188407 -188417 -188431 -188437 -188443 -188459 -188473 -188483 -188491 -188519 -188527 -188533 -188563 -188579 -188603 -188609 -188621 -188633 -188653 -188677 -188681 -188687 -188693 -188701 -188707 -188711 -188719 -188729 -188753 -188767 -188779 -188791 -188801 -188827 -188831 -188833 -188843 -188857 -188861 -188863 -188869 -188891 -188911 -188927 -188933 -188939 -188941 -188953 -188957 -188983 -188999 -189011 -189017 -189019 -189041 -189043 -189061 -189067 -189127 -189139 -189149 -189151 -189169 -189187 -189199 -189223 -189229 -189239 -189251 -189253 -189257 -189271 -189307 -189311 -189337 -189347 -189349 -189353 -189361 -189377 -189389 -189391 -189401 -189407 -189421 -189433 -189437 -189439 -189463 -189467 -189473 -189479 -189491 -189493 -189509 -189517 -189523 -189529 -189547 -189559 -189583 -189593 -189599 -189613 -189617 -189619 -189643 -189653 -189661 -189671 -189691 -189697 -189701 -189713 -189733 -189743 -189757 -189767 -189797 -189799 -189817 -189823 -189851 -189853 -189859 -189877 -189881 -189887 -189901 -189913 -189929 -189947 -189949 -189961 -189967 -189977 -189983 -189989 -189997 -190027 -190031 -190051 -190063 -190093 -190097 -190121 -190129 -190147 -190159 -190181 -190207 -190243 -190249 -190261 -190271 -190283 -190297 -190301 -190313 -190321 -190331 -190339 -190357 -190367 -190369 -190387 -190391 -190403 -190409 -190471 -190507 -190523 -190529 -190537 -190543 -190573 -190577 -190579 -190583 -190591 -190607 -190613 -190633 -190639 -190649 -190657 -190667 -190669 -190699 -190709 -190711 -190717 -190753 -190759 -190763 -190769 -190783 -190787 -190793 -190807 -190811 -190823 -190829 -190837 -190843 -190871 -190889 -190891 -190901 -190909 -190913 -190921 -190979 -190997 -191021 -191027 -191033 -191039 -191047 -191057 -191071 -191089 -191099 -191119 -191123 -191137 -191141 -191143 -191161 -191173 -191189 -191227 -191231 -191237 -191249 -191251 -191281 -191297 -191299 -191339 -191341 -191353 -191413 -191441 -191447 -191449 -191453 -191459 -191461 -191467 -191473 -191491 -191497 -191507 -191509 -191519 -191531 -191533 -191537 -191551 -191561 -191563 -191579 -191599 -191621 -191627 -191657 -191669 -191671 -191677 -191689 -191693 -191699 -191707 -191717 -191747 -191749 -191773 -191783 -191791 -191801 -191803 -191827 -191831 -191833 -191837 -191861 -191899 -191903 -191911 -191929 -191953 -191969 -191977 -191999 -192007 -192013 -192029 -192037 -192043 -192047 -192053 -192091 -192097 -192103 -192113 -192121 -192133 -192149 -192161 -192173 -192187 -192191 -192193 -192229 -192233 -192239 -192251 -192259 -192263 -192271 -192307 -192317 -192319 -192323 -192341 -192343 -192347 -192373 -192377 -192383 -192391 -192407 -192431 -192461 -192463 -192497 -192499 -192529 -192539 -192547 -192553 -192557 -192571 -192581 -192583 -192587 -192601 -192611 -192613 -192617 -192629 -192631 -192637 -192667 -192677 -192697 -192737 -192743 -192749 -192757 -192767 -192781 -192791 -192799 -192811 -192817 -192833 -192847 -192853 -192859 -192877 -192883 -192887 -192889 -192917 -192923 -192931 -192949 -192961 -192971 -192977 -192979 -192991 -193003 -193009 -193013 -193031 -193043 -193051 -193057 -193073 -193093 -193133 -193139 -193147 -193153 -193163 -193181 -193183 -193189 -193201 -193243 -193247 -193261 -193283 -193301 -193327 -193337 -193357 -193367 -193373 -193379 -193381 -193387 -193393 -193423 -193433 -193441 -193447 -193451 -193463 -193469 -193493 -193507 -193513 -193541 -193549 -193559 -193573 -193577 -193597 -193601 -193603 -193607 -193619 -193649 -193663 -193679 -193703 -193723 -193727 -193741 -193751 -193757 -193763 -193771 -193789 -193793 -193799 -193811 -193813 -193841 -193847 -193859 -193861 -193871 -193873 -193877 -193883 -193891 -193937 -193939 -193943 -193951 -193957 -193979 -193993 -194003 -194017 -194027 -194057 -194069 -194071 -194083 -194087 -194093 -194101 -194113 -194119 -194141 -194149 -194167 -194179 -194197 -194203 -194239 -194263 -194267 -194269 -194309 -194323 -194353 -194371 -194377 -194413 -194431 -194443 -194471 -194479 -194483 -194507 -194521 -194527 -194543 -194569 -194581 -194591 -194609 -194647 -194653 -194659 -194671 -194681 -194683 -194687 -194707 -194713 -194717 -194723 -194729 -194749 -194767 -194771 -194809 -194813 -194819 -194827 -194839 -194861 -194863 -194867 -194869 -194891 -194899 -194911 -194917 -194933 -194963 -194977 -194981 -194989 -195023 -195029 -195043 -195047 -195049 -195053 -195071 -195077 -195089 -195103 -195121 -195127 -195131 -195137 -195157 -195161 -195163 -195193 -195197 -195203 -195229 -195241 -195253 -195259 -195271 -195277 -195281 -195311 -195319 -195329 -195341 -195343 -195353 -195359 -195389 -195401 -195407 -195413 -195427 -195443 -195457 -195469 -195479 -195493 -195497 -195511 -195527 -195539 -195541 -195581 -195593 -195599 -195659 -195677 -195691 -195697 -195709 -195731 -195733 -195737 -195739 -195743 -195751 -195761 -195781 -195787 -195791 -195809 -195817 -195863 -195869 -195883 -195887 -195893 -195907 -195913 -195919 -195929 -195931 -195967 -195971 -195973 -195977 -195991 -195997 -196003 -196033 -196039 -196043 -196051 -196073 -196081 -196087 -196111 -196117 -196139 -196159 -196169 -196171 -196177 -196181 -196187 -196193 -196201 -196247 -196271 -196277 -196279 -196291 -196303 -196307 -196331 -196337 -196379 -196387 -196429 -196439 -196453 -196459 -196477 -196499 -196501 -196519 -196523 -196541 -196543 -196549 -196561 -196579 -196583 -196597 -196613 -196643 -196657 -196661 -196663 -196681 -196687 -196699 -196709 -196717 -196727 -196739 -196751 -196769 -196771 -196799 -196817 -196831 -196837 -196853 -196871 -196873 -196879 -196901 -196907 -196919 -196927 -196961 -196991 -196993 -197003 -197009 -197023 -197033 -197059 -197063 -197077 -197083 -197089 -197101 -197117 -197123 -197137 -197147 -197159 -197161 -197203 -197207 -197221 -197233 -197243 -197257 -197261 -197269 -197273 -197279 -197293 -197297 -197299 -197311 -197339 -197341 -197347 -197359 -197369 -197371 -197381 -197383 -197389 -197419 -197423 -197441 -197453 -197479 -197507 -197521 -197539 -197551 -197567 -197569 -197573 -197597 -197599 -197609 -197621 -197641 -197647 -197651 -197677 -197683 -197689 -197699 -197711 -197713 -197741 -197753 -197759 -197767 -197773 -197779 -197803 -197807 -197831 -197837 -197887 -197891 -197893 -197909 -197921 -197927 -197933 -197947 -197957 -197959 -197963 -197969 -197971 -198013 -198017 -198031 -198043 -198047 -198073 -198083 -198091 -198097 -198109 -198127 -198139 -198173 -198179 -198193 -198197 -198221 -198223 -198241 -198251 -198257 -198259 -198277 -198281 -198301 -198313 -198323 -198337 -198347 -198349 -198377 -198391 -198397 -198409 -198413 -198427 -198437 -198439 -198461 -198463 -198469 -198479 -198491 -198503 -198529 -198533 -198553 -198571 -198589 -198593 -198599 -198613 -198623 -198637 -198641 -198647 -198659 -198673 -198689 -198701 -198719 -198733 -198761 -198769 -198811 -198817 -198823 -198827 -198829 -198833 -198839 -198841 -198851 -198859 -198899 -198901 -198929 -198937 -198941 -198943 -198953 -198959 -198967 -198971 -198977 -198997 -199021 -199033 -199037 -199039 -199049 -199081 -199103 -199109 -199151 -199153 -199181 -199193 -199207 -199211 -199247 -199261 -199267 -199289 -199313 -199321 -199337 -199343 -199357 -199373 -199379 -199399 -199403 -199411 -199417 -199429 -199447 -199453 -199457 -199483 -199487 -199489 -199499 -199501 -199523 -199559 -199567 -199583 -199601 -199603 -199621 -199637 -199657 -199669 -199673 -199679 -199687 -199697 -199721 -199729 -199739 -199741 -199751 -199753 -199777 -199783 -199799 -199807 -199811 -199813 -199819 -199831 -199853 -199873 -199877 -199889 -199909 -199921 -199931 -199933 -199961 -199967 -199999 -200003 -200009 -200017 -200023 -200029 -200033 -200041 -200063 -200087 -200117 -200131 -200153 -200159 -200171 -200177 -200183 -200191 -200201 -200227 -200231 -200237 -200257 -200273 -200293 -200297 -200323 -200329 -200341 -200351 -200357 -200363 -200371 -200381 -200383 -200401 -200407 -200437 -200443 -200461 -200467 -200483 -200513 -200569 -200573 -200579 -200587 -200591 -200597 -200609 -200639 -200657 -200671 -200689 -200699 -200713 -200723 -200731 -200771 -200779 -200789 -200797 -200807 -200843 -200861 -200867 -200869 -200881 -200891 -200899 -200903 -200909 -200927 -200929 -200971 -200983 -200987 -200989 -201007 -201011 -201031 -201037 -201049 -201073 -201101 -201107 -201119 -201121 -201139 -201151 -201163 -201167 -201193 -201203 -201209 -201211 -201233 -201247 -201251 -201281 -201287 -201307 -201329 -201337 -201359 -201389 -201401 -201403 -201413 -201437 -201449 -201451 -201473 -201491 -201493 -201497 -201499 -201511 -201517 -201547 -201557 -201577 -201581 -201589 -201599 -201611 -201623 -201629 -201653 -201661 -201667 -201673 -201683 -201701 -201709 -201731 -201743 -201757 -201767 -201769 -201781 -201787 -201791 -201797 -201809 -201821 -201823 -201827 -201829 -201833 -201847 -201881 -201889 -201893 -201907 -201911 -201919 -201923 -201937 -201947 -201953 -201961 -201973 -201979 -201997 -202001 -202021 -202031 -202049 -202061 -202063 -202067 -202087 -202099 -202109 -202121 -202127 -202129 -202183 -202187 -202201 -202219 -202231 -202243 -202277 -202289 -202291 -202309 -202327 -202339 -202343 -202357 -202361 -202381 -202387 -202393 -202403 -202409 -202441 -202471 -202481 -202493 -202519 -202529 -202549 -202567 -202577 -202591 -202613 -202621 -202627 -202637 -202639 -202661 -202667 -202679 -202693 -202717 -202729 -202733 -202747 -202751 -202753 -202757 -202777 -202799 -202817 -202823 -202841 -202859 -202877 -202879 -202889 -202907 -202921 -202931 -202933 -202949 -202967 -202973 -202981 -202987 -202999 -203011 -203017 -203023 -203039 -203051 -203057 -203117 -203141 -203173 -203183 -203207 -203209 -203213 -203221 -203227 -203233 -203249 -203279 -203293 -203309 -203311 -203317 -203321 -203323 -203339 -203341 -203351 -203353 -203363 -203381 -203383 -203387 -203393 -203417 -203419 -203429 -203431 -203449 -203459 -203461 -203531 -203549 -203563 -203569 -203579 -203591 -203617 -203627 -203641 -203653 -203657 -203659 -203663 -203669 -203713 -203761 -203767 -203771 -203773 -203789 -203807 -203809 -203821 -203843 -203857 -203869 -203873 -203897 -203909 -203911 -203921 -203947 -203953 -203969 -203971 -203977 -203989 -203999 -204007 -204013 -204019 -204023 -204047 -204059 -204067 -204101 -204107 -204133 -204137 -204143 -204151 -204161 -204163 -204173 -204233 -204251 -204299 -204301 -204311 -204319 -204329 -204331 -204353 -204359 -204361 -204367 -204371 -204377 -204397 -204427 -204431 -204437 -204439 -204443 -204461 -204481 -204487 -204509 -204511 -204517 -204521 -204557 -204563 -204583 -204587 -204599 -204601 -204613 -204623 -204641 -204667 -204679 -204707 -204719 -204733 -204749 -204751 -204781 -204791 -204793 -204797 -204803 -204821 -204857 -204859 -204871 -204887 -204913 -204917 -204923 -204931 -204947 -204973 -204979 -204983 -205019 -205031 -205033 -205043 -205063 -205069 -205081 -205097 -205103 -205111 -205129 -205133 -205141 -205151 -205157 -205171 -205187 -205201 -205211 -205213 -205223 -205237 -205253 -205267 -205297 -205307 -205319 -205327 -205339 -205357 -205391 -205397 -205399 -205417 -205421 -205423 -205427 -205433 -205441 -205453 -205463 -205477 -205483 -205487 -205493 -205507 -205519 -205529 -205537 -205549 -205553 -205559 -205589 -205603 -205607 -205619 -205627 -205633 -205651 -205657 -205661 -205663 -205703 -205721 -205759 -205763 -205783 -205817 -205823 -205837 -205847 -205879 -205883 -205913 -205937 -205949 -205951 -205957 -205963 -205967 -205981 -205991 -205993 -206009 -206021 -206027 -206033 -206039 -206047 -206051 -206069 -206077 -206081 -206083 -206123 -206153 -206177 -206179 -206183 -206191 -206197 -206203 -206209 -206221 -206233 -206237 -206249 -206251 -206263 -206273 -206279 -206281 -206291 -206299 -206303 -206341 -206347 -206351 -206369 -206383 -206399 -206407 -206411 -206413 -206419 -206447 -206461 -206467 -206477 -206483 -206489 -206501 -206519 -206527 -206543 -206551 -206593 -206597 -206603 -206623 -206627 -206639 -206641 -206651 -206699 -206749 -206779 -206783 -206803 -206807 -206813 -206819 -206821 -206827 -206879 -206887 -206897 -206909 -206911 -206917 -206923 -206933 -206939 -206951 -206953 -206993 -207013 -207017 -207029 -207037 -207041 -207061 -207073 -207079 -207113 -207121 -207127 -207139 -207169 -207187 -207191 -207197 -207199 -207227 -207239 -207241 -207257 -207269 -207287 -207293 -207301 -207307 -207329 -207331 -207341 -207343 -207367 -207371 -207377 -207401 -207409 -207433 -207443 -207457 -207463 -207469 -207479 -207481 -207491 -207497 -207509 -207511 -207517 -207521 -207523 -207541 -207547 -207551 -207563 -207569 -207589 -207593 -207619 -207629 -207643 -207653 -207661 -207671 -207673 -207679 -207709 -207719 -207721 -207743 -207763 -207769 -207797 -207799 -207811 -207821 -207833 -207847 -207869 -207877 -207923 -207931 -207941 -207947 -207953 -207967 -207971 -207973 -207997 -208001 -208003 -208009 -208037 -208049 -208057 -208067 -208073 -208099 -208111 -208121 -208129 -208139 -208141 -208147 -208189 -208207 -208213 -208217 -208223 -208231 -208253 -208261 -208277 -208279 -208283 -208291 -208309 -208319 -208333 -208337 -208367 -208379 -208387 -208391 -208393 -208409 -208433 -208441 -208457 -208459 -208463 -208469 -208489 -208493 -208499 -208501 -208511 -208513 -208519 -208529 -208553 -208577 -208589 -208591 -208609 -208627 -208631 -208657 -208667 -208673 -208687 -208697 -208699 -208721 -208729 -208739 -208759 -208787 -208799 -208807 -208837 -208843 -208877 -208889 -208891 -208907 -208927 -208931 -208933 -208961 -208963 -208991 -208993 -208997 -209021 -209029 -209039 -209063 -209071 -209089 -209123 -209147 -209159 -209173 -209179 -209189 -209201 -209203 -209213 -209221 -209227 -209233 -209249 -209257 -209263 -209267 -209269 -209299 -209311 -209317 -209327 -209333 -209347 -209353 -209357 -209359 -209371 -209381 -209393 -209401 -209431 -209441 -209449 -209459 -209471 -209477 -209497 -209519 -209533 -209543 -209549 -209563 -209567 -209569 -209579 -209581 -209597 -209621 -209623 -209639 -209647 -209659 -209669 -209687 -209701 -209707 -209717 -209719 -209743 -209767 -209771 -209789 -209801 -209809 -209813 -209819 -209821 -209837 -209851 -209857 -209861 -209887 -209917 -209927 -209929 -209939 -209953 -209959 -209971 -209977 -209983 -209987 -210011 -210019 -210031 -210037 -210053 -210071 -210097 -210101 -210109 -210113 -210127 -210131 -210139 -210143 -210157 -210169 -210173 -210187 -210191 -210193 -210209 -210229 -210233 -210241 -210247 -210257 -210263 -210277 -210283 -210299 -210317 -210319 -210323 -210347 -210359 -210361 -210391 -210401 -210403 -210407 -210421 -210437 -210461 -210467 -210481 -210487 -210491 -210499 -210523 -210527 -210533 -210557 -210599 -210601 -210619 -210631 -210643 -210659 -210671 -210709 -210713 -210719 -210731 -210739 -210761 -210773 -210803 -210809 -210811 -210823 -210827 -210839 -210853 -210857 -210869 -210901 -210907 -210911 -210913 -210923 -210929 -210943 -210961 -210967 -211007 -211039 -211049 -211051 -211061 -211063 -211067 -211073 -211093 -211097 -211129 -211151 -211153 -211177 -211187 -211193 -211199 -211213 -211217 -211219 -211229 -211231 -211241 -211247 -211271 -211283 -211291 -211297 -211313 -211319 -211333 -211339 -211349 -211369 -211373 -211403 -211427 -211433 -211441 -211457 -211469 -211493 -211499 -211501 -211507 -211543 -211559 -211571 -211573 -211583 -211597 -211619 -211639 -211643 -211657 -211661 -211663 -211681 -211691 -211693 -211711 -211723 -211727 -211741 -211747 -211777 -211781 -211789 -211801 -211811 -211817 -211859 -211867 -211873 -211877 -211879 -211889 -211891 -211927 -211931 -211933 -211943 -211949 -211969 -211979 -211997 -212029 -212039 -212057 -212081 -212099 -212117 -212123 -212131 -212141 -212161 -212167 -212183 -212203 -212207 -212209 -212227 -212239 -212243 -212281 -212293 -212297 -212353 -212369 -212383 -212411 -212419 -212423 -212437 -212447 -212453 -212461 -212467 -212479 -212501 -212507 -212557 -212561 -212573 -212579 -212587 -212593 -212627 -212633 -212651 -212669 -212671 -212677 -212683 -212701 -212777 -212791 -212801 -212827 -212837 -212843 -212851 -212867 -212869 -212873 -212881 -212897 -212903 -212909 -212917 -212923 -212969 -212981 -212987 -212999 -213019 -213023 -213029 -213043 -213067 -213079 -213091 -213097 -213119 -213131 -213133 -213139 -213149 -213173 -213181 -213193 -213203 -213209 -213217 -213223 -213229 -213247 -213253 -213263 -213281 -213287 -213289 -213307 -213319 -213329 -213337 -213349 -213359 -213361 -213383 -213391 -213397 -213407 -213449 -213461 -213467 -213481 -213491 -213523 -213533 -213539 -213553 -213557 -213589 -213599 -213611 -213613 -213623 -213637 -213641 -213649 -213659 -213713 -213721 -213727 -213737 -213751 -213791 -213799 -213821 -213827 -213833 -213847 -213859 -213881 -213887 -213901 -213919 -213929 -213943 -213947 -213949 -213953 -213973 -213977 -213989 -214003 -214007 -214009 -214021 -214031 -214033 -214043 -214051 -214063 -214069 -214087 -214091 -214129 -214133 -214141 -214147 -214163 -214177 -214189 -214211 -214213 -214219 -214237 -214243 -214259 -214283 -214297 -214309 -214351 -214363 -214373 -214381 -214391 -214399 -214433 -214439 -214451 -214457 -214463 -214469 -214481 -214483 -214499 -214507 -214517 -214519 -214531 -214541 -214559 -214561 -214589 -214603 -214607 -214631 -214639 -214651 -214657 -214663 -214667 -214673 -214691 -214723 -214729 -214733 -214741 -214759 -214763 -214771 -214783 -214787 -214789 -214807 -214811 -214817 -214831 -214849 -214853 -214867 -214883 -214891 -214913 -214939 -214943 -214967 -214987 -214993 -215051 -215063 -215077 -215087 -215123 -215141 -215143 -215153 -215161 -215179 -215183 -215191 -215197 -215239 -215249 -215261 -215273 -215279 -215297 -215309 -215317 -215329 -215351 -215353 -215359 -215381 -215389 -215393 -215399 -215417 -215443 -215447 -215459 -215461 -215471 -215483 -215497 -215503 -215507 -215521 -215531 -215563 -215573 -215587 -215617 -215653 -215659 -215681 -215687 -215689 -215693 -215723 -215737 -215753 -215767 -215771 -215797 -215801 -215827 -215833 -215843 -215851 -215857 -215863 -215893 -215899 -215909 -215921 -215927 -215939 -215953 -215959 -215981 -215983 -216023 -216037 -216061 -216071 -216091 -216103 -216107 -216113 -216119 -216127 -216133 -216149 -216157 -216173 -216179 -216211 -216217 -216233 -216259 -216263 -216289 -216317 -216319 -216329 -216347 -216371 -216373 -216379 -216397 -216401 -216421 -216431 -216451 -216481 -216493 -216509 -216523 -216551 -216553 -216569 -216571 -216577 -216607 -216617 -216641 -216647 -216649 -216653 -216661 -216679 -216703 -216719 -216731 -216743 -216751 -216757 -216761 -216779 -216781 -216787 -216791 -216803 -216829 -216841 -216851 -216859 -216877 -216899 -216901 -216911 -216917 -216919 -216947 -216967 -216973 -216991 -217001 -217003 -217027 -217033 -217057 -217069 -217081 -217111 -217117 -217121 -217157 -217163 -217169 -217199 -217201 -217207 -217219 -217223 -217229 -217241 -217253 -217271 -217307 -217309 -217313 -217319 -217333 -217337 -217339 -217351 -217361 -217363 -217367 -217369 -217387 -217397 -217409 -217411 -217421 -217429 -217439 -217457 -217463 -217489 -217499 -217517 -217519 -217559 -217561 -217573 -217577 -217579 -217619 -217643 -217661 -217667 -217681 -217687 -217691 -217697 -217717 -217727 -217733 -217739 -217747 -217771 -217781 -217793 -217823 -217829 -217849 -217859 -217901 -217907 -217909 -217933 -217937 -217969 -217979 -217981 -218003 -218021 -218047 -218069 -218077 -218081 -218083 -218087 -218107 -218111 -218117 -218131 -218137 -218143 -218149 -218171 -218191 -218213 -218227 -218233 -218249 -218279 -218287 -218357 -218363 -218371 -218381 -218389 -218401 -218417 -218419 -218423 -218437 -218447 -218453 -218459 -218461 -218479 -218509 -218513 -218521 -218527 -218531 -218549 -218551 -218579 -218591 -218599 -218611 -218623 -218627 -218629 -218641 -218651 -218657 -218677 -218681 -218711 -218717 -218719 -218723 -218737 -218749 -218761 -218783 -218797 -218809 -218819 -218833 -218839 -218843 -218849 -218857 -218873 -218887 -218923 -218941 -218947 -218963 -218969 -218971 -218987 -218989 -218993 -219001 -219017 -219019 -219031 -219041 -219053 -219059 -219071 -219083 -219091 -219097 -219103 -219119 -219133 -219143 -219169 -219187 -219217 -219223 -219251 -219277 -219281 -219293 -219301 -219311 -219313 -219353 -219361 -219371 -219377 -219389 -219407 -219409 -219433 -219437 -219451 -219463 -219467 -219491 -219503 -219517 -219523 -219529 -219533 -219547 -219577 -219587 -219599 -219607 -219613 -219619 -219629 -219647 -219649 -219677 -219679 -219683 -219689 -219707 -219721 -219727 -219731 -219749 -219757 -219761 -219763 -219767 -219787 -219797 -219799 -219809 -219823 -219829 -219839 -219847 -219851 -219871 -219881 -219889 -219911 -219917 -219931 -219937 -219941 -219943 -219953 -219959 -219971 -219977 -219979 -219983 -220009 -220013 -220019 -220021 -220057 -220063 -220123 -220141 -220147 -220151 -220163 -220169 -220177 -220189 -220217 -220243 -220279 -220291 -220301 -220307 -220327 -220333 -220351 -220357 -220361 -220369 -220373 -220391 -220399 -220403 -220411 -220421 -220447 -220469 -220471 -220511 -220513 -220529 -220537 -220543 -220553 -220559 -220573 -220579 -220589 -220613 -220663 -220667 -220673 -220681 -220687 -220699 -220709 -220721 -220747 -220757 -220771 -220783 -220789 -220793 -220807 -220811 -220841 -220859 -220861 -220873 -220877 -220879 -220889 -220897 -220901 -220903 -220907 -220919 -220931 -220933 -220939 -220973 -221021 -221047 -221059 -221069 -221071 -221077 -221083 -221087 -221093 -221101 -221159 -221171 -221173 -221197 -221201 -221203 -221209 -221219 -221227 -221233 -221239 -221251 -221261 -221281 -221303 -221311 -221317 -221327 -221393 -221399 -221401 -221411 -221413 -221447 -221453 -221461 -221471 -221477 -221489 -221497 -221509 -221537 -221539 -221549 -221567 -221581 -221587 -221603 -221621 -221623 -221653 -221657 -221659 -221671 -221677 -221707 -221713 -221717 -221719 -221723 -221729 -221737 -221747 -221773 -221797 -221807 -221813 -221827 -221831 -221849 -221873 -221891 -221909 -221941 -221951 -221953 -221957 -221987 -221989 -221999 -222007 -222011 -222023 -222029 -222041 -222043 -222059 -222067 -222073 -222107 -222109 -222113 -222127 -222137 -222149 -222151 -222161 -222163 -222193 -222197 -222199 -222247 -222269 -222289 -222293 -222311 -222317 -222323 -222329 -222337 -222347 -222349 -222361 -222367 -222379 -222389 -222403 -222419 -222437 -222461 -222493 -222499 -222511 -222527 -222533 -222553 -222557 -222587 -222601 -222613 -222619 -222643 -222647 -222659 -222679 -222707 -222713 -222731 -222773 -222779 -222787 -222791 -222793 -222799 -222823 -222839 -222841 -222857 -222863 -222877 -222883 -222913 -222919 -222931 -222941 -222947 -222953 -222967 -222977 -222979 -222991 -223007 -223009 -223019 -223037 -223049 -223051 -223061 -223063 -223087 -223099 -223103 -223129 -223133 -223151 -223207 -223211 -223217 -223219 -223229 -223241 -223243 -223247 -223253 -223259 -223273 -223277 -223283 -223291 -223303 -223313 -223319 -223331 -223337 -223339 -223361 -223367 -223381 -223403 -223423 -223429 -223439 -223441 -223463 -223469 -223481 -223493 -223507 -223529 -223543 -223547 -223549 -223577 -223589 -223621 -223633 -223637 -223667 -223679 -223681 -223697 -223711 -223747 -223753 -223757 -223759 -223781 -223823 -223829 -223831 -223837 -223841 -223843 -223849 -223903 -223919 -223921 -223939 -223963 -223969 -223999 -224011 -224027 -224033 -224041 -224047 -224057 -224069 -224071 -224101 -224113 -224129 -224131 -224149 -224153 -224171 -224177 -224197 -224201 -224209 -224221 -224233 -224239 -224251 -224261 -224267 -224291 -224299 -224303 -224309 -224317 -224327 -224351 -224359 -224363 -224401 -224423 -224429 -224443 -224449 -224461 -224467 -224473 -224491 -224501 -224513 -224527 -224563 -224569 -224579 -224591 -224603 -224611 -224617 -224629 -224633 -224669 -224677 -224683 -224699 -224711 -224717 -224729 -224737 -224743 -224759 -224771 -224797 -224813 -224831 -224863 -224869 -224881 -224891 -224897 -224909 -224911 -224921 -224929 -224947 -224951 -224969 -224977 -224993 -225023 -225037 -225061 -225067 -225077 -225079 -225089 -225109 -225119 -225133 -225143 -225149 -225157 -225161 -225163 -225167 -225217 -225221 -225223 -225227 -225241 -225257 -225263 -225287 -225289 -225299 -225307 -225341 -225343 -225347 -225349 -225353 -225371 -225373 -225383 -225427 -225431 -225457 -225461 -225479 -225493 -225499 -225503 -225509 -225523 -225527 -225529 -225569 -225581 -225583 -225601 -225611 -225613 -225619 -225629 -225637 -225671 -225683 -225689 -225697 -225721 -225733 -225749 -225751 -225767 -225769 -225779 -225781 -225809 -225821 -225829 -225839 -225859 -225871 -225889 -225919 -225931 -225941 -225943 -225949 -225961 -225977 -225983 -225989 -226001 -226007 -226013 -226027 -226063 -226087 -226099 -226103 -226123 -226129 -226133 -226141 -226169 -226183 -226189 -226199 -226201 -226217 -226231 -226241 -226267 -226283 -226307 -226313 -226337 -226357 -226367 -226379 -226381 -226397 -226409 -226427 -226433 -226451 -226453 -226463 -226483 -226487 -226511 -226531 -226547 -226549 -226553 -226571 -226601 -226609 -226621 -226631 -226637 -226643 -226649 -226657 -226663 -226669 -226691 -226697 -226741 -226753 -226769 -226777 -226783 -226789 -226799 -226813 -226817 -226819 -226823 -226843 -226871 -226901 -226903 -226907 -226913 -226937 -226943 -226991 -227011 -227027 -227053 -227081 -227089 -227093 -227111 -227113 -227131 -227147 -227153 -227159 -227167 -227177 -227189 -227191 -227207 -227219 -227231 -227233 -227251 -227257 -227267 -227281 -227299 -227303 -227363 -227371 -227377 -227387 -227393 -227399 -227407 -227419 -227431 -227453 -227459 -227467 -227471 -227473 -227489 -227497 -227501 -227519 -227531 -227533 -227537 -227561 -227567 -227569 -227581 -227593 -227597 -227603 -227609 -227611 -227627 -227629 -227651 -227653 -227663 -227671 -227693 -227699 -227707 -227719 -227729 -227743 -227789 -227797 -227827 -227849 -227869 -227873 -227893 -227947 -227951 -227977 -227989 -227993 -228013 -228023 -228049 -228061 -228077 -228097 -228103 -228113 -228127 -228131 -228139 -228181 -228197 -228199 -228203 -228211 -228223 -228233 -228251 -228257 -228281 -228299 -228301 -228307 -228311 -228331 -228337 -228341 -228353 -228359 -228383 -228409 -228419 -228421 -228427 -228443 -228451 -228457 -228461 -228469 -228479 -228509 -228511 -228517 -228521 -228523 -228539 -228559 -228577 -228581 -228587 -228593 -228601 -228611 -228617 -228619 -228637 -228647 -228677 -228707 -228713 -228731 -228733 -228737 -228751 -228757 -228773 -228793 -228797 -228799 -228829 -228841 -228847 -228853 -228859 -228869 -228881 -228883 -228887 -228901 -228911 -228913 -228923 -228929 -228953 -228959 -228961 -228983 -228989 -229003 -229027 -229037 -229081 -229093 -229123 -229127 -229133 -229139 -229153 -229157 -229171 -229181 -229189 -229199 -229213 -229217 -229223 -229237 -229247 -229249 -229253 -229261 -229267 -229283 -229309 -229321 -229343 -229351 -229373 -229393 -229399 -229403 -229409 -229423 -229433 -229459 -229469 -229487 -229499 -229507 -229519 -229529 -229547 -229549 -229553 -229561 -229583 -229589 -229591 -229601 -229613 -229627 -229631 -229637 -229639 -229681 -229693 -229699 -229703 -229711 -229717 -229727 -229739 -229751 -229753 -229759 -229763 -229769 -229771 -229777 -229781 -229799 -229813 -229819 -229837 -229841 -229847 -229849 -229897 -229903 -229937 -229939 -229949 -229961 -229963 -229979 -229981 -230003 -230017 -230047 -230059 -230063 -230077 -230081 -230089 -230101 -230107 -230117 -230123 -230137 -230143 -230149 -230189 -230203 -230213 -230221 -230227 -230233 -230239 -230257 -230273 -230281 -230291 -230303 -230309 -230311 -230327 -230339 -230341 -230353 -230357 -230369 -230383 -230387 -230389 -230393 -230431 -230449 -230453 -230467 -230471 -230479 -230501 -230507 -230539 -230551 -230561 -230563 -230567 -230597 -230611 -230647 -230653 -230663 -230683 -230693 -230719 -230729 -230743 -230761 -230767 -230771 -230773 -230779 -230807 -230819 -230827 -230833 -230849 -230861 -230863 -230873 -230891 -230929 -230933 -230939 -230941 -230959 -230969 -230977 -230999 -231001 -231017 -231019 -231031 -231041 -231053 -231067 -231079 -231107 -231109 -231131 -231169 -231197 -231223 -231241 -231269 -231271 -231277 -231289 -231293 -231299 -231317 -231323 -231331 -231347 -231349 -231359 -231367 -231379 -231409 -231419 -231431 -231433 -231443 -231461 -231463 -231479 -231481 -231493 -231503 -231529 -231533 -231547 -231551 -231559 -231563 -231571 -231589 -231599 -231607 -231611 -231613 -231631 -231643 -231661 -231677 -231701 -231709 -231719 -231779 -231799 -231809 -231821 -231823 -231827 -231839 -231841 -231859 -231871 -231877 -231893 -231901 -231919 -231923 -231943 -231947 -231961 -231967 -232003 -232007 -232013 -232049 -232051 -232073 -232079 -232081 -232091 -232103 -232109 -232117 -232129 -232153 -232171 -232187 -232189 -232207 -232217 -232259 -232303 -232307 -232333 -232357 -232363 -232367 -232381 -232391 -232409 -232411 -232417 -232433 -232439 -232451 -232457 -232459 -232487 -232499 -232513 -232523 -232549 -232567 -232571 -232591 -232597 -232607 -232621 -232633 -232643 -232663 -232669 -232681 -232699 -232709 -232711 -232741 -232751 -232753 -232777 -232801 -232811 -232819 -232823 -232847 -232853 -232861 -232871 -232877 -232891 -232901 -232907 -232919 -232937 -232961 -232963 -232987 -233021 -233069 -233071 -233083 -233113 -233117 -233141 -233143 -233159 -233161 -233173 -233183 -233201 -233221 -233231 -233239 -233251 -233267 -233279 -233293 -233297 -233323 -233327 -233329 -233341 -233347 -233353 -233357 -233371 -233407 -233417 -233419 -233423 -233437 -233477 -233489 -233509 -233549 -233551 -233557 -233591 -233599 -233609 -233617 -233621 -233641 -233663 -233669 -233683 -233687 -233689 -233693 -233713 -233743 -233747 -233759 -233777 -233837 -233851 -233861 -233879 -233881 -233911 -233917 -233921 -233923 -233939 -233941 -233969 -233983 -233993 -234007 -234029 -234043 -234067 -234083 -234089 -234103 -234121 -234131 -234139 -234149 -234161 -234167 -234181 -234187 -234191 -234193 -234197 -234203 -234211 -234217 -234239 -234259 -234271 -234281 -234287 -234293 -234317 -234319 -234323 -234331 -234341 -234343 -234361 -234383 -234431 -234457 -234461 -234463 -234467 -234473 -234499 -234511 -234527 -234529 -234539 -234541 -234547 -234571 -234587 -234589 -234599 -234613 -234629 -234653 -234659 -234673 -234683 -234713 -234721 -234727 -234733 -234743 -234749 -234769 -234781 -234791 -234799 -234803 -234809 -234811 -234833 -234847 -234851 -234863 -234869 -234893 -234907 -234917 -234931 -234947 -234959 -234961 -234967 -234977 -234979 -234989 -235003 -235007 -235009 -235013 -235043 -235051 -235057 -235069 -235091 -235099 -235111 -235117 -235159 -235171 -235177 -235181 -235199 -235211 -235231 -235241 -235243 -235273 -235289 -235307 -235309 -235337 -235349 -235369 -235397 -235439 -235441 -235447 -235483 -235489 -235493 -235513 -235519 -235523 -235537 -235541 -235553 -235559 -235577 -235591 -235601 -235607 -235621 -235661 -235663 -235673 -235679 -235699 -235723 -235747 -235751 -235783 -235787 -235789 -235793 -235811 -235813 -235849 -235871 -235877 -235889 -235891 -235901 -235919 -235927 -235951 -235967 -235979 -235997 -236017 -236021 -236053 -236063 -236069 -236077 -236087 -236107 -236111 -236129 -236143 -236153 -236167 -236207 -236209 -236219 -236231 -236261 -236287 -236293 -236297 -236323 -236329 -236333 -236339 -236377 -236381 -236387 -236399 -236407 -236429 -236449 -236461 -236471 -236477 -236479 -236503 -236507 -236519 -236527 -236549 -236563 -236573 -236609 -236627 -236641 -236653 -236659 -236681 -236699 -236701 -236707 -236713 -236723 -236729 -236737 -236749 -236771 -236773 -236779 -236783 -236807 -236813 -236867 -236869 -236879 -236881 -236891 -236893 -236897 -236909 -236917 -236947 -236981 -236983 -236993 -237011 -237019 -237043 -237053 -237067 -237071 -237073 -237089 -237091 -237137 -237143 -237151 -237157 -237161 -237163 -237173 -237179 -237203 -237217 -237233 -237257 -237271 -237277 -237283 -237287 -237301 -237313 -237319 -237331 -237343 -237361 -237373 -237379 -237401 -237409 -237467 -237487 -237509 -237547 -237563 -237571 -237581 -237607 -237619 -237631 -237673 -237683 -237689 -237691 -237701 -237707 -237733 -237737 -237749 -237763 -237767 -237781 -237791 -237821 -237851 -237857 -237859 -237877 -237883 -237901 -237911 -237929 -237959 -237967 -237971 -237973 -237977 -237997 -238001 -238009 -238019 -238031 -238037 -238039 -238079 -238081 -238093 -238099 -238103 -238109 -238141 -238151 -238157 -238159 -238163 -238171 -238181 -238201 -238207 -238213 -238223 -238229 -238237 -238247 -238261 -238267 -238291 -238307 -238313 -238321 -238331 -238339 -238361 -238363 -238369 -238373 -238397 -238417 -238423 -238439 -238451 -238463 -238471 -238477 -238481 -238499 -238519 -238529 -238531 -238547 -238573 -238591 -238627 -238639 -238649 -238657 -238673 -238681 -238691 -238703 -238709 -238723 -238727 -238729 -238747 -238759 -238781 -238789 -238801 -238829 -238837 -238841 -238853 -238859 -238877 -238879 -238883 -238897 -238919 -238921 -238939 -238943 -238949 -238967 -238991 -239017 -239023 -239027 -239053 -239069 -239081 -239087 -239119 -239137 -239147 -239167 -239171 -239179 -239201 -239231 -239233 -239237 -239243 -239251 -239263 -239273 -239287 -239297 -239329 -239333 -239347 -239357 -239383 -239387 -239389 -239417 -239423 -239429 -239431 -239441 -239461 -239489 -239509 -239521 -239527 -239531 -239539 -239543 -239557 -239567 -239579 -239587 -239597 -239611 -239623 -239633 -239641 -239671 -239689 -239699 -239711 -239713 -239731 -239737 -239753 -239779 -239783 -239803 -239807 -239831 -239843 -239849 -239851 -239857 -239873 -239879 -239893 -239929 -239933 -239947 -239957 -239963 -239977 -239999 -240007 -240011 -240017 -240041 -240043 -240047 -240049 -240059 -240073 -240089 -240101 -240109 -240113 -240131 -240139 -240151 -240169 -240173 -240197 -240203 -240209 -240257 -240259 -240263 -240271 -240283 -240287 -240319 -240341 -240347 -240349 -240353 -240371 -240379 -240421 -240433 -240437 -240473 -240479 -240491 -240503 -240509 -240517 -240551 -240571 -240587 -240589 -240599 -240607 -240623 -240631 -240641 -240659 -240677 -240701 -240707 -240719 -240727 -240733 -240739 -240743 -240763 -240769 -240797 -240811 -240829 -240841 -240853 -240859 -240869 -240881 -240883 -240893 -240899 -240913 -240943 -240953 -240959 -240967 -240997 -241013 -241027 -241037 -241049 -241051 -241061 -241067 -241069 -241079 -241093 -241117 -241127 -241141 -241169 -241177 -241183 -241207 -241229 -241249 -241253 -241259 -241261 -241271 -241291 -241303 -241313 -241321 -241327 -241333 -241337 -241343 -241361 -241363 -241391 -241393 -241421 -241429 -241441 -241453 -241463 -241469 -241489 -241511 -241513 -241517 -241537 -241543 -241559 -241561 -241567 -241589 -241597 -241601 -241603 -241639 -241643 -241651 -241663 -241667 -241679 -241687 -241691 -241711 -241727 -241739 -241771 -241781 -241783 -241793 -241807 -241811 -241817 -241823 -241847 -241861 -241867 -241873 -241877 -241883 -241903 -241907 -241919 -241921 -241931 -241939 -241951 -241963 -241973 -241979 -241981 -241993 -242009 -242057 -242059 -242069 -242083 -242093 -242101 -242119 -242129 -242147 -242161 -242171 -242173 -242197 -242201 -242227 -242243 -242257 -242261 -242273 -242279 -242309 -242329 -242357 -242371 -242377 -242393 -242399 -242413 -242419 -242441 -242447 -242449 -242453 -242467 -242479 -242483 -242491 -242509 -242519 -242521 -242533 -242551 -242591 -242603 -242617 -242621 -242629 -242633 -242639 -242647 -242659 -242677 -242681 -242689 -242713 -242729 -242731 -242747 -242773 -242779 -242789 -242797 -242807 -242813 -242819 -242863 -242867 -242873 -242887 -242911 -242923 -242927 -242971 -242989 -242999 -243011 -243031 -243073 -243077 -243091 -243101 -243109 -243119 -243121 -243137 -243149 -243157 -243161 -243167 -243197 -243203 -243209 -243227 -243233 -243239 -243259 -243263 -243301 -243311 -243343 -243367 -243391 -243401 -243403 -243421 -243431 -243433 -243437 -243461 -243469 -243473 -243479 -243487 -243517 -243521 -243527 -243533 -243539 -243553 -243577 -243583 -243587 -243589 -243613 -243623 -243631 -243643 -243647 -243671 -243673 -243701 -243703 -243707 -243709 -243769 -243781 -243787 -243799 -243809 -243829 -243839 -243851 -243857 -243863 -243871 -243889 -243911 -243917 -243931 -243953 -243973 -243989 -244003 -244009 -244021 -244033 -244043 -244087 -244091 -244109 -244121 -244129 -244141 -244147 -244157 -244159 -244177 -244199 -244217 -244219 -244243 -244247 -244253 -244261 -244291 -244297 -244301 -244303 -244313 -244333 -244339 -244351 -244357 -244367 -244379 -244381 -244393 -244399 -244403 -244411 -244423 -244429 -244451 -244457 -244463 -244471 -244481 -244493 -244507 -244529 -244547 -244553 -244561 -244567 -244583 -244589 -244597 -244603 -244619 -244633 -244637 -244639 -244667 -244669 -244687 -244691 -244703 -244711 -244721 -244733 -244747 -244753 -244759 -244781 -244787 -244813 -244837 -244841 -244843 -244859 -244861 -244873 -244877 -244889 -244897 -244901 -244939 -244943 -244957 -244997 -245023 -245029 -245033 -245039 -245071 -245083 -245087 -245107 -245129 -245131 -245149 -245171 -245173 -245177 -245183 -245209 -245251 -245257 -245261 -245269 -245279 -245291 -245299 -245317 -245321 -245339 -245383 -245389 -245407 -245411 -245417 -245419 -245437 -245471 -245473 -245477 -245501 -245513 -245519 -245521 -245527 -245533 -245561 -245563 -245587 -245591 -245593 -245621 -245627 -245629 -245639 -245653 -245671 -245681 -245683 -245711 -245719 -245723 -245741 -245747 -245753 -245759 -245771 -245783 -245789 -245821 -245849 -245851 -245863 -245881 -245897 -245899 -245909 -245911 -245941 -245963 -245977 -245981 -245983 -245989 -246011 -246017 -246049 -246073 -246097 -246119 -246121 -246131 -246133 -246151 -246167 -246173 -246187 -246193 -246203 -246209 -246217 -246223 -246241 -246247 -246251 -246271 -246277 -246289 -246317 -246319 -246329 -246343 -246349 -246361 -246371 -246391 -246403 -246439 -246469 -246473 -246497 -246509 -246511 -246523 -246527 -246539 -246557 -246569 -246577 -246599 -246607 -246611 -246613 -246637 -246641 -246643 -246661 -246683 -246689 -246707 -246709 -246713 -246731 -246739 -246769 -246773 -246781 -246787 -246793 -246803 -246809 -246811 -246817 -246833 -246839 -246889 -246899 -246907 -246913 -246919 -246923 -246929 -246931 -246937 -246941 -246947 -246971 -246979 -247001 -247007 -247031 -247067 -247069 -247073 -247087 -247099 -247141 -247183 -247193 -247201 -247223 -247229 -247241 -247249 -247259 -247279 -247301 -247309 -247337 -247339 -247343 -247363 -247369 -247381 -247391 -247393 -247409 -247421 -247433 -247439 -247451 -247463 -247501 -247519 -247529 -247531 -247547 -247553 -247579 -247591 -247601 -247603 -247607 -247609 -247613 -247633 -247649 -247651 -247691 -247693 -247697 -247711 -247717 -247729 -247739 -247759 -247769 -247771 -247781 -247799 -247811 -247813 -247829 -247847 -247853 -247873 -247879 -247889 -247901 -247913 -247939 -247943 -247957 -247991 -247993 -247997 -247999 -248021 -248033 -248041 -248051 -248057 -248063 -248071 -248077 -248089 -248099 -248117 -248119 -248137 -248141 -248161 -248167 -248177 -248179 -248189 -248201 -248203 -248231 -248243 -248257 -248267 -248291 -248293 -248299 -248309 -248317 -248323 -248351 -248357 -248371 -248389 -248401 -248407 -248431 -248441 -248447 -248461 -248473 -248477 -248483 -248509 -248533 -248537 -248543 -248569 -248579 -248587 -248593 -248597 -248609 -248621 -248627 -248639 -248641 -248657 -248683 -248701 -248707 -248719 -248723 -248737 -248749 -248753 -248779 -248783 -248789 -248797 -248813 -248821 -248827 -248839 -248851 -248861 -248867 -248869 -248879 -248887 -248891 -248893 -248903 -248909 -248971 -248981 -248987 -249017 -249037 -249059 -249079 -249089 -249097 -249103 -249107 -249127 -249131 -249133 -249143 -249181 -249187 -249199 -249211 -249217 -249229 -249233 -249253 -249257 -249287 -249311 -249317 -249329 -249341 -249367 -249377 -249383 -249397 -249419 -249421 -249427 -249433 -249437 -249439 -249449 -249463 -249497 -249499 -249503 -249517 -249521 -249533 -249539 -249541 -249563 -249583 -249589 -249593 -249607 -249647 -249659 -249671 -249677 -249703 -249721 -249727 -249737 -249749 -249763 -249779 -249797 -249811 -249827 -249833 -249853 -249857 -249859 -249863 -249871 -249881 -249911 -249923 -249943 -249947 -249967 -249971 -249973 -249989 -250007 -250013 -250027 -250031 -250037 -250043 -250049 -250051 -250057 -250073 -250091 -250109 -250123 -250147 -250153 -250169 -250199 -250253 -250259 -250267 -250279 -250301 -250307 -250343 -250361 -250403 -250409 -250423 -250433 -250441 -250451 -250489 -250499 -250501 -250543 -250583 -250619 -250643 -250673 -250681 -250687 -250693 -250703 -250709 -250721 -250727 -250739 -250741 -250751 -250753 -250777 -250787 -250793 -250799 -250807 -250813 -250829 -250837 -250841 -250853 -250867 -250871 -250889 -250919 -250949 -250951 -250963 -250967 -250969 -250979 -250993 -251003 -251033 -251051 -251057 -251059 -251063 -251071 -251081 -251087 -251099 -251117 -251143 -251149 -251159 -251171 -251177 -251179 -251191 -251197 -251201 -251203 -251219 -251221 -251231 -251233 -251257 -251261 -251263 -251287 -251291 -251297 -251323 -251347 -251353 -251359 -251387 -251393 -251417 -251429 -251431 -251437 -251443 -251467 -251473 -251477 -251483 -251491 -251501 -251513 -251519 -251527 -251533 -251539 -251543 -251561 -251567 -251609 -251611 -251621 -251623 -251639 -251653 -251663 -251677 -251701 -251707 -251737 -251761 -251789 -251791 -251809 -251831 -251833 -251843 -251857 -251861 -251879 -251887 -251893 -251897 -251903 -251917 -251939 -251941 -251947 -251969 -251971 -251983 -252001 -252013 -252017 -252029 -252037 -252079 -252101 -252139 -252143 -252151 -252157 -252163 -252169 -252173 -252181 -252193 -252209 -252223 -252233 -252253 -252277 -252283 -252289 -252293 -252313 -252319 -252323 -252341 -252359 -252383 -252391 -252401 -252409 -252419 -252431 -252443 -252449 -252457 -252463 -252481 -252509 -252533 -252541 -252559 -252583 -252589 -252607 -252611 -252617 -252641 -252667 -252691 -252709 -252713 -252727 -252731 -252737 -252761 -252767 -252779 -252817 -252823 -252827 -252829 -252869 -252877 -252881 -252887 -252893 -252899 -252911 -252913 -252919 -252937 -252949 -252971 -252979 -252983 -253003 -253013 -253049 -253063 -253081 -253103 -253109 -253133 -253153 -253157 -253159 -253229 -253243 -253247 -253273 -253307 -253321 -253343 -253349 -253361 -253367 -253369 -253381 -253387 -253417 -253423 -253427 -253433 -253439 -253447 -253469 -253481 -253493 -253501 -253507 -253531 -253537 -253543 -253553 -253567 -253573 -253601 -253607 -253609 -253613 -253633 -253637 -253639 -253651 -253661 -253679 -253681 -253703 -253717 -253733 -253741 -253751 -253763 -253769 -253777 -253787 -253789 -253801 -253811 -253819 -253823 -253853 -253867 -253871 -253879 -253901 -253907 -253909 -253919 -253937 -253949 -253951 -253969 -253987 -253993 -253999 -254003 -254021 -254027 -254039 -254041 -254047 -254053 -254071 -254083 -254119 -254141 -254147 -254161 -254179 -254197 -254207 -254209 -254213 -254249 -254257 -254279 -254281 -254291 -254299 -254329 -254369 -254377 -254383 -254389 -254407 -254413 -254437 -254447 -254461 -254489 -254491 -254519 -254537 -254557 -254593 -254623 -254627 -254647 -254659 -254663 -254699 -254713 -254729 -254731 -254741 -254747 -254753 -254773 -254777 -254783 -254791 -254803 -254827 -254831 -254833 -254857 -254869 -254873 -254879 -254887 -254899 -254911 -254927 -254929 -254941 -254959 -254963 -254971 -254977 -254987 -254993 -255007 -255019 -255023 -255043 -255049 -255053 -255071 -255077 -255083 -255097 -255107 -255121 -255127 -255133 -255137 -255149 -255173 -255179 -255181 -255191 -255193 -255197 -255209 -255217 -255239 -255247 -255251 -255253 -255259 -255313 -255329 -255349 -255361 -255371 -255383 -255413 -255419 -255443 -255457 -255467 -255469 -255473 -255487 -255499 -255503 -255511 -255517 -255523 -255551 -255571 -255587 -255589 -255613 -255617 -255637 -255641 -255649 -255653 -255659 -255667 -255679 -255709 -255713 -255733 -255743 -255757 -255763 -255767 -255803 -255839 -255841 -255847 -255851 -255859 -255869 -255877 -255887 -255907 -255917 -255919 -255923 -255947 -255961 -255971 -255973 -255977 -255989 -256019 -256021 -256031 -256033 -256049 -256057 -256079 -256093 -256117 -256121 -256129 -256133 -256147 -256163 -256169 -256181 -256187 -256189 -256199 -256211 -256219 -256279 -256301 -256307 -256313 -256337 -256349 -256363 -256369 -256391 -256393 -256423 -256441 -256469 -256471 -256483 -256489 -256493 -256499 -256517 -256541 -256561 -256567 -256577 -256579 -256589 -256603 -256609 -256639 -256643 -256651 -256661 -256687 -256699 -256721 -256723 -256757 -256771 -256799 -256801 -256813 -256831 -256873 -256877 -256889 -256901 -256903 -256931 -256939 -256957 -256967 -256981 -257003 -257017 -257053 -257069 -257077 -257093 -257099 -257107 -257123 -257141 -257161 -257171 -257177 -257189 -257219 -257221 -257239 -257249 -257263 -257273 -257281 -257287 -257293 -257297 -257311 -257321 -257339 -257351 -257353 -257371 -257381 -257399 -257401 -257407 -257437 -257443 -257447 -257459 -257473 -257489 -257497 -257501 -257503 -257519 -257539 -257561 -257591 -257611 -257627 -257639 -257657 -257671 -257687 -257689 -257707 -257711 -257713 -257717 -257731 -257783 -257791 -257797 -257837 -257857 -257861 -257863 -257867 -257869 -257879 -257893 -257903 -257921 -257947 -257953 -257981 -257987 -257989 -257993 -258019 -258023 -258031 -258061 -258067 -258101 -258107 -258109 -258113 -258119 -258127 -258131 -258143 -258157 -258161 -258173 -258197 -258211 -258233 -258241 -258253 -258277 -258283 -258299 -258317 -258319 -258329 -258331 -258337 -258353 -258373 -258389 -258403 -258407 -258413 -258421 -258437 -258443 -258449 -258469 -258487 -258491 -258499 -258521 -258527 -258539 -258551 -258563 -258569 -258581 -258607 -258611 -258613 -258617 -258623 -258631 -258637 -258659 -258673 -258677 -258691 -258697 -258703 -258707 -258721 -258733 -258737 -258743 -258763 -258779 -258787 -258803 -258809 -258827 -258847 -258871 -258887 -258917 -258919 -258949 -258959 -258967 -258971 -258977 -258983 -258991 -259001 -259009 -259019 -259033 -259099 -259121 -259123 -259151 -259157 -259159 -259163 -259169 -259177 -259183 -259201 -259211 -259213 -259219 -259229 -259271 -259277 -259309 -259321 -259339 -259379 -259381 -259387 -259397 -259411 -259421 -259429 -259451 -259453 -259459 -259499 -259507 -259517 -259531 -259537 -259547 -259577 -259583 -259603 -259619 -259621 -259627 -259631 -259639 -259643 -259657 -259667 -259681 -259691 -259697 -259717 -259723 -259733 -259751 -259771 -259781 -259783 -259801 -259813 -259823 -259829 -259837 -259841 -259867 -259907 -259933 -259937 -259943 -259949 -259967 -259991 -259993 -260003 -260009 -260011 -260017 -260023 -260047 -260081 -260089 -260111 -260137 -260171 -260179 -260189 -260191 -260201 -260207 -260209 -260213 -260231 -260263 -260269 -260317 -260329 -260339 -260363 -260387 -260399 -260411 -260413 -260417 -260419 -260441 -260453 -260461 -260467 -260483 -260489 -260527 -260539 -260543 -260549 -260551 -260569 -260573 -260581 -260587 -260609 -260629 -260647 -260651 -260671 -260677 -260713 -260717 -260723 -260747 -260753 -260761 -260773 -260791 -260807 -260809 -260849 -260857 -260861 -260863 -260873 -260879 -260893 -260921 -260941 -260951 -260959 -260969 -260983 -260987 -260999 -261011 -261013 -261017 -261031 -261043 -261059 -261061 -261071 -261077 -261089 -261101 -261127 -261167 -261169 -261223 -261229 -261241 -261251 -261271 -261281 -261301 -261323 -261329 -261337 -261347 -261353 -261379 -261389 -261407 -261427 -261431 -261433 -261439 -261451 -261463 -261467 -261509 -261523 -261529 -261557 -261563 -261577 -261581 -261587 -261593 -261601 -261619 -261631 -261637 -261641 -261643 -261673 -261697 -261707 -261713 -261721 -261739 -261757 -261761 -261773 -261787 -261791 -261799 -261823 -261847 -261881 -261887 -261917 -261959 -261971 -261973 -261977 -261983 -262007 -262027 -262049 -262051 -262069 -262079 -262103 -262109 -262111 -262121 -262127 -262133 -262139 -262147 -262151 -262153 -262187 -262193 -262217 -262231 -262237 -262253 -262261 -262271 -262303 -262313 -262321 -262331 -262337 -262349 -262351 -262369 -262387 -262391 -262399 -262411 -262433 -262459 -262469 -262489 -262501 -262511 -262513 -262519 -262541 -262543 -262553 -262567 -262583 -262597 -262621 -262627 -262643 -262649 -262651 -262657 -262681 -262693 -262697 -262709 -262723 -262733 -262739 -262741 -262747 -262781 -262783 -262807 -262819 -262853 -262877 -262883 -262897 -262901 -262909 -262937 -262949 -262957 -262981 -263009 -263023 -263047 -263063 -263071 -263077 -263083 -263089 -263101 -263111 -263119 -263129 -263167 -263171 -263183 -263191 -263201 -263209 -263213 -263227 -263239 -263257 -263267 -263269 -263273 -263287 -263293 -263303 -263323 -263369 -263383 -263387 -263399 -263401 -263411 -263423 -263429 -263437 -263443 -263489 -263491 -263503 -263513 -263519 -263521 -263533 -263537 -263561 -263567 -263573 -263591 -263597 -263609 -263611 -263621 -263647 -263651 -263657 -263677 -263723 -263729 -263737 -263759 -263761 -263803 -263819 -263821 -263827 -263843 -263849 -263863 -263867 -263869 -263881 -263899 -263909 -263911 -263927 -263933 -263941 -263951 -263953 -263957 -263983 -264007 -264013 -264029 -264031 -264053 -264059 -264071 -264083 -264091 -264101 -264113 -264127 -264133 -264137 -264139 -264167 -264169 -264179 -264211 -264221 -264263 -264269 -264283 -264289 -264301 -264323 -264331 -264343 -264349 -264353 -264359 -264371 -264391 -264403 -264437 -264443 -264463 -264487 -264527 -264529 -264553 -264559 -264577 -264581 -264599 -264601 -264619 -264631 -264637 -264643 -264659 -264697 -264731 -264739 -264743 -264749 -264757 -264763 -264769 -264779 -264787 -264791 -264793 -264811 -264827 -264829 -264839 -264871 -264881 -264889 -264893 -264899 -264919 -264931 -264949 -264959 -264961 -264977 -264991 -264997 -265003 -265007 -265021 -265037 -265079 -265091 -265093 -265117 -265123 -265129 -265141 -265151 -265157 -265163 -265169 -265193 -265207 -265231 -265241 -265247 -265249 -265261 -265271 -265273 -265277 -265313 -265333 -265337 -265339 -265381 -265399 -265403 -265417 -265423 -265427 -265451 -265459 -265471 -265483 -265493 -265511 -265513 -265541 -265543 -265547 -265561 -265567 -265571 -265579 -265607 -265613 -265619 -265621 -265703 -265709 -265711 -265717 -265729 -265739 -265747 -265757 -265781 -265787 -265807 -265813 -265819 -265831 -265841 -265847 -265861 -265871 -265873 -265883 -265891 -265921 -265957 -265961 -265987 -266003 -266009 -266023 -266027 -266029 -266047 -266051 -266053 -266059 -266081 -266083 -266089 -266093 -266099 -266111 -266117 -266129 -266137 -266153 -266159 -266177 -266183 -266221 -266239 -266261 -266269 -266281 -266291 -266293 -266297 -266333 -266351 -266353 -266359 -266369 -266381 -266401 -266411 -266417 -266447 -266449 -266477 -266479 -266489 -266491 -266521 -266549 -266587 -266599 -266603 -266633 -266641 -266647 -266663 -266671 -266677 -266681 -266683 -266687 -266689 -266701 -266711 -266719 -266759 -266767 -266797 -266801 -266821 -266837 -266839 -266863 -266867 -266891 -266897 -266899 -266909 -266921 -266927 -266933 -266947 -266953 -266957 -266971 -266977 -266983 -266993 -266999 -267017 -267037 -267049 -267097 -267131 -267133 -267139 -267143 -267167 -267187 -267193 -267199 -267203 -267217 -267227 -267229 -267233 -267259 -267271 -267277 -267299 -267301 -267307 -267317 -267341 -267353 -267373 -267389 -267391 -267401 -267403 -267413 -267419 -267431 -267433 -267439 -267451 -267469 -267479 -267481 -267493 -267497 -267511 -267517 -267521 -267523 -267541 -267551 -267557 -267569 -267581 -267587 -267593 -267601 -267611 -267613 -267629 -267637 -267643 -267647 -267649 -267661 -267667 -267671 -267677 -267679 -267713 -267719 -267721 -267727 -267737 -267739 -267749 -267763 -267781 -267791 -267797 -267803 -267811 -267829 -267833 -267857 -267863 -267877 -267887 -267893 -267899 -267901 -267907 -267913 -267929 -267941 -267959 -267961 -268003 -268013 -268043 -268049 -268063 -268069 -268091 -268123 -268133 -268153 -268171 -268189 -268199 -268207 -268211 -268237 -268253 -268267 -268271 -268283 -268291 -268297 -268343 -268403 -268439 -268459 -268487 -268493 -268501 -268507 -268517 -268519 -268529 -268531 -268537 -268547 -268573 -268607 -268613 -268637 -268643 -268661 -268693 -268721 -268729 -268733 -268747 -268757 -268759 -268771 -268777 -268781 -268783 -268789 -268811 -268813 -268817 -268819 -268823 -268841 -268843 -268861 -268883 -268897 -268909 -268913 -268921 -268927 -268937 -268969 -268973 -268979 -268993 -268997 -268999 -269023 -269029 -269039 -269041 -269057 -269063 -269069 -269089 -269117 -269131 -269141 -269167 -269177 -269179 -269183 -269189 -269201 -269209 -269219 -269221 -269231 -269237 -269251 -269257 -269281 -269317 -269327 -269333 -269341 -269351 -269377 -269383 -269387 -269389 -269393 -269413 -269419 -269429 -269431 -269441 -269461 -269473 -269513 -269519 -269527 -269539 -269543 -269561 -269573 -269579 -269597 -269617 -269623 -269641 -269651 -269663 -269683 -269701 -269713 -269719 -269723 -269741 -269749 -269761 -269779 -269783 -269791 -269851 -269879 -269887 -269891 -269897 -269923 -269939 -269947 -269953 -269981 -269987 -270001 -270029 -270031 -270037 -270059 -270071 -270073 -270097 -270121 -270131 -270133 -270143 -270157 -270163 -270167 -270191 -270209 -270217 -270223 -270229 -270239 -270241 -270269 -270271 -270287 -270299 -270307 -270311 -270323 -270329 -270337 -270343 -270371 -270379 -270407 -270421 -270437 -270443 -270451 -270461 -270463 -270493 -270509 -270527 -270539 -270547 -270551 -270553 -270563 -270577 -270583 -270587 -270593 -270601 -270619 -270631 -270653 -270659 -270667 -270679 -270689 -270701 -270709 -270719 -270737 -270749 -270761 -270763 -270791 -270797 -270799 -270821 -270833 -270841 -270859 -270899 -270913 -270923 -270931 -270937 -270953 -270961 -270967 -270973 -271003 -271013 -271021 -271027 -271043 -271057 -271067 -271079 -271097 -271109 -271127 -271129 -271163 -271169 -271177 -271181 -271211 -271217 -271231 -271241 -271253 -271261 -271273 -271277 -271279 -271289 -271333 -271351 -271357 -271363 -271367 -271393 -271409 -271429 -271451 -271463 -271471 -271483 -271489 -271499 -271501 -271517 -271549 -271553 -271571 -271573 -271597 -271603 -271619 -271637 -271639 -271651 -271657 -271693 -271703 -271723 -271729 -271753 -271769 -271771 -271787 -271807 -271811 -271829 -271841 -271849 -271853 -271861 -271867 -271879 -271897 -271903 -271919 -271927 -271939 -271967 -271969 -271981 -272003 -272009 -272011 -272029 -272039 -272053 -272059 -272093 -272131 -272141 -272171 -272179 -272183 -272189 -272191 -272201 -272203 -272227 -272231 -272249 -272257 -272263 -272267 -272269 -272287 -272299 -272317 -272329 -272333 -272341 -272347 -272351 -272353 -272359 -272369 -272381 -272383 -272399 -272407 -272411 -272417 -272423 -272449 -272453 -272477 -272507 -272533 -272537 -272539 -272549 -272563 -272567 -272581 -272603 -272621 -272651 -272659 -272683 -272693 -272717 -272719 -272737 -272759 -272761 -272771 -272777 -272807 -272809 -272813 -272863 -272879 -272887 -272903 -272911 -272917 -272927 -272933 -272959 -272971 -272981 -272983 -272989 -272999 -273001 -273029 -273043 -273047 -273059 -273061 -273067 -273073 -273083 -273107 -273113 -273127 -273131 -273149 -273157 -273181 -273187 -273193 -273233 -273253 -273269 -273271 -273281 -273283 -273289 -273311 -273313 -273323 -273349 -273359 -273367 -273433 -273457 -273473 -273503 -273517 -273521 -273527 -273551 -273569 -273601 -273613 -273617 -273629 -273641 -273643 -273653 -273697 -273709 -273719 -273727 -273739 -273773 -273787 -273797 -273803 -273821 -273827 -273857 -273881 -273899 -273901 -273913 -273919 -273929 -273941 -273943 -273967 -273971 -273979 -273997 -274007 -274019 -274033 -274061 -274069 -274081 -274093 -274103 -274117 -274121 -274123 -274139 -274147 -274163 -274171 -274177 -274187 -274199 -274201 -274213 -274223 -274237 -274243 -274259 -274271 -274277 -274283 -274301 -274333 -274349 -274357 -274361 -274403 -274423 -274441 -274451 -274453 -274457 -274471 -274489 -274517 -274529 -274579 -274583 -274591 -274609 -274627 -274661 -274667 -274679 -274693 -274697 -274709 -274711 -274723 -274739 -274751 -274777 -274783 -274787 -274811 -274817 -274829 -274831 -274837 -274843 -274847 -274853 -274861 -274867 -274871 -274889 -274909 -274931 -274943 -274951 -274957 -274961 -274973 -274993 -275003 -275027 -275039 -275047 -275053 -275059 -275083 -275087 -275129 -275131 -275147 -275153 -275159 -275161 -275167 -275183 -275201 -275207 -275227 -275251 -275263 -275269 -275299 -275309 -275321 -275323 -275339 -275357 -275371 -275389 -275393 -275399 -275419 -275423 -275447 -275449 -275453 -275459 -275461 -275489 -275491 -275503 -275521 -275531 -275543 -275549 -275573 -275579 -275581 -275591 -275593 -275599 -275623 -275641 -275651 -275657 -275669 -275677 -275699 -275711 -275719 -275729 -275741 -275767 -275773 -275783 -275813 -275827 -275837 -275881 -275897 -275911 -275917 -275921 -275923 -275929 -275939 -275941 -275963 -275969 -275981 -275987 -275999 -276007 -276011 -276019 -276037 -276041 -276043 -276047 -276049 -276079 -276083 -276091 -276113 -276137 -276151 -276173 -276181 -276187 -276191 -276209 -276229 -276239 -276247 -276251 -276257 -276277 -276293 -276319 -276323 -276337 -276343 -276347 -276359 -276371 -276373 -276389 -276401 -276439 -276443 -276449 -276461 -276467 -276487 -276499 -276503 -276517 -276527 -276553 -276557 -276581 -276587 -276589 -276593 -276599 -276623 -276629 -276637 -276671 -276673 -276707 -276721 -276739 -276763 -276767 -276779 -276781 -276817 -276821 -276823 -276827 -276833 -276839 -276847 -276869 -276883 -276901 -276907 -276917 -276919 -276929 -276949 -276953 -276961 -276977 -277003 -277007 -277021 -277051 -277063 -277073 -277087 -277097 -277099 -277157 -277163 -277169 -277177 -277183 -277213 -277217 -277223 -277231 -277247 -277259 -277261 -277273 -277279 -277297 -277301 -277309 -277331 -277363 -277373 -277411 -277421 -277427 -277429 -277483 -277493 -277499 -277513 -277531 -277547 -277549 -277567 -277577 -277579 -277597 -277601 -277603 -277637 -277639 -277643 -277657 -277663 -277687 -277691 -277703 -277741 -277747 -277751 -277757 -277787 -277789 -277793 -277813 -277829 -277847 -277859 -277883 -277889 -277891 -277897 -277903 -277919 -277961 -277993 -277999 -278017 -278029 -278041 -278051 -278063 -278071 -278087 -278111 -278119 -278123 -278143 -278147 -278149 -278177 -278191 -278207 -278209 -278219 -278227 -278233 -278237 -278261 -278269 -278279 -278321 -278329 -278347 -278353 -278363 -278387 -278393 -278413 -278437 -278459 -278479 -278489 -278491 -278497 -278501 -278503 -278543 -278549 -278557 -278561 -278563 -278581 -278591 -278609 -278611 -278617 -278623 -278627 -278639 -278651 -278671 -278687 -278689 -278701 -278717 -278741 -278743 -278753 -278767 -278801 -278807 -278809 -278813 -278819 -278827 -278843 -278849 -278867 -278879 -278881 -278891 -278903 -278909 -278911 -278917 -278947 -278981 -279001 -279007 -279023 -279029 -279047 -279073 -279109 -279119 -279121 -279127 -279131 -279137 -279143 -279173 -279179 -279187 -279203 -279211 -279221 -279269 -279311 -279317 -279329 -279337 -279353 -279397 -279407 -279413 -279421 -279431 -279443 -279451 -279479 -279481 -279511 -279523 -279541 -279551 -279553 -279557 -279571 -279577 -279583 -279593 -279607 -279613 -279619 -279637 -279641 -279649 -279659 -279679 -279689 -279707 -279709 -279731 -279751 -279761 -279767 -279779 -279817 -279823 -279847 -279857 -279863 -279883 -279913 -279919 -279941 -279949 -279967 -279977 -279991 -280001 -280009 -280013 -280031 -280037 -280061 -280069 -280097 -280099 -280103 -280121 -280129 -280139 -280183 -280187 -280199 -280207 -280219 -280223 -280229 -280243 -280249 -280253 -280277 -280297 -280303 -280321 -280327 -280337 -280339 -280351 -280373 -280409 -280411 -280451 -280463 -280487 -280499 -280507 -280513 -280537 -280541 -280547 -280549 -280561 -280583 -280589 -280591 -280597 -280603 -280607 -280613 -280627 -280639 -280673 -280681 -280697 -280699 -280703 -280711 -280717 -280729 -280751 -280759 -280769 -280771 -280811 -280817 -280837 -280843 -280859 -280871 -280879 -280883 -280897 -280909 -280913 -280921 -280927 -280933 -280939 -280949 -280957 -280963 -280967 -280979 -280997 -281023 -281033 -281053 -281063 -281069 -281081 -281117 -281131 -281153 -281159 -281167 -281189 -281191 -281207 -281227 -281233 -281243 -281249 -281251 -281273 -281279 -281291 -281297 -281317 -281321 -281327 -281339 -281353 -281357 -281363 -281381 -281419 -281423 -281429 -281431 -281509 -281527 -281531 -281539 -281549 -281551 -281557 -281563 -281579 -281581 -281609 -281621 -281623 -281627 -281641 -281647 -281651 -281653 -281663 -281669 -281683 -281717 -281719 -281737 -281747 -281761 -281767 -281777 -281783 -281791 -281797 -281803 -281807 -281833 -281837 -281839 -281849 -281857 -281867 -281887 -281893 -281921 -281923 -281927 -281933 -281947 -281959 -281971 -281989 -281993 -282001 -282011 -282019 -282053 -282059 -282071 -282089 -282091 -282097 -282101 -282103 -282127 -282143 -282157 -282167 -282221 -282229 -282239 -282241 -282253 -282281 -282287 -282299 -282307 -282311 -282313 -282349 -282377 -282383 -282389 -282391 -282407 -282409 -282413 -282427 -282439 -282461 -282481 -282487 -282493 -282559 -282563 -282571 -282577 -282589 -282599 -282617 -282661 -282671 -282677 -282679 -282683 -282691 -282697 -282703 -282707 -282713 -282767 -282769 -282773 -282797 -282809 -282827 -282833 -282847 -282851 -282869 -282881 -282889 -282907 -282911 -282913 -282917 -282959 -282973 -282977 -282991 -283001 -283007 -283009 -283027 -283051 -283079 -283093 -283097 -283099 -283111 -283117 -283121 -283133 -283139 -283159 -283163 -283181 -283183 -283193 -283207 -283211 -283267 -283277 -283289 -283303 -283369 -283397 -283403 -283411 -283447 -283463 -283487 -283489 -283501 -283511 -283519 -283541 -283553 -283571 -283573 -283579 -283583 -283601 -283607 -283609 -283631 -283637 -283639 -283669 -283687 -283697 -283721 -283741 -283763 -283769 -283771 -283793 -283799 -283807 -283813 -283817 -283831 -283837 -283859 -283861 -283873 -283909 -283937 -283949 -283957 -283961 -283979 -284003 -284023 -284041 -284051 -284057 -284059 -284083 -284093 -284111 -284117 -284129 -284131 -284149 -284153 -284159 -284161 -284173 -284191 -284201 -284227 -284231 -284233 -284237 -284243 -284261 -284267 -284269 -284293 -284311 -284341 -284357 -284369 -284377 -284387 -284407 -284413 -284423 -284429 -284447 -284467 -284477 -284483 -284489 -284507 -284509 -284521 -284527 -284539 -284551 -284561 -284573 -284587 -284591 -284593 -284623 -284633 -284651 -284657 -284659 -284681 -284689 -284701 -284707 -284723 -284729 -284731 -284737 -284741 -284743 -284747 -284749 -284759 -284777 -284783 -284803 -284807 -284813 -284819 -284831 -284833 -284839 -284857 -284881 -284897 -284899 -284917 -284927 -284957 -284969 -284989 -285007 -285023 -285031 -285049 -285071 -285079 -285091 -285101 -285113 -285119 -285121 -285139 -285151 -285161 -285179 -285191 -285199 -285221 -285227 -285251 -285281 -285283 -285287 -285289 -285301 -285317 -285343 -285377 -285421 -285433 -285451 -285457 -285463 -285469 -285473 -285497 -285517 -285521 -285533 -285539 -285553 -285557 -285559 -285569 -285599 -285611 -285613 -285629 -285631 -285641 -285643 -285661 -285667 -285673 -285697 -285707 -285709 -285721 -285731 -285749 -285757 -285763 -285767 -285773 -285781 -285823 -285827 -285839 -285841 -285871 -285937 -285949 -285953 -285977 -285979 -285983 -285997 -286001 -286009 -286019 -286043 -286049 -286061 -286063 -286073 -286103 -286129 -286163 -286171 -286199 -286243 -286249 -286289 -286301 -286333 -286367 -286369 -286381 -286393 -286397 -286411 -286421 -286427 -286453 -286457 -286459 -286469 -286477 -286483 -286487 -286493 -286499 -286513 -286519 -286541 -286543 -286547 -286553 -286589 -286591 -286609 -286613 -286619 -286633 -286651 -286673 -286687 -286697 -286703 -286711 -286721 -286733 -286751 -286753 -286763 -286771 -286777 -286789 -286801 -286813 -286831 -286859 -286873 -286927 -286973 -286981 -286987 -286999 -287003 -287047 -287057 -287059 -287087 -287093 -287099 -287107 -287117 -287137 -287141 -287149 -287159 -287167 -287173 -287179 -287191 -287219 -287233 -287237 -287239 -287251 -287257 -287269 -287279 -287281 -287291 -287297 -287321 -287327 -287333 -287341 -287347 -287383 -287387 -287393 -287437 -287449 -287491 -287501 -287503 -287537 -287549 -287557 -287579 -287597 -287611 -287629 -287669 -287671 -287681 -287689 -287701 -287731 -287747 -287783 -287789 -287801 -287813 -287821 -287849 -287851 -287857 -287863 -287867 -287873 -287887 -287921 -287933 -287939 -287977 -288007 -288023 -288049 -288053 -288061 -288077 -288089 -288109 -288137 -288179 -288181 -288191 -288199 -288203 -288209 -288227 -288241 -288247 -288257 -288283 -288293 -288307 -288313 -288317 -288349 -288359 -288361 -288383 -288389 -288403 -288413 -288427 -288433 -288461 -288467 -288481 -288493 -288499 -288527 -288529 -288539 -288551 -288559 -288571 -288577 -288583 -288647 -288649 -288653 -288661 -288679 -288683 -288689 -288697 -288731 -288733 -288751 -288767 -288773 -288803 -288817 -288823 -288833 -288839 -288851 -288853 -288877 -288907 -288913 -288929 -288931 -288947 -288973 -288979 -288989 -288991 -288997 -289001 -289019 -289021 -289031 -289033 -289039 -289049 -289063 -289067 -289099 -289103 -289109 -289111 -289127 -289129 -289139 -289141 -289151 -289169 -289171 -289181 -289189 -289193 -289213 -289241 -289243 -289249 -289253 -289273 -289283 -289291 -289297 -289309 -289319 -289343 -289349 -289361 -289369 -289381 -289397 -289417 -289423 -289439 -289453 -289463 -289469 -289477 -289489 -289511 -289543 -289559 -289573 -289577 -289589 -289603 -289607 -289637 -289643 -289657 -289669 -289717 -289721 -289727 -289733 -289741 -289759 -289763 -289771 -289789 -289837 -289841 -289843 -289847 -289853 -289859 -289871 -289889 -289897 -289937 -289951 -289957 -289967 -289973 -289987 -289999 -290011 -290021 -290023 -290027 -290033 -290039 -290041 -290047 -290057 -290083 -290107 -290113 -290119 -290137 -290141 -290161 -290183 -290189 -290201 -290209 -290219 -290233 -290243 -290249 -290317 -290327 -290347 -290351 -290359 -290369 -290383 -290393 -290399 -290419 -290429 -290441 -290443 -290447 -290471 -290473 -290489 -290497 -290509 -290527 -290531 -290533 -290539 -290557 -290593 -290597 -290611 -290617 -290621 -290623 -290627 -290657 -290659 -290663 -290669 -290671 -290677 -290701 -290707 -290711 -290737 -290761 -290767 -290791 -290803 -290821 -290827 -290837 -290839 -290861 -290869 -290879 -290897 -290923 -290959 -290963 -290971 -290987 -290993 -290999 -291007 -291013 -291037 -291041 -291043 -291077 -291089 -291101 -291103 -291107 -291113 -291143 -291167 -291169 -291173 -291191 -291199 -291209 -291217 -291253 -291257 -291271 -291287 -291293 -291299 -291331 -291337 -291349 -291359 -291367 -291371 -291373 -291377 -291419 -291437 -291439 -291443 -291457 -291481 -291491 -291503 -291509 -291521 -291539 -291547 -291559 -291563 -291569 -291619 -291647 -291649 -291661 -291677 -291689 -291691 -291701 -291721 -291727 -291743 -291751 -291779 -291791 -291817 -291829 -291833 -291853 -291857 -291869 -291877 -291887 -291899 -291901 -291923 -291971 -291979 -291983 -291997 -292021 -292027 -292037 -292057 -292069 -292079 -292081 -292091 -292093 -292133 -292141 -292147 -292157 -292181 -292183 -292223 -292231 -292241 -292249 -292267 -292283 -292301 -292309 -292319 -292343 -292351 -292363 -292367 -292381 -292393 -292427 -292441 -292459 -292469 -292471 -292477 -292483 -292489 -292493 -292517 -292531 -292541 -292549 -292561 -292573 -292577 -292601 -292627 -292631 -292661 -292667 -292673 -292679 -292693 -292703 -292709 -292711 -292717 -292727 -292753 -292759 -292777 -292793 -292801 -292807 -292819 -292837 -292841 -292849 -292867 -292879 -292909 -292921 -292933 -292969 -292973 -292979 -292993 -293021 -293071 -293081 -293087 -293093 -293099 -293107 -293123 -293129 -293147 -293149 -293173 -293177 -293179 -293201 -293207 -293213 -293221 -293257 -293261 -293263 -293269 -293311 -293329 -293339 -293351 -293357 -293399 -293413 -293431 -293441 -293453 -293459 -293467 -293473 -293483 -293507 -293543 -293599 -293603 -293617 -293621 -293633 -293639 -293651 -293659 -293677 -293681 -293701 -293717 -293723 -293729 -293749 -293767 -293773 -293791 -293803 -293827 -293831 -293861 -293863 -293893 -293899 -293941 -293957 -293983 -293989 -293999 -294001 -294013 -294023 -294029 -294043 -294053 -294059 -294067 -294103 -294127 -294131 -294149 -294157 -294167 -294169 -294179 -294181 -294199 -294211 -294223 -294227 -294241 -294247 -294251 -294269 -294277 -294289 -294293 -294311 -294313 -294317 -294319 -294337 -294341 -294347 -294353 -294383 -294391 -294397 -294403 -294431 -294439 -294461 -294467 -294479 -294499 -294509 -294523 -294529 -294551 -294563 -294629 -294641 -294647 -294649 -294659 -294673 -294703 -294731 -294751 -294757 -294761 -294773 -294781 -294787 -294793 -294799 -294803 -294809 -294821 -294829 -294859 -294869 -294887 -294893 -294911 -294919 -294923 -294947 -294949 -294953 -294979 -294989 -294991 -294997 -295007 -295033 -295037 -295039 -295049 -295073 -295079 -295081 -295111 -295123 -295129 -295153 -295187 -295199 -295201 -295219 -295237 -295247 -295259 -295271 -295277 -295283 -295291 -295313 -295319 -295333 -295357 -295363 -295387 -295411 -295417 -295429 -295433 -295439 -295441 -295459 -295513 -295517 -295541 -295553 -295567 -295571 -295591 -295601 -295663 -295693 -295699 -295703 -295727 -295751 -295759 -295769 -295777 -295787 -295819 -295831 -295837 -295843 -295847 -295853 -295861 -295871 -295873 -295877 -295879 -295901 -295903 -295909 -295937 -295943 -295949 -295951 -295961 -295973 -295993 -296011 -296017 -296027 -296041 -296047 -296071 -296083 -296099 -296117 -296129 -296137 -296159 -296183 -296201 -296213 -296221 -296237 -296243 -296249 -296251 -296269 -296273 -296279 -296287 -296299 -296347 -296353 -296363 -296369 -296377 -296437 -296441 -296473 -296477 -296479 -296489 -296503 -296507 -296509 -296519 -296551 -296557 -296561 -296563 -296579 -296581 -296587 -296591 -296627 -296651 -296663 -296669 -296683 -296687 -296693 -296713 -296719 -296729 -296731 -296741 -296749 -296753 -296767 -296771 -296773 -296797 -296801 -296819 -296827 -296831 -296833 -296843 -296909 -296911 -296921 -296929 -296941 -296969 -296971 -296981 -296983 -296987 -297019 -297023 -297049 -297061 -297067 -297079 -297083 -297097 -297113 -297133 -297151 -297161 -297169 -297191 -297233 -297247 -297251 -297257 -297263 -297289 -297317 -297359 -297371 -297377 -297391 -297397 -297403 -297421 -297439 -297457 -297467 -297469 -297481 -297487 -297503 -297509 -297523 -297533 -297581 -297589 -297601 -297607 -297613 -297617 -297623 -297629 -297641 -297659 -297683 -297691 -297707 -297719 -297727 -297757 -297779 -297793 -297797 -297809 -297811 -297833 -297841 -297853 -297881 -297889 -297893 -297907 -297911 -297931 -297953 -297967 -297971 -297989 -297991 -298013 -298021 -298031 -298043 -298049 -298063 -298087 -298093 -298099 -298153 -298157 -298159 -298169 -298171 -298187 -298201 -298211 -298213 -298223 -298237 -298247 -298261 -298283 -298303 -298307 -298327 -298339 -298343 -298349 -298369 -298373 -298399 -298409 -298411 -298427 -298451 -298477 -298483 -298513 -298559 -298579 -298583 -298589 -298601 -298607 -298621 -298631 -298651 -298667 -298679 -298681 -298687 -298691 -298693 -298709 -298723 -298733 -298757 -298759 -298777 -298799 -298801 -298817 -298819 -298841 -298847 -298853 -298861 -298897 -298937 -298943 -298993 -298999 -299011 -299017 -299027 -299029 -299053 -299059 -299063 -299087 -299099 -299107 -299113 -299137 -299147 -299171 -299179 -299191 -299197 -299213 -299239 -299261 -299281 -299287 -299311 -299317 -299329 -299333 -299357 -299359 -299363 -299371 -299389 -299393 -299401 -299417 -299419 -299447 -299471 -299473 -299477 -299479 -299501 -299513 -299521 -299527 -299539 -299567 -299569 -299603 -299617 -299623 -299653 -299671 -299681 -299683 -299699 -299701 -299711 -299723 -299731 -299743 -299749 -299771 -299777 -299807 -299843 -299857 -299861 -299881 -299891 -299903 -299909 -299933 -299941 -299951 -299969 -299977 -299983 -299993 -300007 -300017 -300023 -300043 -300073 -300089 -300109 -300119 -300137 -300149 -300151 -300163 -300187 -300191 -300193 -300221 -300229 -300233 -300239 -300247 -300277 -300299 -300301 -300317 -300319 -300323 -300331 -300343 -300347 -300367 -300397 -300413 -300427 -300431 -300439 -300463 -300481 -300491 -300493 -300497 -300499 -300511 -300557 -300569 -300581 -300583 -300589 -300593 -300623 -300631 -300647 -300649 -300661 -300667 -300673 -300683 -300691 -300719 -300721 -300733 -300739 -300743 -300749 -300757 -300761 -300779 -300787 -300799 -300809 -300821 -300823 -300851 -300857 -300869 -300877 -300889 -300893 -300929 -300931 -300953 -300961 -300967 -300973 -300977 -300997 -301013 -301027 -301039 -301051 -301057 -301073 -301079 -301123 -301127 -301141 -301153 -301159 -301177 -301181 -301183 -301211 -301219 -301237 -301241 -301243 -301247 -301267 -301303 -301319 -301331 -301333 -301349 -301361 -301363 -301381 -301403 -301409 -301423 -301429 -301447 -301459 -301463 -301471 -301487 -301489 -301493 -301501 -301531 -301577 -301579 -301583 -301591 -301601 -301619 -301627 -301643 -301649 -301657 -301669 -301673 -301681 -301703 -301711 -301747 -301751 -301753 -301759 -301789 -301793 -301813 -301831 -301841 -301843 -301867 -301877 -301897 -301901 -301907 -301913 -301927 -301933 -301943 -301949 -301979 -301991 -301993 -301997 -301999 -302009 -302053 -302111 -302123 -302143 -302167 -302171 -302173 -302189 -302191 -302213 -302221 -302227 -302261 -302273 -302279 -302287 -302297 -302299 -302317 -302329 -302399 -302411 -302417 -302429 -302443 -302459 -302483 -302507 -302513 -302551 -302563 -302567 -302573 -302579 -302581 -302587 -302593 -302597 -302609 -302629 -302647 -302663 -302681 -302711 -302723 -302747 -302759 -302767 -302779 -302791 -302801 -302831 -302833 -302837 -302843 -302851 -302857 -302873 -302891 -302903 -302909 -302921 -302927 -302941 -302959 -302969 -302971 -302977 -302983 -302989 -302999 -303007 -303011 -303013 -303019 -303029 -303049 -303053 -303073 -303089 -303091 -303097 -303119 -303139 -303143 -303151 -303157 -303187 -303217 -303257 -303271 -303283 -303287 -303293 -303299 -303307 -303313 -303323 -303337 -303341 -303361 -303367 -303371 -303377 -303379 -303389 -303409 -303421 -303431 -303463 -303469 -303473 -303491 -303493 -303497 -303529 -303539 -303547 -303551 -303553 -303571 -303581 -303587 -303593 -303613 -303617 -303619 -303643 -303647 -303649 -303679 -303683 -303689 -303691 -303703 -303713 -303727 -303731 -303749 -303767 -303781 -303803 -303817 -303827 -303839 -303859 -303871 -303889 -303907 -303917 -303931 -303937 -303959 -303983 -303997 -304009 -304013 -304021 -304033 -304039 -304049 -304063 -304067 -304069 -304081 -304091 -304099 -304127 -304151 -304153 -304163 -304169 -304193 -304211 -304217 -304223 -304253 -304259 -304279 -304301 -304303 -304331 -304349 -304357 -304363 -304373 -304391 -304393 -304411 -304417 -304429 -304433 -304439 -304457 -304459 -304477 -304481 -304489 -304501 -304511 -304517 -304523 -304537 -304541 -304553 -304559 -304561 -304597 -304609 -304631 -304643 -304651 -304663 -304687 -304709 -304723 -304729 -304739 -304751 -304757 -304763 -304771 -304781 -304789 -304807 -304813 -304831 -304847 -304849 -304867 -304879 -304883 -304897 -304901 -304903 -304907 -304933 -304937 -304943 -304949 -304961 -304979 -304981 -305017 -305021 -305023 -305029 -305033 -305047 -305069 -305093 -305101 -305111 -305113 -305119 -305131 -305143 -305147 -305209 -305219 -305231 -305237 -305243 -305267 -305281 -305297 -305329 -305339 -305351 -305353 -305363 -305369 -305377 -305401 -305407 -305411 -305413 -305419 -305423 -305441 -305449 -305471 -305477 -305479 -305483 -305489 -305497 -305521 -305533 -305551 -305563 -305581 -305593 -305597 -305603 -305611 -305621 -305633 -305639 -305663 -305717 -305719 -305741 -305743 -305749 -305759 -305761 -305771 -305783 -305803 -305821 -305839 -305849 -305857 -305861 -305867 -305873 -305917 -305927 -305933 -305947 -305971 -305999 -306011 -306023 -306029 -306041 -306049 -306083 -306091 -306121 -306133 -306139 -306149 -306157 -306167 -306169 -306191 -306193 -306209 -306239 -306247 -306253 -306259 -306263 -306301 -306329 -306331 -306347 -306349 -306359 -306367 -306377 -306389 -306407 -306419 -306421 -306431 -306437 -306457 -306463 -306473 -306479 -306491 -306503 -306511 -306517 -306529 -306533 -306541 -306563 -306577 -306587 -306589 -306643 -306653 -306661 -306689 -306701 -306703 -306707 -306727 -306739 -306749 -306763 -306781 -306809 -306821 -306827 -306829 -306847 -306853 -306857 -306871 -306877 -306883 -306893 -306899 -306913 -306919 -306941 -306947 -306949 -306953 -306991 -307009 -307019 -307031 -307033 -307067 -307079 -307091 -307093 -307103 -307121 -307129 -307147 -307163 -307169 -307171 -307187 -307189 -307201 -307243 -307253 -307259 -307261 -307267 -307273 -307277 -307283 -307289 -307301 -307337 -307339 -307361 -307367 -307381 -307397 -307399 -307409 -307423 -307451 -307471 -307481 -307511 -307523 -307529 -307537 -307543 -307577 -307583 -307589 -307609 -307627 -307631 -307633 -307639 -307651 -307669 -307687 -307691 -307693 -307711 -307733 -307759 -307817 -307823 -307831 -307843 -307859 -307871 -307873 -307891 -307903 -307919 -307939 -307969 -308003 -308017 -308027 -308041 -308051 -308081 -308093 -308101 -308107 -308117 -308129 -308137 -308141 -308149 -308153 -308213 -308219 -308249 -308263 -308291 -308293 -308303 -308309 -308311 -308317 -308323 -308327 -308333 -308359 -308383 -308411 -308423 -308437 -308447 -308467 -308489 -308491 -308501 -308507 -308509 -308519 -308521 -308527 -308537 -308551 -308569 -308573 -308587 -308597 -308621 -308639 -308641 -308663 -308681 -308701 -308713 -308723 -308761 -308773 -308801 -308809 -308813 -308827 -308849 -308851 -308857 -308887 -308899 -308923 -308927 -308929 -308933 -308939 -308951 -308989 -308999 -309007 -309011 -309013 -309019 -309031 -309037 -309059 -309079 -309083 -309091 -309107 -309109 -309121 -309131 -309137 -309157 -309167 -309173 -309193 -309223 -309241 -309251 -309259 -309269 -309271 -309277 -309289 -309293 -309311 -309313 -309317 -309359 -309367 -309371 -309391 -309403 -309433 -309437 -309457 -309461 -309469 -309479 -309481 -309493 -309503 -309521 -309523 -309539 -309541 -309559 -309571 -309577 -309583 -309599 -309623 -309629 -309637 -309667 -309671 -309677 -309707 -309713 -309731 -309737 -309769 -309779 -309781 -309797 -309811 -309823 -309851 -309853 -309857 -309877 -309899 -309929 -309931 -309937 -309977 -309989 -310019 -310021 -310027 -310043 -310049 -310081 -310087 -310091 -310111 -310117 -310127 -310129 -310169 -310181 -310187 -310223 -310229 -310231 -310237 -310243 -310273 -310283 -310291 -310313 -310333 -310357 -310361 -310363 -310379 -310397 -310423 -310433 -310439 -310447 -310459 -310463 -310481 -310489 -310501 -310507 -310511 -310547 -310553 -310559 -310567 -310571 -310577 -310591 -310627 -310643 -310663 -310693 -310697 -310711 -310721 -310727 -310729 -310733 -310741 -310747 -310771 -310781 -310789 -310801 -310819 -310823 -310829 -310831 -310861 -310867 -310883 -310889 -310901 -310927 -310931 -310949 -310969 -310987 -310997 -311009 -311021 -311027 -311033 -311041 -311099 -311111 -311123 -311137 -311153 -311173 -311177 -311183 -311189 -311197 -311203 -311237 -311279 -311291 -311293 -311299 -311303 -311323 -311329 -311341 -311347 -311359 -311371 -311393 -311407 -311419 -311447 -311453 -311473 -311533 -311537 -311539 -311551 -311557 -311561 -311567 -311569 -311603 -311609 -311653 -311659 -311677 -311681 -311683 -311687 -311711 -311713 -311737 -311743 -311747 -311749 -311791 -311803 -311807 -311821 -311827 -311867 -311869 -311881 -311897 -311951 -311957 -311963 -311981 -312007 -312023 -312029 -312031 -312043 -312047 -312071 -312073 -312083 -312089 -312101 -312107 -312121 -312161 -312197 -312199 -312203 -312209 -312211 -312217 -312229 -312233 -312241 -312251 -312253 -312269 -312281 -312283 -312289 -312311 -312313 -312331 -312343 -312349 -312353 -312371 -312383 -312397 -312401 -312407 -312413 -312427 -312451 -312469 -312509 -312517 -312527 -312551 -312553 -312563 -312581 -312583 -312589 -312601 -312617 -312619 -312623 -312643 -312673 -312677 -312679 -312701 -312703 -312709 -312727 -312737 -312743 -312757 -312773 -312779 -312799 -312839 -312841 -312857 -312863 -312887 -312899 -312929 -312931 -312937 -312941 -312943 -312967 -312971 -312979 -312989 -313003 -313009 -313031 -313037 -313081 -313087 -313109 -313127 -313129 -313133 -313147 -313151 -313153 -313163 -313207 -313211 -313219 -313241 -313249 -313267 -313273 -313289 -313297 -313301 -313307 -313321 -313331 -313333 -313343 -313351 -313373 -313381 -313387 -313399 -313409 -313471 -313477 -313507 -313517 -313543 -313549 -313553 -313561 -313567 -313571 -313583 -313589 -313597 -313603 -313613 -313619 -313637 -313639 -313661 -313669 -313679 -313699 -313711 -313717 -313721 -313727 -313739 -313741 -313763 -313777 -313783 -313829 -313849 -313853 -313879 -313883 -313889 -313897 -313909 -313921 -313931 -313933 -313949 -313961 -313969 -313979 -313981 -313987 -313991 -313993 -313997 -314003 -314021 -314059 -314063 -314077 -314107 -314113 -314117 -314129 -314137 -314159 -314161 -314173 -314189 -314213 -314219 -314227 -314233 -314239 -314243 -314257 -314261 -314263 -314267 -314299 -314329 -314339 -314351 -314357 -314359 -314399 -314401 -314407 -314423 -314441 -314453 -314467 -314491 -314497 -314513 -314527 -314543 -314549 -314569 -314581 -314591 -314597 -314599 -314603 -314623 -314627 -314641 -314651 -314693 -314707 -314711 -314719 -314723 -314747 -314761 -314771 -314777 -314779 -314807 -314813 -314827 -314851 -314879 -314903 -314917 -314927 -314933 -314953 -314957 -314983 -314989 -315011 -315013 -315037 -315047 -315059 -315067 -315083 -315097 -315103 -315109 -315127 -315179 -315181 -315193 -315199 -315223 -315247 -315251 -315257 -315269 -315281 -315313 -315349 -315361 -315373 -315377 -315389 -315407 -315409 -315421 -315437 -315449 -315451 -315461 -315467 -315481 -315493 -315517 -315521 -315527 -315529 -315547 -315551 -315559 -315569 -315589 -315593 -315599 -315613 -315617 -315631 -315643 -315671 -315677 -315691 -315697 -315701 -315703 -315739 -315743 -315751 -315779 -315803 -315811 -315829 -315851 -315857 -315881 -315883 -315893 -315899 -315907 -315937 -315949 -315961 -315967 -315977 -316003 -316031 -316033 -316037 -316051 -316067 -316073 -316087 -316097 -316109 -316133 -316139 -316153 -316177 -316189 -316193 -316201 -316213 -316219 -316223 -316241 -316243 -316259 -316271 -316291 -316297 -316301 -316321 -316339 -316343 -316363 -316373 -316391 -316403 -316423 -316429 -316439 -316453 -316469 -316471 -316493 -316499 -316501 -316507 -316531 -316567 -316571 -316577 -316583 -316621 -316633 -316637 -316649 -316661 -316663 -316681 -316691 -316697 -316699 -316703 -316717 -316753 -316759 -316769 -316777 -316783 -316793 -316801 -316817 -316819 -316847 -316853 -316859 -316861 -316879 -316891 -316903 -316907 -316919 -316937 -316951 -316957 -316961 -316991 -317003 -317011 -317021 -317029 -317047 -317063 -317071 -317077 -317087 -317089 -317123 -317159 -317171 -317179 -317189 -317197 -317209 -317227 -317257 -317263 -317267 -317269 -317279 -317321 -317323 -317327 -317333 -317351 -317353 -317363 -317371 -317399 -317411 -317419 -317431 -317437 -317453 -317459 -317483 -317489 -317491 -317503 -317539 -317557 -317563 -317587 -317591 -317593 -317599 -317609 -317617 -317621 -317651 -317663 -317671 -317693 -317701 -317711 -317717 -317729 -317731 -317741 -317743 -317771 -317773 -317777 -317783 -317789 -317797 -317827 -317831 -317839 -317857 -317887 -317903 -317921 -317923 -317957 -317959 -317963 -317969 -317971 -317983 -317987 -318001 -318007 -318023 -318077 -318103 -318107 -318127 -318137 -318161 -318173 -318179 -318181 -318191 -318203 -318209 -318211 -318229 -318233 -318247 -318259 -318271 -318281 -318287 -318289 -318299 -318301 -318313 -318319 -318323 -318337 -318347 -318349 -318377 -318403 -318407 -318419 -318431 -318443 -318457 -318467 -318473 -318503 -318523 -318557 -318559 -318569 -318581 -318589 -318601 -318629 -318641 -318653 -318671 -318677 -318679 -318683 -318691 -318701 -318713 -318737 -318743 -318749 -318751 -318781 -318793 -318809 -318811 -318817 -318823 -318833 -318841 -318863 -318881 -318883 -318889 -318907 -318911 -318917 -318919 -318949 -318979 -319001 -319027 -319031 -319037 -319049 -319057 -319061 -319069 -319093 -319097 -319117 -319127 -319129 -319133 -319147 -319159 -319169 -319183 -319201 -319211 -319223 -319237 -319259 -319279 -319289 -319313 -319321 -319327 -319339 -319343 -319351 -319357 -319387 -319391 -319399 -319411 -319427 -319433 -319439 -319441 -319453 -319469 -319477 -319483 -319489 -319499 -319511 -319519 -319541 -319547 -319567 -319577 -319589 -319591 -319601 -319607 -319639 -319673 -319679 -319681 -319687 -319691 -319699 -319727 -319729 -319733 -319747 -319757 -319763 -319811 -319817 -319819 -319829 -319831 -319849 -319883 -319897 -319901 -319919 -319927 -319931 -319937 -319967 -319973 -319981 -319993 -320009 -320011 -320027 -320039 -320041 -320053 -320057 -320063 -320081 -320083 -320101 -320107 -320113 -320119 -320141 -320143 -320149 -320153 -320179 -320209 -320213 -320219 -320237 -320239 -320267 -320269 -320273 -320291 -320293 -320303 -320317 -320329 -320339 -320377 -320387 -320389 -320401 -320417 -320431 -320449 -320471 -320477 -320483 -320513 -320521 -320533 -320539 -320561 -320563 -320591 -320609 -320611 -320627 -320647 -320657 -320659 -320669 -320687 -320693 -320699 -320713 -320741 -320759 -320767 -320791 -320821 -320833 -320839 -320843 -320851 -320861 -320867 -320899 -320911 -320923 -320927 -320939 -320941 -320953 -321007 -321017 -321031 -321037 -321047 -321053 -321073 -321077 -321091 -321109 -321143 -321163 -321169 -321187 -321193 -321199 -321203 -321221 -321227 -321239 -321247 -321289 -321301 -321311 -321313 -321319 -321323 -321329 -321331 -321341 -321359 -321367 -321371 -321383 -321397 -321403 -321413 -321427 -321443 -321449 -321467 -321469 -321509 -321547 -321553 -321569 -321571 -321577 -321593 -321611 -321617 -321619 -321631 -321647 -321661 -321679 -321707 -321709 -321721 -321733 -321743 -321751 -321757 -321779 -321799 -321817 -321821 -321823 -321829 -321833 -321847 -321851 -321889 -321901 -321911 -321947 -321949 -321961 -321983 -321991 -322001 -322009 -322013 -322037 -322039 -322051 -322057 -322067 -322073 -322079 -322093 -322097 -322109 -322111 -322139 -322169 -322171 -322193 -322213 -322229 -322237 -322243 -322247 -322249 -322261 -322271 -322319 -322327 -322339 -322349 -322351 -322397 -322403 -322409 -322417 -322429 -322433 -322459 -322463 -322501 -322513 -322519 -322523 -322537 -322549 -322559 -322571 -322573 -322583 -322589 -322591 -322607 -322613 -322627 -322631 -322633 -322649 -322669 -322709 -322727 -322747 -322757 -322769 -322771 -322781 -322783 -322807 -322849 -322859 -322871 -322877 -322891 -322901 -322919 -322921 -322939 -322951 -322963 -322969 -322997 -322999 -323003 -323009 -323027 -323053 -323077 -323083 -323087 -323093 -323101 -323123 -323131 -323137 -323149 -323201 -323207 -323233 -323243 -323249 -323251 -323273 -323333 -323339 -323341 -323359 -323369 -323371 -323377 -323381 -323383 -323413 -323419 -323441 -323443 -323467 -323471 -323473 -323507 -323509 -323537 -323549 -323567 -323579 -323581 -323591 -323597 -323599 -323623 -323641 -323647 -323651 -323699 -323707 -323711 -323717 -323759 -323767 -323789 -323797 -323801 -323803 -323819 -323837 -323879 -323899 -323903 -323923 -323927 -323933 -323951 -323957 -323987 -324011 -324031 -324053 -324067 -324073 -324089 -324097 -324101 -324113 -324119 -324131 -324143 -324151 -324161 -324179 -324199 -324209 -324211 -324217 -324223 -324239 -324251 -324293 -324299 -324301 -324319 -324329 -324341 -324361 -324391 -324397 -324403 -324419 -324427 -324431 -324437 -324439 -324449 -324451 -324469 -324473 -324491 -324497 -324503 -324517 -324523 -324529 -324557 -324587 -324589 -324593 -324617 -324619 -324637 -324641 -324647 -324661 -324673 -324689 -324697 -324707 -324733 -324743 -324757 -324763 -324773 -324781 -324791 -324799 -324809 -324811 -324839 -324847 -324869 -324871 -324889 -324893 -324901 -324931 -324941 -324949 -324953 -324977 -324979 -324983 -324991 -324997 -325001 -325009 -325019 -325021 -325027 -325043 -325051 -325063 -325079 -325081 -325093 -325133 -325153 -325163 -325181 -325187 -325189 -325201 -325217 -325219 -325229 -325231 -325249 -325271 -325301 -325307 -325309 -325319 -325333 -325343 -325349 -325379 -325411 -325421 -325439 -325447 -325453 -325459 -325463 -325477 -325487 -325513 -325517 -325537 -325541 -325543 -325571 -325597 -325607 -325627 -325631 -325643 -325667 -325673 -325681 -325691 -325693 -325697 -325709 -325723 -325729 -325747 -325751 -325753 -325769 -325777 -325781 -325783 -325807 -325813 -325849 -325861 -325877 -325883 -325889 -325891 -325901 -325921 -325939 -325943 -325951 -325957 -325987 -325993 -325999 -326023 -326057 -326063 -326083 -326087 -326099 -326101 -326113 -326119 -326141 -326143 -326147 -326149 -326153 -326159 -326171 -326189 -326203 -326219 -326251 -326257 -326309 -326323 -326351 -326353 -326369 -326437 -326441 -326449 -326467 -326479 -326497 -326503 -326537 -326539 -326549 -326561 -326563 -326567 -326581 -326593 -326597 -326609 -326611 -326617 -326633 -326657 -326659 -326663 -326681 -326687 -326693 -326701 -326707 -326737 -326741 -326773 -326779 -326831 -326863 -326867 -326869 -326873 -326881 -326903 -326923 -326939 -326941 -326947 -326951 -326983 -326993 -326999 -327001 -327007 -327011 -327017 -327023 -327059 -327071 -327079 -327127 -327133 -327163 -327179 -327193 -327203 -327209 -327211 -327247 -327251 -327263 -327277 -327289 -327307 -327311 -327317 -327319 -327331 -327337 -327343 -327347 -327401 -327407 -327409 -327419 -327421 -327433 -327443 -327463 -327469 -327473 -327479 -327491 -327493 -327499 -327511 -327517 -327529 -327553 -327557 -327559 -327571 -327581 -327583 -327599 -327619 -327629 -327647 -327661 -327667 -327673 -327689 -327707 -327721 -327737 -327739 -327757 -327779 -327797 -327799 -327809 -327823 -327827 -327829 -327839 -327851 -327853 -327869 -327871 -327881 -327889 -327917 -327923 -327941 -327953 -327967 -327979 -327983 -328007 -328037 -328043 -328051 -328061 -328063 -328067 -328093 -328103 -328109 -328121 -328127 -328129 -328171 -328177 -328213 -328243 -328249 -328271 -328277 -328283 -328291 -328303 -328327 -328331 -328333 -328343 -328357 -328373 -328379 -328381 -328397 -328411 -328421 -328429 -328439 -328481 -328511 -328513 -328519 -328543 -328579 -328589 -328591 -328619 -328621 -328633 -328637 -328639 -328651 -328667 -328687 -328709 -328721 -328753 -328777 -328781 -328787 -328789 -328813 -328829 -328837 -328847 -328849 -328883 -328891 -328897 -328901 -328919 -328921 -328931 -328961 -328981 -329009 -329027 -329053 -329059 -329081 -329083 -329089 -329101 -329111 -329123 -329143 -329167 -329177 -329191 -329201 -329207 -329209 -329233 -329243 -329257 -329267 -329269 -329281 -329293 -329297 -329299 -329309 -329317 -329321 -329333 -329347 -329387 -329393 -329401 -329419 -329431 -329471 -329473 -329489 -329503 -329519 -329533 -329551 -329557 -329587 -329591 -329597 -329603 -329617 -329627 -329629 -329639 -329657 -329663 -329671 -329677 -329683 -329687 -329711 -329717 -329723 -329729 -329761 -329773 -329779 -329789 -329801 -329803 -329863 -329867 -329873 -329891 -329899 -329941 -329947 -329951 -329957 -329969 -329977 -329993 -329999 -330017 -330019 -330037 -330041 -330047 -330053 -330061 -330067 -330097 -330103 -330131 -330133 -330139 -330149 -330167 -330199 -330203 -330217 -330227 -330229 -330233 -330241 -330247 -330271 -330287 -330289 -330311 -330313 -330329 -330331 -330347 -330359 -330383 -330389 -330409 -330413 -330427 -330431 -330433 -330439 -330469 -330509 -330557 -330563 -330569 -330587 -330607 -330611 -330623 -330641 -330643 -330653 -330661 -330679 -330683 -330689 -330697 -330703 -330719 -330721 -330731 -330749 -330767 -330787 -330791 -330793 -330821 -330823 -330839 -330853 -330857 -330859 -330877 -330887 -330899 -330907 -330917 -330943 -330983 -330997 -331013 -331027 -331031 -331043 -331063 -331081 -331099 -331127 -331141 -331147 -331153 -331159 -331171 -331183 -331207 -331213 -331217 -331231 -331241 -331249 -331259 -331277 -331283 -331301 -331307 -331319 -331333 -331337 -331339 -331349 -331367 -331369 -331391 -331399 -331423 -331447 -331451 -331489 -331501 -331511 -331519 -331523 -331537 -331543 -331547 -331549 -331553 -331577 -331579 -331589 -331603 -331609 -331613 -331651 -331663 -331691 -331693 -331697 -331711 -331739 -331753 -331769 -331777 -331781 -331801 -331819 -331841 -331843 -331871 -331883 -331889 -331897 -331907 -331909 -331921 -331937 -331943 -331957 -331967 -331973 -331997 -331999 -332009 -332011 -332039 -332053 -332069 -332081 -332099 -332113 -332117 -332147 -332159 -332161 -332179 -332183 -332191 -332201 -332203 -332207 -332219 -332221 -332251 -332263 -332273 -332287 -332303 -332309 -332317 -332393 -332399 -332411 -332417 -332441 -332447 -332461 -332467 -332471 -332473 -332477 -332489 -332509 -332513 -332561 -332567 -332569 -332573 -332611 -332617 -332623 -332641 -332687 -332699 -332711 -332729 -332743 -332749 -332767 -332779 -332791 -332803 -332837 -332851 -332873 -332881 -332887 -332903 -332921 -332933 -332947 -332951 -332987 -332989 -332993 -333019 -333023 -333029 -333031 -333041 -333049 -333071 -333097 -333101 -333103 -333107 -333131 -333139 -333161 -333187 -333197 -333209 -333227 -333233 -333253 -333269 -333271 -333283 -333287 -333299 -333323 -333331 -333337 -333341 -333349 -333367 -333383 -333397 -333419 -333427 -333433 -333439 -333449 -333451 -333457 -333479 -333491 -333493 -333497 -333503 -333517 -333533 -333539 -333563 -333581 -333589 -333623 -333631 -333647 -333667 -333673 -333679 -333691 -333701 -333713 -333719 -333721 -333737 -333757 -333769 -333779 -333787 -333791 -333793 -333803 -333821 -333857 -333871 -333911 -333923 -333929 -333941 -333959 -333973 -333989 -333997 -334021 -334031 -334043 -334049 -334057 -334069 -334093 -334099 -334127 -334133 -334157 -334171 -334177 -334183 -334189 -334199 -334231 -334247 -334261 -334289 -334297 -334319 -334331 -334333 -334349 -334363 -334379 -334387 -334393 -334403 -334421 -334423 -334427 -334429 -334447 -334487 -334493 -334507 -334511 -334513 -334541 -334547 -334549 -334561 -334603 -334619 -334637 -334643 -334651 -334661 -334667 -334681 -334693 -334699 -334717 -334721 -334727 -334751 -334753 -334759 -334771 -334777 -334783 -334787 -334793 -334843 -334861 -334877 -334889 -334891 -334897 -334931 -334963 -334973 -334987 -334991 -334993 -335009 -335021 -335029 -335033 -335047 -335051 -335057 -335077 -335081 -335089 -335107 -335113 -335117 -335123 -335131 -335149 -335161 -335171 -335173 -335207 -335213 -335221 -335249 -335261 -335273 -335281 -335299 -335323 -335341 -335347 -335381 -335383 -335411 -335417 -335429 -335449 -335453 -335459 -335473 -335477 -335507 -335519 -335527 -335539 -335557 -335567 -335579 -335591 -335609 -335633 -335641 -335653 -335663 -335669 -335681 -335689 -335693 -335719 -335729 -335743 -335747 -335771 -335807 -335809 -335813 -335821 -335833 -335843 -335857 -335879 -335893 -335897 -335917 -335941 -335953 -335957 -335999 -336029 -336031 -336041 -336059 -336079 -336101 -336103 -336109 -336113 -336121 -336143 -336151 -336157 -336163 -336181 -336199 -336211 -336221 -336223 -336227 -336239 -336247 -336251 -336253 -336263 -336307 -336317 -336353 -336361 -336373 -336397 -336403 -336419 -336437 -336463 -336491 -336499 -336503 -336521 -336527 -336529 -336533 -336551 -336563 -336571 -336577 -336587 -336593 -336599 -336613 -336631 -336643 -336649 -336653 -336667 -336671 -336683 -336689 -336703 -336727 -336757 -336761 -336767 -336769 -336773 -336793 -336799 -336803 -336823 -336827 -336829 -336857 -336863 -336871 -336887 -336899 -336901 -336911 -336929 -336961 -336977 -336983 -336989 -336997 -337013 -337021 -337031 -337039 -337049 -337069 -337081 -337091 -337097 -337121 -337153 -337189 -337201 -337213 -337217 -337219 -337223 -337261 -337277 -337279 -337283 -337291 -337301 -337313 -337327 -337339 -337343 -337349 -337361 -337367 -337369 -337397 -337411 -337427 -337453 -337457 -337487 -337489 -337511 -337517 -337529 -337537 -337541 -337543 -337583 -337607 -337609 -337627 -337633 -337639 -337651 -337661 -337669 -337681 -337691 -337697 -337721 -337741 -337751 -337759 -337781 -337793 -337817 -337837 -337853 -337859 -337861 -337867 -337871 -337873 -337891 -337901 -337903 -337907 -337919 -337949 -337957 -337969 -337973 -337999 -338017 -338027 -338033 -338119 -338137 -338141 -338153 -338159 -338161 -338167 -338171 -338183 -338197 -338203 -338207 -338213 -338231 -338237 -338251 -338263 -338267 -338269 -338279 -338287 -338293 -338297 -338309 -338321 -338323 -338339 -338341 -338347 -338369 -338383 -338389 -338407 -338411 -338413 -338423 -338431 -338449 -338461 -338473 -338477 -338497 -338531 -338543 -338563 -338567 -338573 -338579 -338581 -338609 -338659 -338669 -338683 -338687 -338707 -338717 -338731 -338747 -338753 -338761 -338773 -338777 -338791 -338803 -338839 -338851 -338857 -338867 -338893 -338909 -338927 -338959 -338993 -338999 -339023 -339049 -339067 -339071 -339091 -339103 -339107 -339121 -339127 -339137 -339139 -339151 -339161 -339173 -339187 -339211 -339223 -339239 -339247 -339257 -339263 -339289 -339307 -339323 -339331 -339341 -339373 -339389 -339413 -339433 -339467 -339491 -339517 -339527 -339539 -339557 -339583 -339589 -339601 -339613 -339617 -339631 -339637 -339649 -339653 -339659 -339671 -339673 -339679 -339707 -339727 -339749 -339751 -339761 -339769 -339799 -339811 -339817 -339821 -339827 -339839 -339841 -339863 -339887 -339907 -339943 -339959 -339991 -340007 -340027 -340031 -340037 -340049 -340057 -340061 -340063 -340073 -340079 -340103 -340111 -340117 -340121 -340127 -340129 -340169 -340183 -340201 -340211 -340237 -340261 -340267 -340283 -340297 -340321 -340337 -340339 -340369 -340381 -340387 -340393 -340397 -340409 -340429 -340447 -340451 -340453 -340477 -340481 -340519 -340541 -340559 -340573 -340577 -340579 -340583 -340591 -340601 -340619 -340633 -340643 -340649 -340657 -340661 -340687 -340693 -340709 -340723 -340757 -340777 -340787 -340789 -340793 -340801 -340811 -340819 -340849 -340859 -340877 -340889 -340897 -340903 -340909 -340913 -340919 -340927 -340931 -340933 -340937 -340939 -340957 -340979 -340999 -341017 -341027 -341041 -341057 -341059 -341063 -341083 -341087 -341123 -341141 -341171 -341179 -341191 -341203 -341219 -341227 -341233 -341269 -341273 -341281 -341287 -341293 -341303 -341311 -341321 -341323 -341333 -341339 -341347 -341357 -341423 -341443 -341447 -341459 -341461 -341477 -341491 -341501 -341507 -341521 -341543 -341557 -341569 -341587 -341597 -341603 -341617 -341623 -341629 -341641 -341647 -341659 -341681 -341687 -341701 -341729 -341743 -341749 -341771 -341773 -341777 -341813 -341821 -341827 -341839 -341851 -341863 -341879 -341911 -341927 -341947 -341951 -341953 -341959 -341963 -341983 -341993 -342037 -342047 -342049 -342059 -342061 -342071 -342073 -342077 -342101 -342107 -342131 -342143 -342179 -342187 -342191 -342197 -342203 -342211 -342233 -342239 -342241 -342257 -342281 -342283 -342299 -342319 -342337 -342341 -342343 -342347 -342359 -342371 -342373 -342379 -342389 -342413 -342421 -342449 -342451 -342467 -342469 -342481 -342497 -342521 -342527 -342547 -342553 -342569 -342593 -342599 -342607 -342647 -342653 -342659 -342673 -342679 -342691 -342697 -342733 -342757 -342761 -342791 -342799 -342803 -342821 -342833 -342841 -342847 -342863 -342869 -342871 -342889 -342899 -342929 -342949 -342971 -342989 -343019 -343037 -343051 -343061 -343073 -343081 -343087 -343127 -343141 -343153 -343163 -343169 -343177 -343193 -343199 -343219 -343237 -343243 -343253 -343261 -343267 -343289 -343303 -343307 -343309 -343313 -343327 -343333 -343337 -343373 -343379 -343381 -343391 -343393 -343411 -343423 -343433 -343481 -343489 -343517 -343529 -343531 -343543 -343547 -343559 -343561 -343579 -343583 -343589 -343591 -343601 -343627 -343631 -343639 -343649 -343661 -343667 -343687 -343709 -343727 -343769 -343771 -343787 -343799 -343801 -343813 -343817 -343823 -343829 -343831 -343891 -343897 -343901 -343913 -343933 -343939 -343943 -343951 -343963 -343997 -344017 -344021 -344039 -344053 -344083 -344111 -344117 -344153 -344161 -344167 -344171 -344173 -344177 -344189 -344207 -344209 -344213 -344221 -344231 -344237 -344243 -344249 -344251 -344257 -344263 -344269 -344273 -344291 -344293 -344321 -344327 -344347 -344353 -344363 -344371 -344417 -344423 -344429 -344453 -344479 -344483 -344497 -344543 -344567 -344587 -344599 -344611 -344621 -344629 -344639 -344653 -344671 -344681 -344683 -344693 -344719 -344749 -344753 -344759 -344791 -344797 -344801 -344807 -344819 -344821 -344843 -344857 -344863 -344873 -344887 -344893 -344909 -344917 -344921 -344941 -344957 -344959 -344963 -344969 -344987 -345001 -345011 -345017 -345019 -345041 -345047 -345067 -345089 -345109 -345133 -345139 -345143 -345181 -345193 -345221 -345227 -345229 -345259 -345263 -345271 -345307 -345311 -345329 -345379 -345413 -345431 -345451 -345461 -345463 -345473 -345479 -345487 -345511 -345517 -345533 -345547 -345551 -345571 -345577 -345581 -345599 -345601 -345607 -345637 -345643 -345647 -345659 -345673 -345679 -345689 -345701 -345707 -345727 -345731 -345733 -345739 -345749 -345757 -345769 -345773 -345791 -345803 -345811 -345817 -345823 -345853 -345869 -345881 -345887 -345889 -345907 -345923 -345937 -345953 -345979 -345997 -346013 -346039 -346043 -346051 -346079 -346091 -346097 -346111 -346117 -346133 -346139 -346141 -346147 -346169 -346187 -346201 -346207 -346217 -346223 -346259 -346261 -346277 -346303 -346309 -346321 -346331 -346337 -346349 -346361 -346369 -346373 -346391 -346393 -346397 -346399 -346417 -346421 -346429 -346433 -346439 -346441 -346447 -346453 -346469 -346501 -346529 -346543 -346547 -346553 -346559 -346561 -346589 -346601 -346607 -346627 -346639 -346649 -346651 -346657 -346667 -346669 -346699 -346711 -346721 -346739 -346751 -346763 -346793 -346831 -346849 -346867 -346873 -346877 -346891 -346903 -346933 -346939 -346943 -346961 -346963 -347003 -347033 -347041 -347051 -347057 -347059 -347063 -347069 -347071 -347099 -347129 -347131 -347141 -347143 -347161 -347167 -347173 -347177 -347183 -347197 -347201 -347209 -347227 -347233 -347239 -347251 -347257 -347287 -347297 -347299 -347317 -347329 -347341 -347359 -347401 -347411 -347437 -347443 -347489 -347509 -347513 -347519 -347533 -347539 -347561 -347563 -347579 -347587 -347591 -347609 -347621 -347629 -347651 -347671 -347707 -347717 -347729 -347731 -347747 -347759 -347771 -347773 -347779 -347801 -347813 -347821 -347849 -347873 -347887 -347891 -347899 -347929 -347933 -347951 -347957 -347959 -347969 -347981 -347983 -347987 -347989 -347993 -348001 -348011 -348017 -348031 -348043 -348053 -348077 -348083 -348097 -348149 -348163 -348181 -348191 -348209 -348217 -348221 -348239 -348241 -348247 -348253 -348259 -348269 -348287 -348307 -348323 -348353 -348367 -348389 -348401 -348407 -348419 -348421 -348431 -348433 -348437 -348443 -348451 -348457 -348461 -348463 -348487 -348527 -348547 -348553 -348559 -348563 -348571 -348583 -348587 -348617 -348629 -348637 -348643 -348661 -348671 -348709 -348731 -348739 -348757 -348763 -348769 -348779 -348811 -348827 -348833 -348839 -348851 -348883 -348889 -348911 -348917 -348919 -348923 -348937 -348949 -348989 -348991 -349007 -349039 -349043 -349051 -349079 -349081 -349093 -349099 -349109 -349121 -349133 -349171 -349177 -349183 -349187 -349199 -349207 -349211 -349241 -349291 -349303 -349313 -349331 -349337 -349343 -349357 -349369 -349373 -349379 -349381 -349387 -349397 -349399 -349403 -349409 -349411 -349423 -349471 -349477 -349483 -349493 -349499 -349507 -349519 -349529 -349553 -349567 -349579 -349589 -349603 -349637 -349663 -349667 -349697 -349709 -349717 -349729 -349753 -349759 -349787 -349793 -349801 -349813 -349819 -349829 -349831 -349837 -349841 -349849 -349871 -349903 -349907 -349913 -349919 -349927 -349931 -349933 -349939 -349949 -349963 -349967 -349981 -350003 -350029 -350033 -350039 -350087 -350089 -350093 -350107 -350111 -350137 -350159 -350179 -350191 -350213 -350219 -350237 -350249 -350257 -350281 -350293 -350347 -350351 -350377 -350381 -350411 -350423 -350429 -350431 -350437 -350443 -350447 -350453 -350459 -350503 -350521 -350549 -350561 -350563 -350587 -350593 -350617 -350621 -350629 -350657 -350663 -350677 -350699 -350711 -350719 -350729 -350731 -350737 -350741 -350747 -350767 -350771 -350783 -350789 -350803 -350809 -350843 -350851 -350869 -350881 -350887 -350891 -350899 -350941 -350947 -350963 -350971 -350981 -350983 -350989 -351011 -351023 -351031 -351037 -351041 -351047 -351053 -351059 -351061 -351077 -351079 -351097 -351121 -351133 -351151 -351157 -351179 -351217 -351223 -351229 -351257 -351259 -351269 -351287 -351289 -351293 -351301 -351311 -351341 -351343 -351347 -351359 -351361 -351383 -351391 -351397 -351401 -351413 -351427 -351437 -351457 -351469 -351479 -351497 -351503 -351517 -351529 -351551 -351563 -351587 -351599 -351643 -351653 -351661 -351667 -351691 -351707 -351727 -351731 -351733 -351749 -351751 -351763 -351773 -351779 -351797 -351803 -351811 -351829 -351847 -351851 -351859 -351863 -351887 -351913 -351919 -351929 -351931 -351959 -351971 -351991 -352007 -352021 -352043 -352049 -352057 -352069 -352073 -352081 -352097 -352109 -352111 -352123 -352133 -352181 -352193 -352201 -352217 -352229 -352237 -352249 -352267 -352271 -352273 -352301 -352309 -352327 -352333 -352349 -352357 -352361 -352367 -352369 -352381 -352399 -352403 -352409 -352411 -352421 -352423 -352441 -352459 -352463 -352481 -352483 -352489 -352493 -352511 -352523 -352543 -352549 -352579 -352589 -352601 -352607 -352619 -352633 -352637 -352661 -352691 -352711 -352739 -352741 -352753 -352757 -352771 -352813 -352817 -352819 -352831 -352837 -352841 -352853 -352867 -352883 -352907 -352909 -352931 -352939 -352949 -352951 -352973 -352991 -353011 -353021 -353047 -353053 -353057 -353069 -353081 -353099 -353117 -353123 -353137 -353147 -353149 -353161 -353173 -353179 -353201 -353203 -353237 -353263 -353293 -353317 -353321 -353329 -353333 -353341 -353359 -353389 -353401 -353411 -353429 -353443 -353453 -353459 -353471 -353473 -353489 -353501 -353527 -353531 -353557 -353567 -353603 -353611 -353621 -353627 -353629 -353641 -353653 -353657 -353677 -353681 -353687 -353699 -353711 -353737 -353747 -353767 -353777 -353783 -353797 -353807 -353813 -353819 -353833 -353867 -353869 -353879 -353891 -353897 -353911 -353917 -353921 -353929 -353939 -353963 -354001 -354007 -354017 -354023 -354031 -354037 -354041 -354043 -354047 -354073 -354091 -354097 -354121 -354139 -354143 -354149 -354163 -354169 -354181 -354209 -354247 -354251 -354253 -354257 -354259 -354271 -354301 -354307 -354313 -354317 -354323 -354329 -354337 -354353 -354371 -354373 -354377 -354383 -354391 -354401 -354421 -354439 -354443 -354451 -354461 -354463 -354469 -354479 -354533 -354539 -354551 -354553 -354581 -354587 -354619 -354643 -354647 -354661 -354667 -354677 -354689 -354701 -354703 -354727 -354737 -354743 -354751 -354763 -354779 -354791 -354799 -354829 -354833 -354839 -354847 -354869 -354877 -354881 -354883 -354911 -354953 -354961 -354971 -354973 -354979 -354983 -354997 -355007 -355009 -355027 -355031 -355037 -355039 -355049 -355057 -355063 -355073 -355087 -355093 -355099 -355109 -355111 -355127 -355139 -355171 -355193 -355211 -355261 -355297 -355307 -355321 -355331 -355339 -355343 -355361 -355363 -355379 -355417 -355427 -355441 -355457 -355463 -355483 -355499 -355501 -355507 -355513 -355517 -355519 -355529 -355541 -355549 -355559 -355571 -355573 -355591 -355609 -355633 -355643 -355651 -355669 -355679 -355697 -355717 -355721 -355723 -355753 -355763 -355777 -355783 -355799 -355811 -355819 -355841 -355847 -355853 -355867 -355891 -355909 -355913 -355933 -355937 -355939 -355951 -355967 -355969 -356023 -356039 -356077 -356093 -356101 -356113 -356123 -356129 -356137 -356141 -356143 -356171 -356173 -356197 -356219 -356243 -356261 -356263 -356287 -356299 -356311 -356327 -356333 -356351 -356387 -356399 -356441 -356443 -356449 -356453 -356467 -356479 -356501 -356509 -356533 -356549 -356561 -356563 -356567 -356579 -356591 -356621 -356647 -356663 -356693 -356701 -356731 -356737 -356749 -356761 -356803 -356819 -356821 -356831 -356869 -356887 -356893 -356927 -356929 -356933 -356947 -356959 -356969 -356977 -356981 -356989 -356999 -357031 -357047 -357073 -357079 -357083 -357103 -357107 -357109 -357131 -357139 -357169 -357179 -357197 -357199 -357211 -357229 -357239 -357241 -357263 -357271 -357281 -357283 -357293 -357319 -357347 -357349 -357353 -357359 -357377 -357389 -357421 -357431 -357437 -357473 -357503 -357509 -357517 -357551 -357559 -357563 -357569 -357571 -357583 -357587 -357593 -357611 -357613 -357619 -357649 -357653 -357659 -357661 -357667 -357671 -357677 -357683 -357689 -357703 -357727 -357733 -357737 -357739 -357767 -357779 -357781 -357787 -357793 -357809 -357817 -357823 -357829 -357839 -357859 -357883 -357913 -357967 -357977 -357983 -357989 -357997 -358031 -358051 -358069 -358073 -358079 -358103 -358109 -358153 -358157 -358159 -358181 -358201 -358213 -358219 -358223 -358229 -358243 -358273 -358277 -358279 -358289 -358291 -358297 -358301 -358313 -358327 -358331 -358349 -358373 -358417 -358427 -358429 -358441 -358447 -358459 -358471 -358483 -358487 -358499 -358531 -358541 -358571 -358573 -358591 -358597 -358601 -358607 -358613 -358637 -358667 -358669 -358681 -358691 -358697 -358703 -358711 -358723 -358727 -358733 -358747 -358753 -358769 -358783 -358793 -358811 -358829 -358847 -358859 -358861 -358867 -358877 -358879 -358901 -358903 -358907 -358909 -358931 -358951 -358973 -358979 -358987 -358993 -358999 -359003 -359017 -359027 -359041 -359063 -359069 -359101 -359111 -359129 -359137 -359143 -359147 -359153 -359167 -359171 -359207 -359209 -359231 -359243 -359263 -359267 -359279 -359291 -359297 -359299 -359311 -359323 -359327 -359353 -359357 -359377 -359389 -359407 -359417 -359419 -359441 -359449 -359477 -359479 -359483 -359501 -359509 -359539 -359549 -359561 -359563 -359581 -359587 -359599 -359621 -359633 -359641 -359657 -359663 -359701 -359713 -359719 -359731 -359747 -359753 -359761 -359767 -359783 -359837 -359851 -359869 -359897 -359911 -359929 -359981 -359987 -360007 -360023 -360037 -360049 -360053 -360071 -360089 -360091 -360163 -360167 -360169 -360181 -360187 -360193 -360197 -360223 -360229 -360233 -360257 -360271 -360277 -360287 -360289 -360293 -360307 -360317 -360323 -360337 -360391 -360407 -360421 -360439 -360457 -360461 -360497 -360509 -360511 -360541 -360551 -360589 -360593 -360611 -360637 -360649 -360653 -360749 -360769 -360779 -360781 -360803 -360817 -360821 -360823 -360827 -360851 -360853 -360863 -360869 -360901 -360907 -360947 -360949 -360953 -360959 -360973 -360977 -360979 -360989 -361001 -361003 -361013 -361033 -361069 -361091 -361093 -361111 -361159 -361183 -361211 -361213 -361217 -361219 -361223 -361237 -361241 -361271 -361279 -361313 -361321 -361327 -361337 -361349 -361351 -361357 -361363 -361373 -361409 -361411 -361421 -361433 -361441 -361447 -361451 -361463 -361469 -361481 -361499 -361507 -361511 -361523 -361531 -361541 -361549 -361561 -361577 -361637 -361643 -361649 -361651 -361663 -361679 -361687 -361723 -361727 -361747 -361763 -361769 -361787 -361789 -361793 -361799 -361807 -361843 -361871 -361873 -361877 -361901 -361903 -361909 -361919 -361927 -361943 -361961 -361967 -361973 -361979 -361993 -362003 -362027 -362051 -362053 -362059 -362069 -362081 -362093 -362099 -362107 -362137 -362143 -362147 -362161 -362177 -362191 -362203 -362213 -362221 -362233 -362237 -362281 -362291 -362293 -362303 -362309 -362333 -362339 -362347 -362353 -362357 -362363 -362371 -362377 -362381 -362393 -362407 -362419 -362429 -362431 -362443 -362449 -362459 -362473 -362521 -362561 -362569 -362581 -362599 -362629 -362633 -362657 -362693 -362707 -362717 -362723 -362741 -362743 -362749 -362753 -362759 -362801 -362851 -362863 -362867 -362897 -362903 -362911 -362927 -362941 -362951 -362953 -362969 -362977 -362983 -362987 -363017 -363019 -363037 -363043 -363047 -363059 -363061 -363067 -363119 -363149 -363151 -363157 -363161 -363173 -363179 -363199 -363211 -363217 -363257 -363269 -363271 -363277 -363313 -363317 -363329 -363343 -363359 -363361 -363367 -363371 -363373 -363379 -363397 -363401 -363403 -363431 -363437 -363439 -363463 -363481 -363491 -363497 -363523 -363529 -363533 -363541 -363551 -363557 -363563 -363569 -363577 -363581 -363589 -363611 -363619 -363659 -363677 -363683 -363691 -363719 -363731 -363751 -363757 -363761 -363767 -363773 -363799 -363809 -363829 -363833 -363841 -363871 -363887 -363889 -363901 -363911 -363917 -363941 -363947 -363949 -363959 -363967 -363977 -363989 -364027 -364031 -364069 -364073 -364079 -364103 -364127 -364129 -364141 -364171 -364183 -364187 -364193 -364213 -364223 -364241 -364267 -364271 -364289 -364291 -364303 -364313 -364321 -364333 -364337 -364349 -364373 -364379 -364393 -364411 -364417 -364423 -364433 -364447 -364451 -364459 -364471 -364499 -364513 -364523 -364537 -364541 -364543 -364571 -364583 -364601 -364607 -364621 -364627 -364643 -364657 -364669 -364687 -364691 -364699 -364717 -364739 -364747 -364751 -364753 -364759 -364801 -364829 -364853 -364873 -364879 -364883 -364891 -364909 -364919 -364921 -364937 -364943 -364961 -364979 -364993 -364997 -365003 -365017 -365021 -365039 -365063 -365069 -365089 -365107 -365119 -365129 -365137 -365147 -365159 -365173 -365179 -365201 -365213 -365231 -365249 -365251 -365257 -365291 -365293 -365297 -365303 -365327 -365333 -365357 -365369 -365377 -365411 -365413 -365419 -365423 -365441 -365461 -365467 -365471 -365473 -365479 -365489 -365507 -365509 -365513 -365527 -365531 -365537 -365557 -365567 -365569 -365587 -365591 -365611 -365627 -365639 -365641 -365669 -365683 -365689 -365699 -365747 -365749 -365759 -365773 -365779 -365791 -365797 -365809 -365837 -365839 -365851 -365903 -365929 -365933 -365941 -365969 -365983 -366001 -366013 -366019 -366029 -366031 -366053 -366077 -366097 -366103 -366127 -366133 -366139 -366161 -366167 -366169 -366173 -366181 -366193 -366199 -366211 -366217 -366221 -366227 -366239 -366259 -366269 -366277 -366287 -366293 -366307 -366313 -366329 -366341 -366343 -366347 -366383 -366397 -366409 -366419 -366433 -366437 -366439 -366461 -366463 -366467 -366479 -366497 -366511 -366517 -366521 -366547 -366593 -366599 -366607 -366631 -366677 -366683 -366697 -366701 -366703 -366713 -366721 -366727 -366733 -366787 -366791 -366811 -366829 -366841 -366851 -366853 -366859 -366869 -366881 -366889 -366901 -366907 -366917 -366923 -366941 -366953 -366967 -366973 -366983 -366997 -367001 -367007 -367019 -367021 -367027 -367033 -367049 -367069 -367097 -367121 -367123 -367127 -367139 -367163 -367181 -367189 -367201 -367207 -367219 -367229 -367231 -367243 -367259 -367261 -367273 -367277 -367307 -367309 -367313 -367321 -367357 -367369 -367391 -367397 -367427 -367453 -367457 -367469 -367501 -367519 -367531 -367541 -367547 -367559 -367561 -367573 -367597 -367603 -367613 -367621 -367637 -367649 -367651 -367663 -367673 -367687 -367699 -367711 -367721 -367733 -367739 -367751 -367771 -367777 -367781 -367789 -367819 -367823 -367831 -367841 -367849 -367853 -367867 -367879 -367883 -367889 -367909 -367949 -367957 -368021 -368029 -368047 -368059 -368077 -368083 -368089 -368099 -368107 -368111 -368117 -368129 -368141 -368149 -368153 -368171 -368189 -368197 -368227 -368231 -368233 -368243 -368273 -368279 -368287 -368293 -368323 -368327 -368359 -368363 -368369 -368399 -368411 -368443 -368447 -368453 -368471 -368491 -368507 -368513 -368521 -368531 -368539 -368551 -368579 -368593 -368597 -368609 -368633 -368647 -368651 -368653 -368689 -368717 -368729 -368737 -368743 -368773 -368783 -368789 -368791 -368801 -368803 -368833 -368857 -368873 -368881 -368899 -368911 -368939 -368947 -368957 -369007 -369013 -369023 -369029 -369067 -369071 -369077 -369079 -369097 -369119 -369133 -369137 -369143 -369169 -369181 -369191 -369197 -369211 -369247 -369253 -369263 -369269 -369283 -369293 -369301 -369319 -369331 -369353 -369361 -369407 -369409 -369419 -369469 -369487 -369491 -369539 -369553 -369557 -369581 -369637 -369647 -369659 -369661 -369673 -369703 -369709 -369731 -369739 -369751 -369791 -369793 -369821 -369827 -369829 -369833 -369841 -369851 -369877 -369893 -369913 -369917 -369947 -369959 -369961 -369979 -369983 -369991 -369997 -370003 -370009 -370021 -370033 -370057 -370061 -370067 -370081 -370091 -370103 -370121 -370133 -370147 -370159 -370169 -370193 -370199 -370207 -370213 -370217 -370241 -370247 -370261 -370373 -370387 -370399 -370411 -370421 -370423 -370427 -370439 -370441 -370451 -370463 -370471 -370477 -370483 -370493 -370511 -370529 -370537 -370547 -370561 -370571 -370597 -370603 -370609 -370613 -370619 -370631 -370661 -370663 -370673 -370679 -370687 -370693 -370723 -370759 -370793 -370801 -370813 -370837 -370871 -370873 -370879 -370883 -370891 -370897 -370919 -370949 -371027 -371029 -371057 -371069 -371071 -371083 -371087 -371099 -371131 -371141 -371143 -371153 -371177 -371179 -371191 -371213 -371227 -371233 -371237 -371249 -371251 -371257 -371281 -371291 -371299 -371303 -371311 -371321 -371333 -371339 -371341 -371353 -371359 -371383 -371387 -371389 -371417 -371447 -371453 -371471 -371479 -371491 -371509 -371513 -371549 -371561 -371573 -371587 -371617 -371627 -371633 -371639 -371663 -371669 -371699 -371719 -371737 -371779 -371797 -371831 -371837 -371843 -371851 -371857 -371869 -371873 -371897 -371927 -371929 -371939 -371941 -371951 -371957 -371971 -371981 -371999 -372013 -372023 -372037 -372049 -372059 -372061 -372067 -372107 -372121 -372131 -372137 -372149 -372167 -372173 -372179 -372223 -372241 -372263 -372269 -372271 -372277 -372289 -372293 -372299 -372311 -372313 -372353 -372367 -372371 -372377 -372397 -372401 -372409 -372413 -372443 -372451 -372461 -372473 -372481 -372497 -372511 -372523 -372539 -372607 -372611 -372613 -372629 -372637 -372653 -372661 -372667 -372677 -372689 -372707 -372709 -372719 -372733 -372739 -372751 -372763 -372769 -372773 -372797 -372803 -372809 -372817 -372829 -372833 -372839 -372847 -372859 -372871 -372877 -372881 -372901 -372917 -372941 -372943 -372971 -372973 -372979 -373003 -373007 -373019 -373049 -373063 -373073 -373091 -373127 -373151 -373157 -373171 -373181 -373183 -373187 -373193 -373199 -373207 -373211 -373213 -373229 -373231 -373273 -373291 -373297 -373301 -373327 -373339 -373343 -373349 -373357 -373361 -373363 -373379 -373393 -373447 -373453 -373459 -373463 -373487 -373489 -373501 -373517 -373553 -373561 -373567 -373613 -373621 -373631 -373649 -373657 -373661 -373669 -373693 -373717 -373721 -373753 -373757 -373777 -373783 -373823 -373837 -373859 -373861 -373903 -373909 -373937 -373943 -373951 -373963 -373969 -373981 -373987 -373999 -374009 -374029 -374039 -374041 -374047 -374063 -374069 -374083 -374089 -374093 -374111 -374117 -374123 -374137 -374149 -374159 -374173 -374177 -374189 -374203 -374219 -374239 -374287 -374291 -374293 -374299 -374317 -374321 -374333 -374347 -374351 -374359 -374389 -374399 -374441 -374443 -374447 -374461 -374483 -374501 -374531 -374537 -374557 -374587 -374603 -374639 -374641 -374653 -374669 -374677 -374681 -374683 -374687 -374701 -374713 -374719 -374729 -374741 -374753 -374761 -374771 -374783 -374789 -374797 -374807 -374819 -374837 -374839 -374849 -374879 -374887 -374893 -374903 -374909 -374929 -374939 -374953 -374977 -374981 -374987 -374989 -374993 -375017 -375019 -375029 -375043 -375049 -375059 -375083 -375091 -375097 -375101 -375103 -375113 -375119 -375121 -375127 -375149 -375157 -375163 -375169 -375203 -375209 -375223 -375227 -375233 -375247 -375251 -375253 -375257 -375259 -375281 -375283 -375311 -375341 -375359 -375367 -375371 -375373 -375391 -375407 -375413 -375443 -375449 -375451 -375457 -375467 -375481 -375509 -375511 -375523 -375527 -375533 -375553 -375559 -375563 -375569 -375593 -375607 -375623 -375631 -375643 -375647 -375667 -375673 -375703 -375707 -375709 -375743 -375757 -375761 -375773 -375779 -375787 -375799 -375833 -375841 -375857 -375899 -375901 -375923 -375931 -375967 -375971 -375979 -375983 -375997 -376001 -376003 -376009 -376021 -376039 -376049 -376063 -376081 -376097 -376099 -376127 -376133 -376147 -376153 -376171 -376183 -376199 -376231 -376237 -376241 -376283 -376291 -376297 -376307 -376351 -376373 -376393 -376399 -376417 -376463 -376469 -376471 -376477 -376483 -376501 -376511 -376529 -376531 -376547 -376573 -376577 -376583 -376589 -376603 -376609 -376627 -376631 -376633 -376639 -376657 -376679 -376687 -376699 -376709 -376721 -376729 -376757 -376759 -376769 -376787 -376793 -376801 -376807 -376811 -376819 -376823 -376837 -376841 -376847 -376853 -376889 -376891 -376897 -376921 -376927 -376931 -376933 -376949 -376963 -376969 -377011 -377021 -377051 -377059 -377071 -377099 -377123 -377129 -377137 -377147 -377171 -377173 -377183 -377197 -377219 -377231 -377257 -377263 -377287 -377291 -377297 -377327 -377329 -377339 -377347 -377353 -377369 -377371 -377387 -377393 -377459 -377471 -377477 -377491 -377513 -377521 -377527 -377537 -377543 -377557 -377561 -377563 -377581 -377593 -377599 -377617 -377623 -377633 -377653 -377681 -377687 -377711 -377717 -377737 -377749 -377761 -377771 -377779 -377789 -377801 -377809 -377827 -377831 -377843 -377851 -377873 -377887 -377911 -377963 -377981 -377999 -378011 -378019 -378023 -378041 -378071 -378083 -378089 -378101 -378127 -378137 -378149 -378151 -378163 -378167 -378179 -378193 -378223 -378229 -378239 -378241 -378253 -378269 -378277 -378283 -378289 -378317 -378353 -378361 -378379 -378401 -378407 -378439 -378449 -378463 -378467 -378493 -378503 -378509 -378523 -378533 -378551 -378559 -378569 -378571 -378583 -378593 -378601 -378619 -378629 -378661 -378667 -378671 -378683 -378691 -378713 -378733 -378739 -378757 -378761 -378779 -378793 -378809 -378817 -378821 -378823 -378869 -378883 -378893 -378901 -378919 -378929 -378941 -378949 -378953 -378967 -378977 -378997 -379007 -379009 -379013 -379033 -379039 -379073 -379081 -379087 -379097 -379103 -379123 -379133 -379147 -379157 -379163 -379177 -379187 -379189 -379199 -379207 -379273 -379277 -379283 -379289 -379307 -379319 -379333 -379343 -379369 -379387 -379391 -379397 -379399 -379417 -379433 -379439 -379441 -379451 -379459 -379499 -379501 -379513 -379531 -379541 -379549 -379571 -379573 -379579 -379597 -379607 -379633 -379649 -379663 -379667 -379679 -379681 -379693 -379699 -379703 -379721 -379723 -379727 -379751 -379777 -379787 -379811 -379817 -379837 -379849 -379853 -379859 -379877 -379889 -379903 -379909 -379913 -379927 -379931 -379963 -379979 -379993 -379997 -379999 -380041 -380047 -380059 -380071 -380117 -380129 -380131 -380141 -380147 -380179 -380189 -380197 -380201 -380203 -380207 -380231 -380251 -380267 -380269 -380287 -380291 -380299 -380309 -380311 -380327 -380329 -380333 -380363 -380377 -380383 -380417 -380423 -380441 -380447 -380453 -380459 -380461 -380483 -380503 -380533 -380557 -380563 -380591 -380621 -380623 -380629 -380641 -380651 -380657 -380707 -380713 -380729 -380753 -380777 -380797 -380803 -380819 -380837 -380839 -380843 -380867 -380869 -380879 -380881 -380909 -380917 -380929 -380951 -380957 -380971 -380977 -380983 -381001 -381011 -381019 -381037 -381047 -381061 -381071 -381077 -381097 -381103 -381167 -381169 -381181 -381209 -381221 -381223 -381233 -381239 -381253 -381287 -381289 -381301 -381319 -381323 -381343 -381347 -381371 -381373 -381377 -381383 -381389 -381401 -381413 -381419 -381439 -381443 -381461 -381467 -381481 -381487 -381509 -381523 -381527 -381529 -381533 -381541 -381559 -381569 -381607 -381629 -381631 -381637 -381659 -381673 -381697 -381707 -381713 -381737 -381739 -381749 -381757 -381761 -381791 -381793 -381817 -381841 -381853 -381859 -381911 -381917 -381937 -381943 -381949 -381977 -381989 -381991 -382001 -382003 -382021 -382037 -382061 -382069 -382073 -382087 -382103 -382117 -382163 -382171 -382189 -382229 -382231 -382241 -382253 -382267 -382271 -382303 -382331 -382351 -382357 -382363 -382373 -382391 -382427 -382429 -382457 -382463 -382493 -382507 -382511 -382519 -382541 -382549 -382553 -382567 -382579 -382583 -382589 -382601 -382621 -382631 -382643 -382649 -382661 -382663 -382693 -382703 -382709 -382727 -382729 -382747 -382751 -382763 -382769 -382777 -382801 -382807 -382813 -382843 -382847 -382861 -382867 -382871 -382873 -382883 -382919 -382933 -382939 -382961 -382979 -382999 -383011 -383023 -383029 -383041 -383051 -383069 -383077 -383081 -383083 -383099 -383101 -383107 -383113 -383143 -383147 -383153 -383171 -383179 -383219 -383221 -383261 -383267 -383281 -383291 -383297 -383303 -383321 -383347 -383371 -383393 -383399 -383417 -383419 -383429 -383459 -383483 -383489 -383519 -383521 -383527 -383533 -383549 -383557 -383573 -383587 -383609 -383611 -383623 -383627 -383633 -383651 -383657 -383659 -383681 -383683 -383693 -383723 -383729 -383753 -383759 -383767 -383777 -383791 -383797 -383807 -383813 -383821 -383833 -383837 -383839 -383869 -383891 -383909 -383917 -383923 -383941 -383951 -383963 -383969 -383983 -383987 -384001 -384017 -384029 -384049 -384061 -384067 -384079 -384089 -384107 -384113 -384133 -384143 -384151 -384157 -384173 -384187 -384193 -384203 -384227 -384247 -384253 -384257 -384259 -384277 -384287 -384289 -384299 -384301 -384317 -384331 -384343 -384359 -384367 -384383 -384403 -384407 -384437 -384469 -384473 -384479 -384481 -384487 -384497 -384509 -384533 -384547 -384577 -384581 -384589 -384599 -384611 -384619 -384623 -384641 -384673 -384691 -384697 -384701 -384719 -384733 -384737 -384751 -384757 -384773 -384779 -384817 -384821 -384827 -384841 -384847 -384851 -384889 -384907 -384913 -384919 -384941 -384961 -384973 -385001 -385013 -385027 -385039 -385057 -385069 -385079 -385081 -385087 -385109 -385127 -385129 -385139 -385141 -385153 -385159 -385171 -385193 -385199 -385223 -385249 -385261 -385267 -385279 -385289 -385291 -385321 -385327 -385331 -385351 -385379 -385391 -385393 -385397 -385403 -385417 -385433 -385471 -385481 -385493 -385501 -385519 -385531 -385537 -385559 -385571 -385573 -385579 -385589 -385591 -385597 -385607 -385621 -385631 -385639 -385657 -385661 -385663 -385709 -385739 -385741 -385771 -385783 -385793 -385811 -385817 -385831 -385837 -385843 -385859 -385877 -385897 -385901 -385907 -385927 -385939 -385943 -385967 -385991 -385997 -386017 -386039 -386041 -386047 -386051 -386083 -386093 -386117 -386119 -386129 -386131 -386143 -386149 -386153 -386159 -386161 -386173 -386219 -386227 -386233 -386237 -386249 -386263 -386279 -386297 -386299 -386303 -386329 -386333 -386339 -386363 -386369 -386371 -386381 -386383 -386401 -386411 -386413 -386429 -386431 -386437 -386471 -386489 -386501 -386521 -386537 -386543 -386549 -386569 -386587 -386609 -386611 -386621 -386629 -386641 -386647 -386651 -386677 -386689 -386693 -386713 -386719 -386723 -386731 -386747 -386777 -386809 -386839 -386851 -386887 -386891 -386921 -386927 -386963 -386977 -386987 -386989 -386993 -387007 -387017 -387031 -387047 -387071 -387077 -387083 -387089 -387109 -387137 -387151 -387161 -387169 -387173 -387187 -387197 -387199 -387203 -387227 -387253 -387263 -387269 -387281 -387307 -387313 -387329 -387341 -387371 -387397 -387403 -387433 -387437 -387449 -387463 -387493 -387503 -387509 -387529 -387551 -387577 -387587 -387613 -387623 -387631 -387641 -387659 -387677 -387679 -387683 -387707 -387721 -387727 -387743 -387749 -387763 -387781 -387791 -387799 -387839 -387853 -387857 -387911 -387913 -387917 -387953 -387967 -387971 -387973 -387977 -388009 -388051 -388057 -388067 -388081 -388099 -388109 -388111 -388117 -388133 -388159 -388163 -388169 -388177 -388181 -388183 -388187 -388211 -388231 -388237 -388253 -388259 -388273 -388277 -388301 -388313 -388319 -388351 -388363 -388369 -388373 -388391 -388403 -388459 -388471 -388477 -388481 -388483 -388489 -388499 -388519 -388529 -388541 -388567 -388573 -388621 -388651 -388657 -388673 -388691 -388693 -388697 -388699 -388711 -388727 -388757 -388777 -388781 -388789 -388793 -388813 -388823 -388837 -388859 -388879 -388891 -388897 -388901 -388903 -388931 -388933 -388937 -388961 -388963 -388991 -389003 -389023 -389027 -389029 -389041 -389047 -389057 -389083 -389089 -389099 -389111 -389117 -389141 -389149 -389161 -389167 -389171 -389173 -389189 -389219 -389227 -389231 -389269 -389273 -389287 -389297 -389299 -389303 -389357 -389369 -389381 -389399 -389401 -389437 -389447 -389461 -389479 -389483 -389507 -389513 -389527 -389531 -389533 -389539 -389561 -389563 -389567 -389569 -389579 -389591 -389621 -389629 -389651 -389659 -389663 -389687 -389699 -389713 -389723 -389743 -389749 -389761 -389773 -389783 -389791 -389797 -389819 -389839 -389849 -389867 -389891 -389897 -389903 -389911 -389923 -389927 -389941 -389947 -389953 -389957 -389971 -389981 -389989 -389999 -390001 -390043 -390067 -390077 -390083 -390097 -390101 -390107 -390109 -390113 -390119 -390151 -390157 -390161 -390191 -390193 -390199 -390209 -390211 -390223 -390263 -390281 -390289 -390307 -390323 -390343 -390347 -390353 -390359 -390367 -390373 -390389 -390391 -390407 -390413 -390419 -390421 -390433 -390437 -390449 -390463 -390479 -390487 -390491 -390493 -390499 -390503 -390527 -390539 -390553 -390581 -390647 -390653 -390671 -390673 -390703 -390707 -390721 -390727 -390737 -390739 -390743 -390751 -390763 -390781 -390791 -390809 -390821 -390829 -390851 -390869 -390877 -390883 -390889 -390893 -390953 -390959 -390961 -390967 -390989 -390991 -391009 -391019 -391021 -391031 -391049 -391057 -391063 -391067 -391073 -391103 -391117 -391133 -391151 -391159 -391163 -391177 -391199 -391217 -391219 -391231 -391247 -391249 -391273 -391283 -391291 -391301 -391331 -391337 -391351 -391367 -391373 -391379 -391387 -391393 -391397 -391399 -391403 -391441 -391451 -391453 -391487 -391519 -391537 -391553 -391579 -391613 -391619 -391627 -391631 -391639 -391661 -391679 -391691 -391693 -391711 -391717 -391733 -391739 -391751 -391753 -391757 -391789 -391801 -391817 -391823 -391847 -391861 -391873 -391879 -391889 -391891 -391903 -391907 -391921 -391939 -391961 -391967 -391987 -391999 -392011 -392033 -392053 -392059 -392069 -392087 -392099 -392101 -392111 -392113 -392131 -392143 -392149 -392153 -392159 -392177 -392201 -392209 -392213 -392221 -392233 -392239 -392251 -392261 -392263 -392267 -392269 -392279 -392281 -392297 -392299 -392321 -392333 -392339 -392347 -392351 -392363 -392383 -392389 -392423 -392437 -392443 -392467 -392473 -392477 -392489 -392503 -392519 -392531 -392543 -392549 -392569 -392593 -392599 -392611 -392629 -392647 -392663 -392669 -392699 -392723 -392737 -392741 -392759 -392761 -392767 -392803 -392807 -392809 -392827 -392831 -392837 -392849 -392851 -392857 -392879 -392893 -392911 -392923 -392927 -392929 -392957 -392963 -392969 -392981 -392983 -393007 -393013 -393017 -393031 -393059 -393073 -393077 -393079 -393083 -393097 -393103 -393109 -393121 -393137 -393143 -393157 -393161 -393181 -393187 -393191 -393203 -393209 -393241 -393247 -393257 -393271 -393287 -393299 -393301 -393311 -393331 -393361 -393373 -393377 -393383 -393401 -393403 -393413 -393451 -393473 -393479 -393487 -393517 -393521 -393539 -393541 -393551 -393557 -393571 -393577 -393581 -393583 -393587 -393593 -393611 -393629 -393637 -393649 -393667 -393671 -393677 -393683 -393697 -393709 -393713 -393721 -393727 -393739 -393749 -393761 -393779 -393797 -393847 -393853 -393857 -393859 -393863 -393871 -393901 -393919 -393929 -393931 -393947 -393961 -393977 -393989 -393997 -394007 -394019 -394039 -394049 -394063 -394073 -394099 -394123 -394129 -394153 -394157 -394169 -394187 -394201 -394211 -394223 -394241 -394249 -394259 -394271 -394291 -394319 -394327 -394357 -394363 -394367 -394369 -394393 -394409 -394411 -394453 -394481 -394489 -394501 -394507 -394523 -394529 -394549 -394571 -394577 -394579 -394601 -394619 -394631 -394633 -394637 -394643 -394673 -394699 -394717 -394721 -394727 -394729 -394733 -394739 -394747 -394759 -394787 -394811 -394813 -394817 -394819 -394829 -394837 -394861 -394879 -394897 -394931 -394943 -394963 -394967 -394969 -394981 -394987 -394993 -395023 -395027 -395039 -395047 -395069 -395089 -395093 -395107 -395111 -395113 -395119 -395137 -395141 -395147 -395159 -395173 -395189 -395191 -395201 -395231 -395243 -395251 -395261 -395273 -395287 -395293 -395303 -395309 -395321 -395323 -395377 -395383 -395407 -395429 -395431 -395443 -395449 -395453 -395459 -395491 -395509 -395513 -395533 -395537 -395543 -395581 -395597 -395611 -395621 -395627 -395657 -395671 -395677 -395687 -395701 -395719 -395737 -395741 -395749 -395767 -395803 -395849 -395851 -395873 -395887 -395891 -395897 -395909 -395921 -395953 -395959 -395971 -396001 -396029 -396031 -396041 -396043 -396061 -396079 -396091 -396103 -396107 -396119 -396157 -396173 -396181 -396197 -396199 -396203 -396217 -396239 -396247 -396259 -396269 -396293 -396299 -396301 -396311 -396323 -396349 -396353 -396373 -396377 -396379 -396413 -396427 -396437 -396443 -396449 -396479 -396509 -396523 -396527 -396533 -396541 -396547 -396563 -396577 -396581 -396601 -396619 -396623 -396629 -396631 -396637 -396647 -396667 -396679 -396703 -396709 -396713 -396719 -396733 -396833 -396871 -396881 -396883 -396887 -396919 -396931 -396937 -396943 -396947 -396953 -396971 -396983 -396997 -397013 -397027 -397037 -397051 -397057 -397063 -397073 -397093 -397099 -397127 -397151 -397153 -397181 -397183 -397211 -397217 -397223 -397237 -397253 -397259 -397283 -397289 -397297 -397301 -397303 -397337 -397351 -397357 -397361 -397373 -397379 -397427 -397429 -397433 -397459 -397469 -397489 -397493 -397517 -397519 -397541 -397543 -397547 -397549 -397567 -397589 -397591 -397597 -397633 -397643 -397673 -397687 -397697 -397721 -397723 -397729 -397751 -397753 -397757 -397759 -397763 -397799 -397807 -397811 -397829 -397849 -397867 -397897 -397907 -397921 -397939 -397951 -397963 -397973 -397981 -398011 -398023 -398029 -398033 -398039 -398053 -398059 -398063 -398077 -398087 -398113 -398117 -398119 -398129 -398143 -398149 -398171 -398207 -398213 -398219 -398227 -398249 -398261 -398267 -398273 -398287 -398303 -398311 -398323 -398339 -398341 -398347 -398353 -398357 -398369 -398393 -398407 -398417 -398423 -398441 -398459 -398467 -398471 -398473 -398477 -398491 -398509 -398539 -398543 -398549 -398557 -398569 -398581 -398591 -398609 -398611 -398621 -398627 -398669 -398681 -398683 -398693 -398711 -398729 -398731 -398759 -398771 -398813 -398819 -398821 -398833 -398857 -398863 -398887 -398903 -398917 -398921 -398933 -398941 -398969 -398977 -398989 -399023 -399031 -399043 -399059 -399067 -399071 -399079 -399097 -399101 -399107 -399131 -399137 -399149 -399151 -399163 -399173 -399181 -399197 -399221 -399227 -399239 -399241 -399263 -399271 -399277 -399281 -399283 -399353 -399379 -399389 -399391 -399401 -399403 -399409 -399433 -399439 -399473 -399481 -399491 -399493 -399499 -399523 -399527 -399541 -399557 -399571 -399577 -399583 -399587 -399601 -399613 -399617 -399643 -399647 -399667 -399677 -399689 -399691 -399719 -399727 -399731 -399739 -399757 -399761 -399769 -399781 -399787 -399793 -399851 -399853 -399871 -399887 -399899 -399911 -399913 -399937 -399941 -399953 -399979 -399983 -399989 -400009 -400031 -400033 -400051 -400067 -400069 -400087 -400093 -400109 -400123 -400151 -400157 -400187 -400199 -400207 -400217 -400237 -400243 -400247 -400249 -400261 -400277 -400291 -400297 -400307 -400313 -400321 -400331 -400339 -400381 -400391 -400409 -400417 -400429 -400441 -400457 -400471 -400481 -400523 -400559 -400579 -400597 -400601 -400607 -400619 -400643 -400651 -400657 -400679 -400681 -400703 -400711 -400721 -400723 -400739 -400753 -400759 -400823 -400837 -400849 -400853 -400859 -400871 -400903 -400927 -400931 -400943 -400949 -400963 -400997 -401017 -401029 -401039 -401053 -401057 -401069 -401077 -401087 -401101 -401113 -401119 -401161 -401173 -401179 -401201 -401209 -401231 -401237 -401243 -401279 -401287 -401309 -401311 -401321 -401329 -401341 -401347 -401371 -401381 -401393 -401407 -401411 -401417 -401473 -401477 -401507 -401519 -401537 -401539 -401551 -401567 -401587 -401593 -401627 -401629 -401651 -401669 -401671 -401689 -401707 -401711 -401743 -401771 -401773 -401809 -401813 -401827 -401839 -401861 -401867 -401887 -401903 -401909 -401917 -401939 -401953 -401957 -401959 -401981 -401987 -401993 -402023 -402029 -402037 -402043 -402049 -402053 -402071 -402089 -402091 -402107 -402131 -402133 -402137 -402139 -402197 -402221 -402223 -402239 -402253 -402263 -402277 -402299 -402307 -402313 -402329 -402331 -402341 -402343 -402359 -402361 -402371 -402379 -402383 -402403 -402419 -402443 -402487 -402503 -402511 -402517 -402527 -402529 -402541 -402551 -402559 -402581 -402583 -402587 -402593 -402601 -402613 -402631 -402691 -402697 -402739 -402751 -402757 -402761 -402763 -402767 -402769 -402797 -402803 -402817 -402823 -402847 -402851 -402859 -402863 -402869 -402881 -402923 -402943 -402947 -402949 -402991 -403001 -403003 -403037 -403043 -403049 -403057 -403061 -403063 -403079 -403097 -403103 -403133 -403141 -403159 -403163 -403181 -403219 -403241 -403243 -403253 -403261 -403267 -403289 -403301 -403309 -403327 -403331 -403339 -403363 -403369 -403387 -403391 -403433 -403439 -403483 -403499 -403511 -403537 -403547 -403549 -403553 -403567 -403577 -403591 -403603 -403607 -403621 -403649 -403661 -403679 -403681 -403687 -403703 -403717 -403721 -403729 -403757 -403783 -403787 -403817 -403829 -403831 -403849 -403861 -403867 -403877 -403889 -403901 -403933 -403951 -403957 -403969 -403979 -403981 -403993 -404009 -404011 -404017 -404021 -404029 -404051 -404081 -404099 -404113 -404119 -404123 -404161 -404167 -404177 -404189 -404191 -404197 -404213 -404221 -404249 -404251 -404267 -404269 -404273 -404291 -404309 -404321 -404323 -404357 -404381 -404387 -404389 -404399 -404419 -404423 -404429 -404431 -404449 -404461 -404483 -404489 -404497 -404507 -404513 -404527 -404531 -404533 -404539 -404557 -404597 -404671 -404693 -404699 -404713 -404773 -404779 -404783 -404819 -404827 -404837 -404843 -404849 -404851 -404941 -404951 -404959 -404969 -404977 -404981 -404983 -405001 -405011 -405029 -405037 -405047 -405049 -405071 -405073 -405089 -405091 -405143 -405157 -405179 -405199 -405211 -405221 -405227 -405239 -405241 -405247 -405253 -405269 -405277 -405287 -405299 -405323 -405341 -405343 -405347 -405373 -405401 -405407 -405413 -405437 -405439 -405473 -405487 -405491 -405497 -405499 -405521 -405527 -405529 -405541 -405553 -405577 -405599 -405607 -405611 -405641 -405659 -405667 -405677 -405679 -405683 -405689 -405701 -405703 -405709 -405719 -405731 -405749 -405763 -405767 -405781 -405799 -405817 -405827 -405829 -405857 -405863 -405869 -405871 -405893 -405901 -405917 -405947 -405949 -405959 -405967 -405989 -405991 -405997 -406013 -406027 -406037 -406067 -406073 -406093 -406117 -406123 -406169 -406171 -406177 -406183 -406207 -406247 -406253 -406267 -406271 -406309 -406313 -406327 -406331 -406339 -406349 -406361 -406381 -406397 -406403 -406423 -406447 -406481 -406499 -406501 -406507 -406513 -406517 -406531 -406547 -406559 -406561 -406573 -406577 -406579 -406583 -406591 -406631 -406633 -406649 -406661 -406673 -406697 -406699 -406717 -406729 -406739 -406789 -406807 -406811 -406817 -406837 -406859 -406873 -406883 -406907 -406951 -406969 -406981 -406993 -407023 -407047 -407059 -407083 -407119 -407137 -407149 -407153 -407177 -407179 -407191 -407203 -407207 -407219 -407221 -407233 -407249 -407257 -407263 -407273 -407287 -407291 -407299 -407311 -407317 -407321 -407347 -407357 -407359 -407369 -407377 -407383 -407401 -407437 -407471 -407483 -407489 -407501 -407503 -407509 -407521 -407527 -407567 -407573 -407579 -407587 -407599 -407621 -407633 -407639 -407651 -407657 -407669 -407699 -407707 -407713 -407717 -407723 -407741 -407747 -407783 -407789 -407791 -407801 -407807 -407821 -407833 -407843 -407857 -407861 -407879 -407893 -407899 -407917 -407923 -407947 -407959 -407969 -407971 -407977 -407993 -408011 -408019 -408041 -408049 -408071 -408077 -408091 -408127 -408131 -408137 -408169 -408173 -408197 -408203 -408209 -408211 -408217 -408223 -408229 -408241 -408251 -408263 -408271 -408283 -408311 -408337 -408341 -408347 -408361 -408379 -408389 -408403 -408413 -408427 -408431 -408433 -408437 -408461 -408469 -408479 -408491 -408497 -408533 -408539 -408553 -408563 -408607 -408623 -408631 -408637 -408643 -408659 -408677 -408689 -408691 -408701 -408703 -408713 -408719 -408743 -408763 -408769 -408773 -408787 -408803 -408809 -408817 -408841 -408857 -408869 -408911 -408913 -408923 -408943 -408953 -408959 -408971 -408979 -408997 -409007 -409021 -409027 -409033 -409043 -409063 -409069 -409081 -409099 -409121 -409153 -409163 -409177 -409187 -409217 -409237 -409259 -409261 -409267 -409271 -409289 -409291 -409327 -409333 -409337 -409349 -409351 -409369 -409379 -409391 -409397 -409429 -409433 -409441 -409463 -409471 -409477 -409483 -409499 -409517 -409523 -409529 -409543 -409573 -409579 -409589 -409597 -409609 -409639 -409657 -409691 -409693 -409709 -409711 -409723 -409729 -409733 -409753 -409769 -409777 -409781 -409813 -409817 -409823 -409831 -409841 -409861 -409867 -409879 -409889 -409891 -409897 -409901 -409909 -409933 -409943 -409951 -409961 -409967 -409987 -409993 -409999 -410009 -410029 -410063 -410087 -410093 -410117 -410119 -410141 -410143 -410149 -410171 -410173 -410203 -410231 -410233 -410239 -410243 -410257 -410279 -410281 -410299 -410317 -410323 -410339 -410341 -410353 -410359 -410383 -410387 -410393 -410401 -410411 -410413 -410453 -410461 -410477 -410489 -410491 -410497 -410507 -410513 -410519 -410551 -410561 -410587 -410617 -410621 -410623 -410629 -410651 -410659 -410671 -410687 -410701 -410717 -410731 -410741 -410747 -410749 -410759 -410783 -410789 -410801 -410807 -410819 -410833 -410857 -410899 -410903 -410929 -410953 -410983 -410999 -411001 -411007 -411011 -411013 -411031 -411041 -411049 -411067 -411071 -411083 -411101 -411113 -411119 -411127 -411143 -411157 -411167 -411193 -411197 -411211 -411233 -411241 -411251 -411253 -411259 -411287 -411311 -411337 -411347 -411361 -411371 -411379 -411409 -411421 -411443 -411449 -411469 -411473 -411479 -411491 -411503 -411527 -411529 -411557 -411563 -411569 -411577 -411583 -411589 -411611 -411613 -411617 -411637 -411641 -411667 -411679 -411683 -411703 -411707 -411709 -411721 -411727 -411737 -411739 -411743 -411751 -411779 -411799 -411809 -411821 -411823 -411833 -411841 -411883 -411919 -411923 -411937 -411941 -411947 -411967 -411991 -412001 -412007 -412019 -412031 -412033 -412037 -412039 -412051 -412067 -412073 -412081 -412099 -412109 -412123 -412127 -412133 -412147 -412157 -412171 -412187 -412189 -412193 -412201 -412211 -412213 -412219 -412249 -412253 -412273 -412277 -412289 -412303 -412333 -412339 -412343 -412387 -412397 -412411 -412457 -412463 -412481 -412487 -412493 -412537 -412561 -412567 -412571 -412589 -412591 -412603 -412609 -412619 -412627 -412637 -412639 -412651 -412663 -412667 -412717 -412739 -412771 -412793 -412807 -412831 -412849 -412859 -412891 -412901 -412903 -412939 -412943 -412949 -412967 -412987 -413009 -413027 -413033 -413053 -413069 -413071 -413081 -413087 -413089 -413093 -413111 -413113 -413129 -413141 -413143 -413159 -413167 -413183 -413197 -413201 -413207 -413233 -413243 -413251 -413263 -413267 -413293 -413299 -413353 -413411 -413417 -413429 -413443 -413461 -413477 -413521 -413527 -413533 -413537 -413551 -413557 -413579 -413587 -413597 -413629 -413653 -413681 -413683 -413689 -413711 -413713 -413719 -413737 -413753 -413759 -413779 -413783 -413807 -413827 -413849 -413863 -413867 -413869 -413879 -413887 -413911 -413923 -413951 -413981 -414013 -414017 -414019 -414031 -414049 -414053 -414061 -414077 -414083 -414097 -414101 -414107 -414109 -414131 -414157 -414179 -414199 -414203 -414209 -414217 -414221 -414241 -414259 -414269 -414277 -414283 -414311 -414313 -414329 -414331 -414347 -414361 -414367 -414383 -414389 -414397 -414413 -414431 -414433 -414451 -414457 -414461 -414467 -414487 -414503 -414521 -414539 -414553 -414559 -414571 -414577 -414607 -414611 -414629 -414641 -414643 -414653 -414677 -414679 -414683 -414691 -414697 -414703 -414707 -414709 -414721 -414731 -414737 -414763 -414767 -414769 -414773 -414779 -414793 -414803 -414809 -414833 -414857 -414871 -414889 -414893 -414899 -414913 -414923 -414929 -414949 -414959 -414971 -414977 -414991 -415013 -415031 -415039 -415061 -415069 -415073 -415087 -415097 -415109 -415111 -415133 -415141 -415147 -415153 -415159 -415171 -415187 -415189 -415201 -415213 -415231 -415253 -415271 -415273 -415319 -415343 -415379 -415381 -415391 -415409 -415427 -415447 -415469 -415477 -415489 -415507 -415517 -415523 -415543 -415553 -415559 -415567 -415577 -415603 -415607 -415609 -415627 -415631 -415643 -415651 -415661 -415669 -415673 -415687 -415691 -415697 -415717 -415721 -415729 -415759 -415783 -415787 -415799 -415801 -415819 -415823 -415861 -415873 -415879 -415901 -415931 -415937 -415949 -415951 -415957 -415963 -415969 -415979 -415993 -415999 -416011 -416023 -416071 -416077 -416089 -416107 -416147 -416149 -416153 -416159 -416167 -416201 -416219 -416239 -416243 -416249 -416257 -416263 -416281 -416291 -416333 -416359 -416387 -416389 -416393 -416399 -416401 -416407 -416413 -416417 -416419 -416441 -416443 -416459 -416473 -416477 -416491 -416497 -416501 -416503 -416513 -416531 -416543 -416573 -416579 -416593 -416621 -416623 -416629 -416659 -416677 -416693 -416719 -416761 -416797 -416821 -416833 -416839 -416849 -416851 -416873 -416881 -416887 -416947 -416957 -416963 -416989 -417007 -417017 -417019 -417023 -417037 -417089 -417097 -417113 -417119 -417127 -417133 -417161 -417169 -417173 -417181 -417187 -417191 -417203 -417217 -417227 -417239 -417251 -417271 -417283 -417293 -417311 -417317 -417331 -417337 -417371 -417377 -417379 -417383 -417419 -417437 -417451 -417457 -417479 -417491 -417493 -417509 -417511 -417523 -417541 -417553 -417559 -417577 -417581 -417583 -417617 -417623 -417631 -417643 -417649 -417671 -417691 -417719 -417721 -417727 -417731 -417733 -417737 -417751 -417763 -417773 -417793 -417811 -417821 -417839 -417863 -417869 -417881 -417883 -417899 -417931 -417941 -417947 -417953 -417959 -417961 -417983 -417997 -418007 -418009 -418027 -418031 -418043 -418051 -418069 -418073 -418079 -418087 -418109 -418129 -418157 -418169 -418177 -418181 -418189 -418199 -418207 -418219 -418259 -418273 -418279 -418289 -418303 -418321 -418331 -418337 -418339 -418343 -418349 -418351 -418357 -418373 -418381 -418391 -418423 -418427 -418447 -418459 -418471 -418493 -418511 -418553 -418559 -418597 -418601 -418603 -418631 -418633 -418637 -418657 -418667 -418699 -418709 -418721 -418739 -418751 -418763 -418771 -418783 -418787 -418793 -418799 -418811 -418813 -418819 -418837 -418843 -418849 -418861 -418867 -418871 -418883 -418889 -418909 -418921 -418927 -418933 -418939 -418961 -418981 -418987 -418993 -418997 -419047 -419051 -419053 -419057 -419059 -419087 -419141 -419147 -419161 -419171 -419183 -419189 -419191 -419201 -419231 -419249 -419261 -419281 -419291 -419297 -419303 -419317 -419329 -419351 -419383 -419401 -419417 -419423 -419429 -419443 -419449 -419459 -419467 -419473 -419477 -419483 -419491 -419513 -419527 -419537 -419557 -419561 -419563 -419567 -419579 -419591 -419597 -419599 -419603 -419609 -419623 -419651 -419687 -419693 -419701 -419711 -419743 -419753 -419777 -419789 -419791 -419801 -419803 -419821 -419827 -419831 -419873 -419893 -419921 -419927 -419929 -419933 -419953 -419959 -419999 -420001 -420029 -420037 -420041 -420047 -420073 -420097 -420103 -420149 -420163 -420191 -420193 -420221 -420241 -420253 -420263 -420269 -420271 -420293 -420307 -420313 -420317 -420319 -420323 -420331 -420341 -420349 -420353 -420361 -420367 -420383 -420397 -420419 -420421 -420439 -420457 -420467 -420479 -420481 -420499 -420503 -420521 -420551 -420557 -420569 -420571 -420593 -420599 -420613 -420671 -420677 -420683 -420691 -420731 -420737 -420743 -420757 -420769 -420779 -420781 -420799 -420803 -420809 -420811 -420851 -420853 -420857 -420859 -420899 -420919 -420929 -420941 -420967 -420977 -420997 -421009 -421019 -421033 -421037 -421049 -421079 -421081 -421093 -421103 -421121 -421123 -421133 -421147 -421159 -421163 -421177 -421181 -421189 -421207 -421241 -421273 -421279 -421303 -421313 -421331 -421339 -421349 -421361 -421381 -421397 -421409 -421417 -421423 -421433 -421453 -421459 -421469 -421471 -421483 -421493 -421501 -421517 -421559 -421607 -421609 -421621 -421633 -421639 -421643 -421657 -421661 -421691 -421697 -421699 -421703 -421709 -421711 -421717 -421727 -421739 -421741 -421783 -421801 -421807 -421831 -421847 -421891 -421907 -421913 -421943 -421973 -421987 -421997 -422029 -422041 -422057 -422063 -422069 -422077 -422083 -422087 -422089 -422099 -422101 -422111 -422113 -422129 -422137 -422141 -422183 -422203 -422209 -422231 -422239 -422243 -422249 -422267 -422287 -422291 -422309 -422311 -422321 -422339 -422353 -422363 -422369 -422377 -422393 -422407 -422431 -422453 -422459 -422479 -422537 -422549 -422551 -422557 -422563 -422567 -422573 -422581 -422621 -422627 -422657 -422689 -422701 -422707 -422711 -422749 -422753 -422759 -422761 -422789 -422797 -422803 -422827 -422857 -422861 -422867 -422869 -422879 -422881 -422893 -422897 -422899 -422911 -422923 -422927 -422969 -422987 -423001 -423013 -423019 -423043 -423053 -423061 -423067 -423083 -423091 -423097 -423103 -423109 -423121 -423127 -423133 -423173 -423179 -423191 -423209 -423221 -423229 -423233 -423251 -423257 -423259 -423277 -423281 -423287 -423289 -423299 -423307 -423323 -423341 -423347 -423389 -423403 -423413 -423427 -423431 -423439 -423457 -423461 -423463 -423469 -423481 -423497 -423503 -423509 -423541 -423547 -423557 -423559 -423581 -423587 -423601 -423617 -423649 -423667 -423697 -423707 -423713 -423727 -423749 -423751 -423763 -423769 -423779 -423781 -423791 -423803 -423823 -423847 -423853 -423859 -423869 -423883 -423887 -423931 -423949 -423961 -423977 -423989 -423991 -424001 -424003 -424007 -424019 -424027 -424037 -424079 -424091 -424093 -424103 -424117 -424121 -424129 -424139 -424147 -424157 -424163 -424169 -424187 -424199 -424223 -424231 -424243 -424247 -424261 -424267 -424271 -424273 -424313 -424331 -424339 -424343 -424351 -424397 -424423 -424429 -424433 -424451 -424471 -424481 -424493 -424519 -424537 -424547 -424549 -424559 -424573 -424577 -424597 -424601 -424639 -424661 -424667 -424679 -424687 -424693 -424709 -424727 -424729 -424757 -424769 -424771 -424777 -424811 -424817 -424819 -424829 -424841 -424843 -424849 -424861 -424867 -424889 -424891 -424903 -424909 -424913 -424939 -424961 -424967 -424997 -425003 -425027 -425039 -425057 -425059 -425071 -425083 -425101 -425107 -425123 -425147 -425149 -425189 -425197 -425207 -425233 -425237 -425251 -425273 -425279 -425281 -425291 -425297 -425309 -425317 -425329 -425333 -425363 -425377 -425387 -425393 -425417 -425419 -425423 -425441 -425443 -425471 -425473 -425489 -425501 -425519 -425521 -425533 -425549 -425563 -425591 -425603 -425609 -425641 -425653 -425681 -425701 -425713 -425779 -425783 -425791 -425801 -425813 -425819 -425837 -425839 -425851 -425857 -425861 -425869 -425879 -425899 -425903 -425911 -425939 -425959 -425977 -425987 -425989 -426007 -426011 -426061 -426073 -426077 -426089 -426091 -426103 -426131 -426161 -426163 -426193 -426197 -426211 -426229 -426233 -426253 -426287 -426301 -426311 -426319 -426331 -426353 -426383 -426389 -426401 -426407 -426421 -426427 -426469 -426487 -426527 -426541 -426551 -426553 -426563 -426583 -426611 -426631 -426637 -426641 -426661 -426691 -426697 -426707 -426709 -426731 -426737 -426739 -426743 -426757 -426761 -426763 -426773 -426779 -426787 -426799 -426841 -426859 -426863 -426871 -426889 -426893 -426913 -426917 -426919 -426931 -426941 -426971 -426973 -426997 -427001 -427013 -427039 -427043 -427067 -427069 -427073 -427079 -427081 -427103 -427117 -427151 -427169 -427181 -427213 -427237 -427241 -427243 -427247 -427249 -427279 -427283 -427307 -427309 -427327 -427333 -427351 -427369 -427379 -427381 -427403 -427417 -427421 -427423 -427429 -427433 -427439 -427447 -427451 -427457 -427477 -427513 -427517 -427523 -427529 -427541 -427579 -427591 -427597 -427619 -427621 -427681 -427711 -427717 -427723 -427727 -427733 -427751 -427781 -427787 -427789 -427813 -427849 -427859 -427877 -427879 -427883 -427913 -427919 -427939 -427949 -427951 -427957 -427967 -427969 -427991 -427993 -427997 -428003 -428023 -428027 -428033 -428039 -428041 -428047 -428083 -428093 -428137 -428143 -428147 -428149 -428161 -428167 -428173 -428177 -428221 -428227 -428231 -428249 -428251 -428273 -428297 -428299 -428303 -428339 -428353 -428369 -428401 -428411 -428429 -428471 -428473 -428489 -428503 -428509 -428531 -428539 -428551 -428557 -428563 -428567 -428569 -428579 -428629 -428633 -428639 -428657 -428663 -428671 -428677 -428683 -428693 -428731 -428741 -428759 -428777 -428797 -428801 -428807 -428809 -428833 -428843 -428851 -428863 -428873 -428899 -428951 -428957 -428977 -429007 -429017 -429043 -429083 -429101 -429109 -429119 -429127 -429137 -429139 -429161 -429181 -429197 -429211 -429217 -429223 -429227 -429241 -429259 -429271 -429277 -429281 -429283 -429329 -429347 -429349 -429361 -429367 -429389 -429397 -429409 -429413 -429427 -429431 -429449 -429463 -429467 -429469 -429487 -429497 -429503 -429509 -429511 -429521 -429529 -429547 -429551 -429563 -429581 -429587 -429589 -429599 -429631 -429643 -429659 -429661 -429673 -429677 -429679 -429683 -429701 -429719 -429727 -429731 -429733 -429773 -429791 -429797 -429817 -429823 -429827 -429851 -429853 -429881 -429887 -429889 -429899 -429901 -429907 -429911 -429917 -429929 -429931 -429937 -429943 -429953 -429971 -429973 -429991 -430007 -430009 -430013 -430019 -430057 -430061 -430081 -430091 -430093 -430121 -430139 -430147 -430193 -430259 -430267 -430277 -430279 -430289 -430303 -430319 -430333 -430343 -430357 -430393 -430411 -430427 -430433 -430453 -430487 -430499 -430511 -430513 -430517 -430543 -430553 -430571 -430579 -430589 -430601 -430603 -430649 -430663 -430691 -430697 -430699 -430709 -430723 -430739 -430741 -430747 -430751 -430753 -430769 -430783 -430789 -430799 -430811 -430819 -430823 -430841 -430847 -430861 -430873 -430879 -430883 -430891 -430897 -430907 -430909 -430921 -430949 -430957 -430979 -430981 -430987 -430999 -431017 -431021 -431029 -431047 -431051 -431063 -431077 -431083 -431099 -431107 -431141 -431147 -431153 -431173 -431191 -431203 -431213 -431219 -431237 -431251 -431257 -431267 -431269 -431287 -431297 -431311 -431329 -431339 -431363 -431369 -431377 -431381 -431399 -431423 -431429 -431441 -431447 -431449 -431479 -431513 -431521 -431533 -431567 -431581 -431597 -431603 -431611 -431617 -431621 -431657 -431659 -431663 -431671 -431693 -431707 -431729 -431731 -431759 -431777 -431797 -431801 -431803 -431807 -431831 -431833 -431857 -431863 -431867 -431869 -431881 -431887 -431891 -431903 -431911 -431929 -431933 -431947 -431983 -431993 -432001 -432007 -432023 -432031 -432037 -432043 -432053 -432059 -432067 -432073 -432097 -432121 -432137 -432139 -432143 -432149 -432161 -432163 -432167 -432199 -432203 -432227 -432241 -432251 -432277 -432281 -432287 -432301 -432317 -432323 -432337 -432343 -432349 -432359 -432373 -432389 -432391 -432401 -432413 -432433 -432437 -432449 -432457 -432479 -432491 -432499 -432503 -432511 -432527 -432539 -432557 -432559 -432569 -432577 -432587 -432589 -432613 -432631 -432637 -432659 -432661 -432713 -432721 -432727 -432737 -432743 -432749 -432781 -432793 -432797 -432799 -432833 -432847 -432857 -432869 -432893 -432907 -432923 -432931 -432959 -432961 -432979 -432983 -432989 -433003 -433033 -433049 -433051 -433061 -433073 -433079 -433087 -433093 -433099 -433117 -433123 -433141 -433151 -433187 -433193 -433201 -433207 -433229 -433241 -433249 -433253 -433259 -433261 -433267 -433271 -433291 -433309 -433319 -433337 -433351 -433357 -433361 -433369 -433373 -433393 -433399 -433421 -433429 -433439 -433453 -433469 -433471 -433501 -433507 -433513 -433549 -433571 -433577 -433607 -433627 -433633 -433639 -433651 -433661 -433663 -433673 -433679 -433681 -433703 -433723 -433729 -433747 -433759 -433777 -433781 -433787 -433813 -433817 -433847 -433859 -433861 -433877 -433883 -433889 -433931 -433943 -433963 -433967 -433981 -434009 -434011 -434029 -434039 -434081 -434087 -434107 -434111 -434113 -434117 -434141 -434167 -434179 -434191 -434201 -434209 -434221 -434237 -434243 -434249 -434261 -434267 -434293 -434297 -434303 -434311 -434323 -434347 -434353 -434363 -434377 -434383 -434387 -434389 -434407 -434411 -434431 -434437 -434459 -434461 -434471 -434479 -434501 -434509 -434521 -434561 -434563 -434573 -434593 -434597 -434611 -434647 -434659 -434683 -434689 -434699 -434717 -434719 -434743 -434761 -434783 -434803 -434807 -434813 -434821 -434827 -434831 -434839 -434849 -434857 -434867 -434873 -434881 -434909 -434921 -434923 -434927 -434933 -434939 -434947 -434957 -434963 -434977 -434981 -434989 -435037 -435041 -435059 -435103 -435107 -435109 -435131 -435139 -435143 -435151 -435161 -435179 -435181 -435187 -435191 -435221 -435223 -435247 -435257 -435263 -435277 -435283 -435287 -435307 -435317 -435343 -435349 -435359 -435371 -435397 -435401 -435403 -435419 -435427 -435437 -435439 -435451 -435481 -435503 -435529 -435541 -435553 -435559 -435563 -435569 -435571 -435577 -435583 -435593 -435619 -435623 -435637 -435641 -435647 -435649 -435653 -435661 -435679 -435709 -435731 -435733 -435739 -435751 -435763 -435769 -435779 -435817 -435839 -435847 -435857 -435859 -435881 -435889 -435893 -435907 -435913 -435923 -435947 -435949 -435973 -435983 -435997 -436003 -436013 -436027 -436061 -436081 -436087 -436091 -436097 -436127 -436147 -436151 -436157 -436171 -436181 -436217 -436231 -436253 -436273 -436279 -436283 -436291 -436307 -436309 -436313 -436343 -436357 -436399 -436417 -436427 -436439 -436459 -436463 -436477 -436481 -436483 -436507 -436523 -436529 -436531 -436547 -436549 -436571 -436591 -436607 -436621 -436627 -436649 -436651 -436673 -436687 -436693 -436717 -436727 -436729 -436739 -436741 -436757 -436801 -436811 -436819 -436831 -436841 -436853 -436871 -436889 -436913 -436957 -436963 -436967 -436973 -436979 -436993 -436999 -437011 -437033 -437071 -437077 -437083 -437093 -437111 -437113 -437137 -437141 -437149 -437153 -437159 -437191 -437201 -437219 -437237 -437243 -437263 -437273 -437279 -437287 -437293 -437321 -437351 -437357 -437363 -437387 -437389 -437401 -437413 -437467 -437471 -437473 -437497 -437501 -437509 -437519 -437527 -437533 -437539 -437543 -437557 -437587 -437629 -437641 -437651 -437653 -437677 -437681 -437687 -437693 -437719 -437729 -437743 -437753 -437771 -437809 -437819 -437837 -437849 -437861 -437867 -437881 -437909 -437923 -437947 -437953 -437959 -437977 -438001 -438017 -438029 -438047 -438049 -438091 -438131 -438133 -438143 -438169 -438203 -438211 -438223 -438233 -438241 -438253 -438259 -438271 -438281 -438287 -438301 -438313 -438329 -438341 -438377 -438391 -438401 -438409 -438419 -438439 -438443 -438467 -438479 -438499 -438517 -438521 -438523 -438527 -438533 -438551 -438569 -438589 -438601 -438611 -438623 -438631 -438637 -438661 -438667 -438671 -438701 -438707 -438721 -438733 -438761 -438769 -438793 -438827 -438829 -438833 -438847 -438853 -438869 -438877 -438887 -438899 -438913 -438937 -438941 -438953 -438961 -438967 -438979 -438983 -438989 -439007 -439009 -439063 -439081 -439123 -439133 -439141 -439157 -439163 -439171 -439183 -439199 -439217 -439253 -439273 -439279 -439289 -439303 -439339 -439349 -439357 -439367 -439381 -439409 -439421 -439427 -439429 -439441 -439459 -439463 -439471 -439493 -439511 -439519 -439541 -439559 -439567 -439573 -439577 -439583 -439601 -439613 -439631 -439639 -439661 -439667 -439687 -439693 -439697 -439709 -439723 -439729 -439753 -439759 -439763 -439771 -439781 -439787 -439799 -439811 -439823 -439849 -439853 -439861 -439867 -439883 -439891 -439903 -439919 -439949 -439961 -439969 -439973 -439981 -439991 -440009 -440023 -440039 -440047 -440087 -440093 -440101 -440131 -440159 -440171 -440177 -440179 -440183 -440203 -440207 -440221 -440227 -440239 -440261 -440269 -440281 -440303 -440311 -440329 -440333 -440339 -440347 -440371 -440383 -440389 -440393 -440399 -440431 -440441 -440443 -440471 -440497 -440501 -440507 -440509 -440527 -440537 -440543 -440549 -440551 -440567 -440569 -440579 -440581 -440641 -440651 -440653 -440669 -440677 -440681 -440683 -440711 -440717 -440723 -440731 -440753 -440761 -440773 -440807 -440809 -440821 -440831 -440849 -440863 -440893 -440903 -440911 -440939 -440941 -440953 -440959 -440983 -440987 -440989 -441011 -441029 -441041 -441043 -441053 -441073 -441079 -441101 -441107 -441109 -441113 -441121 -441127 -441157 -441169 -441179 -441187 -441191 -441193 -441229 -441247 -441251 -441257 -441263 -441281 -441307 -441319 -441349 -441359 -441361 -441403 -441421 -441443 -441449 -441461 -441479 -441499 -441517 -441523 -441527 -441547 -441557 -441563 -441569 -441587 -441607 -441613 -441619 -441631 -441647 -441667 -441697 -441703 -441713 -441737 -441751 -441787 -441797 -441799 -441811 -441827 -441829 -441839 -441841 -441877 -441887 -441907 -441913 -441923 -441937 -441953 -441971 -442003 -442007 -442009 -442019 -442027 -442031 -442033 -442061 -442069 -442097 -442109 -442121 -442139 -442147 -442151 -442157 -442171 -442177 -442181 -442193 -442201 -442207 -442217 -442229 -442237 -442243 -442271 -442283 -442291 -442319 -442327 -442333 -442363 -442367 -442397 -442399 -442439 -442447 -442457 -442469 -442487 -442489 -442499 -442501 -442517 -442531 -442537 -442571 -442573 -442577 -442579 -442601 -442609 -442619 -442633 -442691 -442699 -442703 -442721 -442733 -442747 -442753 -442763 -442769 -442777 -442781 -442789 -442807 -442817 -442823 -442829 -442831 -442837 -442843 -442861 -442879 -442903 -442919 -442961 -442963 -442973 -442979 -442987 -442991 -442997 -443011 -443017 -443039 -443041 -443057 -443059 -443063 -443077 -443089 -443117 -443123 -443129 -443147 -443153 -443159 -443161 -443167 -443171 -443189 -443203 -443221 -443227 -443231 -443237 -443243 -443249 -443263 -443273 -443281 -443291 -443293 -443341 -443347 -443353 -443363 -443369 -443389 -443407 -443413 -443419 -443423 -443431 -443437 -443453 -443467 -443489 -443501 -443533 -443543 -443551 -443561 -443563 -443567 -443587 -443591 -443603 -443609 -443629 -443659 -443687 -443689 -443701 -443711 -443731 -443749 -443753 -443759 -443761 -443771 -443777 -443791 -443837 -443851 -443867 -443869 -443873 -443879 -443881 -443893 -443899 -443909 -443917 -443939 -443941 -443953 -443983 -443987 -443999 -444001 -444007 -444029 -444043 -444047 -444079 -444089 -444109 -444113 -444121 -444127 -444131 -444151 -444167 -444173 -444179 -444181 -444187 -444209 -444253 -444271 -444281 -444287 -444289 -444293 -444307 -444341 -444343 -444347 -444349 -444401 -444403 -444421 -444443 -444449 -444461 -444463 -444469 -444473 -444487 -444517 -444523 -444527 -444529 -444539 -444547 -444553 -444557 -444569 -444589 -444607 -444623 -444637 -444641 -444649 -444671 -444677 -444701 -444713 -444739 -444767 -444791 -444793 -444803 -444811 -444817 -444833 -444841 -444859 -444863 -444869 -444877 -444883 -444887 -444893 -444901 -444929 -444937 -444953 -444967 -444971 -444979 -445001 -445019 -445021 -445031 -445033 -445069 -445087 -445091 -445097 -445103 -445141 -445157 -445169 -445183 -445187 -445199 -445229 -445261 -445271 -445279 -445283 -445297 -445307 -445321 -445339 -445363 -445427 -445433 -445447 -445453 -445463 -445477 -445499 -445507 -445537 -445541 -445567 -445573 -445583 -445589 -445597 -445619 -445631 -445633 -445649 -445657 -445691 -445699 -445703 -445741 -445747 -445769 -445771 -445789 -445799 -445807 -445829 -445847 -445853 -445871 -445877 -445883 -445891 -445931 -445937 -445943 -445967 -445969 -446003 -446009 -446041 -446053 -446081 -446087 -446111 -446123 -446129 -446141 -446179 -446189 -446191 -446197 -446221 -446227 -446231 -446261 -446263 -446273 -446279 -446293 -446309 -446323 -446333 -446353 -446363 -446387 -446389 -446399 -446401 -446417 -446441 -446447 -446461 -446473 -446477 -446503 -446533 -446549 -446561 -446569 -446597 -446603 -446609 -446647 -446657 -446713 -446717 -446731 -446753 -446759 -446767 -446773 -446819 -446827 -446839 -446863 -446881 -446891 -446893 -446909 -446911 -446921 -446933 -446951 -446969 -446983 -447001 -447011 -447019 -447053 -447067 -447079 -447101 -447107 -447119 -447133 -447137 -447173 -447179 -447193 -447197 -447211 -447217 -447221 -447233 -447247 -447257 -447259 -447263 -447311 -447319 -447323 -447331 -447353 -447401 -447409 -447427 -447439 -447443 -447449 -447451 -447463 -447467 -447481 -447509 -447521 -447527 -447541 -447569 -447571 -447611 -447617 -447637 -447641 -447677 -447683 -447701 -447703 -447743 -447749 -447757 -447779 -447791 -447793 -447817 -447823 -447827 -447829 -447841 -447859 -447877 -447883 -447893 -447901 -447907 -447943 -447961 -447983 -447991 -448003 -448013 -448027 -448031 -448057 -448067 -448073 -448093 -448111 -448121 -448139 -448141 -448157 -448159 -448169 -448177 -448187 -448193 -448199 -448207 -448241 -448249 -448303 -448309 -448313 -448321 -448351 -448363 -448367 -448373 -448379 -448387 -448397 -448421 -448451 -448519 -448531 -448561 -448597 -448607 -448627 -448631 -448633 -448667 -448687 -448697 -448703 -448727 -448733 -448741 -448769 -448793 -448801 -448807 -448829 -448843 -448853 -448859 -448867 -448871 -448873 -448879 -448883 -448907 -448927 -448939 -448969 -448993 -448997 -448999 -449003 -449011 -449051 -449077 -449083 -449093 -449107 -449117 -449129 -449131 -449149 -449153 -449161 -449171 -449173 -449201 -449203 -449209 -449227 -449243 -449249 -449261 -449263 -449269 -449287 -449299 -449303 -449311 -449321 -449333 -449347 -449353 -449363 -449381 -449399 -449411 -449417 -449419 -449437 -449441 -449459 -449473 -449543 -449549 -449557 -449563 -449567 -449569 -449591 -449609 -449621 -449629 -449653 -449663 -449671 -449677 -449681 -449689 -449693 -449699 -449741 -449759 -449767 -449773 -449783 -449797 -449807 -449821 -449833 -449851 -449879 -449921 -449929 -449941 -449951 -449959 -449963 -449971 -449987 -449989 -450001 -450011 -450019 -450029 -450067 -450071 -450077 -450083 -450101 -450103 -450113 -450127 -450137 -450161 -450169 -450193 -450199 -450209 -450217 -450223 -450227 -450239 -450257 -450259 -450277 -450287 -450293 -450299 -450301 -450311 -450343 -450349 -450361 -450367 -450377 -450383 -450391 -450403 -450413 -450421 -450431 -450451 -450473 -450479 -450481 -450487 -450493 -450503 -450529 -450533 -450557 -450563 -450581 -450587 -450599 -450601 -450617 -450641 -450643 -450649 -450677 -450691 -450707 -450719 -450727 -450761 -450767 -450787 -450797 -450799 -450803 -450809 -450811 -450817 -450829 -450839 -450841 -450847 -450859 -450881 -450883 -450887 -450893 -450899 -450913 -450917 -450929 -450943 -450949 -450971 -450991 -450997 -451013 -451039 -451051 -451057 -451069 -451093 -451097 -451103 -451109 -451159 -451177 -451181 -451183 -451201 -451207 -451249 -451277 -451279 -451301 -451303 -451309 -451313 -451331 -451337 -451343 -451361 -451387 -451397 -451411 -451439 -451441 -451481 -451499 -451519 -451523 -451541 -451547 -451553 -451579 -451601 -451609 -451621 -451637 -451657 -451663 -451667 -451669 -451679 -451681 -451691 -451699 -451709 -451723 -451747 -451753 -451771 -451783 -451793 -451799 -451823 -451831 -451837 -451859 -451873 -451879 -451897 -451901 -451903 -451909 -451921 -451933 -451937 -451939 -451961 -451967 -451987 -452009 -452017 -452027 -452033 -452041 -452077 -452083 -452087 -452131 -452159 -452161 -452171 -452191 -452201 -452213 -452227 -452233 -452239 -452269 -452279 -452293 -452297 -452329 -452363 -452377 -452393 -452401 -452443 -452453 -452497 -452519 -452521 -452531 -452533 -452537 -452539 -452549 -452579 -452587 -452597 -452611 -452629 -452633 -452671 -452687 -452689 -452701 -452731 -452759 -452773 -452797 -452807 -452813 -452821 -452831 -452857 -452869 -452873 -452923 -452953 -452957 -452983 -452989 -453023 -453029 -453053 -453073 -453107 -453119 -453133 -453137 -453143 -453157 -453161 -453181 -453197 -453199 -453209 -453217 -453227 -453239 -453247 -453269 -453289 -453293 -453301 -453311 -453317 -453329 -453347 -453367 -453371 -453377 -453379 -453421 -453451 -453461 -453527 -453553 -453559 -453569 -453571 -453599 -453601 -453617 -453631 -453637 -453641 -453643 -453659 -453667 -453671 -453683 -453703 -453707 -453709 -453737 -453757 -453797 -453799 -453823 -453833 -453847 -453851 -453877 -453889 -453907 -453913 -453923 -453931 -453949 -453961 -453977 -453983 -453991 -454009 -454021 -454031 -454033 -454039 -454061 -454063 -454079 -454109 -454141 -454151 -454159 -454183 -454199 -454211 -454213 -454219 -454229 -454231 -454247 -454253 -454277 -454297 -454303 -454313 -454331 -454351 -454357 -454361 -454379 -454387 -454409 -454417 -454451 -454453 -454483 -454501 -454507 -454513 -454541 -454543 -454547 -454577 -454579 -454603 -454609 -454627 -454637 -454673 -454679 -454709 -454711 -454721 -454723 -454759 -454763 -454777 -454799 -454823 -454843 -454847 -454849 -454859 -454889 -454891 -454907 -454919 -454921 -454931 -454943 -454967 -454969 -454973 -454991 -455003 -455011 -455033 -455047 -455053 -455093 -455099 -455123 -455149 -455159 -455167 -455171 -455177 -455201 -455219 -455227 -455233 -455237 -455261 -455263 -455269 -455291 -455309 -455317 -455321 -455333 -455339 -455341 -455353 -455381 -455393 -455401 -455407 -455419 -455431 -455437 -455443 -455461 -455471 -455473 -455479 -455489 -455491 -455513 -455527 -455531 -455537 -455557 -455573 -455579 -455597 -455599 -455603 -455627 -455647 -455659 -455681 -455683 -455687 -455701 -455711 -455717 -455737 -455761 -455783 -455789 -455809 -455827 -455831 -455849 -455863 -455881 -455899 -455921 -455933 -455941 -455953 -455969 -455977 -455989 -455993 -455999 -456007 -456013 -456023 -456037 -456047 -456061 -456091 -456107 -456109 -456119 -456149 -456151 -456167 -456193 -456223 -456233 -456241 -456283 -456293 -456329 -456349 -456353 -456367 -456377 -456403 -456409 -456427 -456439 -456451 -456457 -456461 -456499 -456503 -456517 -456523 -456529 -456539 -456553 -456557 -456559 -456571 -456581 -456587 -456607 -456611 -456613 -456623 -456641 -456647 -456649 -456653 -456679 -456683 -456697 -456727 -456737 -456763 -456767 -456769 -456791 -456809 -456811 -456821 -456871 -456877 -456881 -456899 -456901 -456923 -456949 -456959 -456979 -456991 -457001 -457003 -457013 -457021 -457043 -457049 -457057 -457087 -457091 -457097 -457099 -457117 -457139 -457151 -457153 -457183 -457189 -457201 -457213 -457229 -457241 -457253 -457267 -457271 -457277 -457279 -457307 -457319 -457333 -457339 -457363 -457367 -457381 -457393 -457397 -457399 -457403 -457411 -457421 -457433 -457459 -457469 -457507 -457511 -457517 -457547 -457553 -457559 -457571 -457607 -457609 -457621 -457643 -457651 -457661 -457669 -457673 -457679 -457687 -457697 -457711 -457739 -457757 -457789 -457799 -457813 -457817 -457829 -457837 -457871 -457889 -457903 -457913 -457943 -457979 -457981 -457987 -458009 -458027 -458039 -458047 -458053 -458057 -458063 -458069 -458119 -458123 -458173 -458179 -458189 -458191 -458197 -458207 -458219 -458239 -458309 -458317 -458323 -458327 -458333 -458357 -458363 -458377 -458399 -458401 -458407 -458449 -458477 -458483 -458501 -458531 -458533 -458543 -458567 -458569 -458573 -458593 -458599 -458611 -458621 -458629 -458639 -458651 -458663 -458669 -458683 -458701 -458719 -458729 -458747 -458789 -458791 -458797 -458807 -458819 -458849 -458863 -458879 -458891 -458897 -458917 -458921 -458929 -458947 -458957 -458959 -458963 -458971 -458977 -458981 -458987 -458993 -459007 -459013 -459023 -459029 -459031 -459037 -459047 -459089 -459091 -459113 -459127 -459167 -459169 -459181 -459209 -459223 -459229 -459233 -459257 -459271 -459293 -459301 -459313 -459317 -459337 -459341 -459343 -459353 -459373 -459377 -459383 -459397 -459421 -459427 -459443 -459463 -459467 -459469 -459479 -459509 -459521 -459523 -459593 -459607 -459611 -459619 -459623 -459631 -459647 -459649 -459671 -459677 -459691 -459703 -459749 -459763 -459791 -459803 -459817 -459829 -459841 -459847 -459883 -459913 -459923 -459929 -459937 -459961 -460013 -460039 -460051 -460063 -460073 -460079 -460081 -460087 -460091 -460099 -460111 -460127 -460147 -460157 -460171 -460181 -460189 -460211 -460217 -460231 -460247 -460267 -460289 -460297 -460301 -460337 -460349 -460373 -460379 -460387 -460393 -460403 -460409 -460417 -460451 -460463 -460477 -460531 -460543 -460561 -460571 -460589 -460609 -460619 -460627 -460633 -460637 -460643 -460657 -460673 -460697 -460709 -460711 -460721 -460771 -460777 -460787 -460793 -460813 -460829 -460841 -460843 -460871 -460891 -460903 -460907 -460913 -460919 -460937 -460949 -460951 -460969 -460973 -460979 -460981 -460987 -460991 -461009 -461011 -461017 -461051 -461053 -461059 -461093 -461101 -461119 -461143 -461147 -461171 -461183 -461191 -461207 -461233 -461239 -461257 -461269 -461273 -461297 -461299 -461309 -461317 -461323 -461327 -461333 -461359 -461381 -461393 -461407 -461411 -461413 -461437 -461441 -461443 -461467 -461479 -461507 -461521 -461561 -461569 -461581 -461599 -461603 -461609 -461627 -461639 -461653 -461677 -461687 -461689 -461693 -461707 -461717 -461801 -461803 -461819 -461843 -461861 -461887 -461891 -461917 -461921 -461933 -461957 -461971 -461977 -461983 -462013 -462041 -462067 -462073 -462079 -462097 -462103 -462109 -462113 -462131 -462149 -462181 -462191 -462199 -462221 -462239 -462263 -462271 -462307 -462311 -462331 -462337 -462361 -462373 -462377 -462401 -462409 -462419 -462421 -462437 -462443 -462467 -462481 -462491 -462493 -462499 -462529 -462541 -462547 -462557 -462569 -462571 -462577 -462589 -462607 -462629 -462641 -462643 -462653 -462659 -462667 -462673 -462677 -462697 -462713 -462719 -462727 -462733 -462739 -462773 -462827 -462841 -462851 -462863 -462871 -462881 -462887 -462899 -462901 -462911 -462937 -462947 -462953 -462983 -463003 -463031 -463033 -463093 -463103 -463157 -463181 -463189 -463207 -463213 -463219 -463231 -463237 -463247 -463249 -463261 -463283 -463291 -463297 -463303 -463313 -463319 -463321 -463339 -463343 -463363 -463387 -463399 -463433 -463447 -463451 -463453 -463457 -463459 -463483 -463501 -463511 -463513 -463523 -463531 -463537 -463549 -463579 -463613 -463627 -463633 -463643 -463649 -463663 -463679 -463693 -463711 -463717 -463741 -463747 -463753 -463763 -463781 -463787 -463807 -463823 -463829 -463831 -463849 -463861 -463867 -463873 -463889 -463891 -463907 -463919 -463921 -463949 -463963 -463973 -463987 -463993 -464003 -464011 -464021 -464033 -464047 -464069 -464081 -464089 -464119 -464129 -464131 -464137 -464141 -464143 -464171 -464173 -464197 -464201 -464213 -464237 -464251 -464257 -464263 -464279 -464281 -464291 -464309 -464311 -464327 -464351 -464371 -464381 -464383 -464413 -464419 -464437 -464447 -464459 -464467 -464479 -464483 -464521 -464537 -464539 -464549 -464557 -464561 -464587 -464591 -464603 -464617 -464621 -464647 -464663 -464687 -464699 -464741 -464747 -464749 -464753 -464767 -464771 -464773 -464777 -464801 -464803 -464809 -464813 -464819 -464843 -464857 -464879 -464897 -464909 -464917 -464923 -464927 -464939 -464941 -464951 -464953 -464963 -464983 -464993 -464999 -465007 -465011 -465013 -465019 -465041 -465061 -465067 -465071 -465077 -465079 -465089 -465107 -465119 -465133 -465151 -465161 -465163 -465167 -465169 -465173 -465187 -465209 -465211 -465259 -465271 -465277 -465281 -465293 -465299 -465317 -465319 -465331 -465337 -465373 -465379 -465383 -465407 -465419 -465433 -465463 -465469 -465523 -465529 -465541 -465551 -465581 -465587 -465611 -465631 -465643 -465649 -465659 -465679 -465701 -465721 -465739 -465743 -465761 -465781 -465797 -465799 -465809 -465821 -465833 -465841 -465887 -465893 -465901 -465917 -465929 -465931 -465947 -465977 -465989 -466009 -466019 -466027 -466033 -466043 -466061 -466069 -466073 -466079 -466087 -466091 -466121 -466139 -466153 -466171 -466181 -466183 -466201 -466243 -466247 -466261 -466267 -466273 -466283 -466303 -466321 -466331 -466339 -466357 -466369 -466373 -466409 -466423 -466441 -466451 -466483 -466517 -466537 -466547 -466553 -466561 -466567 -466573 -466579 -466603 -466619 -466637 -466649 -466651 -466673 -466717 -466723 -466729 -466733 -466747 -466751 -466777 -466787 -466801 -466819 -466853 -466859 -466897 -466909 -466913 -466919 -466951 -466957 -466997 -467003 -467009 -467017 -467021 -467063 -467081 -467083 -467101 -467119 -467123 -467141 -467147 -467171 -467183 -467197 -467209 -467213 -467237 -467239 -467261 -467293 -467297 -467317 -467329 -467333 -467353 -467371 -467399 -467417 -467431 -467437 -467447 -467471 -467473 -467477 -467479 -467491 -467497 -467503 -467507 -467527 -467531 -467543 -467549 -467557 -467587 -467591 -467611 -467617 -467627 -467629 -467633 -467641 -467651 -467657 -467669 -467671 -467681 -467689 -467699 -467713 -467729 -467737 -467743 -467749 -467773 -467783 -467813 -467827 -467833 -467867 -467869 -467879 -467881 -467893 -467897 -467899 -467903 -467927 -467941 -467953 -467963 -467977 -468001 -468011 -468019 -468029 -468049 -468059 -468067 -468071 -468079 -468107 -468109 -468113 -468121 -468133 -468137 -468151 -468157 -468173 -468187 -468191 -468199 -468239 -468241 -468253 -468271 -468277 -468289 -468319 -468323 -468353 -468359 -468371 -468389 -468421 -468439 -468451 -468463 -468473 -468491 -468493 -468499 -468509 -468527 -468551 -468557 -468577 -468581 -468593 -468599 -468613 -468619 -468623 -468641 -468647 -468653 -468661 -468667 -468683 -468691 -468697 -468703 -468709 -468719 -468737 -468739 -468761 -468773 -468781 -468803 -468817 -468821 -468841 -468851 -468859 -468869 -468883 -468887 -468889 -468893 -468899 -468913 -468953 -468967 -468973 -468983 -469009 -469031 -469037 -469069 -469099 -469121 -469127 -469141 -469153 -469169 -469193 -469207 -469219 -469229 -469237 -469241 -469253 -469267 -469279 -469283 -469303 -469321 -469331 -469351 -469363 -469367 -469369 -469379 -469397 -469411 -469429 -469439 -469457 -469487 -469501 -469529 -469541 -469543 -469561 -469583 -469589 -469613 -469627 -469631 -469649 -469657 -469673 -469687 -469691 -469717 -469723 -469747 -469753 -469757 -469769 -469787 -469793 -469801 -469811 -469823 -469841 -469849 -469877 -469879 -469891 -469907 -469919 -469939 -469957 -469969 -469979 -469993 -470021 -470039 -470059 -470077 -470081 -470083 -470087 -470089 -470131 -470149 -470153 -470161 -470167 -470179 -470201 -470207 -470209 -470213 -470219 -470227 -470243 -470251 -470263 -470279 -470297 -470299 -470303 -470317 -470333 -470347 -470359 -470389 -470399 -470411 -470413 -470417 -470429 -470443 -470447 -470453 -470461 -470471 -470473 -470489 -470501 -470513 -470521 -470531 -470539 -470551 -470579 -470593 -470597 -470599 -470609 -470621 -470627 -470647 -470651 -470653 -470663 -470669 -470689 -470711 -470719 -470731 -470749 -470779 -470783 -470791 -470819 -470831 -470837 -470863 -470867 -470881 -470887 -470891 -470903 -470927 -470933 -470941 -470947 -470957 -470959 -470993 -470999 -471007 -471041 -471061 -471073 -471089 -471091 -471101 -471137 -471139 -471161 -471173 -471179 -471187 -471193 -471209 -471217 -471241 -471253 -471259 -471277 -471281 -471283 -471299 -471301 -471313 -471353 -471389 -471391 -471403 -471407 -471439 -471451 -471467 -471481 -471487 -471503 -471509 -471521 -471533 -471539 -471553 -471571 -471589 -471593 -471607 -471617 -471619 -471641 -471649 -471659 -471671 -471673 -471677 -471683 -471697 -471703 -471719 -471721 -471749 -471769 -471781 -471791 -471803 -471817 -471841 -471847 -471853 -471871 -471893 -471901 -471907 -471923 -471929 -471931 -471943 -471949 -471959 -471997 -472019 -472027 -472051 -472057 -472063 -472067 -472103 -472111 -472123 -472127 -472133 -472139 -472151 -472159 -472163 -472189 -472193 -472247 -472249 -472253 -472261 -472273 -472289 -472301 -472309 -472319 -472331 -472333 -472349 -472369 -472391 -472393 -472399 -472411 -472421 -472457 -472469 -472477 -472523 -472541 -472543 -472559 -472561 -472573 -472597 -472631 -472639 -472643 -472669 -472687 -472691 -472697 -472709 -472711 -472721 -472741 -472751 -472763 -472793 -472799 -472817 -472831 -472837 -472847 -472859 -472883 -472907 -472909 -472921 -472937 -472939 -472963 -472993 -473009 -473021 -473027 -473089 -473101 -473117 -473141 -473147 -473159 -473167 -473173 -473191 -473197 -473201 -473203 -473219 -473227 -473257 -473279 -473287 -473293 -473311 -473321 -473327 -473351 -473353 -473377 -473381 -473383 -473411 -473419 -473441 -473443 -473453 -473471 -473477 -473479 -473497 -473503 -473507 -473513 -473519 -473527 -473531 -473533 -473549 -473579 -473597 -473611 -473617 -473633 -473647 -473659 -473719 -473723 -473729 -473741 -473743 -473761 -473789 -473833 -473839 -473857 -473861 -473867 -473887 -473899 -473911 -473923 -473927 -473929 -473939 -473951 -473953 -473971 -473981 -473987 -473999 -474017 -474029 -474037 -474043 -474049 -474059 -474073 -474077 -474101 -474119 -474127 -474137 -474143 -474151 -474163 -474169 -474197 -474211 -474223 -474241 -474263 -474289 -474307 -474311 -474319 -474337 -474343 -474347 -474359 -474379 -474389 -474391 -474413 -474433 -474437 -474443 -474479 -474491 -474497 -474499 -474503 -474533 -474541 -474547 -474557 -474569 -474571 -474581 -474583 -474619 -474629 -474647 -474659 -474667 -474671 -474707 -474709 -474737 -474751 -474757 -474769 -474779 -474787 -474809 -474811 -474839 -474847 -474857 -474899 -474907 -474911 -474917 -474923 -474931 -474937 -474941 -474949 -474959 -474977 -474983 -475037 -475051 -475073 -475081 -475091 -475093 -475103 -475109 -475141 -475147 -475151 -475159 -475169 -475207 -475219 -475229 -475243 -475271 -475273 -475283 -475289 -475297 -475301 -475327 -475331 -475333 -475351 -475367 -475369 -475379 -475381 -475403 -475417 -475421 -475427 -475429 -475441 -475457 -475469 -475483 -475511 -475523 -475529 -475549 -475583 -475597 -475613 -475619 -475621 -475637 -475639 -475649 -475669 -475679 -475681 -475691 -475693 -475697 -475721 -475729 -475751 -475753 -475759 -475763 -475777 -475789 -475793 -475807 -475823 -475831 -475837 -475841 -475859 -475877 -475879 -475889 -475897 -475903 -475907 -475921 -475927 -475933 -475957 -475973 -475991 -475997 -476009 -476023 -476027 -476029 -476039 -476041 -476059 -476081 -476087 -476089 -476101 -476107 -476111 -476137 -476143 -476167 -476183 -476219 -476233 -476237 -476243 -476249 -476279 -476299 -476317 -476347 -476351 -476363 -476369 -476381 -476401 -476407 -476419 -476423 -476429 -476467 -476477 -476479 -476507 -476513 -476519 -476579 -476587 -476591 -476599 -476603 -476611 -476633 -476639 -476647 -476659 -476681 -476683 -476701 -476713 -476719 -476737 -476743 -476753 -476759 -476783 -476803 -476831 -476849 -476851 -476863 -476869 -476887 -476891 -476911 -476921 -476929 -476977 -476981 -476989 -477011 -477013 -477017 -477019 -477031 -477047 -477073 -477077 -477091 -477131 -477149 -477163 -477209 -477221 -477229 -477259 -477277 -477293 -477313 -477317 -477329 -477341 -477359 -477361 -477383 -477409 -477439 -477461 -477469 -477497 -477511 -477517 -477523 -477539 -477551 -477553 -477557 -477571 -477577 -477593 -477619 -477623 -477637 -477671 -477677 -477721 -477727 -477731 -477739 -477767 -477769 -477791 -477797 -477809 -477811 -477821 -477823 -477839 -477847 -477857 -477863 -477881 -477899 -477913 -477941 -477947 -477973 -477977 -477991 -478001 -478039 -478063 -478067 -478069 -478087 -478099 -478111 -478129 -478139 -478157 -478169 -478171 -478189 -478199 -478207 -478213 -478241 -478243 -478253 -478259 -478271 -478273 -478321 -478339 -478343 -478351 -478391 -478399 -478403 -478411 -478417 -478421 -478427 -478433 -478441 -478451 -478453 -478459 -478481 -478483 -478493 -478523 -478531 -478571 -478573 -478579 -478589 -478603 -478627 -478631 -478637 -478651 -478679 -478697 -478711 -478727 -478729 -478739 -478741 -478747 -478763 -478769 -478787 -478801 -478811 -478813 -478823 -478831 -478843 -478853 -478861 -478871 -478879 -478897 -478901 -478913 -478927 -478931 -478937 -478943 -478963 -478967 -478991 -478999 -479023 -479027 -479029 -479041 -479081 -479131 -479137 -479147 -479153 -479189 -479191 -479201 -479209 -479221 -479231 -479239 -479243 -479263 -479267 -479287 -479299 -479309 -479317 -479327 -479357 -479371 -479377 -479387 -479419 -479429 -479431 -479441 -479461 -479473 -479489 -479497 -479509 -479513 -479533 -479543 -479561 -479569 -479581 -479593 -479599 -479623 -479629 -479639 -479701 -479749 -479753 -479761 -479771 -479777 -479783 -479797 -479813 -479821 -479833 -479839 -479861 -479879 -479881 -479891 -479903 -479909 -479939 -479951 -479953 -479957 -479971 -480013 -480017 -480019 -480023 -480043 -480047 -480049 -480059 -480061 -480071 -480091 -480101 -480107 -480113 -480133 -480143 -480157 -480167 -480169 -480203 -480209 -480287 -480299 -480317 -480329 -480341 -480343 -480349 -480367 -480373 -480379 -480383 -480391 -480409 -480419 -480427 -480449 -480451 -480461 -480463 -480499 -480503 -480509 -480517 -480521 -480527 -480533 -480541 -480553 -480563 -480569 -480583 -480587 -480647 -480661 -480707 -480713 -480731 -480737 -480749 -480761 -480773 -480787 -480803 -480827 -480839 -480853 -480881 -480911 -480919 -480929 -480937 -480941 -480959 -480967 -480979 -480989 -481001 -481003 -481009 -481021 -481043 -481051 -481067 -481073 -481087 -481093 -481097 -481109 -481123 -481133 -481141 -481147 -481153 -481157 -481171 -481177 -481181 -481199 -481207 -481211 -481231 -481249 -481297 -481301 -481303 -481307 -481343 -481363 -481373 -481379 -481387 -481409 -481417 -481433 -481447 -481469 -481489 -481501 -481513 -481531 -481549 -481571 -481577 -481589 -481619 -481633 -481639 -481651 -481667 -481673 -481681 -481693 -481697 -481699 -481721 -481751 -481753 -481769 -481787 -481801 -481807 -481813 -481837 -481843 -481847 -481849 -481861 -481867 -481879 -481883 -481909 -481939 -481963 -481997 -482017 -482021 -482029 -482033 -482039 -482051 -482071 -482093 -482099 -482101 -482117 -482123 -482179 -482189 -482203 -482213 -482227 -482231 -482233 -482243 -482263 -482281 -482309 -482323 -482347 -482351 -482359 -482371 -482387 -482393 -482399 -482401 -482407 -482413 -482423 -482437 -482441 -482483 -482501 -482507 -482509 -482513 -482519 -482527 -482539 -482569 -482593 -482597 -482621 -482627 -482633 -482641 -482659 -482663 -482683 -482687 -482689 -482707 -482711 -482717 -482719 -482731 -482743 -482753 -482759 -482767 -482773 -482789 -482803 -482819 -482827 -482837 -482861 -482863 -482873 -482897 -482899 -482917 -482941 -482947 -482957 -482971 -483017 -483031 -483061 -483071 -483097 -483127 -483139 -483163 -483167 -483179 -483209 -483211 -483221 -483229 -483233 -483239 -483247 -483251 -483281 -483289 -483317 -483323 -483337 -483347 -483367 -483377 -483389 -483397 -483407 -483409 -483433 -483443 -483467 -483481 -483491 -483499 -483503 -483523 -483541 -483551 -483557 -483563 -483577 -483611 -483619 -483629 -483643 -483649 -483671 -483697 -483709 -483719 -483727 -483733 -483751 -483757 -483761 -483767 -483773 -483787 -483809 -483811 -483827 -483829 -483839 -483853 -483863 -483869 -483883 -483907 -483929 -483937 -483953 -483971 -483991 -484019 -484027 -484037 -484061 -484067 -484079 -484091 -484111 -484117 -484123 -484129 -484151 -484153 -484171 -484181 -484193 -484201 -484207 -484229 -484243 -484259 -484283 -484301 -484303 -484327 -484339 -484361 -484369 -484373 -484397 -484411 -484417 -484439 -484447 -484457 -484459 -484487 -484489 -484493 -484531 -484543 -484577 -484597 -484607 -484609 -484613 -484621 -484639 -484643 -484691 -484703 -484727 -484733 -484751 -484763 -484769 -484777 -484787 -484829 -484853 -484867 -484927 -484951 -484987 -484999 -485021 -485029 -485041 -485053 -485059 -485063 -485081 -485101 -485113 -485123 -485131 -485137 -485161 -485167 -485171 -485201 -485207 -485209 -485263 -485311 -485347 -485351 -485363 -485371 -485383 -485389 -485411 -485417 -485423 -485437 -485447 -485479 -485497 -485509 -485519 -485543 -485567 -485587 -485593 -485603 -485609 -485647 -485657 -485671 -485689 -485701 -485717 -485729 -485731 -485753 -485777 -485819 -485827 -485831 -485833 -485893 -485899 -485909 -485923 -485941 -485959 -485977 -485993 -486023 -486037 -486041 -486043 -486053 -486061 -486071 -486091 -486103 -486119 -486133 -486139 -486163 -486179 -486181 -486193 -486203 -486221 -486223 -486247 -486281 -486293 -486307 -486313 -486323 -486329 -486331 -486341 -486349 -486377 -486379 -486389 -486391 -486397 -486407 -486433 -486443 -486449 -486481 -486491 -486503 -486509 -486511 -486527 -486539 -486559 -486569 -486583 -486589 -486601 -486617 -486637 -486641 -486643 -486653 -486667 -486671 -486677 -486679 -486683 -486697 -486713 -486721 -486757 -486767 -486769 -486781 -486797 -486817 -486821 -486833 -486839 -486869 -486907 -486923 -486929 -486943 -486947 -486949 -486971 -486977 -486991 -487007 -487013 -487021 -487049 -487051 -487057 -487073 -487079 -487093 -487099 -487111 -487133 -487177 -487183 -487187 -487211 -487213 -487219 -487247 -487261 -487283 -487303 -487307 -487313 -487349 -487363 -487381 -487387 -487391 -487397 -487423 -487427 -487429 -487447 -487457 -487463 -487469 -487471 -487477 -487481 -487489 -487507 -487561 -487589 -487601 -487603 -487607 -487637 -487649 -487651 -487657 -487681 -487691 -487703 -487709 -487717 -487727 -487733 -487741 -487757 -487769 -487783 -487789 -487793 -487811 -487819 -487829 -487831 -487843 -487873 -487889 -487891 -487897 -487933 -487943 -487973 -487979 -487997 -488003 -488009 -488011 -488021 -488051 -488057 -488069 -488119 -488143 -488149 -488153 -488161 -488171 -488197 -488203 -488207 -488209 -488227 -488231 -488233 -488239 -488249 -488261 -488263 -488287 -488303 -488309 -488311 -488317 -488321 -488329 -488333 -488339 -488347 -488353 -488381 -488399 -488401 -488407 -488417 -488419 -488441 -488459 -488473 -488503 -488513 -488539 -488567 -488573 -488603 -488611 -488617 -488627 -488633 -488639 -488641 -488651 -488687 -488689 -488701 -488711 -488717 -488723 -488729 -488743 -488749 -488759 -488779 -488791 -488797 -488821 -488827 -488833 -488861 -488879 -488893 -488897 -488909 -488921 -488947 -488959 -488981 -488993 -489001 -489011 -489019 -489043 -489053 -489061 -489101 -489109 -489113 -489127 -489133 -489157 -489161 -489179 -489191 -489197 -489217 -489239 -489241 -489257 -489263 -489283 -489299 -489329 -489337 -489343 -489361 -489367 -489389 -489407 -489409 -489427 -489431 -489439 -489449 -489457 -489479 -489487 -489493 -489529 -489539 -489551 -489553 -489557 -489571 -489613 -489631 -489653 -489659 -489673 -489677 -489679 -489689 -489691 -489733 -489743 -489761 -489791 -489793 -489799 -489803 -489817 -489823 -489833 -489847 -489851 -489869 -489871 -489887 -489901 -489911 -489913 -489941 -489943 -489959 -489961 -489977 -489989 -490001 -490003 -490019 -490031 -490033 -490057 -490097 -490103 -490111 -490117 -490121 -490151 -490159 -490169 -490183 -490201 -490207 -490223 -490241 -490247 -490249 -490267 -490271 -490277 -490283 -490309 -490313 -490339 -490367 -490393 -490417 -490421 -490453 -490459 -490463 -490481 -490493 -490499 -490519 -490537 -490541 -490543 -490549 -490559 -490571 -490573 -490577 -490579 -490591 -490619 -490627 -490631 -490643 -490661 -490663 -490697 -490733 -490741 -490769 -490771 -490783 -490829 -490837 -490849 -490859 -490877 -490891 -490913 -490921 -490927 -490937 -490949 -490951 -490957 -490967 -490969 -490991 -490993 -491003 -491039 -491041 -491059 -491081 -491083 -491129 -491137 -491149 -491159 -491167 -491171 -491201 -491213 -491219 -491251 -491261 -491273 -491279 -491297 -491299 -491327 -491329 -491333 -491339 -491341 -491353 -491357 -491371 -491377 -491417 -491423 -491429 -491461 -491483 -491489 -491497 -491501 -491503 -491527 -491531 -491537 -491539 -491581 -491591 -491593 -491611 -491627 -491633 -491639 -491651 -491653 -491669 -491677 -491707 -491719 -491731 -491737 -491747 -491773 -491783 -491789 -491797 -491819 -491833 -491837 -491851 -491857 -491867 -491873 -491899 -491923 -491951 -491969 -491977 -491983 -492007 -492013 -492017 -492029 -492047 -492053 -492059 -492061 -492067 -492077 -492083 -492103 -492113 -492227 -492251 -492253 -492257 -492281 -492293 -492299 -492319 -492377 -492389 -492397 -492403 -492409 -492413 -492421 -492431 -492463 -492467 -492487 -492491 -492511 -492523 -492551 -492563 -492587 -492601 -492617 -492619 -492629 -492631 -492641 -492647 -492659 -492671 -492673 -492707 -492719 -492721 -492731 -492757 -492761 -492763 -492769 -492781 -492799 -492839 -492853 -492871 -492883 -492893 -492901 -492911 -492967 -492979 -493001 -493013 -493021 -493027 -493043 -493049 -493067 -493093 -493109 -493111 -493121 -493123 -493127 -493133 -493139 -493147 -493159 -493169 -493177 -493193 -493201 -493211 -493217 -493219 -493231 -493243 -493249 -493277 -493279 -493291 -493301 -493313 -493333 -493351 -493369 -493393 -493397 -493399 -493403 -493433 -493447 -493457 -493463 -493481 -493523 -493531 -493541 -493567 -493573 -493579 -493583 -493607 -493621 -493627 -493643 -493657 -493693 -493709 -493711 -493721 -493729 -493733 -493747 -493777 -493793 -493807 -493811 -493813 -493817 -493853 -493859 -493873 -493877 -493897 -493919 -493931 -493937 -493939 -493967 -493973 -493979 -493993 -494023 -494029 -494041 -494051 -494069 -494077 -494083 -494093 -494101 -494107 -494129 -494141 -494147 -494167 -494191 -494213 -494237 -494251 -494257 -494267 -494269 -494281 -494287 -494317 -494327 -494341 -494353 -494359 -494369 -494381 -494383 -494387 -494407 -494413 -494441 -494443 -494471 -494497 -494519 -494521 -494539 -494561 -494563 -494567 -494587 -494591 -494609 -494617 -494621 -494639 -494647 -494651 -494671 -494677 -494687 -494693 -494699 -494713 -494719 -494723 -494731 -494737 -494743 -494749 -494759 -494761 -494783 -494789 -494803 -494843 -494849 -494873 -494899 -494903 -494917 -494927 -494933 -494939 -494959 -494987 -495017 -495037 -495041 -495043 -495067 -495071 -495109 -495113 -495119 -495133 -495139 -495149 -495151 -495161 -495181 -495199 -495211 -495221 -495241 -495269 -495277 -495289 -495301 -495307 -495323 -495337 -495343 -495347 -495359 -495361 -495371 -495377 -495389 -495401 -495413 -495421 -495433 -495437 -495449 -495457 -495461 -495491 -495511 -495527 -495557 -495559 -495563 -495569 -495571 -495587 -495589 -495611 -495613 -495617 -495619 -495629 -495637 -495647 -495667 -495679 -495701 -495707 -495713 -495749 -495751 -495757 -495769 -495773 -495787 -495791 -495797 -495799 -495821 -495827 -495829 -495851 -495877 -495893 -495899 -495923 -495931 -495947 -495953 -495959 -495967 -495973 -495983 -496007 -496019 -496039 -496051 -496063 -496073 -496079 -496123 -496127 -496163 -496187 -496193 -496211 -496229 -496231 -496259 -496283 -496289 -496291 -496297 -496303 -496313 -496333 -496339 -496343 -496381 -496399 -496427 -496439 -496453 -496459 -496471 -496477 -496481 -496487 -496493 -496499 -496511 -496549 -496579 -496583 -496609 -496631 -496669 -496681 -496687 -496703 -496711 -496733 -496747 -496763 -496789 -496813 -496817 -496841 -496849 -496871 -496877 -496889 -496891 -496897 -496901 -496913 -496919 -496949 -496963 -496997 -496999 -497011 -497017 -497041 -497047 -497051 -497069 -497093 -497111 -497113 -497117 -497137 -497141 -497153 -497171 -497177 -497197 -497239 -497257 -497261 -497269 -497279 -497281 -497291 -497297 -497303 -497309 -497323 -497339 -497351 -497389 -497411 -497417 -497423 -497449 -497461 -497473 -497479 -497491 -497501 -497507 -497509 -497521 -497537 -497551 -497557 -497561 -497579 -497587 -497597 -497603 -497633 -497659 -497663 -497671 -497677 -497689 -497701 -497711 -497719 -497729 -497737 -497741 -497771 -497773 -497801 -497813 -497831 -497839 -497851 -497867 -497869 -497873 -497899 -497929 -497957 -497963 -497969 -497977 -497989 -497993 -497999 -498013 -498053 -498061 -498073 -498089 -498101 -498103 -498119 -498143 -498163 -498167 -498181 -498209 -498227 -498257 -498259 -498271 -498301 -498331 -498343 -498361 -498367 -498391 -498397 -498401 -498403 -498409 -498439 -498461 -498467 -498469 -498493 -498497 -498521 -498523 -498527 -498551 -498557 -498577 -498583 -498599 -498611 -498613 -498643 -498647 -498653 -498679 -498689 -498691 -498733 -498739 -498749 -498761 -498767 -498779 -498781 -498787 -498791 -498803 -498833 -498857 -498859 -498881 -498907 -498923 -498931 -498937 -498947 -498961 -498973 -498977 -498989 -499021 -499027 -499033 -499039 -499063 -499067 -499099 -499117 -499127 -499129 -499133 -499139 -499141 -499151 -499157 -499159 -499181 -499183 -499189 -499211 -499229 -499253 -499267 -499277 -499283 -499309 -499321 -499327 -499349 -499361 -499363 -499391 -499397 -499403 -499423 -499439 -499459 -499481 -499483 -499493 -499507 -499519 -499523 -499549 -499559 -499571 -499591 -499601 -499607 -499621 -499633 -499637 -499649 -499661 -499663 -499669 -499673 -499679 -499687 -499691 -499693 -499711 -499717 -499729 -499739 -499747 -499781 -499787 -499801 -499819 -499853 -499879 -499883 -499897 -499903 -499927 -499943 -499957 -499969 -499973 -499979 -500009 -500029 -500041 -500057 -500069 -500083 -500107 -500111 -500113 -500119 -500153 -500167 -500173 -500177 -500179 -500197 -500209 -500231 -500233 -500237 -500239 -500249 -500257 -500287 -500299 -500317 -500321 -500333 -500341 -500363 -500369 -500389 -500393 -500413 -500417 -500431 -500443 -500459 -500471 -500473 -500483 -500501 -500509 -500519 -500527 -500567 -500579 -500587 -500603 -500629 -500671 -500677 -500693 -500699 -500713 -500719 -500723 -500729 -500741 -500777 -500791 -500807 -500809 -500831 -500839 -500861 -500873 -500881 -500887 -500891 -500909 -500911 -500921 -500923 -500933 -500947 -500953 -500957 -500977 -501001 -501013 -501019 -501029 -501031 -501037 -501043 -501077 -501089 -501103 -501121 -501131 -501133 -501139 -501157 -501173 -501187 -501191 -501197 -501203 -501209 -501217 -501223 -501229 -501233 -501257 -501271 -501287 -501299 -501317 -501341 -501343 -501367 -501383 -501401 -501409 -501419 -501427 -501451 -501463 -501493 -501503 -501511 -501563 -501577 -501593 -501601 -501617 -501623 -501637 -501659 -501691 -501701 -501703 -501707 -501719 -501731 -501769 -501779 -501803 -501817 -501821 -501827 -501829 -501841 -501863 -501889 -501911 -501931 -501947 -501953 -501967 -501971 -501997 -502001 -502013 -502039 -502043 -502057 -502063 -502079 -502081 -502087 -502093 -502121 -502133 -502141 -502171 -502181 -502217 -502237 -502247 -502259 -502261 -502277 -502301 -502321 -502339 -502393 -502409 -502421 -502429 -502441 -502451 -502487 -502499 -502501 -502507 -502517 -502543 -502549 -502553 -502591 -502597 -502613 -502631 -502633 -502643 -502651 -502669 -502687 -502699 -502703 -502717 -502729 -502769 -502771 -502781 -502787 -502807 -502819 -502829 -502841 -502847 -502861 -502883 -502919 -502921 -502937 -502961 -502973 -503003 -503017 -503039 -503053 -503077 -503123 -503131 -503137 -503147 -503159 -503197 -503207 -503213 -503227 -503231 -503233 -503249 -503267 -503287 -503297 -503303 -503317 -503339 -503351 -503359 -503369 -503381 -503383 -503389 -503407 -503413 -503423 -503431 -503441 -503453 -503483 -503501 -503543 -503549 -503551 -503563 -503593 -503599 -503609 -503611 -503621 -503623 -503647 -503653 -503663 -503707 -503717 -503743 -503753 -503771 -503777 -503779 -503791 -503803 -503819 -503821 -503827 -503851 -503857 -503869 -503879 -503911 -503927 -503929 -503939 -503947 -503959 -503963 -503969 -503983 -503989 -504001 -504011 -504017 -504047 -504061 -504073 -504103 -504121 -504139 -504143 -504149 -504151 -504157 -504181 -504187 -504197 -504209 -504221 -504247 -504269 -504289 -504299 -504307 -504311 -504323 -504337 -504349 -504353 -504359 -504377 -504379 -504389 -504403 -504457 -504461 -504473 -504479 -504521 -504523 -504527 -504547 -504563 -504593 -504599 -504607 -504617 -504619 -504631 -504661 -504667 -504671 -504677 -504683 -504727 -504767 -504787 -504797 -504799 -504817 -504821 -504851 -504853 -504857 -504871 -504877 -504893 -504901 -504929 -504937 -504943 -504947 -504953 -504967 -504983 -504989 -504991 -505027 -505031 -505033 -505049 -505051 -505061 -505067 -505073 -505091 -505097 -505111 -505117 -505123 -505129 -505139 -505157 -505159 -505181 -505187 -505201 -505213 -505231 -505237 -505277 -505279 -505283 -505301 -505313 -505319 -505321 -505327 -505339 -505357 -505367 -505369 -505399 -505409 -505411 -505429 -505447 -505459 -505469 -505481 -505493 -505501 -505511 -505513 -505523 -505537 -505559 -505573 -505601 -505607 -505613 -505619 -505633 -505639 -505643 -505657 -505663 -505669 -505691 -505693 -505709 -505711 -505727 -505759 -505763 -505777 -505781 -505811 -505819 -505823 -505867 -505871 -505877 -505907 -505919 -505927 -505949 -505961 -505969 -505979 -506047 -506071 -506083 -506101 -506113 -506119 -506131 -506147 -506171 -506173 -506183 -506201 -506213 -506251 -506263 -506269 -506281 -506291 -506327 -506329 -506333 -506339 -506347 -506351 -506357 -506381 -506393 -506417 -506423 -506449 -506459 -506461 -506479 -506491 -506501 -506507 -506531 -506533 -506537 -506551 -506563 -506573 -506591 -506593 -506599 -506609 -506629 -506647 -506663 -506683 -506687 -506689 -506699 -506729 -506731 -506743 -506773 -506783 -506791 -506797 -506809 -506837 -506843 -506861 -506873 -506887 -506893 -506899 -506903 -506911 -506929 -506941 -506963 -506983 -506993 -506999 -507029 -507049 -507071 -507077 -507079 -507103 -507109 -507113 -507119 -507137 -507139 -507149 -507151 -507163 -507193 -507197 -507217 -507289 -507301 -507313 -507317 -507329 -507347 -507349 -507359 -507361 -507371 -507383 -507401 -507421 -507431 -507461 -507491 -507497 -507499 -507503 -507523 -507557 -507571 -507589 -507593 -507599 -507607 -507631 -507641 -507667 -507673 -507691 -507697 -507713 -507719 -507743 -507757 -507779 -507781 -507797 -507803 -507809 -507821 -507827 -507839 -507883 -507901 -507907 -507917 -507919 -507937 -507953 -507961 -507971 -507979 -508009 -508019 -508021 -508033 -508037 -508073 -508087 -508091 -508097 -508103 -508129 -508159 -508171 -508187 -508213 -508223 -508229 -508237 -508243 -508259 -508271 -508273 -508297 -508301 -508327 -508331 -508349 -508363 -508367 -508373 -508393 -508433 -508439 -508451 -508471 -508477 -508489 -508499 -508513 -508517 -508531 -508549 -508559 -508567 -508577 -508579 -508583 -508619 -508621 -508637 -508643 -508661 -508693 -508709 -508727 -508771 -508789 -508799 -508811 -508817 -508841 -508847 -508867 -508901 -508903 -508909 -508913 -508919 -508931 -508943 -508951 -508957 -508961 -508969 -508973 -508987 -509023 -509027 -509053 -509063 -509071 -509087 -509101 -509123 -509137 -509147 -509149 -509203 -509221 -509227 -509239 -509263 -509281 -509287 -509293 -509297 -509317 -509329 -509359 -509363 -509389 -509393 -509413 -509417 -509429 -509441 -509449 -509477 -509513 -509521 -509543 -509549 -509557 -509563 -509569 -509573 -509581 -509591 -509603 -509623 -509633 -509647 -509653 -509659 -509681 -509687 -509689 -509693 -509699 -509723 -509731 -509737 -509741 -509767 -509783 -509797 -509801 -509833 -509837 -509843 -509863 -509867 -509879 -509909 -509911 -509921 -509939 -509947 -509959 -509963 -509989 -510007 -510031 -510047 -510049 -510061 -510067 -510073 -510077 -510079 -510089 -510101 -510121 -510127 -510137 -510157 -510179 -510199 -510203 -510217 -510227 -510233 -510241 -510247 -510253 -510271 -510287 -510299 -510311 -510319 -510331 -510361 -510379 -510383 -510401 -510403 -510449 -510451 -510457 -510463 -510481 -510529 -510551 -510553 -510569 -510581 -510583 -510589 -510611 -510613 -510617 -510619 -510677 -510683 -510691 -510707 -510709 -510751 -510767 -510773 -510793 -510803 -510817 -510823 -510827 -510847 -510889 -510907 -510919 -510931 -510941 -510943 -510989 -511001 -511013 -511019 -511033 -511039 -511057 -511061 -511087 -511109 -511111 -511123 -511151 -511153 -511163 -511169 -511171 -511177 -511193 -511201 -511211 -511213 -511223 -511237 -511243 -511261 -511279 -511289 -511297 -511327 -511333 -511337 -511351 -511361 -511387 -511391 -511409 -511417 -511439 -511447 -511453 -511457 -511463 -511477 -511487 -511507 -511519 -511523 -511541 -511549 -511559 -511573 -511579 -511583 -511591 -511603 -511627 -511631 -511633 -511669 -511691 -511703 -511711 -511723 -511757 -511787 -511793 -511801 -511811 -511831 -511843 -511859 -511867 -511873 -511891 -511897 -511909 -511933 -511939 -511961 -511963 -511991 -511997 -512009 -512011 -512021 -512047 -512059 -512093 -512101 -512137 -512147 -512167 -512207 -512249 -512251 -512269 -512287 -512311 -512321 -512333 -512353 -512389 -512419 -512429 -512443 -512467 -512497 -512503 -512507 -512521 -512531 -512537 -512543 -512569 -512573 -512579 -512581 -512591 -512593 -512597 -512609 -512621 -512641 -512657 -512663 -512671 -512683 -512711 -512713 -512717 -512741 -512747 -512761 -512767 -512779 -512797 -512803 -512819 -512821 -512843 -512849 -512891 -512899 -512903 -512917 -512921 -512927 -512929 -512959 -512977 -512989 -512999 -513001 -513013 -513017 -513031 -513041 -513047 -513053 -513059 -513067 -513083 -513101 -513103 -513109 -513131 -513137 -513157 -513167 -513169 -513173 -513203 -513239 -513257 -513269 -513277 -513283 -513307 -513311 -513313 -513319 -513341 -513347 -513353 -513367 -513371 -513397 -513407 -513419 -513427 -513431 -513439 -513473 -513479 -513481 -513509 -513511 -513529 -513533 -513593 -513631 -513641 -513649 -513673 -513679 -513683 -513691 -513697 -513719 -513727 -513731 -513739 -513749 -513761 -513767 -513769 -513781 -513829 -513839 -513841 -513871 -513881 -513899 -513917 -513923 -513937 -513943 -513977 -513991 -514001 -514009 -514013 -514021 -514049 -514051 -514057 -514061 -514079 -514081 -514093 -514103 -514117 -514123 -514127 -514147 -514177 -514187 -514201 -514219 -514229 -514243 -514247 -514249 -514271 -514277 -514289 -514309 -514313 -514333 -514343 -514357 -514361 -514379 -514399 -514417 -514429 -514433 -514453 -514499 -514513 -514519 -514523 -514529 -514531 -514543 -514561 -514571 -514621 -514637 -514639 -514643 -514649 -514651 -514669 -514681 -514711 -514733 -514739 -514741 -514747 -514751 -514757 -514769 -514783 -514793 -514819 -514823 -514831 -514841 -514847 -514853 -514859 -514867 -514873 -514889 -514903 -514933 -514939 -514949 -514967 -515041 -515087 -515089 -515111 -515143 -515149 -515153 -515173 -515191 -515227 -515231 -515233 -515237 -515279 -515293 -515311 -515323 -515351 -515357 -515369 -515371 -515377 -515381 -515401 -515429 -515477 -515507 -515519 -515539 -515563 -515579 -515587 -515597 -515611 -515621 -515639 -515651 -515653 -515663 -515677 -515681 -515687 -515693 -515701 -515737 -515741 -515761 -515771 -515773 -515777 -515783 -515803 -515813 -515839 -515843 -515857 -515861 -515873 -515887 -515917 -515923 -515929 -515941 -515951 -515969 -515993 -516017 -516023 -516049 -516053 -516077 -516091 -516127 -516151 -516157 -516161 -516163 -516169 -516179 -516193 -516199 -516209 -516223 -516227 -516233 -516247 -516251 -516253 -516277 -516283 -516293 -516319 -516323 -516349 -516359 -516361 -516371 -516377 -516391 -516407 -516421 -516431 -516433 -516437 -516449 -516457 -516469 -516493 -516499 -516517 -516521 -516539 -516541 -516563 -516587 -516589 -516599 -516611 -516617 -516619 -516623 -516643 -516653 -516673 -516679 -516689 -516701 -516709 -516713 -516721 -516727 -516757 -516793 -516811 -516821 -516829 -516839 -516847 -516871 -516877 -516883 -516907 -516911 -516931 -516947 -516949 -516959 -516973 -516977 -516979 -516991 -517003 -517043 -517061 -517067 -517073 -517079 -517081 -517087 -517091 -517129 -517151 -517169 -517177 -517183 -517189 -517207 -517211 -517217 -517229 -517241 -517243 -517249 -517261 -517267 -517277 -517289 -517303 -517337 -517343 -517367 -517373 -517381 -517393 -517399 -517403 -517411 -517417 -517457 -517459 -517469 -517471 -517481 -517487 -517499 -517501 -517507 -517511 -517513 -517547 -517549 -517553 -517571 -517577 -517589 -517597 -517603 -517609 -517613 -517619 -517637 -517639 -517711 -517717 -517721 -517729 -517733 -517739 -517747 -517817 -517823 -517831 -517861 -517873 -517877 -517901 -517919 -517927 -517931 -517949 -517967 -517981 -517991 -517999 -518017 -518047 -518057 -518059 -518083 -518099 -518101 -518113 -518123 -518129 -518131 -518137 -518153 -518159 -518171 -518179 -518191 -518207 -518209 -518233 -518237 -518239 -518249 -518261 -518291 -518299 -518311 -518327 -518341 -518387 -518389 -518411 -518417 -518429 -518431 -518447 -518467 -518471 -518473 -518509 -518521 -518533 -518543 -518579 -518587 -518597 -518611 -518621 -518657 -518689 -518699 -518717 -518729 -518737 -518741 -518743 -518747 -518759 -518761 -518767 -518779 -518801 -518803 -518807 -518809 -518813 -518831 -518863 -518867 -518893 -518911 -518933 -518953 -518981 -518983 -518989 -519011 -519031 -519037 -519067 -519083 -519089 -519091 -519097 -519107 -519119 -519121 -519131 -519151 -519161 -519193 -519217 -519227 -519229 -519247 -519257 -519269 -519283 -519287 -519301 -519307 -519349 -519353 -519359 -519371 -519373 -519383 -519391 -519413 -519427 -519433 -519457 -519487 -519499 -519509 -519521 -519523 -519527 -519539 -519551 -519553 -519577 -519581 -519587 -519611 -519619 -519643 -519647 -519667 -519683 -519691 -519703 -519713 -519733 -519737 -519769 -519787 -519793 -519797 -519803 -519817 -519863 -519881 -519889 -519907 -519917 -519919 -519923 -519931 -519943 -519947 -519971 -519989 -519997 -520019 -520021 -520031 -520043 -520063 -520067 -520073 -520103 -520111 -520123 -520129 -520151 -520193 -520213 -520241 -520279 -520291 -520297 -520307 -520309 -520313 -520339 -520349 -520357 -520361 -520363 -520369 -520379 -520381 -520393 -520409 -520411 -520423 -520427 -520433 -520447 -520451 -520529 -520547 -520549 -520567 -520571 -520589 -520607 -520609 -520621 -520631 -520633 -520649 -520679 -520691 -520699 -520703 -520717 -520721 -520747 -520759 -520763 -520787 -520813 -520837 -520841 -520853 -520867 -520889 -520913 -520921 -520943 -520957 -520963 -520967 -520969 -520981 -521009 -521021 -521023 -521039 -521041 -521047 -521051 -521063 -521107 -521119 -521137 -521153 -521161 -521167 -521173 -521177 -521179 -521201 -521231 -521243 -521251 -521267 -521281 -521299 -521309 -521317 -521329 -521357 -521359 -521363 -521369 -521377 -521393 -521399 -521401 -521429 -521447 -521471 -521483 -521491 -521497 -521503 -521519 -521527 -521533 -521537 -521539 -521551 -521557 -521567 -521581 -521603 -521641 -521657 -521659 -521669 -521671 -521693 -521707 -521723 -521743 -521749 -521753 -521767 -521777 -521789 -521791 -521809 -521813 -521819 -521831 -521861 -521869 -521879 -521881 -521887 -521897 -521903 -521923 -521929 -521981 -521993 -521999 -522017 -522037 -522047 -522059 -522061 -522073 -522079 -522083 -522113 -522127 -522157 -522161 -522167 -522191 -522199 -522211 -522227 -522229 -522233 -522239 -522251 -522259 -522281 -522283 -522289 -522317 -522323 -522337 -522371 -522373 -522383 -522391 -522409 -522413 -522439 -522449 -522469 -522479 -522497 -522517 -522521 -522523 -522541 -522553 -522569 -522601 -522623 -522637 -522659 -522661 -522673 -522677 -522679 -522689 -522703 -522707 -522719 -522737 -522749 -522757 -522761 -522763 -522787 -522811 -522827 -522829 -522839 -522853 -522857 -522871 -522881 -522883 -522887 -522919 -522943 -522947 -522959 -522961 -522989 -523007 -523021 -523031 -523049 -523093 -523097 -523109 -523129 -523169 -523177 -523207 -523213 -523219 -523261 -523297 -523307 -523333 -523349 -523351 -523357 -523387 -523403 -523417 -523427 -523433 -523459 -523463 -523487 -523489 -523493 -523511 -523519 -523541 -523543 -523553 -523571 -523573 -523577 -523597 -523603 -523631 -523637 -523639 -523657 -523667 -523669 -523673 -523681 -523717 -523729 -523741 -523759 -523763 -523771 -523777 -523793 -523801 -523829 -523847 -523867 -523877 -523903 -523907 -523927 -523937 -523949 -523969 -523987 -523997 -524047 -524053 -524057 -524063 -524071 -524081 -524087 -524099 -524113 -524119 -524123 -524149 -524171 -524189 -524197 -524201 -524203 -524219 -524221 -524231 -524243 -524257 -524261 -524269 -524287 -524309 -524341 -524347 -524351 -524353 -524369 -524387 -524389 -524411 -524413 -524429 -524453 -524497 -524507 -524509 -524519 -524521 -524591 -524593 -524599 -524633 -524669 -524681 -524683 -524701 -524707 -524731 -524743 -524789 -524801 -524803 -524827 -524831 -524857 -524863 -524869 -524873 -524893 -524899 -524921 -524933 -524939 -524941 -524947 -524957 -524959 -524963 -524969 -524971 -524981 -524983 -524999 -525001 -525013 -525017 -525029 -525043 -525101 -525127 -525137 -525143 -525157 -525163 -525167 -525191 -525193 -525199 -525209 -525221 -525241 -525247 -525253 -525257 -525299 -525313 -525353 -525359 -525361 -525373 -525377 -525379 -525391 -525397 -525409 -525431 -525433 -525439 -525457 -525461 -525467 -525491 -525493 -525517 -525529 -525533 -525541 -525571 -525583 -525593 -525599 -525607 -525641 -525649 -525671 -525677 -525697 -525709 -525713 -525719 -525727 -525731 -525739 -525769 -525773 -525781 -525809 -525817 -525839 -525869 -525871 -525887 -525893 -525913 -525923 -525937 -525947 -525949 -525953 -525961 -525979 -525983 -526027 -526037 -526049 -526051 -526063 -526067 -526069 -526073 -526087 -526117 -526121 -526139 -526157 -526159 -526189 -526193 -526199 -526213 -526223 -526231 -526249 -526271 -526283 -526289 -526291 -526297 -526307 -526367 -526373 -526381 -526387 -526391 -526397 -526423 -526429 -526441 -526453 -526459 -526483 -526499 -526501 -526511 -526531 -526543 -526571 -526573 -526583 -526601 -526619 -526627 -526633 -526637 -526649 -526651 -526657 -526667 -526679 -526681 -526703 -526709 -526717 -526733 -526739 -526741 -526759 -526763 -526777 -526781 -526829 -526831 -526837 -526853 -526859 -526871 -526909 -526913 -526931 -526937 -526943 -526951 -526957 -526963 -526993 -526997 -527053 -527057 -527063 -527069 -527071 -527081 -527099 -527123 -527129 -527143 -527159 -527161 -527173 -527179 -527203 -527207 -527209 -527237 -527251 -527273 -527281 -527291 -527327 -527333 -527347 -527353 -527377 -527381 -527393 -527399 -527407 -527411 -527419 -527441 -527447 -527453 -527489 -527507 -527533 -527557 -527563 -527581 -527591 -527599 -527603 -527623 -527627 -527633 -527671 -527699 -527701 -527729 -527741 -527749 -527753 -527789 -527803 -527809 -527819 -527843 -527851 -527869 -527881 -527897 -527909 -527921 -527929 -527941 -527981 -527983 -527987 -527993 -528001 -528013 -528041 -528043 -528053 -528091 -528097 -528107 -528127 -528131 -528137 -528163 -528167 -528191 -528197 -528217 -528223 -528247 -528263 -528289 -528299 -528313 -528317 -528329 -528373 -528383 -528391 -528401 -528403 -528413 -528419 -528433 -528469 -528487 -528491 -528509 -528511 -528527 -528559 -528611 -528623 -528629 -528631 -528659 -528667 -528673 -528679 -528691 -528707 -528709 -528719 -528763 -528779 -528791 -528799 -528811 -528821 -528823 -528833 -528863 -528877 -528881 -528883 -528911 -528929 -528947 -528967 -528971 -528973 -528991 -529003 -529007 -529027 -529033 -529037 -529043 -529049 -529051 -529097 -529103 -529117 -529121 -529127 -529129 -529153 -529157 -529181 -529183 -529213 -529229 -529237 -529241 -529259 -529271 -529273 -529301 -529307 -529313 -529327 -529343 -529349 -529357 -529381 -529393 -529411 -529421 -529423 -529471 -529489 -529513 -529517 -529519 -529531 -529547 -529577 -529579 -529603 -529619 -529637 -529649 -529657 -529673 -529681 -529687 -529691 -529693 -529709 -529723 -529741 -529747 -529751 -529807 -529811 -529813 -529819 -529829 -529847 -529871 -529927 -529933 -529939 -529957 -529961 -529973 -529979 -529981 -529987 -529999 -530017 -530021 -530027 -530041 -530051 -530063 -530087 -530093 -530129 -530137 -530143 -530177 -530183 -530197 -530203 -530209 -530227 -530237 -530249 -530251 -530261 -530267 -530279 -530293 -530297 -530303 -530329 -530333 -530339 -530353 -530359 -530389 -530393 -530401 -530429 -530443 -530447 -530501 -530507 -530513 -530527 -530531 -530533 -530539 -530549 -530567 -530597 -530599 -530603 -530609 -530641 -530653 -530659 -530669 -530693 -530701 -530711 -530713 -530731 -530741 -530743 -530753 -530767 -530773 -530797 -530807 -530833 -530837 -530843 -530851 -530857 -530861 -530869 -530897 -530911 -530947 -530969 -530977 -530983 -530989 -531017 -531023 -531043 -531071 -531079 -531101 -531103 -531121 -531133 -531143 -531163 -531169 -531173 -531197 -531203 -531229 -531239 -531253 -531263 -531281 -531287 -531299 -531331 -531337 -531343 -531347 -531353 -531359 -531383 -531457 -531481 -531497 -531521 -531547 -531551 -531569 -531571 -531581 -531589 -531611 -531613 -531623 -531631 -531637 -531667 -531673 -531689 -531701 -531731 -531793 -531799 -531821 -531823 -531827 -531833 -531841 -531847 -531857 -531863 -531871 -531877 -531901 -531911 -531919 -531977 -531983 -531989 -531997 -532001 -532009 -532027 -532033 -532061 -532069 -532093 -532099 -532141 -532153 -532159 -532163 -532183 -532187 -532193 -532199 -532241 -532249 -532261 -532267 -532277 -532283 -532307 -532313 -532327 -532331 -532333 -532349 -532373 -532379 -532391 -532403 -532417 -532421 -532439 -532447 -532451 -532453 -532489 -532501 -532523 -532529 -532531 -532537 -532547 -532561 -532601 -532603 -532607 -532619 -532621 -532633 -532639 -532663 -532669 -532687 -532691 -532709 -532733 -532739 -532751 -532757 -532771 -532781 -532783 -532789 -532801 -532811 -532823 -532849 -532853 -532867 -532907 -532919 -532949 -532951 -532981 -532993 -532999 -533003 -533009 -533011 -533033 -533051 -533053 -533063 -533077 -533089 -533111 -533129 -533149 -533167 -533177 -533189 -533191 -533213 -533219 -533227 -533237 -533249 -533257 -533261 -533263 -533297 -533303 -533317 -533321 -533327 -533353 -533363 -533371 -533389 -533399 -533413 -533447 -533453 -533459 -533509 -533543 -533549 -533573 -533581 -533593 -533633 -533641 -533671 -533693 -533711 -533713 -533719 -533723 -533737 -533747 -533777 -533801 -533809 -533821 -533831 -533837 -533857 -533879 -533887 -533893 -533909 -533921 -533927 -533959 -533963 -533969 -533971 -533989 -533993 -533999 -534007 -534013 -534019 -534029 -534043 -534047 -534049 -534059 -534073 -534077 -534091 -534101 -534113 -534137 -534167 -534173 -534199 -534203 -534211 -534229 -534241 -534253 -534283 -534301 -534307 -534311 -534323 -534329 -534341 -534367 -534371 -534403 -534407 -534431 -534439 -534473 -534491 -534511 -534529 -534553 -534571 -534577 -534581 -534601 -534607 -534617 -534629 -534631 -534637 -534647 -534649 -534659 -534661 -534671 -534697 -534707 -534739 -534799 -534811 -534827 -534839 -534841 -534851 -534857 -534883 -534889 -534913 -534923 -534931 -534943 -534949 -534971 -535013 -535019 -535033 -535037 -535061 -535099 -535103 -535123 -535133 -535151 -535159 -535169 -535181 -535193 -535207 -535219 -535229 -535237 -535243 -535273 -535303 -535319 -535333 -535349 -535351 -535361 -535387 -535391 -535399 -535481 -535487 -535489 -535499 -535511 -535523 -535529 -535547 -535571 -535573 -535589 -535607 -535609 -535627 -535637 -535663 -535669 -535673 -535679 -535697 -535709 -535727 -535741 -535751 -535757 -535771 -535783 -535793 -535811 -535849 -535859 -535861 -535879 -535919 -535937 -535939 -535943 -535957 -535967 -535973 -535991 -535999 -536017 -536023 -536051 -536057 -536059 -536069 -536087 -536099 -536101 -536111 -536141 -536147 -536149 -536189 -536191 -536203 -536213 -536219 -536227 -536233 -536243 -536267 -536273 -536279 -536281 -536287 -536293 -536311 -536323 -536353 -536357 -536377 -536399 -536407 -536423 -536441 -536443 -536447 -536449 -536453 -536461 -536467 -536479 -536491 -536509 -536513 -536531 -536533 -536561 -536563 -536593 -536609 -536621 -536633 -536651 -536671 -536677 -536687 -536699 -536717 -536719 -536729 -536743 -536749 -536771 -536773 -536777 -536779 -536791 -536801 -536803 -536839 -536849 -536857 -536867 -536869 -536891 -536909 -536917 -536923 -536929 -536933 -536947 -536953 -536971 -536989 -536999 -537001 -537007 -537011 -537023 -537029 -537037 -537041 -537067 -537071 -537079 -537091 -537127 -537133 -537143 -537157 -537169 -537181 -537191 -537197 -537221 -537233 -537241 -537269 -537281 -537287 -537307 -537331 -537343 -537347 -537373 -537379 -537401 -537403 -537413 -537497 -537527 -537547 -537569 -537583 -537587 -537599 -537611 -537637 -537661 -537673 -537679 -537703 -537709 -537739 -537743 -537749 -537769 -537773 -537781 -537787 -537793 -537811 -537841 -537847 -537853 -537877 -537883 -537899 -537913 -537919 -537941 -537991 -538001 -538019 -538049 -538051 -538073 -538079 -538093 -538117 -538121 -538123 -538127 -538147 -538151 -538157 -538159 -538163 -538199 -538201 -538247 -538249 -538259 -538267 -538283 -538297 -538301 -538303 -538309 -538331 -538333 -538357 -538367 -538397 -538399 -538411 -538423 -538457 -538471 -538481 -538487 -538511 -538513 -538519 -538523 -538529 -538553 -538561 -538567 -538579 -538589 -538597 -538621 -538649 -538651 -538697 -538709 -538711 -538721 -538723 -538739 -538751 -538763 -538771 -538777 -538789 -538799 -538801 -538817 -538823 -538829 -538841 -538871 -538877 -538921 -538927 -538931 -538939 -538943 -538987 -539003 -539009 -539039 -539047 -539089 -539093 -539101 -539107 -539111 -539113 -539129 -539141 -539153 -539159 -539167 -539171 -539207 -539219 -539233 -539237 -539261 -539267 -539269 -539293 -539303 -539309 -539311 -539321 -539323 -539339 -539347 -539351 -539389 -539401 -539447 -539449 -539479 -539501 -539503 -539507 -539509 -539533 -539573 -539621 -539629 -539633 -539639 -539641 -539653 -539663 -539677 -539687 -539711 -539713 -539723 -539729 -539743 -539761 -539783 -539797 -539837 -539839 -539843 -539849 -539863 -539881 -539897 -539899 -539921 -539947 -539993 -540041 -540061 -540079 -540101 -540119 -540121 -540139 -540149 -540157 -540167 -540173 -540179 -540181 -540187 -540203 -540217 -540233 -540251 -540269 -540271 -540283 -540301 -540307 -540343 -540347 -540349 -540367 -540373 -540377 -540383 -540389 -540391 -540433 -540437 -540461 -540469 -540509 -540511 -540517 -540539 -540541 -540557 -540559 -540577 -540587 -540599 -540611 -540613 -540619 -540629 -540677 -540679 -540689 -540691 -540697 -540703 -540713 -540751 -540769 -540773 -540779 -540781 -540803 -540809 -540823 -540851 -540863 -540871 -540877 -540901 -540907 -540961 -540989 -541001 -541007 -541027 -541049 -541061 -541087 -541097 -541129 -541133 -541141 -541153 -541181 -541193 -541201 -541217 -541231 -541237 -541249 -541267 -541271 -541283 -541301 -541309 -541339 -541349 -541361 -541363 -541369 -541381 -541391 -541417 -541439 -541447 -541469 -541483 -541507 -541511 -541523 -541529 -541531 -541537 -541543 -541547 -541549 -541571 -541577 -541579 -541589 -541613 -541631 -541657 -541661 -541669 -541693 -541699 -541711 -541721 -541727 -541759 -541763 -541771 -541777 -541781 -541799 -541817 -541831 -541837 -541859 -541889 -541901 -541927 -541951 -541967 -541987 -541991 -541993 -541999 -542021 -542023 -542027 -542053 -542063 -542071 -542081 -542083 -542093 -542111 -542117 -542119 -542123 -542131 -542141 -542149 -542153 -542167 -542183 -542189 -542197 -542207 -542219 -542237 -542251 -542261 -542263 -542281 -542293 -542299 -542323 -542371 -542401 -542441 -542447 -542461 -542467 -542483 -542489 -542497 -542519 -542533 -542537 -542539 -542551 -542557 -542567 -542579 -542587 -542599 -542603 -542683 -542687 -542693 -542713 -542719 -542723 -542747 -542761 -542771 -542783 -542791 -542797 -542821 -542831 -542837 -542873 -542891 -542911 -542921 -542923 -542933 -542939 -542947 -542951 -542981 -542987 -542999 -543017 -543019 -543029 -543061 -543097 -543113 -543131 -543139 -543143 -543149 -543157 -543161 -543163 -543187 -543203 -543217 -543223 -543227 -543233 -543241 -543253 -543259 -543281 -543287 -543289 -543299 -543307 -543311 -543313 -543341 -543349 -543353 -543359 -543379 -543383 -543407 -543427 -543463 -543497 -543503 -543509 -543539 -543551 -543553 -543593 -543601 -543607 -543611 -543617 -543637 -543659 -543661 -543671 -543679 -543689 -543703 -543707 -543713 -543769 -543773 -543787 -543791 -543793 -543797 -543811 -543827 -543841 -543853 -543857 -543859 -543871 -543877 -543883 -543887 -543889 -543901 -543911 -543929 -543967 -543971 -543997 -544001 -544007 -544009 -544013 -544021 -544031 -544097 -544099 -544109 -544123 -544129 -544133 -544139 -544171 -544177 -544183 -544199 -544223 -544259 -544273 -544277 -544279 -544367 -544373 -544399 -544403 -544429 -544451 -544471 -544477 -544487 -544501 -544513 -544517 -544543 -544549 -544601 -544613 -544627 -544631 -544651 -544667 -544699 -544717 -544721 -544723 -544727 -544757 -544759 -544771 -544781 -544793 -544807 -544813 -544837 -544861 -544877 -544879 -544883 -544889 -544897 -544903 -544919 -544927 -544937 -544961 -544963 -544979 -545023 -545029 -545033 -545057 -545063 -545087 -545089 -545093 -545117 -545131 -545141 -545143 -545161 -545189 -545203 -545213 -545231 -545239 -545257 -545267 -545291 -545329 -545371 -545387 -545429 -545437 -545443 -545449 -545473 -545477 -545483 -545497 -545521 -545527 -545533 -545543 -545549 -545551 -545579 -545599 -545609 -545617 -545621 -545641 -545647 -545651 -545663 -545711 -545723 -545731 -545747 -545749 -545759 -545773 -545789 -545791 -545827 -545843 -545863 -545873 -545893 -545899 -545911 -545917 -545929 -545933 -545939 -545947 -545959 -546001 -546017 -546019 -546031 -546047 -546053 -546067 -546071 -546097 -546101 -546103 -546109 -546137 -546149 -546151 -546173 -546179 -546197 -546211 -546233 -546239 -546241 -546253 -546263 -546283 -546289 -546317 -546323 -546341 -546349 -546353 -546361 -546367 -546373 -546391 -546461 -546467 -546479 -546509 -546523 -546547 -546569 -546583 -546587 -546599 -546613 -546617 -546619 -546631 -546643 -546661 -546671 -546677 -546683 -546691 -546709 -546719 -546731 -546739 -546781 -546841 -546859 -546863 -546869 -546881 -546893 -546919 -546937 -546943 -546947 -546961 -546967 -546977 -547007 -547021 -547037 -547061 -547087 -547093 -547097 -547103 -547121 -547133 -547139 -547171 -547223 -547229 -547237 -547241 -547249 -547271 -547273 -547291 -547301 -547321 -547357 -547361 -547363 -547369 -547373 -547387 -547397 -547399 -547411 -547441 -547453 -547471 -547483 -547487 -547493 -547499 -547501 -547513 -547529 -547537 -547559 -547567 -547577 -547583 -547601 -547609 -547619 -547627 -547639 -547643 -547661 -547663 -547681 -547709 -547727 -547741 -547747 -547753 -547763 -547769 -547787 -547817 -547819 -547823 -547831 -547849 -547853 -547871 -547889 -547901 -547909 -547951 -547957 -547999 -548003 -548039 -548059 -548069 -548083 -548089 -548099 -548117 -548123 -548143 -548153 -548189 -548201 -548213 -548221 -548227 -548239 -548243 -548263 -548291 -548309 -548323 -548347 -548351 -548363 -548371 -548393 -548399 -548407 -548417 -548423 -548441 -548453 -548459 -548461 -548489 -548501 -548503 -548519 -548521 -548533 -548543 -548557 -548567 -548579 -548591 -548623 -548629 -548657 -548671 -548677 -548687 -548693 -548707 -548719 -548749 -548753 -548761 -548771 -548783 -548791 -548827 -548831 -548833 -548837 -548843 -548851 -548861 -548869 -548893 -548897 -548903 -548909 -548927 -548953 -548957 -548963 -549001 -549011 -549013 -549019 -549023 -549037 -549071 -549089 -549091 -549097 -549121 -549139 -549149 -549161 -549163 -549167 -549169 -549193 -549203 -549221 -549229 -549247 -549257 -549259 -549281 -549313 -549319 -549323 -549331 -549379 -549391 -549403 -549421 -549431 -549443 -549449 -549481 -549503 -549509 -549511 -549517 -549533 -549547 -549551 -549553 -549569 -549587 -549589 -549607 -549623 -549641 -549643 -549649 -549667 -549683 -549691 -549701 -549707 -549713 -549719 -549733 -549737 -549739 -549749 -549751 -549767 -549817 -549833 -549839 -549863 -549877 -549883 -549911 -549937 -549943 -549949 -549977 -549979 -550007 -550009 -550027 -550049 -550061 -550063 -550073 -550111 -550117 -550127 -550129 -550139 -550163 -550169 -550177 -550181 -550189 -550211 -550213 -550241 -550267 -550279 -550283 -550289 -550309 -550337 -550351 -550369 -550379 -550427 -550439 -550441 -550447 -550457 -550469 -550471 -550489 -550513 -550519 -550531 -550541 -550553 -550577 -550607 -550609 -550621 -550631 -550637 -550651 -550657 -550661 -550663 -550679 -550691 -550703 -550717 -550721 -550733 -550757 -550763 -550789 -550801 -550811 -550813 -550831 -550841 -550843 -550859 -550861 -550903 -550909 -550937 -550939 -550951 -550961 -550969 -550973 -550993 -550997 -551003 -551017 -551027 -551039 -551059 -551063 -551069 -551093 -551099 -551107 -551113 -551129 -551143 -551179 -551197 -551207 -551219 -551231 -551233 -551269 -551281 -551297 -551311 -551321 -551339 -551347 -551363 -551381 -551387 -551407 -551423 -551443 -551461 -551483 -551489 -551503 -551519 -551539 -551543 -551549 -551557 -551569 -551581 -551587 -551597 -551651 -551653 -551659 -551671 -551689 -551693 -551713 -551717 -551723 -551729 -551731 -551743 -551753 -551767 -551773 -551801 -551809 -551813 -551843 -551849 -551861 -551909 -551911 -551917 -551927 -551933 -551951 -551959 -551963 -551981 -552001 -552011 -552029 -552031 -552047 -552053 -552059 -552089 -552091 -552103 -552107 -552113 -552127 -552137 -552179 -552193 -552217 -552239 -552241 -552259 -552263 -552271 -552283 -552301 -552317 -552341 -552353 -552379 -552397 -552401 -552403 -552469 -552473 -552481 -552491 -552493 -552511 -552523 -552527 -552553 -552581 -552583 -552589 -552611 -552649 -552659 -552677 -552703 -552707 -552709 -552731 -552749 -552751 -552757 -552787 -552791 -552793 -552809 -552821 -552833 -552841 -552847 -552859 -552883 -552887 -552899 -552913 -552917 -552971 -552983 -552991 -553013 -553037 -553043 -553051 -553057 -553067 -553073 -553093 -553097 -553099 -553103 -553123 -553139 -553141 -553153 -553171 -553181 -553193 -553207 -553211 -553229 -553249 -553253 -553277 -553279 -553309 -553351 -553363 -553369 -553411 -553417 -553433 -553439 -553447 -553457 -553463 -553471 -553481 -553507 -553513 -553517 -553529 -553543 -553549 -553561 -553573 -553583 -553589 -553591 -553601 -553607 -553627 -553643 -553649 -553667 -553681 -553687 -553699 -553703 -553727 -553733 -553747 -553757 -553759 -553769 -553789 -553811 -553837 -553849 -553867 -553873 -553897 -553901 -553919 -553921 -553933 -553961 -553963 -553981 -553991 -554003 -554011 -554017 -554051 -554077 -554087 -554089 -554117 -554123 -554129 -554137 -554167 -554171 -554179 -554189 -554207 -554209 -554233 -554237 -554263 -554269 -554293 -554299 -554303 -554317 -554347 -554377 -554383 -554417 -554419 -554431 -554447 -554453 -554467 -554503 -554527 -554531 -554569 -554573 -554597 -554611 -554627 -554633 -554639 -554641 -554663 -554669 -554677 -554699 -554707 -554711 -554731 -554747 -554753 -554759 -554767 -554779 -554789 -554791 -554797 -554803 -554821 -554833 -554837 -554839 -554843 -554849 -554887 -554891 -554893 -554899 -554923 -554927 -554951 -554959 -554969 -554977 -555029 -555041 -555043 -555053 -555073 -555077 -555083 -555091 -555097 -555109 -555119 -555143 -555167 -555209 -555221 -555251 -555253 -555257 -555277 -555287 -555293 -555301 -555307 -555337 -555349 -555361 -555383 -555391 -555419 -555421 -555439 -555461 -555487 -555491 -555521 -555523 -555557 -555589 -555593 -555637 -555661 -555671 -555677 -555683 -555691 -555697 -555707 -555739 -555743 -555761 -555767 -555823 -555827 -555829 -555853 -555857 -555871 -555931 -555941 -555953 -555967 -556007 -556021 -556027 -556037 -556043 -556051 -556067 -556069 -556093 -556103 -556123 -556159 -556177 -556181 -556211 -556219 -556229 -556243 -556253 -556261 -556267 -556271 -556273 -556279 -556289 -556313 -556321 -556327 -556331 -556343 -556351 -556373 -556399 -556403 -556441 -556459 -556477 -556483 -556487 -556513 -556519 -556537 -556559 -556573 -556579 -556583 -556601 -556607 -556609 -556613 -556627 -556639 -556651 -556679 -556687 -556691 -556693 -556697 -556709 -556723 -556727 -556741 -556753 -556763 -556769 -556781 -556789 -556793 -556799 -556811 -556817 -556819 -556823 -556841 -556849 -556859 -556861 -556867 -556883 -556891 -556931 -556939 -556943 -556957 -556967 -556981 -556987 -556999 -557017 -557021 -557027 -557033 -557041 -557057 -557059 -557069 -557087 -557093 -557153 -557159 -557197 -557201 -557261 -557269 -557273 -557281 -557303 -557309 -557321 -557329 -557339 -557369 -557371 -557377 -557423 -557443 -557449 -557461 -557483 -557489 -557519 -557521 -557533 -557537 -557551 -557567 -557573 -557591 -557611 -557633 -557639 -557663 -557671 -557693 -557717 -557729 -557731 -557741 -557743 -557747 -557759 -557761 -557779 -557789 -557801 -557803 -557831 -557857 -557861 -557863 -557891 -557899 -557903 -557927 -557981 -557987 -558007 -558017 -558029 -558053 -558067 -558083 -558091 -558109 -558113 -558121 -558139 -558149 -558167 -558179 -558197 -558203 -558209 -558223 -558241 -558251 -558253 -558287 -558289 -558307 -558319 -558343 -558401 -558413 -558421 -558427 -558431 -558457 -558469 -558473 -558479 -558491 -558497 -558499 -558521 -558529 -558533 -558539 -558541 -558563 -558583 -558587 -558599 -558611 -558629 -558643 -558661 -558683 -558703 -558721 -558731 -558757 -558769 -558781 -558787 -558791 -558793 -558827 -558829 -558863 -558869 -558881 -558893 -558913 -558931 -558937 -558947 -558973 -558979 -558997 -559001 -559049 -559051 -559067 -559081 -559093 -559099 -559123 -559133 -559157 -559177 -559183 -559201 -559211 -559213 -559217 -559219 -559231 -559243 -559259 -559277 -559297 -559313 -559319 -559343 -559357 -559367 -559369 -559397 -559421 -559451 -559459 -559469 -559483 -559511 -559513 -559523 -559529 -559541 -559547 -559549 -559561 -559571 -559577 -559583 -559591 -559597 -559631 -559633 -559639 -559649 -559667 -559673 -559679 -559687 -559703 -559709 -559739 -559747 -559777 -559781 -559799 -559807 -559813 -559831 -559841 -559849 -559859 -559877 -559883 -559901 -559907 -559913 -559939 -559967 -559973 -559991 -560017 -560023 -560029 -560039 -560047 -560081 -560083 -560089 -560093 -560107 -560113 -560117 -560123 -560137 -560149 -560159 -560171 -560173 -560179 -560191 -560207 -560213 -560221 -560227 -560233 -560237 -560239 -560243 -560249 -560281 -560293 -560297 -560299 -560311 -560317 -560341 -560353 -560393 -560411 -560437 -560447 -560459 -560471 -560477 -560479 -560489 -560491 -560501 -560503 -560531 -560543 -560551 -560561 -560597 -560617 -560621 -560639 -560641 -560653 -560669 -560683 -560689 -560701 -560719 -560737 -560753 -560761 -560767 -560771 -560783 -560797 -560803 -560827 -560837 -560863 -560869 -560873 -560887 -560891 -560893 -560897 -560929 -560939 -560941 -560969 -560977 -561019 -561047 -561053 -561059 -561061 -561079 -561083 -561091 -561097 -561101 -561103 -561109 -561161 -561173 -561181 -561191 -561199 -561229 -561251 -561277 -561307 -561313 -561343 -561347 -561359 -561367 -561373 -561377 -561389 -561409 -561419 -561439 -561461 -561521 -561529 -561551 -561553 -561559 -561599 -561607 -561667 -561703 -561713 -561733 -561761 -561767 -561787 -561797 -561809 -561829 -561839 -561907 -561917 -561923 -561931 -561943 -561947 -561961 -561973 -561983 -561997 -562007 -562019 -562021 -562043 -562091 -562103 -562129 -562147 -562169 -562181 -562193 -562201 -562231 -562259 -562271 -562273 -562283 -562291 -562297 -562301 -562307 -562313 -562333 -562337 -562349 -562351 -562357 -562361 -562399 -562403 -562409 -562417 -562421 -562427 -562439 -562459 -562477 -562493 -562501 -562517 -562519 -562537 -562577 -562579 -562589 -562591 -562607 -562613 -562621 -562631 -562633 -562651 -562663 -562669 -562673 -562691 -562693 -562699 -562703 -562711 -562721 -562739 -562753 -562759 -562763 -562781 -562789 -562813 -562831 -562841 -562871 -562897 -562901 -562909 -562931 -562943 -562949 -562963 -562967 -562973 -562979 -562987 -562997 -563009 -563011 -563021 -563039 -563041 -563047 -563051 -563077 -563081 -563099 -563113 -563117 -563119 -563131 -563149 -563153 -563183 -563197 -563219 -563249 -563263 -563287 -563327 -563351 -563357 -563359 -563377 -563401 -563411 -563413 -563417 -563419 -563447 -563449 -563467 -563489 -563501 -563503 -563543 -563551 -563561 -563587 -563593 -563599 -563623 -563657 -563663 -563723 -563743 -563747 -563777 -563809 -563813 -563821 -563831 -563837 -563851 -563869 -563881 -563887 -563897 -563929 -563933 -563947 -563971 -563987 -563999 -564013 -564017 -564041 -564049 -564059 -564061 -564089 -564097 -564103 -564127 -564133 -564149 -564163 -564173 -564191 -564197 -564227 -564229 -564233 -564251 -564257 -564269 -564271 -564299 -564301 -564307 -564313 -564323 -564353 -564359 -564367 -564371 -564373 -564391 -564401 -564407 -564409 -564419 -564437 -564449 -564457 -564463 -564467 -564491 -564497 -564523 -564533 -564593 -564607 -564617 -564643 -564653 -564667 -564671 -564679 -564701 -564703 -564709 -564713 -564761 -564779 -564793 -564797 -564827 -564871 -564881 -564899 -564917 -564919 -564923 -564937 -564959 -564973 -564979 -564983 -564989 -564997 -565013 -565039 -565049 -565057 -565069 -565109 -565111 -565127 -565163 -565171 -565177 -565183 -565189 -565207 -565237 -565241 -565247 -565259 -565261 -565273 -565283 -565289 -565303 -565319 -565333 -565337 -565343 -565361 -565379 -565381 -565387 -565391 -565393 -565427 -565429 -565441 -565451 -565463 -565469 -565483 -565489 -565507 -565511 -565517 -565519 -565549 -565553 -565559 -565567 -565571 -565583 -565589 -565597 -565603 -565613 -565637 -565651 -565661 -565667 -565723 -565727 -565769 -565771 -565787 -565793 -565813 -565849 -565867 -565889 -565891 -565907 -565909 -565919 -565921 -565937 -565973 -565979 -565997 -566011 -566023 -566047 -566057 -566077 -566089 -566101 -566107 -566131 -566149 -566161 -566173 -566179 -566183 -566201 -566213 -566227 -566231 -566233 -566273 -566311 -566323 -566347 -566387 -566393 -566413 -566417 -566429 -566431 -566437 -566441 -566443 -566453 -566521 -566537 -566539 -566543 -566549 -566551 -566557 -566563 -566567 -566617 -566633 -566639 -566653 -566659 -566677 -566681 -566693 -566701 -566707 -566717 -566719 -566723 -566737 -566759 -566767 -566791 -566821 -566833 -566851 -566857 -566879 -566911 -566939 -566947 -566963 -566971 -566977 -566987 -566999 -567011 -567013 -567031 -567053 -567059 -567067 -567097 -567101 -567107 -567121 -567143 -567179 -567181 -567187 -567209 -567257 -567263 -567277 -567319 -567323 -567367 -567377 -567383 -567389 -567401 -567407 -567439 -567449 -567451 -567467 -567487 -567493 -567499 -567527 -567529 -567533 -567569 -567601 -567607 -567631 -567649 -567653 -567659 -567661 -567667 -567673 -567689 -567719 -567737 -567751 -567761 -567767 -567779 -567793 -567811 -567829 -567841 -567857 -567863 -567871 -567877 -567881 -567883 -567899 -567937 -567943 -567947 -567949 -567961 -567979 -567991 -567997 -568019 -568027 -568033 -568049 -568069 -568091 -568097 -568109 -568133 -568151 -568153 -568163 -568171 -568177 -568187 -568189 -568193 -568201 -568207 -568231 -568237 -568241 -568273 -568279 -568289 -568303 -568349 -568363 -568367 -568387 -568391 -568433 -568439 -568441 -568453 -568471 -568481 -568493 -568523 -568541 -568549 -568577 -568609 -568619 -568627 -568643 -568657 -568669 -568679 -568691 -568699 -568709 -568723 -568751 -568783 -568787 -568807 -568823 -568831 -568853 -568877 -568891 -568903 -568907 -568913 -568921 -568963 -568979 -568987 -568991 -568999 -569003 -569011 -569021 -569047 -569053 -569057 -569071 -569077 -569081 -569083 -569111 -569117 -569137 -569141 -569159 -569161 -569189 -569197 -569201 -569209 -569213 -569237 -569243 -569249 -569251 -569263 -569267 -569269 -569321 -569323 -569369 -569417 -569419 -569423 -569431 -569447 -569461 -569479 -569497 -569507 -569533 -569573 -569579 -569581 -569599 -569603 -569609 -569617 -569623 -569659 -569663 -569671 -569683 -569711 -569713 -569717 -569729 -569731 -569747 -569759 -569771 -569773 -569797 -569809 -569813 -569819 -569831 -569839 -569843 -569851 -569861 -569869 -569887 -569893 -569897 -569903 -569927 -569939 -569957 -569983 -570001 -570013 -570029 -570041 -570043 -570047 -570049 -570071 -570077 -570079 -570083 -570091 -570107 -570109 -570113 -570131 -570139 -570161 -570173 -570181 -570191 -570217 -570221 -570233 -570253 -570329 -570359 -570373 -570379 -570389 -570391 -570403 -570407 -570413 -570419 -570421 -570461 -570463 -570467 -570487 -570491 -570497 -570499 -570509 -570511 -570527 -570529 -570539 -570547 -570553 -570569 -570587 -570601 -570613 -570637 -570643 -570649 -570659 -570667 -570671 -570677 -570683 -570697 -570719 -570733 -570737 -570743 -570781 -570821 -570827 -570839 -570841 -570851 -570853 -570859 -570881 -570887 -570901 -570919 -570937 -570949 -570959 -570961 -570967 -570991 -571001 -571019 -571031 -571037 -571049 -571069 -571093 -571099 -571111 -571133 -571147 -571157 -571163 -571199 -571201 -571211 -571223 -571229 -571231 -571261 -571267 -571279 -571303 -571321 -571331 -571339 -571369 -571381 -571397 -571399 -571409 -571433 -571453 -571471 -571477 -571531 -571541 -571579 -571583 -571589 -571601 -571603 -571633 -571657 -571673 -571679 -571699 -571709 -571717 -571721 -571741 -571751 -571759 -571777 -571783 -571789 -571799 -571801 -571811 -571841 -571847 -571853 -571861 -571867 -571871 -571873 -571877 -571903 -571933 -571939 -571969 -571973 -572023 -572027 -572041 -572051 -572053 -572059 -572063 -572069 -572087 -572093 -572107 -572137 -572161 -572177 -572179 -572183 -572207 -572233 -572239 -572251 -572269 -572281 -572303 -572311 -572321 -572323 -572329 -572333 -572357 -572387 -572399 -572417 -572419 -572423 -572437 -572449 -572461 -572471 -572479 -572491 -572497 -572519 -572521 -572549 -572567 -572573 -572581 -572587 -572597 -572599 -572609 -572629 -572633 -572639 -572651 -572653 -572657 -572659 -572683 -572687 -572699 -572707 -572711 -572749 -572777 -572791 -572801 -572807 -572813 -572821 -572827 -572833 -572843 -572867 -572879 -572881 -572903 -572909 -572927 -572933 -572939 -572941 -572963 -572969 -572993 -573007 -573031 -573047 -573101 -573107 -573109 -573119 -573143 -573161 -573163 -573179 -573197 -573247 -573253 -573263 -573277 -573289 -573299 -573317 -573329 -573341 -573343 -573371 -573379 -573383 -573409 -573437 -573451 -573457 -573473 -573479 -573481 -573487 -573493 -573497 -573509 -573511 -573523 -573527 -573557 -573569 -573571 -573637 -573647 -573673 -573679 -573691 -573719 -573737 -573739 -573757 -573761 -573763 -573787 -573791 -573809 -573817 -573829 -573847 -573851 -573863 -573871 -573883 -573887 -573899 -573901 -573929 -573941 -573953 -573967 -573973 -573977 -574003 -574031 -574033 -574051 -574061 -574081 -574099 -574109 -574127 -574157 -574159 -574163 -574169 -574181 -574183 -574201 -574219 -574261 -574279 -574283 -574289 -574297 -574307 -574309 -574363 -574367 -574373 -574393 -574423 -574429 -574433 -574439 -574477 -574489 -574493 -574501 -574507 -574529 -574543 -574547 -574597 -574619 -574621 -574627 -574631 -574643 -574657 -574667 -574687 -574699 -574703 -574711 -574723 -574727 -574733 -574741 -574789 -574799 -574801 -574813 -574817 -574859 -574907 -574913 -574933 -574939 -574949 -574963 -574967 -574969 -575009 -575027 -575033 -575053 -575063 -575077 -575087 -575119 -575123 -575129 -575131 -575137 -575153 -575173 -575177 -575203 -575213 -575219 -575231 -575243 -575249 -575251 -575257 -575261 -575303 -575317 -575359 -575369 -575371 -575401 -575417 -575429 -575431 -575441 -575473 -575479 -575489 -575503 -575513 -575551 -575557 -575573 -575579 -575581 -575591 -575593 -575611 -575623 -575647 -575651 -575669 -575677 -575689 -575693 -575699 -575711 -575717 -575723 -575747 -575753 -575777 -575791 -575821 -575837 -575849 -575857 -575863 -575867 -575893 -575903 -575921 -575923 -575941 -575957 -575959 -575963 -575987 -576001 -576013 -576019 -576029 -576031 -576041 -576049 -576089 -576101 -576119 -576131 -576151 -576161 -576167 -576179 -576193 -576203 -576211 -576217 -576221 -576223 -576227 -576287 -576293 -576299 -576313 -576319 -576341 -576377 -576379 -576391 -576421 -576427 -576431 -576439 -576461 -576469 -576473 -576493 -576509 -576523 -576529 -576533 -576539 -576551 -576553 -576577 -576581 -576613 -576617 -576637 -576647 -576649 -576659 -576671 -576677 -576683 -576689 -576701 -576703 -576721 -576727 -576731 -576739 -576743 -576749 -576757 -576769 -576787 -576791 -576881 -576883 -576889 -576899 -576943 -576949 -576967 -576977 -577007 -577009 -577033 -577043 -577063 -577067 -577069 -577081 -577097 -577111 -577123 -577147 -577151 -577153 -577169 -577177 -577193 -577219 -577249 -577259 -577271 -577279 -577307 -577327 -577331 -577333 -577349 -577351 -577363 -577387 -577397 -577399 -577427 -577453 -577457 -577463 -577471 -577483 -577513 -577517 -577523 -577529 -577531 -577537 -577547 -577559 -577573 -577589 -577601 -577613 -577627 -577637 -577639 -577667 -577721 -577739 -577751 -577757 -577781 -577799 -577807 -577817 -577831 -577849 -577867 -577873 -577879 -577897 -577901 -577909 -577919 -577931 -577937 -577939 -577957 -577979 -577981 -578021 -578029 -578041 -578047 -578063 -578077 -578093 -578117 -578131 -578167 -578183 -578191 -578203 -578209 -578213 -578251 -578267 -578297 -578299 -578309 -578311 -578317 -578327 -578353 -578363 -578371 -578399 -578401 -578407 -578419 -578441 -578453 -578467 -578477 -578483 -578489 -578497 -578503 -578509 -578533 -578537 -578563 -578573 -578581 -578587 -578597 -578603 -578609 -578621 -578647 -578659 -578687 -578689 -578693 -578701 -578719 -578729 -578741 -578777 -578779 -578789 -578803 -578819 -578821 -578827 -578839 -578843 -578857 -578861 -578881 -578917 -578923 -578957 -578959 -578971 -578999 -579011 -579017 -579023 -579053 -579079 -579083 -579107 -579113 -579119 -579133 -579179 -579197 -579199 -579239 -579251 -579259 -579263 -579277 -579281 -579283 -579287 -579311 -579331 -579353 -579379 -579407 -579409 -579427 -579433 -579451 -579473 -579497 -579499 -579503 -579517 -579521 -579529 -579533 -579539 -579541 -579563 -579569 -579571 -579583 -579587 -579611 -579613 -579629 -579637 -579641 -579643 -579653 -579673 -579701 -579707 -579713 -579721 -579737 -579757 -579763 -579773 -579779 -579809 -579829 -579851 -579869 -579877 -579881 -579883 -579893 -579907 -579947 -579949 -579961 -579967 -579973 -579983 -580001 -580031 -580033 -580079 -580081 -580093 -580133 -580163 -580169 -580183 -580187 -580201 -580213 -580219 -580231 -580259 -580291 -580301 -580303 -580331 -580339 -580343 -580357 -580361 -580373 -580379 -580381 -580409 -580417 -580471 -580477 -580487 -580513 -580529 -580549 -580553 -580561 -580577 -580607 -580627 -580631 -580633 -580639 -580663 -580673 -580687 -580691 -580693 -580711 -580717 -580733 -580747 -580757 -580759 -580763 -580787 -580793 -580807 -580813 -580837 -580843 -580859 -580871 -580889 -580891 -580901 -580913 -580919 -580927 -580939 -580969 -580981 -580997 -581029 -581041 -581047 -581069 -581071 -581089 -581099 -581101 -581137 -581143 -581149 -581171 -581173 -581177 -581183 -581197 -581201 -581227 -581237 -581239 -581261 -581263 -581293 -581303 -581311 -581323 -581333 -581341 -581351 -581353 -581369 -581377 -581393 -581407 -581411 -581429 -581443 -581447 -581459 -581473 -581491 -581521 -581527 -581549 -581551 -581557 -581573 -581597 -581599 -581617 -581639 -581657 -581663 -581683 -581687 -581699 -581701 -581729 -581731 -581743 -581753 -581767 -581773 -581797 -581809 -581821 -581843 -581857 -581863 -581869 -581873 -581891 -581909 -581921 -581941 -581947 -581953 -581981 -581983 -582011 -582013 -582017 -582031 -582037 -582067 -582083 -582119 -582137 -582139 -582157 -582161 -582167 -582173 -582181 -582203 -582209 -582221 -582223 -582227 -582247 -582251 -582299 -582317 -582319 -582371 -582391 -582409 -582419 -582427 -582433 -582451 -582457 -582469 -582499 -582509 -582511 -582541 -582551 -582563 -582587 -582601 -582623 -582643 -582649 -582677 -582689 -582691 -582719 -582721 -582727 -582731 -582737 -582761 -582763 -582767 -582773 -582781 -582793 -582809 -582821 -582851 -582853 -582859 -582887 -582899 -582931 -582937 -582949 -582961 -582971 -582973 -582983 -583007 -583013 -583019 -583021 -583031 -583069 -583087 -583127 -583139 -583147 -583153 -583169 -583171 -583181 -583189 -583207 -583213 -583229 -583237 -583249 -583267 -583273 -583279 -583291 -583301 -583337 -583339 -583351 -583367 -583391 -583397 -583403 -583409 -583417 -583421 -583447 -583459 -583469 -583481 -583493 -583501 -583511 -583519 -583523 -583537 -583543 -583577 -583603 -583613 -583619 -583621 -583631 -583651 -583657 -583669 -583673 -583697 -583727 -583733 -583753 -583769 -583777 -583783 -583789 -583801 -583841 -583853 -583859 -583861 -583873 -583879 -583903 -583909 -583937 -583969 -583981 -583991 -583997 -584011 -584027 -584033 -584053 -584057 -584063 -584081 -584099 -584141 -584153 -584167 -584183 -584203 -584249 -584261 -584279 -584281 -584303 -584347 -584357 -584359 -584377 -584387 -584393 -584399 -584411 -584417 -584429 -584447 -584471 -584473 -584509 -584531 -584557 -584561 -584587 -584593 -584599 -584603 -584609 -584621 -584627 -584659 -584663 -584677 -584693 -584699 -584707 -584713 -584719 -584723 -584737 -584767 -584777 -584789 -584791 -584809 -584849 -584863 -584869 -584873 -584879 -584897 -584911 -584917 -584923 -584951 -584963 -584971 -584981 -584993 -584999 -585019 -585023 -585031 -585037 -585041 -585043 -585049 -585061 -585071 -585073 -585077 -585107 -585113 -585119 -585131 -585149 -585163 -585199 -585217 -585251 -585269 -585271 -585283 -585289 -585313 -585317 -585337 -585341 -585367 -585383 -585391 -585413 -585437 -585443 -585461 -585467 -585493 -585503 -585517 -585547 -585551 -585569 -585577 -585581 -585587 -585593 -585601 -585619 -585643 -585653 -585671 -585677 -585691 -585721 -585727 -585733 -585737 -585743 -585749 -585757 -585779 -585791 -585799 -585839 -585841 -585847 -585853 -585857 -585863 -585877 -585881 -585883 -585889 -585899 -585911 -585913 -585917 -585919 -585953 -585989 -585997 -586009 -586037 -586051 -586057 -586067 -586073 -586087 -586111 -586121 -586123 -586129 -586139 -586147 -586153 -586189 -586213 -586237 -586273 -586277 -586291 -586301 -586309 -586319 -586349 -586361 -586363 -586367 -586387 -586403 -586429 -586433 -586457 -586459 -586463 -586471 -586493 -586499 -586501 -586541 -586543 -586567 -586571 -586577 -586589 -586601 -586603 -586609 -586627 -586631 -586633 -586667 -586679 -586693 -586711 -586723 -586741 -586769 -586787 -586793 -586801 -586811 -586813 -586819 -586837 -586841 -586849 -586871 -586897 -586903 -586909 -586919 -586921 -586933 -586939 -586951 -586961 -586973 -586979 -586981 -587017 -587021 -587033 -587051 -587053 -587057 -587063 -587087 -587101 -587107 -587117 -587123 -587131 -587137 -587143 -587149 -587173 -587179 -587189 -587201 -587219 -587263 -587267 -587269 -587281 -587287 -587297 -587303 -587341 -587371 -587381 -587387 -587413 -587417 -587429 -587437 -587441 -587459 -587467 -587473 -587497 -587513 -587519 -587527 -587533 -587539 -587549 -587551 -587563 -587579 -587599 -587603 -587617 -587621 -587623 -587633 -587659 -587669 -587677 -587687 -587693 -587711 -587731 -587737 -587747 -587749 -587753 -587771 -587773 -587789 -587813 -587827 -587833 -587849 -587863 -587887 -587891 -587897 -587927 -587933 -587947 -587959 -587969 -587971 -587987 -587989 -587999 -588011 -588019 -588037 -588043 -588061 -588073 -588079 -588083 -588097 -588113 -588121 -588131 -588151 -588167 -588169 -588173 -588191 -588199 -588229 -588239 -588241 -588257 -588277 -588293 -588311 -588347 -588359 -588361 -588383 -588389 -588397 -588403 -588433 -588437 -588463 -588481 -588493 -588503 -588509 -588517 -588521 -588529 -588569 -588571 -588619 -588631 -588641 -588647 -588649 -588667 -588673 -588683 -588703 -588733 -588737 -588743 -588767 -588773 -588779 -588811 -588827 -588839 -588871 -588877 -588881 -588893 -588911 -588937 -588941 -588947 -588949 -588953 -588977 -589021 -589027 -589049 -589063 -589109 -589111 -589123 -589139 -589159 -589163 -589181 -589187 -589189 -589207 -589213 -589219 -589231 -589241 -589243 -589273 -589289 -589291 -589297 -589327 -589331 -589349 -589357 -589387 -589409 -589439 -589451 -589453 -589471 -589481 -589493 -589507 -589529 -589531 -589579 -589583 -589591 -589601 -589607 -589609 -589639 -589643 -589681 -589711 -589717 -589751 -589753 -589759 -589763 -589783 -589793 -589807 -589811 -589829 -589847 -589859 -589861 -589873 -589877 -589903 -589921 -589933 -589993 -589997 -590021 -590027 -590033 -590041 -590071 -590077 -590099 -590119 -590123 -590129 -590131 -590137 -590141 -590153 -590171 -590201 -590207 -590243 -590251 -590263 -590267 -590269 -590279 -590309 -590321 -590323 -590327 -590357 -590363 -590377 -590383 -590389 -590399 -590407 -590431 -590437 -590489 -590537 -590543 -590567 -590573 -590593 -590599 -590609 -590627 -590641 -590647 -590657 -590659 -590669 -590713 -590717 -590719 -590741 -590753 -590771 -590797 -590809 -590813 -590819 -590833 -590839 -590867 -590899 -590921 -590923 -590929 -590959 -590963 -590983 -590987 -591023 -591053 -591061 -591067 -591079 -591089 -591091 -591113 -591127 -591131 -591137 -591161 -591163 -591181 -591193 -591233 -591259 -591271 -591287 -591289 -591301 -591317 -591319 -591341 -591377 -591391 -591403 -591407 -591421 -591431 -591443 -591457 -591469 -591499 -591509 -591523 -591553 -591559 -591581 -591599 -591601 -591611 -591623 -591649 -591653 -591659 -591673 -591691 -591709 -591739 -591743 -591749 -591751 -591757 -591779 -591791 -591827 -591841 -591847 -591863 -591881 -591887 -591893 -591901 -591937 -591959 -591973 -592019 -592027 -592049 -592057 -592061 -592073 -592087 -592099 -592121 -592129 -592133 -592139 -592157 -592199 -592217 -592219 -592223 -592237 -592261 -592289 -592303 -592307 -592309 -592321 -592337 -592343 -592351 -592357 -592367 -592369 -592387 -592391 -592393 -592429 -592451 -592453 -592463 -592469 -592483 -592489 -592507 -592517 -592531 -592547 -592561 -592577 -592589 -592597 -592601 -592609 -592621 -592639 -592643 -592649 -592661 -592663 -592681 -592693 -592723 -592727 -592741 -592747 -592759 -592763 -592793 -592843 -592849 -592853 -592861 -592873 -592877 -592897 -592903 -592919 -592931 -592939 -592967 -592973 -592987 -592993 -593003 -593029 -593041 -593051 -593059 -593071 -593081 -593083 -593111 -593119 -593141 -593143 -593149 -593171 -593179 -593183 -593207 -593209 -593213 -593227 -593231 -593233 -593251 -593261 -593273 -593291 -593293 -593297 -593321 -593323 -593353 -593381 -593387 -593399 -593401 -593407 -593429 -593447 -593449 -593473 -593479 -593491 -593497 -593501 -593507 -593513 -593519 -593531 -593539 -593573 -593587 -593597 -593603 -593627 -593629 -593633 -593641 -593647 -593651 -593689 -593707 -593711 -593767 -593777 -593783 -593839 -593851 -593863 -593869 -593899 -593903 -593933 -593951 -593969 -593977 -593987 -593993 -594023 -594037 -594047 -594091 -594103 -594107 -594119 -594137 -594151 -594157 -594161 -594163 -594179 -594193 -594203 -594211 -594227 -594241 -594271 -594281 -594283 -594287 -594299 -594311 -594313 -594329 -594359 -594367 -594379 -594397 -594401 -594403 -594421 -594427 -594449 -594457 -594467 -594469 -594499 -594511 -594521 -594523 -594533 -594551 -594563 -594569 -594571 -594577 -594617 -594637 -594641 -594653 -594667 -594679 -594697 -594709 -594721 -594739 -594749 -594751 -594773 -594793 -594821 -594823 -594827 -594829 -594857 -594889 -594899 -594911 -594917 -594929 -594931 -594953 -594959 -594961 -594977 -594989 -595003 -595037 -595039 -595043 -595057 -595069 -595073 -595081 -595087 -595093 -595097 -595117 -595123 -595129 -595139 -595141 -595157 -595159 -595181 -595183 -595201 -595207 -595229 -595247 -595253 -595261 -595267 -595271 -595277 -595291 -595303 -595313 -595319 -595333 -595339 -595351 -595363 -595373 -595379 -595381 -595411 -595451 -595453 -595481 -595513 -595519 -595523 -595547 -595549 -595571 -595577 -595579 -595613 -595627 -595687 -595703 -595709 -595711 -595717 -595733 -595741 -595801 -595807 -595817 -595843 -595873 -595877 -595927 -595939 -595943 -595949 -595951 -595957 -595961 -595963 -595967 -595981 -596009 -596021 -596027 -596047 -596053 -596059 -596069 -596081 -596083 -596093 -596117 -596119 -596143 -596147 -596159 -596179 -596209 -596227 -596231 -596243 -596251 -596257 -596261 -596273 -596279 -596291 -596293 -596317 -596341 -596363 -596369 -596399 -596419 -596423 -596461 -596489 -596503 -596507 -596537 -596569 -596573 -596579 -596587 -596593 -596599 -596611 -596623 -596633 -596653 -596663 -596669 -596671 -596693 -596707 -596737 -596741 -596749 -596767 -596779 -596789 -596803 -596821 -596831 -596839 -596851 -596857 -596861 -596863 -596879 -596899 -596917 -596927 -596929 -596933 -596941 -596963 -596977 -596983 -596987 -597031 -597049 -597053 -597059 -597073 -597127 -597131 -597133 -597137 -597169 -597209 -597221 -597239 -597253 -597263 -597269 -597271 -597301 -597307 -597349 -597353 -597361 -597367 -597383 -597391 -597403 -597407 -597409 -597419 -597433 -597437 -597451 -597473 -597497 -597521 -597523 -597539 -597551 -597559 -597577 -597581 -597589 -597593 -597599 -597613 -597637 -597643 -597659 -597671 -597673 -597677 -597679 -597689 -597697 -597757 -597761 -597767 -597769 -597781 -597803 -597823 -597827 -597833 -597853 -597859 -597869 -597889 -597899 -597901 -597923 -597929 -597967 -597997 -598007 -598049 -598051 -598057 -598079 -598093 -598099 -598123 -598127 -598141 -598151 -598159 -598163 -598187 -598189 -598193 -598219 -598229 -598261 -598303 -598307 -598333 -598363 -598369 -598379 -598387 -598399 -598421 -598427 -598439 -598447 -598457 -598463 -598487 -598489 -598501 -598537 -598541 -598571 -598613 -598643 -598649 -598651 -598657 -598669 -598681 -598687 -598691 -598711 -598721 -598727 -598729 -598777 -598783 -598789 -598799 -598817 -598841 -598853 -598867 -598877 -598883 -598891 -598903 -598931 -598933 -598963 -598967 -598973 -598981 -598987 -598999 -599003 -599009 -599021 -599023 -599069 -599087 -599117 -599143 -599147 -599149 -599153 -599191 -599213 -599231 -599243 -599251 -599273 -599281 -599303 -599309 -599321 -599341 -599353 -599359 -599371 -599383 -599387 -599399 -599407 -599413 -599419 -599429 -599477 -599479 -599491 -599513 -599519 -599537 -599551 -599561 -599591 -599597 -599603 -599611 -599623 -599629 -599657 -599663 -599681 -599693 -599699 -599701 -599713 -599719 -599741 -599759 -599779 -599783 -599803 -599831 -599843 -599857 -599869 -599891 -599899 -599927 -599933 -599939 -599941 -599959 -599983 -599993 -599999 -600011 -600043 -600053 -600071 -600073 -600091 -600101 -600109 -600167 -600169 -600203 -600217 -600221 -600233 -600239 -600241 -600247 -600269 -600283 -600289 -600293 -600307 -600311 -600317 -600319 -600337 -600359 -600361 -600367 -600371 -600401 -600403 -600407 -600421 -600433 -600449 -600451 -600463 -600469 -600487 -600517 -600529 -600557 -600569 -600577 -600601 -600623 -600631 -600641 -600659 -600673 -600689 -600697 -600701 -600703 -600727 -600751 -600791 -600823 -600827 -600833 -600841 -600857 -600877 -600881 -600883 -600889 -600893 -600931 -600947 -600949 -600959 -600961 -600973 -600979 -600983 -601021 -601031 -601037 -601039 -601043 -601061 -601067 -601079 -601093 -601127 -601147 -601187 -601189 -601193 -601201 -601207 -601219 -601231 -601241 -601247 -601259 -601267 -601283 -601291 -601297 -601309 -601313 -601319 -601333 -601339 -601357 -601379 -601397 -601411 -601423 -601439 -601451 -601457 -601487 -601507 -601541 -601543 -601589 -601591 -601607 -601631 -601651 -601669 -601687 -601697 -601717 -601747 -601751 -601759 -601763 -601771 -601801 -601807 -601813 -601819 -601823 -601831 -601849 -601873 -601883 -601889 -601897 -601903 -601943 -601949 -601961 -601969 -601981 -602029 -602033 -602039 -602047 -602057 -602081 -602083 -602087 -602093 -602099 -602111 -602137 -602141 -602143 -602153 -602179 -602197 -602201 -602221 -602227 -602233 -602257 -602267 -602269 -602279 -602297 -602309 -602311 -602317 -602321 -602333 -602341 -602351 -602377 -602383 -602401 -602411 -602431 -602453 -602461 -602477 -602479 -602489 -602501 -602513 -602521 -602543 -602551 -602593 -602597 -602603 -602621 -602627 -602639 -602647 -602677 -602687 -602689 -602711 -602713 -602717 -602729 -602743 -602753 -602759 -602773 -602779 -602801 -602821 -602831 -602839 -602867 -602873 -602887 -602891 -602909 -602929 -602947 -602951 -602971 -602977 -602983 -602999 -603011 -603013 -603023 -603047 -603077 -603091 -603101 -603103 -603131 -603133 -603149 -603173 -603191 -603203 -603209 -603217 -603227 -603257 -603283 -603311 -603319 -603349 -603389 -603391 -603401 -603431 -603443 -603457 -603467 -603487 -603503 -603521 -603523 -603529 -603541 -603553 -603557 -603563 -603569 -603607 -603613 -603623 -603641 -603667 -603679 -603689 -603719 -603731 -603739 -603749 -603761 -603769 -603781 -603791 -603793 -603817 -603821 -603833 -603847 -603851 -603853 -603859 -603881 -603893 -603899 -603901 -603907 -603913 -603917 -603919 -603923 -603931 -603937 -603947 -603949 -603989 -604001 -604007 -604013 -604031 -604057 -604063 -604069 -604073 -604171 -604189 -604223 -604237 -604243 -604249 -604259 -604277 -604291 -604309 -604313 -604319 -604339 -604343 -604349 -604361 -604369 -604379 -604397 -604411 -604427 -604433 -604441 -604477 -604481 -604517 -604529 -604547 -604559 -604579 -604589 -604603 -604609 -604613 -604619 -604649 -604651 -604661 -604697 -604699 -604711 -604727 -604729 -604733 -604753 -604759 -604781 -604787 -604801 -604811 -604819 -604823 -604829 -604837 -604859 -604861 -604867 -604883 -604907 -604931 -604939 -604949 -604957 -604973 -604997 -605009 -605021 -605023 -605039 -605051 -605069 -605071 -605113 -605117 -605123 -605147 -605167 -605173 -605177 -605191 -605221 -605233 -605237 -605239 -605249 -605257 -605261 -605309 -605323 -605329 -605333 -605347 -605369 -605393 -605401 -605411 -605413 -605443 -605471 -605477 -605497 -605503 -605509 -605531 -605533 -605543 -605551 -605573 -605593 -605597 -605599 -605603 -605609 -605617 -605629 -605639 -605641 -605687 -605707 -605719 -605779 -605789 -605809 -605837 -605849 -605861 -605867 -605873 -605879 -605887 -605893 -605909 -605921 -605933 -605947 -605953 -605977 -605987 -605993 -606017 -606029 -606031 -606037 -606041 -606049 -606059 -606077 -606079 -606083 -606091 -606113 -606121 -606131 -606173 -606181 -606223 -606241 -606247 -606251 -606299 -606301 -606311 -606313 -606323 -606341 -606379 -606383 -606413 -606433 -606443 -606449 -606493 -606497 -606503 -606521 -606527 -606539 -606559 -606569 -606581 -606587 -606589 -606607 -606643 -606649 -606653 -606659 -606673 -606721 -606731 -606733 -606737 -606743 -606757 -606791 -606811 -606829 -606833 -606839 -606847 -606857 -606863 -606899 -606913 -606919 -606943 -606959 -606961 -606967 -606971 -606997 -607001 -607003 -607007 -607037 -607043 -607049 -607063 -607067 -607081 -607091 -607093 -607097 -607109 -607127 -607129 -607147 -607151 -607153 -607157 -607163 -607181 -607199 -607213 -607219 -607249 -607253 -607261 -607301 -607303 -607307 -607309 -607319 -607331 -607337 -607339 -607349 -607357 -607363 -607417 -607421 -607423 -607471 -607493 -607517 -607531 -607549 -607573 -607583 -607619 -607627 -607667 -607669 -607681 -607697 -607703 -607721 -607723 -607727 -607741 -607769 -607813 -607819 -607823 -607837 -607843 -607861 -607883 -607889 -607909 -607921 -607931 -607933 -607939 -607951 -607961 -607967 -607991 -607993 -608011 -608029 -608033 -608087 -608089 -608099 -608117 -608123 -608129 -608131 -608147 -608161 -608177 -608191 -608207 -608213 -608269 -608273 -608297 -608299 -608303 -608339 -608347 -608357 -608359 -608369 -608371 -608383 -608389 -608393 -608401 -608411 -608423 -608429 -608431 -608459 -608471 -608483 -608497 -608519 -608521 -608527 -608581 -608591 -608593 -608609 -608611 -608633 -608653 -608659 -608669 -608677 -608693 -608701 -608737 -608743 -608749 -608759 -608767 -608789 -608819 -608831 -608843 -608851 -608857 -608863 -608873 -608887 -608897 -608899 -608903 -608941 -608947 -608953 -608977 -608987 -608989 -608999 -609043 -609047 -609067 -609071 -609079 -609101 -609107 -609113 -609143 -609149 -609163 -609173 -609179 -609199 -609209 -609221 -609227 -609233 -609241 -609253 -609269 -609277 -609283 -609289 -609307 -609313 -609337 -609359 -609361 -609373 -609379 -609391 -609397 -609403 -609407 -609421 -609437 -609443 -609461 -609487 -609503 -609509 -609517 -609527 -609533 -609541 -609571 -609589 -609593 -609599 -609601 -609607 -609613 -609617 -609619 -609641 -609673 -609683 -609701 -609709 -609743 -609751 -609757 -609779 -609781 -609803 -609809 -609821 -609859 -609877 -609887 -609907 -609911 -609913 -609923 -609929 -609979 -609989 -609991 -609997 -610031 -610063 -610081 -610123 -610157 -610163 -610187 -610193 -610199 -610217 -610219 -610229 -610243 -610271 -610279 -610289 -610301 -610327 -610331 -610339 -610391 -610409 -610417 -610429 -610439 -610447 -610457 -610469 -610501 -610523 -610541 -610543 -610553 -610559 -610567 -610579 -610583 -610619 -610633 -610639 -610651 -610661 -610667 -610681 -610699 -610703 -610721 -610733 -610739 -610741 -610763 -610781 -610783 -610787 -610801 -610817 -610823 -610829 -610837 -610843 -610847 -610849 -610867 -610877 -610879 -610891 -610913 -610919 -610921 -610933 -610957 -610969 -610993 -611011 -611027 -611033 -611057 -611069 -611071 -611081 -611101 -611111 -611113 -611131 -611137 -611147 -611189 -611207 -611213 -611257 -611263 -611279 -611293 -611297 -611323 -611333 -611389 -611393 -611411 -611419 -611441 -611449 -611453 -611459 -611467 -611483 -611497 -611531 -611543 -611549 -611551 -611557 -611561 -611587 -611603 -611621 -611641 -611657 -611671 -611693 -611707 -611729 -611753 -611791 -611801 -611803 -611827 -611833 -611837 -611839 -611873 -611879 -611887 -611903 -611921 -611927 -611939 -611951 -611953 -611957 -611969 -611977 -611993 -611999 -612011 -612023 -612037 -612041 -612043 -612049 -612061 -612067 -612071 -612083 -612107 -612109 -612113 -612133 -612137 -612149 -612169 -612173 -612181 -612193 -612217 -612223 -612229 -612259 -612263 -612301 -612307 -612317 -612319 -612331 -612341 -612349 -612371 -612373 -612377 -612383 -612401 -612407 -612439 -612481 -612497 -612511 -612553 -612583 -612589 -612611 -612613 -612637 -612643 -612649 -612671 -612679 -612713 -612719 -612727 -612737 -612751 -612763 -612791 -612797 -612809 -612811 -612817 -612823 -612841 -612847 -612853 -612869 -612877 -612889 -612923 -612929 -612947 -612967 -612971 -612977 -613007 -613009 -613013 -613049 -613061 -613097 -613099 -613141 -613153 -613163 -613169 -613177 -613181 -613189 -613199 -613213 -613219 -613229 -613231 -613243 -613247 -613253 -613267 -613279 -613289 -613297 -613337 -613357 -613363 -613367 -613381 -613421 -613427 -613439 -613441 -613447 -613451 -613463 -613469 -613471 -613493 -613499 -613507 -613523 -613549 -613559 -613573 -613577 -613597 -613607 -613609 -613633 -613637 -613651 -613661 -613667 -613673 -613699 -613733 -613741 -613747 -613759 -613763 -613807 -613813 -613817 -613829 -613841 -613849 -613861 -613883 -613889 -613903 -613957 -613967 -613969 -613981 -613993 -613999 -614041 -614051 -614063 -614071 -614093 -614101 -614113 -614129 -614143 -614147 -614153 -614167 -614177 -614179 -614183 -614219 -614267 -614279 -614291 -614293 -614297 -614321 -614333 -614377 -614387 -614413 -614417 -614437 -614477 -614483 -614503 -614527 -614531 -614543 -614561 -614563 -614569 -614609 -614611 -614617 -614623 -614633 -614639 -614657 -614659 -614671 -614683 -614687 -614693 -614701 -614717 -614729 -614741 -614743 -614749 -614753 -614759 -614773 -614827 -614843 -614849 -614851 -614863 -614881 -614893 -614909 -614917 -614927 -614963 -614981 -614983 -615019 -615031 -615047 -615053 -615067 -615101 -615103 -615107 -615137 -615151 -615161 -615187 -615229 -615233 -615253 -615259 -615269 -615289 -615299 -615313 -615337 -615341 -615343 -615367 -615379 -615389 -615401 -615403 -615413 -615427 -615431 -615437 -615449 -615473 -615479 -615491 -615493 -615497 -615509 -615521 -615539 -615557 -615577 -615599 -615607 -615617 -615623 -615661 -615677 -615679 -615709 -615721 -615731 -615739 -615743 -615749 -615751 -615761 -615767 -615773 -615793 -615799 -615821 -615827 -615829 -615833 -615869 -615883 -615887 -615907 -615919 -615941 -615949 -615971 -615997 -616003 -616027 -616051 -616069 -616073 -616079 -616103 -616111 -616117 -616129 -616139 -616141 -616153 -616157 -616169 -616171 -616181 -616207 -616211 -616219 -616223 -616229 -616243 -616261 -616277 -616289 -616307 -616313 -616321 -616327 -616361 -616367 -616387 -616391 -616393 -616409 -616411 -616433 -616439 -616459 -616463 -616481 -616489 -616501 -616507 -616513 -616519 -616523 -616529 -616537 -616547 -616579 -616589 -616597 -616639 -616643 -616669 -616673 -616703 -616717 -616723 -616729 -616741 -616757 -616769 -616783 -616787 -616789 -616793 -616799 -616829 -616841 -616843 -616849 -616871 -616877 -616897 -616909 -616933 -616943 -616951 -616961 -616991 -616997 -616999 -617011 -617027 -617039 -617051 -617053 -617059 -617077 -617087 -617107 -617119 -617129 -617131 -617147 -617153 -617161 -617189 -617191 -617231 -617233 -617237 -617249 -617257 -617269 -617273 -617293 -617311 -617327 -617333 -617339 -617341 -617359 -617363 -617369 -617387 -617401 -617411 -617429 -617447 -617453 -617467 -617471 -617473 -617479 -617509 -617521 -617531 -617537 -617579 -617587 -617647 -617651 -617657 -617677 -617681 -617689 -617693 -617699 -617707 -617717 -617719 -617723 -617731 -617759 -617761 -617767 -617777 -617791 -617801 -617809 -617819 -617843 -617857 -617873 -617879 -617887 -617917 -617951 -617959 -617963 -617971 -617983 -618029 -618031 -618041 -618049 -618053 -618083 -618119 -618131 -618161 -618173 -618199 -618227 -618229 -618253 -618257 -618269 -618271 -618287 -618301 -618311 -618323 -618329 -618337 -618347 -618349 -618361 -618377 -618407 -618413 -618421 -618437 -618439 -618463 -618509 -618521 -618547 -618559 -618571 -618577 -618581 -618587 -618589 -618593 -618619 -618637 -618643 -618671 -618679 -618703 -618707 -618719 -618799 -618823 -618833 -618841 -618847 -618857 -618859 -618869 -618883 -618913 -618929 -618941 -618971 -618979 -618991 -618997 -619007 -619009 -619019 -619027 -619033 -619057 -619061 -619067 -619079 -619111 -619117 -619139 -619159 -619169 -619181 -619187 -619189 -619207 -619247 -619253 -619261 -619273 -619277 -619279 -619303 -619309 -619313 -619331 -619363 -619373 -619391 -619397 -619471 -619477 -619511 -619537 -619543 -619561 -619573 -619583 -619589 -619603 -619607 -619613 -619621 -619657 -619669 -619681 -619687 -619693 -619711 -619739 -619741 -619753 -619763 -619771 -619793 -619807 -619811 -619813 -619819 -619831 -619841 -619849 -619867 -619897 -619909 -619921 -619967 -619979 -619981 -619987 -619999 -620003 -620029 -620033 -620051 -620099 -620111 -620117 -620159 -620161 -620171 -620183 -620197 -620201 -620227 -620233 -620237 -620239 -620251 -620261 -620297 -620303 -620311 -620317 -620329 -620351 -620359 -620363 -620377 -620383 -620393 -620401 -620413 -620429 -620437 -620441 -620461 -620467 -620491 -620507 -620519 -620531 -620549 -620561 -620567 -620569 -620579 -620603 -620623 -620639 -620647 -620657 -620663 -620671 -620689 -620693 -620717 -620731 -620743 -620759 -620771 -620773 -620777 -620813 -620821 -620827 -620831 -620849 -620869 -620887 -620909 -620911 -620929 -620933 -620947 -620957 -620981 -620999 -621007 -621013 -621017 -621029 -621031 -621043 -621059 -621083 -621097 -621113 -621133 -621139 -621143 -621217 -621223 -621227 -621239 -621241 -621259 -621289 -621301 -621317 -621337 -621343 -621347 -621353 -621359 -621371 -621389 -621419 -621427 -621431 -621443 -621451 -621461 -621473 -621521 -621527 -621541 -621583 -621611 -621617 -621619 -621629 -621631 -621641 -621671 -621679 -621697 -621701 -621703 -621721 -621739 -621749 -621757 -621769 -621779 -621799 -621821 -621833 -621869 -621871 -621883 -621893 -621913 -621923 -621937 -621941 -621983 -621997 -622009 -622019 -622043 -622049 -622051 -622067 -622073 -622091 -622103 -622109 -622123 -622129 -622133 -622151 -622157 -622159 -622177 -622187 -622189 -622241 -622243 -622247 -622249 -622277 -622301 -622313 -622331 -622333 -622337 -622351 -622367 -622397 -622399 -622423 -622477 -622481 -622483 -622493 -622513 -622519 -622529 -622547 -622549 -622561 -622571 -622577 -622603 -622607 -622613 -622619 -622621 -622637 -622639 -622663 -622669 -622709 -622723 -622729 -622751 -622777 -622781 -622793 -622813 -622849 -622861 -622879 -622889 -622901 -622927 -622943 -622957 -622967 -622987 -622997 -623003 -623009 -623017 -623023 -623041 -623057 -623059 -623071 -623107 -623171 -623209 -623221 -623261 -623263 -623269 -623279 -623281 -623291 -623299 -623303 -623321 -623327 -623341 -623351 -623353 -623383 -623387 -623393 -623401 -623417 -623423 -623431 -623437 -623477 -623521 -623531 -623537 -623563 -623591 -623617 -623621 -623633 -623641 -623653 -623669 -623671 -623677 -623681 -623683 -623699 -623717 -623719 -623723 -623729 -623743 -623759 -623767 -623771 -623803 -623839 -623851 -623867 -623869 -623879 -623881 -623893 -623923 -623929 -623933 -623947 -623957 -623963 -623977 -623983 -623989 -624007 -624031 -624037 -624047 -624049 -624067 -624089 -624097 -624119 -624133 -624139 -624149 -624163 -624191 -624199 -624203 -624209 -624229 -624233 -624241 -624251 -624259 -624271 -624277 -624311 -624313 -624319 -624329 -624331 -624347 -624391 -624401 -624419 -624443 -624451 -624467 -624469 -624479 -624487 -624497 -624509 -624517 -624521 -624539 -624541 -624577 -624593 -624599 -624601 -624607 -624643 -624649 -624667 -624683 -624707 -624709 -624721 -624727 -624731 -624737 -624763 -624769 -624787 -624791 -624797 -624803 -624809 -624829 -624839 -624847 -624851 -624859 -624917 -624961 -624973 -624977 -624983 -624997 -625007 -625033 -625057 -625063 -625087 -625103 -625109 -625111 -625129 -625133 -625169 -625171 -625181 -625187 -625199 -625213 -625231 -625237 -625253 -625267 -625279 -625283 -625307 -625319 -625343 -625351 -625367 -625369 -625397 -625409 -625451 -625477 -625483 -625489 -625507 -625517 -625529 -625543 -625589 -625591 -625609 -625621 -625627 -625631 -625637 -625643 -625657 -625661 -625663 -625697 -625699 -625763 -625777 -625789 -625811 -625819 -625831 -625837 -625861 -625871 -625883 -625909 -625913 -625927 -625939 -625943 -625969 -625979 -625997 -626009 -626011 -626033 -626051 -626063 -626113 -626117 -626147 -626159 -626173 -626177 -626189 -626191 -626201 -626207 -626239 -626251 -626261 -626317 -626323 -626333 -626341 -626347 -626363 -626377 -626389 -626393 -626443 -626477 -626489 -626519 -626533 -626539 -626581 -626597 -626599 -626609 -626611 -626617 -626621 -626623 -626627 -626629 -626663 -626683 -626687 -626693 -626701 -626711 -626713 -626723 -626741 -626749 -626761 -626771 -626783 -626797 -626809 -626833 -626837 -626861 -626887 -626917 -626921 -626929 -626947 -626953 -626959 -626963 -626987 -627017 -627041 -627059 -627071 -627073 -627083 -627089 -627091 -627101 -627119 -627131 -627139 -627163 -627169 -627191 -627197 -627217 -627227 -627251 -627257 -627269 -627271 -627293 -627301 -627329 -627349 -627353 -627377 -627379 -627383 -627391 -627433 -627449 -627479 -627481 -627491 -627511 -627541 -627547 -627559 -627593 -627611 -627617 -627619 -627637 -627643 -627659 -627661 -627667 -627673 -627709 -627721 -627733 -627749 -627773 -627787 -627791 -627797 -627799 -627811 -627841 -627859 -627901 -627911 -627919 -627943 -627947 -627953 -627961 -627973 -628013 -628021 -628037 -628049 -628051 -628057 -628063 -628093 -628097 -628127 -628139 -628171 -628183 -628189 -628193 -628207 -628213 -628217 -628219 -628231 -628261 -628267 -628289 -628301 -628319 -628357 -628363 -628373 -628379 -628391 -628399 -628423 -628427 -628447 -628477 -628487 -628493 -628499 -628547 -628561 -628583 -628591 -628651 -628673 -628679 -628681 -628687 -628699 -628709 -628721 -628753 -628757 -628759 -628781 -628783 -628787 -628799 -628801 -628811 -628819 -628841 -628861 -628877 -628909 -628913 -628921 -628937 -628939 -628973 -628993 -628997 -629003 -629009 -629011 -629023 -629029 -629059 -629081 -629113 -629137 -629143 -629171 -629177 -629203 -629243 -629249 -629263 -629281 -629311 -629339 -629341 -629351 -629371 -629381 -629383 -629401 -629411 -629417 -629429 -629449 -629467 -629483 -629491 -629509 -629513 -629537 -629567 -629569 -629591 -629593 -629609 -629611 -629617 -629623 -629653 -629683 -629687 -629689 -629701 -629711 -629723 -629737 -629743 -629747 -629767 -629773 -629779 -629803 -629807 -629819 -629843 -629857 -629861 -629873 -629891 -629897 -629899 -629903 -629921 -629927 -629929 -629939 -629963 -629977 -629987 -629989 -630017 -630023 -630029 -630043 -630067 -630101 -630107 -630127 -630151 -630163 -630167 -630169 -630181 -630193 -630197 -630229 -630247 -630263 -630281 -630299 -630307 -630319 -630349 -630353 -630391 -630433 -630451 -630467 -630473 -630481 -630493 -630521 -630523 -630529 -630559 -630577 -630583 -630587 -630589 -630593 -630607 -630613 -630659 -630677 -630689 -630701 -630709 -630713 -630719 -630733 -630737 -630797 -630803 -630823 -630827 -630841 -630863 -630871 -630893 -630899 -630901 -630907 -630911 -630919 -630941 -630967 -630997 -631003 -631013 -631039 -631061 -631121 -631133 -631139 -631151 -631153 -631157 -631171 -631181 -631187 -631223 -631229 -631247 -631249 -631259 -631271 -631273 -631291 -631307 -631339 -631357 -631361 -631387 -631391 -631399 -631409 -631429 -631453 -631457 -631459 -631469 -631471 -631483 -631487 -631507 -631513 -631529 -631531 -631537 -631549 -631559 -631573 -631577 -631583 -631597 -631613 -631619 -631643 -631667 -631679 -631681 -631711 -631717 -631723 -631733 -631739 -631751 -631753 -631789 -631817 -631819 -631843 -631847 -631853 -631859 -631861 -631867 -631889 -631901 -631903 -631913 -631927 -631931 -631937 -631979 -631987 -631991 -631993 -632029 -632041 -632053 -632081 -632083 -632087 -632089 -632101 -632117 -632123 -632141 -632147 -632153 -632189 -632209 -632221 -632227 -632231 -632251 -632257 -632267 -632273 -632297 -632299 -632321 -632323 -632327 -632329 -632347 -632351 -632353 -632363 -632371 -632381 -632389 -632393 -632447 -632459 -632473 -632483 -632497 -632501 -632503 -632521 -632557 -632561 -632591 -632609 -632623 -632627 -632629 -632647 -632669 -632677 -632683 -632699 -632713 -632717 -632743 -632747 -632773 -632777 -632813 -632839 -632843 -632851 -632857 -632881 -632897 -632911 -632923 -632939 -632941 -632971 -632977 -632987 -632993 -633001 -633013 -633037 -633053 -633067 -633079 -633091 -633133 -633151 -633161 -633187 -633197 -633209 -633221 -633253 -633257 -633263 -633271 -633287 -633307 -633317 -633337 -633359 -633377 -633379 -633383 -633401 -633407 -633427 -633449 -633461 -633463 -633467 -633469 -633473 -633487 -633497 -633559 -633569 -633571 -633583 -633599 -633613 -633623 -633629 -633649 -633653 -633667 -633739 -633751 -633757 -633767 -633781 -633791 -633793 -633797 -633799 -633803 -633823 -633833 -633877 -633883 -633923 -633931 -633937 -633943 -633953 -633961 -633967 -633991 -634003 -634013 -634031 -634061 -634079 -634091 -634097 -634103 -634141 -634157 -634159 -634169 -634177 -634181 -634187 -634199 -634211 -634223 -634237 -634241 -634247 -634261 -634267 -634273 -634279 -634301 -634307 -634313 -634327 -634331 -634343 -634367 -634373 -634397 -634421 -634441 -634471 -634483 -634493 -634499 -634511 -634519 -634523 -634531 -634541 -634567 -634573 -634577 -634597 -634603 -634609 -634643 -634649 -634651 -634679 -634681 -634687 -634703 -634709 -634717 -634727 -634741 -634747 -634757 -634759 -634793 -634807 -634817 -634841 -634853 -634859 -634861 -634871 -634891 -634901 -634903 -634927 -634937 -634939 -634943 -634969 -634979 -635003 -635021 -635039 -635051 -635057 -635087 -635119 -635147 -635149 -635197 -635203 -635207 -635249 -635251 -635263 -635267 -635279 -635287 -635291 -635293 -635309 -635317 -635333 -635339 -635347 -635351 -635353 -635359 -635363 -635387 -635389 -635413 -635423 -635431 -635441 -635449 -635461 -635471 -635483 -635507 -635519 -635527 -635533 -635563 -635567 -635599 -635603 -635617 -635639 -635653 -635659 -635689 -635707 -635711 -635729 -635731 -635737 -635777 -635801 -635809 -635813 -635821 -635837 -635849 -635867 -635879 -635891 -635893 -635909 -635917 -635923 -635939 -635959 -635969 -635977 -635981 -635983 -635989 -636017 -636023 -636043 -636059 -636061 -636071 -636073 -636107 -636109 -636133 -636137 -636149 -636193 -636211 -636217 -636241 -636247 -636257 -636263 -636277 -636283 -636287 -636301 -636313 -636319 -636331 -636343 -636353 -636359 -636403 -636407 -636409 -636421 -636469 -636473 -636499 -636533 -636539 -636541 -636547 -636553 -636563 -636569 -636613 -636619 -636631 -636653 -636673 -636697 -636719 -636721 -636731 -636739 -636749 -636761 -636763 -636773 -636781 -636809 -636817 -636821 -636829 -636851 -636863 -636877 -636917 -636919 -636931 -636947 -636953 -636967 -636983 -636997 -637001 -637003 -637067 -637073 -637079 -637097 -637129 -637139 -637157 -637163 -637171 -637199 -637201 -637229 -637243 -637271 -637277 -637283 -637291 -637297 -637309 -637319 -637321 -637327 -637337 -637339 -637349 -637369 -637379 -637409 -637421 -637423 -637447 -637459 -637463 -637471 -637489 -637499 -637513 -637519 -637529 -637531 -637543 -637573 -637597 -637601 -637603 -637607 -637627 -637657 -637669 -637691 -637699 -637709 -637711 -637717 -637723 -637727 -637729 -637751 -637771 -637781 -637783 -637787 -637817 -637829 -637831 -637841 -637873 -637883 -637909 -637933 -637937 -637939 -638023 -638047 -638051 -638059 -638063 -638081 -638117 -638123 -638147 -638159 -638161 -638171 -638177 -638179 -638201 -638233 -638263 -638269 -638303 -638317 -638327 -638347 -638359 -638371 -638423 -638431 -638437 -638453 -638459 -638467 -638489 -638501 -638527 -638567 -638581 -638587 -638621 -638629 -638633 -638663 -638669 -638689 -638699 -638717 -638719 -638767 -638801 -638819 -638839 -638857 -638861 -638893 -638923 -638933 -638959 -638971 -638977 -638993 -638999 -639007 -639011 -639043 -639049 -639053 -639083 -639091 -639137 -639143 -639151 -639157 -639167 -639169 -639181 -639211 -639253 -639257 -639259 -639263 -639269 -639299 -639307 -639311 -639329 -639337 -639361 -639371 -639391 -639433 -639439 -639451 -639487 -639491 -639493 -639511 -639517 -639533 -639547 -639563 -639571 -639577 -639589 -639599 -639601 -639631 -639637 -639647 -639671 -639677 -639679 -639689 -639697 -639701 -639703 -639713 -639719 -639731 -639739 -639757 -639833 -639839 -639851 -639853 -639857 -639907 -639911 -639937 -639941 -639949 -639959 -639983 -639997 -640007 -640009 -640019 -640027 -640039 -640043 -640049 -640061 -640069 -640099 -640109 -640121 -640127 -640139 -640151 -640153 -640163 -640193 -640219 -640223 -640229 -640231 -640247 -640249 -640259 -640261 -640267 -640279 -640303 -640307 -640333 -640363 -640369 -640411 -640421 -640457 -640463 -640477 -640483 -640499 -640529 -640531 -640579 -640583 -640589 -640613 -640621 -640631 -640649 -640663 -640667 -640669 -640687 -640691 -640727 -640733 -640741 -640771 -640777 -640793 -640837 -640847 -640853 -640859 -640873 -640891 -640901 -640907 -640919 -640933 -640943 -640949 -640957 -640963 -640967 -640973 -640993 -641051 -641057 -641077 -641083 -641089 -641093 -641101 -641129 -641131 -641143 -641167 -641197 -641203 -641213 -641227 -641239 -641261 -641279 -641287 -641299 -641317 -641327 -641371 -641387 -641411 -641413 -641419 -641437 -641441 -641453 -641467 -641471 -641479 -641491 -641513 -641519 -641521 -641549 -641551 -641579 -641581 -641623 -641633 -641639 -641681 -641701 -641713 -641747 -641749 -641761 -641789 -641791 -641803 -641813 -641819 -641821 -641827 -641833 -641843 -641863 -641867 -641873 -641881 -641891 -641897 -641909 -641923 -641929 -641959 -641969 -641981 -642011 -642013 -642049 -642071 -642077 -642079 -642113 -642121 -642133 -642149 -642151 -642157 -642163 -642197 -642199 -642211 -642217 -642223 -642233 -642241 -642247 -642253 -642281 -642359 -642361 -642373 -642403 -642407 -642419 -642427 -642457 -642487 -642517 -642527 -642529 -642533 -642547 -642557 -642563 -642581 -642613 -642623 -642673 -642683 -642701 -642737 -642739 -642769 -642779 -642791 -642797 -642799 -642809 -642833 -642853 -642869 -642871 -642877 -642881 -642899 -642907 -642931 -642937 -642947 -642953 -642973 -642977 -642997 -643009 -643021 -643031 -643039 -643043 -643051 -643061 -643073 -643081 -643087 -643099 -643121 -643129 -643183 -643187 -643199 -643213 -643217 -643231 -643243 -643273 -643301 -643303 -643369 -643373 -643403 -643421 -643429 -643439 -643453 -643457 -643463 -643469 -643493 -643507 -643523 -643547 -643553 -643567 -643583 -643589 -643619 -643633 -643639 -643649 -643651 -643661 -643681 -643691 -643693 -643697 -643703 -643723 -643729 -643751 -643781 -643847 -643849 -643859 -643873 -643879 -643883 -643889 -643919 -643927 -643949 -643957 -643961 -643969 -643991 -644009 -644029 -644047 -644051 -644053 -644057 -644089 -644101 -644107 -644117 -644123 -644129 -644131 -644141 -644143 -644153 -644159 -644173 -644191 -644197 -644201 -644227 -644239 -644257 -644261 -644291 -644297 -644327 -644341 -644353 -644359 -644363 -644377 -644381 -644383 -644401 -644411 -644431 -644443 -644447 -644489 -644491 -644507 -644513 -644519 -644531 -644549 -644557 -644563 -644569 -644593 -644597 -644599 -644617 -644629 -644647 -644653 -644669 -644671 -644687 -644701 -644717 -644729 -644731 -644747 -644753 -644767 -644783 -644789 -644797 -644801 -644837 -644843 -644857 -644863 -644867 -644869 -644881 -644899 -644909 -644911 -644923 -644933 -644951 -644977 -644999 -645011 -645013 -645019 -645023 -645037 -645041 -645049 -645067 -645077 -645083 -645091 -645097 -645131 -645137 -645149 -645179 -645187 -645233 -645257 -645313 -645329 -645347 -645353 -645367 -645383 -645397 -645409 -645419 -645431 -645433 -645443 -645467 -645481 -645493 -645497 -645499 -645503 -645521 -645527 -645529 -645571 -645577 -645581 -645583 -645599 -645611 -645629 -645641 -645647 -645649 -645661 -645683 -645691 -645703 -645713 -645727 -645737 -645739 -645751 -645763 -645787 -645803 -645833 -645839 -645851 -645857 -645877 -645889 -645893 -645901 -645907 -645937 -645941 -645973 -645979 -646003 -646013 -646027 -646039 -646067 -646073 -646099 -646103 -646147 -646157 -646159 -646169 -646181 -646183 -646189 -646193 -646199 -646237 -646253 -646259 -646267 -646271 -646273 -646291 -646301 -646307 -646309 -646339 -646379 -646397 -646403 -646411 -646421 -646423 -646433 -646453 -646519 -646523 -646537 -646543 -646549 -646571 -646573 -646577 -646609 -646619 -646631 -646637 -646643 -646669 -646687 -646721 -646757 -646771 -646781 -646823 -646831 -646837 -646843 -646859 -646873 -646879 -646883 -646889 -646897 -646909 -646913 -646927 -646937 -646957 -646979 -646981 -646991 -646993 -647011 -647033 -647039 -647047 -647057 -647069 -647081 -647099 -647111 -647113 -647117 -647131 -647147 -647161 -647189 -647201 -647209 -647219 -647261 -647263 -647293 -647303 -647321 -647327 -647333 -647341 -647357 -647359 -647363 -647371 -647399 -647401 -647417 -647429 -647441 -647453 -647477 -647489 -647503 -647509 -647527 -647531 -647551 -647557 -647579 -647587 -647593 -647609 -647617 -647627 -647641 -647651 -647659 -647663 -647687 -647693 -647719 -647723 -647741 -647743 -647747 -647753 -647771 -647783 -647789 -647809 -647821 -647837 -647839 -647851 -647861 -647891 -647893 -647909 -647917 -647951 -647953 -647963 -647987 -648007 -648019 -648029 -648041 -648047 -648059 -648061 -648073 -648079 -648097 -648101 -648107 -648119 -648133 -648173 -648181 -648191 -648199 -648211 -648217 -648229 -648239 -648257 -648259 -648269 -648283 -648289 -648293 -648317 -648331 -648341 -648343 -648371 -648377 -648379 -648383 -648391 -648433 -648437 -648449 -648481 -648509 -648563 -648607 -648617 -648619 -648629 -648631 -648649 -648653 -648671 -648677 -648689 -648709 -648719 -648731 -648763 -648779 -648803 -648841 -648859 -648863 -648871 -648887 -648889 -648911 -648917 -648931 -648937 -648953 -648961 -648971 -648997 -649001 -649007 -649039 -649063 -649069 -649073 -649079 -649081 -649087 -649093 -649123 -649141 -649147 -649151 -649157 -649183 -649217 -649261 -649273 -649277 -649279 -649283 -649291 -649307 -649321 -649361 -649379 -649381 -649403 -649421 -649423 -649427 -649457 -649469 -649471 -649483 -649487 -649499 -649501 -649507 -649511 -649529 -649541 -649559 -649567 -649573 -649577 -649613 -649619 -649631 -649633 -649639 -649643 -649651 -649657 -649661 -649697 -649709 -649717 -649739 -649751 -649769 -649771 -649777 -649783 -649787 -649793 -649799 -649801 -649813 -649829 -649843 -649849 -649867 -649871 -649877 -649879 -649897 -649907 -649921 -649937 -649969 -649981 -649991 -650011 -650017 -650059 -650071 -650081 -650099 -650107 -650179 -650183 -650189 -650213 -650227 -650261 -650269 -650281 -650291 -650317 -650327 -650329 -650347 -650359 -650387 -650401 -650413 -650449 -650477 -650479 -650483 -650519 -650537 -650543 -650549 -650563 -650567 -650581 -650591 -650599 -650609 -650623 -650627 -650669 -650701 -650759 -650761 -650779 -650813 -650821 -650827 -650833 -650851 -650861 -650863 -650869 -650873 -650911 -650917 -650927 -650933 -650953 -650971 -650987 -651017 -651019 -651029 -651043 -651067 -651071 -651097 -651103 -651109 -651127 -651139 -651143 -651169 -651179 -651181 -651191 -651193 -651221 -651223 -651239 -651247 -651251 -651257 -651271 -651281 -651289 -651293 -651323 -651331 -651347 -651361 -651397 -651401 -651437 -651439 -651461 -651473 -651481 -651487 -651503 -651509 -651517 -651587 -651617 -651641 -651647 -651649 -651667 -651683 -651689 -651697 -651727 -651731 -651733 -651767 -651769 -651793 -651803 -651809 -651811 -651821 -651839 -651841 -651853 -651857 -651863 -651869 -651877 -651881 -651901 -651913 -651943 -651971 -651997 -652019 -652033 -652039 -652063 -652079 -652081 -652087 -652117 -652121 -652153 -652189 -652207 -652217 -652229 -652237 -652241 -652243 -652261 -652279 -652283 -652291 -652319 -652321 -652331 -652339 -652343 -652357 -652361 -652369 -652373 -652381 -652411 -652417 -652429 -652447 -652451 -652453 -652493 -652499 -652507 -652541 -652543 -652549 -652559 -652567 -652573 -652577 -652591 -652601 -652607 -652609 -652621 -652627 -652651 -652657 -652667 -652699 -652723 -652727 -652733 -652739 -652741 -652747 -652753 -652759 -652787 -652811 -652831 -652837 -652849 -652853 -652871 -652903 -652909 -652913 -652921 -652931 -652933 -652937 -652943 -652957 -652969 -652991 -652997 -652999 -653033 -653057 -653083 -653111 -653113 -653117 -653143 -653153 -653197 -653203 -653207 -653209 -653243 -653267 -653273 -653281 -653311 -653321 -653339 -653357 -653363 -653431 -653461 -653473 -653491 -653501 -653503 -653507 -653519 -653537 -653539 -653561 -653563 -653579 -653593 -653617 -653621 -653623 -653641 -653647 -653651 -653659 -653687 -653693 -653707 -653711 -653713 -653743 -653749 -653761 -653777 -653789 -653797 -653801 -653819 -653831 -653879 -653881 -653893 -653899 -653903 -653927 -653929 -653941 -653951 -653963 -653969 -653977 -653993 -654001 -654011 -654019 -654023 -654029 -654047 -654053 -654067 -654089 -654107 -654127 -654149 -654161 -654163 -654167 -654169 -654187 -654191 -654209 -654221 -654223 -654229 -654233 -654257 -654293 -654301 -654307 -654323 -654343 -654349 -654371 -654397 -654413 -654421 -654427 -654439 -654491 -654499 -654509 -654527 -654529 -654539 -654541 -654553 -654571 -654587 -654593 -654601 -654611 -654613 -654623 -654629 -654671 -654679 -654697 -654701 -654727 -654739 -654743 -654749 -654767 -654779 -654781 -654799 -654803 -654817 -654821 -654827 -654839 -654853 -654877 -654889 -654917 -654923 -654931 -654943 -654967 -654991 -655001 -655003 -655013 -655021 -655033 -655037 -655043 -655069 -655087 -655103 -655111 -655121 -655157 -655181 -655211 -655219 -655223 -655229 -655241 -655243 -655261 -655267 -655273 -655283 -655289 -655301 -655331 -655337 -655351 -655357 -655373 -655379 -655387 -655399 -655439 -655453 -655471 -655489 -655507 -655511 -655517 -655531 -655541 -655547 -655559 -655561 -655579 -655583 -655597 -655601 -655637 -655643 -655649 -655651 -655657 -655687 -655693 -655717 -655723 -655727 -655757 -655807 -655847 -655849 -655859 -655883 -655901 -655909 -655913 -655927 -655943 -655961 -655987 -656023 -656039 -656063 -656077 -656113 -656119 -656129 -656141 -656147 -656153 -656171 -656221 -656237 -656263 -656267 -656273 -656291 -656297 -656303 -656311 -656321 -656323 -656329 -656333 -656347 -656371 -656377 -656389 -656407 -656423 -656429 -656459 -656471 -656479 -656483 -656519 -656527 -656561 -656587 -656597 -656599 -656603 -656609 -656651 -656657 -656671 -656681 -656683 -656687 -656701 -656707 -656737 -656741 -656749 -656753 -656771 -656783 -656791 -656809 -656819 -656833 -656839 -656891 -656917 -656923 -656939 -656951 -656959 -656977 -656989 -656993 -657017 -657029 -657047 -657049 -657061 -657071 -657079 -657089 -657091 -657113 -657121 -657127 -657131 -657187 -657193 -657197 -657233 -657257 -657269 -657281 -657289 -657299 -657311 -657313 -657323 -657347 -657361 -657383 -657403 -657413 -657431 -657439 -657451 -657469 -657473 -657491 -657493 -657497 -657499 -657523 -657529 -657539 -657557 -657581 -657583 -657589 -657607 -657617 -657649 -657653 -657659 -657661 -657703 -657707 -657719 -657743 -657779 -657793 -657809 -657827 -657841 -657863 -657893 -657911 -657929 -657931 -657947 -657959 -657973 -657983 -658001 -658043 -658051 -658057 -658069 -658079 -658111 -658117 -658123 -658127 -658139 -658153 -658159 -658169 -658187 -658199 -658211 -658219 -658247 -658253 -658261 -658277 -658279 -658303 -658309 -658319 -658321 -658327 -658349 -658351 -658367 -658379 -658391 -658403 -658417 -658433 -658447 -658453 -658477 -658487 -658507 -658547 -658549 -658573 -658579 -658589 -658591 -658601 -658607 -658613 -658633 -658639 -658643 -658649 -658663 -658681 -658703 -658751 -658753 -658783 -658807 -658817 -658831 -658837 -658841 -658871 -658873 -658883 -658897 -658907 -658913 -658919 -658943 -658961 -658963 -658969 -658979 -658991 -658997 -659011 -659023 -659047 -659059 -659063 -659069 -659077 -659101 -659137 -659159 -659171 -659173 -659177 -659189 -659221 -659231 -659237 -659251 -659279 -659299 -659317 -659327 -659333 -659353 -659371 -659419 -659423 -659437 -659453 -659467 -659473 -659497 -659501 -659513 -659521 -659531 -659539 -659563 -659569 -659591 -659597 -659609 -659611 -659621 -659629 -659639 -659653 -659657 -659669 -659671 -659689 -659693 -659713 -659723 -659741 -659759 -659761 -659783 -659819 -659831 -659843 -659849 -659863 -659873 -659881 -659899 -659917 -659941 -659947 -659951 -659963 -659983 -659999 -660001 -660013 -660029 -660047 -660053 -660061 -660067 -660071 -660073 -660097 -660103 -660119 -660131 -660137 -660157 -660167 -660181 -660197 -660199 -660217 -660227 -660241 -660251 -660271 -660277 -660281 -660299 -660329 -660337 -660347 -660349 -660367 -660377 -660379 -660391 -660403 -660409 -660449 -660493 -660503 -660509 -660521 -660529 -660547 -660557 -660559 -660563 -660589 -660593 -660599 -660601 -660607 -660617 -660619 -660643 -660659 -660661 -660683 -660719 -660727 -660731 -660733 -660757 -660769 -660787 -660791 -660799 -660809 -660811 -660817 -660833 -660851 -660853 -660887 -660893 -660899 -660901 -660917 -660923 -660941 -660949 -660973 -660983 -661009 -661019 -661027 -661049 -661061 -661091 -661093 -661097 -661099 -661103 -661109 -661117 -661121 -661139 -661183 -661187 -661189 -661201 -661217 -661231 -661237 -661253 -661259 -661267 -661321 -661327 -661343 -661361 -661373 -661393 -661417 -661421 -661439 -661459 -661477 -661481 -661483 -661513 -661517 -661541 -661547 -661553 -661603 -661607 -661613 -661621 -661663 -661673 -661679 -661697 -661721 -661741 -661769 -661777 -661823 -661849 -661873 -661877 -661879 -661883 -661889 -661897 -661909 -661931 -661939 -661949 -661951 -661961 -661987 -661993 -662003 -662021 -662029 -662047 -662059 -662063 -662083 -662107 -662111 -662141 -662143 -662149 -662177 -662203 -662227 -662231 -662251 -662261 -662267 -662281 -662287 -662309 -662323 -662327 -662339 -662351 -662353 -662357 -662369 -662401 -662407 -662443 -662449 -662477 -662483 -662491 -662513 -662527 -662531 -662537 -662539 -662551 -662567 -662591 -662617 -662639 -662647 -662657 -662671 -662681 -662689 -662693 -662713 -662719 -662743 -662771 -662773 -662789 -662797 -662819 -662833 -662839 -662843 -662867 -662897 -662899 -662917 -662939 -662941 -662947 -662951 -662953 -662957 -662999 -663001 -663007 -663031 -663037 -663049 -663053 -663071 -663097 -663127 -663149 -663161 -663163 -663167 -663191 -663203 -663209 -663239 -663241 -663263 -663269 -663281 -663283 -663301 -663319 -663331 -663349 -663359 -663371 -663407 -663409 -663437 -663463 -663517 -663529 -663539 -663541 -663547 -663557 -663563 -663569 -663571 -663581 -663583 -663587 -663589 -663599 -663601 -663631 -663653 -663659 -663661 -663683 -663709 -663713 -663737 -663763 -663787 -663797 -663821 -663823 -663827 -663853 -663857 -663869 -663881 -663893 -663907 -663937 -663959 -663961 -663967 -663973 -663977 -663979 -663983 -663991 -663997 -664009 -664019 -664043 -664061 -664067 -664091 -664099 -664109 -664117 -664121 -664123 -664133 -664141 -664151 -664177 -664193 -664199 -664211 -664243 -664253 -664271 -664273 -664289 -664319 -664331 -664357 -664369 -664379 -664381 -664403 -664421 -664427 -664441 -664459 -664471 -664507 -664511 -664529 -664537 -664549 -664561 -664571 -664579 -664583 -664589 -664597 -664603 -664613 -664619 -664621 -664633 -664661 -664663 -664667 -664669 -664679 -664687 -664691 -664693 -664711 -664739 -664757 -664771 -664777 -664789 -664793 -664799 -664843 -664847 -664849 -664879 -664891 -664933 -664949 -664967 -664973 -664997 -665011 -665017 -665029 -665039 -665047 -665051 -665053 -665069 -665089 -665111 -665113 -665117 -665123 -665131 -665141 -665153 -665177 -665179 -665201 -665207 -665213 -665221 -665233 -665239 -665251 -665267 -665279 -665293 -665299 -665303 -665311 -665351 -665359 -665369 -665381 -665387 -665419 -665429 -665447 -665479 -665501 -665503 -665507 -665527 -665549 -665557 -665563 -665569 -665573 -665591 -665603 -665617 -665629 -665633 -665659 -665677 -665713 -665719 -665723 -665747 -665761 -665773 -665783 -665789 -665801 -665803 -665813 -665843 -665857 -665897 -665921 -665923 -665947 -665953 -665981 -665983 -665993 -666013 -666019 -666023 -666031 -666041 -666067 -666073 -666079 -666089 -666091 -666109 -666119 -666139 -666143 -666167 -666173 -666187 -666191 -666203 -666229 -666233 -666269 -666277 -666301 -666329 -666353 -666403 -666427 -666431 -666433 -666437 -666439 -666461 -666467 -666493 -666511 -666527 -666529 -666541 -666557 -666559 -666599 -666607 -666637 -666643 -666647 -666649 -666667 -666671 -666683 -666697 -666707 -666727 -666733 -666737 -666749 -666751 -666769 -666773 -666811 -666821 -666823 -666829 -666857 -666871 -666889 -666901 -666929 -666937 -666959 -666979 -666983 -666989 -667013 -667019 -667021 -667081 -667091 -667103 -667123 -667127 -667129 -667141 -667171 -667181 -667211 -667229 -667241 -667243 -667273 -667283 -667309 -667321 -667333 -667351 -667361 -667363 -667367 -667379 -667417 -667421 -667423 -667427 -667441 -667463 -667477 -667487 -667501 -667507 -667519 -667531 -667547 -667549 -667553 -667559 -667561 -667577 -667631 -667643 -667649 -667657 -667673 -667687 -667691 -667697 -667699 -667727 -667741 -667753 -667769 -667781 -667801 -667817 -667819 -667829 -667837 -667859 -667861 -667867 -667883 -667903 -667921 -667949 -667963 -667987 -667991 -667999 -668009 -668029 -668033 -668047 -668051 -668069 -668089 -668093 -668111 -668141 -668153 -668159 -668179 -668201 -668203 -668209 -668221 -668243 -668273 -668303 -668347 -668407 -668417 -668471 -668509 -668513 -668527 -668531 -668533 -668539 -668543 -668567 -668579 -668581 -668599 -668609 -668611 -668617 -668623 -668671 -668677 -668687 -668699 -668713 -668719 -668737 -668741 -668747 -668761 -668791 -668803 -668813 -668821 -668851 -668867 -668869 -668873 -668879 -668903 -668929 -668939 -668947 -668959 -668963 -668989 -668999 -669023 -669029 -669049 -669077 -669089 -669091 -669107 -669113 -669121 -669127 -669133 -669167 -669173 -669181 -669241 -669247 -669271 -669283 -669287 -669289 -669301 -669311 -669329 -669359 -669371 -669377 -669379 -669391 -669401 -669413 -669419 -669433 -669437 -669451 -669463 -669479 -669481 -669527 -669551 -669577 -669607 -669611 -669637 -669649 -669659 -669661 -669667 -669673 -669677 -669679 -669689 -669701 -669707 -669733 -669763 -669787 -669791 -669839 -669847 -669853 -669857 -669859 -669863 -669869 -669887 -669901 -669913 -669923 -669931 -669937 -669943 -669947 -669971 -669989 -670001 -670031 -670037 -670039 -670049 -670051 -670097 -670099 -670129 -670139 -670147 -670177 -670193 -670199 -670211 -670217 -670223 -670231 -670237 -670249 -670261 -670279 -670297 -670303 -670321 -670333 -670343 -670349 -670363 -670379 -670399 -670409 -670447 -670457 -670471 -670487 -670489 -670493 -670507 -670511 -670517 -670541 -670543 -670559 -670577 -670583 -670597 -670613 -670619 -670627 -670639 -670669 -670673 -670693 -670711 -670727 -670729 -670739 -670763 -670777 -670781 -670811 -670823 -670849 -670853 -670867 -670877 -670897 -670903 -670919 -670931 -670951 -670963 -670987 -670991 -671003 -671017 -671029 -671039 -671059 -671063 -671081 -671087 -671093 -671123 -671131 -671141 -671159 -671161 -671189 -671201 -671219 -671233 -671249 -671257 -671261 -671269 -671287 -671299 -671303 -671323 -671339 -671353 -671357 -671369 -671383 -671401 -671417 -671431 -671443 -671467 -671471 -671477 -671501 -671519 -671533 -671537 -671557 -671581 -671591 -671603 -671609 -671633 -671647 -671651 -671681 -671701 -671717 -671729 -671743 -671753 -671777 -671779 -671791 -671831 -671837 -671851 -671887 -671893 -671903 -671911 -671917 -671921 -671933 -671939 -671941 -671947 -671969 -671971 -671981 -671999 -672019 -672029 -672041 -672043 -672059 -672073 -672079 -672097 -672103 -672107 -672127 -672131 -672137 -672143 -672151 -672167 -672169 -672181 -672193 -672209 -672223 -672227 -672229 -672251 -672271 -672283 -672289 -672293 -672311 -672317 -672323 -672341 -672349 -672377 -672379 -672439 -672443 -672473 -672493 -672499 -672521 -672557 -672577 -672587 -672593 -672629 -672641 -672643 -672653 -672667 -672703 -672743 -672757 -672767 -672779 -672781 -672787 -672799 -672803 -672811 -672817 -672823 -672827 -672863 -672869 -672871 -672883 -672901 -672913 -672937 -672943 -672949 -672953 -672967 -672977 -672983 -673019 -673039 -673063 -673069 -673073 -673091 -673093 -673109 -673111 -673117 -673121 -673129 -673157 -673193 -673199 -673201 -673207 -673223 -673241 -673247 -673271 -673273 -673291 -673297 -673313 -673327 -673339 -673349 -673381 -673391 -673397 -673399 -673403 -673411 -673427 -673429 -673441 -673447 -673451 -673457 -673459 -673469 -673487 -673499 -673513 -673529 -673549 -673553 -673567 -673573 -673579 -673609 -673613 -673619 -673637 -673639 -673643 -673649 -673667 -673669 -673747 -673769 -673781 -673787 -673793 -673801 -673811 -673817 -673837 -673879 -673891 -673921 -673943 -673951 -673961 -673979 -673991 -674017 -674057 -674059 -674071 -674083 -674099 -674117 -674123 -674131 -674159 -674161 -674173 -674183 -674189 -674227 -674231 -674239 -674249 -674263 -674269 -674273 -674299 -674321 -674347 -674357 -674363 -674371 -674393 -674419 -674431 -674449 -674461 -674483 -674501 -674533 -674537 -674551 -674563 -674603 -674647 -674669 -674677 -674683 -674693 -674699 -674701 -674711 -674717 -674719 -674731 -674741 -674749 -674759 -674761 -674767 -674771 -674789 -674813 -674827 -674831 -674833 -674837 -674851 -674857 -674867 -674879 -674903 -674929 -674941 -674953 -674957 -674977 -674987 -675029 -675067 -675071 -675079 -675083 -675097 -675109 -675113 -675131 -675133 -675151 -675161 -675163 -675173 -675179 -675187 -675197 -675221 -675239 -675247 -675251 -675253 -675263 -675271 -675299 -675313 -675319 -675341 -675347 -675391 -675407 -675413 -675419 -675449 -675457 -675463 -675481 -675511 -675539 -675541 -675551 -675553 -675559 -675569 -675581 -675593 -675601 -675607 -675611 -675617 -675629 -675643 -675713 -675739 -675743 -675751 -675781 -675797 -675817 -675823 -675827 -675839 -675841 -675859 -675863 -675877 -675881 -675889 -675923 -675929 -675931 -675959 -675973 -675977 -675979 -676007 -676009 -676031 -676037 -676043 -676051 -676057 -676061 -676069 -676099 -676103 -676111 -676129 -676147 -676171 -676211 -676217 -676219 -676241 -676253 -676259 -676279 -676289 -676297 -676337 -676339 -676349 -676363 -676373 -676387 -676391 -676409 -676411 -676421 -676427 -676463 -676469 -676493 -676523 -676573 -676589 -676597 -676601 -676649 -676661 -676679 -676703 -676717 -676721 -676727 -676733 -676747 -676751 -676763 -676771 -676807 -676829 -676859 -676861 -676883 -676891 -676903 -676909 -676919 -676927 -676931 -676937 -676943 -676961 -676967 -676979 -676981 -676987 -676993 -677011 -677021 -677029 -677041 -677057 -677077 -677081 -677107 -677111 -677113 -677119 -677147 -677167 -677177 -677213 -677227 -677231 -677233 -677239 -677309 -677311 -677321 -677323 -677333 -677357 -677371 -677387 -677423 -677441 -677447 -677459 -677461 -677471 -677473 -677531 -677533 -677539 -677543 -677561 -677563 -677587 -677627 -677639 -677647 -677657 -677681 -677683 -677687 -677717 -677737 -677767 -677779 -677783 -677791 -677813 -677827 -677857 -677891 -677927 -677947 -677953 -677959 -677983 -678023 -678037 -678047 -678061 -678077 -678101 -678103 -678133 -678157 -678169 -678179 -678191 -678199 -678203 -678211 -678217 -678221 -678229 -678253 -678289 -678299 -678329 -678341 -678343 -678367 -678371 -678383 -678401 -678407 -678409 -678413 -678421 -678437 -678451 -678463 -678479 -678481 -678493 -678499 -678533 -678541 -678553 -678563 -678577 -678581 -678593 -678599 -678607 -678611 -678631 -678637 -678641 -678647 -678649 -678653 -678659 -678719 -678721 -678731 -678739 -678749 -678757 -678761 -678763 -678767 -678773 -678779 -678809 -678823 -678829 -678833 -678859 -678871 -678883 -678901 -678907 -678941 -678943 -678949 -678959 -678971 -678989 -679033 -679037 -679039 -679051 -679067 -679087 -679111 -679123 -679127 -679153 -679157 -679169 -679171 -679183 -679207 -679219 -679223 -679229 -679249 -679277 -679279 -679297 -679309 -679319 -679333 -679361 -679363 -679369 -679373 -679381 -679403 -679409 -679417 -679423 -679433 -679451 -679463 -679487 -679501 -679517 -679519 -679531 -679537 -679561 -679597 -679603 -679607 -679633 -679639 -679669 -679681 -679691 -679699 -679709 -679733 -679741 -679747 -679751 -679753 -679781 -679793 -679807 -679823 -679829 -679837 -679843 -679859 -679867 -679879 -679883 -679891 -679897 -679907 -679909 -679919 -679933 -679951 -679957 -679961 -679969 -679981 -679993 -679999 -680003 -680027 -680039 -680059 -680077 -680081 -680083 -680107 -680123 -680129 -680159 -680161 -680177 -680189 -680203 -680209 -680213 -680237 -680249 -680263 -680291 -680293 -680297 -680299 -680321 -680327 -680341 -680347 -680353 -680377 -680387 -680399 -680401 -680411 -680417 -680431 -680441 -680443 -680453 -680489 -680503 -680507 -680509 -680531 -680539 -680567 -680569 -680587 -680597 -680611 -680623 -680633 -680651 -680657 -680681 -680707 -680749 -680759 -680767 -680783 -680803 -680809 -680831 -680857 -680861 -680873 -680879 -680881 -680917 -680929 -680959 -680971 -680987 -680989 -680993 -681001 -681011 -681019 -681041 -681047 -681049 -681061 -681067 -681089 -681091 -681113 -681127 -681137 -681151 -681167 -681179 -681221 -681229 -681251 -681253 -681257 -681259 -681271 -681293 -681311 -681337 -681341 -681361 -681367 -681371 -681403 -681407 -681409 -681419 -681427 -681449 -681451 -681481 -681487 -681493 -681497 -681521 -681523 -681539 -681557 -681563 -681589 -681607 -681613 -681623 -681631 -681647 -681673 -681677 -681689 -681719 -681727 -681731 -681763 -681773 -681781 -681787 -681809 -681823 -681833 -681839 -681841 -681883 -681899 -681913 -681931 -681943 -681949 -681971 -681977 -681979 -681983 -681997 -682001 -682009 -682037 -682049 -682063 -682069 -682079 -682141 -682147 -682151 -682153 -682183 -682207 -682219 -682229 -682237 -682247 -682259 -682277 -682289 -682291 -682303 -682307 -682321 -682327 -682333 -682337 -682361 -682373 -682411 -682417 -682421 -682427 -682439 -682447 -682463 -682471 -682483 -682489 -682511 -682519 -682531 -682547 -682597 -682607 -682637 -682657 -682673 -682679 -682697 -682699 -682723 -682729 -682733 -682739 -682751 -682763 -682777 -682789 -682811 -682819 -682901 -682933 -682943 -682951 -682967 -683003 -683021 -683041 -683047 -683071 -683083 -683087 -683119 -683129 -683143 -683149 -683159 -683201 -683231 -683251 -683257 -683273 -683299 -683303 -683317 -683323 -683341 -683351 -683357 -683377 -683381 -683401 -683407 -683437 -683447 -683453 -683461 -683471 -683477 -683479 -683483 -683489 -683503 -683513 -683567 -683591 -683597 -683603 -683651 -683653 -683681 -683687 -683693 -683699 -683701 -683713 -683719 -683731 -683737 -683747 -683759 -683777 -683783 -683789 -683807 -683819 -683821 -683831 -683833 -683843 -683857 -683861 -683863 -683873 -683887 -683899 -683909 -683911 -683923 -683933 -683939 -683957 -683983 -684007 -684017 -684037 -684053 -684091 -684109 -684113 -684119 -684121 -684127 -684157 -684163 -684191 -684217 -684221 -684239 -684269 -684287 -684289 -684293 -684311 -684329 -684337 -684347 -684349 -684373 -684379 -684407 -684419 -684427 -684433 -684443 -684451 -684469 -684473 -684493 -684527 -684547 -684557 -684559 -684569 -684581 -684587 -684599 -684617 -684637 -684643 -684647 -684683 -684713 -684727 -684731 -684751 -684757 -684767 -684769 -684773 -684791 -684793 -684799 -684809 -684829 -684841 -684857 -684869 -684889 -684923 -684949 -684961 -684973 -684977 -684989 -685001 -685019 -685031 -685039 -685051 -685057 -685063 -685073 -685081 -685093 -685099 -685103 -685109 -685123 -685141 -685169 -685177 -685199 -685231 -685247 -685249 -685271 -685297 -685301 -685319 -685337 -685339 -685361 -685367 -685369 -685381 -685393 -685417 -685427 -685429 -685453 -685459 -685471 -685493 -685511 -685513 -685519 -685537 -685541 -685547 -685591 -685609 -685613 -685621 -685631 -685637 -685649 -685669 -685679 -685697 -685717 -685723 -685733 -685739 -685747 -685753 -685759 -685781 -685793 -685819 -685849 -685859 -685907 -685939 -685963 -685969 -685973 -685987 -685991 -686003 -686009 -686011 -686027 -686029 -686039 -686041 -686051 -686057 -686087 -686089 -686099 -686117 -686131 -686141 -686143 -686149 -686173 -686177 -686197 -686201 -686209 -686267 -686269 -686293 -686317 -686321 -686333 -686339 -686353 -686359 -686363 -686417 -686423 -686437 -686449 -686453 -686473 -686479 -686503 -686513 -686519 -686551 -686563 -686593 -686611 -686639 -686669 -686671 -686687 -686723 -686729 -686731 -686737 -686761 -686773 -686789 -686797 -686801 -686837 -686843 -686863 -686879 -686891 -686893 -686897 -686911 -686947 -686963 -686969 -686971 -686977 -686989 -686993 -687007 -687013 -687017 -687019 -687023 -687031 -687041 -687061 -687073 -687083 -687101 -687107 -687109 -687121 -687131 -687139 -687151 -687161 -687163 -687179 -687223 -687233 -687277 -687289 -687299 -687307 -687311 -687317 -687331 -687341 -687343 -687359 -687383 -687389 -687397 -687403 -687413 -687431 -687433 -687437 -687443 -687457 -687461 -687473 -687481 -687499 -687517 -687521 -687523 -687541 -687551 -687559 -687581 -687593 -687623 -687637 -687641 -687647 -687679 -687683 -687691 -687707 -687721 -687737 -687749 -687767 -687773 -687779 -687787 -687809 -687823 -687829 -687839 -687847 -687893 -687901 -687917 -687923 -687931 -687949 -687961 -687977 -688003 -688013 -688027 -688031 -688063 -688067 -688073 -688087 -688097 -688111 -688133 -688139 -688147 -688159 -688187 -688201 -688217 -688223 -688249 -688253 -688277 -688297 -688309 -688333 -688339 -688357 -688379 -688393 -688397 -688403 -688411 -688423 -688433 -688447 -688451 -688453 -688477 -688511 -688531 -688543 -688561 -688573 -688591 -688621 -688627 -688631 -688637 -688657 -688661 -688669 -688679 -688697 -688717 -688729 -688733 -688741 -688747 -688757 -688763 -688777 -688783 -688799 -688813 -688861 -688867 -688871 -688889 -688907 -688939 -688951 -688957 -688969 -688979 -688999 -689021 -689033 -689041 -689063 -689071 -689077 -689081 -689089 -689093 -689107 -689113 -689131 -689141 -689167 -689201 -689219 -689233 -689237 -689257 -689261 -689267 -689279 -689291 -689309 -689317 -689321 -689341 -689357 -689369 -689383 -689389 -689393 -689411 -689431 -689441 -689459 -689461 -689467 -689509 -689551 -689561 -689581 -689587 -689597 -689599 -689603 -689621 -689629 -689641 -689693 -689699 -689713 -689723 -689761 -689771 -689779 -689789 -689797 -689803 -689807 -689827 -689831 -689851 -689867 -689869 -689873 -689879 -689891 -689893 -689903 -689917 -689921 -689929 -689951 -689957 -689959 -689963 -689981 -689987 -690037 -690059 -690073 -690089 -690103 -690119 -690127 -690139 -690143 -690163 -690187 -690233 -690259 -690269 -690271 -690281 -690293 -690323 -690341 -690367 -690377 -690397 -690407 -690419 -690427 -690433 -690439 -690449 -690467 -690491 -690493 -690509 -690511 -690533 -690541 -690553 -690583 -690589 -690607 -690611 -690629 -690661 -690673 -690689 -690719 -690721 -690757 -690787 -690793 -690817 -690839 -690841 -690869 -690871 -690887 -690889 -690919 -690929 -690953 -690997 -691001 -691037 -691051 -691063 -691079 -691109 -691111 -691121 -691129 -691147 -691151 -691153 -691181 -691183 -691189 -691193 -691199 -691231 -691241 -691267 -691289 -691297 -691309 -691333 -691337 -691343 -691349 -691363 -691381 -691399 -691409 -691433 -691451 -691463 -691489 -691499 -691531 -691553 -691573 -691583 -691589 -691591 -691631 -691637 -691651 -691661 -691681 -691687 -691693 -691697 -691709 -691721 -691723 -691727 -691729 -691739 -691759 -691763 -691787 -691799 -691813 -691829 -691837 -691841 -691843 -691871 -691877 -691891 -691897 -691903 -691907 -691919 -691921 -691931 -691949 -691973 -691979 -691991 -691997 -692009 -692017 -692051 -692059 -692063 -692071 -692089 -692099 -692117 -692141 -692147 -692149 -692161 -692191 -692221 -692239 -692249 -692269 -692273 -692281 -692287 -692297 -692299 -692309 -692327 -692333 -692347 -692353 -692371 -692387 -692389 -692399 -692401 -692407 -692413 -692423 -692431 -692441 -692453 -692459 -692467 -692513 -692521 -692537 -692539 -692543 -692567 -692581 -692591 -692621 -692641 -692647 -692651 -692663 -692689 -692707 -692711 -692717 -692729 -692743 -692753 -692761 -692771 -692779 -692789 -692821 -692851 -692863 -692893 -692917 -692927 -692929 -692933 -692957 -692963 -692969 -692983 -693019 -693037 -693041 -693061 -693079 -693089 -693097 -693103 -693127 -693137 -693149 -693157 -693167 -693169 -693179 -693223 -693257 -693283 -693317 -693323 -693337 -693353 -693359 -693373 -693397 -693401 -693403 -693409 -693421 -693431 -693437 -693487 -693493 -693503 -693523 -693527 -693529 -693533 -693569 -693571 -693601 -693607 -693619 -693629 -693659 -693661 -693677 -693683 -693689 -693691 -693697 -693701 -693727 -693731 -693733 -693739 -693743 -693757 -693779 -693793 -693799 -693809 -693827 -693829 -693851 -693859 -693871 -693877 -693881 -693943 -693961 -693967 -693989 -694019 -694033 -694039 -694061 -694069 -694079 -694081 -694087 -694091 -694123 -694189 -694193 -694201 -694207 -694223 -694259 -694261 -694271 -694273 -694277 -694313 -694319 -694327 -694333 -694339 -694349 -694357 -694361 -694367 -694373 -694381 -694387 -694391 -694409 -694427 -694457 -694471 -694481 -694483 -694487 -694511 -694513 -694523 -694541 -694549 -694559 -694567 -694571 -694591 -694597 -694609 -694619 -694633 -694649 -694651 -694717 -694721 -694747 -694763 -694781 -694783 -694789 -694829 -694831 -694867 -694871 -694873 -694879 -694901 -694919 -694951 -694957 -694979 -694987 -694997 -694999 -695003 -695017 -695021 -695047 -695059 -695069 -695081 -695087 -695089 -695099 -695111 -695117 -695131 -695141 -695171 -695207 -695239 -695243 -695257 -695263 -695269 -695281 -695293 -695297 -695309 -695323 -695327 -695329 -695347 -695369 -695371 -695377 -695389 -695407 -695411 -695441 -695447 -695467 -695477 -695491 -695503 -695509 -695561 -695567 -695573 -695581 -695593 -695599 -695603 -695621 -695627 -695641 -695659 -695663 -695677 -695687 -695689 -695701 -695719 -695743 -695749 -695771 -695777 -695791 -695801 -695809 -695839 -695843 -695867 -695873 -695879 -695881 -695899 -695917 -695927 -695939 -695999 -696019 -696053 -696061 -696067 -696077 -696079 -696083 -696107 -696109 -696119 -696149 -696181 -696239 -696253 -696257 -696263 -696271 -696281 -696313 -696317 -696323 -696343 -696349 -696359 -696361 -696373 -696379 -696403 -696413 -696427 -696433 -696457 -696481 -696491 -696497 -696503 -696517 -696523 -696533 -696547 -696569 -696607 -696611 -696617 -696623 -696629 -696653 -696659 -696679 -696691 -696719 -696721 -696737 -696743 -696757 -696763 -696793 -696809 -696811 -696823 -696827 -696833 -696851 -696853 -696887 -696889 -696893 -696907 -696929 -696937 -696961 -696989 -696991 -697009 -697013 -697019 -697033 -697049 -697063 -697069 -697079 -697087 -697093 -697111 -697121 -697127 -697133 -697141 -697157 -697181 -697201 -697211 -697217 -697259 -697261 -697267 -697271 -697303 -697327 -697351 -697373 -697379 -697381 -697387 -697397 -697399 -697409 -697423 -697441 -697447 -697453 -697457 -697481 -697507 -697511 -697513 -697519 -697523 -697553 -697579 -697583 -697591 -697601 -697603 -697637 -697643 -697673 -697681 -697687 -697691 -697693 -697703 -697727 -697729 -697733 -697757 -697759 -697787 -697819 -697831 -697877 -697891 -697897 -697909 -697913 -697937 -697951 -697967 -697973 -697979 -697993 -697999 -698017 -698021 -698039 -698051 -698053 -698077 -698083 -698111 -698171 -698183 -698239 -698249 -698251 -698261 -698263 -698273 -698287 -698293 -698297 -698311 -698329 -698339 -698359 -698371 -698387 -698393 -698413 -698417 -698419 -698437 -698447 -698471 -698483 -698491 -698507 -698521 -698527 -698531 -698539 -698543 -698557 -698567 -698591 -698641 -698653 -698669 -698701 -698713 -698723 -698729 -698773 -698779 -698821 -698827 -698849 -698891 -698899 -698903 -698923 -698939 -698977 -698983 -699001 -699007 -699037 -699053 -699059 -699073 -699077 -699089 -699113 -699119 -699133 -699151 -699157 -699169 -699187 -699191 -699197 -699211 -699217 -699221 -699241 -699253 -699271 -699287 -699289 -699299 -699319 -699323 -699343 -699367 -699373 -699379 -699383 -699401 -699427 -699437 -699443 -699449 -699463 -699469 -699493 -699511 -699521 -699527 -699529 -699539 -699541 -699557 -699571 -699581 -699617 -699631 -699641 -699649 -699697 -699709 -699719 -699733 -699757 -699761 -699767 -699791 -699793 -699817 -699823 -699863 -699931 -699943 -699947 -699953 -699961 -699967 -700001 -700027 -700057 -700067 -700079 -700081 -700087 -700099 -700103 -700109 -700127 -700129 -700171 -700199 -700201 -700211 -700223 -700229 -700237 -700241 -700277 -700279 -700303 -700307 -700319 -700331 -700339 -700361 -700363 -700367 -700387 -700391 -700393 -700423 -700429 -700433 -700459 -700471 -700499 -700523 -700537 -700561 -700571 -700573 -700577 -700591 -700597 -700627 -700633 -700639 -700643 -700673 -700681 -700703 -700717 -700751 -700759 -700781 -700789 -700801 -700811 -700831 -700837 -700849 -700871 -700877 -700883 -700897 -700907 -700919 -700933 -700937 -700949 -700963 -700993 -701009 -701011 -701023 -701033 -701047 -701089 -701117 -701147 -701159 -701177 -701179 -701209 -701219 -701221 -701227 -701257 -701279 -701291 -701299 -701329 -701341 -701357 -701359 -701377 -701383 -701399 -701401 -701413 -701417 -701419 -701443 -701447 -701453 -701473 -701479 -701489 -701497 -701507 -701509 -701527 -701531 -701549 -701579 -701581 -701593 -701609 -701611 -701621 -701627 -701629 -701653 -701669 -701671 -701681 -701699 -701711 -701719 -701731 -701741 -701761 -701783 -701791 -701819 -701837 -701863 -701881 -701903 -701951 -701957 -701963 -701969 -702007 -702011 -702017 -702067 -702077 -702101 -702113 -702127 -702131 -702137 -702139 -702173 -702179 -702193 -702199 -702203 -702211 -702239 -702257 -702269 -702281 -702283 -702311 -702313 -702323 -702329 -702337 -702341 -702347 -702349 -702353 -702379 -702391 -702407 -702413 -702431 -702433 -702439 -702451 -702469 -702497 -702503 -702511 -702517 -702523 -702529 -702539 -702551 -702557 -702587 -702589 -702599 -702607 -702613 -702623 -702671 -702679 -702683 -702701 -702707 -702721 -702731 -702733 -702743 -702773 -702787 -702803 -702809 -702817 -702827 -702847 -702851 -702853 -702869 -702881 -702887 -702893 -702913 -702937 -702983 -702991 -703013 -703033 -703039 -703081 -703117 -703121 -703123 -703127 -703139 -703141 -703169 -703193 -703211 -703217 -703223 -703229 -703231 -703243 -703249 -703267 -703277 -703301 -703309 -703321 -703327 -703331 -703349 -703357 -703379 -703393 -703411 -703441 -703447 -703459 -703463 -703471 -703489 -703499 -703531 -703537 -703559 -703561 -703631 -703643 -703657 -703663 -703673 -703679 -703691 -703699 -703709 -703711 -703721 -703733 -703753 -703763 -703789 -703819 -703837 -703849 -703861 -703873 -703883 -703897 -703903 -703907 -703943 -703949 -703957 -703981 -703991 -704003 -704009 -704017 -704023 -704027 -704029 -704059 -704069 -704087 -704101 -704111 -704117 -704131 -704141 -704153 -704161 -704177 -704183 -704189 -704213 -704219 -704233 -704243 -704251 -704269 -704279 -704281 -704287 -704299 -704303 -704309 -704321 -704357 -704393 -704399 -704419 -704441 -704447 -704449 -704453 -704461 -704477 -704507 -704521 -704527 -704549 -704551 -704567 -704569 -704579 -704581 -704593 -704603 -704617 -704647 -704657 -704663 -704681 -704687 -704713 -704719 -704731 -704747 -704761 -704771 -704777 -704779 -704783 -704797 -704801 -704807 -704819 -704833 -704839 -704849 -704857 -704861 -704863 -704867 -704897 -704929 -704933 -704947 -704983 -704989 -704993 -704999 -705011 -705013 -705017 -705031 -705043 -705053 -705073 -705079 -705097 -705113 -705119 -705127 -705137 -705161 -705163 -705167 -705169 -705181 -705191 -705197 -705209 -705247 -705259 -705269 -705277 -705293 -705307 -705317 -705389 -705403 -705409 -705421 -705427 -705437 -705461 -705491 -705493 -705499 -705521 -705533 -705559 -705613 -705631 -705643 -705689 -705713 -705737 -705751 -705763 -705769 -705779 -705781 -705787 -705821 -705827 -705829 -705833 -705841 -705863 -705871 -705883 -705899 -705919 -705937 -705949 -705967 -705973 -705989 -706001 -706003 -706009 -706019 -706033 -706039 -706049 -706051 -706067 -706099 -706109 -706117 -706133 -706141 -706151 -706157 -706159 -706183 -706193 -706201 -706207 -706213 -706229 -706253 -706267 -706283 -706291 -706297 -706301 -706309 -706313 -706337 -706357 -706369 -706373 -706403 -706417 -706427 -706463 -706481 -706487 -706499 -706507 -706523 -706547 -706561 -706597 -706603 -706613 -706621 -706631 -706633 -706661 -706669 -706679 -706703 -706709 -706729 -706733 -706747 -706751 -706753 -706757 -706763 -706787 -706793 -706801 -706829 -706837 -706841 -706847 -706883 -706897 -706907 -706913 -706919 -706921 -706943 -706961 -706973 -706987 -706999 -707011 -707027 -707029 -707053 -707071 -707099 -707111 -707117 -707131 -707143 -707153 -707159 -707177 -707191 -707197 -707219 -707249 -707261 -707279 -707293 -707299 -707321 -707341 -707359 -707383 -707407 -707429 -707431 -707437 -707459 -707467 -707501 -707527 -707543 -707561 -707563 -707573 -707627 -707633 -707647 -707653 -707669 -707671 -707677 -707683 -707689 -707711 -707717 -707723 -707747 -707753 -707767 -707789 -707797 -707801 -707813 -707827 -707831 -707849 -707857 -707869 -707873 -707887 -707911 -707923 -707929 -707933 -707939 -707951 -707953 -707957 -707969 -707981 -707983 -708007 -708011 -708017 -708023 -708031 -708041 -708047 -708049 -708053 -708061 -708091 -708109 -708119 -708131 -708137 -708139 -708161 -708163 -708179 -708199 -708221 -708223 -708229 -708251 -708269 -708283 -708287 -708293 -708311 -708329 -708343 -708347 -708353 -708359 -708361 -708371 -708403 -708437 -708457 -708473 -708479 -708481 -708493 -708497 -708517 -708527 -708559 -708563 -708569 -708583 -708593 -708599 -708601 -708641 -708647 -708667 -708689 -708703 -708733 -708751 -708803 -708823 -708839 -708857 -708859 -708893 -708899 -708907 -708913 -708923 -708937 -708943 -708959 -708979 -708989 -708991 -708997 -709043 -709057 -709097 -709117 -709123 -709139 -709141 -709151 -709153 -709157 -709201 -709211 -709217 -709231 -709237 -709271 -709273 -709279 -709283 -709307 -709321 -709337 -709349 -709351 -709381 -709409 -709417 -709421 -709433 -709447 -709451 -709453 -709469 -709507 -709519 -709531 -709537 -709547 -709561 -709589 -709603 -709607 -709609 -709649 -709651 -709663 -709673 -709679 -709691 -709693 -709703 -709729 -709739 -709741 -709769 -709777 -709789 -709799 -709817 -709823 -709831 -709843 -709847 -709853 -709861 -709871 -709879 -709901 -709909 -709913 -709921 -709927 -709957 -709963 -709967 -709981 -709991 -710009 -710023 -710027 -710051 -710053 -710081 -710089 -710119 -710189 -710207 -710219 -710221 -710257 -710261 -710273 -710293 -710299 -710321 -710323 -710327 -710341 -710351 -710371 -710377 -710383 -710389 -710399 -710441 -710443 -710449 -710459 -710473 -710483 -710491 -710503 -710513 -710519 -710527 -710531 -710557 -710561 -710569 -710573 -710599 -710603 -710609 -710621 -710623 -710627 -710641 -710663 -710683 -710693 -710713 -710777 -710779 -710791 -710813 -710837 -710839 -710849 -710851 -710863 -710867 -710873 -710887 -710903 -710909 -710911 -710917 -710929 -710933 -710951 -710959 -710971 -710977 -710987 -710989 -711001 -711017 -711019 -711023 -711041 -711049 -711089 -711097 -711121 -711131 -711133 -711143 -711163 -711173 -711181 -711187 -711209 -711223 -711259 -711287 -711299 -711307 -711317 -711329 -711353 -711371 -711397 -711409 -711427 -711437 -711463 -711479 -711497 -711499 -711509 -711517 -711523 -711539 -711563 -711577 -711583 -711589 -711617 -711629 -711649 -711653 -711679 -711691 -711701 -711707 -711709 -711713 -711727 -711731 -711749 -711751 -711757 -711793 -711811 -711817 -711829 -711839 -711847 -711859 -711877 -711889 -711899 -711913 -711923 -711929 -711937 -711947 -711959 -711967 -711973 -711983 -712007 -712021 -712051 -712067 -712093 -712109 -712121 -712133 -712157 -712169 -712171 -712183 -712199 -712219 -712237 -712279 -712289 -712301 -712303 -712319 -712321 -712331 -712339 -712357 -712409 -712417 -712427 -712429 -712433 -712447 -712477 -712483 -712489 -712493 -712499 -712507 -712511 -712531 -712561 -712571 -712573 -712601 -712603 -712631 -712651 -712669 -712681 -712687 -712693 -712697 -712711 -712717 -712739 -712781 -712807 -712819 -712837 -712841 -712843 -712847 -712883 -712889 -712891 -712909 -712913 -712927 -712939 -712951 -712961 -712967 -712973 -712981 -713021 -713039 -713059 -713077 -713107 -713117 -713129 -713147 -713149 -713159 -713171 -713177 -713183 -713189 -713191 -713227 -713233 -713239 -713243 -713261 -713267 -713281 -713287 -713309 -713311 -713329 -713347 -713351 -713353 -713357 -713381 -713389 -713399 -713407 -713411 -713417 -713467 -713477 -713491 -713497 -713501 -713509 -713533 -713563 -713569 -713597 -713599 -713611 -713627 -713653 -713663 -713681 -713737 -713743 -713747 -713753 -713771 -713807 -713827 -713831 -713833 -713861 -713863 -713873 -713891 -713903 -713917 -713927 -713939 -713941 -713957 -713981 -713987 -714029 -714037 -714061 -714073 -714107 -714113 -714139 -714143 -714151 -714163 -714169 -714199 -714223 -714227 -714247 -714257 -714283 -714341 -714349 -714361 -714377 -714443 -714463 -714479 -714481 -714487 -714503 -714509 -714517 -714521 -714529 -714551 -714557 -714563 -714569 -714577 -714601 -714619 -714673 -714677 -714691 -714719 -714739 -714751 -714773 -714781 -714787 -714797 -714809 -714827 -714839 -714841 -714851 -714853 -714869 -714881 -714887 -714893 -714907 -714911 -714919 -714943 -714947 -714949 -714971 -714991 -715019 -715031 -715049 -715063 -715069 -715073 -715087 -715109 -715123 -715151 -715153 -715157 -715159 -715171 -715189 -715193 -715223 -715229 -715237 -715243 -715249 -715259 -715289 -715301 -715303 -715313 -715339 -715357 -715361 -715373 -715397 -715417 -715423 -715439 -715441 -715453 -715457 -715489 -715499 -715523 -715537 -715549 -715567 -715571 -715577 -715579 -715613 -715621 -715639 -715643 -715651 -715657 -715679 -715681 -715699 -715727 -715739 -715753 -715777 -715789 -715801 -715811 -715817 -715823 -715843 -715849 -715859 -715867 -715873 -715877 -715879 -715889 -715903 -715909 -715919 -715927 -715943 -715961 -715963 -715969 -715973 -715991 -715999 -716003 -716033 -716063 -716087 -716117 -716123 -716137 -716143 -716161 -716171 -716173 -716249 -716257 -716279 -716291 -716299 -716321 -716351 -716383 -716389 -716399 -716411 -716413 -716447 -716449 -716453 -716459 -716477 -716479 -716483 -716491 -716501 -716531 -716543 -716549 -716563 -716581 -716591 -716621 -716629 -716633 -716659 -716663 -716671 -716687 -716693 -716707 -716713 -716731 -716741 -716743 -716747 -716783 -716789 -716809 -716819 -716827 -716857 -716861 -716869 -716897 -716899 -716917 -716929 -716951 -716953 -716959 -716981 -716987 -717001 -717011 -717047 -717089 -717091 -717103 -717109 -717113 -717127 -717133 -717139 -717149 -717151 -717161 -717191 -717229 -717259 -717271 -717289 -717293 -717317 -717323 -717331 -717341 -717397 -717413 -717419 -717427 -717443 -717449 -717463 -717491 -717511 -717527 -717529 -717533 -717539 -717551 -717559 -717581 -717589 -717593 -717631 -717653 -717659 -717667 -717679 -717683 -717697 -717719 -717751 -717797 -717803 -717811 -717817 -717841 -717851 -717883 -717887 -717917 -717919 -717923 -717967 -717979 -717989 -718007 -718043 -718049 -718051 -718087 -718093 -718121 -718139 -718163 -718169 -718171 -718183 -718187 -718241 -718259 -718271 -718303 -718321 -718331 -718337 -718343 -718349 -718357 -718379 -718381 -718387 -718391 -718411 -718423 -718427 -718433 -718453 -718457 -718463 -718493 -718511 -718513 -718541 -718547 -718559 -718579 -718603 -718621 -718633 -718657 -718661 -718691 -718703 -718717 -718723 -718741 -718747 -718759 -718801 -718807 -718813 -718841 -718847 -718871 -718897 -718901 -718919 -718931 -718937 -718943 -718973 -718999 -719009 -719011 -719027 -719041 -719057 -719063 -719071 -719101 -719119 -719143 -719149 -719153 -719167 -719177 -719179 -719183 -719189 -719197 -719203 -719227 -719237 -719239 -719267 -719281 -719297 -719333 -719351 -719353 -719377 -719393 -719413 -719419 -719441 -719447 -719483 -719503 -719533 -719557 -719567 -719569 -719573 -719597 -719599 -719633 -719639 -719659 -719671 -719681 -719683 -719689 -719699 -719713 -719717 -719723 -719731 -719749 -719753 -719773 -719779 -719791 -719801 -719813 -719821 -719833 -719839 -719893 -719903 -719911 -719941 -719947 -719951 -719959 -719981 -719989 -720007 -720019 -720023 -720053 -720059 -720089 -720091 -720101 -720127 -720133 -720151 -720173 -720179 -720193 -720197 -720211 -720221 -720229 -720241 -720253 -720257 -720281 -720283 -720289 -720299 -720301 -720311 -720319 -720359 -720361 -720367 -720373 -720397 -720403 -720407 -720413 -720439 -720481 -720491 -720497 -720527 -720547 -720569 -720571 -720607 -720611 -720617 -720619 -720653 -720661 -720677 -720683 -720697 -720703 -720743 -720763 -720767 -720773 -720779 -720791 -720793 -720829 -720847 -720857 -720869 -720877 -720887 -720899 -720901 -720913 -720931 -720943 -720947 -720961 -720971 -720983 -720991 -720997 -721003 -721013 -721037 -721043 -721051 -721057 -721079 -721087 -721109 -721111 -721117 -721129 -721139 -721141 -721159 -721163 -721169 -721177 -721181 -721199 -721207 -721213 -721219 -721223 -721229 -721243 -721261 -721267 -721283 -721291 -721307 -721319 -721321 -721333 -721337 -721351 -721363 -721379 -721381 -721387 -721397 -721439 -721451 -721481 -721499 -721529 -721547 -721561 -721571 -721577 -721597 -721613 -721619 -721621 -721631 -721661 -721663 -721687 -721697 -721703 -721709 -721733 -721739 -721783 -721793 -721843 -721849 -721859 -721883 -721891 -721909 -721921 -721951 -721961 -721979 -721991 -721997 -722011 -722023 -722027 -722047 -722063 -722069 -722077 -722093 -722119 -722123 -722147 -722149 -722153 -722159 -722167 -722173 -722213 -722237 -722243 -722257 -722273 -722287 -722291 -722299 -722311 -722317 -722321 -722333 -722341 -722353 -722363 -722369 -722377 -722389 -722411 -722417 -722431 -722459 -722467 -722479 -722489 -722509 -722521 -722537 -722539 -722563 -722581 -722599 -722611 -722633 -722639 -722663 -722669 -722713 -722723 -722737 -722749 -722783 -722791 -722797 -722807 -722819 -722833 -722849 -722881 -722899 -722903 -722921 -722933 -722963 -722971 -722977 -722983 -723029 -723031 -723043 -723049 -723053 -723067 -723071 -723089 -723101 -723103 -723109 -723113 -723119 -723127 -723133 -723157 -723161 -723167 -723169 -723181 -723193 -723209 -723221 -723227 -723257 -723259 -723263 -723269 -723271 -723287 -723293 -723319 -723337 -723353 -723361 -723379 -723391 -723407 -723409 -723413 -723421 -723439 -723451 -723467 -723473 -723479 -723491 -723493 -723529 -723551 -723553 -723559 -723563 -723587 -723589 -723601 -723607 -723617 -723623 -723661 -723721 -723727 -723739 -723761 -723791 -723797 -723799 -723803 -723823 -723829 -723839 -723851 -723857 -723859 -723893 -723901 -723907 -723913 -723917 -723923 -723949 -723959 -723967 -723973 -723977 -723997 -724001 -724007 -724021 -724079 -724093 -724099 -724111 -724117 -724121 -724123 -724153 -724187 -724211 -724219 -724259 -724267 -724277 -724291 -724303 -724309 -724313 -724331 -724393 -724403 -724433 -724441 -724447 -724453 -724459 -724469 -724481 -724487 -724499 -724513 -724517 -724519 -724531 -724547 -724553 -724567 -724573 -724583 -724597 -724601 -724609 -724621 -724627 -724631 -724639 -724643 -724651 -724721 -724723 -724729 -724733 -724747 -724751 -724769 -724777 -724781 -724783 -724807 -724813 -724837 -724847 -724853 -724879 -724901 -724903 -724939 -724949 -724961 -724967 -724991 -724993 -725009 -725041 -725057 -725071 -725077 -725099 -725111 -725113 -725119 -725147 -725149 -725159 -725161 -725189 -725201 -725209 -725273 -725293 -725303 -725317 -725321 -725323 -725327 -725341 -725357 -725359 -725371 -725381 -725393 -725399 -725423 -725437 -725447 -725449 -725479 -725507 -725519 -725531 -725537 -725579 -725587 -725597 -725603 -725639 -725653 -725663 -725671 -725687 -725723 -725731 -725737 -725749 -725789 -725801 -725807 -725827 -725861 -725863 -725867 -725891 -725897 -725909 -725929 -725939 -725953 -725981 -725983 -725993 -725999 -726007 -726013 -726023 -726043 -726071 -726091 -726097 -726101 -726107 -726109 -726137 -726139 -726149 -726157 -726163 -726169 -726181 -726191 -726221 -726287 -726289 -726301 -726307 -726331 -726337 -726367 -726371 -726377 -726379 -726391 -726413 -726419 -726431 -726457 -726463 -726469 -726487 -726497 -726521 -726527 -726533 -726559 -726589 -726599 -726601 -726611 -726619 -726623 -726629 -726641 -726647 -726659 -726679 -726689 -726697 -726701 -726707 -726751 -726779 -726787 -726797 -726809 -726811 -726839 -726841 -726853 -726893 -726899 -726911 -726917 -726923 -726941 -726953 -726983 -726989 -726991 -727003 -727009 -727019 -727021 -727049 -727061 -727063 -727079 -727121 -727123 -727157 -727159 -727169 -727183 -727189 -727201 -727211 -727241 -727247 -727249 -727261 -727267 -727271 -727273 -727289 -727297 -727313 -727327 -727343 -727351 -727369 -727399 -727409 -727427 -727451 -727459 -727471 -727483 -727487 -727499 -727501 -727541 -727561 -727577 -727589 -727613 -727621 -727633 -727667 -727673 -727691 -727703 -727711 -727717 -727729 -727733 -727747 -727759 -727763 -727777 -727781 -727799 -727807 -727817 -727823 -727843 -727847 -727877 -727879 -727891 -727933 -727939 -727949 -727981 -727997 -728003 -728017 -728027 -728047 -728069 -728087 -728113 -728129 -728131 -728173 -728191 -728207 -728209 -728261 -728267 -728269 -728281 -728293 -728303 -728317 -728333 -728369 -728381 -728383 -728417 -728423 -728437 -728471 -728477 -728489 -728521 -728527 -728537 -728551 -728557 -728561 -728573 -728579 -728627 -728639 -728647 -728659 -728681 -728687 -728699 -728701 -728713 -728723 -728729 -728731 -728743 -728747 -728771 -728809 -728813 -728831 -728837 -728839 -728843 -728851 -728867 -728869 -728873 -728881 -728891 -728899 -728911 -728921 -728927 -728929 -728941 -728947 -728953 -728969 -728971 -728993 -729019 -729023 -729037 -729041 -729059 -729073 -729139 -729143 -729173 -729187 -729191 -729199 -729203 -729217 -729257 -729269 -729271 -729293 -729301 -729329 -729331 -729359 -729367 -729371 -729373 -729389 -729403 -729413 -729451 -729457 -729473 -729493 -729497 -729503 -729511 -729527 -729551 -729557 -729559 -729569 -729571 -729577 -729587 -729601 -729607 -729613 -729637 -729643 -729649 -729661 -729671 -729679 -729689 -729713 -729719 -729737 -729749 -729761 -729779 -729787 -729791 -729821 -729851 -729871 -729877 -729907 -729913 -729919 -729931 -729941 -729943 -729947 -729977 -729979 -729991 -730003 -730021 -730033 -730049 -730069 -730091 -730111 -730139 -730157 -730187 -730199 -730217 -730237 -730253 -730277 -730283 -730297 -730321 -730339 -730363 -730397 -730399 -730421 -730447 -730451 -730459 -730469 -730487 -730537 -730553 -730559 -730567 -730571 -730573 -730589 -730591 -730603 -730619 -730633 -730637 -730663 -730669 -730679 -730727 -730747 -730753 -730757 -730777 -730781 -730783 -730789 -730799 -730811 -730819 -730823 -730837 -730843 -730853 -730867 -730879 -730889 -730901 -730909 -730913 -730943 -730969 -730973 -730993 -730999 -731033 -731041 -731047 -731053 -731057 -731113 -731117 -731141 -731173 -731183 -731189 -731191 -731201 -731209 -731219 -731233 -731243 -731249 -731251 -731257 -731261 -731267 -731287 -731299 -731327 -731333 -731359 -731363 -731369 -731389 -731413 -731447 -731483 -731501 -731503 -731509 -731531 -731539 -731567 -731587 -731593 -731597 -731603 -731611 -731623 -731639 -731651 -731681 -731683 -731711 -731713 -731719 -731729 -731737 -731741 -731761 -731767 -731779 -731803 -731807 -731821 -731827 -731831 -731839 -731851 -731869 -731881 -731893 -731909 -731911 -731921 -731923 -731933 -731957 -731981 -731999 -732023 -732029 -732041 -732073 -732077 -732079 -732097 -732101 -732133 -732157 -732169 -732181 -732187 -732191 -732197 -732209 -732211 -732217 -732229 -732233 -732239 -732257 -732271 -732283 -732287 -732293 -732299 -732311 -732323 -732331 -732373 -732439 -732449 -732461 -732467 -732491 -732493 -732497 -732509 -732521 -732533 -732541 -732601 -732617 -732631 -732653 -732673 -732689 -732703 -732709 -732713 -732731 -732749 -732761 -732769 -732799 -732817 -732827 -732829 -732833 -732841 -732863 -732877 -732889 -732911 -732923 -732943 -732959 -732967 -732971 -732997 -733003 -733009 -733067 -733097 -733099 -733111 -733123 -733127 -733133 -733141 -733147 -733157 -733169 -733177 -733189 -733237 -733241 -733273 -733277 -733283 -733289 -733301 -733307 -733321 -733331 -733333 -733339 -733351 -733373 -733387 -733391 -733393 -733399 -733409 -733427 -733433 -733459 -733477 -733489 -733511 -733517 -733519 -733559 -733561 -733591 -733619 -733639 -733651 -733687 -733697 -733741 -733751 -733753 -733757 -733793 -733807 -733813 -733823 -733829 -733841 -733847 -733849 -733867 -733871 -733879 -733883 -733919 -733921 -733937 -733939 -733949 -733963 -733973 -733981 -733991 -734003 -734017 -734021 -734047 -734057 -734087 -734113 -734131 -734143 -734159 -734171 -734177 -734189 -734197 -734203 -734207 -734221 -734233 -734263 -734267 -734273 -734291 -734303 -734329 -734347 -734381 -734389 -734401 -734411 -734423 -734429 -734431 -734443 -734471 -734473 -734477 -734479 -734497 -734537 -734543 -734549 -734557 -734567 -734627 -734647 -734653 -734659 -734663 -734687 -734693 -734707 -734717 -734729 -734737 -734743 -734759 -734771 -734803 -734807 -734813 -734819 -734837 -734849 -734869 -734879 -734887 -734897 -734911 -734933 -734941 -734953 -734957 -734959 -734971 -735001 -735019 -735043 -735061 -735067 -735071 -735073 -735083 -735107 -735109 -735113 -735139 -735143 -735157 -735169 -735173 -735181 -735187 -735193 -735209 -735211 -735239 -735247 -735263 -735271 -735283 -735307 -735311 -735331 -735337 -735341 -735359 -735367 -735373 -735389 -735391 -735419 -735421 -735431 -735439 -735443 -735451 -735461 -735467 -735473 -735479 -735491 -735529 -735533 -735557 -735571 -735617 -735649 -735653 -735659 -735673 -735689 -735697 -735719 -735731 -735733 -735739 -735751 -735781 -735809 -735821 -735829 -735853 -735871 -735877 -735883 -735901 -735919 -735937 -735949 -735953 -735979 -735983 -735997 -736007 -736013 -736027 -736037 -736039 -736051 -736061 -736063 -736091 -736093 -736097 -736111 -736121 -736147 -736159 -736181 -736187 -736243 -736247 -736249 -736259 -736273 -736277 -736279 -736357 -736361 -736363 -736367 -736369 -736381 -736387 -736399 -736403 -736409 -736429 -736433 -736441 -736447 -736469 -736471 -736511 -736577 -736607 -736639 -736657 -736679 -736691 -736699 -736717 -736721 -736741 -736787 -736793 -736817 -736823 -736843 -736847 -736867 -736871 -736889 -736903 -736921 -736927 -736937 -736951 -736961 -736973 -736987 -736993 -737017 -737039 -737041 -737047 -737053 -737059 -737083 -737089 -737111 -737119 -737129 -737131 -737147 -737159 -737179 -737183 -737203 -737207 -737251 -737263 -737279 -737281 -737287 -737291 -737293 -737309 -737327 -737339 -737351 -737353 -737411 -737413 -737423 -737431 -737479 -737483 -737497 -737501 -737507 -737509 -737531 -737533 -737537 -737563 -737567 -737573 -737591 -737593 -737617 -737629 -737641 -737657 -737663 -737683 -737687 -737717 -737719 -737729 -737747 -737753 -737767 -737773 -737797 -737801 -737809 -737819 -737843 -737857 -737861 -737873 -737887 -737897 -737921 -737927 -737929 -737969 -737981 -737999 -738011 -738029 -738043 -738053 -738071 -738083 -738107 -738109 -738121 -738151 -738163 -738173 -738197 -738211 -738217 -738223 -738247 -738263 -738301 -738313 -738317 -738319 -738341 -738349 -738373 -738379 -738383 -738391 -738401 -738403 -738421 -738443 -738457 -738469 -738487 -738499 -738509 -738523 -738539 -738547 -738581 -738583 -738589 -738623 -738643 -738677 -738707 -738713 -738721 -738743 -738757 -738781 -738791 -738797 -738811 -738827 -738839 -738847 -738851 -738863 -738877 -738889 -738917 -738919 -738923 -738937 -738953 -738961 -738977 -738989 -739003 -739021 -739027 -739031 -739051 -739061 -739069 -739087 -739099 -739103 -739111 -739117 -739121 -739153 -739163 -739171 -739183 -739187 -739199 -739201 -739217 -739241 -739253 -739273 -739283 -739301 -739303 -739307 -739327 -739331 -739337 -739351 -739363 -739369 -739373 -739379 -739391 -739393 -739397 -739399 -739433 -739439 -739463 -739469 -739493 -739507 -739511 -739513 -739523 -739549 -739553 -739579 -739601 -739603 -739621 -739631 -739633 -739637 -739649 -739693 -739699 -739723 -739751 -739759 -739771 -739777 -739787 -739799 -739813 -739829 -739847 -739853 -739859 -739861 -739909 -739931 -739943 -739951 -739957 -739967 -739969 -740011 -740021 -740023 -740041 -740053 -740059 -740087 -740099 -740123 -740141 -740143 -740153 -740161 -740171 -740189 -740191 -740227 -740237 -740279 -740287 -740303 -740321 -740323 -740329 -740351 -740359 -740371 -740387 -740423 -740429 -740461 -740473 -740477 -740483 -740513 -740521 -740527 -740533 -740549 -740561 -740581 -740591 -740599 -740603 -740651 -740653 -740659 -740671 -740681 -740687 -740693 -740711 -740713 -740717 -740737 -740749 -740801 -740849 -740891 -740893 -740897 -740903 -740923 -740939 -740951 -740969 -740989 -741001 -741007 -741011 -741031 -741043 -741053 -741061 -741071 -741077 -741079 -741101 -741119 -741121 -741127 -741131 -741137 -741163 -741187 -741193 -741227 -741229 -741233 -741253 -741283 -741337 -741341 -741343 -741347 -741373 -741401 -741409 -741413 -741431 -741457 -741467 -741469 -741473 -741479 -741491 -741493 -741509 -741541 -741547 -741563 -741569 -741593 -741599 -741641 -741661 -741667 -741677 -741679 -741683 -741691 -741709 -741721 -741781 -741787 -741803 -741809 -741827 -741833 -741847 -741857 -741859 -741869 -741877 -741883 -741913 -741929 -741941 -741967 -741973 -741991 -742009 -742031 -742037 -742057 -742069 -742073 -742111 -742117 -742127 -742151 -742153 -742193 -742199 -742201 -742211 -742213 -742219 -742229 -742241 -742243 -742253 -742277 -742283 -742289 -742307 -742327 -742333 -742351 -742369 -742381 -742393 -742409 -742439 -742457 -742499 -742507 -742513 -742519 -742531 -742537 -742541 -742549 -742559 -742579 -742591 -742607 -742619 -742657 -742663 -742673 -742681 -742697 -742699 -742711 -742717 -742723 -742757 -742759 -742783 -742789 -742801 -742817 -742891 -742897 -742909 -742913 -742943 -742949 -742967 -742981 -742991 -742993 -742999 -743027 -743047 -743059 -743069 -743089 -743111 -743123 -743129 -743131 -743137 -743143 -743159 -743161 -743167 -743173 -743177 -743179 -743203 -743209 -743221 -743251 -743263 -743269 -743273 -743279 -743297 -743321 -743333 -743339 -743363 -743377 -743401 -743423 -743447 -743507 -743549 -743551 -743573 -743579 -743591 -743609 -743657 -743669 -743671 -743689 -743693 -743711 -743731 -743747 -743777 -743779 -743791 -743803 -743819 -743833 -743837 -743849 -743851 -743881 -743891 -743917 -743921 -743923 -743933 -743947 -743987 -743989 -744019 -744043 -744071 -744077 -744083 -744113 -744127 -744137 -744179 -744187 -744199 -744203 -744221 -744239 -744251 -744253 -744283 -744301 -744313 -744353 -744371 -744377 -744389 -744391 -744397 -744407 -744409 -744431 -744451 -744493 -744503 -744511 -744539 -744547 -744559 -744599 -744607 -744637 -744641 -744649 -744659 -744661 -744677 -744701 -744707 -744721 -744727 -744739 -744761 -744767 -744791 -744811 -744817 -744823 -744829 -744833 -744859 -744893 -744911 -744917 -744941 -744949 -744959 -744977 -745001 -745013 -745027 -745033 -745037 -745051 -745067 -745103 -745117 -745133 -745141 -745181 -745187 -745189 -745201 -745231 -745243 -745247 -745249 -745273 -745301 -745307 -745337 -745343 -745357 -745369 -745379 -745391 -745397 -745471 -745477 -745517 -745529 -745531 -745543 -745567 -745573 -745601 -745609 -745621 -745631 -745649 -745673 -745697 -745699 -745709 -745711 -745727 -745733 -745741 -745747 -745751 -745753 -745757 -745817 -745837 -745859 -745873 -745903 -745931 -745933 -745939 -745951 -745973 -745981 -745993 -745999 -746017 -746023 -746033 -746041 -746047 -746069 -746099 -746101 -746107 -746117 -746129 -746153 -746167 -746171 -746177 -746183 -746191 -746197 -746203 -746209 -746227 -746231 -746233 -746243 -746267 -746287 -746303 -746309 -746329 -746353 -746363 -746371 -746411 -746413 -746429 -746477 -746479 -746483 -746497 -746503 -746507 -746509 -746531 -746533 -746561 -746563 -746597 -746653 -746659 -746671 -746677 -746723 -746737 -746743 -746747 -746749 -746773 -746777 -746791 -746797 -746807 -746813 -746839 -746843 -746869 -746873 -746891 -746899 -746903 -746939 -746951 -746957 -746959 -746969 -746981 -746989 -747037 -747049 -747053 -747073 -747107 -747113 -747139 -747157 -747161 -747199 -747203 -747223 -747239 -747259 -747277 -747283 -747287 -747319 -747323 -747343 -747361 -747377 -747391 -747401 -747407 -747421 -747427 -747449 -747451 -747457 -747463 -747493 -747497 -747499 -747521 -747529 -747547 -747557 -747563 -747583 -747587 -747599 -747611 -747619 -747647 -747673 -747679 -747713 -747731 -747737 -747743 -747763 -747781 -747811 -747827 -747829 -747833 -747839 -747841 -747853 -747863 -747869 -747871 -747889 -747917 -747919 -747941 -747953 -747977 -747979 -747991 -748003 -748019 -748021 -748039 -748057 -748091 -748093 -748133 -748169 -748183 -748199 -748207 -748211 -748217 -748219 -748249 -748271 -748273 -748283 -748301 -748331 -748337 -748339 -748343 -748361 -748379 -748387 -748441 -748453 -748463 -748471 -748481 -748487 -748499 -748513 -748523 -748541 -748567 -748589 -748597 -748603 -748609 -748613 -748633 -748637 -748639 -748669 -748687 -748691 -748703 -748711 -748717 -748723 -748729 -748763 -748777 -748789 -748801 -748807 -748817 -748819 -748823 -748829 -748831 -748849 -748861 -748871 -748877 -748883 -748889 -748921 -748933 -748963 -748973 -748981 -748987 -749011 -749027 -749051 -749069 -749081 -749083 -749093 -749129 -749137 -749143 -749149 -749153 -749167 -749171 -749183 -749197 -749209 -749219 -749237 -749249 -749257 -749267 -749279 -749297 -749299 -749323 -749339 -749347 -749351 -749383 -749393 -749401 -749423 -749429 -749431 -749443 -749449 -749453 -749461 -749467 -749471 -749543 -749557 -749587 -749641 -749653 -749659 -749677 -749701 -749711 -749729 -749741 -749747 -749761 -749773 -749779 -749803 -749807 -749809 -749843 -749851 -749863 -749891 -749893 -749899 -749909 -749923 -749927 -749939 -749941 -749971 -749993 -750019 -750037 -750059 -750077 -750083 -750097 -750119 -750121 -750131 -750133 -750137 -750151 -750157 -750161 -750163 -750173 -750179 -750203 -750209 -750223 -750229 -750287 -750311 -750313 -750353 -750383 -750401 -750413 -750419 -750437 -750457 -750473 -750487 -750509 -750517 -750521 -750553 -750571 -750599 -750613 -750641 -750653 -750661 -750667 -750679 -750691 -750707 -750713 -750719 -750721 -750749 -750769 -750787 -750791 -750797 -750803 -750809 -750817 -750829 -750853 -750857 -750863 -750917 -750929 -750943 -750961 -750977 -750983 -751001 -751007 -751021 -751027 -751057 -751061 -751087 -751103 -751123 -751133 -751139 -751141 -751147 -751151 -751181 -751183 -751189 -751193 -751199 -751207 -751217 -751237 -751259 -751273 -751277 -751291 -751297 -751301 -751307 -751319 -751321 -751327 -751343 -751351 -751357 -751363 -751367 -751379 -751411 -751423 -751447 -751453 -751463 -751481 -751523 -751529 -751549 -751567 -751579 -751609 -751613 -751627 -751631 -751633 -751637 -751643 -751661 -751669 -751691 -751711 -751717 -751727 -751739 -751747 -751753 -751759 -751763 -751787 -751799 -751813 -751823 -751841 -751853 -751867 -751871 -751879 -751901 -751909 -751913 -751921 -751943 -751957 -751969 -751987 -751997 -752009 -752023 -752033 -752053 -752083 -752093 -752107 -752111 -752117 -752137 -752149 -752177 -752183 -752189 -752197 -752201 -752203 -752207 -752251 -752263 -752273 -752281 -752287 -752291 -752293 -752299 -752303 -752351 -752359 -752383 -752413 -752431 -752447 -752449 -752459 -752483 -752489 -752503 -752513 -752519 -752527 -752569 -752581 -752593 -752603 -752627 -752639 -752651 -752681 -752683 -752699 -752701 -752707 -752747 -752771 -752789 -752797 -752803 -752809 -752819 -752821 -752831 -752833 -752861 -752867 -752881 -752891 -752903 -752911 -752929 -752933 -752977 -752993 -753001 -753007 -753019 -753023 -753031 -753079 -753091 -753127 -753133 -753139 -753143 -753161 -753187 -753191 -753197 -753229 -753257 -753307 -753329 -753341 -753353 -753367 -753373 -753383 -753409 -753421 -753427 -753437 -753439 -753461 -753463 -753497 -753499 -753527 -753547 -753569 -753583 -753587 -753589 -753611 -753617 -753619 -753631 -753647 -753659 -753677 -753679 -753689 -753691 -753707 -753719 -753721 -753737 -753743 -753751 -753773 -753793 -753799 -753803 -753811 -753821 -753839 -753847 -753859 -753931 -753937 -753941 -753947 -753959 -753979 -753983 -754003 -754027 -754037 -754043 -754057 -754067 -754073 -754081 -754093 -754099 -754109 -754111 -754121 -754123 -754133 -754153 -754157 -754181 -754183 -754207 -754211 -754217 -754223 -754241 -754249 -754267 -754279 -754283 -754289 -754297 -754301 -754333 -754337 -754343 -754367 -754373 -754379 -754381 -754399 -754417 -754421 -754427 -754451 -754463 -754483 -754489 -754513 -754531 -754549 -754573 -754577 -754583 -754597 -754627 -754639 -754651 -754703 -754709 -754711 -754717 -754723 -754739 -754751 -754771 -754781 -754811 -754829 -754861 -754877 -754891 -754903 -754907 -754921 -754931 -754937 -754939 -754967 -754969 -754973 -754979 -754981 -754991 -754993 -755009 -755033 -755057 -755071 -755077 -755081 -755087 -755107 -755137 -755143 -755147 -755171 -755173 -755203 -755213 -755233 -755239 -755257 -755267 -755273 -755309 -755311 -755317 -755329 -755333 -755351 -755357 -755371 -755387 -755393 -755399 -755401 -755413 -755437 -755441 -755449 -755473 -755483 -755509 -755539 -755551 -755561 -755567 -755569 -755593 -755597 -755617 -755627 -755663 -755681 -755707 -755717 -755719 -755737 -755759 -755767 -755771 -755789 -755791 -755809 -755813 -755861 -755863 -755869 -755879 -755899 -755903 -755959 -755969 -755977 -756011 -756023 -756043 -756053 -756097 -756101 -756127 -756131 -756139 -756149 -756167 -756179 -756191 -756199 -756227 -756247 -756251 -756253 -756271 -756281 -756289 -756293 -756319 -756323 -756331 -756373 -756403 -756419 -756421 -756433 -756443 -756463 -756467 -756527 -756533 -756541 -756563 -756571 -756593 -756601 -756607 -756629 -756641 -756649 -756667 -756673 -756683 -756689 -756703 -756709 -756719 -756727 -756739 -756773 -756799 -756829 -756839 -756853 -756869 -756881 -756887 -756919 -756923 -756961 -756967 -756971 -757019 -757039 -757063 -757067 -757109 -757111 -757151 -757157 -757171 -757181 -757201 -757241 -757243 -757247 -757259 -757271 -757291 -757297 -757307 -757319 -757327 -757331 -757343 -757363 -757381 -757387 -757403 -757409 -757417 -757429 -757433 -757457 -757481 -757487 -757507 -757513 -757517 -757543 -757553 -757577 -757579 -757583 -757607 -757633 -757651 -757661 -757693 -757699 -757709 -757711 -757727 -757751 -757753 -757763 -757793 -757807 -757811 -757819 -757829 -757879 -757903 -757909 -757927 -757937 -757943 -757951 -757993 -757997 -758003 -758029 -758041 -758053 -758071 -758083 -758099 -758101 -758111 -758137 -758141 -758159 -758179 -758189 -758201 -758203 -758227 -758231 -758237 -758243 -758267 -758269 -758273 -758279 -758299 -758323 -758339 -758341 -758357 -758363 -758383 -758393 -758411 -758431 -758441 -758449 -758453 -758491 -758501 -758503 -758519 -758521 -758551 -758561 -758573 -758579 -758599 -758617 -758629 -758633 -758671 -758687 -758699 -758707 -758711 -758713 -758729 -758731 -758741 -758743 -758753 -758767 -758783 -758789 -758819 -758827 -758837 -758851 -758867 -758887 -758893 -758899 -758929 -758941 -758957 -758963 -758969 -758971 -758987 -759001 -759019 -759029 -759037 -759047 -759053 -759089 -759103 -759113 -759131 -759149 -759167 -759173 -759179 -759181 -759193 -759223 -759229 -759263 -759287 -759293 -759301 -759313 -759329 -759359 -759371 -759377 -759397 -759401 -759431 -759433 -759457 -759463 -759467 -759491 -759503 -759523 -759547 -759553 -759557 -759559 -759569 -759571 -759581 -759589 -759599 -759617 -759623 -759631 -759637 -759641 -759653 -759659 -759673 -759691 -759697 -759701 -759709 -759719 -759727 -759739 -759757 -759763 -759797 -759799 -759821 -759833 -759881 -759893 -759911 -759923 -759929 -759947 -759953 -759959 -759961 -759973 -760007 -760043 -760063 -760079 -760093 -760103 -760117 -760129 -760141 -760147 -760153 -760163 -760169 -760183 -760187 -760211 -760229 -760231 -760237 -760241 -760261 -760267 -760273 -760289 -760297 -760301 -760321 -760343 -760367 -760373 -760411 -760423 -760433 -760447 -760453 -760457 -760477 -760489 -760499 -760511 -760519 -760531 -760537 -760549 -760553 -760561 -760567 -760579 -760607 -760619 -760621 -760637 -760649 -760657 -760693 -760723 -760729 -760759 -760769 -760783 -760807 -760813 -760841 -760843 -760847 -760871 -760891 -760897 -760901 -760913 -760927 -760933 -760939 -760951 -760961 -760993 -760997 -761003 -761009 -761023 -761051 -761069 -761087 -761113 -761119 -761129 -761153 -761161 -761177 -761179 -761183 -761203 -761207 -761213 -761227 -761249 -761251 -761261 -761263 -761291 -761297 -761347 -761351 -761357 -761363 -761377 -761381 -761389 -761393 -761399 -761407 -761417 -761429 -761437 -761441 -761443 -761459 -761471 -761477 -761483 -761489 -761521 -761531 -761533 -761543 -761561 -761567 -761591 -761597 -761603 -761611 -761623 -761633 -761669 -761671 -761681 -761689 -761711 -761713 -761731 -761773 -761777 -761779 -761807 -761809 -761833 -761861 -761863 -761869 -761879 -761897 -761927 -761939 -761963 -761977 -761983 -761993 -762001 -762007 -762017 -762031 -762037 -762049 -762053 -762061 -762101 -762121 -762187 -762211 -762227 -762233 -762239 -762241 -762253 -762257 -762277 -762319 -762329 -762367 -762371 -762373 -762379 -762389 -762397 -762401 -762407 -762409 -762479 -762491 -762499 -762529 -762539 -762547 -762557 -762563 -762571 -762577 -762583 -762599 -762647 -762653 -762659 -762667 -762721 -762737 -762743 -762761 -762779 -762791 -762809 -762821 -762823 -762847 -762871 -762877 -762893 -762899 -762901 -762913 -762917 -762919 -762959 -762967 -762973 -762989 -763001 -763013 -763027 -763031 -763039 -763043 -763067 -763073 -763093 -763111 -763123 -763141 -763157 -763159 -763183 -763201 -763223 -763237 -763261 -763267 -763271 -763303 -763307 -763339 -763349 -763369 -763381 -763391 -763403 -763409 -763417 -763423 -763429 -763447 -763457 -763471 -763481 -763493 -763513 -763523 -763549 -763559 -763573 -763579 -763583 -763597 -763601 -763613 -763619 -763621 -763627 -763649 -763663 -763673 -763699 -763739 -763751 -763753 -763757 -763771 -763787 -763801 -763811 -763823 -763843 -763859 -763879 -763883 -763897 -763901 -763907 -763913 -763921 -763927 -763937 -763943 -763957 -763967 -763999 -764003 -764011 -764017 -764021 -764041 -764051 -764053 -764059 -764081 -764089 -764111 -764131 -764143 -764149 -764171 -764189 -764209 -764233 -764249 -764251 -764261 -764273 -764293 -764317 -764321 -764327 -764339 -764341 -764369 -764381 -764399 -764431 -764447 -764459 -764471 -764501 -764521 -764539 -764551 -764563 -764587 -764591 -764593 -764611 -764623 -764627 -764629 -764657 -764683 -764689 -764717 -764719 -764723 -764783 -764789 -764809 -764837 -764839 -764849 -764857 -764887 -764891 -764893 -764899 -764903 -764947 -764969 -764971 -764977 -764989 -764993 -764999 -765007 -765031 -765041 -765043 -765047 -765059 -765091 -765097 -765103 -765109 -765131 -765137 -765139 -765143 -765151 -765169 -765181 -765199 -765203 -765209 -765211 -765227 -765229 -765241 -765251 -765257 -765283 -765287 -765293 -765307 -765313 -765319 -765329 -765353 -765379 -765383 -765389 -765409 -765437 -765439 -765461 -765467 -765487 -765497 -765503 -765521 -765533 -765539 -765577 -765581 -765587 -765613 -765619 -765623 -765649 -765659 -765673 -765707 -765727 -765749 -765763 -765767 -765773 -765781 -765823 -765827 -765847 -765851 -765857 -765859 -765881 -765889 -765893 -765899 -765907 -765913 -765931 -765949 -765953 -765971 -765983 -765991 -766021 -766039 -766049 -766067 -766079 -766091 -766097 -766109 -766111 -766127 -766163 -766169 -766177 -766187 -766211 -766223 -766229 -766231 -766237 -766247 -766261 -766273 -766277 -766301 -766313 -766321 -766333 -766357 -766361 -766369 -766373 -766387 -766393 -766399 -766421 -766439 -766453 -766457 -766471 -766477 -766487 -766501 -766511 -766531 -766541 -766543 -766553 -766559 -766583 -766609 -766637 -766639 -766651 -766679 -766687 -766721 -766739 -766757 -766763 -766769 -766793 -766807 -766811 -766813 -766817 -766861 -766867 -766873 -766877 -766891 -766901 -766907 -766937 -766939 -766943 -766957 -766967 -766999 -767017 -767029 -767051 -767071 -767089 -767093 -767101 -767111 -767131 -767147 -767153 -767161 -767167 -767203 -767243 -767279 -767287 -767293 -767309 -767317 -767321 -767323 -767339 -767357 -767359 -767381 -767399 -767423 -767443 -767471 -767489 -767509 -767513 -767521 -767527 -767537 -767539 -767549 -767551 -767587 -767597 -767603 -767617 -767623 -767633 -767647 -767677 -767681 -767707 -767729 -767747 -767749 -767759 -767761 -767773 -767783 -767813 -767827 -767831 -767843 -767857 -767863 -767867 -767869 -767881 -767909 -767951 -767957 -768013 -768029 -768041 -768049 -768059 -768073 -768101 -768107 -768127 -768133 -768139 -768161 -768167 -768169 -768191 -768193 -768197 -768199 -768203 -768221 -768241 -768259 -768263 -768301 -768319 -768323 -768329 -768343 -768347 -768353 -768359 -768371 -768373 -768377 -768389 -768401 -768409 -768419 -768431 -768437 -768457 -768461 -768479 -768491 -768503 -768541 -768563 -768571 -768589 -768613 -768623 -768629 -768631 -768641 -768643 -768653 -768671 -768727 -768751 -768767 -768773 -768787 -768793 -768799 -768811 -768841 -768851 -768853 -768857 -768869 -768881 -768923 -768931 -768941 -768953 -768979 -768983 -769003 -769007 -769019 -769033 -769039 -769057 -769073 -769081 -769091 -769117 -769123 -769147 -769151 -769159 -769169 -769207 -769231 -769243 -769247 -769259 -769261 -769273 -769289 -769297 -769309 -769319 -769339 -769357 -769387 -769411 -769421 -769423 -769429 -769453 -769459 -769463 -769469 -769487 -769541 -769543 -769547 -769553 -769577 -769579 -769589 -769591 -769597 -769619 -769627 -769661 -769663 -769673 -769687 -769723 -769729 -769733 -769739 -769751 -769781 -769789 -769799 -769807 -769837 -769871 -769903 -769919 -769927 -769943 -769961 -769963 -769973 -769987 -769997 -769999 -770027 -770039 -770041 -770047 -770053 -770057 -770059 -770069 -770101 -770111 -770113 -770123 -770129 -770167 -770177 -770179 -770183 -770191 -770207 -770227 -770233 -770239 -770261 -770281 -770291 -770309 -770311 -770353 -770359 -770387 -770401 -770417 -770437 -770447 -770449 -770459 -770503 -770519 -770527 -770533 -770537 -770551 -770557 -770573 -770579 -770587 -770591 -770597 -770611 -770639 -770641 -770647 -770657 -770663 -770669 -770741 -770761 -770767 -770771 -770789 -770801 -770813 -770837 -770839 -770843 -770863 -770867 -770873 -770881 -770897 -770909 -770927 -770929 -770951 -770971 -770981 -770993 -771011 -771013 -771019 -771031 -771037 -771047 -771049 -771073 -771079 -771091 -771109 -771143 -771163 -771179 -771181 -771209 -771217 -771227 -771233 -771269 -771283 -771289 -771293 -771299 -771301 -771349 -771359 -771389 -771401 -771403 -771427 -771431 -771437 -771439 -771461 -771473 -771481 -771499 -771503 -771509 -771517 -771527 -771553 -771569 -771583 -771587 -771607 -771619 -771623 -771629 -771637 -771643 -771653 -771679 -771691 -771697 -771703 -771739 -771763 -771769 -771781 -771809 -771853 -771863 -771877 -771887 -771889 -771899 -771917 -771937 -771941 -771961 -771971 -771973 -771997 -772001 -772003 -772019 -772061 -772073 -772081 -772091 -772097 -772127 -772139 -772147 -772159 -772169 -772181 -772207 -772229 -772231 -772273 -772279 -772297 -772313 -772333 -772339 -772349 -772367 -772379 -772381 -772391 -772393 -772403 -772439 -772441 -772451 -772459 -772477 -772493 -772517 -772537 -772567 -772571 -772573 -772591 -772619 -772631 -772649 -772657 -772661 -772663 -772669 -772691 -772697 -772703 -772721 -772757 -772771 -772789 -772843 -772847 -772853 -772859 -772867 -772903 -772907 -772909 -772913 -772921 -772949 -772963 -772987 -772991 -773021 -773023 -773027 -773029 -773039 -773057 -773063 -773081 -773083 -773093 -773117 -773147 -773153 -773159 -773207 -773209 -773231 -773239 -773249 -773251 -773273 -773287 -773299 -773317 -773341 -773363 -773371 -773387 -773393 -773407 -773417 -773447 -773453 -773473 -773491 -773497 -773501 -773533 -773537 -773561 -773567 -773569 -773579 -773599 -773603 -773609 -773611 -773657 -773659 -773681 -773683 -773693 -773713 -773719 -773723 -773767 -773777 -773779 -773803 -773821 -773831 -773837 -773849 -773863 -773867 -773869 -773879 -773897 -773909 -773933 -773939 -773951 -773953 -773987 -773989 -773999 -774001 -774017 -774023 -774047 -774071 -774073 -774083 -774107 -774119 -774127 -774131 -774133 -774143 -774149 -774161 -774173 -774181 -774199 -774217 -774223 -774229 -774233 -774239 -774283 -774289 -774313 -774317 -774337 -774343 -774377 -774427 -774439 -774463 -774467 -774491 -774511 -774523 -774541 -774551 -774577 -774583 -774589 -774593 -774601 -774629 -774643 -774661 -774667 -774671 -774679 -774691 -774703 -774733 -774757 -774773 -774779 -774791 -774797 -774799 -774803 -774811 -774821 -774833 -774853 -774857 -774863 -774901 -774919 -774929 -774931 -774959 -774997 -775007 -775037 -775043 -775057 -775063 -775079 -775087 -775091 -775097 -775121 -775147 -775153 -775157 -775163 -775189 -775193 -775237 -775241 -775259 -775267 -775273 -775309 -775343 -775349 -775361 -775363 -775367 -775393 -775417 -775441 -775451 -775477 -775507 -775513 -775517 -775531 -775553 -775573 -775601 -775603 -775613 -775627 -775633 -775639 -775661 -775669 -775681 -775711 -775729 -775739 -775741 -775757 -775777 -775787 -775807 -775811 -775823 -775861 -775871 -775889 -775919 -775933 -775937 -775939 -775949 -775963 -775987 -776003 -776029 -776047 -776057 -776059 -776077 -776099 -776117 -776119 -776137 -776143 -776159 -776173 -776177 -776179 -776183 -776201 -776219 -776221 -776233 -776249 -776257 -776267 -776287 -776317 -776327 -776357 -776389 -776401 -776429 -776449 -776453 -776467 -776471 -776483 -776497 -776507 -776513 -776521 -776551 -776557 -776561 -776563 -776569 -776599 -776627 -776651 -776683 -776693 -776719 -776729 -776749 -776753 -776759 -776801 -776813 -776819 -776837 -776851 -776861 -776869 -776879 -776887 -776899 -776921 -776947 -776969 -776977 -776983 -776987 -777001 -777011 -777013 -777031 -777041 -777071 -777097 -777103 -777109 -777137 -777143 -777151 -777167 -777169 -777173 -777181 -777187 -777191 -777199 -777209 -777221 -777241 -777247 -777251 -777269 -777277 -777313 -777317 -777349 -777353 -777373 -777383 -777389 -777391 -777419 -777421 -777431 -777433 -777437 -777451 -777463 -777473 -777479 -777541 -777551 -777571 -777583 -777589 -777617 -777619 -777641 -777643 -777661 -777671 -777677 -777683 -777731 -777737 -777743 -777761 -777769 -777781 -777787 -777817 -777839 -777857 -777859 -777863 -777871 -777877 -777901 -777911 -777919 -777977 -777979 -777989 -778013 -778027 -778049 -778051 -778061 -778079 -778081 -778091 -778097 -778109 -778111 -778121 -778123 -778153 -778163 -778187 -778201 -778213 -778223 -778237 -778241 -778247 -778301 -778307 -778313 -778319 -778333 -778357 -778361 -778363 -778391 -778397 -778403 -778409 -778417 -778439 -778469 -778507 -778511 -778513 -778523 -778529 -778537 -778541 -778553 -778559 -778567 -778579 -778597 -778633 -778643 -778663 -778667 -778681 -778693 -778697 -778699 -778709 -778717 -778727 -778733 -778759 -778763 -778769 -778777 -778793 -778819 -778831 -778847 -778871 -778873 -778879 -778903 -778907 -778913 -778927 -778933 -778951 -778963 -778979 -778993 -779003 -779011 -779021 -779039 -779063 -779069 -779081 -779101 -779111 -779131 -779137 -779159 -779173 -779189 -779221 -779231 -779239 -779249 -779267 -779327 -779329 -779341 -779347 -779351 -779353 -779357 -779377 -779413 -779477 -779489 -779507 -779521 -779531 -779543 -779561 -779563 -779573 -779579 -779591 -779593 -779599 -779609 -779617 -779621 -779657 -779659 -779663 -779693 -779699 -779707 -779731 -779747 -779749 -779761 -779767 -779771 -779791 -779797 -779827 -779837 -779869 -779873 -779879 -779887 -779899 -779927 -779939 -779971 -779981 -779983 -779993 -780029 -780037 -780041 -780047 -780049 -780061 -780119 -780127 -780163 -780173 -780179 -780191 -780193 -780211 -780223 -780233 -780253 -780257 -780287 -780323 -780343 -780347 -780371 -780379 -780383 -780389 -780397 -780401 -780421 -780433 -780457 -780469 -780499 -780523 -780553 -780583 -780587 -780601 -780613 -780631 -780649 -780667 -780671 -780679 -780683 -780697 -780707 -780719 -780721 -780733 -780799 -780803 -780809 -780817 -780823 -780833 -780841 -780851 -780853 -780869 -780877 -780887 -780889 -780917 -780931 -780953 -780961 -780971 -780973 -780991 -781003 -781007 -781021 -781043 -781051 -781063 -781069 -781087 -781111 -781117 -781127 -781129 -781139 -781163 -781171 -781199 -781211 -781217 -781229 -781243 -781247 -781271 -781283 -781301 -781307 -781309 -781321 -781327 -781351 -781357 -781367 -781369 -781387 -781397 -781399 -781409 -781423 -781427 -781433 -781453 -781481 -781483 -781493 -781511 -781513 -781519 -781523 -781531 -781559 -781567 -781589 -781601 -781607 -781619 -781631 -781633 -781661 -781673 -781681 -781721 -781733 -781741 -781771 -781799 -781801 -781817 -781819 -781853 -781861 -781867 -781883 -781889 -781897 -781919 -781951 -781961 -781967 -781969 -781973 -781987 -781997 -781999 -782003 -782009 -782011 -782053 -782057 -782071 -782083 -782087 -782107 -782113 -782123 -782129 -782137 -782141 -782147 -782149 -782183 -782189 -782191 -782209 -782219 -782231 -782251 -782263 -782267 -782297 -782311 -782329 -782339 -782371 -782381 -782387 -782389 -782393 -782429 -782443 -782461 -782473 -782489 -782497 -782501 -782519 -782539 -782581 -782611 -782641 -782659 -782669 -782671 -782687 -782689 -782707 -782711 -782723 -782777 -782783 -782791 -782839 -782849 -782861 -782891 -782911 -782921 -782941 -782963 -782981 -782983 -782993 -783007 -783011 -783019 -783023 -783043 -783077 -783089 -783119 -783121 -783131 -783137 -783143 -783149 -783151 -783191 -783193 -783197 -783227 -783247 -783257 -783259 -783269 -783283 -783317 -783323 -783329 -783337 -783359 -783361 -783373 -783379 -783407 -783413 -783421 -783473 -783487 -783527 -783529 -783533 -783553 -783557 -783569 -783571 -783599 -783613 -783619 -783641 -783647 -783661 -783677 -783689 -783691 -783701 -783703 -783707 -783719 -783721 -783733 -783737 -783743 -783749 -783763 -783767 -783779 -783781 -783787 -783791 -783793 -783799 -783803 -783829 -783869 -783877 -783931 -783953 -784009 -784039 -784061 -784081 -784087 -784097 -784103 -784109 -784117 -784129 -784153 -784171 -784181 -784183 -784211 -784213 -784219 -784229 -784243 -784249 -784283 -784307 -784309 -784313 -784321 -784327 -784349 -784351 -784367 -784373 -784379 -784387 -784409 -784411 -784423 -784447 -784451 -784457 -784463 -784471 -784481 -784489 -784501 -784513 -784541 -784543 -784547 -784561 -784573 -784577 -784583 -784603 -784627 -784649 -784661 -784687 -784697 -784717 -784723 -784727 -784753 -784789 -784799 -784831 -784837 -784841 -784859 -784867 -784897 -784913 -784919 -784939 -784957 -784961 -784981 -785003 -785017 -785033 -785053 -785093 -785101 -785107 -785119 -785123 -785129 -785143 -785153 -785159 -785167 -785203 -785207 -785219 -785221 -785227 -785249 -785269 -785287 -785293 -785299 -785303 -785311 -785321 -785329 -785333 -785341 -785347 -785353 -785357 -785363 -785377 -785413 -785423 -785431 -785459 -785461 -785483 -785501 -785503 -785527 -785537 -785549 -785569 -785573 -785579 -785591 -785597 -785623 -785627 -785641 -785651 -785671 -785693 -785717 -785731 -785737 -785753 -785773 -785777 -785779 -785801 -785803 -785809 -785839 -785857 -785861 -785879 -785903 -785921 -785923 -785947 -785951 -785963 -786001 -786013 -786017 -786031 -786047 -786053 -786059 -786061 -786077 -786109 -786127 -786151 -786167 -786173 -786179 -786197 -786211 -786223 -786241 -786251 -786271 -786307 -786311 -786319 -786329 -786337 -786349 -786371 -786407 -786419 -786431 -786433 -786449 -786469 -786491 -786547 -786551 -786553 -786587 -786589 -786613 -786629 -786659 -786661 -786673 -786691 -786697 -786701 -786703 -786707 -786719 -786739 -786763 -786803 -786823 -786829 -786833 -786859 -786881 -786887 -786889 -786901 -786931 -786937 -786941 -786949 -786959 -786971 -786979 -786983 -787021 -787043 -787051 -787057 -787067 -787069 -787079 -787091 -787099 -787123 -787139 -787153 -787181 -787187 -787207 -787217 -787243 -787261 -787277 -787289 -787309 -787331 -787333 -787337 -787357 -787361 -787427 -787429 -787433 -787439 -787447 -787469 -787477 -787483 -787489 -787513 -787517 -787519 -787529 -787537 -787541 -787547 -787573 -787601 -787609 -787621 -787639 -787649 -787667 -787697 -787711 -787747 -787751 -787757 -787769 -787771 -787777 -787783 -787793 -787807 -787811 -787817 -787823 -787837 -787879 -787883 -787903 -787907 -787939 -787973 -787981 -787993 -787999 -788009 -788023 -788027 -788033 -788041 -788071 -788077 -788087 -788089 -788093 -788107 -788129 -788153 -788159 -788167 -788173 -788189 -788209 -788213 -788231 -788261 -788267 -788287 -788309 -788317 -788321 -788351 -788353 -788357 -788363 -788369 -788377 -788383 -788387 -788393 -788399 -788413 -788419 -788429 -788449 -788467 -788479 -788497 -788521 -788527 -788531 -788537 -788549 -788561 -788563 -788569 -788603 -788621 -788651 -788659 -788677 -788687 -788701 -788719 -788761 -788779 -788789 -788813 -788819 -788849 -788863 -788867 -788869 -788873 -788891 -788897 -788903 -788927 -788933 -788941 -788947 -788959 -788971 -788993 -788999 -789001 -789017 -789029 -789031 -789067 -789077 -789091 -789097 -789101 -789109 -789121 -789133 -789137 -789149 -789169 -789181 -789221 -789227 -789251 -789311 -789323 -789331 -789343 -789367 -789377 -789389 -789391 -789407 -789419 -789443 -789473 -789491 -789493 -789511 -789527 -789533 -789557 -789571 -789577 -789587 -789589 -789611 -789623 -789631 -789653 -789671 -789673 -789683 -789689 -789709 -789713 -789721 -789731 -789739 -789749 -789793 -789823 -789829 -789847 -789851 -789857 -789883 -789941 -789959 -789961 -789967 -789977 -789979 -790003 -790021 -790033 -790043 -790051 -790057 -790063 -790087 -790093 -790099 -790121 -790169 -790171 -790189 -790199 -790201 -790219 -790241 -790261 -790271 -790277 -790289 -790291 -790327 -790331 -790333 -790351 -790369 -790379 -790397 -790403 -790417 -790421 -790429 -790451 -790459 -790481 -790501 -790513 -790519 -790523 -790529 -790547 -790567 -790583 -790589 -790607 -790613 -790633 -790637 -790649 -790651 -790693 -790697 -790703 -790709 -790733 -790739 -790747 -790753 -790781 -790793 -790817 -790819 -790831 -790843 -790861 -790871 -790879 -790883 -790897 -790927 -790957 -790961 -790967 -790969 -790991 -790997 -791003 -791009 -791017 -791029 -791047 -791053 -791081 -791093 -791099 -791111 -791117 -791137 -791159 -791191 -791201 -791209 -791227 -791233 -791251 -791257 -791261 -791291 -791309 -791311 -791317 -791321 -791347 -791363 -791377 -791387 -791411 -791419 -791431 -791443 -791447 -791473 -791489 -791519 -791543 -791561 -791563 -791569 -791573 -791599 -791627 -791629 -791657 -791663 -791677 -791699 -791773 -791783 -791789 -791797 -791801 -791803 -791827 -791849 -791851 -791887 -791891 -791897 -791899 -791909 -791927 -791929 -791933 -791951 -791969 -791971 -791993 -792023 -792031 -792037 -792041 -792049 -792061 -792067 -792073 -792101 -792107 -792109 -792119 -792131 -792151 -792163 -792179 -792223 -792227 -792229 -792241 -792247 -792257 -792263 -792277 -792283 -792293 -792299 -792301 -792307 -792317 -792359 -792371 -792377 -792383 -792397 -792413 -792443 -792461 -792479 -792481 -792487 -792521 -792529 -792551 -792553 -792559 -792563 -792581 -792593 -792601 -792613 -792629 -792637 -792641 -792643 -792647 -792667 -792679 -792689 -792691 -792697 -792703 -792709 -792713 -792731 -792751 -792769 -792793 -792797 -792821 -792871 -792881 -792893 -792907 -792919 -792929 -792941 -792959 -792973 -792983 -792989 -792991 -793043 -793069 -793099 -793103 -793123 -793129 -793139 -793159 -793181 -793187 -793189 -793207 -793229 -793253 -793279 -793297 -793301 -793327 -793333 -793337 -793343 -793379 -793399 -793439 -793447 -793453 -793487 -793489 -793493 -793511 -793517 -793519 -793537 -793547 -793553 -793561 -793591 -793601 -793607 -793621 -793627 -793633 -793669 -793673 -793691 -793699 -793711 -793717 -793721 -793733 -793739 -793757 -793769 -793777 -793787 -793789 -793813 -793841 -793843 -793853 -793867 -793889 -793901 -793927 -793931 -793939 -793957 -793967 -793979 -793981 -793999 -794009 -794011 -794023 -794033 -794039 -794041 -794063 -794071 -794077 -794089 -794111 -794113 -794119 -794137 -794141 -794149 -794153 -794161 -794173 -794179 -794191 -794201 -794203 -794207 -794221 -794231 -794239 -794249 -794327 -794341 -794363 -794383 -794389 -794399 -794407 -794413 -794449 -794471 -794473 -794477 -794483 -794491 -794509 -794531 -794537 -794543 -794551 -794557 -794569 -794579 -794587 -794593 -794641 -794653 -794657 -794659 -794669 -794693 -794711 -794741 -794743 -794749 -794779 -794831 -794879 -794881 -794887 -794921 -794923 -794953 -794957 -794993 -794999 -795001 -795007 -795023 -795071 -795077 -795079 -795083 -795097 -795101 -795103 -795121 -795127 -795139 -795149 -795161 -795187 -795203 -795211 -795217 -795233 -795239 -795251 -795253 -795299 -795307 -795323 -795329 -795337 -795343 -795349 -795427 -795449 -795461 -795467 -795479 -795493 -795503 -795517 -795527 -795533 -795539 -795551 -795581 -795589 -795601 -795643 -795647 -795649 -795653 -795659 -795661 -795667 -795679 -795703 -795709 -795713 -795727 -795737 -795761 -795763 -795791 -795793 -795797 -795799 -795803 -795827 -795829 -795871 -795877 -795913 -795917 -795931 -795937 -795941 -795943 -795947 -795979 -795983 -795997 -796001 -796009 -796063 -796067 -796091 -796121 -796139 -796141 -796151 -796171 -796177 -796181 -796189 -796193 -796217 -796247 -796259 -796267 -796291 -796303 -796307 -796337 -796339 -796361 -796363 -796373 -796379 -796387 -796391 -796409 -796447 -796451 -796459 -796487 -796493 -796517 -796531 -796541 -796553 -796561 -796567 -796571 -796583 -796591 -796619 -796633 -796657 -796673 -796687 -796693 -796699 -796709 -796711 -796751 -796759 -796769 -796777 -796781 -796799 -796801 -796813 -796819 -796847 -796849 -796853 -796867 -796871 -796877 -796889 -796921 -796931 -796933 -796937 -796951 -796967 -796969 -796981 -797003 -797009 -797021 -797029 -797033 -797039 -797051 -797053 -797057 -797063 -797077 -797119 -797131 -797143 -797161 -797171 -797201 -797207 -797273 -797281 -797287 -797309 -797311 -797333 -797353 -797359 -797383 -797389 -797399 -797417 -797429 -797473 -797497 -797507 -797509 -797539 -797549 -797551 -797557 -797561 -797567 -797569 -797579 -797581 -797591 -797593 -797611 -797627 -797633 -797647 -797681 -797689 -797701 -797711 -797729 -797743 -797747 -797767 -797773 -797813 -797833 -797851 -797869 -797887 -797897 -797911 -797917 -797933 -797947 -797957 -797977 -797987 -798023 -798043 -798059 -798067 -798071 -798079 -798089 -798097 -798101 -798121 -798131 -798139 -798143 -798151 -798173 -798179 -798191 -798197 -798199 -798221 -798223 -798227 -798251 -798257 -798263 -798271 -798293 -798319 -798331 -798373 -798383 -798397 -798403 -798409 -798443 -798451 -798461 -798481 -798487 -798503 -798517 -798521 -798527 -798533 -798569 -798599 -798613 -798641 -798647 -798649 -798667 -798691 -798697 -798701 -798713 -798727 -798737 -798751 -798757 -798773 -798781 -798799 -798823 -798871 -798887 -798911 -798923 -798929 -798937 -798943 -798961 -799003 -799021 -799031 -799061 -799063 -799091 -799093 -799103 -799147 -799151 -799171 -799217 -799219 -799223 -799259 -799291 -799301 -799303 -799307 -799313 -799333 -799343 -799361 -799363 -799369 -799417 -799427 -799441 -799453 -799471 -799481 -799483 -799489 -799507 -799523 -799529 -799543 -799553 -799573 -799609 -799613 -799619 -799621 -799633 -799637 -799651 -799657 -799661 -799679 -799723 -799727 -799739 -799741 -799753 -799759 -799789 -799801 -799807 -799817 -799837 -799853 -799859 -799873 -799891 -799921 -799949 -799961 -799979 -799991 -799993 -799999 -800011 -800029 -800053 -800057 -800077 -800083 -800089 -800113 -800117 -800119 -800123 -800131 -800143 -800159 -800161 -800171 -800209 -800213 -800221 -800231 -800237 -800243 -800281 -800287 -800291 -800311 -800329 -800333 -800351 -800357 -800399 -800407 -800417 -800419 -800441 -800447 -800473 -800477 -800483 -800497 -800509 -800519 -800521 -800533 -800537 -800539 -800549 -800557 -800573 -800587 -800593 -800599 -800621 -800623 -800647 -800651 -800659 -800663 -800669 -800677 -800687 -800693 -800707 -800711 -800729 -800731 -800741 -800743 -800759 -800773 -800783 -800801 -800861 -800873 -800879 -800897 -800903 -800909 -800923 -800953 -800959 -800971 -800977 -800993 -800999 -801001 -801007 -801011 -801019 -801037 -801061 -801077 -801079 -801103 -801107 -801127 -801137 -801179 -801187 -801197 -801217 -801247 -801277 -801289 -801293 -801301 -801331 -801337 -801341 -801349 -801371 -801379 -801403 -801407 -801419 -801421 -801461 -801469 -801487 -801503 -801517 -801539 -801551 -801557 -801569 -801571 -801607 -801611 -801617 -801631 -801641 -801677 -801683 -801701 -801707 -801709 -801733 -801761 -801791 -801809 -801811 -801817 -801833 -801841 -801859 -801883 -801947 -801949 -801959 -801973 -801989 -802007 -802019 -802027 -802031 -802037 -802073 -802103 -802121 -802127 -802129 -802133 -802141 -802147 -802159 -802163 -802177 -802181 -802183 -802189 -802231 -802253 -802279 -802283 -802297 -802331 -802339 -802357 -802387 -802421 -802441 -802453 -802463 -802471 -802499 -802511 -802523 -802531 -802573 -802583 -802589 -802597 -802603 -802609 -802643 -802649 -802651 -802661 -802667 -802709 -802721 -802729 -802733 -802751 -802759 -802777 -802783 -802787 -802793 -802799 -802811 -802829 -802831 -802873 -802909 -802913 -802933 -802951 -802969 -802979 -802987 -803027 -803041 -803053 -803057 -803059 -803087 -803093 -803119 -803141 -803171 -803189 -803207 -803227 -803237 -803251 -803269 -803273 -803287 -803311 -803323 -803333 -803347 -803359 -803389 -803393 -803399 -803417 -803441 -803443 -803447 -803449 -803461 -803479 -803483 -803497 -803501 -803513 -803519 -803549 -803587 -803591 -803609 -803611 -803623 -803629 -803651 -803659 -803669 -803687 -803717 -803729 -803731 -803741 -803749 -803813 -803819 -803849 -803857 -803867 -803893 -803897 -803911 -803921 -803927 -803939 -803963 -803977 -803987 -803989 -804007 -804017 -804031 -804043 -804059 -804073 -804077 -804091 -804107 -804113 -804119 -804127 -804157 -804161 -804179 -804191 -804197 -804203 -804211 -804239 -804259 -804281 -804283 -804313 -804317 -804329 -804337 -804341 -804367 -804371 -804383 -804409 -804443 -804449 -804473 -804493 -804497 -804511 -804521 -804523 -804541 -804553 -804571 -804577 -804581 -804589 -804607 -804611 -804613 -804619 -804653 -804689 -804697 -804703 -804709 -804743 -804751 -804757 -804761 -804767 -804803 -804823 -804829 -804833 -804847 -804857 -804877 -804889 -804893 -804901 -804913 -804919 -804929 -804941 -804943 -804983 -804989 -804997 -805019 -805027 -805031 -805033 -805037 -805061 -805067 -805073 -805081 -805097 -805099 -805109 -805111 -805121 -805153 -805159 -805177 -805187 -805213 -805219 -805223 -805241 -805249 -805267 -805271 -805279 -805289 -805297 -805309 -805313 -805327 -805331 -805333 -805339 -805369 -805381 -805397 -805403 -805421 -805451 -805463 -805471 -805487 -805499 -805501 -805507 -805517 -805523 -805531 -805537 -805559 -805573 -805583 -805589 -805633 -805639 -805687 -805703 -805711 -805723 -805729 -805741 -805757 -805789 -805799 -805807 -805811 -805843 -805853 -805859 -805867 -805873 -805877 -805891 -805901 -805913 -805933 -805967 -805991 -806009 -806011 -806017 -806023 -806027 -806033 -806041 -806051 -806059 -806087 -806107 -806111 -806129 -806137 -806153 -806159 -806177 -806203 -806213 -806233 -806257 -806261 -806263 -806269 -806291 -806297 -806317 -806329 -806363 -806369 -806371 -806381 -806383 -806389 -806447 -806453 -806467 -806483 -806503 -806513 -806521 -806543 -806549 -806579 -806581 -806609 -806639 -806657 -806671 -806719 -806737 -806761 -806783 -806789 -806791 -806801 -806807 -806821 -806857 -806893 -806903 -806917 -806929 -806941 -806947 -806951 -806977 -806999 -807011 -807017 -807071 -807077 -807083 -807089 -807097 -807113 -807119 -807127 -807151 -807181 -807187 -807193 -807197 -807203 -807217 -807221 -807241 -807251 -807259 -807281 -807299 -807337 -807371 -807379 -807383 -807403 -807407 -807409 -807419 -807427 -807463 -807473 -807479 -807487 -807491 -807493 -807509 -807511 -807523 -807539 -807559 -807571 -807607 -807613 -807629 -807637 -807647 -807689 -807707 -807731 -807733 -807749 -807757 -807787 -807797 -807809 -807817 -807869 -807871 -807901 -807907 -807923 -807931 -807941 -807943 -807949 -807973 -807997 -808019 -808021 -808039 -808081 -808097 -808111 -808147 -808153 -808169 -808177 -808187 -808211 -808217 -808229 -808237 -808261 -808267 -808307 -808309 -808343 -808349 -808351 -808361 -808363 -808369 -808373 -808391 -808399 -808417 -808421 -808439 -808441 -808459 -808481 -808517 -808523 -808553 -808559 -808579 -808589 -808597 -808601 -808603 -808627 -808637 -808651 -808679 -808681 -808693 -808699 -808721 -808733 -808739 -808747 -808751 -808771 -808777 -808789 -808793 -808837 -808853 -808867 -808919 -808937 -808957 -808961 -808981 -808991 -808993 -809023 -809041 -809051 -809063 -809087 -809093 -809101 -809141 -809143 -809147 -809173 -809177 -809189 -809201 -809203 -809213 -809231 -809239 -809243 -809261 -809269 -809273 -809297 -809309 -809323 -809339 -809357 -809359 -809377 -809383 -809399 -809401 -809407 -809423 -809437 -809443 -809447 -809453 -809461 -809491 -809507 -809521 -809527 -809563 -809569 -809579 -809581 -809587 -809603 -809629 -809701 -809707 -809719 -809729 -809737 -809741 -809747 -809749 -809759 -809771 -809779 -809797 -809801 -809803 -809821 -809827 -809833 -809839 -809843 -809869 -809891 -809903 -809909 -809917 -809929 -809981 -809983 -809993 -810013 -810023 -810049 -810053 -810059 -810071 -810079 -810091 -810109 -810137 -810149 -810151 -810191 -810193 -810209 -810223 -810239 -810253 -810259 -810269 -810281 -810307 -810319 -810343 -810349 -810353 -810361 -810367 -810377 -810379 -810389 -810391 -810401 -810409 -810419 -810427 -810437 -810443 -810457 -810473 -810487 -810493 -810503 -810517 -810533 -810539 -810541 -810547 -810553 -810571 -810581 -810583 -810587 -810643 -810653 -810659 -810671 -810697 -810737 -810757 -810763 -810769 -810791 -810809 -810839 -810853 -810871 -810881 -810893 -810907 -810913 -810923 -810941 -810949 -810961 -810967 -810973 -810989 -811037 -811039 -811067 -811081 -811099 -811123 -811127 -811147 -811157 -811163 -811171 -811183 -811193 -811199 -811207 -811231 -811241 -811253 -811259 -811273 -811277 -811289 -811297 -811337 -811351 -811379 -811387 -811411 -811429 -811441 -811457 -811469 -811493 -811501 -811511 -811519 -811523 -811553 -811561 -811583 -811607 -811619 -811627 -811637 -811649 -811651 -811667 -811691 -811697 -811703 -811709 -811729 -811747 -811753 -811757 -811763 -811771 -811777 -811799 -811819 -811861 -811871 -811879 -811897 -811919 -811931 -811933 -811957 -811961 -811981 -811991 -811997 -812011 -812033 -812047 -812051 -812057 -812081 -812101 -812129 -812137 -812167 -812173 -812179 -812183 -812191 -812213 -812221 -812233 -812249 -812257 -812267 -812281 -812297 -812299 -812309 -812341 -812347 -812351 -812353 -812359 -812363 -812381 -812387 -812393 -812401 -812431 -812443 -812467 -812473 -812477 -812491 -812501 -812503 -812519 -812527 -812587 -812597 -812599 -812627 -812633 -812639 -812641 -812671 -812681 -812689 -812699 -812701 -812711 -812717 -812731 -812759 -812761 -812807 -812849 -812857 -812869 -812921 -812939 -812963 -812969 -813013 -813017 -813023 -813041 -813049 -813061 -813083 -813089 -813091 -813097 -813107 -813121 -813133 -813157 -813167 -813199 -813203 -813209 -813217 -813221 -813227 -813251 -813269 -813277 -813283 -813287 -813299 -813301 -813311 -813343 -813361 -813367 -813377 -813383 -813401 -813419 -813427 -813443 -813493 -813499 -813503 -813511 -813529 -813541 -813559 -813577 -813583 -813601 -813613 -813623 -813647 -813677 -813697 -813707 -813721 -813749 -813767 -813797 -813811 -813817 -813829 -813833 -813847 -813863 -813871 -813893 -813907 -813931 -813961 -813971 -813991 -813997 -814003 -814007 -814013 -814019 -814031 -814043 -814049 -814061 -814063 -814067 -814069 -814081 -814097 -814127 -814129 -814139 -814171 -814183 -814193 -814199 -814211 -814213 -814237 -814241 -814243 -814279 -814309 -814327 -814337 -814367 -814379 -814381 -814393 -814399 -814403 -814423 -814447 -814469 -814477 -814493 -814501 -814531 -814537 -814543 -814559 -814577 -814579 -814601 -814603 -814609 -814631 -814633 -814643 -814687 -814699 -814717 -814741 -814747 -814763 -814771 -814783 -814789 -814799 -814823 -814829 -814841 -814859 -814873 -814883 -814889 -814901 -814903 -814927 -814937 -814939 -814943 -814949 -814991 -815029 -815033 -815047 -815053 -815063 -815123 -815141 -815149 -815159 -815173 -815197 -815209 -815231 -815251 -815257 -815261 -815273 -815279 -815291 -815317 -815333 -815341 -815351 -815389 -815401 -815411 -815413 -815417 -815431 -815453 -815459 -815471 -815491 -815501 -815519 -815527 -815533 -815539 -815543 -815569 -815587 -815599 -815621 -815623 -815627 -815653 -815663 -815669 -815671 -815681 -815687 -815693 -815713 -815729 -815809 -815819 -815821 -815831 -815851 -815869 -815891 -815897 -815923 -815933 -815939 -815953 -815963 -815977 -815989 -816019 -816037 -816043 -816047 -816077 -816091 -816103 -816113 -816121 -816131 -816133 -816157 -816161 -816163 -816169 -816191 -816203 -816209 -816217 -816223 -816227 -816239 -816251 -816271 -816317 -816329 -816341 -816353 -816367 -816377 -816401 -816427 -816443 -816451 -816469 -816499 -816521 -816539 -816547 -816559 -816581 -816587 -816589 -816593 -816649 -816653 -816667 -816689 -816691 -816703 -816709 -816743 -816763 -816769 -816779 -816811 -816817 -816821 -816839 -816841 -816847 -816857 -816859 -816869 -816883 -816887 -816899 -816911 -816917 -816919 -816929 -816941 -816947 -816961 -816971 -817013 -817027 -817039 -817049 -817051 -817073 -817081 -817087 -817093 -817111 -817123 -817127 -817147 -817151 -817153 -817163 -817169 -817183 -817211 -817237 -817273 -817277 -817279 -817291 -817303 -817319 -817321 -817331 -817337 -817357 -817379 -817403 -817409 -817433 -817457 -817463 -817483 -817519 -817529 -817549 -817561 -817567 -817603 -817637 -817651 -817669 -817679 -817697 -817709 -817711 -817721 -817723 -817727 -817757 -817769 -817777 -817783 -817787 -817793 -817823 -817837 -817841 -817867 -817871 -817877 -817889 -817891 -817897 -817907 -817913 -817919 -817933 -817951 -817979 -817987 -818011 -818017 -818021 -818093 -818099 -818101 -818113 -818123 -818143 -818171 -818173 -818189 -818219 -818231 -818239 -818249 -818281 -818287 -818291 -818303 -818309 -818327 -818339 -818341 -818347 -818353 -818359 -818371 -818383 -818393 -818399 -818413 -818429 -818453 -818473 -818509 -818561 -818569 -818579 -818581 -818603 -818621 -818659 -818683 -818687 -818689 -818707 -818717 -818723 -818813 -818819 -818821 -818827 -818837 -818887 -818897 -818947 -818959 -818963 -818969 -818977 -818999 -819001 -819017 -819029 -819031 -819037 -819061 -819073 -819083 -819101 -819131 -819149 -819157 -819167 -819173 -819187 -819229 -819239 -819241 -819251 -819253 -819263 -819271 -819289 -819307 -819311 -819317 -819319 -819367 -819373 -819389 -819391 -819407 -819409 -819419 -819431 -819437 -819443 -819449 -819457 -819463 -819473 -819487 -819491 -819493 -819499 -819503 -819509 -819523 -819563 -819583 -819593 -819607 -819617 -819619 -819629 -819647 -819653 -819659 -819673 -819691 -819701 -819719 -819737 -819739 -819761 -819769 -819773 -819781 -819787 -819799 -819811 -819823 -819827 -819829 -819853 -819899 -819911 -819913 -819937 -819943 -819977 -819989 -819991 -820037 -820051 -820067 -820073 -820093 -820109 -820117 -820129 -820133 -820163 -820177 -820187 -820201 -820213 -820223 -820231 -820241 -820243 -820247 -820271 -820273 -820279 -820319 -820321 -820331 -820333 -820343 -820349 -820361 -820367 -820399 -820409 -820411 -820427 -820429 -820441 -820459 -820481 -820489 -820537 -820541 -820559 -820577 -820597 -820609 -820619 -820627 -820637 -820643 -820649 -820657 -820679 -820681 -820691 -820711 -820723 -820733 -820747 -820753 -820759 -820763 -820789 -820793 -820837 -820873 -820891 -820901 -820907 -820909 -820921 -820927 -820957 -820969 -820991 -820997 -821003 -821027 -821039 -821053 -821057 -821063 -821069 -821081 -821089 -821099 -821101 -821113 -821131 -821143 -821147 -821153 -821167 -821173 -821207 -821209 -821263 -821281 -821291 -821297 -821311 -821329 -821333 -821377 -821383 -821411 -821441 -821449 -821459 -821461 -821467 -821477 -821479 -821489 -821497 -821507 -821519 -821551 -821573 -821603 -821641 -821647 -821651 -821663 -821677 -821741 -821747 -821753 -821759 -821771 -821801 -821803 -821809 -821819 -821827 -821833 -821851 -821857 -821861 -821869 -821879 -821897 -821911 -821939 -821941 -821971 -821993 -821999 -822007 -822011 -822013 -822037 -822049 -822067 -822079 -822113 -822131 -822139 -822161 -822163 -822167 -822169 -822191 -822197 -822221 -822223 -822229 -822233 -822253 -822259 -822277 -822293 -822299 -822313 -822317 -822323 -822329 -822343 -822347 -822361 -822379 -822383 -822389 -822391 -822407 -822431 -822433 -822517 -822539 -822541 -822551 -822553 -822557 -822571 -822581 -822587 -822589 -822599 -822607 -822611 -822631 -822667 -822671 -822673 -822683 -822691 -822697 -822713 -822721 -822727 -822739 -822743 -822761 -822763 -822781 -822791 -822793 -822803 -822821 -822823 -822839 -822853 -822881 -822883 -822889 -822893 -822901 -822907 -822949 -822971 -822973 -822989 -823001 -823003 -823013 -823033 -823051 -823117 -823127 -823129 -823153 -823169 -823177 -823183 -823201 -823219 -823231 -823237 -823241 -823243 -823261 -823271 -823283 -823309 -823337 -823349 -823351 -823357 -823373 -823399 -823421 -823447 -823451 -823457 -823481 -823483 -823489 -823499 -823519 -823541 -823547 -823553 -823573 -823591 -823601 -823619 -823621 -823637 -823643 -823651 -823663 -823679 -823703 -823709 -823717 -823721 -823723 -823727 -823729 -823741 -823747 -823759 -823777 -823787 -823789 -823799 -823819 -823829 -823831 -823841 -823843 -823877 -823903 -823913 -823961 -823967 -823969 -823981 -823993 -823997 -824017 -824029 -824039 -824063 -824069 -824077 -824081 -824099 -824123 -824137 -824147 -824179 -824183 -824189 -824191 -824227 -824231 -824233 -824269 -824281 -824287 -824339 -824393 -824399 -824401 -824413 -824419 -824437 -824443 -824459 -824477 -824489 -824497 -824501 -824513 -824531 -824539 -824563 -824591 -824609 -824641 -824647 -824651 -824669 -824671 -824683 -824699 -824701 -824723 -824741 -824749 -824753 -824773 -824777 -824779 -824801 -824821 -824833 -824843 -824861 -824893 -824899 -824911 -824921 -824933 -824939 -824947 -824951 -824977 -824981 -824983 -825001 -825007 -825017 -825029 -825047 -825049 -825059 -825067 -825073 -825101 -825107 -825109 -825131 -825161 -825191 -825193 -825199 -825203 -825229 -825241 -825247 -825259 -825277 -825281 -825283 -825287 -825301 -825329 -825337 -825343 -825347 -825353 -825361 -825389 -825397 -825403 -825413 -825421 -825439 -825443 -825467 -825479 -825491 -825509 -825527 -825533 -825547 -825551 -825553 -825577 -825593 -825611 -825613 -825637 -825647 -825661 -825679 -825689 -825697 -825701 -825709 -825733 -825739 -825749 -825763 -825779 -825791 -825821 -825827 -825829 -825857 -825883 -825889 -825919 -825947 -825959 -825961 -825971 -825983 -825991 -825997 -826019 -826037 -826039 -826051 -826061 -826069 -826087 -826093 -826097 -826129 -826151 -826153 -826169 -826171 -826193 -826201 -826211 -826271 -826283 -826289 -826303 -826313 -826333 -826339 -826349 -826351 -826363 -826379 -826381 -826391 -826393 -826403 -826411 -826453 -826477 -826493 -826499 -826541 -826549 -826559 -826561 -826571 -826583 -826603 -826607 -826613 -826621 -826663 -826667 -826669 -826673 -826681 -826697 -826699 -826711 -826717 -826723 -826729 -826753 -826759 -826783 -826799 -826807 -826811 -826831 -826849 -826867 -826879 -826883 -826907 -826921 -826927 -826939 -826957 -826963 -826967 -826979 -826997 -827009 -827023 -827039 -827041 -827063 -827087 -827129 -827131 -827143 -827147 -827161 -827213 -827227 -827231 -827251 -827269 -827293 -827303 -827311 -827327 -827347 -827369 -827389 -827417 -827423 -827429 -827443 -827447 -827461 -827473 -827501 -827521 -827537 -827539 -827549 -827581 -827591 -827599 -827633 -827639 -827677 -827681 -827693 -827699 -827719 -827737 -827741 -827767 -827779 -827791 -827803 -827809 -827821 -827833 -827837 -827843 -827851 -827857 -827867 -827873 -827899 -827903 -827923 -827927 -827929 -827941 -827969 -827987 -827989 -828007 -828011 -828013 -828029 -828043 -828059 -828067 -828071 -828101 -828109 -828119 -828127 -828131 -828133 -828169 -828199 -828209 -828221 -828239 -828277 -828349 -828361 -828371 -828379 -828383 -828397 -828407 -828409 -828431 -828449 -828517 -828523 -828547 -828557 -828577 -828587 -828601 -828637 -828643 -828649 -828673 -828677 -828691 -828697 -828701 -828703 -828721 -828731 -828743 -828757 -828787 -828797 -828809 -828811 -828823 -828829 -828833 -828859 -828871 -828881 -828889 -828899 -828901 -828917 -828923 -828941 -828953 -828967 -828977 -829001 -829013 -829057 -829063 -829069 -829093 -829097 -829111 -829121 -829123 -829151 -829159 -829177 -829187 -829193 -829211 -829223 -829229 -829237 -829249 -829267 -829273 -829289 -829319 -829349 -829399 -829453 -829457 -829463 -829469 -829501 -829511 -829519 -829537 -829547 -829561 -829601 -829613 -829627 -829637 -829639 -829643 -829657 -829687 -829693 -829709 -829721 -829723 -829727 -829729 -829733 -829757 -829789 -829811 -829813 -829819 -829831 -829841 -829847 -829849 -829867 -829877 -829883 -829949 -829967 -829979 -829987 -829993 -830003 -830017 -830041 -830051 -830099 -830111 -830117 -830131 -830143 -830153 -830173 -830177 -830191 -830233 -830237 -830257 -830267 -830279 -830293 -830309 -830311 -830327 -830329 -830339 -830341 -830353 -830359 -830363 -830383 -830387 -830411 -830413 -830419 -830441 -830447 -830449 -830477 -830483 -830497 -830503 -830513 -830549 -830551 -830561 -830567 -830579 -830587 -830591 -830597 -830617 -830639 -830657 -830677 -830693 -830719 -830729 -830741 -830743 -830777 -830789 -830801 -830827 -830833 -830839 -830849 -830861 -830873 -830887 -830891 -830899 -830911 -830923 -830939 -830957 -830981 -830989 -831023 -831031 -831037 -831043 -831067 -831071 -831073 -831091 -831109 -831139 -831161 -831163 -831167 -831191 -831217 -831221 -831239 -831253 -831287 -831301 -831323 -831329 -831361 -831367 -831371 -831373 -831407 -831409 -831431 -831433 -831437 -831443 -831461 -831503 -831529 -831539 -831541 -831547 -831553 -831559 -831583 -831587 -831599 -831617 -831619 -831631 -831643 -831647 -831653 -831659 -831661 -831679 -831683 -831697 -831707 -831709 -831713 -831731 -831739 -831751 -831757 -831769 -831781 -831799 -831811 -831821 -831829 -831847 -831851 -831863 -831881 -831889 -831893 -831899 -831911 -831913 -831917 -831967 -831983 -832003 -832063 -832079 -832081 -832103 -832109 -832121 -832123 -832129 -832141 -832151 -832157 -832159 -832189 -832211 -832217 -832253 -832291 -832297 -832309 -832327 -832331 -832339 -832361 -832367 -832369 -832373 -832379 -832399 -832411 -832421 -832427 -832451 -832457 -832477 -832483 -832487 -832493 -832499 -832519 -832583 -832591 -832597 -832607 -832613 -832621 -832627 -832631 -832633 -832639 -832673 -832679 -832681 -832687 -832693 -832703 -832709 -832717 -832721 -832729 -832747 -832757 -832763 -832771 -832787 -832801 -832837 -832841 -832861 -832879 -832883 -832889 -832913 -832919 -832927 -832933 -832943 -832957 -832963 -832969 -832973 -832987 -833009 -833023 -833033 -833047 -833057 -833099 -833101 -833117 -833171 -833177 -833179 -833191 -833197 -833201 -833219 -833251 -833269 -833281 -833293 -833299 -833309 -833347 -833353 -833363 -833377 -833389 -833429 -833449 -833453 -833461 -833467 -833477 -833479 -833491 -833509 -833537 -833557 -833563 -833593 -833597 -833617 -833633 -833659 -833669 -833689 -833711 -833713 -833717 -833719 -833737 -833747 -833759 -833783 -833801 -833821 -833839 -833843 -833857 -833873 -833887 -833893 -833897 -833923 -833927 -833933 -833947 -833977 -833999 -834007 -834013 -834023 -834059 -834107 -834131 -834133 -834137 -834143 -834149 -834151 -834181 -834199 -834221 -834257 -834259 -834269 -834277 -834283 -834287 -834299 -834311 -834341 -834367 -834433 -834439 -834469 -834487 -834497 -834503 -834511 -834523 -834527 -834569 -834571 -834593 -834599 -834607 -834611 -834623 -834629 -834641 -834643 -834653 -834671 -834703 -834709 -834721 -834761 -834773 -834781 -834787 -834797 -834809 -834811 -834829 -834857 -834859 -834893 -834913 -834941 -834947 -834949 -834959 -834961 -834983 -834991 -835001 -835013 -835019 -835033 -835039 -835097 -835099 -835117 -835123 -835139 -835141 -835207 -835213 -835217 -835249 -835253 -835271 -835313 -835319 -835321 -835327 -835369 -835379 -835391 -835399 -835421 -835427 -835441 -835451 -835453 -835459 -835469 -835489 -835511 -835531 -835553 -835559 -835591 -835603 -835607 -835609 -835633 -835643 -835661 -835663 -835673 -835687 -835717 -835721 -835733 -835739 -835759 -835789 -835811 -835817 -835819 -835823 -835831 -835841 -835847 -835859 -835897 -835909 -835927 -835931 -835937 -835951 -835957 -835973 -835979 -835987 -835993 -835997 -836047 -836063 -836071 -836107 -836117 -836131 -836137 -836149 -836153 -836159 -836161 -836183 -836189 -836191 -836203 -836219 -836233 -836239 -836243 -836267 -836291 -836299 -836317 -836327 -836347 -836351 -836369 -836377 -836387 -836413 -836449 -836471 -836477 -836491 -836497 -836501 -836509 -836567 -836569 -836573 -836609 -836611 -836623 -836657 -836663 -836677 -836683 -836699 -836701 -836707 -836713 -836729 -836747 -836749 -836753 -836761 -836789 -836807 -836821 -836833 -836839 -836861 -836863 -836873 -836879 -836881 -836917 -836921 -836939 -836951 -836971 -837017 -837043 -837047 -837059 -837071 -837073 -837077 -837079 -837107 -837113 -837139 -837149 -837157 -837191 -837203 -837257 -837271 -837283 -837293 -837307 -837313 -837359 -837367 -837373 -837377 -837379 -837409 -837413 -837439 -837451 -837461 -837467 -837497 -837503 -837509 -837521 -837533 -837583 -837601 -837611 -837619 -837631 -837659 -837667 -837673 -837677 -837679 -837721 -837731 -837737 -837773 -837779 -837797 -837817 -837833 -837847 -837853 -837887 -837923 -837929 -837931 -837937 -837943 -837979 -838003 -838021 -838037 -838039 -838043 -838063 -838069 -838091 -838093 -838099 -838133 -838139 -838141 -838153 -838157 -838169 -838171 -838193 -838207 -838247 -838249 -838349 -838351 -838363 -838367 -838379 -838391 -838393 -838399 -838403 -838421 -838429 -838441 -838447 -838459 -838463 -838471 -838483 -838517 -838547 -838553 -838561 -838571 -838583 -838589 -838597 -838601 -838609 -838613 -838631 -838633 -838657 -838667 -838687 -838693 -838711 -838751 -838757 -838769 -838771 -838777 -838781 -838807 -838813 -838837 -838853 -838889 -838897 -838909 -838913 -838919 -838927 -838931 -838939 -838949 -838951 -838963 -838969 -838991 -838993 -839009 -839029 -839051 -839071 -839087 -839117 -839131 -839161 -839203 -839207 -839221 -839227 -839261 -839269 -839303 -839323 -839327 -839351 -839353 -839369 -839381 -839413 -839429 -839437 -839441 -839453 -839459 -839471 -839473 -839483 -839491 -839497 -839519 -839539 -839551 -839563 -839599 -839603 -839609 -839611 -839617 -839621 -839633 -839651 -839653 -839669 -839693 -839723 -839731 -839767 -839771 -839791 -839801 -839809 -839831 -839837 -839873 -839879 -839887 -839897 -839899 -839903 -839911 -839921 -839957 -839959 -839963 -839981 -839999 -840023 -840053 -840061 -840067 -840083 -840109 -840137 -840139 -840149 -840163 -840179 -840181 -840187 -840197 -840223 -840239 -840241 -840253 -840269 -840277 -840289 -840299 -840319 -840331 -840341 -840347 -840353 -840439 -840451 -840457 -840467 -840473 -840479 -840491 -840523 -840547 -840557 -840571 -840589 -840601 -840611 -840643 -840661 -840683 -840703 -840709 -840713 -840727 -840733 -840743 -840757 -840761 -840767 -840817 -840821 -840823 -840839 -840841 -840859 -840863 -840907 -840911 -840923 -840929 -840941 -840943 -840967 -840979 -840989 -840991 -841003 -841013 -841019 -841021 -841063 -841069 -841079 -841081 -841091 -841097 -841103 -841147 -841157 -841189 -841193 -841207 -841213 -841219 -841223 -841231 -841237 -841241 -841259 -841273 -841277 -841283 -841289 -841297 -841307 -841327 -841333 -841349 -841369 -841391 -841397 -841411 -841427 -841447 -841457 -841459 -841541 -841549 -841559 -841573 -841597 -841601 -841637 -841651 -841661 -841663 -841691 -841697 -841727 -841741 -841751 -841793 -841801 -841849 -841859 -841873 -841879 -841889 -841913 -841921 -841927 -841931 -841933 -841979 -841987 -842003 -842021 -842041 -842047 -842063 -842071 -842077 -842081 -842087 -842089 -842111 -842113 -842141 -842147 -842159 -842161 -842167 -842173 -842183 -842203 -842209 -842249 -842267 -842279 -842291 -842293 -842311 -842321 -842323 -842339 -842341 -842351 -842353 -842371 -842383 -842393 -842399 -842407 -842417 -842419 -842423 -842447 -842449 -842473 -842477 -842483 -842489 -842497 -842507 -842519 -842521 -842531 -842551 -842581 -842587 -842599 -842617 -842623 -842627 -842657 -842701 -842729 -842747 -842759 -842767 -842771 -842791 -842801 -842813 -842819 -842857 -842869 -842879 -842887 -842923 -842939 -842951 -842957 -842969 -842977 -842981 -842987 -842993 -843043 -843067 -843079 -843091 -843103 -843113 -843127 -843131 -843137 -843173 -843179 -843181 -843209 -843211 -843229 -843253 -843257 -843289 -843299 -843301 -843307 -843331 -843347 -843361 -843371 -843377 -843379 -843383 -843397 -843443 -843449 -843457 -843461 -843473 -843487 -843497 -843503 -843527 -843539 -843553 -843559 -843587 -843589 -843607 -843613 -843629 -843643 -843649 -843677 -843679 -843701 -843737 -843757 -843763 -843779 -843781 -843793 -843797 -843811 -843823 -843833 -843841 -843881 -843883 -843889 -843901 -843907 -843911 -844001 -844013 -844043 -844061 -844069 -844087 -844093 -844111 -844117 -844121 -844127 -844139 -844141 -844153 -844157 -844163 -844183 -844187 -844199 -844201 -844243 -844247 -844253 -844279 -844289 -844297 -844309 -844321 -844351 -844369 -844421 -844427 -844429 -844433 -844439 -844447 -844453 -844457 -844463 -844469 -844483 -844489 -844499 -844507 -844511 -844513 -844517 -844523 -844549 -844553 -844601 -844603 -844609 -844619 -844621 -844631 -844639 -844643 -844651 -844709 -844717 -844733 -844757 -844763 -844769 -844771 -844777 -844841 -844847 -844861 -844867 -844891 -844897 -844903 -844913 -844927 -844957 -844999 -845003 -845017 -845021 -845027 -845041 -845069 -845083 -845099 -845111 -845129 -845137 -845167 -845179 -845183 -845197 -845203 -845209 -845219 -845231 -845237 -845261 -845279 -845287 -845303 -845309 -845333 -845347 -845357 -845363 -845371 -845381 -845387 -845431 -845441 -845447 -845459 -845489 -845491 -845531 -845567 -845599 -845623 -845653 -845657 -845659 -845683 -845717 -845723 -845729 -845749 -845753 -845771 -845777 -845809 -845833 -845849 -845863 -845879 -845881 -845893 -845909 -845921 -845927 -845941 -845951 -845969 -845981 -845983 -845987 -845989 -846037 -846059 -846061 -846067 -846113 -846137 -846149 -846161 -846179 -846187 -846217 -846229 -846233 -846247 -846259 -846271 -846323 -846341 -846343 -846353 -846359 -846361 -846383 -846389 -846397 -846401 -846403 -846407 -846421 -846427 -846437 -846457 -846487 -846493 -846499 -846529 -846563 -846577 -846589 -846647 -846661 -846667 -846673 -846689 -846721 -846733 -846739 -846749 -846751 -846757 -846779 -846823 -846841 -846851 -846869 -846871 -846877 -846913 -846917 -846919 -846931 -846943 -846949 -846953 -846961 -846973 -846977 -846983 -846997 -847009 -847031 -847037 -847043 -847051 -847069 -847073 -847079 -847097 -847103 -847109 -847129 -847139 -847151 -847157 -847163 -847169 -847193 -847201 -847213 -847219 -847237 -847247 -847271 -847277 -847279 -847283 -847309 -847321 -847339 -847361 -847367 -847373 -847393 -847423 -847453 -847477 -847493 -847499 -847507 -847519 -847531 -847537 -847543 -847549 -847577 -847589 -847601 -847607 -847621 -847657 -847663 -847673 -847681 -847687 -847697 -847703 -847727 -847729 -847741 -847787 -847789 -847813 -847817 -847853 -847871 -847883 -847901 -847919 -847933 -847937 -847949 -847967 -847969 -847991 -847993 -847997 -848017 -848051 -848087 -848101 -848119 -848123 -848131 -848143 -848149 -848173 -848201 -848203 -848213 -848227 -848251 -848269 -848273 -848297 -848321 -848359 -848363 -848383 -848387 -848399 -848417 -848423 -848429 -848443 -848461 -848467 -848473 -848489 -848531 -848537 -848557 -848567 -848579 -848591 -848593 -848599 -848611 -848629 -848633 -848647 -848651 -848671 -848681 -848699 -848707 -848713 -848737 -848747 -848761 -848779 -848789 -848791 -848797 -848803 -848807 -848839 -848843 -848849 -848851 -848857 -848879 -848893 -848909 -848921 -848923 -848927 -848933 -848941 -848959 -848983 -848993 -849019 -849047 -849049 -849061 -849083 -849097 -849103 -849119 -849127 -849131 -849143 -849161 -849179 -849197 -849203 -849217 -849221 -849223 -849241 -849253 -849271 -849301 -849311 -849347 -849349 -849353 -849383 -849391 -849419 -849427 -849461 -849467 -849481 -849523 -849533 -849539 -849571 -849581 -849587 -849593 -849599 -849601 -849649 -849691 -849701 -849703 -849721 -849727 -849731 -849733 -849743 -849763 -849767 -849773 -849829 -849833 -849839 -849857 -849869 -849883 -849917 -849923 -849931 -849943 -849967 -849973 -849991 -849997 -850009 -850021 -850027 -850033 -850043 -850049 -850061 -850063 -850081 -850093 -850121 -850133 -850139 -850147 -850177 -850181 -850189 -850207 -850211 -850229 -850243 -850247 -850253 -850261 -850271 -850273 -850301 -850303 -850331 -850337 -850349 -850351 -850373 -850387 -850393 -850397 -850403 -850417 -850427 -850433 -850439 -850453 -850457 -850481 -850529 -850537 -850567 -850571 -850613 -850631 -850637 -850673 -850679 -850691 -850711 -850727 -850753 -850781 -850807 -850823 -850849 -850853 -850879 -850891 -850897 -850933 -850943 -850951 -850973 -850979 -851009 -851017 -851033 -851041 -851051 -851057 -851087 -851093 -851113 -851117 -851131 -851153 -851159 -851171 -851177 -851197 -851203 -851209 -851231 -851239 -851251 -851261 -851267 -851273 -851293 -851297 -851303 -851321 -851327 -851351 -851359 -851363 -851381 -851387 -851393 -851401 -851413 -851419 -851423 -851449 -851471 -851491 -851507 -851519 -851537 -851549 -851569 -851573 -851597 -851603 -851623 -851633 -851639 -851647 -851659 -851671 -851677 -851689 -851723 -851731 -851749 -851761 -851797 -851801 -851803 -851813 -851821 -851831 -851839 -851843 -851863 -851881 -851891 -851899 -851953 -851957 -851971 -852011 -852013 -852031 -852037 -852079 -852101 -852121 -852139 -852143 -852149 -852151 -852167 -852179 -852191 -852197 -852199 -852211 -852233 -852239 -852253 -852259 -852263 -852287 -852289 -852301 -852323 -852347 -852367 -852391 -852409 -852427 -852437 -852457 -852463 -852521 -852557 -852559 -852563 -852569 -852581 -852583 -852589 -852613 -852617 -852623 -852641 -852661 -852671 -852673 -852689 -852749 -852751 -852757 -852763 -852769 -852793 -852799 -852809 -852827 -852829 -852833 -852847 -852851 -852857 -852871 -852881 -852889 -852893 -852913 -852937 -852953 -852959 -852989 -852997 -853007 -853031 -853033 -853049 -853057 -853079 -853091 -853103 -853123 -853133 -853159 -853187 -853189 -853211 -853217 -853241 -853283 -853289 -853291 -853319 -853339 -853357 -853387 -853403 -853427 -853429 -853439 -853477 -853481 -853493 -853529 -853543 -853547 -853571 -853577 -853597 -853637 -853663 -853667 -853669 -853687 -853693 -853703 -853717 -853733 -853739 -853759 -853763 -853793 -853799 -853807 -853813 -853819 -853823 -853837 -853843 -853873 -853889 -853901 -853903 -853913 -853933 -853949 -853969 -853981 -853999 -854017 -854033 -854039 -854041 -854047 -854053 -854083 -854089 -854093 -854099 -854111 -854123 -854129 -854141 -854149 -854159 -854171 -854213 -854257 -854263 -854299 -854303 -854323 -854327 -854333 -854351 -854353 -854363 -854383 -854387 -854407 -854417 -854419 -854423 -854431 -854443 -854459 -854461 -854467 -854479 -854527 -854533 -854569 -854587 -854593 -854599 -854617 -854621 -854629 -854647 -854683 -854713 -854729 -854747 -854771 -854801 -854807 -854849 -854869 -854881 -854897 -854899 -854921 -854923 -854927 -854929 -854951 -854957 -854963 -854993 -854999 -855031 -855059 -855061 -855067 -855079 -855089 -855119 -855131 -855143 -855187 -855191 -855199 -855203 -855221 -855229 -855241 -855269 -855271 -855277 -855293 -855307 -855311 -855317 -855331 -855359 -855373 -855377 -855391 -855397 -855401 -855419 -855427 -855431 -855461 -855467 -855499 -855511 -855521 -855527 -855581 -855601 -855607 -855619 -855641 -855667 -855671 -855683 -855697 -855709 -855713 -855719 -855721 -855727 -855731 -855733 -855737 -855739 -855781 -855787 -855821 -855851 -855857 -855863 -855887 -855889 -855901 -855919 -855923 -855937 -855947 -855983 -855989 -855997 -856021 -856043 -856057 -856061 -856073 -856081 -856099 -856111 -856117 -856133 -856139 -856147 -856153 -856169 -856181 -856187 -856213 -856237 -856241 -856249 -856277 -856279 -856301 -856309 -856333 -856343 -856351 -856369 -856381 -856391 -856393 -856411 -856417 -856421 -856441 -856459 -856469 -856483 -856487 -856507 -856519 -856529 -856547 -856549 -856553 -856567 -856571 -856627 -856637 -856649 -856693 -856697 -856699 -856703 -856711 -856717 -856721 -856733 -856759 -856787 -856789 -856799 -856811 -856813 -856831 -856841 -856847 -856853 -856897 -856901 -856903 -856909 -856927 -856939 -856943 -856949 -856969 -856993 -857009 -857011 -857027 -857029 -857039 -857047 -857053 -857069 -857081 -857083 -857099 -857107 -857137 -857161 -857167 -857201 -857203 -857221 -857249 -857267 -857273 -857281 -857287 -857309 -857321 -857333 -857341 -857347 -857357 -857369 -857407 -857411 -857419 -857431 -857453 -857459 -857471 -857513 -857539 -857551 -857567 -857569 -857573 -857579 -857581 -857629 -857653 -857663 -857669 -857671 -857687 -857707 -857711 -857713 -857723 -857737 -857741 -857743 -857749 -857809 -857821 -857827 -857839 -857851 -857867 -857873 -857897 -857903 -857929 -857951 -857953 -857957 -857959 -857963 -857977 -857981 -858001 -858029 -858043 -858073 -858083 -858101 -858103 -858113 -858127 -858149 -858161 -858167 -858217 -858223 -858233 -858239 -858241 -858251 -858259 -858269 -858281 -858293 -858301 -858307 -858311 -858317 -858373 -858397 -858427 -858433 -858457 -858463 -858467 -858479 -858497 -858503 -858527 -858563 -858577 -858589 -858623 -858631 -858673 -858691 -858701 -858707 -858709 -858713 -858749 -858757 -858763 -858769 -858787 -858817 -858821 -858833 -858841 -858859 -858877 -858883 -858899 -858911 -858919 -858931 -858943 -858953 -858961 -858989 -858997 -859003 -859031 -859037 -859049 -859051 -859057 -859081 -859091 -859093 -859109 -859121 -859181 -859189 -859213 -859223 -859249 -859259 -859267 -859273 -859277 -859279 -859297 -859321 -859361 -859363 -859373 -859381 -859393 -859423 -859433 -859447 -859459 -859477 -859493 -859513 -859553 -859559 -859561 -859567 -859577 -859601 -859603 -859609 -859619 -859633 -859657 -859667 -859669 -859679 -859681 -859697 -859709 -859751 -859783 -859787 -859799 -859801 -859823 -859841 -859849 -859853 -859861 -859891 -859913 -859919 -859927 -859933 -859939 -859973 -859981 -859987 -860009 -860011 -860029 -860051 -860059 -860063 -860071 -860077 -860087 -860089 -860107 -860113 -860117 -860143 -860239 -860257 -860267 -860291 -860297 -860309 -860311 -860317 -860323 -860333 -860341 -860351 -860357 -860369 -860381 -860383 -860393 -860399 -860413 -860417 -860423 -860441 -860479 -860501 -860507 -860513 -860533 -860543 -860569 -860579 -860581 -860593 -860599 -860609 -860623 -860641 -860647 -860663 -860689 -860701 -860747 -860753 -860759 -860779 -860789 -860791 -860809 -860813 -860819 -860843 -860861 -860887 -860891 -860911 -860917 -860921 -860927 -860929 -860939 -860941 -860957 -860969 -860971 -861001 -861013 -861019 -861031 -861037 -861043 -861053 -861059 -861079 -861083 -861089 -861109 -861121 -861131 -861139 -861163 -861167 -861191 -861199 -861221 -861239 -861293 -861299 -861317 -861347 -861353 -861361 -861391 -861433 -861437 -861439 -861491 -861493 -861499 -861541 -861547 -861551 -861559 -861563 -861571 -861589 -861599 -861613 -861617 -861647 -861659 -861691 -861701 -861703 -861719 -861733 -861739 -861743 -861761 -861797 -861799 -861803 -861823 -861829 -861853 -861857 -861871 -861877 -861881 -861899 -861901 -861907 -861929 -861937 -861941 -861947 -861977 -861979 -861997 -862009 -862013 -862031 -862033 -862061 -862067 -862097 -862117 -862123 -862129 -862139 -862157 -862159 -862171 -862177 -862181 -862187 -862207 -862219 -862229 -862231 -862241 -862249 -862259 -862261 -862273 -862283 -862289 -862297 -862307 -862319 -862331 -862343 -862369 -862387 -862397 -862399 -862409 -862417 -862423 -862441 -862447 -862471 -862481 -862483 -862487 -862493 -862501 -862541 -862553 -862559 -862567 -862571 -862573 -862583 -862607 -862627 -862633 -862649 -862651 -862669 -862703 -862727 -862739 -862769 -862777 -862783 -862789 -862811 -862819 -862861 -862879 -862907 -862909 -862913 -862919 -862921 -862943 -862957 -862973 -862987 -862991 -862997 -863003 -863017 -863047 -863081 -863087 -863119 -863123 -863131 -863143 -863153 -863179 -863197 -863231 -863251 -863279 -863287 -863299 -863309 -863323 -863363 -863377 -863393 -863479 -863491 -863497 -863509 -863521 -863537 -863539 -863561 -863593 -863609 -863633 -863641 -863671 -863689 -863693 -863711 -863729 -863743 -863749 -863767 -863771 -863783 -863801 -863803 -863833 -863843 -863851 -863867 -863869 -863879 -863887 -863897 -863899 -863909 -863917 -863921 -863959 -863983 -864007 -864011 -864013 -864029 -864037 -864047 -864049 -864053 -864077 -864079 -864091 -864103 -864107 -864119 -864121 -864131 -864137 -864151 -864167 -864169 -864191 -864203 -864211 -864221 -864223 -864251 -864277 -864289 -864299 -864301 -864307 -864319 -864323 -864341 -864359 -864361 -864379 -864407 -864419 -864427 -864439 -864449 -864491 -864503 -864509 -864511 -864533 -864541 -864551 -864581 -864583 -864587 -864613 -864623 -864629 -864631 -864641 -864673 -864679 -864691 -864707 -864733 -864737 -864757 -864781 -864793 -864803 -864811 -864817 -864883 -864887 -864901 -864911 -864917 -864947 -864953 -864959 -864967 -864979 -864989 -865001 -865003 -865043 -865049 -865057 -865061 -865069 -865087 -865091 -865103 -865121 -865153 -865159 -865177 -865201 -865211 -865213 -865217 -865231 -865247 -865253 -865259 -865261 -865301 -865307 -865313 -865321 -865327 -865339 -865343 -865349 -865357 -865363 -865379 -865409 -865457 -865477 -865481 -865483 -865493 -865499 -865511 -865537 -865577 -865591 -865597 -865609 -865619 -865637 -865639 -865643 -865661 -865681 -865687 -865717 -865721 -865729 -865741 -865747 -865751 -865757 -865769 -865771 -865783 -865801 -865807 -865817 -865819 -865829 -865847 -865859 -865867 -865871 -865877 -865889 -865933 -865937 -865957 -865979 -865993 -866003 -866009 -866011 -866029 -866051 -866053 -866057 -866081 -866083 -866087 -866093 -866101 -866119 -866123 -866161 -866183 -866197 -866213 -866221 -866231 -866279 -866293 -866309 -866311 -866329 -866353 -866389 -866399 -866417 -866431 -866443 -866461 -866471 -866477 -866513 -866519 -866573 -866581 -866623 -866629 -866639 -866641 -866653 -866683 -866689 -866693 -866707 -866713 -866717 -866737 -866743 -866759 -866777 -866783 -866819 -866843 -866849 -866851 -866857 -866869 -866909 -866917 -866927 -866933 -866941 -866953 -866963 -866969 -867001 -867007 -867011 -867023 -867037 -867059 -867067 -867079 -867091 -867121 -867131 -867143 -867151 -867161 -867173 -867203 -867211 -867227 -867233 -867253 -867257 -867259 -867263 -867271 -867281 -867301 -867319 -867337 -867343 -867371 -867389 -867397 -867401 -867409 -867413 -867431 -867443 -867457 -867463 -867467 -867487 -867509 -867511 -867541 -867547 -867553 -867563 -867571 -867577 -867589 -867617 -867619 -867623 -867631 -867641 -867653 -867677 -867679 -867689 -867701 -867719 -867733 -867743 -867773 -867781 -867793 -867803 -867817 -867827 -867829 -867857 -867871 -867887 -867913 -867943 -867947 -867959 -867991 -868019 -868033 -868039 -868051 -868069 -868073 -868081 -868103 -868111 -868121 -868123 -868151 -868157 -868171 -868177 -868199 -868211 -868229 -868249 -868267 -868271 -868277 -868291 -868313 -868327 -868331 -868337 -868349 -868369 -868379 -868381 -868397 -868409 -868423 -868451 -868453 -868459 -868487 -868489 -868493 -868529 -868531 -868537 -868559 -868561 -868577 -868583 -868603 -868613 -868639 -868663 -868669 -868691 -868697 -868727 -868739 -868741 -868771 -868783 -868787 -868793 -868799 -868801 -868817 -868841 -868849 -868867 -868873 -868877 -868883 -868891 -868909 -868937 -868939 -868943 -868951 -868957 -868993 -868997 -868999 -869017 -869021 -869039 -869053 -869059 -869069 -869081 -869119 -869131 -869137 -869153 -869173 -869179 -869203 -869233 -869249 -869251 -869257 -869273 -869291 -869293 -869299 -869303 -869317 -869321 -869339 -869369 -869371 -869381 -869399 -869413 -869419 -869437 -869443 -869461 -869467 -869471 -869489 -869501 -869521 -869543 -869551 -869563 -869579 -869587 -869597 -869599 -869657 -869663 -869683 -869689 -869707 -869717 -869747 -869753 -869773 -869777 -869779 -869807 -869809 -869819 -869849 -869863 -869879 -869887 -869893 -869899 -869909 -869927 -869951 -869959 -869983 -869989 -870007 -870013 -870031 -870047 -870049 -870059 -870083 -870097 -870109 -870127 -870131 -870137 -870151 -870161 -870169 -870173 -870197 -870211 -870223 -870229 -870239 -870241 -870253 -870271 -870283 -870301 -870323 -870329 -870341 -870367 -870391 -870403 -870407 -870413 -870431 -870433 -870437 -870461 -870479 -870491 -870497 -870517 -870533 -870547 -870577 -870589 -870593 -870601 -870613 -870629 -870641 -870643 -870679 -870691 -870703 -870731 -870739 -870743 -870773 -870787 -870809 -870811 -870823 -870833 -870847 -870853 -870871 -870889 -870901 -870907 -870911 -870917 -870929 -870931 -870953 -870967 -870977 -870983 -870997 -871001 -871021 -871027 -871037 -871061 -871103 -871147 -871159 -871163 -871177 -871181 -871229 -871231 -871249 -871259 -871271 -871289 -871303 -871337 -871349 -871393 -871439 -871459 -871463 -871477 -871513 -871517 -871531 -871553 -871571 -871589 -871597 -871613 -871621 -871639 -871643 -871649 -871657 -871679 -871681 -871687 -871727 -871763 -871771 -871789 -871817 -871823 -871837 -871867 -871883 -871901 -871919 -871931 -871957 -871963 -871973 -871987 -871993 -872017 -872023 -872033 -872041 -872057 -872071 -872077 -872089 -872099 -872107 -872129 -872141 -872143 -872149 -872159 -872161 -872173 -872177 -872189 -872203 -872227 -872231 -872237 -872243 -872251 -872257 -872269 -872281 -872317 -872323 -872351 -872353 -872369 -872381 -872383 -872387 -872393 -872411 -872419 -872429 -872437 -872441 -872453 -872471 -872477 -872479 -872533 -872549 -872561 -872563 -872567 -872587 -872609 -872611 -872621 -872623 -872647 -872657 -872659 -872671 -872687 -872731 -872737 -872747 -872749 -872761 -872789 -872791 -872843 -872863 -872923 -872947 -872951 -872953 -872959 -872999 -873017 -873043 -873049 -873073 -873079 -873083 -873091 -873109 -873113 -873121 -873133 -873139 -873157 -873209 -873247 -873251 -873263 -873293 -873317 -873319 -873331 -873343 -873349 -873359 -873403 -873407 -873419 -873421 -873427 -873437 -873461 -873463 -873469 -873497 -873527 -873529 -873539 -873541 -873553 -873569 -873571 -873617 -873619 -873641 -873643 -873659 -873667 -873671 -873689 -873707 -873709 -873721 -873727 -873739 -873767 -873773 -873781 -873787 -873863 -873877 -873913 -873959 -873979 -873989 -873991 -874001 -874009 -874037 -874063 -874087 -874091 -874099 -874103 -874109 -874117 -874121 -874127 -874151 -874193 -874213 -874217 -874229 -874249 -874267 -874271 -874277 -874301 -874303 -874331 -874337 -874343 -874351 -874373 -874387 -874397 -874403 -874409 -874427 -874457 -874459 -874477 -874487 -874537 -874543 -874547 -874567 -874583 -874597 -874619 -874637 -874639 -874651 -874661 -874673 -874681 -874693 -874697 -874711 -874721 -874723 -874729 -874739 -874763 -874771 -874777 -874799 -874807 -874813 -874823 -874831 -874847 -874859 -874873 -874879 -874889 -874891 -874919 -874957 -874967 -874987 -875011 -875027 -875033 -875089 -875107 -875113 -875117 -875129 -875141 -875183 -875201 -875209 -875213 -875233 -875239 -875243 -875261 -875263 -875267 -875269 -875297 -875299 -875317 -875323 -875327 -875333 -875339 -875341 -875363 -875377 -875389 -875393 -875417 -875419 -875429 -875443 -875447 -875477 -875491 -875503 -875509 -875513 -875519 -875521 -875543 -875579 -875591 -875593 -875617 -875621 -875627 -875629 -875647 -875659 -875663 -875681 -875683 -875689 -875701 -875711 -875717 -875731 -875741 -875759 -875761 -875773 -875779 -875783 -875803 -875821 -875837 -875851 -875893 -875923 -875929 -875933 -875947 -875969 -875981 -875983 -876011 -876013 -876017 -876019 -876023 -876041 -876067 -876077 -876079 -876097 -876103 -876107 -876121 -876131 -876137 -876149 -876181 -876191 -876193 -876199 -876203 -876229 -876233 -876257 -876263 -876287 -876301 -876307 -876311 -876329 -876331 -876341 -876349 -876371 -876373 -876431 -876433 -876443 -876479 -876481 -876497 -876523 -876529 -876569 -876581 -876593 -876607 -876611 -876619 -876643 -876647 -876653 -876661 -876677 -876719 -876721 -876731 -876749 -876751 -876761 -876769 -876787 -876791 -876797 -876817 -876823 -876833 -876851 -876853 -876871 -876893 -876913 -876929 -876947 -876971 -877003 -877027 -877043 -877057 -877073 -877091 -877109 -877111 -877117 -877133 -877169 -877181 -877187 -877199 -877213 -877223 -877237 -877267 -877291 -877297 -877301 -877313 -877321 -877333 -877343 -877351 -877361 -877367 -877379 -877397 -877399 -877403 -877411 -877423 -877463 -877469 -877531 -877543 -877567 -877573 -877577 -877601 -877609 -877619 -877621 -877651 -877661 -877699 -877739 -877771 -877783 -877817 -877823 -877837 -877843 -877853 -877867 -877871 -877873 -877879 -877883 -877907 -877909 -877937 -877939 -877949 -877997 -878011 -878021 -878023 -878039 -878041 -878077 -878083 -878089 -878099 -878107 -878113 -878131 -878147 -878153 -878159 -878167 -878173 -878183 -878191 -878197 -878201 -878221 -878239 -878279 -878287 -878291 -878299 -878309 -878359 -878377 -878387 -878411 -878413 -878419 -878443 -878453 -878467 -878489 -878513 -878539 -878551 -878567 -878573 -878593 -878597 -878609 -878621 -878629 -878641 -878651 -878659 -878663 -878677 -878681 -878699 -878719 -878737 -878743 -878749 -878777 -878783 -878789 -878797 -878821 -878831 -878833 -878837 -878851 -878863 -878869 -878873 -878893 -878929 -878939 -878953 -878957 -878987 -878989 -879001 -879007 -879023 -879031 -879061 -879089 -879097 -879103 -879113 -879119 -879133 -879143 -879167 -879169 -879181 -879199 -879227 -879239 -879247 -879259 -879269 -879271 -879283 -879287 -879299 -879331 -879341 -879343 -879353 -879371 -879391 -879401 -879413 -879449 -879457 -879493 -879523 -879533 -879539 -879553 -879581 -879583 -879607 -879617 -879623 -879629 -879649 -879653 -879661 -879667 -879673 -879679 -879689 -879691 -879701 -879707 -879709 -879713 -879721 -879743 -879797 -879799 -879817 -879821 -879839 -879859 -879863 -879881 -879917 -879919 -879941 -879953 -879961 -879973 -879979 -880001 -880007 -880021 -880027 -880031 -880043 -880057 -880067 -880069 -880091 -880097 -880109 -880127 -880133 -880151 -880153 -880199 -880211 -880219 -880223 -880247 -880249 -880259 -880283 -880301 -880303 -880331 -880337 -880343 -880349 -880361 -880367 -880409 -880421 -880423 -880427 -880483 -880487 -880513 -880519 -880531 -880541 -880543 -880553 -880559 -880571 -880573 -880589 -880603 -880661 -880667 -880673 -880681 -880687 -880699 -880703 -880709 -880723 -880727 -880729 -880751 -880793 -880799 -880801 -880813 -880819 -880823 -880853 -880861 -880871 -880883 -880903 -880907 -880909 -880939 -880949 -880951 -880961 -880981 -880993 -881003 -881009 -881017 -881029 -881057 -881071 -881077 -881099 -881119 -881141 -881143 -881147 -881159 -881171 -881173 -881191 -881197 -881207 -881219 -881233 -881249 -881269 -881273 -881311 -881317 -881327 -881333 -881351 -881357 -881369 -881393 -881407 -881411 -881417 -881437 -881449 -881471 -881473 -881477 -881479 -881509 -881527 -881533 -881537 -881539 -881591 -881597 -881611 -881641 -881663 -881669 -881681 -881707 -881711 -881729 -881743 -881779 -881813 -881833 -881849 -881897 -881899 -881911 -881917 -881939 -881953 -881963 -881983 -881987 -882017 -882019 -882029 -882031 -882047 -882061 -882067 -882071 -882083 -882103 -882139 -882157 -882169 -882173 -882179 -882187 -882199 -882239 -882241 -882247 -882251 -882253 -882263 -882289 -882313 -882359 -882367 -882377 -882389 -882391 -882433 -882439 -882449 -882451 -882461 -882481 -882491 -882517 -882529 -882551 -882571 -882577 -882587 -882593 -882599 -882617 -882631 -882653 -882659 -882697 -882701 -882703 -882719 -882727 -882733 -882751 -882773 -882779 -882823 -882851 -882863 -882877 -882881 -882883 -882907 -882913 -882923 -882943 -882953 -882961 -882967 -882979 -883013 -883049 -883061 -883073 -883087 -883093 -883109 -883111 -883117 -883121 -883163 -883187 -883193 -883213 -883217 -883229 -883231 -883237 -883241 -883247 -883249 -883273 -883279 -883307 -883327 -883331 -883339 -883343 -883357 -883391 -883397 -883409 -883411 -883423 -883429 -883433 -883451 -883471 -883483 -883489 -883517 -883537 -883549 -883577 -883579 -883613 -883621 -883627 -883639 -883661 -883667 -883691 -883697 -883699 -883703 -883721 -883733 -883739 -883763 -883777 -883781 -883783 -883807 -883871 -883877 -883889 -883921 -883933 -883963 -883969 -883973 -883979 -883991 -884003 -884011 -884029 -884057 -884069 -884077 -884087 -884111 -884129 -884131 -884159 -884167 -884171 -884183 -884201 -884227 -884231 -884243 -884251 -884267 -884269 -884287 -884293 -884309 -884311 -884321 -884341 -884353 -884363 -884369 -884371 -884417 -884423 -884437 -884441 -884453 -884483 -884489 -884491 -884497 -884501 -884537 -884573 -884579 -884591 -884593 -884617 -884651 -884669 -884693 -884699 -884717 -884743 -884789 -884791 -884803 -884813 -884827 -884831 -884857 -884881 -884899 -884921 -884951 -884959 -884977 -884981 -884987 -884999 -885023 -885041 -885061 -885083 -885091 -885097 -885103 -885107 -885127 -885133 -885161 -885163 -885169 -885187 -885217 -885223 -885233 -885239 -885251 -885257 -885263 -885289 -885301 -885307 -885331 -885359 -885371 -885383 -885389 -885397 -885403 -885421 -885427 -885449 -885473 -885487 -885497 -885503 -885509 -885517 -885529 -885551 -885553 -885589 -885607 -885611 -885623 -885679 -885713 -885721 -885727 -885733 -885737 -885769 -885791 -885793 -885803 -885811 -885821 -885823 -885839 -885869 -885881 -885883 -885889 -885893 -885919 -885923 -885931 -885943 -885947 -885959 -885961 -885967 -885971 -885977 -885991 -886007 -886013 -886019 -886021 -886031 -886043 -886069 -886097 -886117 -886129 -886163 -886177 -886181 -886183 -886189 -886199 -886241 -886243 -886247 -886271 -886283 -886307 -886313 -886337 -886339 -886349 -886367 -886381 -886387 -886421 -886427 -886429 -886433 -886453 -886463 -886469 -886471 -886493 -886511 -886517 -886519 -886537 -886541 -886547 -886549 -886583 -886591 -886607 -886609 -886619 -886643 -886651 -886663 -886667 -886741 -886747 -886751 -886759 -886777 -886793 -886799 -886807 -886819 -886859 -886867 -886891 -886909 -886913 -886967 -886969 -886973 -886979 -886981 -886987 -886993 -886999 -887017 -887057 -887059 -887069 -887093 -887101 -887113 -887141 -887143 -887153 -887171 -887177 -887191 -887203 -887233 -887261 -887267 -887269 -887291 -887311 -887323 -887333 -887377 -887387 -887399 -887401 -887423 -887441 -887449 -887459 -887479 -887483 -887503 -887533 -887543 -887567 -887569 -887573 -887581 -887599 -887617 -887629 -887633 -887641 -887651 -887657 -887659 -887669 -887671 -887681 -887693 -887701 -887707 -887717 -887743 -887749 -887759 -887819 -887827 -887837 -887839 -887849 -887867 -887903 -887911 -887921 -887923 -887941 -887947 -887987 -887989 -888001 -888011 -888047 -888059 -888061 -888077 -888091 -888103 -888109 -888133 -888143 -888157 -888161 -888163 -888179 -888203 -888211 -888247 -888257 -888263 -888271 -888287 -888313 -888319 -888323 -888359 -888361 -888373 -888389 -888397 -888409 -888413 -888427 -888431 -888443 -888451 -888457 -888469 -888479 -888493 -888499 -888533 -888541 -888557 -888623 -888631 -888637 -888653 -888659 -888661 -888683 -888689 -888691 -888721 -888737 -888751 -888761 -888773 -888779 -888781 -888793 -888799 -888809 -888827 -888857 -888869 -888871 -888887 -888917 -888919 -888931 -888959 -888961 -888967 -888983 -888989 -888997 -889001 -889027 -889037 -889039 -889043 -889051 -889069 -889081 -889087 -889123 -889139 -889171 -889177 -889211 -889237 -889247 -889261 -889271 -889279 -889289 -889309 -889313 -889327 -889337 -889349 -889351 -889363 -889367 -889373 -889391 -889411 -889429 -889439 -889453 -889481 -889489 -889501 -889519 -889579 -889589 -889597 -889631 -889639 -889657 -889673 -889687 -889697 -889699 -889703 -889727 -889747 -889769 -889783 -889829 -889871 -889873 -889877 -889879 -889891 -889901 -889907 -889909 -889921 -889937 -889951 -889957 -889963 -889997 -890003 -890011 -890027 -890053 -890063 -890083 -890107 -890111 -890117 -890119 -890129 -890147 -890159 -890161 -890177 -890221 -890231 -890237 -890287 -890291 -890303 -890317 -890333 -890371 -890377 -890419 -890429 -890437 -890441 -890459 -890467 -890501 -890531 -890543 -890551 -890563 -890597 -890609 -890653 -890657 -890671 -890683 -890707 -890711 -890717 -890737 -890761 -890789 -890797 -890803 -890809 -890821 -890833 -890843 -890861 -890863 -890867 -890881 -890887 -890893 -890927 -890933 -890941 -890957 -890963 -890969 -890993 -890999 -891001 -891017 -891047 -891049 -891061 -891067 -891091 -891101 -891103 -891133 -891151 -891161 -891173 -891179 -891223 -891239 -891251 -891277 -891287 -891311 -891323 -891329 -891349 -891377 -891379 -891389 -891391 -891409 -891421 -891427 -891439 -891481 -891487 -891491 -891493 -891509 -891521 -891523 -891551 -891557 -891559 -891563 -891571 -891577 -891587 -891593 -891601 -891617 -891629 -891643 -891647 -891659 -891661 -891677 -891679 -891707 -891743 -891749 -891763 -891767 -891797 -891799 -891809 -891817 -891823 -891827 -891829 -891851 -891859 -891887 -891889 -891893 -891899 -891907 -891923 -891929 -891967 -891983 -891991 -891997 -892019 -892027 -892049 -892057 -892079 -892091 -892093 -892097 -892103 -892123 -892141 -892153 -892159 -892169 -892189 -892219 -892237 -892249 -892253 -892261 -892267 -892271 -892291 -892321 -892351 -892357 -892387 -892391 -892421 -892433 -892439 -892457 -892471 -892481 -892513 -892523 -892531 -892547 -892553 -892559 -892579 -892597 -892603 -892609 -892627 -892643 -892657 -892663 -892667 -892709 -892733 -892747 -892757 -892763 -892777 -892781 -892783 -892817 -892841 -892849 -892861 -892877 -892901 -892919 -892933 -892951 -892973 -892987 -892999 -893003 -893023 -893029 -893033 -893041 -893051 -893059 -893093 -893099 -893107 -893111 -893117 -893119 -893131 -893147 -893149 -893161 -893183 -893213 -893219 -893227 -893237 -893257 -893261 -893281 -893317 -893339 -893341 -893351 -893359 -893363 -893381 -893383 -893407 -893413 -893419 -893429 -893441 -893449 -893479 -893489 -893509 -893521 -893549 -893567 -893591 -893603 -893609 -893653 -893657 -893671 -893681 -893701 -893719 -893723 -893743 -893777 -893797 -893821 -893839 -893857 -893863 -893873 -893881 -893897 -893903 -893917 -893929 -893933 -893939 -893989 -893999 -894011 -894037 -894059 -894067 -894073 -894097 -894109 -894119 -894137 -894139 -894151 -894161 -894167 -894181 -894191 -894193 -894203 -894209 -894211 -894221 -894227 -894233 -894239 -894247 -894259 -894277 -894281 -894287 -894301 -894329 -894343 -894371 -894391 -894403 -894407 -894409 -894419 -894427 -894431 -894449 -894451 -894503 -894511 -894521 -894527 -894541 -894547 -894559 -894581 -894589 -894611 -894613 -894637 -894643 -894667 -894689 -894709 -894713 -894721 -894731 -894749 -894763 -894779 -894791 -894793 -894811 -894869 -894871 -894893 -894917 -894923 -894947 -894973 -894997 -895003 -895007 -895009 -895039 -895049 -895051 -895079 -895087 -895127 -895133 -895151 -895157 -895159 -895171 -895189 -895211 -895231 -895241 -895243 -895247 -895253 -895277 -895283 -895291 -895309 -895313 -895319 -895333 -895343 -895351 -895357 -895361 -895387 -895393 -895421 -895423 -895457 -895463 -895469 -895471 -895507 -895529 -895553 -895571 -895579 -895591 -895613 -895627 -895633 -895649 -895651 -895667 -895669 -895673 -895681 -895691 -895703 -895709 -895721 -895729 -895757 -895771 -895777 -895787 -895789 -895799 -895801 -895813 -895823 -895841 -895861 -895879 -895889 -895901 -895903 -895913 -895927 -895933 -895957 -895987 -896003 -896009 -896047 -896069 -896101 -896107 -896111 -896113 -896123 -896143 -896167 -896191 -896201 -896263 -896281 -896293 -896297 -896299 -896323 -896327 -896341 -896347 -896353 -896369 -896381 -896417 -896443 -896447 -896449 -896453 -896479 -896491 -896509 -896521 -896531 -896537 -896543 -896549 -896557 -896561 -896573 -896587 -896617 -896633 -896647 -896669 -896677 -896681 -896717 -896719 -896723 -896771 -896783 -896803 -896837 -896867 -896879 -896897 -896921 -896927 -896947 -896953 -896963 -896983 -897007 -897011 -897019 -897049 -897053 -897059 -897067 -897077 -897101 -897103 -897119 -897133 -897137 -897157 -897163 -897191 -897223 -897229 -897241 -897251 -897263 -897269 -897271 -897301 -897307 -897317 -897319 -897329 -897349 -897359 -897373 -897401 -897433 -897443 -897461 -897467 -897469 -897473 -897497 -897499 -897517 -897527 -897553 -897557 -897563 -897571 -897577 -897581 -897593 -897601 -897607 -897629 -897647 -897649 -897671 -897691 -897703 -897707 -897709 -897727 -897751 -897779 -897781 -897817 -897829 -897847 -897877 -897881 -897887 -897899 -897907 -897931 -897947 -897971 -897983 -898013 -898019 -898033 -898063 -898067 -898069 -898091 -898097 -898109 -898129 -898133 -898147 -898153 -898171 -898181 -898189 -898199 -898211 -898213 -898223 -898231 -898241 -898243 -898253 -898259 -898279 -898283 -898291 -898307 -898319 -898327 -898361 -898369 -898409 -898421 -898423 -898427 -898439 -898459 -898477 -898481 -898483 -898493 -898519 -898523 -898543 -898549 -898553 -898561 -898607 -898613 -898621 -898661 -898663 -898669 -898673 -898691 -898717 -898727 -898753 -898763 -898769 -898787 -898813 -898819 -898823 -898853 -898867 -898873 -898889 -898897 -898921 -898927 -898951 -898981 -898987 -899009 -899051 -899057 -899069 -899123 -899149 -899153 -899159 -899161 -899177 -899179 -899183 -899189 -899209 -899221 -899233 -899237 -899263 -899273 -899291 -899309 -899321 -899387 -899401 -899413 -899429 -899447 -899467 -899473 -899477 -899491 -899519 -899531 -899537 -899611 -899617 -899659 -899671 -899681 -899687 -899693 -899711 -899719 -899749 -899753 -899761 -899779 -899791 -899807 -899831 -899849 -899851 -899863 -899881 -899891 -899893 -899903 -899917 -899939 -899971 -899981 -900001 -900007 -900019 -900037 -900061 -900089 -900091 -900103 -900121 -900139 -900143 -900149 -900157 -900161 -900169 -900187 -900217 -900233 -900241 -900253 -900259 -900283 -900287 -900293 -900307 -900329 -900331 -900349 -900397 -900409 -900443 -900461 -900481 -900491 -900511 -900539 -900551 -900553 -900563 -900569 -900577 -900583 -900587 -900589 -900593 -900607 -900623 -900649 -900659 -900671 -900673 -900689 -900701 -900719 -900737 -900743 -900751 -900761 -900763 -900773 -900797 -900803 -900817 -900821 -900863 -900869 -900917 -900929 -900931 -900937 -900959 -900971 -900973 -900997 -901007 -901009 -901013 -901063 -901067 -901079 -901093 -901097 -901111 -901133 -901141 -901169 -901171 -901177 -901183 -901193 -901207 -901211 -901213 -901247 -901249 -901253 -901273 -901279 -901309 -901333 -901339 -901367 -901399 -901403 -901423 -901427 -901429 -901441 -901447 -901451 -901457 -901471 -901489 -901499 -901501 -901513 -901517 -901529 -901547 -901567 -901591 -901613 -901643 -901657 -901679 -901687 -901709 -901717 -901739 -901741 -901751 -901781 -901787 -901811 -901819 -901841 -901861 -901891 -901907 -901909 -901919 -901931 -901937 -901963 -901973 -901993 -901997 -902009 -902017 -902029 -902039 -902047 -902053 -902087 -902089 -902119 -902137 -902141 -902179 -902191 -902201 -902227 -902261 -902263 -902281 -902299 -902303 -902311 -902333 -902347 -902351 -902357 -902389 -902401 -902413 -902437 -902449 -902471 -902477 -902483 -902501 -902507 -902521 -902563 -902569 -902579 -902591 -902597 -902599 -902611 -902639 -902653 -902659 -902669 -902677 -902687 -902719 -902723 -902753 -902761 -902767 -902771 -902777 -902789 -902807 -902821 -902827 -902849 -902873 -902903 -902933 -902953 -902963 -902971 -902977 -902981 -902987 -903017 -903029 -903037 -903073 -903079 -903103 -903109 -903143 -903151 -903163 -903179 -903197 -903211 -903223 -903251 -903257 -903269 -903311 -903323 -903337 -903347 -903359 -903367 -903389 -903391 -903403 -903407 -903421 -903443 -903449 -903451 -903457 -903479 -903493 -903527 -903541 -903547 -903563 -903569 -903607 -903613 -903641 -903649 -903673 -903677 -903691 -903701 -903709 -903751 -903757 -903761 -903781 -903803 -903827 -903841 -903871 -903883 -903899 -903913 -903919 -903949 -903967 -903979 -904019 -904027 -904049 -904067 -904069 -904073 -904087 -904093 -904097 -904103 -904117 -904121 -904147 -904157 -904181 -904193 -904201 -904207 -904217 -904219 -904261 -904283 -904289 -904297 -904303 -904357 -904361 -904369 -904399 -904441 -904459 -904483 -904489 -904499 -904511 -904513 -904517 -904523 -904531 -904559 -904573 -904577 -904601 -904619 -904627 -904633 -904637 -904643 -904661 -904663 -904667 -904679 -904681 -904693 -904697 -904721 -904727 -904733 -904759 -904769 -904777 -904781 -904789 -904793 -904801 -904811 -904823 -904847 -904861 -904867 -904873 -904879 -904901 -904903 -904907 -904919 -904931 -904933 -904987 -904997 -904999 -905011 -905053 -905059 -905071 -905083 -905087 -905111 -905123 -905137 -905143 -905147 -905161 -905167 -905171 -905189 -905197 -905207 -905209 -905213 -905227 -905249 -905269 -905291 -905297 -905299 -905329 -905339 -905347 -905381 -905413 -905449 -905453 -905461 -905477 -905491 -905497 -905507 -905551 -905581 -905587 -905599 -905617 -905621 -905629 -905647 -905651 -905659 -905677 -905683 -905687 -905693 -905701 -905713 -905719 -905759 -905761 -905767 -905783 -905803 -905819 -905833 -905843 -905897 -905909 -905917 -905923 -905951 -905959 -905963 -905999 -906007 -906011 -906013 -906023 -906029 -906043 -906089 -906107 -906119 -906121 -906133 -906179 -906187 -906197 -906203 -906211 -906229 -906233 -906259 -906263 -906289 -906293 -906313 -906317 -906329 -906331 -906343 -906349 -906371 -906377 -906383 -906391 -906403 -906421 -906427 -906431 -906461 -906473 -906481 -906487 -906497 -906517 -906523 -906539 -906541 -906557 -906589 -906601 -906613 -906617 -906641 -906649 -906673 -906679 -906691 -906701 -906707 -906713 -906727 -906749 -906751 -906757 -906767 -906779 -906793 -906809 -906817 -906823 -906839 -906847 -906869 -906881 -906901 -906911 -906923 -906929 -906931 -906943 -906949 -906973 -907019 -907021 -907031 -907063 -907073 -907099 -907111 -907133 -907139 -907141 -907163 -907169 -907183 -907199 -907211 -907213 -907217 -907223 -907229 -907237 -907259 -907267 -907279 -907297 -907301 -907321 -907331 -907363 -907367 -907369 -907391 -907393 -907397 -907399 -907427 -907433 -907447 -907457 -907469 -907471 -907481 -907493 -907507 -907513 -907549 -907561 -907567 -907583 -907589 -907637 -907651 -907657 -907663 -907667 -907691 -907693 -907703 -907717 -907723 -907727 -907733 -907757 -907759 -907793 -907807 -907811 -907813 -907831 -907843 -907849 -907871 -907891 -907909 -907913 -907927 -907957 -907967 -907969 -907997 -907999 -908003 -908041 -908053 -908057 -908071 -908081 -908101 -908113 -908129 -908137 -908153 -908179 -908183 -908197 -908213 -908221 -908233 -908249 -908287 -908317 -908321 -908353 -908359 -908363 -908377 -908381 -908417 -908419 -908441 -908449 -908459 -908471 -908489 -908491 -908503 -908513 -908521 -908527 -908533 -908539 -908543 -908549 -908573 -908581 -908591 -908597 -908603 -908617 -908623 -908627 -908653 -908669 -908671 -908711 -908723 -908731 -908741 -908749 -908759 -908771 -908797 -908807 -908813 -908819 -908821 -908849 -908851 -908857 -908861 -908863 -908879 -908881 -908893 -908909 -908911 -908927 -908953 -908959 -908993 -909019 -909023 -909031 -909037 -909043 -909047 -909061 -909071 -909089 -909091 -909107 -909113 -909119 -909133 -909151 -909173 -909203 -909217 -909239 -909241 -909247 -909253 -909281 -909287 -909289 -909299 -909301 -909317 -909319 -909329 -909331 -909341 -909343 -909371 -909379 -909383 -909401 -909409 -909437 -909451 -909457 -909463 -909481 -909521 -909529 -909539 -909541 -909547 -909577 -909599 -909611 -909613 -909631 -909637 -909679 -909683 -909691 -909697 -909731 -909737 -909743 -909761 -909767 -909773 -909787 -909791 -909803 -909809 -909829 -909833 -909859 -909863 -909877 -909889 -909899 -909901 -909907 -909911 -909917 -909971 -909973 -909977 -910003 -910031 -910051 -910069 -910093 -910097 -910099 -910103 -910109 -910121 -910127 -910139 -910141 -910171 -910177 -910199 -910201 -910207 -910213 -910219 -910229 -910277 -910279 -910307 -910361 -910369 -910421 -910447 -910451 -910453 -910457 -910471 -910519 -910523 -910561 -910577 -910583 -910603 -910619 -910621 -910627 -910631 -910643 -910661 -910691 -910709 -910711 -910747 -910751 -910771 -910781 -910787 -910799 -910807 -910817 -910849 -910853 -910883 -910909 -910939 -910957 -910981 -911003 -911011 -911023 -911033 -911039 -911063 -911077 -911087 -911089 -911101 -911111 -911129 -911147 -911159 -911161 -911167 -911171 -911173 -911179 -911201 -911219 -911227 -911231 -911233 -911249 -911269 -911291 -911293 -911303 -911311 -911321 -911327 -911341 -911357 -911359 -911363 -911371 -911413 -911419 -911437 -911453 -911459 -911503 -911507 -911527 -911549 -911593 -911597 -911621 -911633 -911657 -911663 -911671 -911681 -911683 -911689 -911707 -911719 -911723 -911737 -911749 -911773 -911777 -911783 -911819 -911831 -911837 -911839 -911851 -911861 -911873 -911879 -911893 -911899 -911903 -911917 -911947 -911951 -911957 -911959 -911969 -912007 -912031 -912047 -912049 -912053 -912061 -912083 -912089 -912103 -912167 -912173 -912187 -912193 -912211 -912217 -912227 -912239 -912251 -912269 -912287 -912337 -912343 -912349 -912367 -912391 -912397 -912403 -912409 -912413 -912449 -912451 -912463 -912467 -912469 -912481 -912487 -912491 -912497 -912511 -912521 -912523 -912533 -912539 -912559 -912581 -912631 -912647 -912649 -912727 -912763 -912773 -912797 -912799 -912809 -912823 -912829 -912839 -912851 -912853 -912859 -912869 -912871 -912911 -912929 -912941 -912953 -912959 -912971 -912973 -912979 -912991 -913013 -913027 -913037 -913039 -913063 -913067 -913103 -913139 -913151 -913177 -913183 -913217 -913247 -913259 -913279 -913309 -913321 -913327 -913331 -913337 -913373 -913397 -913417 -913421 -913433 -913441 -913447 -913457 -913483 -913487 -913513 -913571 -913573 -913579 -913589 -913637 -913639 -913687 -913709 -913723 -913739 -913753 -913771 -913799 -913811 -913853 -913873 -913889 -913907 -913921 -913933 -913943 -913981 -913999 -914021 -914027 -914041 -914047 -914117 -914131 -914161 -914189 -914191 -914213 -914219 -914237 -914239 -914257 -914269 -914279 -914293 -914321 -914327 -914339 -914351 -914357 -914359 -914363 -914369 -914371 -914429 -914443 -914449 -914461 -914467 -914477 -914491 -914513 -914519 -914521 -914533 -914561 -914569 -914579 -914581 -914591 -914597 -914609 -914611 -914629 -914647 -914657 -914701 -914713 -914723 -914731 -914737 -914777 -914783 -914789 -914791 -914801 -914813 -914819 -914827 -914843 -914857 -914861 -914867 -914873 -914887 -914891 -914897 -914941 -914951 -914971 -914981 -915007 -915017 -915029 -915041 -915049 -915053 -915067 -915071 -915113 -915139 -915143 -915157 -915181 -915191 -915197 -915199 -915203 -915221 -915223 -915247 -915251 -915253 -915259 -915283 -915301 -915311 -915353 -915367 -915379 -915391 -915437 -915451 -915479 -915487 -915527 -915533 -915539 -915547 -915557 -915587 -915589 -915601 -915611 -915613 -915623 -915631 -915641 -915659 -915683 -915697 -915703 -915727 -915731 -915737 -915757 -915763 -915769 -915799 -915839 -915851 -915869 -915881 -915911 -915917 -915919 -915947 -915949 -915961 -915973 -915991 -916031 -916033 -916049 -916057 -916061 -916073 -916099 -916103 -916109 -916121 -916127 -916129 -916141 -916169 -916177 -916183 -916187 -916189 -916213 -916217 -916219 -916259 -916261 -916273 -916291 -916319 -916337 -916339 -916361 -916367 -916387 -916411 -916417 -916441 -916451 -916457 -916463 -916469 -916471 -916477 -916501 -916507 -916511 -916537 -916561 -916571 -916583 -916613 -916621 -916633 -916649 -916651 -916679 -916703 -916733 -916771 -916781 -916787 -916831 -916837 -916841 -916859 -916871 -916879 -916907 -916913 -916931 -916933 -916939 -916961 -916973 -916999 -917003 -917039 -917041 -917051 -917053 -917083 -917089 -917093 -917101 -917113 -917117 -917123 -917141 -917153 -917159 -917173 -917179 -917209 -917219 -917227 -917237 -917239 -917243 -917251 -917281 -917291 -917317 -917327 -917333 -917353 -917363 -917381 -917407 -917443 -917459 -917461 -917471 -917503 -917513 -917519 -917549 -917557 -917573 -917591 -917593 -917611 -917617 -917629 -917633 -917641 -917659 -917669 -917687 -917689 -917713 -917729 -917737 -917753 -917759 -917767 -917771 -917773 -917783 -917789 -917803 -917809 -917827 -917831 -917837 -917843 -917849 -917869 -917887 -917893 -917923 -917927 -917951 -917971 -917993 -918011 -918019 -918041 -918067 -918079 -918089 -918103 -918109 -918131 -918139 -918143 -918149 -918157 -918161 -918173 -918193 -918199 -918209 -918223 -918257 -918259 -918263 -918283 -918301 -918319 -918329 -918341 -918347 -918353 -918361 -918371 -918389 -918397 -918431 -918433 -918439 -918443 -918469 -918481 -918497 -918529 -918539 -918563 -918581 -918583 -918587 -918613 -918641 -918647 -918653 -918677 -918679 -918683 -918733 -918737 -918751 -918763 -918767 -918779 -918787 -918793 -918823 -918829 -918839 -918857 -918877 -918889 -918899 -918913 -918943 -918947 -918949 -918959 -918971 -918989 -919013 -919019 -919021 -919031 -919033 -919063 -919067 -919081 -919109 -919111 -919129 -919147 -919153 -919169 -919183 -919189 -919223 -919229 -919231 -919249 -919253 -919267 -919301 -919313 -919319 -919337 -919349 -919351 -919381 -919393 -919409 -919417 -919421 -919423 -919427 -919447 -919511 -919519 -919531 -919559 -919571 -919591 -919613 -919621 -919631 -919679 -919691 -919693 -919703 -919729 -919757 -919759 -919769 -919781 -919799 -919811 -919817 -919823 -919859 -919871 -919883 -919901 -919903 -919913 -919927 -919937 -919939 -919949 -919951 -919969 -919979 -920011 -920021 -920039 -920053 -920107 -920123 -920137 -920147 -920149 -920167 -920197 -920201 -920203 -920209 -920219 -920233 -920263 -920267 -920273 -920279 -920281 -920291 -920323 -920333 -920357 -920371 -920377 -920393 -920399 -920407 -920411 -920419 -920441 -920443 -920467 -920473 -920477 -920497 -920509 -920519 -920539 -920561 -920609 -920641 -920651 -920653 -920677 -920687 -920701 -920707 -920729 -920741 -920743 -920753 -920761 -920783 -920789 -920791 -920807 -920827 -920833 -920849 -920863 -920869 -920891 -920921 -920947 -920951 -920957 -920963 -920971 -920999 -921001 -921007 -921013 -921029 -921031 -921073 -921079 -921091 -921121 -921133 -921143 -921149 -921157 -921169 -921191 -921197 -921199 -921203 -921223 -921233 -921241 -921257 -921259 -921287 -921293 -921331 -921353 -921373 -921379 -921407 -921409 -921457 -921463 -921467 -921491 -921497 -921499 -921517 -921523 -921563 -921581 -921589 -921601 -921611 -921629 -921637 -921643 -921647 -921667 -921677 -921703 -921733 -921737 -921743 -921749 -921751 -921761 -921779 -921787 -921821 -921839 -921841 -921871 -921887 -921889 -921901 -921911 -921913 -921919 -921931 -921959 -921989 -922021 -922027 -922037 -922039 -922043 -922057 -922067 -922069 -922073 -922079 -922081 -922087 -922099 -922123 -922169 -922211 -922217 -922223 -922237 -922247 -922261 -922283 -922289 -922291 -922303 -922309 -922321 -922331 -922333 -922351 -922357 -922367 -922391 -922423 -922451 -922457 -922463 -922487 -922489 -922499 -922511 -922513 -922517 -922531 -922549 -922561 -922601 -922613 -922619 -922627 -922631 -922637 -922639 -922643 -922667 -922679 -922681 -922699 -922717 -922729 -922739 -922741 -922781 -922807 -922813 -922853 -922861 -922897 -922907 -922931 -922973 -922993 -923017 -923023 -923029 -923047 -923051 -923053 -923107 -923123 -923129 -923137 -923141 -923147 -923171 -923177 -923179 -923183 -923201 -923203 -923227 -923233 -923239 -923249 -923309 -923311 -923333 -923341 -923347 -923369 -923371 -923387 -923399 -923407 -923411 -923437 -923441 -923449 -923453 -923467 -923471 -923501 -923509 -923513 -923539 -923543 -923551 -923561 -923567 -923579 -923581 -923591 -923599 -923603 -923617 -923641 -923653 -923687 -923693 -923701 -923711 -923719 -923743 -923773 -923789 -923809 -923833 -923849 -923851 -923861 -923869 -923903 -923917 -923929 -923939 -923947 -923953 -923959 -923963 -923971 -923977 -923983 -923987 -924019 -924023 -924031 -924037 -924041 -924043 -924059 -924073 -924083 -924097 -924101 -924109 -924139 -924151 -924173 -924191 -924197 -924241 -924269 -924281 -924283 -924299 -924323 -924337 -924359 -924361 -924383 -924397 -924401 -924403 -924419 -924421 -924431 -924437 -924463 -924493 -924499 -924503 -924523 -924527 -924529 -924551 -924557 -924601 -924617 -924641 -924643 -924659 -924661 -924683 -924697 -924709 -924713 -924719 -924727 -924731 -924743 -924751 -924757 -924769 -924773 -924779 -924793 -924809 -924811 -924827 -924829 -924841 -924871 -924877 -924881 -924907 -924929 -924961 -924967 -924997 -925019 -925027 -925033 -925039 -925051 -925063 -925073 -925079 -925081 -925087 -925097 -925103 -925109 -925117 -925121 -925147 -925153 -925159 -925163 -925181 -925189 -925193 -925217 -925237 -925241 -925271 -925273 -925279 -925291 -925307 -925339 -925349 -925369 -925373 -925387 -925391 -925399 -925409 -925423 -925447 -925469 -925487 -925499 -925501 -925513 -925517 -925523 -925559 -925577 -925579 -925597 -925607 -925619 -925621 -925637 -925649 -925663 -925669 -925679 -925697 -925721 -925733 -925741 -925783 -925789 -925823 -925831 -925843 -925849 -925891 -925901 -925913 -925921 -925937 -925943 -925949 -925961 -925979 -925987 -925997 -926017 -926027 -926033 -926077 -926087 -926089 -926099 -926111 -926113 -926129 -926131 -926153 -926161 -926171 -926179 -926183 -926203 -926227 -926239 -926251 -926273 -926293 -926309 -926327 -926351 -926353 -926357 -926377 -926389 -926399 -926411 -926423 -926437 -926461 -926467 -926489 -926503 -926507 -926533 -926537 -926557 -926561 -926567 -926581 -926587 -926617 -926623 -926633 -926657 -926659 -926669 -926671 -926689 -926701 -926707 -926741 -926747 -926767 -926777 -926797 -926803 -926819 -926843 -926851 -926867 -926879 -926899 -926903 -926921 -926957 -926963 -926971 -926977 -926983 -927001 -927007 -927013 -927049 -927077 -927083 -927089 -927097 -927137 -927149 -927161 -927167 -927187 -927191 -927229 -927233 -927259 -927287 -927301 -927313 -927317 -927323 -927361 -927373 -927397 -927403 -927431 -927439 -927491 -927497 -927517 -927529 -927533 -927541 -927557 -927569 -927587 -927629 -927631 -927643 -927649 -927653 -927671 -927677 -927683 -927709 -927727 -927743 -927763 -927769 -927779 -927791 -927803 -927821 -927833 -927841 -927847 -927853 -927863 -927869 -927961 -927967 -927973 -928001 -928043 -928051 -928063 -928079 -928097 -928099 -928111 -928139 -928141 -928153 -928157 -928159 -928163 -928177 -928223 -928231 -928253 -928267 -928271 -928273 -928289 -928307 -928313 -928331 -928337 -928351 -928399 -928409 -928423 -928427 -928429 -928453 -928457 -928463 -928469 -928471 -928513 -928547 -928559 -928561 -928597 -928607 -928619 -928621 -928637 -928643 -928649 -928651 -928661 -928679 -928699 -928703 -928769 -928771 -928787 -928793 -928799 -928813 -928817 -928819 -928849 -928859 -928871 -928883 -928903 -928913 -928927 -928933 -928979 -929003 -929009 -929011 -929023 -929029 -929051 -929057 -929059 -929063 -929069 -929077 -929083 -929087 -929113 -929129 -929141 -929153 -929161 -929171 -929197 -929207 -929209 -929239 -929251 -929261 -929281 -929293 -929303 -929311 -929323 -929333 -929381 -929389 -929393 -929399 -929417 -929419 -929431 -929459 -929483 -929497 -929501 -929507 -929527 -929549 -929557 -929561 -929573 -929581 -929587 -929609 -929623 -929627 -929629 -929639 -929641 -929647 -929671 -929693 -929717 -929737 -929741 -929743 -929749 -929777 -929791 -929807 -929809 -929813 -929843 -929861 -929869 -929881 -929891 -929897 -929941 -929953 -929963 -929977 -929983 -930011 -930043 -930071 -930073 -930077 -930079 -930089 -930101 -930113 -930119 -930157 -930173 -930179 -930187 -930191 -930197 -930199 -930211 -930229 -930269 -930277 -930283 -930287 -930289 -930301 -930323 -930337 -930379 -930389 -930409 -930437 -930467 -930469 -930481 -930491 -930499 -930509 -930547 -930551 -930569 -930571 -930583 -930593 -930617 -930619 -930637 -930653 -930667 -930689 -930707 -930719 -930737 -930749 -930763 -930773 -930779 -930817 -930827 -930841 -930847 -930859 -930863 -930889 -930911 -930931 -930973 -930977 -930989 -930991 -931003 -931013 -931067 -931087 -931097 -931123 -931127 -931129 -931153 -931163 -931169 -931181 -931193 -931199 -931213 -931237 -931241 -931267 -931289 -931303 -931309 -931313 -931319 -931351 -931363 -931387 -931417 -931421 -931487 -931499 -931517 -931529 -931537 -931543 -931571 -931573 -931577 -931597 -931621 -931639 -931657 -931691 -931709 -931727 -931729 -931739 -931747 -931751 -931757 -931781 -931783 -931789 -931811 -931837 -931849 -931859 -931873 -931877 -931883 -931901 -931907 -931913 -931921 -931933 -931943 -931949 -931967 -931981 -931999 -932003 -932021 -932039 -932051 -932081 -932101 -932117 -932119 -932131 -932149 -932153 -932177 -932189 -932203 -932207 -932209 -932219 -932221 -932227 -932231 -932257 -932303 -932317 -932333 -932341 -932353 -932357 -932413 -932417 -932419 -932431 -932441 -932447 -932471 -932473 -932483 -932497 -932513 -932521 -932537 -932549 -932557 -932563 -932567 -932579 -932587 -932593 -932597 -932609 -932647 -932651 -932663 -932677 -932681 -932683 -932749 -932761 -932779 -932783 -932801 -932803 -932819 -932839 -932863 -932879 -932887 -932917 -932923 -932927 -932941 -932947 -932951 -932963 -932969 -932983 -932999 -933001 -933019 -933047 -933059 -933061 -933067 -933073 -933151 -933157 -933173 -933199 -933209 -933217 -933221 -933241 -933259 -933263 -933269 -933293 -933301 -933313 -933319 -933329 -933349 -933389 -933397 -933403 -933407 -933421 -933433 -933463 -933479 -933497 -933523 -933551 -933553 -933563 -933601 -933607 -933613 -933643 -933649 -933671 -933677 -933703 -933707 -933739 -933761 -933781 -933787 -933797 -933809 -933811 -933817 -933839 -933847 -933851 -933853 -933883 -933893 -933923 -933931 -933943 -933949 -933953 -933967 -933973 -933979 -934001 -934009 -934033 -934039 -934049 -934051 -934057 -934067 -934069 -934079 -934111 -934117 -934121 -934127 -934151 -934159 -934187 -934223 -934229 -934243 -934253 -934259 -934277 -934291 -934301 -934319 -934343 -934387 -934393 -934399 -934403 -934429 -934441 -934463 -934469 -934481 -934487 -934489 -934499 -934517 -934523 -934537 -934543 -934547 -934561 -934567 -934579 -934597 -934603 -934607 -934613 -934639 -934669 -934673 -934693 -934721 -934723 -934733 -934753 -934763 -934771 -934793 -934799 -934811 -934831 -934837 -934853 -934861 -934883 -934889 -934891 -934897 -934907 -934909 -934919 -934939 -934943 -934951 -934961 -934979 -934981 -935003 -935021 -935023 -935059 -935063 -935071 -935093 -935107 -935113 -935147 -935149 -935167 -935183 -935189 -935197 -935201 -935213 -935243 -935257 -935261 -935303 -935339 -935353 -935359 -935377 -935381 -935393 -935399 -935413 -935423 -935443 -935447 -935461 -935489 -935507 -935513 -935531 -935537 -935581 -935587 -935591 -935593 -935603 -935621 -935639 -935651 -935653 -935677 -935687 -935689 -935699 -935707 -935717 -935719 -935761 -935771 -935777 -935791 -935813 -935819 -935827 -935839 -935843 -935861 -935899 -935903 -935971 -935999 -936007 -936029 -936053 -936097 -936113 -936119 -936127 -936151 -936161 -936179 -936181 -936197 -936203 -936223 -936227 -936233 -936253 -936259 -936281 -936283 -936311 -936319 -936329 -936361 -936379 -936391 -936401 -936407 -936413 -936437 -936451 -936469 -936487 -936493 -936499 -936511 -936521 -936527 -936539 -936557 -936577 -936587 -936599 -936619 -936647 -936659 -936667 -936673 -936679 -936697 -936709 -936713 -936731 -936737 -936739 -936769 -936773 -936779 -936797 -936811 -936827 -936869 -936889 -936907 -936911 -936917 -936919 -936937 -936941 -936953 -936967 -937003 -937007 -937009 -937031 -937033 -937049 -937067 -937121 -937127 -937147 -937151 -937171 -937187 -937207 -937229 -937231 -937241 -937243 -937253 -937331 -937337 -937351 -937373 -937379 -937421 -937429 -937459 -937463 -937477 -937481 -937501 -937511 -937537 -937571 -937577 -937589 -937591 -937613 -937627 -937633 -937637 -937639 -937661 -937663 -937667 -937679 -937681 -937693 -937709 -937721 -937747 -937751 -937777 -937789 -937801 -937813 -937819 -937823 -937841 -937847 -937877 -937883 -937891 -937901 -937903 -937919 -937927 -937943 -937949 -937969 -937991 -938017 -938023 -938027 -938033 -938051 -938053 -938057 -938059 -938071 -938083 -938089 -938099 -938107 -938117 -938129 -938183 -938207 -938219 -938233 -938243 -938251 -938257 -938263 -938279 -938293 -938309 -938323 -938341 -938347 -938351 -938359 -938369 -938387 -938393 -938437 -938447 -938453 -938459 -938491 -938507 -938533 -938537 -938563 -938569 -938573 -938591 -938611 -938617 -938659 -938677 -938681 -938713 -938747 -938761 -938803 -938807 -938827 -938831 -938843 -938857 -938869 -938879 -938881 -938921 -938939 -938947 -938953 -938963 -938969 -938981 -938983 -938989 -939007 -939011 -939019 -939061 -939089 -939091 -939109 -939119 -939121 -939157 -939167 -939179 -939181 -939193 -939203 -939229 -939247 -939287 -939293 -939299 -939317 -939347 -939349 -939359 -939361 -939373 -939377 -939391 -939413 -939431 -939439 -939443 -939451 -939469 -939487 -939511 -939551 -939581 -939599 -939611 -939613 -939623 -939649 -939661 -939677 -939707 -939713 -939737 -939739 -939749 -939767 -939769 -939773 -939791 -939793 -939823 -939839 -939847 -939853 -939871 -939881 -939901 -939923 -939931 -939971 -939973 -939989 -939997 -940001 -940003 -940019 -940031 -940067 -940073 -940087 -940097 -940127 -940157 -940169 -940183 -940189 -940201 -940223 -940229 -940241 -940249 -940259 -940271 -940279 -940297 -940301 -940319 -940327 -940349 -940351 -940361 -940369 -940399 -940403 -940421 -940469 -940477 -940483 -940501 -940523 -940529 -940531 -940543 -940547 -940549 -940553 -940573 -940607 -940619 -940649 -940669 -940691 -940703 -940721 -940727 -940733 -940739 -940759 -940781 -940783 -940787 -940801 -940813 -940817 -940829 -940853 -940871 -940879 -940889 -940903 -940913 -940921 -940931 -940949 -940957 -940981 -940993 -941009 -941011 -941023 -941027 -941041 -941093 -941099 -941117 -941119 -941123 -941131 -941153 -941159 -941167 -941179 -941201 -941207 -941209 -941221 -941249 -941251 -941263 -941267 -941299 -941309 -941323 -941329 -941351 -941359 -941383 -941407 -941429 -941441 -941449 -941453 -941461 -941467 -941471 -941489 -941491 -941503 -941509 -941513 -941519 -941537 -941557 -941561 -941573 -941593 -941599 -941609 -941617 -941641 -941653 -941663 -941669 -941671 -941683 -941701 -941723 -941737 -941741 -941747 -941753 -941771 -941791 -941813 -941839 -941861 -941879 -941903 -941911 -941929 -941933 -941947 -941971 -941981 -941989 -941999 -942013 -942017 -942031 -942037 -942041 -942043 -942049 -942061 -942079 -942091 -942101 -942113 -942143 -942163 -942167 -942169 -942187 -942199 -942217 -942223 -942247 -942257 -942269 -942301 -942311 -942313 -942317 -942341 -942367 -942371 -942401 -942433 -942437 -942439 -942449 -942479 -942509 -942521 -942527 -942541 -942569 -942577 -942583 -942593 -942607 -942637 -942653 -942659 -942661 -942691 -942709 -942719 -942727 -942749 -942763 -942779 -942787 -942811 -942827 -942847 -942853 -942857 -942859 -942869 -942883 -942889 -942899 -942901 -942917 -942943 -942979 -942983 -943003 -943009 -943013 -943031 -943043 -943057 -943073 -943079 -943081 -943091 -943097 -943127 -943139 -943153 -943157 -943183 -943199 -943213 -943219 -943231 -943249 -943273 -943277 -943289 -943301 -943303 -943307 -943321 -943343 -943357 -943363 -943367 -943373 -943387 -943403 -943409 -943421 -943429 -943471 -943477 -943499 -943511 -943541 -943543 -943567 -943571 -943589 -943601 -943603 -943637 -943651 -943693 -943699 -943729 -943741 -943751 -943757 -943763 -943769 -943777 -943781 -943783 -943799 -943801 -943819 -943837 -943841 -943843 -943849 -943871 -943903 -943909 -943913 -943931 -943951 -943967 -944003 -944017 -944029 -944039 -944071 -944077 -944123 -944137 -944143 -944147 -944149 -944161 -944179 -944191 -944233 -944239 -944257 -944261 -944263 -944297 -944309 -944329 -944369 -944387 -944389 -944393 -944399 -944417 -944429 -944431 -944453 -944467 -944473 -944491 -944497 -944519 -944521 -944527 -944533 -944543 -944551 -944561 -944563 -944579 -944591 -944609 -944621 -944651 -944659 -944677 -944687 -944689 -944701 -944711 -944717 -944729 -944731 -944773 -944777 -944803 -944821 -944833 -944857 -944873 -944887 -944893 -944897 -944899 -944929 -944953 -944963 -944969 -944987 -945031 -945037 -945059 -945089 -945103 -945143 -945151 -945179 -945209 -945211 -945227 -945233 -945289 -945293 -945331 -945341 -945349 -945359 -945367 -945377 -945389 -945391 -945397 -945409 -945431 -945457 -945463 -945473 -945479 -945481 -945521 -945547 -945577 -945587 -945589 -945601 -945629 -945631 -945647 -945671 -945673 -945677 -945701 -945731 -945733 -945739 -945767 -945787 -945799 -945809 -945811 -945817 -945823 -945851 -945881 -945883 -945887 -945899 -945907 -945929 -945937 -945941 -945943 -945949 -945961 -945983 -946003 -946021 -946031 -946037 -946079 -946081 -946091 -946093 -946109 -946111 -946123 -946133 -946163 -946177 -946193 -946207 -946223 -946249 -946273 -946291 -946307 -946327 -946331 -946367 -946369 -946391 -946397 -946411 -946417 -946453 -946459 -946469 -946487 -946489 -946507 -946511 -946513 -946549 -946573 -946579 -946607 -946661 -946663 -946667 -946669 -946681 -946697 -946717 -946727 -946733 -946741 -946753 -946769 -946783 -946801 -946819 -946823 -946853 -946859 -946861 -946873 -946877 -946901 -946919 -946931 -946943 -946949 -946961 -946969 -946987 -946993 -946997 -947027 -947033 -947083 -947119 -947129 -947137 -947171 -947183 -947197 -947203 -947239 -947263 -947299 -947327 -947341 -947351 -947357 -947369 -947377 -947381 -947383 -947389 -947407 -947411 -947413 -947417 -947423 -947431 -947449 -947483 -947501 -947509 -947539 -947561 -947579 -947603 -947621 -947627 -947641 -947647 -947651 -947659 -947707 -947711 -947719 -947729 -947741 -947743 -947747 -947753 -947773 -947783 -947803 -947819 -947833 -947851 -947857 -947861 -947873 -947893 -947911 -947917 -947927 -947959 -947963 -947987 -948007 -948019 -948029 -948041 -948049 -948053 -948061 -948067 -948089 -948091 -948133 -948139 -948149 -948151 -948169 -948173 -948187 -948247 -948253 -948263 -948281 -948287 -948293 -948317 -948331 -948349 -948377 -948391 -948401 -948403 -948407 -948427 -948439 -948443 -948449 -948457 -948469 -948487 -948517 -948533 -948547 -948551 -948557 -948581 -948593 -948659 -948671 -948707 -948713 -948721 -948749 -948767 -948797 -948799 -948839 -948847 -948853 -948877 -948887 -948901 -948907 -948929 -948943 -948947 -948971 -948973 -948989 -949001 -949019 -949021 -949033 -949037 -949043 -949051 -949111 -949121 -949129 -949147 -949153 -949159 -949171 -949211 -949213 -949241 -949243 -949253 -949261 -949303 -949307 -949381 -949387 -949391 -949409 -949423 -949427 -949439 -949441 -949451 -949453 -949471 -949477 -949513 -949517 -949523 -949567 -949583 -949589 -949607 -949609 -949621 -949631 -949633 -949643 -949649 -949651 -949667 -949673 -949687 -949691 -949699 -949733 -949759 -949771 -949777 -949789 -949811 -949849 -949853 -949889 -949891 -949903 -949931 -949937 -949939 -949951 -949957 -949961 -949967 -949973 -949979 -949987 -949997 -950009 -950023 -950029 -950039 -950041 -950071 -950083 -950099 -950111 -950149 -950161 -950177 -950179 -950207 -950221 -950227 -950231 -950233 -950239 -950251 -950269 -950281 -950329 -950333 -950347 -950357 -950363 -950393 -950401 -950423 -950447 -950459 -950461 -950473 -950479 -950483 -950497 -950501 -950507 -950519 -950527 -950531 -950557 -950569 -950611 -950617 -950633 -950639 -950647 -950671 -950681 -950689 -950693 -950699 -950717 -950723 -950737 -950743 -950753 -950783 -950791 -950809 -950813 -950819 -950837 -950839 -950867 -950869 -950879 -950921 -950927 -950933 -950947 -950953 -950959 -950993 -951001 -951019 -951023 -951029 -951047 -951053 -951059 -951061 -951079 -951089 -951091 -951101 -951107 -951109 -951131 -951151 -951161 -951193 -951221 -951259 -951277 -951281 -951283 -951299 -951331 -951341 -951343 -951361 -951367 -951373 -951389 -951407 -951413 -951427 -951437 -951449 -951469 -951479 -951491 -951497 -951553 -951557 -951571 -951581 -951583 -951589 -951623 -951637 -951641 -951647 -951649 -951659 -951689 -951697 -951749 -951781 -951787 -951791 -951803 -951829 -951851 -951859 -951887 -951893 -951911 -951941 -951943 -951959 -951967 -951997 -952001 -952009 -952037 -952057 -952073 -952087 -952097 -952111 -952117 -952123 -952129 -952141 -952151 -952163 -952169 -952183 -952199 -952207 -952219 -952229 -952247 -952253 -952277 -952279 -952291 -952297 -952313 -952349 -952363 -952379 -952381 -952397 -952423 -952429 -952439 -952481 -952487 -952507 -952513 -952541 -952547 -952559 -952573 -952583 -952597 -952619 -952649 -952657 -952667 -952669 -952681 -952687 -952691 -952709 -952739 -952741 -952753 -952771 -952789 -952811 -952813 -952823 -952829 -952843 -952859 -952873 -952877 -952883 -952921 -952927 -952933 -952937 -952943 -952957 -952967 -952979 -952981 -952997 -953023 -953039 -953041 -953053 -953077 -953081 -953093 -953111 -953131 -953149 -953171 -953179 -953191 -953221 -953237 -953243 -953261 -953273 -953297 -953321 -953333 -953341 -953347 -953399 -953431 -953437 -953443 -953473 -953483 -953497 -953501 -953503 -953507 -953521 -953539 -953543 -953551 -953567 -953593 -953621 -953639 -953647 -953651 -953671 -953681 -953699 -953707 -953731 -953747 -953773 -953789 -953791 -953831 -953851 -953861 -953873 -953881 -953917 -953923 -953929 -953941 -953969 -953977 -953983 -953987 -954001 -954007 -954011 -954043 -954067 -954097 -954103 -954131 -954133 -954139 -954157 -954167 -954181 -954203 -954209 -954221 -954229 -954253 -954257 -954259 -954263 -954269 -954277 -954287 -954307 -954319 -954323 -954367 -954377 -954379 -954391 -954409 -954433 -954451 -954461 -954469 -954491 -954497 -954509 -954517 -954539 -954571 -954599 -954619 -954623 -954641 -954649 -954671 -954677 -954697 -954713 -954719 -954727 -954743 -954757 -954763 -954827 -954829 -954847 -954851 -954853 -954857 -954869 -954871 -954911 -954917 -954923 -954929 -954971 -954973 -954977 -954979 -954991 -955037 -955039 -955051 -955061 -955063 -955091 -955093 -955103 -955127 -955139 -955147 -955153 -955183 -955193 -955211 -955217 -955223 -955243 -955261 -955267 -955271 -955277 -955307 -955309 -955313 -955319 -955333 -955337 -955363 -955379 -955391 -955433 -955439 -955441 -955457 -955469 -955477 -955481 -955483 -955501 -955511 -955541 -955601 -955607 -955613 -955649 -955657 -955693 -955697 -955709 -955711 -955727 -955729 -955769 -955777 -955781 -955793 -955807 -955813 -955819 -955841 -955853 -955879 -955883 -955891 -955901 -955919 -955937 -955939 -955951 -955957 -955963 -955967 -955987 -955991 -955993 -956003 -956051 -956057 -956083 -956107 -956113 -956119 -956143 -956147 -956177 -956231 -956237 -956261 -956269 -956273 -956281 -956303 -956311 -956341 -956353 -956357 -956377 -956383 -956387 -956393 -956399 -956401 -956429 -956477 -956503 -956513 -956521 -956569 -956587 -956617 -956633 -956689 -956699 -956713 -956723 -956749 -956759 -956789 -956801 -956831 -956843 -956849 -956861 -956881 -956903 -956909 -956929 -956941 -956951 -956953 -956987 -956993 -956999 -957031 -957037 -957041 -957043 -957059 -957071 -957091 -957097 -957107 -957109 -957119 -957133 -957139 -957161 -957169 -957181 -957193 -957211 -957221 -957241 -957247 -957263 -957289 -957317 -957331 -957337 -957349 -957361 -957403 -957409 -957413 -957419 -957431 -957433 -957499 -957529 -957547 -957553 -957557 -957563 -957587 -957599 -957601 -957611 -957641 -957643 -957659 -957701 -957703 -957709 -957721 -957731 -957751 -957769 -957773 -957811 -957821 -957823 -957851 -957871 -957877 -957889 -957917 -957937 -957949 -957953 -957959 -957977 -957991 -958007 -958021 -958039 -958043 -958049 -958051 -958057 -958063 -958121 -958123 -958141 -958159 -958163 -958183 -958193 -958213 -958259 -958261 -958289 -958313 -958319 -958327 -958333 -958339 -958343 -958351 -958357 -958361 -958367 -958369 -958381 -958393 -958423 -958439 -958459 -958481 -958487 -958499 -958501 -958519 -958523 -958541 -958543 -958547 -958549 -958553 -958577 -958609 -958627 -958637 -958667 -958669 -958673 -958679 -958687 -958693 -958729 -958739 -958777 -958787 -958807 -958819 -958829 -958843 -958849 -958871 -958877 -958883 -958897 -958901 -958921 -958931 -958933 -958957 -958963 -958967 -958973 -959009 -959083 -959093 -959099 -959131 -959143 -959149 -959159 -959173 -959183 -959207 -959209 -959219 -959227 -959237 -959263 -959267 -959269 -959279 -959323 -959333 -959339 -959351 -959363 -959369 -959377 -959383 -959389 -959449 -959461 -959467 -959471 -959473 -959477 -959479 -959489 -959533 -959561 -959579 -959597 -959603 -959617 -959627 -959659 -959677 -959681 -959689 -959719 -959723 -959737 -959759 -959773 -959779 -959801 -959809 -959831 -959863 -959867 -959869 -959873 -959879 -959887 -959911 -959921 -959927 -959941 -959947 -959953 -959969 -960017 -960019 -960031 -960049 -960053 -960059 -960077 -960119 -960121 -960131 -960137 -960139 -960151 -960173 -960191 -960199 -960217 -960229 -960251 -960259 -960293 -960299 -960329 -960331 -960341 -960353 -960373 -960383 -960389 -960419 -960467 -960493 -960497 -960499 -960521 -960523 -960527 -960569 -960581 -960587 -960593 -960601 -960637 -960643 -960647 -960649 -960667 -960677 -960691 -960703 -960709 -960737 -960763 -960793 -960803 -960809 -960829 -960833 -960863 -960889 -960931 -960937 -960941 -960961 -960977 -960983 -960989 -960991 -961003 -961021 -961033 -961063 -961067 -961069 -961073 -961087 -961091 -961097 -961099 -961109 -961117 -961123 -961133 -961139 -961141 -961151 -961157 -961159 -961183 -961187 -961189 -961201 -961241 -961243 -961273 -961277 -961283 -961313 -961319 -961339 -961393 -961397 -961399 -961427 -961447 -961451 -961453 -961459 -961487 -961507 -961511 -961529 -961531 -961547 -961549 -961567 -961601 -961613 -961619 -961627 -961633 -961637 -961643 -961657 -961661 -961663 -961679 -961687 -961691 -961703 -961729 -961733 -961739 -961747 -961757 -961769 -961777 -961783 -961789 -961811 -961813 -961817 -961841 -961847 -961853 -961861 -961871 -961879 -961927 -961937 -961943 -961957 -961973 -961981 -961991 -961993 -962009 -962011 -962033 -962041 -962051 -962063 -962077 -962099 -962119 -962131 -962161 -962177 -962197 -962233 -962237 -962243 -962257 -962267 -962303 -962309 -962341 -962363 -962413 -962417 -962431 -962441 -962447 -962459 -962461 -962471 -962477 -962497 -962503 -962509 -962537 -962543 -962561 -962569 -962587 -962603 -962609 -962617 -962623 -962627 -962653 -962669 -962671 -962677 -962681 -962683 -962737 -962743 -962747 -962779 -962783 -962789 -962791 -962807 -962837 -962839 -962861 -962867 -962869 -962903 -962909 -962911 -962921 -962959 -962963 -962971 -962993 -963019 -963031 -963043 -963047 -963097 -963103 -963121 -963143 -963163 -963173 -963181 -963187 -963191 -963211 -963223 -963227 -963239 -963241 -963253 -963283 -963299 -963301 -963311 -963323 -963331 -963341 -963343 -963349 -963367 -963379 -963397 -963419 -963427 -963461 -963481 -963491 -963497 -963499 -963559 -963581 -963601 -963607 -963629 -963643 -963653 -963659 -963667 -963689 -963691 -963701 -963707 -963709 -963719 -963731 -963751 -963761 -963763 -963779 -963793 -963799 -963811 -963817 -963839 -963841 -963847 -963863 -963871 -963877 -963899 -963901 -963913 -963943 -963973 -963979 -964009 -964021 -964027 -964039 -964049 -964081 -964097 -964133 -964151 -964153 -964199 -964207 -964213 -964217 -964219 -964253 -964259 -964261 -964267 -964283 -964289 -964297 -964303 -964309 -964333 -964339 -964351 -964357 -964363 -964373 -964417 -964423 -964433 -964463 -964499 -964501 -964507 -964517 -964519 -964531 -964559 -964571 -964577 -964583 -964589 -964609 -964637 -964661 -964679 -964693 -964697 -964703 -964721 -964753 -964757 -964783 -964787 -964793 -964823 -964829 -964861 -964871 -964879 -964883 -964889 -964897 -964913 -964927 -964933 -964939 -964967 -964969 -964973 -964981 -965023 -965047 -965059 -965087 -965089 -965101 -965113 -965117 -965131 -965147 -965161 -965171 -965177 -965179 -965189 -965191 -965197 -965201 -965227 -965233 -965249 -965267 -965291 -965303 -965317 -965329 -965357 -965369 -965399 -965401 -965407 -965411 -965423 -965429 -965443 -965453 -965467 -965483 -965491 -965507 -965519 -965533 -965551 -965567 -965603 -965611 -965621 -965623 -965639 -965647 -965659 -965677 -965711 -965749 -965759 -965773 -965777 -965779 -965791 -965801 -965843 -965851 -965857 -965893 -965927 -965953 -965963 -965969 -965983 -965989 -966011 -966013 -966029 -966041 -966109 -966113 -966139 -966149 -966157 -966191 -966197 -966209 -966211 -966221 -966227 -966233 -966241 -966257 -966271 -966293 -966307 -966313 -966319 -966323 -966337 -966347 -966353 -966373 -966377 -966379 -966389 -966401 -966409 -966419 -966431 -966439 -966463 -966481 -966491 -966499 -966509 -966521 -966527 -966547 -966557 -966583 -966613 -966617 -966619 -966631 -966653 -966659 -966661 -966677 -966727 -966751 -966781 -966803 -966817 -966863 -966869 -966871 -966883 -966893 -966907 -966913 -966919 -966923 -966937 -966961 -966971 -966991 -966997 -967003 -967019 -967049 -967061 -967111 -967129 -967139 -967171 -967201 -967229 -967259 -967261 -967289 -967297 -967319 -967321 -967327 -967333 -967349 -967361 -967363 -967391 -967397 -967427 -967429 -967441 -967451 -967459 -967481 -967493 -967501 -967507 -967511 -967529 -967567 -967583 -967607 -967627 -967663 -967667 -967693 -967699 -967709 -967721 -967739 -967751 -967753 -967763 -967781 -967787 -967819 -967823 -967831 -967843 -967847 -967859 -967873 -967877 -967903 -967919 -967931 -967937 -967951 -967961 -967979 -967999 -968003 -968017 -968021 -968027 -968041 -968063 -968089 -968101 -968111 -968113 -968117 -968137 -968141 -968147 -968159 -968173 -968197 -968213 -968237 -968239 -968251 -968263 -968267 -968273 -968291 -968299 -968311 -968321 -968329 -968333 -968353 -968377 -968381 -968389 -968419 -968423 -968431 -968437 -968459 -968467 -968479 -968501 -968503 -968519 -968521 -968537 -968557 -968567 -968573 -968593 -968641 -968647 -968659 -968663 -968689 -968699 -968713 -968729 -968731 -968761 -968801 -968809 -968819 -968827 -968831 -968857 -968879 -968897 -968909 -968911 -968917 -968939 -968959 -968963 -968971 -969011 -969037 -969041 -969049 -969071 -969083 -969097 -969109 -969113 -969131 -969139 -969167 -969179 -969181 -969233 -969239 -969253 -969257 -969259 -969271 -969301 -969341 -969343 -969347 -969359 -969377 -969403 -969407 -969421 -969431 -969433 -969443 -969457 -969461 -969467 -969481 -969497 -969503 -969509 -969533 -969559 -969569 -969593 -969599 -969637 -969641 -969667 -969671 -969677 -969679 -969713 -969719 -969721 -969743 -969757 -969763 -969767 -969791 -969797 -969809 -969821 -969851 -969863 -969869 -969877 -969889 -969907 -969911 -969919 -969923 -969929 -969977 -969989 -970027 -970031 -970043 -970051 -970061 -970063 -970069 -970087 -970091 -970111 -970133 -970147 -970201 -970213 -970217 -970219 -970231 -970237 -970247 -970259 -970261 -970267 -970279 -970297 -970303 -970313 -970351 -970391 -970421 -970423 -970433 -970441 -970447 -970457 -970469 -970481 -970493 -970537 -970549 -970561 -970573 -970583 -970603 -970633 -970643 -970657 -970667 -970687 -970699 -970721 -970747 -970777 -970787 -970789 -970793 -970799 -970813 -970817 -970829 -970847 -970859 -970861 -970867 -970877 -970883 -970903 -970909 -970927 -970939 -970943 -970961 -970967 -970969 -970987 -970997 -970999 -971021 -971027 -971029 -971039 -971051 -971053 -971063 -971077 -971093 -971099 -971111 -971141 -971143 -971149 -971153 -971171 -971177 -971197 -971207 -971237 -971251 -971263 -971273 -971279 -971281 -971291 -971309 -971339 -971353 -971357 -971371 -971381 -971387 -971389 -971401 -971419 -971429 -971441 -971473 -971479 -971483 -971491 -971501 -971513 -971521 -971549 -971561 -971563 -971569 -971591 -971639 -971651 -971653 -971683 -971693 -971699 -971713 -971723 -971753 -971759 -971767 -971783 -971821 -971833 -971851 -971857 -971863 -971899 -971903 -971917 -971921 -971933 -971939 -971951 -971959 -971977 -971981 -971989 -972001 -972017 -972029 -972031 -972047 -972071 -972079 -972091 -972113 -972119 -972121 -972131 -972133 -972137 -972161 -972163 -972197 -972199 -972221 -972227 -972229 -972259 -972263 -972271 -972277 -972313 -972319 -972329 -972337 -972343 -972347 -972353 -972373 -972403 -972407 -972409 -972427 -972431 -972443 -972469 -972473 -972481 -972493 -972533 -972557 -972577 -972581 -972599 -972611 -972613 -972623 -972637 -972649 -972661 -972679 -972683 -972701 -972721 -972787 -972793 -972799 -972823 -972827 -972833 -972847 -972869 -972887 -972899 -972901 -972941 -972943 -972967 -972977 -972991 -973001 -973003 -973031 -973033 -973051 -973057 -973067 -973069 -973073 -973081 -973099 -973129 -973151 -973169 -973177 -973187 -973213 -973253 -973277 -973279 -973283 -973289 -973321 -973331 -973333 -973367 -973373 -973387 -973397 -973409 -973411 -973421 -973439 -973459 -973487 -973523 -973529 -973537 -973547 -973561 -973591 -973597 -973631 -973657 -973669 -973681 -973691 -973727 -973757 -973759 -973781 -973787 -973789 -973801 -973813 -973823 -973837 -973853 -973891 -973897 -973901 -973919 -973957 -974003 -974009 -974033 -974041 -974053 -974063 -974089 -974107 -974123 -974137 -974143 -974147 -974159 -974161 -974167 -974177 -974179 -974189 -974213 -974249 -974261 -974269 -974273 -974279 -974293 -974317 -974329 -974359 -974383 -974387 -974401 -974411 -974417 -974419 -974431 -974437 -974443 -974459 -974473 -974489 -974497 -974507 -974513 -974531 -974537 -974539 -974551 -974557 -974563 -974581 -974591 -974599 -974651 -974653 -974657 -974707 -974711 -974713 -974737 -974747 -974749 -974761 -974773 -974803 -974819 -974821 -974837 -974849 -974861 -974863 -974867 -974873 -974879 -974887 -974891 -974923 -974927 -974957 -974959 -974969 -974971 -974977 -974983 -974989 -974999 -975011 -975017 -975049 -975053 -975071 -975083 -975089 -975133 -975151 -975157 -975181 -975187 -975193 -975199 -975217 -975257 -975259 -975263 -975277 -975281 -975287 -975313 -975323 -975343 -975367 -975379 -975383 -975389 -975421 -975427 -975433 -975439 -975463 -975493 -975497 -975509 -975521 -975523 -975551 -975553 -975581 -975599 -975619 -975629 -975643 -975649 -975661 -975671 -975691 -975701 -975731 -975739 -975743 -975797 -975803 -975811 -975823 -975827 -975847 -975857 -975869 -975883 -975899 -975901 -975907 -975941 -975943 -975967 -975977 -975991 -976009 -976013 -976033 -976039 -976091 -976093 -976103 -976109 -976117 -976127 -976147 -976177 -976187 -976193 -976211 -976231 -976253 -976271 -976279 -976301 -976303 -976307 -976309 -976351 -976369 -976403 -976411 -976439 -976447 -976453 -976457 -976471 -976477 -976483 -976489 -976501 -976513 -976537 -976553 -976559 -976561 -976571 -976601 -976607 -976621 -976637 -976639 -976643 -976669 -976699 -976709 -976721 -976727 -976777 -976799 -976817 -976823 -976849 -976853 -976883 -976909 -976919 -976933 -976951 -976957 -976991 -977021 -977023 -977047 -977057 -977069 -977087 -977107 -977147 -977149 -977167 -977183 -977191 -977203 -977209 -977233 -977239 -977243 -977257 -977269 -977299 -977323 -977351 -977357 -977359 -977363 -977369 -977407 -977411 -977413 -977437 -977447 -977507 -977513 -977521 -977539 -977567 -977591 -977593 -977609 -977611 -977629 -977671 -977681 -977693 -977719 -977723 -977747 -977761 -977791 -977803 -977813 -977819 -977831 -977849 -977861 -977881 -977897 -977923 -977927 -977971 -978001 -978007 -978011 -978017 -978031 -978037 -978041 -978049 -978053 -978067 -978071 -978073 -978077 -978079 -978091 -978113 -978149 -978151 -978157 -978179 -978181 -978203 -978209 -978217 -978223 -978233 -978239 -978269 -978277 -978283 -978287 -978323 -978337 -978343 -978347 -978349 -978359 -978389 -978403 -978413 -978427 -978449 -978457 -978463 -978473 -978479 -978491 -978511 -978521 -978541 -978569 -978599 -978611 -978617 -978619 -978643 -978647 -978683 -978689 -978697 -978713 -978727 -978743 -978749 -978773 -978797 -978799 -978821 -978839 -978851 -978853 -978863 -978871 -978883 -978907 -978917 -978931 -978947 -978973 -978997 -979001 -979009 -979031 -979037 -979061 -979063 -979093 -979103 -979109 -979117 -979159 -979163 -979171 -979177 -979189 -979201 -979207 -979211 -979219 -979229 -979261 -979273 -979283 -979291 -979313 -979327 -979333 -979337 -979343 -979361 -979369 -979373 -979379 -979403 -979423 -979439 -979457 -979471 -979481 -979519 -979529 -979541 -979543 -979549 -979553 -979567 -979651 -979691 -979709 -979717 -979747 -979757 -979787 -979807 -979819 -979831 -979873 -979883 -979889 -979907 -979919 -979921 -979949 -979969 -979987 -980027 -980047 -980069 -980071 -980081 -980107 -980117 -980131 -980137 -980149 -980159 -980173 -980179 -980197 -980219 -980249 -980261 -980293 -980299 -980321 -980327 -980363 -980377 -980393 -980401 -980417 -980423 -980431 -980449 -980459 -980471 -980489 -980491 -980503 -980549 -980557 -980579 -980587 -980591 -980593 -980599 -980621 -980641 -980677 -980687 -980689 -980711 -980717 -980719 -980729 -980731 -980773 -980801 -980803 -980827 -980831 -980851 -980887 -980893 -980897 -980899 -980909 -980911 -980921 -980957 -980963 -980999 -981011 -981017 -981023 -981037 -981049 -981061 -981067 -981073 -981077 -981091 -981133 -981137 -981139 -981151 -981173 -981187 -981199 -981209 -981221 -981241 -981263 -981271 -981283 -981287 -981289 -981301 -981311 -981319 -981373 -981377 -981391 -981397 -981419 -981437 -981439 -981443 -981451 -981467 -981473 -981481 -981493 -981517 -981523 -981527 -981569 -981577 -981587 -981599 -981601 -981623 -981637 -981653 -981683 -981691 -981697 -981703 -981707 -981713 -981731 -981769 -981797 -981809 -981811 -981817 -981823 -981887 -981889 -981913 -981919 -981941 -981947 -981949 -981961 -981979 -981983 -982021 -982057 -982061 -982063 -982067 -982087 -982097 -982099 -982103 -982117 -982133 -982147 -982151 -982171 -982183 -982187 -982211 -982213 -982217 -982231 -982271 -982273 -982301 -982321 -982337 -982339 -982343 -982351 -982363 -982381 -982393 -982403 -982453 -982489 -982493 -982559 -982571 -982573 -982577 -982589 -982603 -982613 -982621 -982633 -982643 -982687 -982693 -982697 -982703 -982741 -982759 -982769 -982777 -982783 -982789 -982801 -982819 -982829 -982841 -982843 -982847 -982867 -982871 -982903 -982909 -982931 -982939 -982967 -982973 -982981 -983063 -983069 -983083 -983113 -983119 -983123 -983131 -983141 -983149 -983153 -983173 -983179 -983189 -983197 -983209 -983233 -983239 -983243 -983261 -983267 -983299 -983317 -983327 -983329 -983347 -983363 -983371 -983377 -983407 -983429 -983431 -983441 -983443 -983447 -983449 -983461 -983491 -983513 -983519 -983527 -983531 -983533 -983557 -983579 -983581 -983597 -983617 -983659 -983699 -983701 -983737 -983771 -983777 -983783 -983789 -983791 -983803 -983809 -983813 -983819 -983849 -983861 -983863 -983881 -983911 -983923 -983929 -983951 -983987 -983993 -984007 -984017 -984037 -984047 -984059 -984083 -984091 -984119 -984121 -984127 -984149 -984167 -984199 -984211 -984241 -984253 -984299 -984301 -984307 -984323 -984329 -984337 -984341 -984349 -984353 -984359 -984367 -984383 -984391 -984397 -984407 -984413 -984421 -984427 -984437 -984457 -984461 -984481 -984491 -984497 -984539 -984541 -984563 -984583 -984587 -984593 -984611 -984617 -984667 -984689 -984701 -984703 -984707 -984733 -984749 -984757 -984761 -984817 -984847 -984853 -984859 -984877 -984881 -984911 -984913 -984917 -984923 -984931 -984947 -984959 -985003 -985007 -985013 -985027 -985057 -985063 -985079 -985097 -985109 -985121 -985129 -985151 -985177 -985181 -985213 -985219 -985253 -985277 -985279 -985291 -985301 -985307 -985331 -985339 -985351 -985379 -985399 -985403 -985417 -985433 -985447 -985451 -985463 -985471 -985483 -985487 -985493 -985499 -985519 -985529 -985531 -985547 -985571 -985597 -985601 -985613 -985631 -985639 -985657 -985667 -985679 -985703 -985709 -985723 -985729 -985741 -985759 -985781 -985783 -985799 -985807 -985819 -985867 -985871 -985877 -985903 -985921 -985937 -985951 -985969 -985973 -985979 -985981 -985991 -985993 -985997 -986023 -986047 -986053 -986071 -986101 -986113 -986131 -986137 -986143 -986147 -986149 -986177 -986189 -986191 -986197 -986207 -986213 -986239 -986257 -986267 -986281 -986287 -986333 -986339 -986351 -986369 -986411 -986417 -986429 -986437 -986471 -986477 -986497 -986507 -986509 -986519 -986533 -986543 -986563 -986567 -986569 -986581 -986593 -986597 -986599 -986617 -986633 -986641 -986659 -986693 -986707 -986717 -986719 -986729 -986737 -986749 -986759 -986767 -986779 -986801 -986813 -986819 -986837 -986849 -986851 -986857 -986903 -986927 -986929 -986933 -986941 -986959 -986963 -986981 -986983 -986989 -987013 -987023 -987029 -987043 -987053 -987061 -987067 -987079 -987083 -987089 -987097 -987101 -987127 -987143 -987191 -987193 -987199 -987209 -987211 -987227 -987251 -987293 -987299 -987313 -987353 -987361 -987383 -987391 -987433 -987457 -987463 -987473 -987491 -987509 -987523 -987533 -987541 -987559 -987587 -987593 -987599 -987607 -987631 -987659 -987697 -987713 -987739 -987793 -987797 -987803 -987809 -987821 -987851 -987869 -987911 -987913 -987929 -987941 -987971 -987979 -987983 -987991 -987997 -988007 -988021 -988033 -988051 -988061 -988067 -988069 -988093 -988109 -988111 -988129 -988147 -988157 -988199 -988213 -988217 -988219 -988231 -988237 -988243 -988271 -988279 -988297 -988313 -988319 -988321 -988343 -988357 -988367 -988409 -988417 -988439 -988453 -988459 -988483 -988489 -988501 -988511 -988541 -988549 -988571 -988577 -988579 -988583 -988591 -988607 -988643 -988649 -988651 -988661 -988681 -988693 -988711 -988727 -988733 -988759 -988763 -988783 -988789 -988829 -988837 -988849 -988859 -988861 -988877 -988901 -988909 -988937 -988951 -988963 -988979 -989011 -989029 -989059 -989071 -989081 -989099 -989119 -989123 -989171 -989173 -989231 -989239 -989249 -989251 -989279 -989293 -989309 -989321 -989323 -989327 -989341 -989347 -989353 -989377 -989381 -989411 -989419 -989423 -989441 -989467 -989477 -989479 -989507 -989533 -989557 -989561 -989579 -989581 -989623 -989629 -989641 -989647 -989663 -989671 -989687 -989719 -989743 -989749 -989753 -989761 -989777 -989783 -989797 -989803 -989827 -989831 -989837 -989839 -989869 -989873 -989887 -989909 -989917 -989921 -989929 -989939 -989951 -989959 -989971 -989977 -989981 -989999 -990001 -990013 -990023 -990037 -990043 -990053 -990137 -990151 -990163 -990169 -990179 -990181 -990211 -990239 -990259 -990277 -990281 -990287 -990289 -990293 -990307 -990313 -990323 -990329 -990331 -990349 -990359 -990361 -990371 -990377 -990383 -990389 -990397 -990463 -990469 -990487 -990497 -990503 -990511 -990523 -990529 -990547 -990559 -990589 -990593 -990599 -990631 -990637 -990643 -990673 -990707 -990719 -990733 -990761 -990767 -990797 -990799 -990809 -990841 -990851 -990881 -990887 -990889 -990893 -990917 -990923 -990953 -990961 -990967 -990973 -990989 -991009 -991027 -991031 -991037 -991043 -991057 -991063 -991069 -991073 -991079 -991091 -991127 -991129 -991147 -991171 -991181 -991187 -991201 -991217 -991223 -991229 -991261 -991273 -991313 -991327 -991343 -991357 -991381 -991387 -991409 -991427 -991429 -991447 -991453 -991483 -991493 -991499 -991511 -991531 -991541 -991547 -991567 -991579 -991603 -991607 -991619 -991621 -991633 -991643 -991651 -991663 -991693 -991703 -991717 -991723 -991733 -991741 -991751 -991777 -991811 -991817 -991867 -991871 -991873 -991883 -991889 -991901 -991909 -991927 -991931 -991943 -991951 -991957 -991961 -991973 -991979 -991981 -991987 -991999 -992011 -992021 -992023 -992051 -992087 -992111 -992113 -992129 -992141 -992153 -992179 -992183 -992219 -992231 -992249 -992263 -992267 -992269 -992281 -992309 -992317 -992357 -992359 -992363 -992371 -992393 -992417 -992429 -992437 -992441 -992449 -992461 -992513 -992521 -992539 -992549 -992561 -992591 -992603 -992609 -992623 -992633 -992659 -992689 -992701 -992707 -992723 -992737 -992777 -992801 -992809 -992819 -992843 -992857 -992861 -992863 -992867 -992891 -992903 -992917 -992923 -992941 -992947 -992963 -992983 -993001 -993011 -993037 -993049 -993053 -993079 -993103 -993107 -993121 -993137 -993169 -993197 -993199 -993203 -993211 -993217 -993233 -993241 -993247 -993253 -993269 -993283 -993287 -993319 -993323 -993341 -993367 -993397 -993401 -993407 -993431 -993437 -993451 -993467 -993479 -993481 -993493 -993527 -993541 -993557 -993589 -993611 -993617 -993647 -993679 -993683 -993689 -993703 -993763 -993779 -993781 -993793 -993821 -993823 -993827 -993841 -993851 -993869 -993887 -993893 -993907 -993913 -993919 -993943 -993961 -993977 -993983 -993997 -994013 -994027 -994039 -994051 -994067 -994069 -994073 -994087 -994093 -994141 -994163 -994181 -994183 -994193 -994199 -994229 -994237 -994241 -994247 -994249 -994271 -994297 -994303 -994307 -994309 -994319 -994321 -994337 -994339 -994363 -994369 -994391 -994393 -994417 -994447 -994453 -994457 -994471 -994489 -994501 -994549 -994559 -994561 -994571 -994579 -994583 -994603 -994621 -994657 -994663 -994667 -994691 -994699 -994709 -994711 -994717 -994723 -994751 -994769 -994793 -994811 -994813 -994817 -994831 -994837 -994853 -994867 -994871 -994879 -994901 -994907 -994913 -994927 -994933 -994949 -994963 -994991 -994997 -995009 -995023 -995051 -995053 -995081 -995117 -995119 -995147 -995167 -995173 -995219 -995227 -995237 -995243 -995273 -995303 -995327 -995329 -995339 -995341 -995347 -995363 -995369 -995377 -995381 -995387 -995399 -995431 -995443 -995447 -995461 -995471 -995513 -995531 -995539 -995549 -995551 -995567 -995573 -995587 -995591 -995593 -995611 -995623 -995641 -995651 -995663 -995669 -995677 -995699 -995713 -995719 -995737 -995747 -995783 -995791 -995801 -995833 -995881 -995887 -995903 -995909 -995927 -995941 -995957 -995959 -995983 -995987 -995989 -996001 -996011 -996019 -996049 -996067 -996103 -996109 -996119 -996143 -996157 -996161 -996167 -996169 -996173 -996187 -996197 -996209 -996211 -996253 -996257 -996263 -996271 -996293 -996301 -996311 -996323 -996329 -996361 -996367 -996403 -996407 -996409 -996431 -996461 -996487 -996511 -996529 -996539 -996551 -996563 -996571 -996599 -996601 -996617 -996629 -996631 -996637 -996647 -996649 -996689 -996703 -996739 -996763 -996781 -996803 -996811 -996841 -996847 -996857 -996859 -996871 -996881 -996883 -996887 -996899 -996953 -996967 -996973 -996979 -997001 -997013 -997019 -997021 -997037 -997043 -997057 -997069 -997081 -997091 -997097 -997099 -997103 -997109 -997111 -997121 -997123 -997141 -997147 -997151 -997153 -997163 -997201 -997207 -997219 -997247 -997259 -997267 -997273 -997279 -997307 -997309 -997319 -997327 -997333 -997343 -997357 -997369 -997379 -997391 -997427 -997433 -997439 -997453 -997463 -997511 -997541 -997547 -997553 -997573 -997583 -997589 -997597 -997609 -997627 -997637 -997649 -997651 -997663 -997681 -997693 -997699 -997727 -997739 -997741 -997751 -997769 -997783 -997793 -997807 -997811 -997813 -997877 -997879 -997889 -997891 -997897 -997933 -997949 -997961 -997963 -997973 -997991 -998009 -998017 -998027 -998029 -998069 -998071 -998077 -998083 -998111 -998117 -998147 -998161 -998167 -998197 -998201 -998213 -998219 -998237 -998243 -998273 -998281 -998287 -998311 -998329 -998353 -998377 -998381 -998399 -998411 -998419 -998423 -998429 -998443 -998471 -998497 -998513 -998527 -998537 -998539 -998551 -998561 -998617 -998623 -998629 -998633 -998651 -998653 -998681 -998687 -998689 -998717 -998737 -998743 -998749 -998759 -998779 -998813 -998819 -998831 -998839 -998843 -998857 -998861 -998897 -998909 -998917 -998927 -998941 -998947 -998951 -998957 -998969 -998983 -998989 -999007 -999023 -999029 -999043 -999049 -999067 -999083 -999091 -999101 -999133 -999149 -999169 -999181 -999199 -999217 -999221 -999233 -999239 -999269 -999287 -999307 -999329 -999331 -999359 -999371 -999377 -999389 -999431 -999433 -999437 -999451 -999491 -999499 -999521 -999529 -999541 -999553 -999563 -999599 -999611 -999613 -999623 -999631 -999653 -999667 -999671 -999683 -999721 -999727 -999749 -999763 -999769 -999773 -999809 -999853 -999863 -999883 -999907 -999917 -999931 -999953 -999959 -999961 -999979 -999983 -1000003 -1000033 -1000037 -1000039 -1000081 -1000099 -1000117 -1000121 -1000133 -1000151 -1000159 -1000171 -1000183 -1000187 -1000193 -1000199 -1000211 -1000213 -1000231 -1000249 -1000253 -1000273 -1000289 -1000291 -1000303 -1000313 -1000333 -1000357 -1000367 -1000381 -1000393 -1000397 -1000403 -1000409 -1000423 -1000427 -1000429 -1000453 -1000457 -1000507 -1000537 -1000541 -1000547 -1000577 -1000579 -1000589 -1000609 -1000619 -1000621 -1000639 -1000651 -1000667 -1000669 -1000679 -1000691 -1000697 -1000721 -1000723 -1000763 -1000777 -1000793 -1000829 -1000847 -1000849 -1000859 -1000861 -1000889 -1000907 -1000919 -1000921 -1000931 -1000969 -1000973 -1000981 -1000999 -1001003 -1001017 -1001023 -1001027 -1001041 -1001069 -1001081 -1001087 -1001089 -1001093 -1001107 -1001123 -1001153 -1001159 -1001173 -1001177 -1001191 -1001197 -1001219 -1001237 -1001267 -1001279 -1001291 -1001303 -1001311 -1001321 -1001323 -1001327 -1001347 -1001353 -1001369 -1001381 -1001387 -1001389 -1001401 -1001411 -1001431 -1001447 -1001459 -1001467 -1001491 -1001501 -1001527 -1001531 -1001549 -1001551 -1001563 -1001569 -1001587 -1001593 -1001621 -1001629 -1001639 -1001659 -1001669 -1001683 -1001687 -1001713 -1001723 -1001743 -1001783 -1001797 -1001801 -1001807 -1001809 -1001821 -1001831 -1001839 -1001911 -1001933 -1001941 -1001947 -1001953 -1001977 -1001981 -1001983 -1001989 -1002017 -1002049 -1002061 -1002073 -1002077 -1002083 -1002091 -1002101 -1002109 -1002121 -1002143 -1002149 -1002151 -1002173 -1002191 -1002227 -1002241 -1002247 -1002257 -1002259 -1002263 -1002289 -1002299 -1002341 -1002343 -1002347 -1002349 -1002359 -1002361 -1002377 -1002403 -1002427 -1002433 -1002451 -1002457 -1002467 -1002481 -1002487 -1002493 -1002503 -1002511 -1002517 -1002523 -1002527 -1002553 -1002569 -1002577 -1002583 -1002619 -1002623 -1002647 -1002653 -1002679 -1002709 -1002713 -1002719 -1002721 -1002739 -1002751 -1002767 -1002769 -1002773 -1002787 -1002797 -1002809 -1002817 -1002821 -1002851 -1002853 -1002857 -1002863 -1002871 -1002887 -1002893 -1002899 -1002913 -1002917 -1002929 -1002931 -1002973 -1002979 -1003001 -1003003 -1003019 -1003039 -1003049 -1003087 -1003091 -1003097 -1003103 -1003109 -1003111 -1003133 -1003141 -1003193 -1003199 -1003201 -1003241 -1003259 -1003273 -1003279 -1003291 -1003307 -1003337 -1003349 -1003351 -1003361 -1003363 -1003367 -1003369 -1003381 -1003397 -1003411 -1003417 -1003433 -1003463 -1003469 -1003507 -1003517 -1003543 -1003549 -1003589 -1003601 -1003609 -1003619 -1003621 -1003627 -1003631 -1003679 -1003693 -1003711 -1003729 -1003733 -1003741 -1003747 -1003753 -1003757 -1003763 -1003771 -1003787 -1003817 -1003819 -1003841 -1003879 -1003889 -1003897 -1003907 -1003909 -1003913 -1003931 -1003943 -1003957 -1003963 -1004027 -1004033 -1004053 -1004057 -1004063 -1004077 -1004089 -1004117 -1004119 -1004137 -1004141 -1004161 -1004167 -1004209 -1004221 -1004233 -1004273 -1004279 -1004287 -1004293 -1004303 -1004317 -1004323 -1004363 -1004371 -1004401 -1004429 -1004441 -1004449 -1004453 -1004461 -1004477 -1004483 -1004501 -1004527 -1004537 -1004551 -1004561 -1004567 -1004599 -1004651 -1004657 -1004659 -1004669 -1004671 -1004677 -1004687 -1004723 -1004737 -1004743 -1004747 -1004749 -1004761 -1004779 -1004797 -1004873 -1004903 -1004911 -1004917 -1004963 -1004977 -1004981 -1004987 -1005007 -1005013 -1005019 -1005029 -1005041 -1005049 -1005071 -1005073 -1005079 -1005101 -1005107 -1005131 -1005133 -1005143 -1005161 -1005187 -1005203 -1005209 -1005217 -1005223 -1005229 -1005239 -1005241 -1005269 -1005287 -1005293 -1005313 -1005317 -1005331 -1005349 -1005359 -1005371 -1005373 -1005391 -1005409 -1005413 -1005427 -1005437 -1005439 -1005457 -1005467 -1005481 -1005493 -1005503 -1005527 -1005541 -1005551 -1005553 -1005581 -1005593 -1005617 -1005619 -1005637 -1005643 -1005647 -1005661 -1005677 -1005679 -1005701 -1005709 -1005751 -1005761 -1005821 -1005827 -1005833 -1005883 -1005911 -1005913 -1005931 -1005937 -1005959 -1005971 -1005989 -1006003 -1006007 -1006021 -1006037 -1006063 -1006087 -1006091 -1006123 -1006133 -1006147 -1006151 -1006153 -1006163 -1006169 -1006171 -1006177 -1006189 -1006193 -1006217 -1006219 -1006231 -1006237 -1006241 -1006249 -1006253 -1006267 -1006279 -1006301 -1006303 -1006307 -1006309 -1006331 -1006333 -1006337 -1006339 -1006351 -1006361 -1006367 -1006391 -1006393 -1006433 -1006441 -1006463 -1006469 -1006471 -1006493 -1006507 -1006513 -1006531 -1006543 -1006547 -1006559 -1006583 -1006589 -1006609 -1006613 -1006633 -1006637 -1006651 -1006711 -1006721 -1006739 -1006751 -1006769 -1006781 -1006783 -1006799 -1006847 -1006853 -1006861 -1006877 -1006879 -1006883 -1006891 -1006897 -1006933 -1006937 -1006949 -1006969 -1006979 -1006987 -1006991 -1007021 -1007023 -1007047 -1007059 -1007081 -1007089 -1007099 -1007117 -1007119 -1007129 -1007137 -1007161 -1007173 -1007179 -1007203 -1007231 -1007243 -1007249 -1007297 -1007299 -1007309 -1007317 -1007339 -1007353 -1007359 -1007381 -1007387 -1007401 -1007417 -1007429 -1007441 -1007459 -1007467 -1007483 -1007497 -1007519 -1007527 -1007549 -1007557 -1007597 -1007599 -1007609 -1007647 -1007651 -1007681 -1007683 -1007693 -1007701 -1007711 -1007719 -1007723 -1007729 -1007731 -1007749 -1007753 -1007759 -1007767 -1007771 -1007789 -1007801 -1007807 -1007813 -1007819 -1007827 -1007857 -1007861 -1007873 -1007887 -1007891 -1007921 -1007933 -1007939 -1007957 -1007959 -1007971 -1007977 -1008001 -1008013 -1008017 -1008031 -1008037 -1008041 -1008043 -1008101 -1008131 -1008157 -1008181 -1008187 -1008193 -1008199 -1008209 -1008223 -1008229 -1008233 -1008239 -1008247 -1008257 -1008263 -1008317 -1008323 -1008331 -1008347 -1008353 -1008373 -1008379 -1008401 -1008407 -1008409 -1008419 -1008421 -1008433 -1008437 -1008451 -1008467 -1008493 -1008499 -1008503 -1008517 -1008541 -1008547 -1008563 -1008571 -1008587 -1008589 -1008607 -1008611 -1008613 -1008617 -1008659 -1008701 -1008719 -1008743 -1008773 -1008779 -1008781 -1008793 -1008809 -1008817 -1008829 -1008851 -1008853 -1008857 -1008859 -1008863 -1008871 -1008901 -1008911 -1008913 -1008923 -1008937 -1008947 -1008979 -1008983 -1008989 -1008991 -1009007 -1009037 -1009049 -1009061 -1009097 -1009121 -1009139 -1009153 -1009157 -1009159 -1009163 -1009189 -1009193 -1009199 -1009201 -1009207 -1009237 -1009243 -1009247 -1009259 -1009289 -1009291 -1009301 -1009303 -1009319 -1009321 -1009343 -1009357 -1009361 -1009369 -1009373 -1009387 -1009399 -1009417 -1009433 -1009439 -1009457 -1009483 -1009487 -1009499 -1009501 -1009507 -1009531 -1009537 -1009559 -1009573 -1009601 -1009609 -1009621 -1009627 -1009637 -1009643 -1009649 -1009651 -1009669 -1009727 -1009741 -1009747 -1009781 -1009787 -1009807 -1009819 -1009837 -1009843 -1009859 -1009873 -1009901 -1009909 -1009927 -1009937 -1009951 -1009963 -1009991 -1009993 -1009997 -1010003 -1010033 -1010069 -1010081 -1010083 -1010129 -1010131 -1010143 -1010167 -1010179 -1010201 -1010203 -1010237 -1010263 -1010291 -1010297 -1010329 -1010353 -1010357 -1010381 -1010407 -1010411 -1010419 -1010423 -1010431 -1010461 -1010467 -1010473 -1010491 -1010501 -1010509 -1010519 -1010549 -1010567 -1010579 -1010617 -1010623 -1010627 -1010671 -1010683 -1010687 -1010717 -1010719 -1010747 -1010749 -1010753 -1010759 -1010767 -1010771 -1010783 -1010791 -1010797 -1010809 -1010833 -1010843 -1010861 -1010881 -1010897 -1010899 -1010903 -1010917 -1010929 -1010957 -1010981 -1010983 -1010993 -1011001 -1011013 -1011029 -1011037 -1011067 -1011071 -1011077 -1011079 -1011091 -1011107 -1011137 -1011139 -1011163 -1011167 -1011191 -1011217 -1011221 -1011229 -1011233 -1011239 -1011271 -1011277 -1011281 -1011289 -1011331 -1011343 -1011349 -1011359 -1011371 -1011377 -1011391 -1011397 -1011407 -1011431 -1011443 -1011509 -1011539 -1011553 -1011559 -1011583 -1011587 -1011589 -1011599 -1011601 -1011631 -1011641 -1011649 -1011667 -1011671 -1011677 -1011697 -1011719 -1011733 -1011737 -1011749 -1011763 -1011779 -1011797 -1011799 -1011817 -1011827 -1011889 -1011893 -1011917 -1011937 -1011943 -1011947 -1011961 -1011973 -1011979 -1012007 -1012009 -1012031 -1012043 -1012049 -1012079 -1012087 -1012093 -1012097 -1012103 -1012133 -1012147 -1012159 -1012171 -1012183 -1012189 -1012201 -1012213 -1012217 -1012229 -1012241 -1012259 -1012261 -1012267 -1012279 -1012289 -1012307 -1012321 -1012369 -1012373 -1012379 -1012397 -1012399 -1012411 -1012421 -1012423 -1012433 -1012439 -1012447 -1012457 -1012463 -1012481 -1012489 -1012507 -1012513 -1012519 -1012523 -1012547 -1012549 -1012559 -1012573 -1012591 -1012597 -1012601 -1012619 -1012631 -1012633 -1012637 -1012657 -1012663 -1012679 -1012691 -1012699 -1012703 -1012717 -1012721 -1012733 -1012751 -1012763 -1012769 -1012771 -1012789 -1012811 -1012829 -1012831 -1012861 -1012903 -1012919 -1012931 -1012967 -1012981 -1012993 -1012997 -1013003 -1013009 -1013029 -1013041 -1013053 -1013063 -1013143 -1013153 -1013197 -1013203 -1013227 -1013237 -1013239 -1013249 -1013263 -1013267 -1013279 -1013291 -1013321 -1013329 -1013377 -1013399 -1013401 -1013429 -1013431 -1013471 -1013477 -1013501 -1013503 -1013527 -1013531 -1013533 -1013563 -1013569 -1013581 -1013603 -1013609 -1013627 -1013629 -1013641 -1013671 -1013681 -1013687 -1013699 -1013711 -1013713 -1013717 -1013729 -1013741 -1013767 -1013773 -1013791 -1013813 -1013819 -1013827 -1013833 -1013839 -1013843 -1013851 -1013879 -1013891 -1013893 -1013899 -1013921 -1013923 -1013933 -1013993 -1014007 -1014029 -1014037 -1014061 -1014089 -1014113 -1014121 -1014127 -1014131 -1014137 -1014149 -1014157 -1014161 -1014173 -1014193 -1014197 -1014199 -1014229 -1014257 -1014259 -1014263 -1014287 -1014301 -1014317 -1014319 -1014331 -1014337 -1014341 -1014359 -1014361 -1014371 -1014389 -1014397 -1014451 -1014457 -1014469 -1014487 -1014493 -1014521 -1014539 -1014547 -1014557 -1014571 -1014593 -1014617 -1014631 -1014641 -1014649 -1014677 -1014697 -1014719 -1014721 -1014731 -1014743 -1014749 -1014763 -1014779 -1014787 -1014817 -1014821 -1014833 -1014863 -1014869 -1014877 -1014887 -1014889 -1014907 -1014941 -1014953 -1014973 -1014989 -1015009 -1015039 -1015043 -1015051 -1015057 -1015061 -1015067 -1015073 -1015081 -1015093 -1015097 -1015123 -1015127 -1015139 -1015159 -1015163 -1015171 -1015199 -1015207 -1015277 -1015309 -1015349 -1015361 -1015363 -1015367 -1015369 -1015403 -1015409 -1015423 -1015433 -1015451 -1015453 -1015459 -1015463 -1015471 -1015481 -1015499 -1015501 -1015507 -1015517 -1015523 -1015541 -1015549 -1015559 -1015561 -1015571 -1015601 -1015603 -1015627 -1015661 -1015691 -1015697 -1015709 -1015723 -1015727 -1015739 -1015747 -1015753 -1015769 -1015813 -1015823 -1015829 -1015843 -1015853 -1015871 -1015877 -1015891 -1015897 -1015907 -1015913 -1015919 -1015967 -1015981 -1015991 -1016009 -1016011 -1016023 -1016027 -1016033 -1016051 -1016053 -1016069 -1016083 -1016089 -1016111 -1016123 -1016137 -1016143 -1016153 -1016159 -1016173 -1016201 -1016203 -1016221 -1016227 -1016231 -1016237 -1016263 -1016303 -1016339 -1016341 -1016357 -1016359 -1016371 -1016399 -1016401 -1016419 -1016423 -1016441 -1016453 -1016489 -1016497 -1016527 -1016567 -1016569 -1016573 -1016581 -1016597 -1016599 -1016611 -1016621 -1016641 -1016663 -1016681 -1016689 -1016731 -1016737 -1016749 -1016773 -1016777 -1016783 -1016789 -1016839 -1016843 -1016849 -1016879 -1016881 -1016891 -1016909 -1016921 -1016927 -1016929 -1016941 -1016947 -1016959 -1016971 -1017007 -1017011 -1017031 -1017041 -1017043 -1017061 -1017077 -1017097 -1017119 -1017131 -1017139 -1017157 -1017173 -1017179 -1017193 -1017199 -1017209 -1017227 -1017277 -1017293 -1017299 -1017301 -1017307 -1017311 -1017319 -1017323 -1017329 -1017347 -1017353 -1017361 -1017371 -1017377 -1017383 -1017391 -1017437 -1017439 -1017449 -1017473 -1017479 -1017481 -1017539 -1017551 -1017553 -1017559 -1017607 -1017613 -1017617 -1017623 -1017647 -1017649 -1017673 -1017683 -1017703 -1017713 -1017719 -1017721 -1017749 -1017781 -1017787 -1017799 -1017817 -1017827 -1017847 -1017851 -1017857 -1017859 -1017881 -1017889 -1017923 -1017953 -1017959 -1017997 -1018007 -1018019 -1018021 -1018057 -1018091 -1018097 -1018109 -1018123 -1018177 -1018201 -1018207 -1018217 -1018223 -1018247 -1018253 -1018271 -1018291 -1018301 -1018309 -1018313 -1018337 -1018357 -1018411 -1018421 -1018429 -1018439 -1018447 -1018471 -1018477 -1018489 -1018513 -1018543 -1018559 -1018583 -1018613 -1018621 -1018643 -1018649 -1018651 -1018669 -1018673 -1018679 -1018697 -1018709 -1018711 -1018729 -1018733 -1018763 -1018769 -1018777 -1018789 -1018807 -1018811 -1018813 -1018817 -1018859 -1018873 -1018879 -1018889 -1018903 -1018907 -1018931 -1018937 -1018949 -1018957 -1018967 -1018981 -1018987 -1018993 -1018999 -1019023 -1019033 -1019059 -1019069 -1019071 -1019077 -1019093 -1019119 -1019129 -1019173 -1019177 -1019197 -1019209 -1019237 -1019251 -1019257 -1019261 -1019267 -1019273 -1019281 -1019297 -1019329 -1019339 -1019351 -1019353 -1019357 -1019377 -1019399 -1019411 -1019413 -1019423 -1019443 -1019449 -1019453 -1019467 -1019471 -1019479 -1019503 -1019509 -1019531 -1019533 -1019537 -1019549 -1019563 -1019617 -1019639 -1019647 -1019657 -1019663 -1019687 -1019693 -1019699 -1019701 -1019713 -1019717 -1019723 -1019729 -1019731 -1019741 -1019747 -1019771 -1019783 -1019801 -1019819 -1019827 -1019839 -1019849 -1019857 -1019861 -1019873 -1019899 -1019903 -1019927 -1019971 -1020001 -1020007 -1020011 -1020013 -1020023 -1020037 -1020043 -1020049 -1020059 -1020077 -1020079 -1020101 -1020109 -1020113 -1020137 -1020143 -1020157 -1020163 -1020223 -1020233 -1020247 -1020259 -1020269 -1020293 -1020301 -1020329 -1020337 -1020353 -1020361 -1020379 -1020389 -1020401 -1020407 -1020413 -1020419 -1020431 -1020451 -1020457 -1020491 -1020517 -1020529 -1020541 -1020557 -1020583 -1020589 -1020599 -1020619 -1020631 -1020667 -1020683 -1020689 -1020707 -1020709 -1020743 -1020751 -1020757 -1020779 -1020797 -1020821 -1020823 -1020827 -1020839 -1020841 -1020847 -1020853 -1020881 -1020893 -1020907 -1020913 -1020931 -1020959 -1020961 -1020967 -1020973 -1020977 -1020979 -1020989 -1020991 -1020997 -1021001 -1021019 -1021043 -1021067 -1021073 -1021081 -1021087 -1021091 -1021093 -1021123 -1021127 -1021129 -1021157 -1021159 -1021183 -1021199 -1021217 -1021243 -1021253 -1021259 -1021261 -1021271 -1021283 -1021289 -1021291 -1021297 -1021301 -1021303 -1021327 -1021331 -1021333 -1021367 -1021369 -1021373 -1021381 -1021387 -1021403 -1021417 -1021429 -1021441 -1021457 -1021463 -1021483 -1021487 -1021541 -1021561 -1021571 -1021577 -1021621 -1021627 -1021651 -1021661 -1021663 -1021673 -1021697 -1021711 -1021747 -1021753 -1021759 -1021777 -1021793 -1021799 -1021807 -1021831 -1021837 -1021849 -1021861 -1021879 -1021897 -1021907 -1021919 -1021961 -1021963 -1021973 -1022011 -1022017 -1022033 -1022053 -1022059 -1022071 -1022083 -1022113 -1022123 -1022129 -1022137 -1022141 -1022167 -1022179 -1022183 -1022191 -1022201 -1022209 -1022237 -1022243 -1022249 -1022251 -1022291 -1022303 -1022341 -1022377 -1022381 -1022383 -1022387 -1022389 -1022429 -1022443 -1022449 -1022467 -1022491 -1022501 -1022503 -1022507 -1022509 -1022513 -1022519 -1022531 -1022573 -1022591 -1022611 -1022629 -1022633 -1022639 -1022653 -1022677 -1022683 -1022689 -1022701 -1022719 -1022729 -1022761 -1022773 -1022797 -1022821 -1022837 -1022843 -1022849 -1022869 -1022881 -1022891 -1022899 -1022911 -1022929 -1022933 -1022963 -1022977 -1022981 -1023019 -1023037 -1023041 -1023047 -1023067 -1023079 -1023083 -1023101 -1023107 -1023133 -1023163 -1023167 -1023173 -1023199 -1023203 -1023221 -1023227 -1023229 -1023257 -1023259 -1023263 -1023277 -1023289 -1023299 -1023301 -1023311 -1023313 -1023317 -1023329 -1023353 -1023361 -1023367 -1023389 -1023391 -1023409 -1023413 -1023419 -1023461 -1023467 -1023487 -1023499 -1023521 -1023541 -1023551 -1023557 -1023571 -1023577 -1023601 -1023643 -1023653 -1023697 -1023719 -1023721 -1023731 -1023733 -1023751 -1023769 -1023821 -1023833 -1023839 -1023851 -1023857 -1023871 -1023941 -1023943 -1023947 -1023949 -1023973 -1023977 -1023991 -1024021 -1024031 -1024061 -1024073 -1024087 -1024091 -1024099 -1024103 -1024151 -1024159 -1024171 -1024183 -1024189 -1024207 -1024249 -1024277 -1024307 -1024313 -1024319 -1024321 -1024327 -1024337 -1024339 -1024357 -1024379 -1024391 -1024399 -1024411 -1024421 -1024427 -1024433 -1024477 -1024481 -1024511 -1024523 -1024547 -1024559 -1024577 -1024579 -1024589 -1024591 -1024609 -1024633 -1024663 -1024669 -1024693 -1024697 -1024703 -1024711 -1024721 -1024729 -1024757 -1024783 -1024799 -1024823 -1024843 -1024853 -1024871 -1024883 -1024901 -1024909 -1024921 -1024931 -1024939 -1024943 -1024951 -1024957 -1024963 -1024987 -1024997 -1025009 -1025021 -1025029 -1025039 -1025047 -1025081 -1025093 -1025099 -1025111 -1025113 -1025119 -1025137 -1025147 -1025149 -1025153 -1025161 -1025197 -1025203 -1025209 -1025231 -1025239 -1025257 -1025261 -1025267 -1025273 -1025279 -1025281 -1025303 -1025327 -1025333 -1025347 -1025351 -1025383 -1025393 -1025407 -1025413 -1025417 -1025419 -1025443 -1025459 -1025477 -1025483 -1025503 -1025509 -1025513 -1025537 -1025543 -1025551 -1025561 -1025579 -1025611 -1025621 -1025623 -1025641 -1025653 -1025659 -1025669 -1025693 -1025707 -1025741 -1025747 -1025749 -1025767 -1025789 -1025803 -1025807 -1025819 -1025839 -1025873 -1025887 -1025891 -1025897 -1025909 -1025911 -1025917 -1025929 -1025939 -1025957 -1026029 -1026031 -1026037 -1026041 -1026043 -1026061 -1026073 -1026101 -1026119 -1026127 -1026139 -1026143 -1026167 -1026197 -1026199 -1026217 -1026227 -1026229 -1026251 -1026253 -1026257 -1026293 -1026299 -1026313 -1026331 -1026359 -1026371 -1026383 -1026391 -1026401 -1026407 -1026413 -1026427 -1026439 -1026449 -1026457 -1026479 -1026481 -1026521 -1026547 -1026563 -1026577 -1026581 -1026583 -1026587 -1026593 -1026661 -1026667 -1026673 -1026677 -1026679 -1026709 -1026733 -1026757 -1026761 -1026791 -1026799 -1026811 -1026829 -1026833 -1026847 -1026853 -1026859 -1026887 -1026899 -1026911 -1026913 -1026917 -1026941 -1026943 -1026947 -1026979 -1026989 -1027001 -1027003 -1027027 -1027031 -1027051 -1027067 -1027097 -1027127 -1027129 -1027139 -1027153 -1027163 -1027181 -1027189 -1027199 -1027207 -1027211 -1027223 -1027241 -1027261 -1027277 -1027289 -1027319 -1027321 -1027331 -1027357 -1027391 -1027409 -1027417 -1027421 -1027427 -1027459 -1027471 -1027483 -1027487 -1027489 -1027493 -1027519 -1027547 -1027549 -1027567 -1027591 -1027597 -1027613 -1027643 -1027679 -1027687 -1027693 -1027703 -1027717 -1027727 -1027739 -1027751 -1027753 -1027757 -1027759 -1027777 -1027783 -1027787 -1027799 -1027841 -1027853 -1027883 -1027891 -1027931 -1027969 -1027987 -1028003 -1028011 -1028017 -1028023 -1028029 -1028047 -1028051 -1028063 -1028081 -1028089 -1028099 -1028101 -1028107 -1028113 -1028117 -1028129 -1028141 -1028149 -1028189 -1028191 -1028201 -1028207 -1028213 -1028221 -1028231 -1028243 -1028263 -1028273 -1028303 -1028309 -1028317 -1028327 -1028329 -1028333 -1028389 -1028393 -1028411 -1028437 -1028471 -1028473 -1028479 -1028509 -1028557 -1028561 -1028569 -1028579 -1028581 -1028597 -1028617 -1028647 -1028663 -1028669 -1028681 -1028683 -1028737 -1028747 -1028749 -1028761 -1028773 -1028777 -1028803 -1028809 -1028837 -1028843 -1028873 -1028893 -1028903 -1028939 -1028941 -1028953 -1028957 -1028969 -1028981 -1028999 -1029001 -1029013 -1029023 -1029037 -1029103 -1029109 -1029113 -1029139 -1029151 -1029157 -1029167 -1029179 -1029191 -1029199 -1029209 -1029247 -1029251 -1029263 -1029277 -1029289 -1029307 -1029323 -1029331 -1029337 -1029341 -1029349 -1029359 -1029361 -1029383 -1029403 -1029407 -1029409 -1029433 -1029467 -1029473 -1029481 -1029487 -1029499 -1029517 -1029521 -1029527 -1029533 -1029547 -1029563 -1029569 -1029577 -1029583 -1029593 -1029601 -1029617 -1029643 -1029647 -1029653 -1029689 -1029697 -1029731 -1029751 -1029757 -1029767 -1029803 -1029823 -1029827 -1029839 -1029841 -1029859 -1029881 -1029883 -1029907 -1029929 -1029937 -1029943 -1029953 -1029967 -1029983 -1029989 -1030019 -1030021 -1030027 -1030031 -1030033 -1030039 -1030049 -1030061 -1030067 -1030069 -1030091 -1030111 -1030121 -1030153 -1030157 -1030181 -1030201 -1030213 -1030219 -1030241 -1030247 -1030291 -1030297 -1030307 -1030349 -1030357 -1030361 -1030369 -1030411 -1030417 -1030429 -1030439 -1030441 -1030451 -1030493 -1030511 -1030529 -1030537 -1030543 -1030571 -1030583 -1030619 -1030637 -1030639 -1030643 -1030681 -1030703 -1030723 -1030739 -1030741 -1030751 -1030759 -1030763 -1030787 -1030793 -1030801 -1030811 -1030817 -1030823 -1030831 -1030847 -1030867 -1030873 -1030889 -1030919 -1030933 -1030949 -1030951 -1030957 -1030987 -1030993 -1031003 -1031047 -1031053 -1031057 -1031081 -1031117 -1031119 -1031137 -1031141 -1031161 -1031189 -1031231 -1031267 -1031279 -1031281 -1031291 -1031299 -1031309 -1031323 -1031347 -1031357 -1031399 -1031411 -1031413 -1031423 -1031431 -1031447 -1031461 -1031477 -1031479 -1031483 -1031489 -1031507 -1031521 -1031531 -1031533 -1031549 -1031561 -1031593 -1031609 -1031623 -1031629 -1031633 -1031669 -1031677 -1031707 -1031717 -1031729 -1031731 -1031741 -1031753 -1031759 -1031761 -1031809 -1031813 -1031831 -1031837 -1031869 -1031911 -1031923 -1031981 -1031999 -1032007 -1032047 -1032049 -1032067 -1032071 -1032107 -1032131 -1032151 -1032191 -1032193 -1032211 -1032221 -1032233 -1032259 -1032287 -1032299 -1032307 -1032319 -1032329 -1032341 -1032347 -1032349 -1032373 -1032377 -1032391 -1032397 -1032407 -1032419 -1032433 -1032457 -1032463 -1032467 -1032491 -1032497 -1032509 -1032511 -1032527 -1032541 -1032571 -1032583 -1032601 -1032607 -1032613 -1032617 -1032643 -1032649 -1032679 -1032683 -1032697 -1032701 -1032709 -1032721 -1032727 -1032739 -1032751 -1032763 -1032793 -1032799 -1032803 -1032833 -1032839 -1032841 -1032847 -1032851 -1032853 -1032881 -1032887 -1032901 -1032943 -1032949 -1032959 -1032961 -1033001 -1033007 -1033027 -1033033 -1033037 -1033057 -1033061 -1033063 -1033069 -1033079 -1033099 -1033127 -1033139 -1033171 -1033181 -1033189 -1033223 -1033271 -1033273 -1033289 -1033297 -1033303 -1033309 -1033313 -1033337 -1033339 -1033343 -1033349 -1033363 -1033369 -1033381 -1033387 -1033393 -1033421 -1033423 -1033427 -1033441 -1033451 -1033457 -1033463 -1033469 -1033489 -1033493 -1033499 -1033507 -1033517 -1033537 -1033541 -1033559 -1033567 -1033601 -1033603 -1033631 -1033661 -1033663 -1033667 -1033679 -1033687 -1033693 -1033741 -1033751 -1033759 -1033777 -1033783 -1033789 -1033793 -1033801 -1033807 -1033829 -1033841 -1033843 -1033867 -1033927 -1033951 -1033987 -1034003 -1034009 -1034027 -1034029 -1034069 -1034071 -1034101 -1034119 -1034123 -1034147 -1034167 -1034171 -1034177 -1034183 -1034197 -1034207 -1034219 -1034221 -1034233 -1034237 -1034239 -1034249 -1034251 -1034281 -1034309 -1034317 -1034323 -1034339 -1034353 -1034357 -1034359 -1034381 -1034387 -1034419 -1034443 -1034461 -1034477 -1034479 -1034489 -1034491 -1034503 -1034513 -1034549 -1034567 -1034581 -1034591 -1034597 -1034599 -1034617 -1034639 -1034651 -1034653 -1034659 -1034707 -1034729 -1034731 -1034767 -1034771 -1034783 -1034791 -1034809 -1034827 -1034833 -1034837 -1034849 -1034857 -1034861 -1034863 -1034867 -1034879 -1034903 -1034941 -1034951 -1034953 -1034959 -1034983 -1034989 -1034993 -1035007 -1035019 -1035043 -1035061 -1035077 -1035107 -1035131 -1035163 -1035187 -1035191 -1035197 -1035211 -1035241 -1035247 -1035257 -1035263 -1035277 -1035301 -1035313 -1035323 -1035341 -1035343 -1035361 -1035379 -1035383 -1035403 -1035409 -1035413 -1035427 -1035449 -1035451 -1035467 -1035469 -1035473 -1035479 -1035499 -1035527 -1035533 -1035547 -1035563 -1035571 -1035581 -1035599 -1035607 -1035613 -1035631 -1035637 -1035641 -1035649 -1035659 -1035707 -1035733 -1035743 -1035761 -1035763 -1035781 -1035791 -1035829 -1035869 -1035893 -1035917 -1035949 -1035953 -1035959 -1035973 -1035977 -1036001 -1036003 -1036027 -1036039 -1036067 -1036069 -1036073 -1036093 -1036109 -1036117 -1036121 -1036129 -1036153 -1036163 -1036183 -1036213 -1036223 -1036229 -1036247 -1036249 -1036253 -1036261 -1036267 -1036271 -1036291 -1036297 -1036307 -1036319 -1036327 -1036331 -1036339 -1036349 -1036351 -1036363 -1036367 -1036369 -1036391 -1036411 -1036459 -1036471 -1036493 -1036499 -1036513 -1036531 -1036537 -1036561 -1036579 -1036613 -1036619 -1036631 -1036649 -1036661 -1036667 -1036669 -1036681 -1036729 -1036747 -1036751 -1036757 -1036759 -1036769 -1036787 -1036793 -1036799 -1036829 -1036831 -1036853 -1036873 -1036877 -1036883 -1036913 -1036921 -1036943 -1036951 -1036957 -1036979 -1036991 -1036993 -1037041 -1037053 -1037059 -1037081 -1037087 -1037089 -1037123 -1037129 -1037137 -1037143 -1037213 -1037233 -1037249 -1037261 -1037273 -1037293 -1037297 -1037303 -1037317 -1037327 -1037329 -1037339 -1037347 -1037401 -1037411 -1037437 -1037441 -1037447 -1037471 -1037479 -1037489 -1037497 -1037503 -1037537 -1037557 -1037563 -1037567 -1037593 -1037611 -1037627 -1037653 -1037657 -1037677 -1037681 -1037683 -1037741 -1037747 -1037753 -1037759 -1037767 -1037791 -1037801 -1037819 -1037831 -1037857 -1037873 -1037879 -1037893 -1037903 -1037917 -1037929 -1037941 -1037957 -1037963 -1037983 -1038001 -1038017 -1038019 -1038029 -1038041 -1038043 -1038047 -1038073 -1038077 -1038119 -1038127 -1038143 -1038157 -1038187 -1038199 -1038203 -1038209 -1038211 -1038227 -1038251 -1038253 -1038259 -1038263 -1038269 -1038307 -1038311 -1038319 -1038329 -1038337 -1038383 -1038391 -1038409 -1038421 -1038449 -1038463 -1038487 -1038497 -1038503 -1038523 -1038529 -1038539 -1038563 -1038589 -1038599 -1038601 -1038617 -1038619 -1038623 -1038629 -1038637 -1038643 -1038671 -1038689 -1038691 -1038707 -1038721 -1038727 -1038731 -1038757 -1038797 -1038803 -1038811 -1038823 -1038827 -1038833 -1038881 -1038913 -1038937 -1038941 -1038953 -1039001 -1039007 -1039021 -1039033 -1039037 -1039039 -1039043 -1039067 -1039069 -1039081 -1039109 -1039111 -1039127 -1039139 -1039153 -1039169 -1039187 -1039229 -1039249 -1039279 -1039289 -1039307 -1039321 -1039327 -1039343 -1039349 -1039351 -1039387 -1039421 -1039427 -1039429 -1039463 -1039469 -1039477 -1039481 -1039513 -1039517 -1039537 -1039543 -1039553 -1039603 -1039607 -1039631 -1039651 -1039657 -1039667 -1039681 -1039733 -1039763 -1039769 -1039789 -1039799 -1039817 -1039823 -1039837 -1039891 -1039897 -1039901 -1039921 -1039931 -1039943 -1039949 -1039979 -1039999 -1040021 -1040029 -1040051 -1040057 -1040059 -1040069 -1040071 -1040089 -1040093 -1040101 -1040113 -1040119 -1040141 -1040153 -1040159 -1040161 -1040167 -1040183 -1040189 -1040191 -1040203 -1040219 -1040227 -1040311 -1040327 -1040339 -1040353 -1040371 -1040381 -1040387 -1040407 -1040411 -1040419 -1040447 -1040449 -1040483 -1040489 -1040503 -1040521 -1040531 -1040563 -1040579 -1040581 -1040597 -1040629 -1040651 -1040657 -1040659 -1040671 -1040717 -1040731 -1040747 -1040749 -1040771 -1040777 -1040779 -1040783 -1040797 -1040803 -1040807 -1040813 -1040821 -1040827 -1040833 -1040857 -1040861 -1040873 -1040881 -1040891 -1040899 -1040929 -1040939 -1040947 -1040951 -1040959 -1040981 -1040989 -1041041 -1041077 -1041083 -1041091 -1041109 -1041119 -1041121 -1041127 -1041137 -1041149 -1041151 -1041163 -1041167 -1041169 -1041203 -1041221 -1041223 -1041239 -1041241 -1041253 -1041269 -1041281 -1041283 -1041289 -1041307 -1041311 -1041317 -1041329 -1041343 -1041349 -1041373 -1041421 -1041427 -1041449 -1041451 -1041461 -1041497 -1041511 -1041517 -1041529 -1041553 -1041559 -1041563 -1041571 -1041577 -1041583 -1041617 -1041619 -1041643 -1041653 -1041671 -1041673 -1041701 -1041731 -1041737 -1041757 -1041779 -1041787 -1041793 -1041823 -1041829 -1041841 -1041853 -1041857 -1041863 -1041869 -1041889 -1041893 -1041907 -1041919 -1041949 -1041961 -1041983 -1041991 -1042001 -1042021 -1042039 -1042043 -1042081 -1042087 -1042091 -1042099 -1042103 -1042109 -1042121 -1042123 -1042133 -1042141 -1042183 -1042187 -1042193 -1042211 -1042241 -1042243 -1042259 -1042267 -1042271 -1042273 -1042309 -1042331 -1042333 -1042357 -1042369 -1042373 -1042381 -1042399 -1042427 -1042439 -1042451 -1042469 -1042487 -1042519 -1042523 -1042529 -1042571 -1042577 -1042583 -1042597 -1042607 -1042609 -1042619 -1042631 -1042633 -1042681 -1042687 -1042693 -1042703 -1042709 -1042733 -1042759 -1042781 -1042799 -1042819 -1042829 -1042837 -1042849 -1042861 -1042897 -1042901 -1042903 -1042931 -1042949 -1042961 -1042997 -1043011 -1043023 -1043047 -1043083 -1043089 -1043111 -1043113 -1043117 -1043131 -1043167 -1043173 -1043177 -1043183 -1043191 -1043201 -1043209 -1043213 -1043221 -1043279 -1043291 -1043293 -1043299 -1043311 -1043323 -1043351 -1043369 -1043377 -1043401 -1043453 -1043467 -1043479 -1043489 -1043501 -1043513 -1043521 -1043531 -1043543 -1043557 -1043587 -1043591 -1043593 -1043597 -1043599 -1043617 -1043639 -1043657 -1043663 -1043683 -1043701 -1043723 -1043743 -1043747 -1043753 -1043759 -1043761 -1043767 -1043773 -1043831 -1043837 -1043839 -1043843 -1043849 -1043857 -1043869 -1043873 -1043897 -1043899 -1043921 -1043923 -1043929 -1043951 -1043969 -1043981 -1044019 -1044023 -1044041 -1044053 -1044079 -1044091 -1044097 -1044133 -1044139 -1044149 -1044161 -1044167 -1044179 -1044181 -1044187 -1044193 -1044209 -1044217 -1044227 -1044247 -1044257 -1044271 -1044283 -1044287 -1044289 -1044299 -1044343 -1044347 -1044353 -1044367 -1044371 -1044383 -1044391 -1044397 -1044409 -1044437 -1044443 -1044451 -1044457 -1044479 -1044509 -1044517 -1044529 -1044559 -1044569 -1044583 -1044587 -1044613 -1044619 -1044629 -1044653 -1044689 -1044697 -1044727 -1044733 -1044737 -1044739 -1044749 -1044751 -1044761 -1044767 -1044779 -1044781 -1044809 -1044811 -1044833 -1044839 -1044847 -1044851 -1044859 -1044877 -1044889 -1044893 -1044931 -1044941 -1044971 -1044997 -1045003 -1045013 -1045021 -1045027 -1045043 -1045061 -1045063 -1045081 -1045111 -1045117 -1045123 -1045129 -1045151 -1045153 -1045157 -1045183 -1045193 -1045199 -1045223 -1045229 -1045237 -1045241 -1045273 -1045277 -1045307 -1045309 -1045321 -1045349 -1045367 -1045391 -1045393 -1045397 -1045409 -1045411 -1045423 -1045427 -1045469 -1045487 -1045493 -1045507 -1045523 -1045529 -1045543 -1045547 -1045549 -1045559 -1045571 -1045573 -1045607 -1045621 -1045633 -1045643 -1045651 -1045663 -1045679 -1045691 -1045727 -1045729 -1045739 -1045763 -1045799 -1045801 -1045819 -1045829 -1045841 -1045859 -1045903 -1045907 -1045963 -1045981 -1045987 -1045997 -1046029 -1046047 -1046051 -1046053 -1046069 -1046077 -1046081 -1046113 -1046119 -1046179 -1046183 -1046189 -1046191 -1046203 -1046207 -1046237 -1046239 -1046257 -1046263 -1046329 -1046347 -1046351 -1046369 -1046371 -1046389 -1046393 -1046399 -1046413 -1046447 -1046449 -1046459 -1046497 -1046519 -1046527 -1046557 -1046579 -1046587 -1046597 -1046599 -1046627 -1046641 -1046657 -1046659 -1046677 -1046681 -1046687 -1046701 -1046711 -1046779 -1046791 -1046797 -1046807 -1046827 -1046833 -1046849 -1046863 -1046867 -1046897 -1046917 -1046933 -1046951 -1046959 -1046977 -1046993 -1046999 -1047031 -1047041 -1047043 -1047061 -1047077 -1047089 -1047097 -1047107 -1047119 -1047127 -1047131 -1047133 -1047139 -1047157 -1047173 -1047197 -1047199 -1047229 -1047239 -1047247 -1047271 -1047281 -1047283 -1047289 -1047307 -1047311 -1047313 -1047317 -1047323 -1047341 -1047367 -1047373 -1047379 -1047391 -1047419 -1047467 -1047469 -1047479 -1047491 -1047499 -1047511 -1047533 -1047539 -1047551 -1047559 -1047587 -1047589 -1047647 -1047649 -1047653 -1047667 -1047671 -1047689 -1047691 -1047701 -1047703 -1047713 -1047721 -1047737 -1047751 -1047763 -1047773 -1047779 -1047821 -1047833 -1047841 -1047859 -1047881 -1047883 -1047887 -1047923 -1047929 -1047941 -1047961 -1047971 -1047979 -1047989 -1047997 -1048007 -1048009 -1048013 -1048027 -1048043 -1048049 -1048051 -1048063 -1048123 -1048127 -1048129 -1048139 -1048189 -1048193 -1048213 -1048217 -1048219 -1048261 -1048273 -1048291 -1048309 -1048343 -1048357 -1048361 -1048367 -1048387 -1048391 -1048423 -1048433 -1048447 -1048507 -1048517 -1048549 -1048559 -1048571 -1048573 -1048583 -1048589 -1048601 -1048609 -1048613 -1048627 -1048633 -1048661 -1048681 -1048703 -1048709 -1048717 -1048721 -1048759 -1048783 -1048793 -1048799 -1048807 -1048829 -1048837 -1048847 -1048867 -1048877 -1048889 -1048891 -1048897 -1048909 -1048919 -1048963 -1048991 -1049011 -1049023 -1049039 -1049051 -1049057 -1049063 -1049077 -1049089 -1049093 -1049101 -1049117 -1049129 -1049131 -1049137 -1049141 -1049143 -1049171 -1049173 -1049177 -1049183 -1049201 -1049219 -1049227 -1049239 -1049263 -1049281 -1049297 -1049333 -1049339 -1049387 -1049413 -1049429 -1049437 -1049459 -1049471 -1049473 -1049479 -1049483 -1049497 -1049509 -1049519 -1049527 -1049533 -1049537 -1049549 -1049569 -1049599 -1049603 -1049611 -1049623 -1049639 -1049663 -1049677 -1049681 -1049683 -1049687 -1049707 -1049717 -1049747 -1049773 -1049791 -1049809 -1049821 -1049827 -1049833 -1049837 -1049843 -1049849 -1049857 -1049861 -1049863 -1049891 -1049897 -1049899 -1049941 -1049953 -1049963 -1049977 -1049999 -1050011 -1050013 -1050031 -1050041 -1050053 -1050079 -1050083 -1050139 -1050151 -1050167 -1050169 -1050191 -1050197 -1050229 -1050233 -1050239 -1050241 -1050253 -1050281 -1050307 -1050317 -1050323 -1050331 -1050337 -1050349 -1050367 -1050391 -1050421 -1050431 -1050437 -1050449 -1050451 -1050457 -1050473 -1050503 -1050509 -1050523 -1050563 -1050593 -1050611 -1050631 -1050713 -1050727 -1050733 -1050737 -1050739 -1050743 -1050769 -1050773 -1050781 -1050811 -1050817 -1050851 -1050853 -1050887 -1050899 -1050901 -1050913 -1050949 -1050961 -1050977 -1050997 -1051003 -1051007 -1051009 -1051019 -1051027 -1051051 -1051069 -1051079 -1051081 -1051139 -1051147 -1051151 -1051153 -1051157 -1051177 -1051181 -1051247 -1051277 -1051283 -1051291 -1051301 -1051313 -1051319 -1051333 -1051373 -1051397 -1051409 -1051417 -1051423 -1051459 -1051469 -1051471 -1051481 -1051499 -1051507 -1051543 -1051549 -1051553 -1051559 -1051571 -1051591 -1051601 -1051607 -1051619 -1051621 -1051639 -1051643 -1051649 -1051663 -1051697 -1051709 -1051717 -1051747 -1051759 -1051763 -1051781 -1051789 -1051811 -1051819 -1051829 -1051847 -1051849 -1051879 -1051889 -1051903 -1051913 -1051927 -1051949 -1051957 -1051961 -1051979 -1051987 -1051991 -1052027 -1052039 -1052041 -1052063 -1052083 -1052099 -1052111 -1052119 -1052137 -1052141 -1052179 -1052197 -1052203 -1052221 -1052231 -1052237 -1052269 -1052279 -1052281 -1052287 -1052299 -1052309 -1052321 -1052327 -1052329 -1052333 -1052413 -1052417 -1052431 -1052437 -1052459 -1052473 -1052479 -1052489 -1052531 -1052533 -1052537 -1052551 -1052561 -1052563 -1052567 -1052573 -1052609 -1052629 -1052663 -1052693 -1052707 -1052719 -1052731 -1052743 -1052747 -1052767 -1052797 -1052801 -1052803 -1052813 -1052819 -1052851 -1052873 -1052881 -1052893 -1052897 -1052899 -1052939 -1052971 -1052981 -1052993 -1053007 -1053029 -1053061 -1053067 -1053071 -1053079 -1053083 -1053089 -1053097 -1053103 -1053179 -1053181 -1053191 -1053197 -1053233 -1053257 -1053259 -1053263 -1053271 -1053293 -1053301 -1053319 -1053347 -1053361 -1053383 -1053401 -1053407 -1053421 -1053449 -1053461 -1053467 -1053487 -1053491 -1053497 -1053509 -1053511 -1053529 -1053539 -1053551 -1053557 -1053571 -1053581 -1053583 -1053589 -1053593 -1053617 -1053691 -1053697 -1053707 -1053713 -1053727 -1053737 -1053739 -1053749 -1053757 -1053769 -1053809 -1053817 -1053821 -1053827 -1053863 -1053953 -1053959 -1053967 -1053971 -1053989 -1053991 -1054003 -1054007 -1054013 -1054033 -1054043 -1054049 -1054061 -1054073 -1054091 -1054133 -1054169 -1054171 -1054181 -1054189 -1054199 -1054201 -1054213 -1054219 -1054243 -1054247 -1054259 -1054267 -1054301 -1054303 -1054309 -1054321 -1054327 -1054331 -1054337 -1054363 -1054369 -1054373 -1054381 -1054393 -1054423 -1054429 -1054439 -1054441 -1054457 -1054477 -1054483 -1054517 -1054523 -1054531 -1054549 -1054577 -1054583 -1054597 -1054607 -1054609 -1054621 -1054639 -1054649 -1054667 -1054673 -1054679 -1054717 -1054721 -1054723 -1054733 -1054769 -1054813 -1054819 -1054831 -1054843 -1054853 -1054903 -1054909 -1054927 -1054931 -1054951 -1054957 -1054993 -1055017 -1055039 -1055057 -1055063 -1055077 -1055083 -1055113 -1055137 -1055141 -1055143 -1055167 -1055189 -1055191 -1055231 -1055233 -1055251 -1055261 -1055267 -1055269 -1055303 -1055321 -1055347 -1055359 -1055363 -1055371 -1055387 -1055399 -1055407 -1055413 -1055423 -1055429 -1055437 -1055471 -1055489 -1055501 -1055503 -1055531 -1055543 -1055567 -1055591 -1055597 -1055603 -1055609 -1055611 -1055671 -1055689 -1055713 -1055731 -1055737 -1055741 -1055771 -1055783 -1055801 -1055809 -1055827 -1055839 -1055851 -1055863 -1055867 -1055881 -1055893 -1055897 -1055911 -1055917 -1055933 -1055939 -1055947 -1055959 -1055969 -1055981 -1056007 -1056019 -1056047 -1056049 -1056053 -1056061 -1056071 -1056073 -1056089 -1056109 -1056113 -1056149 -1056161 -1056169 -1056173 -1056179 -1056203 -1056217 -1056241 -1056247 -1056269 -1056271 -1056281 -1056287 -1056311 -1056317 -1056323 -1056347 -1056353 -1056361 -1056371 -1056373 -1056379 -1056401 -1056443 -1056463 -1056469 -1056479 -1056481 -1056493 -1056509 -1056521 -1056541 -1056563 -1056569 -1056577 -1056589 -1056599 -1056613 -1056617 -1056623 -1056641 -1056659 -1056667 -1056707 -1056719 -1056721 -1056739 -1056773 -1056779 -1056793 -1056823 -1056829 -1056833 -1056863 -1056871 -1056893 -1056911 -1056917 -1056929 -1056949 -1056959 -1056971 -1057003 -1057013 -1057019 -1057033 -1057037 -1057051 -1057087 -1057093 -1057117 -1057129 -1057157 -1057163 -1057181 -1057183 -1057219 -1057223 -1057237 -1057249 -1057271 -1057279 -1057291 -1057307 -1057361 -1057367 -1057387 -1057391 -1057393 -1057411 -1057421 -1057477 -1057487 -1057489 -1057493 -1057531 -1057541 -1057561 -1057577 -1057579 -1057603 -1057607 -1057613 -1057631 -1057633 -1057643 -1057657 -1057663 -1057681 -1057699 -1057703 -1057739 -1057741 -1057753 -1057781 -1057807 -1057831 -1057853 -1057879 -1057883 -1057897 -1057907 -1057919 -1057951 -1057957 -1057963 -1057981 -1057993 -1058009 -1058011 -1058021 -1058027 -1058041 -1058059 -1058077 -1058093 -1058107 -1058117 -1058143 -1058147 -1058149 -1058153 -1058171 -1058179 -1058203 -1058221 -1058227 -1058249 -1058257 -1058263 -1058287 -1058303 -1058329 -1058339 -1058341 -1058353 -1058377 -1058381 -1058383 -1058389 -1058419 -1058423 -1058443 -1058461 -1058479 -1058489 -1058503 -1058507 -1058543 -1058549 -1058567 -1058591 -1058593 -1058597 -1058627 -1058639 -1058653 -1058657 -1058663 -1058671 -1058677 -1058683 -1058693 -1058711 -1058723 -1058731 -1058747 -1058749 -1058753 -1058767 -1058773 -1058779 -1058791 -1058803 -1058807 -1058809 -1058821 -1058839 -1058861 -1058891 -1058921 -1058951 -1058983 -1058999 -1059001 -1059007 -1059017 -1059029 -1059059 -1059061 -1059067 -1059073 -1059077 -1059103 -1059119 -1059131 -1059137 -1059161 -1059169 -1059181 -1059197 -1059209 -1059217 -1059221 -1059251 -1059257 -1059259 -1059263 -1059271 -1059293 -1059299 -1059313 -1059323 -1059343 -1059349 -1059413 -1059419 -1059433 -1059437 -1059439 -1059467 -1059479 -1059503 -1059511 -1059517 -1059547 -1059557 -1059571 -1059599 -1059613 -1059637 -1059647 -1059671 -1059683 -1059697 -1059701 -1059703 -1059713 -1059733 -1059743 -1059749 -1059757 -1059769 -1059787 -1059823 -1059833 -1059847 -1059857 -1059871 -1059889 -1059893 -1059923 -1059931 -1059937 -1059941 -1060009 -1060019 -1060021 -1060039 -1060043 -1060051 -1060061 -1060091 -1060097 -1060123 -1060133 -1060151 -1060177 -1060187 -1060201 -1060207 -1060223 -1060229 -1060237 -1060249 -1060253 -1060271 -1060303 -1060313 -1060321 -1060343 -1060349 -1060351 -1060357 -1060361 -1060373 -1060379 -1060391 -1060393 -1060403 -1060421 -1060427 -1060441 -1060453 -1060463 -1060469 -1060481 -1060487 -1060513 -1060519 -1060529 -1060567 -1060571 -1060573 -1060589 -1060597 -1060621 -1060673 -1060687 -1060721 -1060723 -1060739 -1060747 -1060769 -1060777 -1060781 -1060861 -1060867 -1060883 -1060937 -1060949 -1060963 -1060981 -1060991 -1060993 -1061033 -1061057 -1061069 -1061087 -1061101 -1061107 -1061117 -1061129 -1061141 -1061143 -1061149 -1061171 -1061189 -1061227 -1061251 -1061261 -1061273 -1061279 -1061287 -1061297 -1061311 -1061317 -1061323 -1061353 -1061363 -1061377 -1061393 -1061407 -1061413 -1061441 -1061453 -1061483 -1061509 -1061513 -1061527 -1061561 -1061569 -1061573 -1061591 -1061597 -1061609 -1061617 -1061623 -1061629 -1061647 -1061651 -1061677 -1061689 -1061699 -1061707 -1061717 -1061729 -1061737 -1061759 -1061771 -1061773 -1061779 -1061783 -1061807 -1061831 -1061849 -1061867 -1061869 -1061881 -1061897 -1061903 -1061909 -1061911 -1061917 -1061959 -1061969 -1061993 -1062001 -1062013 -1062031 -1062073 -1062107 -1062121 -1062169 -1062197 -1062203 -1062251 -1062253 -1062263 -1062293 -1062311 -1062343 -1062349 -1062361 -1062367 -1062379 -1062407 -1062409 -1062427 -1062443 -1062469 -1062497 -1062511 -1062521 -1062547 -1062557 -1062563 -1062599 -1062601 -1062643 -1062671 -1062673 -1062683 -1062697 -1062701 -1062707 -1062731 -1062779 -1062781 -1062793 -1062797 -1062827 -1062847 -1062869 -1062871 -1062877 -1062881 -1062907 -1062911 -1062913 -1062931 -1062947 -1062949 -1062977 -1062979 -1062989 -1063001 -1063009 -1063019 -1063033 -1063039 -1063043 -1063067 -1063079 -1063087 -1063109 -1063123 -1063151 -1063157 -1063159 -1063177 -1063189 -1063193 -1063201 -1063213 -1063219 -1063241 -1063243 -1063273 -1063303 -1063319 -1063351 -1063379 -1063397 -1063399 -1063409 -1063427 -1063441 -1063453 -1063457 -1063463 -1063471 -1063477 -1063483 -1063501 -1063523 -1063529 -1063541 -1063547 -1063553 -1063561 -1063597 -1063609 -1063613 -1063619 -1063627 -1063637 -1063649 -1063661 -1063693 -1063709 -1063721 -1063729 -1063739 -1063747 -1063757 -1063771 -1063781 -1063813 -1063823 -1063831 -1063837 -1063847 -1063849 -1063871 -1063873 -1063891 -1063897 -1063903 -1063913 -1063919 -1063921 -1063927 -1063961 -1063963 -1063967 -1063969 -1063973 -1063987 -1063999 -1064017 -1064029 -1064059 -1064069 -1064087 -1064117 -1064131 -1064153 -1064159 -1064177 -1064179 -1064191 -1064197 -1064201 -1064243 -1064257 -1064263 -1064269 -1064281 -1064311 -1064317 -1064321 -1064333 -1064339 -1064341 -1064359 -1064377 -1064383 -1064407 -1064411 -1064431 -1064467 -1064471 -1064473 -1064477 -1064507 -1064519 -1064521 -1064533 -1064549 -1064587 -1064593 -1064629 -1064653 -1064669 -1064671 -1064681 -1064689 -1064699 -1064731 -1064737 -1064743 -1064753 -1064771 -1064783 -1064801 -1064813 -1064867 -1064873 -1064911 -1064927 -1064933 -1064939 -1064941 -1064951 -1064953 -1064957 -1064977 -1064989 -1065011 -1065013 -1065017 -1065019 -1065037 -1065041 -1065047 -1065059 -1065073 -1065089 -1065091 -1065109 -1065131 -1065133 -1065137 -1065173 -1065209 -1065217 -1065263 -1065269 -1065277 -1065283 -1065307 -1065313 -1065319 -1065331 -1065343 -1065347 -1065391 -1065409 -1065433 -1065469 -1065479 -1065503 -1065511 -1065523 -1065527 -1065529 -1065557 -1065569 -1065593 -1065601 -1065629 -1065643 -1065667 -1065677 -1065683 -1065689 -1065697 -1065709 -1065733 -1065763 -1065773 -1065787 -1065791 -1065809 -1065817 -1065821 -1065829 -1065839 -1065847 -1065851 -1065887 -1065893 -1065899 -1065901 -1065937 -1065941 -1065949 -1065973 -1065979 -1066001 -1066031 -1066049 -1066063 -1066067 -1066111 -1066133 -1066139 -1066141 -1066157 -1066159 -1066217 -1066231 -1066237 -1066253 -1066267 -1066279 -1066283 -1066297 -1066313 -1066319 -1066327 -1066333 -1066339 -1066343 -1066367 -1066379 -1066399 -1066409 -1066411 -1066423 -1066433 -1066447 -1066511 -1066517 -1066523 -1066531 -1066553 -1066561 -1066567 -1066577 -1066619 -1066621 -1066643 -1066651 -1066669 -1066687 -1066693 -1066721 -1066729 -1066753 -1066757 -1066777 -1066789 -1066811 -1066817 -1066847 -1066859 -1066867 -1066883 -1066889 -1066909 -1066913 -1066931 -1066973 -1066979 -1066981 -1066987 -1066999 -1067009 -1067023 -1067029 -1067047 -1067057 -1067063 -1067069 -1067083 -1067137 -1067147 -1067159 -1067167 -1067179 -1067203 -1067207 -1067221 -1067239 -1067263 -1067293 -1067327 -1067329 -1067347 -1067351 -1067359 -1067371 -1067383 -1067387 -1067411 -1067441 -1067459 -1067467 -1067471 -1067489 -1067491 -1067497 -1067509 -1067537 -1067551 -1067557 -1067567 -1067569 -1067593 -1067597 -1067611 -1067621 -1067639 -1067653 -1067669 -1067687 -1067701 -1067707 -1067711 -1067741 -1067747 -1067749 -1067761 -1067767 -1067777 -1067789 -1067797 -1067831 -1067837 -1067849 -1067851 -1067879 -1067893 -1067903 -1067909 -1067921 -1067939 -1067951 -1067987 -1067999 -1068019 -1068037 -1068061 -1068083 -1068101 -1068103 -1068107 -1068113 -1068131 -1068149 -1068191 -1068203 -1068217 -1068233 -1068241 -1068247 -1068251 -1068253 -1068257 -1068259 -1068271 -1068307 -1068311 -1068323 -1068329 -1068343 -1068367 -1068371 -1068377 -1068383 -1068407 -1068409 -1068437 -1068439 -1068461 -1068469 -1068481 -1068491 -1068497 -1068499 -1068517 -1068559 -1068577 -1068589 -1068611 -1068619 -1068629 -1068631 -1068677 -1068701 -1068703 -1068707 -1068709 -1068713 -1068719 -1068721 -1068751 -1068757 -1068761 -1068779 -1068803 -1068811 -1068817 -1068857 -1068871 -1068877 -1068887 -1068889 -1068901 -1068913 -1068917 -1068941 -1068989 -1069001 -1069007 -1069031 -1069039 -1069043 -1069051 -1069087 -1069099 -1069127 -1069129 -1069141 -1069171 -1069183 -1069193 -1069199 -1069207 -1069217 -1069219 -1069223 -1069267 -1069273 -1069291 -1069303 -1069307 -1069349 -1069363 -1069379 -1069421 -1069427 -1069429 -1069441 -1069451 -1069459 -1069463 -1069499 -1069501 -1069507 -1069517 -1069543 -1069547 -1069553 -1069561 -1069571 -1069573 -1069577 -1069583 -1069591 -1069597 -1069603 -1069609 -1069631 -1069639 -1069667 -1069687 -1069693 -1069697 -1069727 -1069741 -1069751 -1069777 -1069807 -1069811 -1069819 -1069823 -1069853 -1069867 -1069919 -1069921 -1069927 -1069931 -1069933 -1069949 -1069951 -1069973 -1069979 -1069987 -1070009 -1070011 -1070021 -1070033 -1070039 -1070063 -1070081 -1070087 -1070093 -1070131 -1070149 -1070171 -1070189 -1070197 -1070203 -1070207 -1070221 -1070231 -1070233 -1070243 -1070249 -1070257 -1070287 -1070291 -1070309 -1070317 -1070323 -1070339 -1070341 -1070347 -1070357 -1070369 -1070389 -1070411 -1070417 -1070423 -1070429 -1070431 -1070453 -1070471 -1070491 -1070497 -1070501 -1070513 -1070527 -1070533 -1070543 -1070557 -1070561 -1070567 -1070569 -1070579 -1070621 -1070659 -1070681 -1070683 -1070689 -1070753 -1070761 -1070777 -1070789 -1070803 -1070827 -1070843 -1070851 -1070869 -1070873 -1070899 -1070921 -1070933 -1070939 -1070947 -1070981 -1070987 -1071023 -1071047 -1071053 -1071061 -1071067 -1071121 -1071131 -1071139 -1071149 -1071151 -1071157 -1071181 -1071193 -1071197 -1071223 -1071227 -1071229 -1071233 -1071241 -1071253 -1071269 -1071283 -1071311 -1071313 -1071337 -1071341 -1071349 -1071359 -1071373 -1071377 -1071379 -1071401 -1071407 -1071419 -1071439 -1071443 -1071451 -1071457 -1071479 -1071487 -1071529 -1071533 -1071541 -1071563 -1071569 -1071571 -1071589 -1071601 -1071641 -1071643 -1071659 -1071661 -1071671 -1071683 -1071703 -1071739 -1071743 -1071761 -1071773 -1071787 -1071803 -1071817 -1071821 -1071841 -1071857 -1071871 -1071899 -1071907 -1071911 -1071919 -1071937 -1071943 -1071977 -1071979 -1071991 -1072009 -1072039 -1072103 -1072129 -1072133 -1072147 -1072157 -1072163 -1072187 -1072199 -1072213 -1072219 -1072229 -1072231 -1072301 -1072327 -1072339 -1072363 -1072367 -1072373 -1072381 -1072387 -1072397 -1072429 -1072433 -1072439 -1072447 -1072457 -1072459 -1072471 -1072517 -1072537 -1072543 -1072613 -1072627 -1072633 -1072637 -1072657 -1072711 -1072733 -1072763 -1072793 -1072801 -1072811 -1072823 -1072829 -1072831 -1072837 -1072843 -1072849 -1072859 -1072867 -1072901 -1072919 -1072931 -1072933 -1072937 -1072943 -1072957 -1072961 -1072969 -1072991 -1072997 -1072999 -1073053 -1073069 -1073077 -1073089 -1073099 -1073113 -1073117 -1073131 -1073141 -1073143 -1073147 -1073153 -1073183 -1073201 -1073209 -1073213 -1073221 -1073239 -1073243 -1073263 -1073279 -1073297 -1073311 -1073321 -1073351 -1073353 -1073381 -1073383 -1073393 -1073399 -1073411 -1073441 -1073447 -1073461 -1073491 -1073507 -1073509 -1073521 -1073537 -1073563 -1073573 -1073587 -1073593 -1073599 -1073603 -1073627 -1073647 -1073651 -1073687 -1073711 -1073713 -1073717 -1073729 -1073773 -1073789 -1073791 -1073803 -1073819 -1073837 -1073857 -1073869 -1073879 -1073881 -1073909 -1073911 -1073921 -1073951 -1073953 -1073983 -1074001 -1074023 -1074041 -1074061 -1074067 -1074071 -1074079 -1074083 -1074107 -1074109 -1074113 -1074121 -1074133 -1074167 -1074223 -1074251 -1074253 -1074259 -1074277 -1074287 -1074289 -1074299 -1074329 -1074343 -1074361 -1074371 -1074377 -1074379 -1074389 -1074427 -1074433 -1074461 -1074473 -1074481 -1074509 -1074511 -1074523 -1074533 -1074559 -1074581 -1074607 -1074617 -1074641 -1074643 -1074649 -1074673 -1074683 -1074691 -1074701 -1074707 -1074709 -1074713 -1074719 -1074751 -1074761 -1074763 -1074833 -1074839 -1074847 -1074851 -1074877 -1074883 -1074889 -1074901 -1074907 -1074917 -1074919 -1074923 -1074929 -1074949 -1074971 -1074973 -1074977 -1074989 -1074991 -1075007 -1075013 -1075021 -1075027 -1075069 -1075073 -1075079 -1075091 -1075093 -1075103 -1075133 -1075141 -1075147 -1075159 -1075163 -1075169 -1075171 -1075177 -1075187 -1075201 -1075231 -1075237 -1075241 -1075259 -1075279 -1075289 -1075303 -1075337 -1075339 -1075351 -1075357 -1075391 -1075397 -1075409 -1075429 -1075433 -1075441 -1075453 -1075463 -1075469 -1075489 -1075493 -1075499 -1075507 -1075519 -1075531 -1075537 -1075561 -1075577 -1075601 -1075619 -1075621 -1075643 -1075649 -1075651 -1075663 -1075667 -1075673 -1075681 -1075691 -1075693 -1075699 -1075703 -1075727 -1075729 -1075757 -1075759 -1075769 -1075771 -1075787 -1075807 -1075843 -1075853 -1075859 -1075897 -1075909 -1075957 -1075973 -1076003 -1076011 -1076017 -1076029 -1076039 -1076051 -1076057 -1076063 -1076069 -1076077 -1076107 -1076111 -1076113 -1076123 -1076129 -1076137 -1076143 -1076167 -1076171 -1076191 -1076203 -1076213 -1076237 -1076263 -1076279 -1076281 -1076303 -1076323 -1076329 -1076353 -1076359 -1076381 -1076399 -1076401 -1076417 -1076429 -1076443 -1076447 -1076461 -1076473 -1076477 -1076501 -1076503 -1076507 -1076513 -1076519 -1076557 -1076563 -1076587 -1076611 -1076617 -1076639 -1076651 -1076657 -1076671 -1076707 -1076717 -1076731 -1076753 -1076767 -1076771 -1076773 -1076813 -1076821 -1076827 -1076843 -1076861 -1076869 -1076879 -1076893 -1076903 -1076917 -1076921 -1076953 -1076981 -1077017 -1077023 -1077047 -1077059 -1077079 -1077101 -1077127 -1077143 -1077161 -1077179 -1077191 -1077203 -1077221 -1077227 -1077233 -1077289 -1077299 -1077301 -1077311 -1077337 -1077347 -1077353 -1077371 -1077397 -1077413 -1077421 -1077449 -1077457 -1077469 -1077499 -1077533 -1077539 -1077541 -1077563 -1077599 -1077607 -1077641 -1077673 -1077677 -1077691 -1077697 -1077707 -1077719 -1077721 -1077733 -1077743 -1077751 -1077761 -1077763 -1077793 -1077799 -1077821 -1077823 -1077827 -1077841 -1077859 -1077863 -1077893 -1077911 -1077913 -1077917 -1077943 -1077971 -1077977 -1077997 -1078001 -1078009 -1078019 -1078027 -1078031 -1078043 -1078081 -1078109 -1078111 -1078127 -1078151 -1078153 -1078159 -1078163 -1078169 -1078183 -1078199 -1078219 -1078241 -1078247 -1078331 -1078333 -1078367 -1078369 -1078373 -1078387 -1078393 -1078403 -1078409 -1078411 -1078417 -1078471 -1078489 -1078507 -1078537 -1078559 -1078589 -1078643 -1078657 -1078673 -1078681 -1078691 -1078699 -1078711 -1078717 -1078733 -1078739 -1078757 -1078787 -1078789 -1078807 -1078813 -1078817 -1078841 -1078849 -1078853 -1078873 -1078879 -1078919 -1078927 -1078937 -1078943 -1078951 -1078967 -1078981 -1078993 -1079009 -1079011 -1079021 -1079033 -1079053 -1079059 -1079069 -1079077 -1079081 -1079087 -1079093 -1079101 -1079107 -1079123 -1079147 -1079153 -1079173 -1079189 -1079213 -1079227 -1079233 -1079251 -1079269 -1079291 -1079297 -1079311 -1079317 -1079329 -1079339 -1079357 -1079359 -1079369 -1079383 -1079399 -1079417 -1079431 -1079453 -1079461 -1079471 -1079473 -1079503 -1079509 -1079527 -1079531 -1079539 -1079569 -1079593 -1079609 -1079621 -1079629 -1079633 -1079647 -1079651 -1079669 -1079671 -1079681 -1079711 -1079717 -1079753 -1079777 -1079779 -1079783 -1079797 -1079809 -1079821 -1079831 -1079849 -1079861 -1079867 -1079879 -1079887 -1079917 -1079927 -1079929 -1079933 -1079957 -1079963 -1079977 -1079983 -1079987 -1079999 -1080007 -1080029 -1080043 -1080049 -1080059 -1080073 -1080077 -1080083 -1080089 -1080091 -1080097 -1080119 -1080137 -1080143 -1080173 -1080199 -1080217 -1080223 -1080229 -1080251 -1080259 -1080263 -1080269 -1080271 -1080281 -1080301 -1080307 -1080311 -1080329 -1080341 -1080347 -1080353 -1080383 -1080413 -1080419 -1080433 -1080439 -1080449 -1080451 -1080463 -1080479 -1080481 -1080491 -1080523 -1080539 -1080553 -1080557 -1080559 -1080589 -1080613 -1080647 -1080649 -1080661 -1080679 -1080683 -1080713 -1080749 -1080757 -1080763 -1080767 -1080773 -1080787 -1080791 -1080797 -1080803 -1080811 -1080817 -1080823 -1080841 -1080847 -1080851 -1080857 -1080899 -1080901 -1080907 -1080913 -1080923 -1080941 -1080943 -1080971 -1080973 -1080983 -1081027 -1081037 -1081051 -1081061 -1081079 -1081097 -1081099 -1081121 -1081123 -1081127 -1081133 -1081139 -1081153 -1081163 -1081219 -1081229 -1081231 -1081237 -1081243 -1081247 -1081277 -1081279 -1081291 -1081303 -1081307 -1081331 -1081337 -1081351 -1081361 -1081369 -1081403 -1081417 -1081429 -1081441 -1081477 -1081501 -1081513 -1081541 -1081583 -1081631 -1081637 -1081657 -1081679 -1081681 -1081687 -1081699 -1081709 -1081711 -1081721 -1081723 -1081733 -1081741 -1081757 -1081763 -1081771 -1081777 -1081781 -1081789 -1081793 -1081813 -1081823 -1081853 -1081859 -1081891 -1081901 -1081907 -1081919 -1081937 -1081939 -1081979 -1081981 -1082017 -1082023 -1082027 -1082047 -1082083 -1082089 -1082093 -1082099 -1082129 -1082141 -1082143 -1082149 -1082153 -1082161 -1082171 -1082177 -1082189 -1082197 -1082209 -1082231 -1082233 -1082243 -1082273 -1082317 -1082321 -1082351 -1082369 -1082377 -1082381 -1082383 -1082387 -1082399 -1082429 -1082443 -1082447 -1082467 -1082491 -1082527 -1082531 -1082533 -1082573 -1082579 -1082581 -1082593 -1082597 -1082603 -1082621 -1082629 -1082647 -1082659 -1082681 -1082699 -1082707 -1082717 -1082723 -1082729 -1082743 -1082761 -1082777 -1082801 -1082881 -1082891 -1082911 -1082969 -1082971 -1082989 -1082993 -1082999 -1083007 -1083031 -1083037 -1083059 -1083073 -1083077 -1083079 -1083083 -1083107 -1083113 -1083119 -1083151 -1083167 -1083191 -1083193 -1083211 -1083241 -1083253 -1083283 -1083287 -1083289 -1083301 -1083307 -1083311 -1083317 -1083319 -1083337 -1083349 -1083367 -1083371 -1083377 -1083391 -1083409 -1083431 -1083443 -1083449 -1083451 -1083463 -1083473 -1083497 -1083517 -1083541 -1083559 -1083571 -1083583 -1083601 -1083611 -1083613 -1083659 -1083689 -1083707 -1083713 -1083721 -1083743 -1083749 -1083757 -1083793 -1083809 -1083827 -1083833 -1083839 -1083847 -1083851 -1083871 -1083881 -1083899 -1083911 -1083913 -1083923 -1083941 -1083947 -1083949 -1083983 -1084001 -1084019 -1084043 -1084051 -1084067 -1084079 -1084087 -1084093 -1084103 -1084133 -1084147 -1084157 -1084177 -1084217 -1084219 -1084247 -1084253 -1084267 -1084297 -1084301 -1084309 -1084313 -1084333 -1084357 -1084367 -1084373 -1084403 -1084423 -1084429 -1084451 -1084459 -1084469 -1084471 -1084477 -1084483 -1084493 -1084543 -1084547 -1084553 -1084579 -1084609 -1084613 -1084621 -1084627 -1084637 -1084649 -1084661 -1084669 -1084673 -1084697 -1084711 -1084723 -1084747 -1084757 -1084771 -1084777 -1084793 -1084799 -1084817 -1084823 -1084829 -1084859 -1084871 -1084891 -1084927 -1084939 -1084943 -1084949 -1084981 -1084987 -1084997 -1085003 -1085011 -1085017 -1085023 -1085047 -1085053 -1085101 -1085111 -1085113 -1085131 -1085137 -1085141 -1085143 -1085153 -1085159 -1085179 -1085197 -1085221 -1085269 -1085309 -1085317 -1085327 -1085351 -1085353 -1085369 -1085389 -1085407 -1085419 -1085429 -1085431 -1085443 -1085459 -1085473 -1085509 -1085521 -1085551 -1085587 -1085611 -1085627 -1085633 -1085657 -1085663 -1085677 -1085681 -1085687 -1085719 -1085737 -1085753 -1085767 -1085771 -1085779 -1085801 -1085809 -1085813 -1085827 -1085857 -1085863 -1085867 -1085873 -1085881 -1085891 -1085911 -1085933 -1085957 -1085971 -1085989 -1086031 -1086047 -1086073 -1086089 -1086091 -1086101 -1086103 -1086119 -1086133 -1086139 -1086149 -1086161 -1086179 -1086191 -1086193 -1086199 -1086203 -1086247 -1086251 -1086257 -1086259 -1086263 -1086277 -1086299 -1086301 -1086307 -1086331 -1086343 -1086347 -1086353 -1086361 -1086373 -1086389 -1086391 -1086413 -1086433 -1086443 -1086461 -1086469 -1086493 -1086509 -1086511 -1086523 -1086529 -1086557 -1086559 -1086587 -1086607 -1086611 -1086619 -1086637 -1086641 -1086647 -1086677 -1086689 -1086703 -1086731 -1086749 -1086763 -1086769 -1086791 -1086809 -1086817 -1086859 -1086863 -1086881 -1086893 -1086901 -1086913 -1086919 -1086923 -1086931 -1086937 -1086989 -1086991 -1087001 -1087019 -1087027 -1087061 -1087091 -1087109 -1087117 -1087129 -1087147 -1087159 -1087231 -1087241 -1087249 -1087259 -1087271 -1087291 -1087301 -1087309 -1087349 -1087357 -1087379 -1087381 -1087391 -1087409 -1087423 -1087433 -1087451 -1087453 -1087459 -1087483 -1087487 -1087517 -1087519 -1087543 -1087553 -1087561 -1087589 -1087591 -1087621 -1087631 -1087657 -1087663 -1087673 -1087679 -1087687 -1087717 -1087729 -1087741 -1087747 -1087753 -1087781 -1087787 -1087789 -1087799 -1087811 -1087817 -1087829 -1087841 -1087843 -1087861 -1087873 -1087897 -1087903 -1087907 -1087937 -1087963 -1087967 -1087973 -1087981 -1087987 -1088023 -1088027 -1088039 -1088053 -1088063 -1088071 -1088081 -1088089 -1088093 -1088123 -1088159 -1088161 -1088209 -1088233 -1088237 -1088239 -1088251 -1088267 -1088273 -1088293 -1088309 -1088371 -1088387 -1088389 -1088393 -1088407 -1088413 -1088419 -1088431 -1088443 -1088447 -1088449 -1088467 -1088471 -1088489 -1088519 -1088533 -1088537 -1088543 -1088569 -1088579 -1088603 -1088611 -1088617 -1088621 -1088623 -1088639 -1088641 -1088657 -1088669 -1088671 -1088687 -1088693 -1088707 -1088723 -1088749 -1088753 -1088761 -1088777 -1088783 -1088807 -1088827 -1088831 -1088839 -1088851 -1088903 -1088917 -1088933 -1088953 -1088957 -1088959 -1088977 -1088987 -1088993 -1089017 -1089029 -1089047 -1089091 -1089103 -1089107 -1089113 -1089133 -1089161 -1089191 -1089197 -1089217 -1089223 -1089227 -1089239 -1089259 -1089299 -1089313 -1089359 -1089383 -1089397 -1089401 -1089421 -1089427 -1089457 -1089461 -1089463 -1089469 -1089481 -1089497 -1089503 -1089509 -1089523 -1089551 -1089563 -1089611 -1089629 -1089653 -1089661 -1089677 -1089679 -1089703 -1089709 -1089713 -1089757 -1089793 -1089799 -1089841 -1089863 -1089877 -1089917 -1089919 -1089941 -1089943 -1089961 -1089967 -1090003 -1090013 -1090021 -1090027 -1090031 -1090097 -1090099 -1090127 -1090129 -1090151 -1090153 -1090169 -1090181 -1090189 -1090211 -1090213 -1090217 -1090241 -1090249 -1090267 -1090273 -1090303 -1090333 -1090373 -1090381 -1090387 -1090403 -1090409 -1090421 -1090423 -1090457 -1090459 -1090469 -1090471 -1090483 -1090493 -1090519 -1090553 -1090577 -1090589 -1090597 -1090613 -1090627 -1090681 -1090697 -1090709 -1090711 -1090717 -1090721 -1090757 -1090759 -1090769 -1090783 -1090799 -1090807 -1090819 -1090841 -1090849 -1090877 -1090879 -1090883 -1090889 -1090891 -1090897 -1090909 -1090919 -1090927 -1090937 -1090939 -1090949 -1090963 -1090967 -1090979 -1090997 -1091003 -1091017 -1091021 -1091023 -1091033 -1091047 -1091053 -1091059 -1091063 -1091071 -1091119 -1091137 -1091147 -1091149 -1091159 -1091161 -1091173 -1091177 -1091191 -1091219 -1091221 -1091239 -1091243 -1091257 -1091261 -1091263 -1091267 -1091269 -1091273 -1091287 -1091329 -1091339 -1091359 -1091369 -1091371 -1091381 -1091393 -1091399 -1091401 -1091411 -1091413 -1091443 -1091459 -1091471 -1091477 -1091509 -1091521 -1091527 -1091549 -1091551 -1091561 -1091581 -1091591 -1091609 -1091617 -1091627 -1091633 -1091639 -1091659 -1091663 -1091681 -1091687 -1091711 -1091729 -1091731 -1091737 -1091749 -1091777 -1091807 -1091809 -1091837 -1091843 -1091863 -1091869 -1091887 -1091917 -1091939 -1091957 -1091983 -1092019 -1092023 -1092041 -1092043 -1092059 -1092061 -1092067 -1092089 -1092103 -1092107 -1092127 -1092137 -1092151 -1092163 -1092173 -1092181 -1092191 -1092209 -1092229 -1092241 -1092251 -1092257 -1092269 -1092283 -1092307 -1092331 -1092337 -1092349 -1092353 -1092361 -1092373 -1092379 -1092389 -1092391 -1092397 -1092419 -1092433 -1092451 -1092461 -1092463 -1092473 -1092479 -1092493 -1092541 -1092583 -1092593 -1092601 -1092629 -1092643 -1092659 -1092667 -1092677 -1092713 -1092731 -1092733 -1092757 -1092779 -1092803 -1092821 -1092827 -1092829 -1092851 -1092853 -1092863 -1092887 -1092893 -1092901 -1092907 -1092911 -1092919 -1092929 -1092961 -1092977 -1092989 -1092991 -1092997 -1093007 -1093033 -1093061 -1093063 -1093067 -1093069 -1093087 -1093109 -1093111 -1093129 -1093133 -1093159 -1093163 -1093177 -1093199 -1093201 -1093223 -1093237 -1093243 -1093249 -1093273 -1093283 -1093289 -1093297 -1093307 -1093327 -1093331 -1093357 -1093363 -1093381 -1093399 -1093403 -1093409 -1093427 -1093441 -1093487 -1093493 -1093517 -1093529 -1093531 -1093537 -1093541 -1093553 -1093571 -1093577 -1093591 -1093633 -1093637 -1093639 -1093657 -1093663 -1093667 -1093679 -1093681 -1093699 -1093717 -1093723 -1093733 -1093739 -1093747 -1093751 -1093753 -1093777 -1093789 -1093823 -1093837 -1093843 -1093847 -1093871 -1093889 -1093901 -1093907 -1093927 -1093943 -1093951 -1093957 -1093969 -1093991 -1093993 -1093997 -1093999 -1094011 -1094029 -1094047 -1094057 -1094059 -1094081 -1094089 -1094099 -1094101 -1094123 -1094129 -1094131 -1094143 -1094147 -1094161 -1094183 -1094209 -1094237 -1094263 -1094293 -1094299 -1094321 -1094333 -1094339 -1094371 -1094377 -1094407 -1094411 -1094417 -1094437 -1094441 -1094449 -1094453 -1094461 -1094473 -1094491 -1094519 -1094531 -1094539 -1094543 -1094549 -1094551 -1094557 -1094567 -1094573 -1094603 -1094623 -1094629 -1094633 -1094657 -1094669 -1094671 -1094683 -1094689 -1094693 -1094701 -1094711 -1094747 -1094759 -1094773 -1094791 -1094801 -1094803 -1094809 -1094831 -1094833 -1094843 -1094881 -1094887 -1094897 -1094911 -1094921 -1094923 -1094939 -1094957 -1094963 -1094969 -1094983 -1094999 -1095023 -1095043 -1095047 -1095049 -1095067 -1095071 -1095091 -1095119 -1095161 -1095169 -1095173 -1095209 -1095221 -1095223 -1095229 -1095239 -1095247 -1095251 -1095257 -1095287 -1095313 -1095319 -1095343 -1095349 -1095401 -1095403 -1095427 -1095433 -1095439 -1095443 -1095449 -1095461 -1095481 -1095487 -1095491 -1095503 -1095529 -1095541 -1095551 -1095557 -1095569 -1095581 -1095583 -1095613 -1095631 -1095671 -1095691 -1095713 -1095719 -1095727 -1095733 -1095739 -1095751 -1095779 -1095781 -1095791 -1095793 -1095811 -1095821 -1095833 -1095839 -1095841 -1095847 -1095851 -1095859 -1095907 -1095931 -1095947 -1095959 -1095961 -1095979 -1095989 -1096031 -1096057 -1096061 -1096079 -1096097 -1096099 -1096127 -1096133 -1096141 -1096159 -1096163 -1096189 -1096201 -1096219 -1096267 -1096289 -1096307 -1096327 -1096349 -1096351 -1096363 -1096373 -1096379 -1096393 -1096399 -1096423 -1096427 -1096451 -1096477 -1096481 -1096489 -1096493 -1096499 -1096507 -1096541 -1096549 -1096553 -1096559 -1096561 -1096583 -1096609 -1096621 -1096631 -1096639 -1096673 -1096691 -1096703 -1096727 -1096741 -1096763 -1096787 -1096793 -1096807 -1096817 -1096829 -1096831 -1096853 -1096859 -1096861 -1096871 -1096883 -1096919 -1096951 -1096957 -1096967 -1096969 -1096981 -1096999 -1097009 -1097017 -1097029 -1097039 -1097051 -1097069 -1097081 -1097101 -1097111 -1097113 -1097141 -1097143 -1097147 -1097179 -1097189 -1097203 -1097209 -1097221 -1097237 -1097267 -1097293 -1097297 -1097321 -1097323 -1097351 -1097359 -1097377 -1097381 -1097413 -1097419 -1097423 -1097441 -1097443 -1097461 -1097483 -1097501 -1097513 -1097533 -1097539 -1097543 -1097549 -1097557 -1097599 -1097627 -1097633 -1097651 -1097653 -1097659 -1097669 -1097699 -1097711 -1097717 -1097729 -1097743 -1097783 -1097791 -1097797 -1097819 -1097849 -1097851 -1097861 -1097869 -1097879 -1097891 -1097893 -1097897 -1097903 -1097909 -1097923 -1097933 -1097947 -1097983 -1098017 -1098023 -1098037 -1098073 -1098077 -1098101 -1098109 -1098121 -1098133 -1098151 -1098187 -1098191 -1098193 -1098203 -1098211 -1098221 -1098233 -1098269 -1098287 -1098301 -1098311 -1098313 -1098341 -1098373 -1098379 -1098397 -1098401 -1098439 -1098443 -1098451 -1098463 -1098469 -1098479 -1098481 -1098509 -1098511 -1098533 -1098541 -1098593 -1098613 -1098623 -1098631 -1098649 -1098667 -1098673 -1098689 -1098707 -1098709 -1098731 -1098737 -1098787 -1098791 -1098803 -1098821 -1098833 -1098847 -1098953 -1098967 -1098973 -1098989 -1099031 -1099051 -1099057 -1099079 -1099081 -1099097 -1099103 -1099117 -1099121 -1099139 -1099171 -1099177 -1099181 -1099199 -1099223 -1099247 -1099249 -1099261 -1099279 -1099289 -1099309 -1099313 -1099327 -1099337 -1099363 -1099369 -1099391 -1099393 -1099409 -1099411 -1099421 -1099433 -1099459 -1099463 -1099487 -1099489 -1099493 -1099499 -1099507 -1099513 -1099519 -1099523 -1099541 -1099547 -1099559 -1099573 -1099589 -1099619 -1099621 -1099627 -1099633 -1099649 -1099669 -1099687 -1099711 -1099717 -1099723 -1099727 -1099729 -1099741 -1099757 -1099771 -1099783 -1099793 -1099799 -1099807 -1099817 -1099823 -1099841 -1099843 -1099859 -1099867 -1099927 -1099933 -1099957 -1099961 -1099997 -1100009 -1100023 -1100027 -1100039 -1100041 -1100051 -1100063 -1100089 -1100093 -1100101 -1100123 -1100131 -1100147 -1100149 -1100161 -1100167 -1100171 -1100179 -1100213 -1100219 -1100243 -1100249 -1100261 -1100273 -1100279 -1100303 -1100311 -1100321 -1100353 -1100357 -1100377 -1100381 -1100387 -1100419 -1100441 -1100443 -1100447 -1100467 -1100471 -1100483 -1100503 -1100509 -1100513 -1100543 -1100557 -1100569 -1100581 -1100591 -1100611 -1100641 -1100653 -1100681 -1100683 -1100747 -1100773 -1100777 -1100783 -1100797 -1100807 -1100831 -1100833 -1100837 -1100839 -1100851 -1100857 -1100887 -1100893 -1100899 -1100909 -1100921 -1100933 -1100947 -1100977 -1101071 -1101091 -1101097 -1101103 -1101109 -1101127 -1101143 -1101169 -1101179 -1101193 -1101211 -1101229 -1101253 -1101283 -1101299 -1101307 -1101319 -1101323 -1101341 -1101349 -1101371 -1101377 -1101389 -1101403 -1101407 -1101409 -1101421 -1101431 -1101433 -1101439 -1101467 -1101473 -1101509 -1101511 -1101517 -1101521 -1101533 -1101559 -1101571 -1101577 -1101587 -1101593 -1101613 -1101619 -1101641 -1101649 -1101671 -1101673 -1101689 -1101691 -1101697 -1101733 -1101743 -1101761 -1101767 -1101773 -1101781 -1101803 -1101811 -1101839 -1101851 -1101871 -1101883 -1101901 -1101917 -1101929 -1101931 -1101937 -1101941 -1101959 -1101967 -1102001 -1102007 -1102021 -1102027 -1102063 -1102069 -1102111 -1102117 -1102147 -1102151 -1102159 -1102163 -1102169 -1102181 -1102187 -1102201 -1102237 -1102243 -1102249 -1102253 -1102259 -1102271 -1102279 -1102301 -1102307 -1102313 -1102333 -1102337 -1102393 -1102397 -1102411 -1102427 -1102429 -1102441 -1102447 -1102457 -1102463 -1102481 -1102483 -1102523 -1102537 -1102547 -1102553 -1102567 -1102571 -1102583 -1102663 -1102669 -1102679 -1102681 -1102691 -1102693 -1102709 -1102721 -1102727 -1102729 -1102733 -1102747 -1102757 -1102813 -1102823 -1102831 -1102847 -1102853 -1102861 -1102879 -1102883 -1102891 -1102901 -1102903 -1102921 -1102939 -1102951 -1102963 -1102967 -1102979 -1102991 -1102999 -1103009 -1103017 -1103029 -1103041 -1103059 -1103087 -1103101 -1103107 -1103111 -1103119 -1103129 -1103143 -1103171 -1103183 -1103191 -1103203 -1103213 -1103237 -1103257 -1103279 -1103281 -1103293 -1103309 -1103339 -1103341 -1103353 -1103371 -1103437 -1103449 -1103461 -1103467 -1103483 -1103489 -1103497 -1103519 -1103533 -1103549 -1103561 -1103579 -1103581 -1103587 -1103591 -1103603 -1103611 -1103617 -1103621 -1103629 -1103633 -1103639 -1103699 -1103723 -1103737 -1103749 -1103779 -1103797 -1103803 -1103849 -1103857 -1103863 -1103873 -1103899 -1103903 -1103911 -1103923 -1103933 -1103981 -1103987 -1103989 -1104017 -1104041 -1104079 -1104097 -1104101 -1104107 -1104113 -1104119 -1104137 -1104139 -1104157 -1104179 -1104193 -1104203 -1104209 -1104217 -1104221 -1104241 -1104247 -1104289 -1104293 -1104307 -1104319 -1104331 -1104343 -1104353 -1104373 -1104377 -1104379 -1104403 -1104409 -1104427 -1104431 -1104449 -1104479 -1104491 -1104511 -1104517 -1104533 -1104557 -1104559 -1104589 -1104599 -1104613 -1104619 -1104659 -1104661 -1104671 -1104683 -1104703 -1104707 -1104731 -1104737 -1104739 -1104743 -1104749 -1104751 -1104767 -1104769 -1104781 -1104787 -1104791 -1104797 -1104811 -1104821 -1104823 -1104833 -1104853 -1104877 -1104889 -1104899 -1104913 -1104919 -1104937 -1104941 -1104947 -1104959 -1105009 -1105019 -1105033 -1105061 -1105063 -1105067 -1105109 -1105141 -1105157 -1105163 -1105171 -1105177 -1105193 -1105201 -1105207 -1105213 -1105217 -1105231 -1105261 -1105267 -1105271 -1105309 -1105327 -1105333 -1105337 -1105339 -1105343 -1105387 -1105397 -1105427 -1105441 -1105457 -1105463 -1105501 -1105513 -1105519 -1105537 -1105547 -1105549 -1105571 -1105579 -1105583 -1105589 -1105603 -1105607 -1105609 -1105613 -1105619 -1105627 -1105639 -1105649 -1105651 -1105661 -1105669 -1105691 -1105693 -1105711 -1105757 -1105759 -1105787 -1105807 -1105813 -1105823 -1105847 -1105861 -1105873 -1105879 -1105883 -1105891 -1105913 -1105919 -1105943 -1105961 -1105963 -1105997 -1105999 -1106029 -1106069 -1106087 -1106099 -1106101 -1106129 -1106137 -1106159 -1106167 -1106177 -1106179 -1106197 -1106201 -1106213 -1106219 -1106233 -1106243 -1106249 -1106257 -1106267 -1106279 -1106293 -1106311 -1106317 -1106363 -1106381 -1106401 -1106407 -1106419 -1106423 -1106429 -1106447 -1106449 -1106471 -1106477 -1106489 -1106491 -1106509 -1106527 -1106531 -1106543 -1106563 -1106569 -1106593 -1106621 -1106627 -1106629 -1106653 -1106671 -1106687 -1106689 -1106741 -1106747 -1106761 -1106767 -1106771 -1106779 -1106789 -1106801 -1106821 -1106827 -1106837 -1106839 -1106851 -1106881 -1106891 -1106909 -1106923 -1106927 -1106939 -1106953 -1106957 -1106977 -1106993 -1106999 -1107019 -1107031 -1107047 -1107049 -1107053 -1107083 -1107101 -1107107 -1107109 -1107157 -1107167 -1107173 -1107199 -1107203 -1107217 -1107269 -1107317 -1107319 -1107341 -1107347 -1107383 -1107389 -1107401 -1107409 -1107419 -1107433 -1107439 -1107467 -1107479 -1107487 -1107497 -1107503 -1107511 -1107523 -1107527 -1107553 -1107569 -1107571 -1107581 -1107583 -1107593 -1107619 -1107677 -1107679 -1107721 -1107727 -1107751 -1107763 -1107773 -1107781 -1107787 -1107791 -1107793 -1107797 -1107803 -1107811 -1107823 -1107851 -1107853 -1107881 -1107893 -1107913 -1107917 -1107923 -1107929 -1107937 -1107989 -1108001 -1108007 -1108021 -1108049 -1108057 -1108069 -1108073 -1108091 -1108103 -1108123 -1108127 -1108147 -1108169 -1108171 -1108181 -1108201 -1108207 -1108223 -1108229 -1108241 -1108253 -1108259 -1108267 -1108313 -1108321 -1108337 -1108357 -1108361 -1108363 -1108369 -1108397 -1108423 -1108427 -1108447 -1108453 -1108463 -1108469 -1108477 -1108487 -1108489 -1108501 -1108507 -1108537 -1108543 -1108559 -1108561 -1108567 -1108571 -1108573 -1108579 -1108603 -1108609 -1108619 -1108633 -1108663 -1108691 -1108693 -1108697 -1108703 -1108711 -1108717 -1108727 -1108729 -1108733 -1108739 -1108747 -1108753 -1108759 -1108771 -1108781 -1108801 -1108817 -1108819 -1108823 -1108867 -1108903 -1108907 -1108909 -1108957 -1108967 -1108993 -1108997 -1108999 -1109021 -1109033 -1109057 -1109113 -1109117 -1109123 -1109159 -1109161 -1109167 -1109189 -1109197 -1109219 -1109231 -1109243 -1109249 -1109257 -1109281 -1109287 -1109291 -1109309 -1109327 -1109347 -1109351 -1109363 -1109387 -1109393 -1109399 -1109401 -1109411 -1109431 -1109473 -1109477 -1109489 -1109491 -1109509 -1109513 -1109531 -1109533 -1109561 -1109579 -1109609 -1109611 -1109629 -1109639 -1109653 -1109663 -1109723 -1109737 -1109749 -1109761 -1109783 -1109789 -1109791 -1109813 -1109821 -1109839 -1109851 -1109861 -1109869 -1109881 -1109887 -1109891 -1109897 -1109903 -1109909 -1109921 -1109951 -1109987 -1110007 -1110013 -1110019 -1110023 -1110041 -1110061 -1110077 -1110089 -1110103 -1110127 -1110133 -1110167 -1110181 -1110223 -1110229 -1110247 -1110269 -1110271 -1110289 -1110301 -1110311 -1110313 -1110331 -1110349 -1110353 -1110367 -1110397 -1110401 -1110413 -1110427 -1110433 -1110449 -1110467 -1110479 -1110517 -1110521 -1110523 -1110533 -1110539 -1110541 -1110547 -1110583 -1110587 -1110589 -1110611 -1110617 -1110643 -1110667 -1110679 -1110709 -1110713 -1110719 -1110727 -1110743 -1110773 -1110779 -1110803 -1110817 -1110821 -1110839 -1110859 -1110881 -1110887 -1110913 -1110917 -1110919 -1110929 -1110931 -1110943 -1110953 -1110959 -1110971 -1110973 -1110979 -1110983 -1110997 -1111007 -1111013 -1111021 -1111031 -1111043 -1111049 -1111057 -1111067 -1111081 -1111087 -1111091 -1111151 -1111157 -1111169 -1111181 -1111183 -1111189 -1111211 -1111213 -1111219 -1111247 -1111259 -1111283 -1111289 -1111301 -1111333 -1111339 -1111351 -1111361 -1111379 -1111393 -1111399 -1111423 -1111427 -1111433 -1111447 -1111457 -1111489 -1111493 -1111499 -1111531 -1111543 -1111547 -1111553 -1111559 -1111573 -1111577 -1111637 -1111639 -1111651 -1111661 -1111667 -1111673 -1111687 -1111703 -1111711 -1111723 -1111727 -1111741 -1111757 -1111771 -1111787 -1111793 -1111801 -1111841 -1111853 -1111867 -1111897 -1111921 -1111933 -1111949 -1111963 -1111967 -1111991 -1112003 -1112011 -1112017 -1112047 -1112057 -1112077 -1112081 -1112087 -1112093 -1112107 -1112113 -1112129 -1112131 -1112141 -1112143 -1112147 -1112159 -1112171 -1112197 -1112201 -1112239 -1112269 -1112273 -1112291 -1112323 -1112333 -1112339 -1112341 -1112351 -1112359 -1112369 -1112381 -1112383 -1112389 -1112413 -1112467 -1112471 -1112477 -1112483 -1112509 -1112513 -1112519 -1112543 -1112549 -1112561 -1112567 -1112569 -1112581 -1112591 -1112597 -1112611 -1112623 -1112651 -1112653 -1112663 -1112677 -1112689 -1112707 -1112723 -1112729 -1112731 -1112737 -1112747 -1112777 -1112779 -1112789 -1112821 -1112827 -1112831 -1112833 -1112857 -1112897 -1112899 -1112911 -1112921 -1112941 -1112953 -1112959 -1112971 -1112977 -1112983 -1113011 -1113019 -1113029 -1113043 -1113059 -1113083 -1113089 -1113103 -1113137 -1113149 -1113157 -1113173 -1113181 -1113187 -1113193 -1113197 -1113199 -1113221 -1113239 -1113253 -1113257 -1113317 -1113319 -1113337 -1113349 -1113373 -1113379 -1113401 -1113403 -1113421 -1113451 -1113461 -1113481 -1113491 -1113509 -1113521 -1113527 -1113557 -1113569 -1113587 -1113599 -1113617 -1113643 -1113667 -1113701 -1113703 -1113713 -1113719 -1113751 -1113773 -1113781 -1113787 -1113793 -1113797 -1113809 -1113859 -1113863 -1113877 -1113883 -1113887 -1113899 -1113941 -1113949 -1113953 -1113961 -1113971 -1113991 -1113997 -1114019 -1114031 -1114037 -1114039 -1114049 -1114063 -1114111 -1114117 -1114159 -1114193 -1114207 -1114213 -1114241 -1114249 -1114261 -1114271 -1114273 -1114283 -1114297 -1114301 -1114303 -1114349 -1114361 -1114381 -1114397 -1114423 -1114427 -1114447 -1114471 -1114489 -1114493 -1114501 -1114507 -1114523 -1114541 -1114549 -1114567 -1114573 -1114577 -1114591 -1114601 -1114613 -1114651 -1114657 -1114661 -1114681 -1114693 -1114697 -1114709 -1114721 -1114723 -1114733 -1114753 -1114759 -1114801 -1114807 -1114811 -1114829 -1114837 -1114849 -1114859 -1114873 -1114891 -1114907 -1114909 -1114931 -1114937 -1114943 -1114969 -1114973 -1114987 -1114999 -1115011 -1115027 -1115029 -1115057 -1115071 -1115089 -1115099 -1115113 -1115117 -1115131 -1115189 -1115207 -1115227 -1115237 -1115239 -1115267 -1115269 -1115273 -1115297 -1115299 -1115321 -1115327 -1115329 -1115351 -1115363 -1115381 -1115399 -1115407 -1115417 -1115419 -1115447 -1115449 -1115453 -1115467 -1115497 -1115501 -1115519 -1115531 -1115533 -1115539 -1115551 -1115561 -1115567 -1115573 -1115579 -1115581 -1115599 -1115627 -1115633 -1115641 -1115657 -1115683 -1115701 -1115711 -1115713 -1115731 -1115743 -1115759 -1115767 -1115771 -1115773 -1115789 -1115831 -1115839 -1115843 -1115857 -1115879 -1115899 -1115911 -1115923 -1115929 -1115941 -1115987 -1115993 -1116001 -1116053 -1116077 -1116091 -1116107 -1116133 -1116163 -1116173 -1116187 -1116209 -1116223 -1116229 -1116257 -1116277 -1116281 -1116289 -1116301 -1116317 -1116319 -1116329 -1116337 -1116347 -1116371 -1116419 -1116431 -1116439 -1116449 -1116461 -1116469 -1116473 -1116491 -1116499 -1116523 -1116541 -1116547 -1116569 -1116571 -1116593 -1116601 -1116631 -1116637 -1116641 -1116653 -1116659 -1116677 -1116701 -1116743 -1116749 -1116751 -1116809 -1116821 -1116851 -1116853 -1116859 -1116887 -1116889 -1116893 -1116911 -1116937 -1116943 -1116977 -1116989 -1117009 -1117013 -1117021 -1117027 -1117031 -1117033 -1117057 -1117069 -1117073 -1117079 -1117099 -1117111 -1117117 -1117153 -1117169 -1117177 -1117199 -1117243 -1117247 -1117253 -1117267 -1117273 -1117279 -1117301 -1117307 -1117309 -1117321 -1117349 -1117367 -1117379 -1117433 -1117439 -1117451 -1117463 -1117471 -1117477 -1117481 -1117483 -1117489 -1117513 -1117549 -1117553 -1117579 -1117591 -1117601 -1117603 -1117607 -1117609 -1117657 -1117661 -1117673 -1117679 -1117681 -1117709 -1117729 -1117741 -1117757 -1117759 -1117763 -1117769 -1117793 -1117799 -1117811 -1117813 -1117817 -1117819 -1117861 -1117867 -1117877 -1117889 -1117901 -1117913 -1117931 -1117933 -1117939 -1117943 -1117967 -1117973 -1117993 -1118003 -1118009 -1118011 -1118021 -1118023 -1118027 -1118041 -1118063 -1118081 -1118101 -1118113 -1118123 -1118137 -1118147 -1118149 -1118189 -1118197 -1118203 -1118219 -1118261 -1118267 -1118291 -1118303 -1118309 -1118317 -1118339 -1118363 -1118371 -1118393 -1118419 -1118437 -1118441 -1118479 -1118483 -1118497 -1118519 -1118527 -1118563 -1118567 -1118569 -1118599 -1118629 -1118653 -1118659 -1118713 -1118717 -1118723 -1118737 -1118749 -1118773 -1118779 -1118783 -1118797 -1118807 -1118809 -1118827 -1118837 -1118851 -1118857 -1118861 -1118863 -1118867 -1118869 -1118893 -1118911 -1118921 -1118941 -1118947 -1118951 -1118969 -1118987 -1118993 -1119029 -1119037 -1119047 -1119049 -1119077 -1119091 -1119109 -1119121 -1119169 -1119179 -1119221 -1119227 -1119241 -1119269 -1119281 -1119299 -1119319 -1119323 -1119343 -1119359 -1119389 -1119397 -1119403 -1119449 -1119473 -1119523 -1119527 -1119529 -1119557 -1119577 -1119589 -1119607 -1119611 -1119623 -1119649 -1119653 -1119659 -1119673 -1119691 -1119697 -1119707 -1119733 -1119737 -1119779 -1119793 -1119799 -1119809 -1119817 -1119821 -1119823 -1119857 -1119863 -1119871 -1119907 -1119913 -1119947 -1119949 -1119959 -1120001 -1120019 -1120051 -1120073 -1120081 -1120087 -1120109 -1120121 -1120153 -1120157 -1120159 -1120187 -1120211 -1120219 -1120237 -1120271 -1120277 -1120289 -1120291 -1120303 -1120313 -1120319 -1120321 -1120337 -1120349 -1120363 -1120369 -1120391 -1120423 -1120429 -1120459 -1120481 -1120499 -1120501 -1120507 -1120513 -1120517 -1120519 -1120529 -1120541 -1120543 -1120547 -1120549 -1120573 -1120577 -1120591 -1120607 -1120627 -1120633 -1120649 -1120661 -1120663 -1120667 -1120673 -1120687 -1120711 -1120723 -1120727 -1120739 -1120741 -1120747 -1120771 -1120781 -1120783 -1120787 -1120799 -1120807 -1120811 -1120831 -1120837 -1120849 -1120871 -1120883 -1120901 -1120907 -1120913 -1120919 -1120939 -1120957 -1120961 -1120969 -1120993 -1121011 -1121017 -1121023 -1121027 -1121033 -1121047 -1121051 -1121083 -1121093 -1121101 -1121143 -1121147 -1121173 -1121179 -1121189 -1121191 -1121203 -1121221 -1121231 -1121249 -1121257 -1121261 -1121293 -1121297 -1121317 -1121333 -1121347 -1121357 -1121369 -1121377 -1121383 -1121387 -1121389 -1121423 -1121431 -1121443 -1121447 -1121453 -1121509 -1121539 -1121543 -1121557 -1121599 -1121621 -1121629 -1121651 -1121671 -1121689 -1121693 -1121699 -1121707 -1121723 -1121737 -1121819 -1121831 -1121833 -1121837 -1121839 -1121867 -1121899 -1121933 -1121941 -1121947 -1121987 -1121993 -1122001 -1122029 -1122041 -1122053 -1122071 -1122089 -1122091 -1122103 -1122113 -1122131 -1122133 -1122137 -1122139 -1122157 -1122179 -1122181 -1122227 -1122241 -1122259 -1122263 -1122269 -1122281 -1122283 -1122287 -1122367 -1122371 -1122389 -1122397 -1122419 -1122427 -1122431 -1122437 -1122449 -1122467 -1122481 -1122491 -1122529 -1122533 -1122551 -1122571 -1122587 -1122599 -1122623 -1122643 -1122647 -1122659 -1122679 -1122683 -1122701 -1122721 -1122739 -1122749 -1122757 -1122761 -1122811 -1122841 -1122857 -1122887 -1122899 -1122923 -1122937 -1122941 -1122983 -1122997 -1123051 -1123079 -1123081 -1123093 -1123127 -1123151 -1123181 -1123189 -1123211 -1123217 -1123219 -1123231 -1123247 -1123267 -1123279 -1123303 -1123307 -1123319 -1123327 -1123349 -1123351 -1123361 -1123379 -1123391 -1123399 -1123403 -1123427 -1123429 -1123439 -1123477 -1123483 -1123487 -1123501 -1123511 -1123517 -1123531 -1123541 -1123553 -1123561 -1123567 -1123589 -1123597 -1123601 -1123621 -1123631 -1123637 -1123651 -1123667 -1123669 -1123691 -1123693 -1123699 -1123709 -1123729 -1123739 -1123741 -1123747 -1123777 -1123807 -1123841 -1123867 -1123873 -1123879 -1123883 -1123897 -1123901 -1123909 -1123919 -1123931 -1123943 -1123951 -1123961 -1123973 -1123979 -1123999 -1124027 -1124041 -1124051 -1124083 -1124087 -1124107 -1124113 -1124119 -1124131 -1124141 -1124147 -1124197 -1124203 -1124209 -1124219 -1124239 -1124251 -1124267 -1124269 -1124293 -1124297 -1124303 -1124317 -1124351 -1124353 -1124369 -1124377 -1124423 -1124429 -1124437 -1124441 -1124443 -1124449 -1124509 -1124531 -1124551 -1124561 -1124581 -1124593 -1124597 -1124603 -1124639 -1124647 -1124653 -1124659 -1124681 -1124687 -1124699 -1124719 -1124741 -1124749 -1124759 -1124789 -1124797 -1124803 -1124807 -1124813 -1124831 -1124833 -1124867 -1124869 -1124951 -1124957 -1124969 -1124983 -1124987 -1124993 -1125001 -1125013 -1125017 -1125029 -1125053 -1125097 -1125109 -1125121 -1125127 -1125139 -1125143 -1125151 -1125167 -1125169 -1125193 -1125203 -1125209 -1125217 -1125221 -1125253 -1125259 -1125283 -1125317 -1125323 -1125329 -1125343 -1125359 -1125361 -1125379 -1125391 -1125401 -1125407 -1125419 -1125431 -1125433 -1125469 -1125473 -1125479 -1125499 -1125529 -1125539 -1125557 -1125559 -1125569 -1125571 -1125581 -1125599 -1125629 -1125647 -1125653 -1125679 -1125701 -1125713 -1125739 -1125763 -1125767 -1125793 -1125797 -1125811 -1125823 -1125833 -1125857 -1125871 -1125899 -1125907 -1125911 -1125913 -1125923 -1125931 -1125941 -1125953 -1125973 -1125991 -1126031 -1126033 -1126043 -1126067 -1126093 -1126159 -1126189 -1126201 -1126211 -1126219 -1126247 -1126253 -1126259 -1126283 -1126313 -1126319 -1126343 -1126351 -1126357 -1126361 -1126381 -1126387 -1126397 -1126399 -1126421 -1126439 -1126441 -1126457 -1126459 -1126483 -1126501 -1126513 -1126519 -1126523 -1126537 -1126553 -1126561 -1126577 -1126579 -1126597 -1126627 -1126649 -1126661 -1126663 -1126667 -1126669 -1126693 -1126703 -1126711 -1126751 -1126759 -1126771 -1126781 -1126787 -1126823 -1126831 -1126837 -1126843 -1126847 -1126859 -1126861 -1126889 -1126897 -1126963 -1126973 -1126991 -1126999 -1127011 -1127029 -1127033 -1127039 -1127051 -1127081 -1127101 -1127111 -1127123 -1127149 -1127153 -1127167 -1127177 -1127183 -1127197 -1127209 -1127221 -1127227 -1127239 -1127249 -1127263 -1127281 -1127297 -1127303 -1127309 -1127311 -1127323 -1127333 -1127351 -1127359 -1127369 -1127381 -1127383 -1127393 -1127407 -1127411 -1127443 -1127447 -1127453 -1127461 -1127507 -1127513 -1127527 -1127531 -1127537 -1127557 -1127561 -1127573 -1127587 -1127603 -1127617 -1127629 -1127641 -1127657 -1127663 -1127683 -1127701 -1127741 -1127767 -1127773 -1127801 -1127803 -1127809 -1127813 -1127837 -1127849 -1127857 -1127881 -1127891 -1127911 -1127947 -1127957 -1127969 -1127981 -1127983 -1127993 -1128031 -1128037 -1128089 -1128091 -1128107 -1128109 -1128143 -1128151 -1128161 -1128181 -1128209 -1128223 -1128227 -1128233 -1128247 -1128251 -1128287 -1128289 -1128293 -1128299 -1128301 -1128313 -1128349 -1128371 -1128373 -1128383 -1128397 -1128427 -1128433 -1128451 -1128497 -1128499 -1128503 -1128509 -1128521 -1128527 -1128539 -1128553 -1128557 -1128577 -1128583 -1128599 -1128601 -1128623 -1128629 -1128637 -1128641 -1128643 -1128661 -1128667 -1128691 -1128697 -1128703 -1128713 -1128719 -1128727 -1128731 -1128737 -1128761 -1128763 -1128769 -1128773 -1128779 -1128781 -1128811 -1128821 -1128823 -1128889 -1128899 -1128901 -1128917 -1128931 -1128937 -1128943 -1128947 -1128949 -1128977 -1128979 -1128997 -1129013 -1129019 -1129033 -1129043 -1129103 -1129109 -1129111 -1129127 -1129133 -1129153 -1129159 -1129169 -1129187 -1129211 -1129213 -1129217 -1129229 -1129253 -1129283 -1129307 -1129313 -1129333 -1129343 -1129367 -1129391 -1129399 -1129409 -1129433 -1129439 -1129441 -1129459 -1129477 -1129487 -1129489 -1129501 -1129511 -1129519 -1129523 -1129559 -1129561 -1129571 -1129577 -1129603 -1129619 -1129643 -1129663 -1129679 -1129693 -1129699 -1129717 -1129729 -1129741 -1129747 -1129757 -1129763 -1129787 -1129789 -1129819 -1129831 -1129841 -1129847 -1129853 -1129859 -1129861 -1129889 -1129897 -1129951 -1129957 -1129963 -1129991 -1130011 -1130023 -1130039 -1130047 -1130053 -1130057 -1130081 -1130099 -1130117 -1130123 -1130131 -1130191 -1130237 -1130251 -1130257 -1130267 -1130273 -1130281 -1130287 -1130293 -1130299 -1130317 -1130321 -1130351 -1130359 -1130369 -1130407 -1130413 -1130417 -1130429 -1130431 -1130447 -1130471 -1130497 -1130501 -1130527 -1130561 -1130579 -1130581 -1130587 -1130621 -1130627 -1130629 -1130639 -1130641 -1130651 -1130677 -1130693 -1130699 -1130711 -1130719 -1130737 -1130741 -1130777 -1130783 -1130803 -1130807 -1130809 -1130813 -1130819 -1130827 -1130863 -1130929 -1130939 -1130947 -1130951 -1130953 -1130957 -1130963 -1130981 -1131023 -1131047 -1131049 -1131077 -1131079 -1131083 -1131103 -1131113 -1131121 -1131131 -1131133 -1131139 -1131157 -1131181 -1131191 -1131217 -1131223 -1131239 -1131253 -1131259 -1131269 -1131271 -1131307 -1131323 -1131329 -1131331 -1131341 -1131343 -1131353 -1131379 -1131397 -1131413 -1131419 -1131421 -1131437 -1131451 -1131463 -1131467 -1131479 -1131491 -1131509 -1131523 -1131547 -1131553 -1131569 -1131617 -1131629 -1131643 -1131653 -1131671 -1131677 -1131701 -1131721 -1131727 -1131737 -1131749 -1131751 -1131763 -1131769 -1131787 -1131799 -1131821 -1131827 -1131829 -1131839 -1131857 -1131863 -1131869 -1131881 -1131883 -1131913 -1131917 -1131919 -1131937 -1131943 -1131959 -1131961 -1131973 -1131997 -1132003 -1132009 -1132063 -1132067 -1132091 -1132123 -1132139 -1132141 -1132177 -1132199 -1132223 -1132249 -1132259 -1132291 -1132301 -1132309 -1132321 -1132333 -1132393 -1132403 -1132409 -1132423 -1132429 -1132447 -1132463 -1132471 -1132477 -1132487 -1132499 -1132507 -1132511 -1132519 -1132529 -1132541 -1132561 -1132567 -1132583 -1132597 -1132601 -1132603 -1132627 -1132633 -1132639 -1132643 -1132661 -1132667 -1132673 -1132679 -1132697 -1132721 -1132739 -1132753 -1132783 -1132787 -1132793 -1132811 -1132823 -1132861 -1132877 -1132883 -1132909 -1132919 -1132927 -1132933 -1132949 -1132969 -1132979 -1132987 -1132991 -1132993 -1132997 -1133009 -1133017 -1133039 -1133047 -1133053 -1133071 -1133131 -1133147 -1133149 -1133159 -1133173 -1133177 -1133183 -1133189 -1133191 -1133219 -1133227 -1133239 -1133257 -1133261 -1133263 -1133287 -1133303 -1133317 -1133333 -1133357 -1133359 -1133381 -1133387 -1133459 -1133467 -1133477 -1133479 -1133501 -1133507 -1133513 -1133519 -1133533 -1133537 -1133551 -1133579 -1133591 -1133621 -1133623 -1133633 -1133641 -1133651 -1133653 -1133659 -1133677 -1133681 -1133683 -1133689 -1133731 -1133777 -1133789 -1133809 -1133819 -1133827 -1133837 -1133843 -1133851 -1133857 -1133861 -1133893 -1133897 -1133903 -1133911 -1133933 -1133947 -1133959 -1133963 -1133971 -1133989 -1134031 -1134037 -1134043 -1134047 -1134059 -1134071 -1134079 -1134113 -1134137 -1134143 -1134149 -1134151 -1134163 -1134169 -1134179 -1134187 -1134193 -1134239 -1134241 -1134247 -1134271 -1134283 -1134299 -1134311 -1134313 -1134389 -1134391 -1134403 -1134421 -1134437 -1134443 -1134449 -1134467 -1134479 -1134481 -1134487 -1134503 -1134517 -1134541 -1134557 -1134559 -1134583 -1134587 -1134607 -1134611 -1134619 -1134649 -1134667 -1134673 -1134691 -1134697 -1134703 -1134709 -1134719 -1134769 -1134781 -1134787 -1134811 -1134821 -1134841 -1134863 -1134871 -1134877 -1134883 -1134907 -1134923 -1134929 -1134961 -1134967 -1134977 -1134989 -1135007 -1135009 -1135019 -1135021 -1135061 -1135063 -1135081 -1135087 -1135091 -1135093 -1135103 -1135111 -1135129 -1135133 -1135159 -1135171 -1135187 -1135201 -1135217 -1135229 -1135237 -1135241 -1135247 -1135261 -1135279 -1135283 -1135291 -1135327 -1135333 -1135339 -1135363 -1135367 -1135403 -1135411 -1135427 -1135429 -1135439 -1135451 -1135469 -1135483 -1135513 -1135531 -1135597 -1135613 -1135619 -1135633 -1135643 -1135657 -1135663 -1135699 -1135703 -1135711 -1135721 -1135733 -1135751 -1135777 -1135819 -1135831 -1135837 -1135847 -1135853 -1135859 -1135861 -1135873 -1135879 -1135891 -1135903 -1135913 -1135919 -1135921 -1135951 -1135963 -1135969 -1135997 -1135999 -1136041 -1136053 -1136063 -1136077 -1136081 -1136087 -1136089 -1136111 -1136117 -1136123 -1136129 -1136147 -1136153 -1136183 -1136203 -1136221 -1136227 -1136231 -1136237 -1136287 -1136299 -1136309 -1136327 -1136329 -1136339 -1136357 -1136363 -1136383 -1136389 -1136393 -1136411 -1136417 -1136449 -1136459 -1136461 -1136477 -1136483 -1136557 -1136567 -1136579 -1136587 -1136593 -1136609 -1136617 -1136623 -1136627 -1136633 -1136647 -1136651 -1136659 -1136669 -1136699 -1136717 -1136719 -1136741 -1136749 -1136767 -1136809 -1136813 -1136819 -1136831 -1136833 -1136843 -1136869 -1136897 -1136917 -1136921 -1136939 -1136951 -1136969 -1136981 -1136983 -1136999 -1137001 -1137007 -1137029 -1137067 -1137091 -1137109 -1137137 -1137139 -1137161 -1137163 -1137167 -1137179 -1137203 -1137209 -1137229 -1137233 -1137247 -1137263 -1137271 -1137289 -1137313 -1137329 -1137337 -1137341 -1137403 -1137407 -1137427 -1137439 -1137457 -1137481 -1137503 -1137527 -1137529 -1137547 -1137551 -1137553 -1137569 -1137611 -1137613 -1137629 -1137659 -1137667 -1137673 -1137677 -1137707 -1137733 -1137743 -1137749 -1137767 -1137781 -1137803 -1137809 -1137811 -1137817 -1137859 -1137863 -1137869 -1137881 -1137883 -1137887 -1137889 -1137911 -1137919 -1137937 -1137953 -1137959 -1137973 -1137977 -1137991 -1138019 -1138057 -1138061 -1138091 -1138097 -1138117 -1138127 -1138141 -1138147 -1138171 -1138183 -1138213 -1138237 -1138273 -1138363 -1138367 -1138369 -1138391 -1138393 -1138409 -1138411 -1138427 -1138429 -1138433 -1138441 -1138451 -1138457 -1138483 -1138519 -1138547 -1138559 -1138567 -1138589 -1138591 -1138637 -1138639 -1138649 -1138667 -1138673 -1138679 -1138681 -1138703 -1138717 -1138729 -1138733 -1138741 -1138751 -1138757 -1138771 -1138777 -1138793 -1138829 -1138831 -1138849 -1138853 -1138867 -1138883 -1138901 -1138919 -1138957 -1138961 -1138967 -1138979 -1138987 -1138997 -1138999 -1139003 -1139011 -1139041 -1139059 -1139081 -1139087 -1139123 -1139141 -1139143 -1139147 -1139191 -1139197 -1139227 -1139239 -1139249 -1139263 -1139269 -1139273 -1139287 -1139291 -1139293 -1139309 -1139321 -1139329 -1139353 -1139387 -1139393 -1139407 -1139423 -1139461 -1139471 -1139473 -1139483 -1139491 -1139503 -1139519 -1139521 -1139531 -1139539 -1139549 -1139557 -1139573 -1139587 -1139623 -1139669 -1139681 -1139683 -1139687 -1139713 -1139717 -1139741 -1139771 -1139773 -1139779 -1139807 -1139819 -1139843 -1139849 -1139851 -1139861 -1139863 -1139869 -1139909 -1139911 -1139917 -1139921 -1139951 -1139959 -1139989 -1139993 -1140091 -1140101 -1140103 -1140121 -1140127 -1140131 -1140137 -1140143 -1140157 -1140163 -1140197 -1140203 -1140233 -1140239 -1140253 -1140257 -1140281 -1140289 -1140311 -1140319 -1140341 -1140353 -1140371 -1140379 -1140383 -1140389 -1140413 -1140421 -1140431 -1140439 -1140449 -1140463 -1140487 -1140493 -1140533 -1140539 -1140563 -1140569 -1140571 -1140577 -1140611 -1140619 -1140637 -1140677 -1140679 -1140691 -1140697 -1140709 -1140721 -1140749 -1140787 -1140803 -1140847 -1140851 -1140859 -1140863 -1140871 -1140901 -1140911 -1140913 -1140929 -1140949 -1140959 -1140967 -1140973 -1140983 -1140991 -1141009 -1141013 -1141027 -1141031 -1141033 -1141039 -1141061 -1141067 -1141081 -1141087 -1141093 -1141097 -1141103 -1141109 -1141123 -1141139 -1141171 -1141219 -1141223 -1141229 -1141241 -1141243 -1141253 -1141267 -1141271 -1141277 -1141279 -1141289 -1141291 -1141303 -1141319 -1141321 -1141351 -1141373 -1141379 -1141381 -1141391 -1141417 -1141423 -1141447 -1141453 -1141477 -1141507 -1141523 -1141529 -1141531 -1141541 -1141571 -1141573 -1141597 -1141631 -1141633 -1141649 -1141661 -1141667 -1141717 -1141739 -1141757 -1141769 -1141801 -1141813 -1141837 -1141849 -1141853 -1141867 -1141871 -1141901 -1141909 -1141949 -1141963 -1141967 -1141969 -1141999 -1142003 -1142017 -1142021 -1142039 -1142041 -1142059 -1142069 -1142083 -1142129 -1142131 -1142159 -1142161 -1142171 -1142191 -1142201 -1142233 -1142237 -1142243 -1142263 -1142269 -1142279 -1142287 -1142311 -1142321 -1142333 -1142353 -1142357 -1142359 -1142363 -1142389 -1142423 -1142431 -1142473 -1142483 -1142503 -1142507 -1142509 -1142539 -1142549 -1142569 -1142573 -1142593 -1142599 -1142633 -1142651 -1142677 -1142693 -1142707 -1142737 -1142759 -1142773 -1142777 -1142783 -1142789 -1142809 -1142821 -1142833 -1142837 -1142851 -1142863 -1142881 -1142891 -1142909 -1142917 -1142923 -1142929 -1142941 -1142959 -1142969 -1142971 -1143013 -1143019 -1143047 -1143049 -1143053 -1143061 -1143067 -1143071 -1143073 -1143089 -1143091 -1143101 -1143113 -1143143 -1143161 -1143167 -1143193 -1143217 -1143223 -1143227 -1143239 -1143257 -1143269 -1143281 -1143283 -1143299 -1143341 -1143347 -1143371 -1143391 -1143407 -1143433 -1143469 -1143473 -1143481 -1143487 -1143529 -1143551 -1143563 -1143577 -1143587 -1143589 -1143601 -1143619 -1143643 -1143647 -1143661 -1143679 -1143697 -1143719 -1143749 -1143763 -1143799 -1143803 -1143809 -1143817 -1143829 -1143851 -1143887 -1143893 -1143943 -1143949 -1143953 -1143959 -1143977 -1144001 -1144007 -1144019 -1144037 -1144061 -1144081 -1144103 -1144139 -1144141 -1144147 -1144153 -1144163 -1144183 -1144193 -1144211 -1144223 -1144243 -1144249 -1144261 -1144271 -1144277 -1144279 -1144291 -1144301 -1144327 -1144333 -1144343 -1144349 -1144357 -1144379 -1144393 -1144399 -1144417 -1144439 -1144441 -1144453 -1144477 -1144483 -1144499 -1144511 -1144519 -1144523 -1144529 -1144537 -1144573 -1144589 -1144603 -1144607 -1144621 -1144643 -1144657 -1144667 -1144681 -1144691 -1144721 -1144723 -1144727 -1144739 -1144757 -1144783 -1144823 -1144837 -1144867 -1144877 -1144879 -1144889 -1144901 -1144903 -1144907 -1144919 -1144931 -1144939 -1144951 -1144973 -1144981 -1144993 -1145003 -1145021 -1145057 -1145059 -1145077 -1145093 -1145099 -1145107 -1145129 -1145141 -1145143 -1145173 -1145189 -1145191 -1145203 -1145213 -1145227 -1145269 -1145281 -1145293 -1145299 -1145303 -1145311 -1145323 -1145327 -1145329 -1145359 -1145369 -1145371 -1145381 -1145387 -1145393 -1145411 -1145429 -1145461 -1145479 -1145497 -1145509 -1145533 -1145537 -1145539 -1145593 -1145611 -1145621 -1145623 -1145659 -1145689 -1145693 -1145713 -1145723 -1145741 -1145743 -1145747 -1145773 -1145789 -1145797 -1145801 -1145803 -1145831 -1145843 -1145849 -1145873 -1145897 -1145899 -1145971 -1145983 -1145999 -1146037 -1146043 -1146049 -1146071 -1146083 -1146091 -1146097 -1146133 -1146143 -1146179 -1146217 -1146221 -1146263 -1146281 -1146307 -1146323 -1146329 -1146331 -1146347 -1146367 -1146391 -1146407 -1146413 -1146419 -1146421 -1146461 -1146487 -1146491 -1146511 -1146521 -1146529 -1146533 -1146539 -1146559 -1146569 -1146581 -1146661 -1146671 -1146679 -1146697 -1146703 -1146709 -1146713 -1146727 -1146731 -1146763 -1146773 -1146779 -1146781 -1146787 -1146791 -1146793 -1146797 -1146799 -1146809 -1146823 -1146829 -1146833 -1146841 -1146857 -1146869 -1146877 -1146881 -1146911 -1146917 -1146931 -1146947 -1146953 -1146967 -1146989 -1147009 -1147021 -1147039 -1147043 -1147051 -1147067 -1147073 -1147099 -1147103 -1147117 -1147127 -1147141 -1147169 -1147183 -1147187 -1147189 -1147193 -1147213 -1147229 -1147231 -1147243 -1147247 -1147249 -1147253 -1147271 -1147273 -1147297 -1147301 -1147331 -1147339 -1147351 -1147379 -1147387 -1147409 -1147417 -1147423 -1147427 -1147441 -1147451 -1147453 -1147459 -1147463 -1147499 -1147507 -1147511 -1147561 -1147567 -1147571 -1147579 -1147583 -1147591 -1147613 -1147621 -1147637 -1147639 -1147669 -1147697 -1147709 -1147711 -1147717 -1147739 -1147759 -1147793 -1147819 -1147841 -1147843 -1147889 -1147897 -1147903 -1147921 -1147931 -1147969 -1147981 -1147987 -1147997 -1148029 -1148039 -1148047 -1148087 -1148089 -1148099 -1148111 -1148167 -1148171 -1148177 -1148219 -1148249 -1148261 -1148263 -1148291 -1148293 -1148297 -1148311 -1148327 -1148339 -1148359 -1148377 -1148387 -1148437 -1148453 -1148489 -1148501 -1148507 -1148513 -1148527 -1148549 -1148561 -1148593 -1148599 -1148621 -1148629 -1148647 -1148663 -1148677 -1148681 -1148687 -1148701 -1148713 -1148729 -1148731 -1148737 -1148747 -1148753 -1148761 -1148773 -1148837 -1148839 -1148857 -1148867 -1148879 -1148921 -1148933 -1148941 -1148957 -1148963 -1148971 -1148977 -1148981 -1148989 -1148999 -1149007 -1149017 -1149037 -1149053 -1149059 -1149061 -1149131 -1149151 -1149157 -1149163 -1149167 -1149191 -1149193 -1149209 -1149221 -1149227 -1149229 -1149233 -1149259 -1149283 -1149307 -1149341 -1149349 -1149361 -1149373 -1149403 -1149409 -1149413 -1149427 -1149457 -1149469 -1149487 -1149493 -1149503 -1149509 -1149521 -1149527 -1149539 -1149559 -1149569 -1149581 -1149587 -1149593 -1149601 -1149607 -1149619 -1149637 -1149641 -1149661 -1149679 -1149689 -1149737 -1149749 -1149769 -1149773 -1149779 -1149803 -1149817 -1149857 -1149859 -1149881 -1149887 -1149901 -1149913 -1149917 -1149919 -1149943 -1149971 -1149979 -1149983 -1149989 -1149991 -1150027 -1150031 -1150057 -1150063 -1150073 -1150081 -1150103 -1150117 -1150139 -1150141 -1150151 -1150159 -1150183 -1150187 -1150199 -1150211 -1150213 -1150217 -1150229 -1150243 -1150249 -1150301 -1150309 -1150349 -1150351 -1150363 -1150397 -1150403 -1150411 -1150417 -1150421 -1150423 -1150447 -1150489 -1150511 -1150519 -1150531 -1150537 -1150547 -1150561 -1150579 -1150603 -1150609 -1150631 -1150649 -1150651 -1150657 -1150661 -1150673 -1150687 -1150703 -1150717 -1150729 -1150733 -1150739 -1150741 -1150757 -1150763 -1150769 -1150777 -1150783 -1150823 -1150837 -1150847 -1150861 -1150867 -1150871 -1150873 -1150879 -1150909 -1150921 -1150927 -1150939 -1150949 -1150957 -1150973 -1150987 -1151021 -1151041 -1151047 -1151057 -1151063 -1151069 -1151083 -1151089 -1151113 -1151141 -1151147 -1151159 -1151167 -1151177 -1151179 -1151203 -1151209 -1151221 -1151233 -1151237 -1151243 -1151251 -1151287 -1151303 -1151317 -1151327 -1151333 -1151363 -1151369 -1151383 -1151389 -1151399 -1151401 -1151413 -1151417 -1151431 -1151441 -1151443 -1151471 -1151473 -1151483 -1151519 -1151537 -1151569 -1151581 -1151593 -1151599 -1151603 -1151611 -1151629 -1151639 -1151651 -1151653 -1151659 -1151671 -1151687 -1151701 -1151713 -1151729 -1151737 -1151747 -1151753 -1151779 -1151807 -1151861 -1151873 -1151879 -1151881 -1151911 -1151933 -1151963 -1151981 -1151987 -1151993 -1151999 -1152023 -1152029 -1152037 -1152071 -1152077 -1152079 -1152091 -1152113 -1152119 -1152121 -1152149 -1152157 -1152161 -1152163 -1152181 -1152187 -1152227 -1152233 -1152287 -1152313 -1152317 -1152337 -1152343 -1152367 -1152383 -1152391 -1152397 -1152419 -1152421 -1152493 -1152509 -1152517 -1152523 -1152527 -1152589 -1152623 -1152629 -1152631 -1152637 -1152643 -1152649 -1152653 -1152667 -1152677 -1152707 -1152733 -1152751 -1152757 -1152761 -1152763 -1152773 -1152791 -1152793 -1152799 -1152841 -1152857 -1152881 -1152887 -1152913 -1152917 -1152937 -1152941 -1152979 -1152989 -1152997 -1153001 -1153007 -1153021 -1153027 -1153049 -1153057 -1153063 -1153073 -1153099 -1153109 -1153123 -1153147 -1153153 -1153157 -1153171 -1153177 -1153183 -1153199 -1153211 -1153219 -1153223 -1153237 -1153241 -1153247 -1153249 -1153261 -1153267 -1153277 -1153309 -1153337 -1153343 -1153349 -1153367 -1153393 -1153421 -1153429 -1153441 -1153457 -1153459 -1153463 -1153483 -1153487 -1153511 -1153517 -1153531 -1153553 -1153573 -1153577 -1153589 -1153597 -1153609 -1153613 -1153639 -1153643 -1153681 -1153687 -1153721 -1153729 -1153751 -1153753 -1153759 -1153769 -1153777 -1153799 -1153811 -1153849 -1153853 -1153871 -1153891 -1153921 -1153967 -1153973 -1154017 -1154029 -1154033 -1154039 -1154047 -1154051 -1154119 -1154123 -1154129 -1154159 -1154173 -1154177 -1154183 -1154207 -1154221 -1154227 -1154233 -1154239 -1154243 -1154267 -1154291 -1154297 -1154299 -1154311 -1154323 -1154327 -1154339 -1154353 -1154359 -1154369 -1154401 -1154411 -1154431 -1154449 -1154467 -1154473 -1154509 -1154513 -1154537 -1154539 -1154551 -1154561 -1154563 -1154567 -1154579 -1154581 -1154603 -1154633 -1154639 -1154651 -1154653 -1154707 -1154723 -1154737 -1154753 -1154771 -1154789 -1154819 -1154821 -1154849 -1154863 -1154887 -1154893 -1154897 -1154911 -1154927 -1154947 -1154969 -1154971 -1154987 -1155001 -1155017 -1155019 -1155053 -1155061 -1155071 -1155097 -1155101 -1155107 -1155127 -1155149 -1155151 -1155169 -1155179 -1155211 -1155223 -1155233 -1155239 -1155247 -1155263 -1155293 -1155311 -1155317 -1155373 -1155377 -1155379 -1155403 -1155419 -1155431 -1155437 -1155449 -1155457 -1155461 -1155499 -1155527 -1155529 -1155569 -1155577 -1155601 -1155607 -1155611 -1155613 -1155617 -1155619 -1155629 -1155631 -1155653 -1155659 -1155689 -1155697 -1155701 -1155703 -1155709 -1155733 -1155821 -1155823 -1155829 -1155841 -1155851 -1155859 -1155863 -1155899 -1155901 -1155907 -1155919 -1155923 -1155929 -1155937 -1155943 -1155953 -1155961 -1155967 -1155971 -1155977 -1155997 -1156009 -1156013 -1156019 -1156031 -1156033 -1156037 -1156039 -1156073 -1156079 -1156087 -1156097 -1156109 -1156121 -1156151 -1156157 -1156171 -1156217 -1156229 -1156231 -1156249 -1156261 -1156271 -1156291 -1156297 -1156303 -1156307 -1156327 -1156333 -1156343 -1156367 -1156369 -1156387 -1156403 -1156423 -1156427 -1156429 -1156451 -1156453 -1156457 -1156483 -1156501 -1156523 -1156537 -1156541 -1156553 -1156567 -1156591 -1156613 -1156627 -1156633 -1156637 -1156643 -1156681 -1156699 -1156709 -1156711 -1156721 -1156741 -1156747 -1156751 -1156769 -1156783 -1156801 -1156807 -1156819 -1156823 -1156847 -1156849 -1156873 -1156907 -1156927 -1156949 -1156963 -1156997 -1157011 -1157017 -1157033 -1157053 -1157059 -1157063 -1157069 -1157077 -1157099 -1157111 -1157131 -1157159 -1157171 -1157179 -1157183 -1157201 -1157203 -1157209 -1157213 -1157227 -1157237 -1157243 -1157251 -1157257 -1157263 -1157279 -1157293 -1157327 -1157333 -1157339 -1157341 -1157357 -1157363 -1157369 -1157381 -1157393 -1157413 -1157437 -1157449 -1157489 -1157491 -1157503 -1157531 -1157539 -1157557 -1157579 -1157591 -1157609 -1157621 -1157627 -1157641 -1157669 -1157671 -1157699 -1157701 -1157711 -1157713 -1157729 -1157747 -1157749 -1157759 -1157771 -1157773 -1157791 -1157831 -1157833 -1157837 -1157839 -1157851 -1157869 -1157873 -1157899 -1157929 -1157953 -1157969 -1157977 -1157987 -1158007 -1158011 -1158037 -1158071 -1158077 -1158089 -1158121 -1158133 -1158139 -1158161 -1158187 -1158197 -1158203 -1158217 -1158247 -1158251 -1158263 -1158271 -1158293 -1158301 -1158307 -1158317 -1158323 -1158341 -1158361 -1158383 -1158389 -1158401 -1158407 -1158419 -1158427 -1158457 -1158461 -1158467 -1158473 -1158481 -1158491 -1158523 -1158529 -1158539 -1158541 -1158551 -1158569 -1158587 -1158593 -1158607 -1158611 -1158613 -1158617 -1158629 -1158643 -1158653 -1158673 -1158679 -1158683 -1158713 -1158719 -1158743 -1158757 -1158761 -1158769 -1158799 -1158821 -1158823 -1158827 -1158841 -1158847 -1158863 -1158881 -1158887 -1158923 -1158953 -1158961 -1158977 -1158991 -1159001 -1159007 -1159027 -1159031 -1159049 -1159063 -1159073 -1159079 -1159087 -1159091 -1159127 -1159139 -1159153 -1159187 -1159189 -1159199 -1159201 -1159229 -1159231 -1159241 -1159243 -1159259 -1159271 -1159283 -1159303 -1159337 -1159339 -1159381 -1159393 -1159397 -1159421 -1159423 -1159429 -1159447 -1159463 -1159489 -1159517 -1159523 -1159531 -1159541 -1159577 -1159583 -1159597 -1159601 -1159633 -1159649 -1159661 -1159663 -1159709 -1159721 -1159777 -1159787 -1159789 -1159811 -1159813 -1159843 -1159853 -1159861 -1159877 -1159889 -1159901 -1159909 -1159919 -1159967 -1159973 -1159981 -1159993 -1159997 -1160009 -1160039 -1160041 -1160057 -1160077 -1160111 -1160129 -1160141 -1160147 -1160161 -1160167 -1160179 -1160207 -1160213 -1160219 -1160221 -1160227 -1160251 -1160279 -1160287 -1160297 -1160303 -1160309 -1160317 -1160351 -1160359 -1160363 -1160371 -1160407 -1160413 -1160429 -1160443 -1160447 -1160449 -1160459 -1160473 -1160479 -1160491 -1160503 -1160513 -1160519 -1160543 -1160567 -1160569 -1160581 -1160597 -1160611 -1160639 -1160659 -1160681 -1160689 -1160713 -1160717 -1160749 -1160771 -1160807 -1160813 -1160837 -1160839 -1160867 -1160893 -1160903 -1160911 -1160927 -1160941 -1160953 -1160977 -1160983 -1160987 -1160989 -1161001 -1161007 -1161011 -1161031 -1161037 -1161047 -1161059 -1161077 -1161091 -1161101 -1161107 -1161113 -1161137 -1161143 -1161163 -1161169 -1161203 -1161217 -1161227 -1161233 -1161239 -1161241 -1161263 -1161269 -1161289 -1161313 -1161317 -1161331 -1161343 -1161371 -1161397 -1161401 -1161403 -1161437 -1161439 -1161443 -1161449 -1161463 -1161481 -1161487 -1161493 -1161497 -1161499 -1161509 -1161521 -1161529 -1161547 -1161551 -1161553 -1161581 -1161599 -1161617 -1161619 -1161637 -1161647 -1161659 -1161683 -1161691 -1161703 -1161749 -1161757 -1161761 -1161767 -1161781 -1161791 -1161829 -1161833 -1161841 -1161851 -1161857 -1161871 -1161877 -1161883 -1161893 -1161929 -1161931 -1161947 -1161949 -1161991 -1161997 -1162009 -1162037 -1162043 -1162061 -1162067 -1162079 -1162081 -1162093 -1162099 -1162129 -1162193 -1162219 -1162223 -1162229 -1162243 -1162253 -1162261 -1162277 -1162279 -1162297 -1162303 -1162321 -1162339 -1162361 -1162367 -1162373 -1162417 -1162423 -1162453 -1162463 -1162471 -1162481 -1162493 -1162501 -1162507 -1162529 -1162537 -1162541 -1162543 -1162547 -1162559 -1162571 -1162573 -1162583 -1162589 -1162597 -1162619 -1162621 -1162631 -1162649 -1162663 -1162669 -1162687 -1162691 -1162709 -1162727 -1162729 -1162741 -1162751 -1162753 -1162771 -1162789 -1162793 -1162807 -1162853 -1162859 -1162867 -1162877 -1162879 -1162897 -1162901 -1162907 -1162927 -1162937 -1162943 -1162951 -1162957 -1162961 -1162969 -1162981 -1162991 -1163003 -1163011 -1163017 -1163033 -1163039 -1163069 -1163077 -1163081 -1163083 -1163093 -1163111 -1163119 -1163131 -1163137 -1163143 -1163147 -1163159 -1163167 -1163177 -1163189 -1163207 -1163221 -1163231 -1163233 -1163251 -1163257 -1163263 -1163273 -1163311 -1163329 -1163333 -1163339 -1163353 -1163417 -1163423 -1163431 -1163441 -1163467 -1163473 -1163479 -1163483 -1163507 -1163521 -1163543 -1163551 -1163557 -1163581 -1163587 -1163609 -1163611 -1163627 -1163629 -1163641 -1163651 -1163653 -1163663 -1163671 -1163689 -1163699 -1163711 -1163713 -1163717 -1163719 -1163737 -1163753 -1163759 -1163783 -1163791 -1163821 -1163831 -1163843 -1163849 -1163873 -1163879 -1163891 -1163923 -1163947 -1163969 -1163971 -1163977 -1163989 -1163993 -1164001 -1164029 -1164043 -1164067 -1164071 -1164077 -1164091 -1164101 -1164173 -1164179 -1164181 -1164193 -1164199 -1164203 -1164217 -1164221 -1164253 -1164287 -1164323 -1164343 -1164367 -1164409 -1164413 -1164419 -1164431 -1164433 -1164439 -1164461 -1164479 -1164497 -1164503 -1164511 -1164521 -1164533 -1164557 -1164571 -1164587 -1164589 -1164593 -1164599 -1164607 -1164617 -1164623 -1164629 -1164641 -1164659 -1164671 -1164689 -1164731 -1164749 -1164791 -1164799 -1164803 -1164811 -1164817 -1164829 -1164841 -1164853 -1164859 -1164869 -1164899 -1164937 -1164941 -1164953 -1164967 -1164979 -1164991 -1164997 -1165001 -1165037 -1165049 -1165051 -1165057 -1165069 -1165079 -1165081 -1165103 -1165121 -1165127 -1165139 -1165147 -1165183 -1165187 -1165189 -1165193 -1165201 -1165207 -1165211 -1165217 -1165223 -1165273 -1165279 -1165301 -1165303 -1165349 -1165357 -1165361 -1165363 -1165379 -1165397 -1165399 -1165421 -1165447 -1165453 -1165471 -1165511 -1165529 -1165531 -1165579 -1165583 -1165643 -1165667 -1165691 -1165711 -1165721 -1165727 -1165729 -1165739 -1165751 -1165777 -1165789 -1165799 -1165819 -1165823 -1165831 -1165837 -1165849 -1165861 -1165873 -1165889 -1165903 -1165909 -1165919 -1165921 -1165933 -1165937 -1165943 -1165949 -1165951 -1165991 -1165993 -1166021 -1166027 -1166041 -1166057 -1166083 -1166089 -1166093 -1166101 -1166107 -1166131 -1166141 -1166147 -1166153 -1166213 -1166219 -1166227 -1166237 -1166287 -1166311 -1166323 -1166329 -1166359 -1166383 -1166393 -1166401 -1166411 -1166413 -1166441 -1166453 -1166479 -1166483 -1166497 -1166507 -1166527 -1166531 -1166533 -1166549 -1166563 -1166567 -1166569 -1166579 -1166597 -1166603 -1166609 -1166617 -1166639 -1166663 -1166677 -1166687 -1166713 -1166723 -1166729 -1166741 -1166773 -1166779 -1166801 -1166807 -1166827 -1166833 -1166839 -1166849 -1166857 -1166861 -1166903 -1166927 -1166929 -1166947 -1166953 -1166969 -1166987 -1167011 -1167013 -1167053 -1167059 -1167077 -1167083 -1167139 -1167143 -1167157 -1167167 -1167193 -1167209 -1167211 -1167217 -1167233 -1167241 -1167251 -1167277 -1167289 -1167293 -1167307 -1167317 -1167329 -1167347 -1167349 -1167359 -1167391 -1167409 -1167421 -1167443 -1167449 -1167469 -1167473 -1167539 -1167547 -1167559 -1167571 -1167581 -1167587 -1167599 -1167613 -1167623 -1167637 -1167653 -1167659 -1167667 -1167689 -1167697 -1167701 -1167703 -1167707 -1167709 -1167731 -1167763 -1167773 -1167791 -1167799 -1167811 -1167821 -1167823 -1167833 -1167839 -1167841 -1167847 -1167853 -1167869 -1167889 -1167899 -1167913 -1167919 -1167937 -1167953 -1167973 -1168001 -1168007 -1168031 -1168039 -1168043 -1168093 -1168133 -1168151 -1168169 -1168183 -1168187 -1168231 -1168241 -1168243 -1168247 -1168249 -1168261 -1168301 -1168319 -1168327 -1168337 -1168339 -1168351 -1168357 -1168361 -1168397 -1168399 -1168403 -1168411 -1168451 -1168463 -1168477 -1168487 -1168493 -1168501 -1168523 -1168537 -1168553 -1168619 -1168621 -1168627 -1168637 -1168639 -1168693 -1168711 -1168721 -1168751 -1168757 -1168763 -1168771 -1168789 -1168799 -1168819 -1168829 -1168831 -1168841 -1168847 -1168859 -1168877 -1168879 -1168897 -1168919 -1168927 -1168931 -1168933 -1168957 -1168969 -1168987 -1168997 -1169009 -1169011 -1169017 -1169023 -1169027 -1169029 -1169059 -1169081 -1169131 -1169137 -1169149 -1169171 -1169177 -1169183 -1169191 -1169249 -1169257 -1169261 -1169269 -1169281 -1169293 -1169323 -1169327 -1169341 -1169347 -1169353 -1169369 -1169381 -1169383 -1169401 -1169411 -1169417 -1169419 -1169449 -1169453 -1169473 -1169477 -1169491 -1169513 -1169521 -1169563 -1169587 -1169591 -1169593 -1169603 -1169627 -1169633 -1169647 -1169669 -1169677 -1169683 -1169687 -1169713 -1169741 -1169747 -1169759 -1169761 -1169767 -1169789 -1169801 -1169809 -1169827 -1169873 -1169879 -1169899 -1169929 -1169933 -1169939 -1170007 -1170011 -1170019 -1170023 -1170031 -1170049 -1170061 -1170067 -1170089 -1170107 -1170109 -1170119 -1170131 -1170133 -1170137 -1170139 -1170167 -1170173 -1170193 -1170203 -1170209 -1170233 -1170251 -1170271 -1170277 -1170311 -1170317 -1170329 -1170349 -1170361 -1170373 -1170397 -1170437 -1170443 -1170451 -1170461 -1170487 -1170497 -1170511 -1170517 -1170523 -1170541 -1170553 -1170563 -1170581 -1170583 -1170593 -1170599 -1170607 -1170641 -1170649 -1170661 -1170667 -1170679 -1170683 -1170707 -1170709 -1170713 -1170721 -1170727 -1170751 -1170779 -1170781 -1170787 -1170803 -1170811 -1170821 -1170833 -1170853 -1170857 -1170863 -1170899 -1170941 -1170947 -1170971 -1170979 -1171031 -1171033 -1171039 -1171057 -1171061 -1171069 -1171073 -1171109 -1171111 -1171117 -1171123 -1171133 -1171189 -1171199 -1171201 -1171207 -1171231 -1171241 -1171243 -1171253 -1171259 -1171267 -1171301 -1171319 -1171343 -1171393 -1171399 -1171421 -1171427 -1171447 -1171451 -1171463 -1171477 -1171517 -1171523 -1171529 -1171549 -1171553 -1171561 -1171579 -1171591 -1171601 -1171619 -1171633 -1171637 -1171661 -1171669 -1171699 -1171721 -1171747 -1171771 -1171783 -1171789 -1171801 -1171811 -1171813 -1171823 -1171837 -1171847 -1171867 -1171921 -1171927 -1171931 -1171957 -1171967 -1171969 -1171979 -1171981 -1171991 -1171999 -1172009 -1172021 -1172023 -1172027 -1172029 -1172047 -1172063 -1172069 -1172081 -1172107 -1172111 -1172147 -1172179 -1172207 -1172233 -1172257 -1172261 -1172273 -1172279 -1172317 -1172329 -1172351 -1172377 -1172393 -1172401 -1172407 -1172411 -1172417 -1172429 -1172443 -1172447 -1172461 -1172467 -1172491 -1172497 -1172503 -1172531 -1172533 -1172537 -1172539 -1172543 -1172573 -1172579 -1172657 -1172659 -1172663 -1172671 -1172681 -1172683 -1172687 -1172713 -1172749 -1172777 -1172783 -1172797 -1172803 -1172807 -1172819 -1172833 -1172867 -1172893 -1172903 -1172921 -1172929 -1172933 -1172939 -1172953 -1172957 -1172959 -1172981 -1172993 -1173001 -1173013 -1173043 -1173059 -1173101 -1173121 -1173127 -1173157 -1173163 -1173173 -1173181 -1173191 -1173199 -1173223 -1173239 -1173259 -1173281 -1173283 -1173301 -1173343 -1173349 -1173373 -1173397 -1173401 -1173407 -1173433 -1173439 -1173463 -1173481 -1173511 -1173521 -1173539 -1173541 -1173551 -1173553 -1173581 -1173583 -1173587 -1173589 -1173593 -1173617 -1173631 -1173709 -1173743 -1173749 -1173779 -1173787 -1173803 -1173811 -1173827 -1173829 -1173841 -1173853 -1173881 -1173883 -1173917 -1173937 -1173941 -1173947 -1173959 -1173961 -1173979 -1173983 -1174021 -1174027 -1174031 -1174049 -1174073 -1174079 -1174091 -1174093 -1174099 -1174141 -1174163 -1174171 -1174193 -1174211 -1174213 -1174231 -1174237 -1174247 -1174259 -1174267 -1174273 -1174301 -1174307 -1174319 -1174331 -1174337 -1174339 -1174361 -1174387 -1174399 -1174423 -1174441 -1174451 -1174463 -1174469 -1174477 -1174487 -1174489 -1174499 -1174507 -1174519 -1174531 -1174549 -1174571 -1174583 -1174601 -1174603 -1174619 -1174627 -1174669 -1174673 -1174681 -1174687 -1174709 -1174721 -1174727 -1174739 -1174759 -1174763 -1174769 -1174781 -1174783 -1174793 -1174801 -1174829 -1174847 -1174879 -1174883 -1174891 -1174897 -1174913 -1174919 -1174949 -1174951 -1174969 -1174973 -1175003 -1175021 -1175029 -1175039 -1175071 -1175077 -1175099 -1175107 -1175123 -1175143 -1175149 -1175173 -1175191 -1175219 -1175243 -1175249 -1175257 -1175267 -1175297 -1175351 -1175353 -1175371 -1175387 -1175389 -1175407 -1175411 -1175413 -1175417 -1175437 -1175467 -1175479 -1175483 -1175497 -1175509 -1175521 -1175561 -1175569 -1175579 -1175591 -1175617 -1175623 -1175627 -1175651 -1175659 -1175677 -1175683 -1175687 -1175711 -1175717 -1175723 -1175729 -1175743 -1175767 -1175789 -1175791 -1175803 -1175807 -1175813 -1175819 -1175821 -1175833 -1175849 -1175857 -1175887 -1175899 -1175927 -1175939 -1175953 -1175959 -1175963 -1175969 -1175981 -1175989 -1176023 -1176029 -1176031 -1176041 -1176061 -1176083 -1176089 -1176113 -1176121 -1176127 -1176137 -1176163 -1176173 -1176187 -1176191 -1176221 -1176223 -1176239 -1176277 -1176293 -1176323 -1176353 -1176361 -1176367 -1176377 -1176391 -1176397 -1176403 -1176407 -1176421 -1176433 -1176449 -1176463 -1176509 -1176521 -1176529 -1176533 -1176557 -1176583 -1176589 -1176599 -1176601 -1176607 -1176631 -1176641 -1176647 -1176671 -1176673 -1176701 -1176709 -1176713 -1176737 -1176767 -1176779 -1176787 -1176793 -1176797 -1176811 -1176827 -1176869 -1176871 -1176881 -1176899 -1176911 -1176937 -1176943 -1176947 -1176949 -1176983 -1177009 -1177019 -1177027 -1177037 -1177067 -1177073 -1177087 -1177093 -1177103 -1177129 -1177147 -1177153 -1177157 -1177159 -1177171 -1177181 -1177201 -1177207 -1177219 -1177223 -1177237 -1177243 -1177247 -1177277 -1177291 -1177331 -1177387 -1177399 -1177427 -1177433 -1177447 -1177453 -1177459 -1177481 -1177489 -1177499 -1177507 -1177513 -1177529 -1177541 -1177543 -1177549 -1177571 -1177609 -1177613 -1177619 -1177621 -1177637 -1177651 -1177667 -1177681 -1177697 -1177711 -1177717 -1177723 -1177733 -1177739 -1177741 -1177751 -1177763 -1177769 -1177801 -1177843 -1177859 -1177873 -1177877 -1177901 -1177919 -1177921 -1177933 -1177949 -1177987 -1177997 -1178003 -1178017 -1178033 -1178039 -1178041 -1178059 -1178069 -1178087 -1178101 -1178113 -1178123 -1178131 -1178141 -1178159 -1178161 -1178167 -1178173 -1178189 -1178197 -1178201 -1178207 -1178213 -1178227 -1178231 -1178237 -1178239 -1178263 -1178269 -1178273 -1178297 -1178347 -1178363 -1178369 -1178371 -1178377 -1178393 -1178417 -1178447 -1178461 -1178479 -1178483 -1178521 -1178533 -1178537 -1178549 -1178557 -1178591 -1178609 -1178621 -1178623 -1178633 -1178641 -1178659 -1178669 -1178689 -1178699 -1178701 -1178707 -1178711 -1178717 -1178719 -1178743 -1178753 -1178767 -1178803 -1178809 -1178833 -1178843 -1178851 -1178887 -1178897 -1178909 -1178921 -1178927 -1178939 -1178953 -1178959 -1178963 -1178971 -1178977 -1178981 -1178993 -1179011 -1179019 -1179047 -1179109 -1179127 -1179149 -1179151 -1179173 -1179179 -1179193 -1179203 -1179223 -1179251 -1179253 -1179259 -1179263 -1179281 -1179287 -1179289 -1179293 -1179317 -1179319 -1179323 -1179329 -1179331 -1179337 -1179379 -1179383 -1179389 -1179403 -1179413 -1179419 -1179421 -1179427 -1179467 -1179491 -1179499 -1179527 -1179547 -1179551 -1179553 -1179569 -1179571 -1179583 -1179589 -1179599 -1179637 -1179641 -1179649 -1179677 -1179733 -1179751 -1179757 -1179779 -1179793 -1179797 -1179839 -1179847 -1179853 -1179859 -1179863 -1179869 -1179883 -1179901 -1179907 -1179929 -1179947 -1179961 -1179973 -1179977 -1179979 -1179989 -1179991 -1180009 -1180013 -1180019 -1180027 -1180031 -1180043 -1180057 -1180073 -1180087 -1180093 -1180099 -1180111 -1180117 -1180121 -1180133 -1180141 -1180159 -1180171 -1180219 -1180237 -1180241 -1180243 -1180247 -1180253 -1180279 -1180303 -1180313 -1180351 -1180369 -1180373 -1180381 -1180391 -1180397 -1180409 -1180423 -1180427 -1180447 -1180477 -1180493 -1180507 -1180519 -1180537 -1180547 -1180549 -1180577 -1180591 -1180631 -1180637 -1180643 -1180657 -1180661 -1180691 -1180693 -1180709 -1180721 -1180723 -1180727 -1180733 -1180757 -1180771 -1180799 -1180807 -1180811 -1180819 -1180847 -1180849 -1180853 -1180859 -1180873 -1180877 -1180891 -1180897 -1180901 -1180903 -1180913 -1180931 -1180937 -1180951 -1180957 -1180961 -1180979 -1180987 -1180997 -1181017 -1181023 -1181039 -1181051 -1181053 -1181057 -1181093 -1181099 -1181137 -1181149 -1181153 -1181171 -1181183 -1181197 -1181203 -1181209 -1181237 -1181263 -1181267 -1181269 -1181281 -1181293 -1181309 -1181311 -1181321 -1181329 -1181407 -1181413 -1181437 -1181443 -1181461 -1181471 -1181473 -1181501 -1181507 -1181519 -1181527 -1181549 -1181561 -1181563 -1181573 -1181581 -1181611 -1181617 -1181633 -1181647 -1181681 -1181699 -1181701 -1181723 -1181729 -1181731 -1181759 -1181767 -1181771 -1181773 -1181777 -1181839 -1181879 -1181881 -1181893 -1181897 -1181911 -1181923 -1181927 -1181963 -1181969 -1181981 -1181987 -1182007 -1182019 -1182023 -1182031 -1182043 -1182073 -1182121 -1182133 -1182143 -1182157 -1182211 -1182253 -1182277 -1182281 -1182283 -1182287 -1182289 -1182331 -1182341 -1182343 -1182347 -1182353 -1182383 -1182397 -1182403 -1182413 -1182421 -1182431 -1182437 -1182439 -1182449 -1182451 -1182463 -1182479 -1182487 -1182491 -1182509 -1182521 -1182539 -1182547 -1182581 -1182593 -1182611 -1182659 -1182677 -1182679 -1182689 -1182691 -1182697 -1182703 -1182737 -1182739 -1182757 -1182763 -1182767 -1182781 -1182787 -1182791 -1182817 -1182847 -1182869 -1182889 -1182893 -1182901 -1182917 -1182919 -1182947 -1182953 -1182967 -1182989 -1183003 -1183027 -1183031 -1183033 -1183057 -1183079 -1183093 -1183103 -1183121 -1183123 -1183141 -1183151 -1183157 -1183159 -1183163 -1183181 -1183199 -1183201 -1183211 -1183213 -1183241 -1183261 -1183267 -1183271 -1183277 -1183279 -1183333 -1183337 -1183349 -1183381 -1183393 -1183397 -1183409 -1183411 -1183423 -1183447 -1183451 -1183471 -1183477 -1183531 -1183537 -1183541 -1183561 -1183571 -1183579 -1183597 -1183607 -1183613 -1183687 -1183697 -1183709 -1183723 -1183729 -1183733 -1183739 -1183753 -1183759 -1183769 -1183771 -1183781 -1183799 -1183811 -1183813 -1183837 -1183843 -1183877 -1183913 -1183933 -1183939 -1183943 -1183951 -1183961 -1183969 -1183981 -1183993 -1183997 -1184003 -1184011 -1184047 -1184059 -1184069 -1184077 -1184081 -1184083 -1184093 -1184119 -1184123 -1184129 -1184143 -1184149 -1184171 -1184173 -1184207 -1184219 -1184243 -1184269 -1184291 -1184299 -1184303 -1184317 -1184329 -1184347 -1184357 -1184363 -1184369 -1184377 -1184399 -1184411 -1184413 -1184423 -1184429 -1184453 -1184459 -1184461 -1184471 -1184473 -1184483 -1184489 -1184507 -1184527 -1184537 -1184539 -1184549 -1184551 -1184587 -1184609 -1184653 -1184663 -1184671 -1184683 -1184731 -1184741 -1184749 -1184759 -1184767 -1184791 -1184797 -1184837 -1184839 -1184867 -1184881 -1184893 -1184903 -1184923 -1184927 -1184933 -1184947 -1184957 -1184959 -1184987 -1184993 -1185013 -1185017 -1185071 -1185077 -1185089 -1185103 -1185109 -1185113 -1185127 -1185131 -1185179 -1185181 -1185241 -1185281 -1185287 -1185299 -1185307 -1185313 -1185319 -1185329 -1185337 -1185343 -1185361 -1185367 -1185377 -1185383 -1185389 -1185403 -1185439 -1185463 -1185469 -1185493 -1185497 -1185511 -1185523 -1185551 -1185559 -1185577 -1185589 -1185601 -1185617 -1185623 -1185637 -1185643 -1185647 -1185659 -1185661 -1185671 -1185677 -1185683 -1185689 -1185697 -1185703 -1185707 -1185721 -1185749 -1185787 -1185791 -1185797 -1185817 -1185823 -1185827 -1185851 -1185859 -1185871 -1185883 -1185889 -1185893 -1185907 -1185929 -1185931 -1185953 -1185979 -1185997 -1186001 -1186033 -1186049 -1186051 -1186057 -1186063 -1186067 -1186079 -1186099 -1186111 -1186117 -1186121 -1186127 -1186147 -1186169 -1186181 -1186217 -1186231 -1186249 -1186259 -1186291 -1186321 -1186337 -1186349 -1186351 -1186373 -1186397 -1186403 -1186411 -1186439 -1186441 -1186489 -1186517 -1186519 -1186541 -1186573 -1186589 -1186597 -1186621 -1186631 -1186657 -1186673 -1186693 -1186697 -1186699 -1186739 -1186741 -1186751 -1186769 -1186789 -1186807 -1186811 -1186813 -1186837 -1186841 -1186847 -1186879 -1186931 -1186937 -1186963 -1186973 -1186981 -1187003 -1187009 -1187023 -1187047 -1187051 -1187089 -1187107 -1187111 -1187117 -1187141 -1187159 -1187167 -1187189 -1187201 -1187227 -1187233 -1187239 -1187261 -1187279 -1187287 -1187309 -1187311 -1187317 -1187321 -1187339 -1187341 -1187353 -1187357 -1187363 -1187369 -1187383 -1187387 -1187411 -1187413 -1187419 -1187429 -1187453 -1187471 -1187479 -1187489 -1187507 -1187509 -1187539 -1187551 -1187561 -1187567 -1187587 -1187623 -1187629 -1187639 -1187657 -1187687 -1187689 -1187699 -1187701 -1187707 -1187717 -1187723 -1187741 -1187749 -1187761 -1187801 -1187803 -1187819 -1187821 -1187833 -1187839 -1187863 -1187867 -1187873 -1187887 -1187897 -1187911 -1187933 -1187939 -1187941 -1187947 -1187981 -1187993 -1187999 -1188001 -1188007 -1188017 -1188029 -1188037 -1188041 -1188049 -1188059 -1188071 -1188073 -1188149 -1188151 -1188167 -1188169 -1188179 -1188197 -1188223 -1188227 -1188233 -1188247 -1188259 -1188263 -1188269 -1188277 -1188287 -1188289 -1188293 -1188307 -1188353 -1188359 -1188361 -1188377 -1188389 -1188409 -1188413 -1188457 -1188491 -1188511 -1188527 -1188529 -1188553 -1188557 -1188559 -1188581 -1188587 -1188601 -1188613 -1188619 -1188637 -1188653 -1188661 -1188667 -1188679 -1188689 -1188721 -1188727 -1188731 -1188763 -1188769 -1188787 -1188839 -1188841 -1188851 -1188857 -1188899 -1188917 -1188931 -1188937 -1188947 -1188973 -1188977 -1188991 -1189003 -1189007 -1189021 -1189033 -1189057 -1189061 -1189063 -1189093 -1189109 -1189121 -1189127 -1189151 -1189159 -1189163 -1189171 -1189189 -1189193 -1189213 -1189219 -1189231 -1189271 -1189277 -1189301 -1189313 -1189327 -1189333 -1189339 -1189361 -1189387 -1189403 -1189417 -1189453 -1189469 -1189471 -1189481 -1189483 -1189553 -1189567 -1189577 -1189579 -1189603 -1189607 -1189613 -1189621 -1189627 -1189631 -1189633 -1189637 -1189649 -1189651 -1189673 -1189703 -1189709 -1189717 -1189751 -1189757 -1189759 -1189763 -1189789 -1189801 -1189807 -1189823 -1189831 -1189843 -1189871 -1189879 -1189891 -1189897 -1189901 -1189907 -1189919 -1189933 -1189967 -1189999 -1190011 -1190023 -1190029 -1190041 -1190047 -1190069 -1190071 -1190081 -1190143 -1190149 -1190159 -1190177 -1190201 -1190237 -1190249 -1190261 -1190263 -1190279 -1190291 -1190311 -1190347 -1190359 -1190381 -1190417 -1190429 -1190447 -1190467 -1190473 -1190477 -1190489 -1190491 -1190507 -1190509 -1190513 -1190533 -1190573 -1190587 -1190591 -1190611 -1190633 -1190639 -1190647 -1190671 -1190699 -1190701 -1190719 -1190723 -1190737 -1190743 -1190753 -1190773 -1190789 -1190807 -1190809 -1190821 -1190831 -1190837 -1190851 -1190873 -1190897 -1190899 -1190911 -1190923 -1190929 -1190947 -1190951 -1190953 -1190983 -1191011 -1191013 -1191019 -1191031 -1191061 -1191077 -1191079 -1191089 -1191097 -1191103 -1191107 -1191109 -1191119 -1191131 -1191149 -1191163 -1191187 -1191191 -1191199 -1191209 -1191221 -1191247 -1191277 -1191283 -1191293 -1191301 -1191313 -1191341 -1191347 -1191353 -1191373 -1191409 -1191431 -1191439 -1191457 -1191481 -1191499 -1191529 -1191539 -1191551 -1191559 -1191563 -1191571 -1191577 -1191601 -1191611 -1191613 -1191637 -1191643 -1191667 -1191679 -1191691 -1191703 -1191719 -1191727 -1191731 -1191739 -1191761 -1191767 -1191769 -1191781 -1191793 -1191809 -1191821 -1191833 -1191847 -1191899 -1191923 -1191937 -1191941 -1191947 -1191973 -1191979 -1191991 -1192013 -1192027 -1192039 -1192069 -1192073 -1192097 -1192099 -1192109 -1192127 -1192141 -1192151 -1192153 -1192171 -1192181 -1192183 -1192187 -1192199 -1192201 -1192207 -1192211 -1192241 -1192253 -1192259 -1192267 -1192271 -1192327 -1192337 -1192339 -1192349 -1192357 -1192369 -1192391 -1192409 -1192417 -1192423 -1192427 -1192453 -1192469 -1192483 -1192517 -1192549 -1192559 -1192561 -1192571 -1192579 -1192589 -1192603 -1192651 -1192673 -1192679 -1192699 -1192717 -1192721 -1192753 -1192781 -1192811 -1192817 -1192823 -1192831 -1192837 -1192847 -1192853 -1192879 -1192883 -1192889 -1192897 -1192903 -1192909 -1192927 -1192937 -1192951 -1192967 -1192969 -1193011 -1193021 -1193041 -1193047 -1193057 -1193081 -1193107 -1193119 -1193123 -1193131 -1193149 -1193161 -1193173 -1193183 -1193209 -1193233 -1193237 -1193239 -1193243 -1193261 -1193267 -1193299 -1193303 -1193329 -1193351 -1193363 -1193369 -1193399 -1193429 -1193431 -1193443 -1193459 -1193473 -1193483 -1193497 -1193501 -1193503 -1193513 -1193537 -1193557 -1193567 -1193573 -1193603 -1193609 -1193617 -1193653 -1193663 -1193683 -1193693 -1193701 -1193707 -1193711 -1193729 -1193737 -1193741 -1193743 -1193761 -1193767 -1193771 -1193783 -1193821 -1193833 -1193837 -1193839 -1193849 -1193867 -1193869 -1193887 -1193909 -1193911 -1193939 -1193947 -1193963 -1193971 -1193989 -1193993 -1194019 -1194023 -1194031 -1194041 -1194047 -1194059 -1194103 -1194157 -1194161 -1194163 -1194203 -1194209 -1194211 -1194241 -1194251 -1194253 -1194269 -1194293 -1194311 -1194329 -1194341 -1194343 -1194373 -1194379 -1194383 -1194407 -1194421 -1194439 -1194443 -1194449 -1194463 -1194493 -1194517 -1194521 -1194541 -1194547 -1194553 -1194581 -1194593 -1194601 -1194631 -1194659 -1194667 -1194671 -1194679 -1194707 -1194727 -1194731 -1194733 -1194751 -1194757 -1194763 -1194769 -1194797 -1194799 -1194803 -1194821 -1194847 -1194857 -1194877 -1194883 -1194889 -1194899 -1194901 -1194917 -1194923 -1194959 -1194961 -1194971 -1194979 -1194997 -1195021 -1195031 -1195037 -1195039 -1195067 -1195091 -1195121 -1195123 -1195127 -1195141 -1195153 -1195169 -1195171 -1195189 -1195193 -1195217 -1195223 -1195231 -1195237 -1195247 -1195277 -1195291 -1195361 -1195387 -1195421 -1195429 -1195459 -1195463 -1195477 -1195483 -1195489 -1195501 -1195543 -1195547 -1195549 -1195561 -1195567 -1195573 -1195589 -1195669 -1195673 -1195679 -1195681 -1195693 -1195703 -1195709 -1195721 -1195723 -1195741 -1195751 -1195759 -1195771 -1195801 -1195807 -1195811 -1195837 -1195849 -1195891 -1195897 -1195907 -1195919 -1195927 -1195937 -1195979 -1195991 -1196003 -1196029 -1196033 -1196059 -1196077 -1196087 -1196089 -1196119 -1196123 -1196141 -1196177 -1196191 -1196201 -1196219 -1196227 -1196231 -1196267 -1196269 -1196281 -1196287 -1196309 -1196323 -1196329 -1196347 -1196357 -1196359 -1196399 -1196401 -1196413 -1196431 -1196471 -1196473 -1196491 -1196501 -1196509 -1196513 -1196519 -1196521 -1196537 -1196539 -1196593 -1196597 -1196603 -1196609 -1196633 -1196653 -1196683 -1196707 -1196717 -1196719 -1196729 -1196731 -1196773 -1196809 -1196813 -1196837 -1196843 -1196857 -1196861 -1196863 -1196869 -1196873 -1196891 -1196911 -1196927 -1196939 -1196959 -1196999 -1197011 -1197013 -1197017 -1197029 -1197037 -1197041 -1197059 -1197067 -1197073 -1197103 -1197107 -1197113 -1197121 -1197167 -1197181 -1197187 -1197193 -1197197 -1197199 -1197211 -1197221 -1197239 -1197257 -1197263 -1197269 -1197277 -1197281 -1197289 -1197307 -1197337 -1197347 -1197349 -1197353 -1197359 -1197367 -1197389 -1197407 -1197409 -1197433 -1197451 -1197467 -1197473 -1197479 -1197509 -1197527 -1197571 -1197577 -1197601 -1197617 -1197619 -1197631 -1197649 -1197697 -1197709 -1197739 -1197743 -1197751 -1197767 -1197799 -1197821 -1197827 -1197829 -1197881 -1197901 -1197907 -1197923 -1197929 -1197941 -1197947 -1197953 -1197971 -1197997 -1198013 -1198033 -1198037 -1198049 -1198051 -1198063 -1198069 -1198073 -1198081 -1198103 -1198123 -1198133 -1198151 -1198157 -1198187 -1198189 -1198201 -1198217 -1198229 -1198247 -1198259 -1198261 -1198289 -1198291 -1198297 -1198303 -1198321 -1198343 -1198361 -1198363 -1198397 -1198399 -1198403 -1198411 -1198427 -1198433 -1198447 -1198451 -1198469 -1198481 -1198511 -1198513 -1198523 -1198537 -1198583 -1198607 -1198609 -1198621 -1198643 -1198651 -1198661 -1198669 -1198679 -1198699 -1198727 -1198751 -1198793 -1198811 -1198819 -1198849 -1198853 -1198861 -1198867 -1198877 -1198903 -1198927 -1198949 -1198973 -1198979 -1198991 -1198997 -1198999 -1199039 -1199047 -1199069 -1199083 -1199087 -1199089 -1199117 -1199123 -1199131 -1199137 -1199167 -1199183 -1199189 -1199203 -1199257 -1199309 -1199329 -1199351 -1199357 -1199369 -1199371 -1199377 -1199389 -1199417 -1199423 -1199437 -1199441 -1199447 -1199459 -1199461 -1199467 -1199477 -1199491 -1199507 -1199509 -1199521 -1199551 -1199557 -1199573 -1199587 -1199591 -1199593 -1199617 -1199621 -1199623 -1199629 -1199659 -1199663 -1199677 -1199683 -1199689 -1199699 -1199711 -1199719 -1199767 -1199777 -1199789 -1199801 -1199813 -1199819 -1199833 -1199839 -1199851 -1199857 -1199879 -1199893 -1199899 -1199909 -1199923 -1199929 -1199953 -1199969 -1199993 -1199999 -1200007 -1200061 -1200077 -1200083 -1200109 -1200139 -1200161 -1200167 -1200179 -1200187 -1200191 -1200233 -1200253 -1200307 -1200313 -1200323 -1200341 -1200349 -1200359 -1200361 -1200371 -1200373 -1200377 -1200383 -1200389 -1200403 -1200443 -1200449 -1200461 -1200467 -1200491 -1200499 -1200509 -1200527 -1200581 -1200583 -1200607 -1200611 -1200637 -1200643 -1200673 -1200679 -1200691 -1200697 -1200701 -1200739 -1200751 -1200779 -1200799 -1200809 -1200811 -1200833 -1200839 -1200869 -1200883 -1200887 -1200889 -1200917 -1200929 -1200937 -1200943 -1200949 -1200959 -1200989 -1201001 -1201003 -1201019 -1201021 -1201027 -1201043 -1201049 -1201061 -1201073 -1201087 -1201097 -1201103 -1201111 -1201117 -1201141 -1201153 -1201163 -1201171 -1201183 -1201201 -1201217 -1201229 -1201241 -1201247 -1201261 -1201283 -1201307 -1201309 -1201327 -1201337 -1201381 -1201439 -1201469 -1201481 -1201483 -1201489 -1201493 -1201513 -1201523 -1201531 -1201553 -1201559 -1201567 -1201583 -1201601 -1201633 -1201637 -1201643 -1201687 -1201691 -1201699 -1201703 -1201709 -1201729 -1201787 -1201793 -1201813 -1201829 -1201841 -1201843 -1201853 -1201873 -1201909 -1201919 -1201939 -1201961 -1201969 -1201999 -1202009 -1202017 -1202023 -1202027 -1202029 -1202041 -1202057 -1202063 -1202077 -1202081 -1202099 -1202107 -1202129 -1202147 -1202153 -1202183 -1202191 -1202219 -1202221 -1202231 -1202239 -1202251 -1202261 -1202269 -1202293 -1202303 -1202317 -1202321 -1202329 -1202347 -1202363 -1202387 -1202423 -1202429 -1202437 -1202447 -1202471 -1202473 -1202477 -1202483 -1202497 -1202501 -1202507 -1202549 -1202561 -1202569 -1202603 -1202609 -1202627 -1202629 -1202633 -1202689 -1202741 -1202743 -1202771 -1202779 -1202783 -1202791 -1202807 -1202813 -1202819 -1202827 -1202837 -1202843 -1202849 -1202857 -1202863 -1202867 -1202881 -1202939 -1202959 -1202963 -1202977 -1202987 -1203019 -1203067 -1203077 -1203101 -1203121 -1203127 -1203149 -1203151 -1203161 -1203179 -1203193 -1203211 -1203217 -1203221 -1203229 -1203233 -1203263 -1203283 -1203287 -1203329 -1203331 -1203343 -1203359 -1203361 -1203421 -1203437 -1203443 -1203457 -1203463 -1203467 -1203487 -1203493 -1203509 -1203533 -1203557 -1203571 -1203581 -1203607 -1203611 -1203619 -1203641 -1203661 -1203667 -1203689 -1203691 -1203731 -1203733 -1203739 -1203757 -1203773 -1203779 -1203791 -1203793 -1203799 -1203809 -1203817 -1203827 -1203841 -1203863 -1203887 -1203893 -1203899 -1203901 -1203913 -1203919 -1203929 -1203931 -1203941 -1203949 -1203953 -1203959 -1203971 -1204003 -1204019 -1204037 -1204097 -1204103 -1204117 -1204139 -1204141 -1204153 -1204169 -1204171 -1204183 -1204207 -1204219 -1204243 -1204271 -1204279 -1204289 -1204309 -1204337 -1204363 -1204369 -1204397 -1204409 -1204421 -1204447 -1204451 -1204453 -1204471 -1204477 -1204493 -1204507 -1204519 -1204529 -1204561 -1204583 -1204597 -1204607 -1204613 -1204633 -1204649 -1204669 -1204681 -1204699 -1204711 -1204729 -1204741 -1204781 -1204783 -1204787 -1204813 -1204823 -1204859 -1204871 -1204873 -1204883 -1204891 -1204937 -1204967 -1204969 -1204981 -1205027 -1205047 -1205081 -1205089 -1205093 -1205101 -1205117 -1205119 -1205123 -1205159 -1205173 -1205179 -1205219 -1205231 -1205251 -1205257 -1205287 -1205293 -1205339 -1205377 -1205387 -1205411 -1205437 -1205447 -1205459 -1205467 -1205471 -1205473 -1205489 -1205513 -1205527 -1205537 -1205539 -1205549 -1205557 -1205563 -1205609 -1205627 -1205629 -1205639 -1205647 -1205653 -1205663 -1205669 -1205681 -1205693 -1205707 -1205713 -1205717 -1205731 -1205749 -1205753 -1205767 -1205773 -1205779 -1205819 -1205843 -1205891 -1205899 -1205903 -1205921 -1205947 -1205951 -1205969 -1205977 -1205999 -1206013 -1206017 -1206043 -1206053 -1206059 -1206061 -1206071 -1206113 -1206131 -1206151 -1206157 -1206169 -1206173 -1206181 -1206187 -1206199 -1206209 -1206223 -1206229 -1206259 -1206263 -1206277 -1206307 -1206319 -1206323 -1206341 -1206347 -1206353 -1206377 -1206383 -1206391 -1206407 -1206433 -1206449 -1206461 -1206467 -1206479 -1206497 -1206529 -1206539 -1206553 -1206563 -1206577 -1206581 -1206587 -1206619 -1206637 -1206679 -1206683 -1206691 -1206701 -1206703 -1206713 -1206721 -1206731 -1206743 -1206749 -1206761 -1206767 -1206769 -1206773 -1206781 -1206791 -1206809 -1206827 -1206841 -1206869 -1206941 -1206973 -1206979 -1207001 -1207027 -1207033 -1207039 -1207043 -1207079 -1207093 -1207097 -1207111 -1207117 -1207121 -1207123 -1207133 -1207147 -1207159 -1207211 -1207223 -1207237 -1207249 -1207259 -1207267 -1207291 -1207307 -1207309 -1207313 -1207319 -1207331 -1207343 -1207351 -1207363 -1207379 -1207387 -1207403 -1207417 -1207429 -1207439 -1207441 -1207447 -1207489 -1207501 -1207511 -1207519 -1207529 -1207537 -1207597 -1207603 -1207627 -1207649 -1207681 -1207699 -1207721 -1207727 -1207751 -1207757 -1207769 -1207841 -1207883 -1207903 -1207909 -1207919 -1207933 -1207957 -1207961 -1207979 -1207981 -1208017 -1208021 -1208023 -1208027 -1208033 -1208057 -1208069 -1208089 -1208113 -1208117 -1208131 -1208149 -1208159 -1208177 -1208189 -1208209 -1208219 -1208237 -1208239 -1208243 -1208269 -1208279 -1208297 -1208299 -1208303 -1208341 -1208371 -1208387 -1208399 -1208407 -1208413 -1208423 -1208447 -1208461 -1208507 -1208521 -1208561 -1208569 -1208573 -1208591 -1208651 -1208657 -1208663 -1208677 -1208681 -1208689 -1208707 -1208731 -1208741 -1208777 -1208789 -1208791 -1208797 -1208813 -1208821 -1208833 -1208843 -1208849 -1208863 -1208873 -1208927 -1208939 -1208941 -1208957 -1209007 -1209017 -1209029 -1209053 -1209073 -1209079 -1209083 -1209107 -1209113 -1209121 -1209139 -1209151 -1209163 -1209181 -1209191 -1209199 -1209209 -1209223 -1209233 -1209239 -1209251 -1209269 -1209277 -1209281 -1209287 -1209311 -1209337 -1209347 -1209353 -1209367 -1209379 -1209427 -1209437 -1209457 -1209463 -1209469 -1209487 -1209491 -1209517 -1209539 -1209557 -1209563 -1209577 -1209583 -1209587 -1209617 -1209629 -1209631 -1209647 -1209671 -1209697 -1209707 -1209709 -1209739 -1209757 -1209763 -1209773 -1209779 -1209781 -1209809 -1209811 -1209821 -1209841 -1209853 -1209877 -1209883 -1209889 -1209931 -1209947 -1209959 -1209973 -1209979 -1210003 -1210019 -1210021 -1210037 -1210039 -1210049 -1210051 -1210067 -1210093 -1210103 -1210123 -1210127 -1210151 -1210163 -1210169 -1210177 -1210193 -1210207 -1210211 -1210229 -1210241 -1210259 -1210289 -1210351 -1210369 -1210379 -1210387 -1210393 -1210397 -1210399 -1210403 -1210409 -1210411 -1210427 -1210439 -1210441 -1210459 -1210477 -1210483 -1210499 -1210523 -1210541 -1210549 -1210597 -1210609 -1210613 -1210631 -1210637 -1210639 -1210711 -1210717 -1210747 -1210753 -1210777 -1210787 -1210793 -1210799 -1210801 -1210817 -1210819 -1210831 -1210843 -1210871 -1210873 -1210877 -1210879 -1210883 -1210897 -1210903 -1210921 -1210933 -1210939 -1210949 -1210967 -1210987 -1210999 -1211027 -1211039 -1211051 -1211057 -1211059 -1211081 -1211083 -1211087 -1211141 -1211167 -1211179 -1211183 -1211191 -1211207 -1211227 -1211261 -1211279 -1211281 -1211303 -1211311 -1211333 -1211339 -1211381 -1211389 -1211393 -1211407 -1211411 -1211423 -1211443 -1211477 -1211489 -1211501 -1211503 -1211531 -1211537 -1211543 -1211549 -1211563 -1211593 -1211597 -1211599 -1211603 -1211621 -1211629 -1211647 -1211653 -1211657 -1211659 -1211669 -1211677 -1211689 -1211701 -1211719 -1211723 -1211731 -1211737 -1211741 -1211761 -1211767 -1211779 -1211789 -1211797 -1211807 -1211813 -1211827 -1211843 -1211857 -1211863 -1211897 -1211911 -1211921 -1211923 -1211933 -1211983 -1211999 -1212011 -1212017 -1212023 -1212047 -1212053 -1212061 -1212103 -1212119 -1212121 -1212149 -1212173 -1212187 -1212191 -1212199 -1212221 -1212227 -1212241 -1212251 -1212259 -1212283 -1212293 -1212301 -1212319 -1212331 -1212347 -1212361 -1212373 -1212397 -1212401 -1212427 -1212433 -1212437 -1212439 -1212443 -1212473 -1212479 -1212487 -1212517 -1212521 -1212551 -1212569 -1212611 -1212613 -1212641 -1212649 -1212671 -1212677 -1212683 -1212697 -1212703 -1212709 -1212719 -1212737 -1212769 -1212773 -1212781 -1212787 -1212793 -1212811 -1212817 -1212839 -1212847 -1212851 -1212853 -1212857 -1212877 -1212889 -1212907 -1212917 -1212919 -1212923 -1212931 -1212943 -1212973 -1212989 -1213007 -1213019 -1213021 -1213027 -1213033 -1213049 -1213057 -1213063 -1213081 -1213087 -1213097 -1213109 -1213129 -1213133 -1213141 -1213151 -1213153 -1213183 -1213189 -1213213 -1213241 -1213253 -1213259 -1213271 -1213301 -1213327 -1213339 -1213357 -1213367 -1213379 -1213427 -1213439 -1213451 -1213469 -1213481 -1213483 -1213517 -1213529 -1213547 -1213561 -1213573 -1213577 -1213591 -1213601 -1213607 -1213627 -1213631 -1213633 -1213643 -1213651 -1213657 -1213661 -1213673 -1213721 -1213741 -1213747 -1213757 -1213759 -1213763 -1213781 -1213801 -1213829 -1213837 -1213841 -1213873 -1213879 -1213897 -1213907 -1213909 -1213913 -1213921 -1213931 -1213939 -1213943 -1213951 -1213981 -1214011 -1214023 -1214039 -1214047 -1214077 -1214093 -1214113 -1214117 -1214131 -1214137 -1214141 -1214159 -1214167 -1214183 -1214189 -1214197 -1214219 -1214221 -1214237 -1214261 -1214273 -1214281 -1214299 -1214333 -1214357 -1214371 -1214393 -1214401 -1214407 -1214413 -1214417 -1214431 -1214441 -1214453 -1214459 -1214471 -1214483 -1214489 -1214519 -1214533 -1214567 -1214573 -1214579 -1214593 -1214617 -1214623 -1214639 -1214641 -1214657 -1214659 -1214663 -1214669 -1214671 -1214683 -1214687 -1214711 -1214729 -1214737 -1214743 -1214749 -1214767 -1214819 -1214827 -1214849 -1214867 -1214891 -1214909 -1214923 -1214933 -1214947 -1214957 -1214959 -1214963 -1214971 -1214977 -1214981 -1215017 -1215029 -1215047 -1215079 -1215083 -1215103 -1215121 -1215133 -1215157 -1215161 -1215167 -1215173 -1215197 -1215209 -1215229 -1215239 -1215271 -1215283 -1215299 -1215301 -1215311 -1215329 -1215349 -1215359 -1215367 -1215391 -1215397 -1215407 -1215421 -1215433 -1215437 -1215439 -1215451 -1215457 -1215463 -1215497 -1215499 -1215509 -1215521 -1215553 -1215569 -1215583 -1215587 -1215623 -1215629 -1215631 -1215637 -1215647 -1215649 -1215673 -1215679 -1215703 -1215719 -1215743 -1215769 -1215779 -1215787 -1215827 -1215839 -1215847 -1215853 -1215859 -1215881 -1215899 -1215917 -1215919 -1215923 -1216009 -1216013 -1216021 -1216043 -1216067 -1216069 -1216087 -1216091 -1216109 -1216123 -1216147 -1216151 -1216177 -1216213 -1216249 -1216273 -1216277 -1216337 -1216339 -1216349 -1216351 -1216373 -1216379 -1216387 -1216393 -1216417 -1216421 -1216433 -1216441 -1216451 -1216459 -1216489 -1216507 -1216529 -1216543 -1216547 -1216559 -1216561 -1216577 -1216583 -1216591 -1216601 -1216603 -1216619 -1216681 -1216693 -1216711 -1216717 -1216729 -1216751 -1216759 -1216763 -1216777 -1216793 -1216799 -1216807 -1216823 -1216841 -1216847 -1216849 -1216867 -1216871 -1216879 -1216903 -1216913 -1216937 -1216939 -1216951 -1216961 -1216973 -1216987 -1216997 -1217009 -1217017 -1217023 -1217033 -1217053 -1217057 -1217063 -1217071 -1217077 -1217089 -1217093 -1217107 -1217113 -1217119 -1217131 -1217141 -1217143 -1217147 -1217171 -1217179 -1217191 -1217207 -1217213 -1217219 -1217233 -1217261 -1217269 -1217297 -1217299 -1217303 -1217309 -1217317 -1217329 -1217351 -1217393 -1217399 -1217407 -1217417 -1217423 -1217443 -1217467 -1217471 -1217473 -1217477 -1217483 -1217509 -1217521 -1217533 -1217537 -1217561 -1217617 -1217647 -1217651 -1217663 -1217669 -1217677 -1217683 -1217687 -1217719 -1217731 -1217753 -1217759 -1217771 -1217809 -1217813 -1217831 -1217833 -1217861 -1217893 -1217899 -1217903 -1217917 -1217921 -1217927 -1217933 -1217941 -1217947 -1217963 -1217977 -1217989 -1218017 -1218043 -1218089 -1218121 -1218131 -1218157 -1218167 -1218179 -1218197 -1218199 -1218209 -1218211 -1218221 -1218247 -1218251 -1218257 -1218263 -1218277 -1218281 -1218307 -1218313 -1218367 -1218383 -1218391 -1218401 -1218421 -1218433 -1218449 -1218457 -1218463 -1218467 -1218473 -1218487 -1218533 -1218557 -1218559 -1218571 -1218583 -1218601 -1218617 -1218631 -1218649 -1218653 -1218683 -1218691 -1218709 -1218727 -1218731 -1218739 -1218761 -1218773 -1218779 -1218787 -1218821 -1218829 -1218853 -1218859 -1218901 -1218911 -1218913 -1218923 -1218941 -1218949 -1218953 -1218989 -1218991 -1219003 -1219061 -1219081 -1219091 -1219109 -1219111 -1219123 -1219129 -1219147 -1219177 -1219213 -1219237 -1219241 -1219271 -1219279 -1219297 -1219301 -1219303 -1219307 -1219313 -1219343 -1219349 -1219357 -1219399 -1219411 -1219433 -1219453 -1219457 -1219469 -1219481 -1219487 -1219489 -1219501 -1219507 -1219549 -1219577 -1219607 -1219613 -1219619 -1219639 -1219643 -1219649 -1219651 -1219657 -1219663 -1219679 -1219703 -1219717 -1219721 -1219727 -1219739 -1219747 -1219753 -1219763 -1219783 -1219787 -1219789 -1219793 -1219807 -1219811 -1219831 -1219837 -1219843 -1219847 -1219849 -1219859 -1219861 -1219871 -1219877 -1219879 -1219891 -1219909 -1219913 -1219919 -1219931 -1219949 -1219951 -1219957 -1219961 -1219963 -1219991 -1220027 -1220029 -1220041 -1220071 -1220077 -1220099 -1220147 -1220171 -1220203 -1220239 -1220249 -1220251 -1220257 -1220309 -1220327 -1220333 -1220347 -1220353 -1220363 -1220369 -1220393 -1220411 -1220423 -1220437 -1220489 -1220491 -1220497 -1220507 -1220591 -1220599 -1220623 -1220657 -1220663 -1220669 -1220689 -1220699 -1220711 -1220717 -1220729 -1220743 -1220761 -1220773 -1220777 -1220783 -1220797 -1220801 -1220803 -1220819 -1220833 -1220839 -1220893 -1220897 -1220903 -1220917 -1220927 -1220953 -1220969 -1220981 -1220983 -1220993 -1221019 -1221029 -1221049 -1221061 -1221079 -1221083 -1221089 -1221097 -1221113 -1221119 -1221131 -1221163 -1221167 -1221193 -1221197 -1221221 -1221223 -1221239 -1221247 -1221251 -1221289 -1221299 -1221373 -1221379 -1221383 -1221391 -1221421 -1221427 -1221443 -1221449 -1221457 -1221463 -1221469 -1221499 -1221503 -1221523 -1221527 -1221533 -1221541 -1221551 -1221557 -1221559 -1221589 -1221593 -1221601 -1221631 -1221641 -1221653 -1221659 -1221667 -1221707 -1221749 -1221751 -1221761 -1221767 -1221791 -1221793 -1221811 -1221821 -1221823 -1221853 -1221863 -1221907 -1221917 -1221937 -1221959 -1221971 -1222003 -1222019 -1222027 -1222037 -1222049 -1222057 -1222063 -1222097 -1222129 -1222157 -1222159 -1222171 -1222187 -1222219 -1222229 -1222231 -1222241 -1222253 -1222259 -1222267 -1222271 -1222279 -1222307 -1222373 -1222393 -1222409 -1222411 -1222433 -1222471 -1222483 -1222493 -1222499 -1222513 -1222523 -1222537 -1222561 -1222567 -1222583 -1222597 -1222601 -1222603 -1222633 -1222643 -1222651 -1222667 -1222679 -1222681 -1222693 -1222717 -1222723 -1222729 -1222751 -1222757 -1222769 -1222777 -1222789 -1222801 -1222811 -1222829 -1222831 -1222847 -1222853 -1222889 -1222909 -1222913 -1222931 -1222943 -1222957 -1222967 -1222993 -1223003 -1223021 -1223029 -1223039 -1223051 -1223059 -1223077 -1223083 -1223093 -1223119 -1223149 -1223161 -1223177 -1223179 -1223197 -1223203 -1223207 -1223231 -1223237 -1223263 -1223279 -1223281 -1223309 -1223311 -1223323 -1223329 -1223351 -1223357 -1223381 -1223419 -1223437 -1223447 -1223449 -1223459 -1223471 -1223489 -1223491 -1223527 -1223533 -1223549 -1223561 -1223569 -1223587 -1223591 -1223603 -1223633 -1223683 -1223687 -1223689 -1223693 -1223723 -1223731 -1223749 -1223753 -1223767 -1223773 -1223777 -1223857 -1223863 -1223867 -1223879 -1223897 -1223921 -1223939 -1223941 -1223953 -1223977 -1223987 -1223993 -1224029 -1224031 -1224053 -1224059 -1224077 -1224079 -1224089 -1224109 -1224121 -1224131 -1224133 -1224149 -1224163 -1224169 -1224193 -1224203 -1224217 -1224229 -1224233 -1224239 -1224257 -1224259 -1224269 -1224271 -1224281 -1224287 -1224299 -1224329 -1224337 -1224347 -1224389 -1224403 -1224413 -1224437 -1224439 -1224473 -1224479 -1224481 -1224529 -1224533 -1224577 -1224599 -1224637 -1224673 -1224677 -1224701 -1224703 -1224709 -1224739 -1224763 -1224767 -1224809 -1224823 -1224851 -1224857 -1224859 -1224863 -1224869 -1224887 -1224889 -1224893 -1224913 -1224919 -1224943 -1224953 -1224967 -1224973 -1224983 -1224991 -1225009 -1225019 -1225061 -1225067 -1225073 -1225079 -1225087 -1225093 -1225097 -1225099 -1225109 -1225111 -1225117 -1225123 -1225127 -1225129 -1225153 -1225157 -1225183 -1225219 -1225223 -1225261 -1225283 -1225297 -1225303 -1225319 -1225327 -1225331 -1225361 -1225373 -1225381 -1225397 -1225409 -1225459 -1225493 -1225501 -1225507 -1225517 -1225529 -1225541 -1225559 -1225571 -1225577 -1225579 -1225589 -1225591 -1225603 -1225621 -1225643 -1225657 -1225663 -1225687 -1225691 -1225703 -1225723 -1225727 -1225729 -1225759 -1225769 -1225787 -1225817 -1225849 -1225871 -1225879 -1225883 -1225891 -1225897 -1225907 -1225909 -1225919 -1225927 -1225933 -1225949 -1225963 -1225981 -1225997 -1225999 -1226011 -1226041 -1226053 -1226063 -1226077 -1226083 -1226087 -1226101 -1226111 -1226117 -1226179 -1226189 -1226191 -1226209 -1226213 -1226237 -1226257 -1226263 -1226293 -1226297 -1226299 -1226311 -1226321 -1226339 -1226341 -1226347 -1226353 -1226377 -1226387 -1226417 -1226461 -1226471 -1226479 -1226483 -1226501 -1226503 -1226531 -1226539 -1226549 -1226557 -1226581 -1226593 -1226609 -1226611 -1226623 -1226629 -1226651 -1226663 -1226677 -1226681 -1226683 -1226699 -1226707 -1226711 -1226713 -1226741 -1226767 -1226779 -1226783 -1226789 -1226801 -1226803 -1226807 -1226821 -1226831 -1226851 -1226857 -1226861 -1226867 -1226891 -1226899 -1226959 -1226977 -1226983 -1226993 -1227047 -1227053 -1227101 -1227103 -1227131 -1227133 -1227143 -1227151 -1227157 -1227167 -1227173 -1227181 -1227241 -1227271 -1227277 -1227299 -1227301 -1227319 -1227323 -1227329 -1227337 -1227353 -1227379 -1227407 -1227431 -1227437 -1227463 -1227469 -1227491 -1227497 -1227539 -1227547 -1227559 -1227563 -1227619 -1227637 -1227649 -1227659 -1227683 -1227701 -1227703 -1227713 -1227719 -1227769 -1227797 -1227829 -1227833 -1227841 -1227847 -1227871 -1227881 -1227887 -1227911 -1227917 -1227929 -1227943 -1227949 -1227973 -1227977 -1227979 -1227983 -1228001 -1228009 -1228013 -1228021 -1228091 -1228099 -1228109 -1228133 -1228147 -1228153 -1228159 -1228163 -1228181 -1228187 -1228193 -1228219 -1228243 -1228247 -1228273 -1228277 -1228291 -1228303 -1228309 -1228327 -1228333 -1228351 -1228373 -1228391 -1228393 -1228397 -1228399 -1228429 -1228441 -1228457 -1228459 -1228489 -1228501 -1228519 -1228537 -1228541 -1228543 -1228547 -1228567 -1228571 -1228583 -1228589 -1228603 -1228613 -1228631 -1228651 -1228657 -1228679 -1228691 -1228693 -1228741 -1228763 -1228783 -1228789 -1228837 -1228841 -1228849 -1228861 -1228883 -1228889 -1228891 -1228907 -1228919 -1228937 -1228943 -1228949 -1228951 -1228961 -1228963 -1228987 -1228993 -1229021 -1229023 -1229071 -1229077 -1229093 -1229113 -1229131 -1229141 -1229149 -1229159 -1229197 -1229201 -1229203 -1229209 -1229213 -1229227 -1229237 -1229257 -1229269 -1229273 -1229279 -1229297 -1229309 -1229311 -1229317 -1229329 -1229351 -1229353 -1229359 -1229369 -1229377 -1229381 -1229401 -1229443 -1229447 -1229453 -1229461 -1229483 -1229489 -1229519 -1229521 -1229531 -1229561 -1229563 -1229581 -1229597 -1229617 -1229633 -1229647 -1229663 -1229689 -1229707 -1229719 -1229731 -1229743 -1229773 -1229783 -1229807 -1229827 -1229869 -1229873 -1229897 -1229903 -1229911 -1229939 -1229941 -1229957 -1229981 -1229993 -1229999 -1230013 -1230023 -1230029 -1230067 -1230071 -1230107 -1230127 -1230167 -1230169 -1230181 -1230199 -1230223 -1230227 -1230233 -1230241 -1230263 -1230301 -1230311 -1230329 -1230331 -1230337 -1230343 -1230347 -1230349 -1230367 -1230371 -1230373 -1230377 -1230379 -1230391 -1230401 -1230433 -1230461 -1230469 -1230479 -1230491 -1230521 -1230529 -1230539 -1230547 -1230571 -1230587 -1230599 -1230629 -1230631 -1230637 -1230667 -1230689 -1230727 -1230739 -1230743 -1230751 -1230769 -1230791 -1230829 -1230863 -1230869 -1230871 -1230881 -1230907 -1230913 -1230941 -1230949 -1230967 -1230997 -1231001 -1231003 -1231039 -1231049 -1231051 -1231063 -1231073 -1231091 -1231093 -1231099 -1231127 -1231129 -1231141 -1231171 -1231177 -1231193 -1231199 -1231201 -1231207 -1231229 -1231231 -1231247 -1231261 -1231267 -1231277 -1231283 -1231301 -1231303 -1231309 -1231313 -1231319 -1231337 -1231339 -1231357 -1231379 -1231381 -1231387 -1231411 -1231421 -1231423 -1231453 -1231457 -1231459 -1231469 -1231481 -1231487 -1231511 -1231513 -1231547 -1231553 -1231577 -1231579 -1231589 -1231597 -1231613 -1231631 -1231663 -1231669 -1231687 -1231691 -1231697 -1231709 -1231721 -1231733 -1231753 -1231757 -1231771 -1231781 -1231787 -1231799 -1231807 -1231817 -1231829 -1231831 -1231843 -1231859 -1231873 -1231877 -1231883 -1231889 -1231943 -1231961 -1231981 -1231987 -1231999 -1232003 -1232069 -1232071 -1232083 -1232089 -1232171 -1232183 -1232201 -1232213 -1232221 -1232227 -1232243 -1232269 -1232291 -1232299 -1232327 -1232339 -1232351 -1232353 -1232377 -1232389 -1232393 -1232401 -1232411 -1232417 -1232431 -1232437 -1232453 -1232461 -1232477 -1232527 -1232531 -1232537 -1232563 -1232573 -1232603 -1232611 -1232617 -1232657 -1232659 -1232683 -1232689 -1232713 -1232719 -1232771 -1232797 -1232801 -1232809 -1232831 -1232843 -1232849 -1232851 -1232879 -1232893 -1232909 -1232941 -1232947 -1232977 -1232981 -1232983 -1232999 -1233019 -1233047 -1233073 -1233079 -1233097 -1233101 -1233107 -1233121 -1233143 -1233179 -1233181 -1233187 -1233209 -1233241 -1233251 -1233259 -1233263 -1233301 -1233313 -1233319 -1233361 -1233371 -1233373 -1233377 -1233409 -1233431 -1233433 -1233437 -1233439 -1233473 -1233493 -1233497 -1233509 -1233523 -1233527 -1233539 -1233563 -1233569 -1233577 -1233587 -1233593 -1233599 -1233607 -1233611 -1233619 -1233641 -1233647 -1233653 -1233709 -1233721 -1233751 -1233761 -1233763 -1233779 -1233781 -1233851 -1233887 -1233899 -1233907 -1233923 -1233929 -1233949 -1233983 -1234001 -1234003 -1234039 -1234049 -1234063 -1234067 -1234099 -1234109 -1234117 -1234133 -1234147 -1234187 -1234231 -1234237 -1234241 -1234243 -1234253 -1234271 -1234309 -1234333 -1234349 -1234351 -1234367 -1234379 -1234391 -1234393 -1234417 -1234439 -1234463 -1234511 -1234517 -1234531 -1234537 -1234543 -1234547 -1234577 -1234603 -1234613 -1234627 -1234657 -1234687 -1234703 -1234721 -1234747 -1234757 -1234759 -1234769 -1234777 -1234787 -1234789 -1234799 -1234813 -1234819 -1234837 -1234841 -1234843 -1234853 -1234873 -1234889 -1234901 -1234951 -1234967 -1234969 -1234991 -1235021 -1235027 -1235041 -1235063 -1235083 -1235093 -1235099 -1235131 -1235137 -1235141 -1235149 -1235159 -1235167 -1235177 -1235183 -1235191 -1235239 -1235243 -1235249 -1235251 -1235263 -1235281 -1235287 -1235303 -1235309 -1235321 -1235327 -1235363 -1235369 -1235383 -1235389 -1235417 -1235419 -1235431 -1235447 -1235449 -1235459 -1235473 -1235477 -1235497 -1235501 -1235503 -1235539 -1235569 -1235573 -1235593 -1235651 -1235653 -1235659 -1235669 -1235701 -1235711 -1235761 -1235789 -1235791 -1235803 -1235807 -1235821 -1235831 -1235833 -1235867 -1235879 -1235887 -1235891 -1235909 -1235929 -1235933 -1235947 -1235977 -1235981 -1235987 -1235999 -1236017 -1236073 -1236077 -1236161 -1236163 -1236173 -1236203 -1236211 -1236229 -1236233 -1236239 -1236259 -1236307 -1236317 -1236329 -1236337 -1236383 -1236397 -1236419 -1236439 -1236449 -1236467 -1236479 -1236481 -1236491 -1236517 -1236527 -1236533 -1236541 -1236553 -1236583 -1236611 -1236623 -1236629 -1236643 -1236659 -1236661 -1236667 -1236701 -1236709 -1236713 -1236727 -1236737 -1236743 -1236751 -1236757 -1236761 -1236769 -1236787 -1236791 -1236797 -1236803 -1236811 -1236827 -1236857 -1236883 -1236901 -1236953 -1236959 -1236979 -1237001 -1237013 -1237031 -1237037 -1237043 -1237051 -1237057 -1237063 -1237079 -1237091 -1237121 -1237129 -1237139 -1237151 -1237163 -1237177 -1237199 -1237207 -1237211 -1237213 -1237217 -1237231 -1237253 -1237273 -1237279 -1237283 -1237297 -1237309 -1237349 -1237363 -1237373 -1237387 -1237393 -1237403 -1237417 -1237433 -1237441 -1237471 -1237487 -1237493 -1237499 -1237501 -1237513 -1237519 -1237529 -1237531 -1237543 -1237547 -1237567 -1237571 -1237589 -1237619 -1237627 -1237661 -1237721 -1237727 -1237739 -1237757 -1237763 -1237783 -1237813 -1237823 -1237829 -1237843 -1237849 -1237853 -1237867 -1237877 -1237897 -1237919 -1237931 -1237939 -1237949 -1237961 -1237963 -1237967 -1237993 -1238023 -1238033 -1238051 -1238063 -1238071 -1238087 -1238089 -1238101 -1238119 -1238129 -1238137 -1238177 -1238179 -1238189 -1238197 -1238201 -1238219 -1238267 -1238269 -1238273 -1238291 -1238317 -1238327 -1238333 -1238371 -1238381 -1238383 -1238407 -1238411 -1238423 -1238429 -1238431 -1238437 -1238449 -1238459 -1238491 -1238509 -1238521 -1238533 -1238537 -1238551 -1238597 -1238599 -1238621 -1238647 -1238659 -1238681 -1238683 -1238687 -1238693 -1238717 -1238719 -1238747 -1238749 -1238759 -1238761 -1238767 -1238771 -1238789 -1238801 -1238821 -1238827 -1238833 -1238843 -1238863 -1238893 -1238903 -1238911 -1238917 -1238921 -1238947 -1238989 -1238999 -1239001 -1239013 -1239023 -1239041 -1239067 -1239089 -1239103 -1239109 -1239127 -1239151 -1239179 -1239191 -1239197 -1239223 -1239229 -1239239 -1239247 -1239269 -1239281 -1239311 -1239319 -1239323 -1239341 -1239347 -1239353 -1239361 -1239367 -1239377 -1239379 -1239397 -1239421 -1239443 -1239449 -1239457 -1239461 -1239481 -1239499 -1239509 -1239517 -1239523 -1239529 -1239533 -1239551 -1239569 -1239583 -1239593 -1239599 -1239607 -1239619 -1239643 -1239661 -1239671 -1239697 -1239727 -1239737 -1239739 -1239751 -1239761 -1239773 -1239803 -1239817 -1239839 -1239877 -1239893 -1239899 -1239911 -1239913 -1239919 -1239923 -1239943 -1239961 -1239971 -1239983 -1239989 -1240007 -1240009 -1240013 -1240021 -1240027 -1240039 -1240081 -1240087 -1240097 -1240117 -1240139 -1240153 -1240159 -1240181 -1240193 -1240199 -1240207 -1240219 -1240231 -1240241 -1240247 -1240271 -1240273 -1240307 -1240319 -1240333 -1240361 -1240363 -1240387 -1240391 -1240399 -1240423 -1240483 -1240487 -1240511 -1240517 -1240523 -1240543 -1240553 -1240559 -1240607 -1240621 -1240637 -1240667 -1240669 -1240691 -1240699 -1240703 -1240709 -1240717 -1240739 -1240741 -1240751 -1240763 -1240769 -1240777 -1240793 -1240807 -1240817 -1240831 -1240859 -1240861 -1240931 -1240957 -1240973 -1240979 -1240991 -1240999 -1241003 -1241027 -1241033 -1241039 -1241059 -1241077 -1241081 -1241087 -1241159 -1241161 -1241173 -1241197 -1241203 -1241243 -1241249 -1241257 -1241263 -1241267 -1241269 -1241291 -1241321 -1241341 -1241347 -1241351 -1241369 -1241377 -1241381 -1241389 -1241407 -1241413 -1241417 -1241423 -1241437 -1241447 -1241467 -1241477 -1241483 -1241489 -1241491 -1241507 -1241509 -1241549 -1241551 -1241557 -1241573 -1241579 -1241587 -1241627 -1241651 -1241659 -1241677 -1241699 -1241741 -1241743 -1241761 -1241771 -1241789 -1241813 -1241819 -1241827 -1241869 -1241879 -1241893 -1241921 -1241923 -1241927 -1241939 -1241941 -1241951 -1241957 -1241963 -1241971 -1241987 -1242001 -1242029 -1242061 -1242067 -1242089 -1242097 -1242103 -1242107 -1242119 -1242121 -1242151 -1242167 -1242169 -1242181 -1242191 -1242193 -1242217 -1242221 -1242233 -1242251 -1242271 -1242289 -1242317 -1242347 -1242359 -1242361 -1242379 -1242403 -1242407 -1242413 -1242419 -1242421 -1242457 -1242487 -1242503 -1242517 -1242569 -1242601 -1242611 -1242617 -1242623 -1242629 -1242641 -1242643 -1242739 -1242757 -1242763 -1242767 -1242781 -1242803 -1242811 -1242817 -1242823 -1242827 -1242841 -1242859 -1242869 -1242889 -1242893 -1242929 -1242931 -1242937 -1242947 -1242959 -1242977 -1242979 -1242991 -1243003 -1243013 -1243093 -1243097 -1243111 -1243129 -1243133 -1243141 -1243147 -1243157 -1243169 -1243181 -1243211 -1243271 -1243273 -1243309 -1243337 -1243343 -1243349 -1243367 -1243369 -1243373 -1243387 -1243391 -1243393 -1243421 -1243427 -1243439 -1243471 -1243477 -1243481 -1243483 -1243511 -1243523 -1243537 -1243547 -1243559 -1243577 -1243579 -1243609 -1243631 -1243639 -1243643 -1243663 -1243673 -1243691 -1243709 -1243717 -1243741 -1243747 -1243783 -1243789 -1243793 -1243807 -1243811 -1243819 -1243841 -1243843 -1243859 -1243877 -1243883 -1243889 -1243927 -1243933 -1243939 -1243943 -1243951 -1243961 -1243967 -1243969 -1243997 -1244003 -1244021 -1244027 -1244029 -1244039 -1244041 -1244053 -1244057 -1244059 -1244083 -1244099 -1244141 -1244143 -1244149 -1244153 -1244167 -1244183 -1244197 -1244203 -1244233 -1244249 -1244261 -1244263 -1244279 -1244293 -1244333 -1244357 -1244359 -1244363 -1244381 -1244393 -1244401 -1244423 -1244429 -1244437 -1244447 -1244459 -1244471 -1244479 -1244483 -1244501 -1244521 -1244531 -1244533 -1244543 -1244567 -1244591 -1244603 -1244609 -1244611 -1244627 -1244629 -1244647 -1244687 -1244699 -1244713 -1244729 -1244741 -1244753 -1244759 -1244777 -1244797 -1244813 -1244819 -1244821 -1244833 -1244839 -1244857 -1244863 -1244879 -1244909 -1244911 -1244923 -1244953 -1244987 -1244989 -1244993 -1245001 -1245017 -1245019 -1245037 -1245067 -1245091 -1245103 -1245113 -1245121 -1245137 -1245149 -1245169 -1245187 -1245191 -1245217 -1245227 -1245281 -1245331 -1245353 -1245379 -1245397 -1245401 -1245421 -1245449 -1245451 -1245479 -1245509 -1245527 -1245529 -1245551 -1245557 -1245589 -1245613 -1245617 -1245619 -1245623 -1245649 -1245683 -1245689 -1245691 -1245701 -1245707 -1245719 -1245721 -1245763 -1245767 -1245779 -1245781 -1245791 -1245799 -1245817 -1245833 -1245847 -1245863 -1245877 -1245883 -1245917 -1245929 -1245943 -1245953 -1245961 -1245971 -1245973 -1246013 -1246033 -1246057 -1246061 -1246073 -1246081 -1246093 -1246099 -1246103 -1246181 -1246187 -1246199 -1246207 -1246213 -1246241 -1246243 -1246247 -1246249 -1246261 -1246283 -1246303 -1246307 -1246313 -1246319 -1246327 -1246331 -1246339 -1246351 -1246361 -1246363 -1246367 -1246369 -1246373 -1246379 -1246387 -1246397 -1246429 -1246433 -1246451 -1246459 -1246471 -1246477 -1246481 -1246489 -1246499 -1246501 -1246513 -1246517 -1246529 -1246537 -1246543 -1246561 -1246573 -1246579 -1246589 -1246591 -1246601 -1246631 -1246639 -1246667 -1246673 -1246697 -1246703 -1246711 -1246733 -1246747 -1246757 -1246781 -1246823 -1246829 -1246841 -1246867 -1246879 -1246891 -1246907 -1246919 -1246943 -1246961 -1246963 -1246997 -1247009 -1247017 -1247033 -1247053 -1247063 -1247089 -1247101 -1247107 -1247117 -1247119 -1247167 -1247177 -1247189 -1247209 -1247231 -1247243 -1247263 -1247269 -1247291 -1247297 -1247303 -1247317 -1247321 -1247327 -1247329 -1247371 -1247383 -1247401 -1247417 -1247419 -1247429 -1247447 -1247453 -1247459 -1247479 -1247501 -1247509 -1247527 -1247549 -1247557 -1247563 -1247569 -1247581 -1247591 -1247599 -1247611 -1247621 -1247627 -1247641 -1247651 -1247663 -1247693 -1247699 -1247737 -1247759 -1247761 -1247767 -1247777 -1247797 -1247801 -1247833 -1247837 -1247861 -1247867 -1247879 -1247881 -1247893 -1247923 -1247947 -1247951 -1247959 -1247969 -1248001 -1248007 -1248011 -1248017 -1248019 -1248031 -1248041 -1248059 -1248061 -1248083 -1248101 -1248103 -1248113 -1248119 -1248151 -1248193 -1248199 -1248209 -1248211 -1248217 -1248229 -1248239 -1248241 -1248253 -1248271 -1248323 -1248329 -1248337 -1248341 -1248347 -1248349 -1248353 -1248383 -1248391 -1248407 -1248413 -1248427 -1248449 -1248451 -1248469 -1248493 -1248503 -1248529 -1248539 -1248551 -1248553 -1248563 -1248571 -1248589 -1248593 -1248631 -1248641 -1248671 -1248673 -1248691 -1248697 -1248703 -1248721 -1248757 -1248781 -1248799 -1248809 -1248829 -1248833 -1248847 -1248857 -1248859 -1248869 -1248881 -1248893 -1248917 -1248941 -1248953 -1248977 -1248979 -1248991 -1249013 -1249019 -1249033 -1249037 -1249043 -1249049 -1249057 -1249063 -1249091 -1249099 -1249111 -1249121 -1249133 -1249139 -1249141 -1249151 -1249159 -1249163 -1249187 -1249201 -1249217 -1249243 -1249247 -1249273 -1249301 -1249319 -1249321 -1249333 -1249343 -1249361 -1249363 -1249373 -1249397 -1249403 -1249411 -1249427 -1249433 -1249477 -1249481 -1249487 -1249489 -1249499 -1249511 -1249519 -1249531 -1249559 -1249603 -1249621 -1249627 -1249631 -1249643 -1249657 -1249669 -1249681 -1249691 -1249693 -1249727 -1249733 -1249739 -1249741 -1249747 -1249757 -1249799 -1249811 -1249817 -1249819 -1249837 -1249841 -1249847 -1249849 -1249861 -1249873 -1249901 -1249921 -1249939 -1249943 -1249999 -1250003 -1250009 -1250021 -1250023 -1250057 -1250069 -1250083 -1250087 -1250099 -1250107 -1250141 -1250147 -1250149 -1250173 -1250177 -1250189 -1250201 -1250203 -1250237 -1250243 -1250273 -1250281 -1250297 -1250309 -1250351 -1250357 -1250407 -1250413 -1250437 -1250443 -1250449 -1250453 -1250461 -1250471 -1250479 -1250497 -1250507 -1250519 -1250521 -1250527 -1250551 -1250593 -1250609 -1250611 -1250629 -1250647 -1250653 -1250677 -1250701 -1250737 -1250749 -1250761 -1250771 -1250773 -1250779 -1250783 -1250801 -1250813 -1250831 -1250839 -1250863 -1250867 -1250917 -1250923 -1250929 -1250939 -1250969 -1250971 -1250981 -1250983 -1251011 -1251037 -1251043 -1251053 -1251071 -1251083 -1251097 -1251101 -1251109 -1251121 -1251157 -1251161 -1251179 -1251227 -1251247 -1251259 -1251287 -1251301 -1251307 -1251317 -1251323 -1251329 -1251409 -1251427 -1251431 -1251433 -1251461 -1251463 -1251527 -1251529 -1251533 -1251571 -1251577 -1251581 -1251583 -1251641 -1251661 -1251667 -1251671 -1251697 -1251703 -1251707 -1251713 -1251721 -1251743 -1251787 -1251791 -1251797 -1251827 -1251841 -1251851 -1251857 -1251869 -1251871 -1251881 -1251907 -1251911 -1251919 -1251923 -1251937 -1251947 -1251953 -1251961 -1251983 -1252021 -1252037 -1252049 -1252057 -1252063 -1252073 -1252079 -1252103 -1252109 -1252123 -1252129 -1252151 -1252159 -1252177 -1252187 -1252193 -1252201 -1252211 -1252217 -1252219 -1252247 -1252259 -1252267 -1252283 -1252331 -1252343 -1252357 -1252399 -1252403 -1252411 -1252421 -1252429 -1252439 -1252451 -1252457 -1252469 -1252483 -1252507 -1252523 -1252579 -1252609 -1252631 -1252639 -1252661 -1252663 -1252681 -1252711 -1252717 -1252721 -1252729 -1252739 -1252751 -1252777 -1252799 -1252817 -1252819 -1252843 -1252873 -1252877 -1252897 -1252903 -1252913 -1252921 -1252943 -1252957 -1252963 -1252987 -1252991 -1252997 -1253011 -1253023 -1253027 -1253047 -1253059 -1253071 -1253089 -1253093 -1253099 -1253111 -1253137 -1253167 -1253171 -1253249 -1253251 -1253261 -1253279 -1253323 -1253327 -1253333 -1253347 -1253377 -1253381 -1253401 -1253437 -1253453 -1253471 -1253479 -1253513 -1253519 -1253521 -1253557 -1253587 -1253591 -1253599 -1253621 -1253627 -1253683 -1253689 -1253701 -1253717 -1253723 -1253729 -1253737 -1253741 -1253761 -1253783 -1253803 -1253831 -1253839 -1253849 -1253851 -1253887 -1253897 -1253909 -1253911 -1253947 -1253951 -1253953 -1253963 -1253969 -1253999 -1254013 -1254017 -1254023 -1254031 -1254037 -1254049 -1254053 -1254059 -1254061 -1254079 -1254091 -1254109 -1254119 -1254131 -1254137 -1254151 -1254157 -1254161 -1254179 -1254193 -1254203 -1254217 -1254241 -1254251 -1254257 -1254269 -1254293 -1254301 -1254317 -1254329 -1254367 -1254371 -1254373 -1254377 -1254427 -1254433 -1254467 -1254469 -1254479 -1254497 -1254503 -1254523 -1254527 -1254529 -1254541 -1254553 -1254557 -1254577 -1254593 -1254607 -1254613 -1254619 -1254623 -1254637 -1254647 -1254653 -1254661 -1254667 -1254683 -1254689 -1254731 -1254733 -1254739 -1254751 -1254761 -1254767 -1254791 -1254793 -1254823 -1254833 -1254839 -1254863 -1254899 -1254907 -1254941 -1254959 -1254971 -1254983 -1254997 -1255013 -1255021 -1255039 -1255049 -1255063 -1255069 -1255081 -1255103 -1255109 -1255117 -1255123 -1255129 -1255139 -1255147 -1255153 -1255157 -1255169 -1255181 -1255183 -1255187 -1255201 -1255211 -1255237 -1255249 -1255253 -1255259 -1255279 -1255301 -1255307 -1255313 -1255321 -1255333 -1255337 -1255357 -1255361 -1255367 -1255391 -1255393 -1255421 -1255427 -1255451 -1255453 -1255477 -1255519 -1255549 -1255559 -1255567 -1255591 -1255601 -1255609 -1255619 -1255633 -1255651 -1255663 -1255679 -1255687 -1255693 -1255721 -1255747 -1255757 -1255759 -1255799 -1255801 -1255811 -1255829 -1255831 -1255847 -1255861 -1255907 -1255913 -1255927 -1255931 -1255939 -1255949 -1255963 -1255967 -1255993 -1255997 -1256009 -1256023 -1256029 -1256041 -1256063 -1256107 -1256149 -1256161 -1256197 -1256201 -1256209 -1256231 -1256243 -1256267 -1256279 -1256303 -1256323 -1256347 -1256369 -1256383 -1256389 -1256393 -1256407 -1256429 -1256449 -1256477 -1256531 -1256533 -1256543 -1256573 -1256579 -1256587 -1256597 -1256611 -1256617 -1256621 -1256659 -1256681 -1256687 -1256693 -1256707 -1256711 -1256729 -1256737 -1256747 -1256753 -1256777 -1256797 -1256809 -1256813 -1256819 -1256821 -1256837 -1256863 -1256867 -1256873 -1256887 -1256891 -1256897 -1256903 -1256911 -1256917 -1256923 -1256939 -1256953 -1256989 -1256993 -1257013 -1257017 -1257029 -1257041 -1257043 -1257049 -1257071 -1257073 -1257077 -1257079 -1257089 -1257103 -1257119 -1257131 -1257163 -1257199 -1257209 -1257229 -1257233 -1257239 -1257241 -1257247 -1257251 -1257253 -1257281 -1257293 -1257307 -1257313 -1257317 -1257323 -1257331 -1257359 -1257397 -1257409 -1257437 -1257457 -1257461 -1257463 -1257491 -1257493 -1257499 -1257517 -1257521 -1257547 -1257559 -1257563 -1257569 -1257587 -1257589 -1257611 -1257647 -1257653 -1257689 -1257691 -1257713 -1257719 -1257721 -1257749 -1257787 -1257827 -1257829 -1257853 -1257859 -1257869 -1257877 -1257911 -1257931 -1257953 -1257959 -1257961 -1257973 -1257989 -1258001 -1258013 -1258027 -1258039 -1258079 -1258087 -1258097 -1258099 -1258109 -1258133 -1258139 -1258141 -1258151 -1258163 -1258171 -1258177 -1258181 -1258183 -1258207 -1258211 -1258217 -1258219 -1258241 -1258267 -1258291 -1258297 -1258303 -1258319 -1258337 -1258343 -1258349 -1258373 -1258403 -1258409 -1258417 -1258421 -1258423 -1258429 -1258441 -1258451 -1258457 -1258469 -1258471 -1258483 -1258487 -1258511 -1258531 -1258559 -1258589 -1258597 -1258601 -1258627 -1258637 -1258639 -1258643 -1258657 -1258661 -1258667 -1258681 -1258709 -1258711 -1258717 -1258723 -1258753 -1258771 -1258781 -1258783 -1258787 -1258811 -1258819 -1258837 -1258847 -1258871 -1258877 -1258889 -1258903 -1258927 -1258931 -1258937 -1258967 -1258973 -1258993 -1259017 -1259029 -1259033 -1259039 -1259047 -1259051 -1259053 -1259057 -1259077 -1259081 -1259087 -1259099 -1259107 -1259113 -1259123 -1259129 -1259143 -1259171 -1259179 -1259191 -1259213 -1259231 -1259243 -1259249 -1259287 -1259299 -1259317 -1259329 -1259371 -1259389 -1259393 -1259413 -1259429 -1259477 -1259509 -1259527 -1259537 -1259539 -1259543 -1259551 -1259563 -1259569 -1259593 -1259603 -1259627 -1259639 -1259653 -1259659 -1259663 -1259669 -1259677 -1259689 -1259701 -1259737 -1259743 -1259749 -1259759 -1259767 -1259777 -1259803 -1259821 -1259851 -1259873 -1259899 -1259903 -1259927 -1259939 -1259953 -1259977 -1259983 -1260011 -1260019 -1260031 -1260047 -1260059 -1260067 -1260113 -1260121 -1260131 -1260143 -1260157 -1260163 -1260167 -1260169 -1260191 -1260223 -1260269 -1260277 -1260283 -1260293 -1260317 -1260319 -1260323 -1260341 -1260359 -1260361 -1260383 -1260401 -1260419 -1260437 -1260439 -1260461 -1260473 -1260481 -1260487 -1260509 -1260541 -1260547 -1260551 -1260569 -1260577 -1260583 -1260599 -1260629 -1260641 -1260643 -1260661 -1260673 -1260691 -1260713 -1260719 -1260731 -1260733 -1260751 -1260757 -1260767 -1260769 -1260797 -1260799 -1260827 -1260829 -1260841 -1260851 -1260877 -1260881 -1260887 -1260893 -1260899 -1260901 -1260911 -1260971 -1260979 -1260989 -1260991 -1261033 -1261069 -1261079 -1261081 -1261109 -1261121 -1261133 -1261157 -1261171 -1261177 -1261199 -1261217 -1261223 -1261259 -1261261 -1261279 -1261289 -1261301 -1261313 -1261321 -1261327 -1261333 -1261357 -1261363 -1261373 -1261387 -1261411 -1261427 -1261459 -1261487 -1261489 -1261523 -1261531 -1261549 -1261567 -1261571 -1261627 -1261639 -1261643 -1261649 -1261697 -1261699 -1261717 -1261721 -1261739 -1261747 -1261759 -1261763 -1261769 -1261789 -1261801 -1261823 -1261829 -1261831 -1261837 -1261861 -1261889 -1261891 -1261901 -1261913 -1261933 -1261943 -1261963 -1261969 -1261973 -1262011 -1262017 -1262057 -1262071 -1262081 -1262083 -1262087 -1262099 -1262101 -1262119 -1262143 -1262147 -1262203 -1262207 -1262221 -1262231 -1262237 -1262269 -1262281 -1262291 -1262293 -1262299 -1262311 -1262321 -1262363 -1262377 -1262411 -1262419 -1262441 -1262453 -1262461 -1262479 -1262483 -1262491 -1262509 -1262519 -1262543 -1262557 -1262563 -1262581 -1262587 -1262617 -1262621 -1262623 -1262629 -1262633 -1262669 -1262671 -1262693 -1262711 -1262713 -1262717 -1262731 -1262741 -1262753 -1262771 -1262783 -1262819 -1262839 -1262851 -1262869 -1262881 -1262887 -1262893 -1262897 -1262903 -1262917 -1262927 -1262929 -1262939 -1262941 -1262957 -1263007 -1263047 -1263071 -1263077 -1263079 -1263103 -1263107 -1263109 -1263113 -1263121 -1263133 -1263173 -1263179 -1263181 -1263187 -1263191 -1263193 -1263209 -1263239 -1263247 -1263259 -1263263 -1263299 -1263307 -1263319 -1263323 -1263331 -1263337 -1263341 -1263347 -1263373 -1263377 -1263391 -1263403 -1263461 -1263463 -1263473 -1263487 -1263499 -1263503 -1263511 -1263539 -1263541 -1263547 -1263569 -1263583 -1263599 -1263607 -1263629 -1263631 -1263659 -1263667 -1263677 -1263697 -1263701 -1263751 -1263761 -1263767 -1263793 -1263799 -1263803 -1263817 -1263853 -1263863 -1263887 -1263917 -1263929 -1263931 -1263943 -1263947 -1263949 -1263953 -1263961 -1263973 -1263979 -1264009 -1264027 -1264033 -1264037 -1264049 -1264061 -1264063 -1264129 -1264177 -1264189 -1264199 -1264213 -1264231 -1264259 -1264261 -1264267 -1264271 -1264301 -1264303 -1264331 -1264337 -1264363 -1264387 -1264411 -1264447 -1264451 -1264499 -1264537 -1264541 -1264559 -1264561 -1264573 -1264577 -1264597 -1264607 -1264643 -1264649 -1264651 -1264657 -1264663 -1264667 -1264687 -1264699 -1264733 -1264741 -1264763 -1264787 -1264801 -1264807 -1264819 -1264829 -1264853 -1264859 -1264867 -1264873 -1264877 -1264883 -1264889 -1264897 -1264903 -1264909 -1264933 -1264969 -1264979 -1264981 -1264997 -1265029 -1265041 -1265051 -1265053 -1265063 -1265081 -1265083 -1265087 -1265093 -1265101 -1265111 -1265113 -1265119 -1265129 -1265167 -1265177 -1265179 -1265197 -1265233 -1265249 -1265273 -1265279 -1265281 -1265311 -1265321 -1265333 -1265347 -1265353 -1265377 -1265387 -1265393 -1265431 -1265443 -1265449 -1265461 -1265471 -1265477 -1265479 -1265503 -1265519 -1265521 -1265527 -1265549 -1265557 -1265573 -1265581 -1265597 -1265603 -1265611 -1265617 -1265623 -1265639 -1265653 -1265657 -1265681 -1265729 -1265741 -1265777 -1265779 -1265801 -1265813 -1265827 -1265843 -1265857 -1265861 -1265863 -1265867 -1265899 -1265903 -1265909 -1265911 -1265921 -1265923 -1265941 -1265959 -1265969 -1265977 -1265981 -1265987 -1265993 -1266019 -1266043 -1266047 -1266059 -1266073 -1266077 -1266079 -1266091 -1266101 -1266107 -1266113 -1266149 -1266157 -1266163 -1266191 -1266197 -1266229 -1266241 -1266247 -1266259 -1266263 -1266269 -1266271 -1266277 -1266281 -1266301 -1266323 -1266337 -1266341 -1266359 -1266371 -1266373 -1266379 -1266389 -1266409 -1266413 -1266431 -1266451 -1266469 -1266487 -1266491 -1266493 -1266511 -1266523 -1266527 -1266539 -1266557 -1266563 -1266583 -1266589 -1266593 -1266611 -1266631 -1266677 -1266719 -1266731 -1266743 -1266751 -1266757 -1266761 -1266763 -1266767 -1266779 -1266781 -1266799 -1266841 -1266847 -1266851 -1266869 -1266883 -1266893 -1266899 -1266913 -1266919 -1266929 -1266931 -1266943 -1266949 -1266953 -1267009 -1267043 -1267051 -1267067 -1267103 -1267109 -1267117 -1267121 -1267127 -1267151 -1267157 -1267159 -1267183 -1267193 -1267199 -1267223 -1267237 -1267291 -1267297 -1267303 -1267307 -1267349 -1267381 -1267403 -1267411 -1267429 -1267447 -1267451 -1267459 -1267463 -1267481 -1267501 -1267517 -1267529 -1267531 -1267549 -1267577 -1267579 -1267589 -1267613 -1267633 -1267649 -1267663 -1267681 -1267709 -1267711 -1267723 -1267727 -1267757 -1267771 -1267787 -1267789 -1267823 -1267831 -1267837 -1267859 -1267873 -1267883 -1267891 -1267897 -1267907 -1267933 -1267939 -1267943 -1267951 -1267957 -1267961 -1267999 -1268011 -1268017 -1268039 -1268051 -1268053 -1268077 -1268093 -1268119 -1268143 -1268147 -1268167 -1268173 -1268177 -1268207 -1268213 -1268221 -1268233 -1268261 -1268279 -1268287 -1268291 -1268299 -1268327 -1268341 -1268357 -1268359 -1268369 -1268413 -1268419 -1268429 -1268447 -1268453 -1268461 -1268467 -1268479 -1268537 -1268549 -1268563 -1268567 -1268593 -1268599 -1268621 -1268623 -1268627 -1268633 -1268669 -1268681 -1268713 -1268731 -1268741 -1268747 -1268753 -1268759 -1268777 -1268783 -1268789 -1268791 -1268797 -1268803 -1268807 -1268843 -1268849 -1268867 -1268881 -1268899 -1268921 -1268929 -1268947 -1268963 -1269001 -1269007 -1269013 -1269017 -1269041 -1269043 -1269049 -1269061 -1269077 -1269091 -1269113 -1269119 -1269131 -1269167 -1269173 -1269179 -1269187 -1269193 -1269197 -1269221 -1269223 -1269239 -1269241 -1269253 -1269263 -1269283 -1269287 -1269299 -1269311 -1269337 -1269343 -1269377 -1269379 -1269383 -1269391 -1269413 -1269427 -1269461 -1269467 -1269493 -1269497 -1269529 -1269547 -1269559 -1269563 -1269571 -1269589 -1269601 -1269641 -1269643 -1269683 -1269691 -1269703 -1269731 -1269733 -1269743 -1269757 -1269797 -1269847 -1269859 -1269869 -1269871 -1269901 -1269907 -1269911 -1269923 -1269929 -1269937 -1269953 -1269971 -1270001 -1270013 -1270033 -1270051 -1270063 -1270067 -1270079 -1270097 -1270103 -1270111 -1270123 -1270141 -1270147 -1270151 -1270183 -1270193 -1270201 -1270231 -1270237 -1270249 -1270271 -1270279 -1270301 -1270309 -1270319 -1270327 -1270333 -1270337 -1270343 -1270361 -1270391 -1270417 -1270421 -1270429 -1270433 -1270441 -1270471 -1270483 -1270499 -1270513 -1270531 -1270537 -1270541 -1270547 -1270559 -1270561 -1270567 -1270571 -1270573 -1270579 -1270609 -1270627 -1270639 -1270649 -1270651 -1270657 -1270667 -1270669 -1270679 -1270747 -1270757 -1270771 -1270817 -1270823 -1270849 -1270859 -1270861 -1270879 -1270897 -1270901 -1270909 -1270933 -1270943 -1270961 -1270981 -1271027 -1271029 -1271033 -1271047 -1271051 -1271059 -1271069 -1271087 -1271089 -1271111 -1271117 -1271129 -1271147 -1271161 -1271167 -1271173 -1271183 -1271197 -1271201 -1271203 -1271213 -1271227 -1271239 -1271251 -1271293 -1271299 -1271317 -1271321 -1271339 -1271351 -1271353 -1271359 -1271383 -1271393 -1271399 -1271401 -1271419 -1271429 -1271449 -1271471 -1271483 -1271503 -1271507 -1271513 -1271521 -1271531 -1271551 -1271561 -1271597 -1271603 -1271609 -1271657 -1271659 -1271671 -1271687 -1271701 -1271717 -1271731 -1271747 -1271749 -1271791 -1271797 -1271807 -1271813 -1271827 -1271833 -1271839 -1271843 -1271849 -1271903 -1271927 -1271929 -1271939 -1271953 -1271971 -1271987 -1271999 -1272001 -1272043 -1272049 -1272067 -1272071 -1272079 -1272091 -1272109 -1272113 -1272133 -1272151 -1272157 -1272163 -1272169 -1272191 -1272203 -1272211 -1272223 -1272233 -1272247 -1272253 -1272269 -1272281 -1272283 -1272287 -1272289 -1272329 -1272343 -1272347 -1272361 -1272367 -1272377 -1272379 -1272409 -1272421 -1272443 -1272451 -1272461 -1272539 -1272547 -1272559 -1272577 -1272589 -1272617 -1272629 -1272631 -1272641 -1272647 -1272653 -1272673 -1272679 -1272749 -1272811 -1272827 -1272833 -1272847 -1272851 -1272857 -1272863 -1272881 -1272883 -1272893 -1272899 -1272913 -1272917 -1272919 -1272937 -1272941 -1272961 -1272983 -1272989 -1272991 -1273001 -1273021 -1273033 -1273037 -1273039 -1273087 -1273099 -1273109 -1273117 -1273121 -1273127 -1273157 -1273159 -1273199 -1273213 -1273231 -1273241 -1273267 -1273289 -1273291 -1273301 -1273309 -1273313 -1273331 -1273333 -1273343 -1273367 -1273381 -1273403 -1273409 -1273411 -1273417 -1273421 -1273423 -1273457 -1273463 -1273471 -1273483 -1273499 -1273507 -1273541 -1273543 -1273549 -1273561 -1273567 -1273609 -1273637 -1273639 -1273663 -1273673 -1273681 -1273687 -1273693 -1273721 -1273729 -1273733 -1273739 -1273757 -1273771 -1273781 -1273787 -1273823 -1273843 -1273879 -1273889 -1273891 -1273903 -1273907 -1273919 -1273933 -1273939 -1273957 -1273981 -1274011 -1274017 -1274041 -1274051 -1274071 -1274087 -1274089 -1274111 -1274113 -1274129 -1274137 -1274149 -1274183 -1274209 -1274227 -1274249 -1274267 -1274291 -1274293 -1274297 -1274309 -1274323 -1274333 -1274353 -1274363 -1274381 -1274389 -1274401 -1274411 -1274423 -1274437 -1274461 -1274509 -1274549 -1274557 -1274561 -1274599 -1274617 -1274621 -1274629 -1274633 -1274671 -1274701 -1274719 -1274723 -1274737 -1274759 -1274771 -1274773 -1274803 -1274851 -1274857 -1274873 -1274879 -1274899 -1274921 -1274929 -1274939 -1274941 -1274989 -1275011 -1275019 -1275041 -1275067 -1275107 -1275121 -1275133 -1275173 -1275179 -1275193 -1275199 -1275203 -1275227 -1275269 -1275277 -1275283 -1275293 -1275319 -1275341 -1275349 -1275359 -1275361 -1275401 -1275437 -1275457 -1275467 -1275499 -1275503 -1275523 -1275539 -1275541 -1275553 -1275559 -1275563 -1275569 -1275583 -1275601 -1275611 -1275643 -1275661 -1275667 -1275683 -1275691 -1275707 -1275709 -1275719 -1275737 -1275749 -1275751 -1275779 -1275803 -1275817 -1275823 -1275829 -1275839 -1275847 -1275851 -1275863 -1275877 -1275889 -1275893 -1275899 -1275931 -1275947 -1275973 -1275977 -1275979 -1276001 -1276007 -1276013 -1276027 -1276031 -1276039 -1276049 -1276057 -1276069 -1276103 -1276117 -1276123 -1276129 -1276133 -1276147 -1276157 -1276169 -1276183 -1276193 -1276213 -1276237 -1276243 -1276271 -1276279 -1276307 -1276313 -1276351 -1276357 -1276361 -1276397 -1276409 -1276433 -1276441 -1276447 -1276481 -1276501 -1276511 -1276529 -1276543 -1276571 -1276579 -1276589 -1276603 -1276619 -1276621 -1276631 -1276637 -1276657 -1276679 -1276687 -1276711 -1276721 -1276733 -1276739 -1276747 -1276763 -1276771 -1276777 -1276817 -1276829 -1276861 -1276867 -1276871 -1276889 -1276897 -1276903 -1276927 -1276949 -1276967 -1276969 -1276973 -1276987 -1276999 -1277011 -1277021 -1277039 -1277041 -1277063 -1277069 -1277071 -1277083 -1277093 -1277099 -1277113 -1277137 -1277147 -1277197 -1277207 -1277209 -1277233 -1277249 -1277257 -1277267 -1277299 -1277321 -1277323 -1277357 -1277359 -1277369 -1277387 -1277429 -1277449 -1277461 -1277477 -1277483 -1277491 -1277501 -1277543 -1277557 -1277569 -1277593 -1277597 -1277621 -1277629 -1277651 -1277657 -1277677 -1277699 -1277723 -1277729 -1277741 -1277743 -1277753 -1277761 -1277791 -1277803 -1277813 -1277819 -1277833 -1277849 -1277863 -1277867 -1277879 -1277897 -1277909 -1277911 -1277957 -1277971 -1277993 -1278007 -1278029 -1278031 -1278047 -1278097 -1278107 -1278113 -1278131 -1278139 -1278163 -1278181 -1278191 -1278197 -1278203 -1278209 -1278217 -1278227 -1278253 -1278287 -1278289 -1278323 -1278337 -1278341 -1278371 -1278373 -1278379 -1278391 -1278397 -1278401 -1278419 -1278437 -1278439 -1278463 -1278467 -1278479 -1278481 -1278493 -1278527 -1278551 -1278583 -1278601 -1278611 -1278617 -1278619 -1278623 -1278631 -1278637 -1278659 -1278671 -1278701 -1278709 -1278713 -1278721 -1278733 -1278769 -1278779 -1278787 -1278799 -1278803 -1278811 -1278817 -1278839 -1278857 -1278881 -1278899 -1278911 -1278983 -1278997 -1279001 -1279013 -1279021 -1279027 -1279039 -1279043 -1279081 -1279087 -1279093 -1279111 -1279123 -1279133 -1279141 -1279163 -1279171 -1279177 -1279181 -1279183 -1279189 -1279193 -1279211 -1279249 -1279253 -1279303 -1279307 -1279309 -1279319 -1279321 -1279337 -1279357 -1279361 -1279417 -1279427 -1279457 -1279459 -1279483 -1279493 -1279507 -1279511 -1279519 -1279541 -1279547 -1279549 -1279561 -1279583 -1279601 -1279609 -1279627 -1279643 -1279657 -1279661 -1279667 -1279673 -1279679 -1279687 -1279693 -1279703 -1279727 -1279753 -1279757 -1279787 -1279801 -1279807 -1279813 -1279819 -1279823 -1279843 -1279847 -1279853 -1279871 -1279877 -1279907 -1279919 -1279921 -1279931 -1279937 -1279961 -1279969 -1279997 -1280023 -1280101 -1280107 -1280113 -1280119 -1280129 -1280131 -1280141 -1280159 -1280161 -1280173 -1280179 -1280183 -1280221 -1280231 -1280267 -1280281 -1280291 -1280297 -1280309 -1280317 -1280333 -1280371 -1280399 -1280401 -1280407 -1280417 -1280431 -1280453 -1280473 -1280519 -1280537 -1280549 -1280561 -1280567 -1280597 -1280603 -1280623 -1280633 -1280651 -1280659 -1280677 -1280693 -1280707 -1280737 -1280743 -1280759 -1280761 -1280767 -1280789 -1280791 -1280803 -1280821 -1280833 -1280837 -1280857 -1280863 -1280869 -1280887 -1280921 -1280947 -1280969 -1280987 -1280989 -1281029 -1281041 -1281043 -1281047 -1281083 -1281089 -1281097 -1281101 -1281131 -1281149 -1281157 -1281167 -1281187 -1281193 -1281211 -1281221 -1281229 -1281253 -1281257 -1281263 -1281281 -1281283 -1281317 -1281331 -1281349 -1281367 -1281383 -1281389 -1281407 -1281431 -1281433 -1281439 -1281451 -1281457 -1281463 -1281503 -1281521 -1281523 -1281541 -1281547 -1281551 -1281563 -1281587 -1281649 -1281653 -1281667 -1281673 -1281677 -1281691 -1281697 -1281703 -1281727 -1281739 -1281751 -1281773 -1281779 -1281781 -1281799 -1281803 -1281809 -1281821 -1281823 -1281827 -1281853 -1281871 -1281883 -1281899 -1281937 -1281941 -1281961 -1281971 -1281979 -1281983 -1282007 -1282009 -1282031 -1282033 -1282051 -1282069 -1282079 -1282081 -1282093 -1282109 -1282117 -1282121 -1282133 -1282153 -1282163 -1282187 -1282201 -1282213 -1282231 -1282241 -1282261 -1282277 -1282279 -1282289 -1282297 -1282343 -1282349 -1282363 -1282381 -1282387 -1282399 -1282417 -1282423 -1282427 -1282451 -1282469 -1282471 -1282493 -1282499 -1282507 -1282511 -1282513 -1282517 -1282529 -1282543 -1282571 -1282577 -1282597 -1282607 -1282613 -1282627 -1282637 -1282639 -1282649 -1282657 -1282661 -1282681 -1282693 -1282703 -1282717 -1282739 -1282751 -1282763 -1282781 -1282783 -1282807 -1282817 -1282867 -1282877 -1282903 -1282907 -1282909 -1282913 -1282933 -1282943 -1282951 -1282961 -1282969 -1282993 -1283011 -1283017 -1283021 -1283027 -1283063 -1283069 -1283083 -1283099 -1283111 -1283119 -1283129 -1283137 -1283159 -1283167 -1283171 -1283173 -1283179 -1283207 -1283237 -1283297 -1283323 -1283333 -1283339 -1283353 -1283383 -1283389 -1283417 -1283437 -1283441 -1283473 -1283479 -1283509 -1283521 -1283537 -1283539 -1283543 -1283549 -1283563 -1283573 -1283591 -1283603 -1283677 -1283683 -1283701 -1283707 -1283717 -1283719 -1283731 -1283753 -1283759 -1283767 -1283771 -1283797 -1283831 -1283839 -1283873 -1283879 -1283881 -1283897 -1283903 -1283939 -1283941 -1283957 -1283969 -1283981 -1283983 -1284007 -1284037 -1284043 -1284047 -1284053 -1284083 -1284131 -1284169 -1284187 -1284209 -1284211 -1284223 -1284263 -1284271 -1284287 -1284293 -1284301 -1284313 -1284317 -1284329 -1284341 -1284373 -1284379 -1284383 -1284421 -1284427 -1284433 -1284443 -1284467 -1284473 -1284487 -1284511 -1284523 -1284541 -1284551 -1284553 -1284559 -1284583 -1284601 -1284617 -1284623 -1284631 -1284641 -1284659 -1284691 -1284709 -1284713 -1284737 -1284739 -1284763 -1284769 -1284791 -1284793 -1284823 -1284841 -1284847 -1284851 -1284863 -1284889 -1284901 -1284917 -1284931 -1284937 -1284967 -1284971 -1284977 -1284991 -1285021 -1285049 -1285051 -1285057 -1285061 -1285069 -1285099 -1285111 -1285117 -1285129 -1285139 -1285147 -1285159 -1285169 -1285181 -1285199 -1285213 -1285223 -1285231 -1285237 -1285247 -1285259 -1285267 -1285279 -1285283 -1285289 -1285301 -1285351 -1285381 -1285393 -1285397 -1285411 -1285429 -1285441 -1285451 -1285469 -1285481 -1285507 -1285511 -1285513 -1285517 -1285519 -1285547 -1285549 -1285553 -1285607 -1285619 -1285633 -1285649 -1285679 -1285699 -1285703 -1285717 -1285741 -1285747 -1285759 -1285763 -1285777 -1285789 -1285793 -1285799 -1285811 -1285813 -1285841 -1285847 -1285853 -1285859 -1285871 -1285877 -1285891 -1285903 -1285913 -1285937 -1285943 -1285969 -1285981 -1285993 -1286011 -1286017 -1286039 -1286071 -1286081 -1286093 -1286099 -1286107 -1286119 -1286147 -1286149 -1286177 -1286189 -1286191 -1286209 -1286227 -1286239 -1286261 -1286267 -1286269 -1286273 -1286287 -1286303 -1286323 -1286359 -1286371 -1286381 -1286387 -1286399 -1286419 -1286447 -1286489 -1286491 -1286503 -1286513 -1286521 -1286533 -1286557 -1286561 -1286569 -1286581 -1286587 -1286617 -1286629 -1286633 -1286641 -1286647 -1286653 -1286657 -1286669 -1286683 -1286693 -1286707 -1286711 -1286773 -1286777 -1286783 -1286797 -1286807 -1286819 -1286821 -1286833 -1286837 -1286839 -1286843 -1286881 -1286939 -1286941 -1286953 -1286959 -1286969 -1286981 -1286983 -1287007 -1287047 -1287059 -1287061 -1287067 -1287071 -1287101 -1287109 -1287131 -1287133 -1287157 -1287163 -1287173 -1287179 -1287197 -1287199 -1287217 -1287233 -1287239 -1287289 -1287323 -1287329 -1287343 -1287347 -1287353 -1287361 -1287371 -1287373 -1287401 -1287431 -1287457 -1287467 -1287469 -1287479 -1287487 -1287491 -1287499 -1287511 -1287541 -1287551 -1287553 -1287569 -1287589 -1287593 -1287607 -1287613 -1287623 -1287661 -1287683 -1287691 -1287697 -1287707 -1287731 -1287739 -1287743 -1287749 -1287751 -1287757 -1287761 -1287787 -1287799 -1287817 -1287821 -1287829 -1287841 -1287857 -1287883 -1287887 -1287899 -1287917 -1287947 -1287961 -1287967 -1287973 -1287983 -1287989 -1287997 -1288003 -1288009 -1288013 -1288033 -1288037 -1288043 -1288051 -1288057 -1288061 -1288099 -1288103 -1288109 -1288117 -1288163 -1288169 -1288171 -1288187 -1288193 -1288201 -1288213 -1288247 -1288249 -1288291 -1288307 -1288337 -1288349 -1288361 -1288363 -1288367 -1288393 -1288421 -1288423 -1288429 -1288439 -1288487 -1288513 -1288519 -1288531 -1288541 -1288543 -1288559 -1288571 -1288597 -1288603 -1288607 -1288613 -1288643 -1288649 -1288657 -1288691 -1288697 -1288699 -1288709 -1288711 -1288733 -1288769 -1288783 -1288799 -1288817 -1288823 -1288829 -1288831 -1288843 -1288849 -1288853 -1288871 -1288873 -1288877 -1288891 -1288919 -1288921 -1288933 -1288939 -1288951 -1288967 -1288981 -1288993 -1288997 -1289003 -1289009 -1289027 -1289039 -1289053 -1289077 -1289083 -1289111 -1289129 -1289149 -1289153 -1289159 -1289179 -1289213 -1289231 -1289237 -1289261 -1289273 -1289287 -1289303 -1289329 -1289333 -1289341 -1289363 -1289371 -1289381 -1289401 -1289411 -1289423 -1289429 -1289447 -1289459 -1289513 -1289531 -1289537 -1289551 -1289557 -1289567 -1289593 -1289597 -1289599 -1289621 -1289623 -1289627 -1289653 -1289657 -1289677 -1289711 -1289713 -1289731 -1289747 -1289749 -1289753 -1289779 -1289789 -1289801 -1289803 -1289831 -1289839 -1289851 -1289867 -1289881 -1289921 -1289927 -1289933 -1289963 -1289969 -1289971 -1290013 -1290019 -1290031 -1290049 -1290077 -1290083 -1290109 -1290131 -1290143 -1290151 -1290161 -1290167 -1290169 -1290173 -1290199 -1290203 -1290209 -1290257 -1290259 -1290287 -1290293 -1290299 -1290319 -1290329 -1290371 -1290379 -1290427 -1290431 -1290433 -1290439 -1290463 -1290467 -1290469 -1290491 -1290503 -1290533 -1290539 -1290551 -1290563 -1290571 -1290581 -1290593 -1290607 -1290629 -1290631 -1290637 -1290643 -1290649 -1290659 -1290673 -1290683 -1290719 -1290791 -1290811 -1290823 -1290847 -1290853 -1290857 -1290869 -1290901 -1290907 -1290923 -1290937 -1290983 -1291001 -1291007 -1291009 -1291019 -1291021 -1291063 -1291079 -1291111 -1291117 -1291139 -1291153 -1291159 -1291163 -1291177 -1291193 -1291211 -1291217 -1291219 -1291223 -1291229 -1291249 -1291271 -1291313 -1291321 -1291327 -1291343 -1291349 -1291357 -1291369 -1291379 -1291387 -1291391 -1291421 -1291447 -1291453 -1291471 -1291481 -1291483 -1291489 -1291501 -1291523 -1291547 -1291567 -1291579 -1291603 -1291637 -1291669 -1291673 -1291691 -1291783 -1291793 -1291799 -1291817 -1291819 -1291831 -1291861 -1291877 -1291883 -1291907 -1291909 -1291931 -1291957 -1291963 -1291967 -1291991 -1291999 -1292009 -1292023 -1292029 -1292063 -1292069 -1292089 -1292099 -1292113 -1292131 -1292141 -1292143 -1292149 -1292167 -1292177 -1292219 -1292237 -1292243 -1292251 -1292257 -1292261 -1292281 -1292293 -1292309 -1292329 -1292339 -1292353 -1292371 -1292383 -1292387 -1292419 -1292429 -1292441 -1292477 -1292491 -1292503 -1292509 -1292539 -1292549 -1292563 -1292567 -1292579 -1292587 -1292591 -1292593 -1292597 -1292609 -1292633 -1292639 -1292653 -1292657 -1292659 -1292693 -1292701 -1292713 -1292717 -1292729 -1292737 -1292783 -1292789 -1292801 -1292813 -1292831 -1292843 -1292857 -1292887 -1292927 -1292947 -1292953 -1292957 -1292971 -1292983 -1292989 -1292999 -1293001 -1293011 -1293031 -1293077 -1293119 -1293133 -1293137 -1293157 -1293169 -1293179 -1293199 -1293203 -1293233 -1293239 -1293247 -1293251 -1293277 -1293283 -1293287 -1293307 -1293317 -1293319 -1293323 -1293329 -1293361 -1293367 -1293373 -1293401 -1293419 -1293421 -1293433 -1293473 -1293491 -1293493 -1293499 -1293529 -1293533 -1293541 -1293553 -1293559 -1293583 -1293587 -1293613 -1293619 -1293647 -1293659 -1293701 -1293739 -1293757 -1293763 -1293791 -1293797 -1293821 -1293829 -1293839 -1293841 -1293857 -1293869 -1293899 -1293917 -1293923 -1293931 -1293947 -1293949 -1293961 -1293967 -1293977 -1293979 -1293983 -1294019 -1294021 -1294031 -1294037 -1294039 -1294061 -1294081 -1294087 -1294103 -1294121 -1294123 -1294129 -1294169 -1294177 -1294199 -1294201 -1294231 -1294253 -1294273 -1294277 -1294301 -1294303 -1294309 -1294339 -1294351 -1294361 -1294367 -1294369 -1294393 -1294399 -1294453 -1294459 -1294471 -1294477 -1294483 -1294561 -1294571 -1294583 -1294597 -1294609 -1294621 -1294627 -1294633 -1294639 -1294649 -1294651 -1294691 -1294721 -1294723 -1294729 -1294753 -1294757 -1294759 -1294817 -1294823 -1294841 -1294849 -1294939 -1294957 -1294967 -1294973 -1294987 -1294999 -1295003 -1295027 -1295033 -1295051 -1295057 -1295069 -1295071 -1295081 -1295089 -1295113 -1295131 -1295137 -1295159 -1295183 -1295191 -1295201 -1295207 -1295219 -1295221 -1295243 -1295263 -1295279 -1295293 -1295297 -1295299 -1295309 -1295317 -1295321 -1295323 -1295339 -1295347 -1295369 -1295377 -1295387 -1295389 -1295447 -1295473 -1295491 -1295501 -1295513 -1295533 -1295543 -1295549 -1295551 -1295561 -1295563 -1295603 -1295611 -1295617 -1295639 -1295647 -1295653 -1295681 -1295711 -1295717 -1295737 -1295741 -1295747 -1295761 -1295783 -1295803 -1295809 -1295813 -1295839 -1295849 -1295867 -1295869 -1295873 -1295881 -1295947 -1295953 -1295989 -1295993 -1296007 -1296011 -1296019 -1296023 -1296037 -1296041 -1296059 -1296077 -1296089 -1296101 -1296109 -1296137 -1296143 -1296167 -1296181 -1296187 -1296209 -1296227 -1296277 -1296283 -1296287 -1296293 -1296319 -1296331 -1296341 -1296343 -1296371 -1296391 -1296409 -1296413 -1296419 -1296467 -1296473 -1296481 -1296499 -1296511 -1296521 -1296523 -1296551 -1296557 -1296563 -1296571 -1296583 -1296587 -1296593 -1296601 -1296613 -1296623 -1296629 -1296649 -1296679 -1296689 -1296703 -1296721 -1296727 -1296749 -1296781 -1296787 -1296803 -1296817 -1296829 -1296833 -1296839 -1296877 -1296899 -1296907 -1296929 -1296949 -1296973 -1296983 -1297001 -1297003 -1297013 -1297019 -1297027 -1297057 -1297061 -1297063 -1297091 -1297103 -1297123 -1297129 -1297139 -1297147 -1297157 -1297169 -1297171 -1297193 -1297201 -1297211 -1297217 -1297229 -1297243 -1297249 -1297271 -1297273 -1297279 -1297297 -1297313 -1297333 -1297337 -1297349 -1297357 -1297367 -1297369 -1297393 -1297397 -1297399 -1297403 -1297411 -1297421 -1297447 -1297451 -1297459 -1297477 -1297487 -1297501 -1297507 -1297519 -1297523 -1297537 -1297561 -1297573 -1297601 -1297607 -1297619 -1297631 -1297633 -1297649 -1297651 -1297657 -1297669 -1297687 -1297693 -1297727 -1297739 -1297771 -1297781 -1297799 -1297841 -1297847 -1297853 -1297873 -1297927 -1297963 -1297973 -1297979 -1297993 -1298027 -1298039 -1298047 -1298053 -1298057 -1298111 -1298113 -1298117 -1298119 -1298131 -1298149 -1298161 -1298173 -1298191 -1298197 -1298221 -1298261 -1298279 -1298291 -1298309 -1298317 -1298329 -1298333 -1298351 -1298357 -1298371 -1298387 -1298467 -1298489 -1298491 -1298537 -1298551 -1298573 -1298581 -1298611 -1298617 -1298641 -1298651 -1298653 -1298699 -1298719 -1298723 -1298747 -1298771 -1298779 -1298789 -1298797 -1298809 -1298819 -1298831 -1298849 -1298863 -1298887 -1298909 -1298911 -1298923 -1298951 -1298963 -1298981 -1298989 -1299007 -1299013 -1299019 -1299029 -1299041 -1299059 -1299061 -1299079 -1299097 -1299101 -1299143 -1299169 -1299173 -1299187 -1299203 -1299209 -1299211 -1299223 -1299227 -1299257 -1299269 -1299283 -1299289 -1299299 -1299317 -1299323 -1299341 -1299343 -1299349 -1299359 -1299367 -1299377 -1299379 -1299437 -1299439 -1299449 -1299451 -1299457 -1299491 -1299499 -1299533 -1299541 -1299553 -1299583 -1299601 -1299631 -1299637 -1299647 -1299653 -1299673 -1299689 -1299709 diff --git a/files/AddAndSubtractPaths.java b/files/AddAndSubtractPaths.java index 30cf4de18..06409c9c8 100644 --- a/files/AddAndSubtractPaths.java +++ b/files/AddAndSubtractPaths.java @@ -52,13 +52,12 @@ public static void main(String[] args) { } } /* Output: -Windows 8.1 +Windows 10 C:\Git -(1)r OnJava8\ExtractedExamples\files\AddAndSubtractPath -s.java -RealPath: C:\Git\OnJava8\ExtractedExamples\files\AddAnd -SubtractPaths.java -(2)r OnJava8\ExtractedExamples\strings\..\files +(1)r OnJava8\ExtractedExamples\files\AddAndSubtractPaths.java +RealPath: +C:\Git\OnJava8\ExtractedExamples\files\AddAndSubtractPaths.java +(2)r OnJava8\ExtractedExamples\files RealPath: C:\Git\OnJava8\ExtractedExamples\files (3)r OnJava8\ExtractedExamples\files RealPath: C:\Git\OnJava8\ExtractedExamples\files @@ -68,7 +67,7 @@ public static void main(String[] args) { RealPath: C:\Git\OnJava8 (6)r OnJava8 RealPath: C:\Git\OnJava8 -(7)r OnJava8\ExtractedExamples\files\.\..\.. +(7)r OnJava8 RealPath: C:\Git\OnJava8 (8)r OnJava8 RealPath: C:\Git\OnJava8 diff --git a/files/FileSystemDemo.java b/files/FileSystemDemo.java index 9f7d9b7df..51f47cabd 100644 --- a/files/FileSystemDemo.java +++ b/files/FileSystemDemo.java @@ -26,20 +26,22 @@ public static void main(String[] args) { } } /* Output: -Windows 8.1 +Windows 10 File Store: (C:) File Store: System Reserved (E:) File Store: (F:) +File Store: Google Drive (G:) Root Directory: C:\ Root Directory: D:\ Root Directory: E:\ Root Directory: F:\ +Root Directory: G:\ Separator: \ UserPrincipalLookupService: -sun.nio.fs.WindowsFileSystem$LookupService$1@19e0bfd +sun.nio.fs.WindowsFileSystem$LookupService$1@1bd4fdd isOpen: true isReadOnly: false FileSystemProvider: -sun.nio.fs.WindowsFileSystemProvider@139a55 +sun.nio.fs.WindowsFileSystemProvider@55183b20 File Attribute Views: [owner, dos, acl, basic, user] */ diff --git a/files/PartsOfPaths.java b/files/PartsOfPaths.java index ee9865d6a..63a581e52 100644 --- a/files/PartsOfPaths.java +++ b/files/PartsOfPaths.java @@ -23,7 +23,7 @@ public static void main(String[] args) { } } /* Output: -Windows 8.1 +Windows 10 Git OnJava8 ExtractedExamples diff --git a/files/PathAnalysis.java b/files/PathAnalysis.java index ee2922f07..9800ed2c5 100644 --- a/files/PathAnalysis.java +++ b/files/PathAnalysis.java @@ -38,7 +38,7 @@ static void say(String id, Object result) { } } /* Output: -Windows 8.1 +Windows 10 Exists: true Directory: false Executable: true @@ -49,8 +49,8 @@ static void say(String id, Object result) { Hidden: false size: 1617 FileStore: (C:) -LastModified: : 2021-01-24T15:48:37.461504Z +LastModified: : 2021-11-08T00:34:52.693768Z Owner: GROOT\Bruce (User) -ContentType: null +ContentType: text/plain SymbolicLink: false */ diff --git a/files/PathInfo.java b/files/PathInfo.java index 019ca4594..78ef9e48b 100644 --- a/files/PathInfo.java +++ b/files/PathInfo.java @@ -9,17 +9,17 @@ public class PathInfo { static void show(String id, Object p) { - System.out.println(id + ": " + p); + System.out.println(id + p); } static void info(Path p) { - show("toString", p); - show("Exists", Files.exists(p)); - show("RegularFile", Files.isRegularFile(p)); - show("Directory", Files.isDirectory(p)); - show("Absolute", p.isAbsolute()); - show("FileName", p.getFileName()); - show("Parent", p.getParent()); - show("Root", p.getRoot()); + show("toString:\n ", p); + show("Exists: ", Files.exists(p)); + show("RegularFile: ", Files.isRegularFile(p)); + show("Directory: ", Files.isDirectory(p)); + show("Absolute: ", p.isAbsolute()); + show("FileName: ", p.getFileName()); + show("Parent: ", p.getParent()); + show("Root: ", p.getRoot()); System.out.println("******************"); } public static void main(String[] args) { @@ -37,15 +37,16 @@ public static void main(String[] args) { System.out.println(e); } URI u = p.toUri(); - System.out.println("URI: " + u); + System.out.println("URI:\n" + u); Path puri = Paths.get(u); System.out.println(Files.exists(puri)); File f = ap.toFile(); // Don't be fooled } } /* Output: -Windows 8.1 -toString: C:\path\to\nowhere\NoFile.txt +Windows 10 +toString: + C:\path\to\nowhere\NoFile.txt Exists: false RegularFile: false Directory: false @@ -54,7 +55,8 @@ public static void main(String[] args) { Parent: C:\path\to\nowhere Root: C:\ ****************** -toString: PathInfo.java +toString: + PathInfo.java Exists: true RegularFile: true Directory: false @@ -64,7 +66,7 @@ public static void main(String[] args) { Root: null ****************** toString: -C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java + C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java Exists: true RegularFile: true Directory: false @@ -73,7 +75,8 @@ public static void main(String[] args) { Parent: C:\Git\OnJava8\ExtractedExamples\files Root: C:\ ****************** -toString: C:\Git\OnJava8\ExtractedExamples\files +toString: + C:\Git\OnJava8\ExtractedExamples\files Exists: true RegularFile: false Directory: true @@ -83,7 +86,7 @@ public static void main(String[] args) { Root: C:\ ****************** toString: -C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java + C:\Git\OnJava8\ExtractedExamples\files\PathInfo.java Exists: true RegularFile: true Directory: false @@ -92,7 +95,7 @@ public static void main(String[] args) { Parent: C:\Git\OnJava8\ExtractedExamples\files Root: C:\ ****************** -URI: file:///C:/Git/OnJava8/ExtractedExamples/files/Pat -hInfo.java +URI: +file:///C:/Git/OnJava8/ExtractedExamples/files/PathInfo.java true */ diff --git a/functional/MethodReferences.java b/functional/MethodReferences.java index 4cd593455..4c1e5f9fb 100644 --- a/functional/MethodReferences.java +++ b/functional/MethodReferences.java @@ -2,7 +2,6 @@ // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. -import java.util.*; interface Callable { // [1] void call(String s); diff --git a/generics/coffee/CoffeeSupplier.java b/generics/coffee/CoffeeSupplier.java index 5fb68a288..90df2e463 100644 --- a/generics/coffee/CoffeeSupplier.java +++ b/generics/coffee/CoffeeSupplier.java @@ -23,7 +23,7 @@ public CoffeeSupplier() {} return (Coffee) types[rand.nextInt(types.length)] .getConstructor().newInstance(); - // Report programmer errors at run time: + // Report programmer errors at runtime: } catch(InstantiationException | NoSuchMethodException | InvocationTargetException | diff --git a/newio/data.txt b/newio/data.txt deleted file mode 100644 index 6dc5df604..000000000 --- a/newio/data.txt +++ /dev/null @@ -1 +0,0 @@ -Some text Some more \ No newline at end of file diff --git a/references/ImmutableStrings.java b/references/ImmutableStrings.java deleted file mode 100644 index 9ca8f72c7..000000000 --- a/references/ImmutableStrings.java +++ /dev/null @@ -1,25 +0,0 @@ -// references/ImmutableStrings.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. -// Demonstrating StringBuilder - -public class ImmutableStrings { - public static void main(String[] args) { - String foo = "foo"; - String s = "abc" + foo + "def" - + Integer.toString(47); - System.out.println(s); - // The "equivalent" using StringBuilder: - StringBuilder sb = - new StringBuilder("abc"); // Creates String - sb.append(foo); - sb.append("def"); // Creates String - sb.append(Integer.toString(47)); - System.out.println(sb); - } -} -/* Output: -abcfoodef47 -abcfoodef47 -*/ diff --git a/references/Stringer.java b/references/Stringer.java deleted file mode 100644 index 0a4d0dd8a..000000000 --- a/references/Stringer.java +++ /dev/null @@ -1,22 +0,0 @@ -// references/Stringer.java -// (c)2021 MindView LLC: see Copyright.txt -// We make no guarantees that this code is fit for any purpose. -// Visit http://OnJava8.com for more book information. - -public class Stringer { - public static String upcase(String s) { - return s.toUpperCase(); - } - public static void main(String[] args) { - String q = new String("howdy"); - System.out.println(q); // howdy - String qq = upcase(q); - System.out.println(qq); // HOWDY - System.out.println(q); // howdy - } -} -/* Output: -howdy -HOWDY -howdy -*/ diff --git a/streams/RandomGenerators.java b/streams/RandomGenerators.java index 78d6f231a..286368f3f 100644 --- a/streams/RandomGenerators.java +++ b/streams/RandomGenerators.java @@ -7,10 +7,10 @@ public class RandomGenerators { public static void show(Stream stream) { - stream - .limit(4) - .forEach(System.out::println); - System.out.println("++++++++"); + stream + .limit(4) + .forEach(System.out::println); + System.out.println("++++++++"); } public static void main(String[] args) { Random rand = new Random(47);