Merge branch 'charm' into virtualDebug
authorFilippo Gioachin <gioachin@uiuc.edu>
Wed, 21 Apr 2010 22:50:19 +0000 (17:50 -0500)
committerFilippo Gioachin <gioachin@uiuc.edu>
Wed, 21 Apr 2010 22:50:19 +0000 (17:50 -0500)
Conflicts:
src/ck-core/ck.C
src/langs/bluegene/blue.C

191 files changed:
CHANGES
build
doc/Makefile
doc/bigsim/install.tex
doc/doxygen/Makefile
doc/pose/configure.tex
examples/bigsim/tools/rewritelog/interpolatelog.C
examples/charm++/satisfiability/Makefile
examples/charm++/satisfiability/Solver.C [deleted file]
examples/charm++/satisfiability/Solver.h [deleted file]
examples/charm++/satisfiability/TNM/TNM.C [new file with mode: 0644]
examples/charm++/satisfiability/TNM/TNM.h [new file with mode: 0644]
examples/charm++/satisfiability/TNM/TNM.pdf [new file with mode: 0644]
examples/charm++/satisfiability/TNM/adaptnoisebis1at5.C [new file with mode: 0644]
examples/charm++/satisfiability/TNM/inputbis.C [new file with mode: 0644]
examples/charm++/satisfiability/example/example.cnf [moved from examples/charm++/satisfiability/example.cnf with 100% similarity]
examples/charm++/satisfiability/example/example_100.cnf [new file with mode: 0644]
examples/charm++/satisfiability/example/example_1000.cnf [new file with mode: 0644]
examples/charm++/satisfiability/example/example_4000.cnf [new file with mode: 0644]
examples/charm++/satisfiability/example/example_6000.cnf [new file with mode: 0644]
examples/charm++/satisfiability/example/example_8000.cnf [new file with mode: 0644]
examples/charm++/satisfiability/example/example_simple.cnf [moved from examples/charm++/satisfiability/example_simple.cnf with 90% similarity]
examples/charm++/satisfiability/main.C
examples/charm++/satisfiability/main.ci
examples/charm++/satisfiability/main.h
examples/charm++/satisfiability/minisat/Solver.C [new file with mode: 0644]
examples/charm++/satisfiability/minisat/Solver.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/SolverTypes.h [moved from examples/charm++/satisfiability/SolverTypes.h with 69% similarity]
examples/charm++/satisfiability/minisat/mtl/Alg.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/BasicHeap.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/BoxedVec.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/Map.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/Queue.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/Sort.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/Vec.h [new file with mode: 0644]
examples/charm++/satisfiability/minisat/mtl/minisatHeap.h [new file with mode: 0644]
examples/charm++/satisfiability/par_Solver.C [new file with mode: 0644]
examples/charm++/satisfiability/par_Solver.h [new file with mode: 0644]
examples/charm++/satisfiability/par_SolverTypes.h [new file with mode: 0644]
examples/charm++/satisfiability/verify/Makefile [new file with mode: 0644]
examples/charm++/satisfiability/verify/verify.C [new file with mode: 0644]
examples/fem/adapt/test/pgm.o [deleted file]
examples/pose/Ring/Makefile
examples/pose/Ring/pgm.C
src/arch/bluegenep/Makefile.machine
src/arch/bluegenep/cc-xlc.sh
src/arch/bluegenep/cc-xlc64.h [new file with mode: 0644]
src/arch/bluegenep/cc-xlc64.sh [new file with mode: 0644]
src/arch/bluegenep/conv-mach.sh
src/arch/common/cc-xlc64.h
src/arch/lapi/charmrun
src/arch/lapi/conv-mach-smp.sh
src/arch/mpi-crayxt/conv-mach-smp.h
src/arch/mpi-linux-ppc/cc-mpicxx.h
src/arch/mpi-linux-ppc/cc-mpicxx.sh
src/arch/mpi-linux-ppc/conv-mach.sh
src/arch/mpi-sp/charmrun
src/arch/mpi-win64/conv-mach.sh
src/arch/mpi/conv-common.sh [new file with mode: 0644]
src/arch/mpi/machine.c
src/arch/multicore-aix-ppc/cc-xlc64.h
src/arch/net-linux-ppc/conv-mach-ibverbs.h [new file with mode: 0644]
src/arch/net-linux-ppc/conv-mach-ibverbs.sh [new file with mode: 0644]
src/arch/net-linux-ppc/conv-mach-smp.h
src/arch/net-linux-ppc/conv-mach-smp.sh
src/arch/net/charmrun/charmrun.c
src/arch/net/machine-dgram.c
src/arch/net/machine.c
src/arch/uth/machine.c
src/ck-core/charm++.h
src/ck-core/charm.h
src/ck-core/ck.C
src/ck-core/ck.h
src/ck-core/ckarray.ci
src/ck-core/ckevacuation.h
src/ck-core/cklocation.C
src/ck-core/ckmemcheckpoint.C
src/ck-core/ckmemcheckpoint.ci
src/ck-core/ckstream.h
src/ck-core/debug-charm.C
src/ck-core/envelope.h
src/ck-core/init.C
src/ck-core/middle-blue.h
src/ck-cp/NelderMeadStateDiagram.pdf [new file with mode: 0644]
src/ck-cp/arrayRedistributor.C
src/ck-cp/arrayRedistributor.h
src/ck-cp/controlPoints.C
src/ck-cp/controlPoints.ci
src/ck-cp/controlPoints.h
src/ck-cp/controlPointsNoTrace.ci [new file with mode: 0644]
src/ck-ldb/CentralLB.C
src/ck-ldb/GreedyCommLB.h
src/ck-ldb/HybridBaseLB.C
src/ck-ldb/HybridBaseLB.h
src/ck-ldb/LBDatabase.C
src/ck-ldb/LBDatabase.h
src/ck-ldb/LBObj.h
src/ck-ldb/LButil.C
src/ck-ldb/NeighborCommLB.C
src/ck-ldb/NeighborLB.C
src/ck-ldb/NullLB.C
src/ck-ldb/OrbLB.C
src/ck-ldb/RefineCommLB.h
src/ck-ldb/RefineKLB.h
src/ck-ldb/RefineLB.h
src/ck-ldb/Refiner.h
src/ck-ldb/RefinerApprox.h
src/ck-ldb/RefinerComm.h
src/ck-ldb/WSLB.C
src/ck-ldb/ckheap.C [moved from src/ck-ldb/heap.C with 99% similarity]
src/ck-ldb/ckheap.h [moved from src/ck-ldb/heap.h with 100% similarity]
src/ck-ldb/ckset.C [moved from src/ck-ldb/Set.C with 99% similarity]
src/ck-ldb/ckset.h [moved from src/ck-ldb/Set.h with 100% similarity]
src/ck-ldb/elements.h
src/ck-ldb/lbdb.C
src/ck-ldb/lbdb.h
src/ck-ldb/lbdbf.C
src/ck-perf/trace-bluegene.h
src/ck-perf/trace-common.C
src/ck-perf/trace-converse.c
src/ck-perf/trace-projections.C
src/ck-perf/trace-projector.C
src/ck-perf/trace-summary.C
src/ck-perf/trace.h
src/conv-core/conv-config.h
src/conv-core/conv-trace.h
src/conv-core/convcore.c
src/conv-core/converse.h
src/conv-core/cpuaffinity.c
src/conv-core/cputopology.C
src/conv-core/isomalloc.c
src/conv-core/memory-charmdebug.c
src/conv-core/threads.c
src/conv-perf/traceCore.C
src/conv-perf/traceCoreAPI.h
src/conv-perf/traceCoreCommon.C
src/langs/bluegene/bigsim_init.C
src/langs/bluegene/bigsim_proc.C
src/langs/bluegene/bigsim_record.h
src/langs/bluegene/blue.C
src/langs/bluegene/blue.h
src/langs/bluegene/blue_impl.h
src/langs/charj/build.xml
src/langs/charj/lib/ant-antlr3.jar
src/libs/ck-libs/ampi/ampi.C
src/libs/ck-libs/armci/armci.h
src/libs/ck-libs/armci/armci_api.C
src/libs/ck-libs/armci/armci_impl.h
src/libs/ck-libs/armci/armci_vp.C
src/libs/ck-libs/pose/eqheap.h
src/libs/ck-libs/pose/etrans.pl
src/libs/ck-libs/pose/evq.C
src/libs/ck-libs/pose/evq.h
src/libs/ck-libs/pose/gvt.C
src/libs/ck-libs/pose/gvt.ci
src/libs/ck-libs/pose/gvt.h
src/libs/ck-libs/pose/memory_temporal.ci
src/libs/ck-libs/pose/memory_temporal.h
src/libs/ck-libs/pose/mempool.ci
src/libs/ck-libs/pose/mempool.h
src/libs/ck-libs/pose/pose.C
src/libs/ck-libs/pose/pose.ci
src/libs/ck-libs/pose/pose.h
src/libs/ck-libs/pose/pose_config.h
src/libs/ck-libs/pose/pvtobj.C
src/libs/ck-libs/pose/pvtobj.h
src/libs/ck-libs/pose/rep.h
src/libs/ck-libs/pose/seq.C
src/libs/ck-libs/pose/sim.C
src/libs/ck-libs/pose/sim.ci
src/libs/ck-libs/pose/sim.h
src/libs/ck-libs/pose/srtable.h
src/libs/ck-libs/pose/stats.ci
src/libs/ck-libs/pose/stats.h
src/scripts/Make.depends
src/scripts/Makefile
src/scripts/charmc
src/scripts/configure
src/scripts/configure.in
src/scripts/conv-autoconfig.h.in
src/scripts/conv-config.sh
src/scripts/gendeps4ci [new file with mode: 0755]
src/util/ckcomplex.h
src/util/crc32.c
src/util/crc32.h
src/xlat-i/xi-grammar.tab.C
src/xlat-i/xi-grammar.tab.h
src/xlat-i/xi-grammar.y
src/xlat-i/xi-symbol.h
tests/converse/commbench/commbench.c
tests/converse/commbench/smputil.c [changed mode: 0644->0755]

diff --git a/CHANGES b/CHANGES
index c430db772a326a024808278392cbdffa1970bba6..e99757ab6dc6bfa8127c313d5aa7757f41064dfb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -13,6 +13,8 @@ New Supported Platforms:
 
 Windows HPC cluster, using mpi-win32/mpi-win64
 
+Mac OSX 10.6, Snow Leopard (32-bit and 64-bit).
+
 --------------------------------------------------------------------------------
 General Changes
 --------------------------------------------------------------------------------
@@ -25,12 +27,30 @@ Runtime support
  - Bug fix: Quiescence detection (QD) works with immediate messages
  - New reduction functions implemented in Converse
  - CCS (Converse Client-Server) can deliver message to more than one processor
+ - Added a memory-aware adaptive scheduler, which can be optionally
+   compiled in to charm
+ - Added preliminary support for automatic message prioritization
+   (disabled by default)
 
 Charm++
  - Cross-array and cross-group sections
  - Structured Dagger (SDAG): Support templated arguments properly
  - Plain chares support checkpoint/restart (both in-memory and disk-based)
  - Conditional packing of messages and parameters in SMP scenario
+ - Changes to the CkArrayIndex class hierarchy
+   -- sizeof() all CkArrayIndex* classes is now the same
+   -- Codes using custom array indices have to use placement-new to construct
+      their custom index. Refer example code: examples/charm++/hello/fancyarray/
+   -- *** Backward Incompatibility ***
+      CkArrayIndex[4D/5D/6D]::index are now of type int (instead of short)
+      However the data is stored as shorts. Access by casting
+      CkArrayIndexND::data() appropriately
+   -- *** Deprecated ***
+      The direct use of public data member
+      CkArrayIndexND::index (N=1..6) is deprecated. We reserve the right to
+      change/remove this variable in future releases of Charm++.
+      Instead, please access the indices via member function:
+      int CkArrayIndexND::data()
 
 Adaptive MPI (AMPI)
  - Compilers renamed to avoid collision with host MPI (ampicc, ampiCC,
@@ -49,26 +69,44 @@ Multiphase Shared Arrays (MSA)
  - 3D arrays
 
 TCharm
- - Automatic tracing of API calls for simulation and analysis.
+ - Automatic tracing of API calls for simulation and analysis
 
 Debugging
  - Wider support for architectures other than net- (in particular MPI layers)
  - Improved support for large scale debugging (better scalability)
- - Enhanced record/replay stability to handle various events, and to signal unexpected messages
- - New detailed record/replay: The full content of messages can be recorded, and a single processor can be re-executed outside of the parallel application
+ - Enhanced record/replay stability to handle various events, and to
+   signal unexpected messages
+ - New detailed record/replay: The full content of messages can be
+   recorded, and a single processor can be re-executed outside of the
+   parallel application
 
 Performance analysis
  - Tracing of nested entry methods
 
+Automatic Performance Tuning
+ - Created an automatic tuning framework [still for experimental use only]
+
+CkMulticast
+ - Network-topology / node aware spanning trees used internally for and
+   lower bytes on the network and improved performance in multicasts and
+   reductions delegated to this library
+
+Comlib
+ - Improved OneTimeMulticastStrategy classes
+
 BigSim
  - Out-of-core support, with prefetching capability
  - Detailed tracing of MPI calls
- - Detailed record/replay support at emulation time, capable of replaying any emulated processor after obtained recorded logs.
+ - Detailed record/replay support at emulation time, capable of
+   replaying any emulated processor after obtained recorded logs.
 
 --------------------------------------------------------------------------------
 Architecture-specific changes
 --------------------------------------------------------------------------------
 
+Net-*
+ - Can run jobs with more than 1024 PEs
+
 Net-Linux
  - New charmrun option ++no-va-randomization to disable address space
    randomization (ASLR). This is most useful for running AMPI with
@@ -86,14 +124,21 @@ Power 7
 Blue Gene/L
  - Compilers and options have been updated to the latest ones
 
+Blue Gene/P
+ - Added routines for measuring performance counters on BG/P.
+ - Updated to support latest DCMF driver version. On ANL's Intrepid, you may
+   need to set BGP_INSTALL=/bgsys/drivers/V1R4M1_460_2009-091110P/ppc in your
+   environment. This is the default on ANL's Surveyor.
+
 Cray XT
  - cputopology information is now available on XT3/4/5
 
 Infiniband (ibverbs)
  - Bug fix: plug memory leaks that caused failures in long runs
+ - Optimized to reduce startup delays
 
 LAPI
- - Support for SMP
+ - Support for SMP (experimental)
 
 
 ================================================================================
diff --git a/build b/build
index 8918c6f3ca0b8ed45fca7c86ff1849789aef1446..dd5877a2f4de62f81d43a83a4fab67b12795a419 100755 (executable)
--- a/build
+++ b/build
@@ -335,6 +335,15 @@ do
                QUIET="--quiet"
                shift;
                ;;
+    --enable-tracing|--enable-tracing=*)
+               CONFIG_OPTS="$CONFIG_OPTS $1"
+               ENABLE_TRACING=yes
+               shift
+               ;;
+    --enable-*)
+               CONFIG_OPTS="$CONFIG_OPTS $1"
+               shift
+               ;;
     -j*)
                 PMAKENUM=`echo $1 | awk -Fj '{print $2}'`
                MAKEOPTS="$MAKEOPTS -j $PMAKENUM"
@@ -368,6 +377,7 @@ do
           TestIfOption $1
           BOPTS="$BOPTS $1"
           [ $1 =  "bigemulator" ] && BUILD_EMULATOR=1
+          [ $1 =  "bigsim" ] && BUILD_EMULATOR=1
         fi
         shift
        ;;
@@ -376,6 +386,12 @@ done
 
 [ "x$VERSION" = "x" ] && syntax && exit 1
 
+if test -n "$WITH_PRODUCTION" -a $BUILD_EMULATOR -eq 1 -a -z "$ENABLE_TRACING"
+then
+  echo "Error: bigemulator requires tracing modules, --with-production must be used with --enable-tracing"
+  exit 1
+fi
+
 if [ -z "$MAKE" ] 
 then
   # prefer gmake
@@ -528,8 +544,10 @@ fi
 
 if test -n "$WITH_PRODUCTION"
 then
-    echo '#define CMK_OPTIMIZE' >> $ConvHeader
-    echo '#define CMK_REPLAYSYSTEM  0' >> $ConvHeader
+    echo '#define CMK_OPTIMIZE 1' >> $ConvHeader
+    # Prepend optimize so that an explicit -no-optimize still works
+    OPTS="-optimize $OPTS"
+    CONFIG_OPTS="--disable-tracing --disable-replay $CONFIG_OPTS"
 fi
 
 # build with Tau
@@ -584,8 +602,10 @@ printError()
 
 echo 'BUILDOPTS="'$OPTS'"'  >> $ConvSh
 
-Echo "Performing '$MAKE $MAKEOPTS basics OPTS="$OPTS" QUIET="$QUIET"' in $DESTINATION/tmp"
+Echo "Performing '$MAKE $MAKEOPTS basics OPTS="$OPTS" QUIET="$QUIET" CONFIG_OPTS="$CONFIG_OPTS"' in $DESTINATION/tmp"
 cd $DESTINATION/tmp 
+echo "CONFIG_OPTS=\"$CONFIG_OPTS\"" > config_opts.sh
+chmod +x config_opts.sh
 $MAKE $MAKEOPTS basics OPTS="$OPTS $BUILD_SHARED" QUIET="$QUIET"
 MAKEEXIT=$?
 [ $MAKEEXIT -ne 0 ] && printError
index fdbd4e36a0042233c87496c5d258e79b04fe52e2..c1f7d8d53f4675d1b91d64ad6e691916ef461f11 100644 (file)
@@ -26,15 +26,18 @@ doc:
 web: doc
        -rm -rf $(WEBDIR)/ps.new $(WEBDIR)/pdf.new $(WEBDIR)/html.new
        -rm -rf $(WEBDIR)/ps.old $(WEBDIR)/pdf.old $(WEBDIR)/html.old
+       -rm -rf $(WEBDIR)/ps.old.nobackup $(WEBDIR)/pdf.old.nobackup $(WEBDIR)/html.old.nobackup
        cp -r ps $(WEBDIR)/ps.new
        cp -r pdf $(WEBDIR)/pdf.new
        cp -r html $(WEBDIR)/html.new
        cp manual.css $(WEBDIR)/
-       chgrp -R kale $(WEBDIR)/ps.new $(WEBDIR)/pdf.new $(WEBDIR)/html.new $(WEBDIR)/manual.css
-       chmod -R g+w $(WEBDIR)/ps.new $(WEBDIR)/pdf.new $(WEBDIR)/html.new $(WEBDIR)/manual.css
-       mv $(WEBDIR)/ps $(WEBDIR)/ps.old
-       mv $(WEBDIR)/pdf $(WEBDIR)/pdf.old
-       mv $(WEBDIR)/html $(WEBDIR)/html.old
+       chgrp -R kale $(WEBDIR)/ps.new $(WEBDIR)/pdf.new $(WEBDIR)/html.new
+       -chgrp -R kale $(WEBDIR)/manual.css
+       chmod -R g+w $(WEBDIR)/ps.new $(WEBDIR)/pdf.new $(WEBDIR)/html.new
+       -chmod -R g+w $(WEBDIR)/manual.css
+       mv $(WEBDIR)/ps $(WEBDIR)/ps.old.nobackup
+       mv $(WEBDIR)/pdf $(WEBDIR)/pdf.old.nobackup
+       mv $(WEBDIR)/html $(WEBDIR)/html.old.nobackup
        mv $(WEBDIR)/ps.new $(WEBDIR)/ps
        mv $(WEBDIR)/pdf.new $(WEBDIR)/pdf
        mv $(WEBDIR)/html.new $(WEBDIR)/html
index 5982987ef2d0e59dc15cd6751bdfb3b452922a4a..6cbe388a735478d4360db3c1e5a8e57bbc4d3dce 100644 (file)
@@ -39,7 +39,7 @@ normal \charmpp{} using ``bgampi'' as the compilation target, like
 \end{verbatim}
 
 With Emulator libraries, one can write BigSim applications using its
-low level machine API.
+low level machine API (defined in ~\ref{bgemulator}).
 
 \subsubsection{Building Charm++ or AMPI on the BigSim Emulator}
 
@@ -58,6 +58,8 @@ which tells ``build'' to build Charm++ on top of the BigSim Emulator.
 The above ``build" command creates a directory named
 ``net-linux-x86\_64-bigemulator" under charm, which contains all the header
 files and libraries needed for compiling a user application.
+With this version of Charm++, one can run normal Charm++ and AMPI application
+on top of the emulator (in a virtualized environment).
 
 \subsection{Compiling BigSim Applications}
 
@@ -126,7 +128,8 @@ charmc -o hello hello.C -language ampi
 \end{verbatim}
 
 Sample applications in AMPI can be found in the directory charm/examples/ampi,
-specifically charm/examples/ampi/pingpong.
+specifically \\
+charm/examples/ampi/pingpong.
 
 \subsection{Running a BigSim Application}
 
@@ -148,17 +151,18 @@ machine (assuming a torus/mesh topology);
 \item {\tt +wth} and {\tt +cth}:  For one node, these two parameters define the
 number of worker processors~({\tt +wth}) and the number of communication
 processors~({\tt +cth}).
-\item {\tt +bglog}: used so that BigSim logfiles get created
-\item {\tt +bgcorrect}: starts the simulation mode for performance prediction.
-Otherwise the program runs without doing parallel event simulation for
-performance prediction of the application.
 \item {\tt +bgwalltime}: used only in simulation mode, when specified, use
 wallclock measurement of the time taken on the simulating machine to estimate
 the time it takes to run on the target machine.
 \item {\tt +bgcounter}:  used only in simulation mode, when specified, use the
 performance counter to estimate the time on target machine. This is currently
 only supported when perfex is installed, like Origin2000.
-\end{enumerate}
+\item {\tt +bglog}: generate BigSim trace log files, which can be used with BigNetSim. 
+\item {\tt +bgcorrect}: starts the simulation mode to predict performance.
+Without this option, a program simply runs on the emulator without doing any
+performance prediction.  Note: this option is obsolete, and no longer
+maintained, use +bglog to generate trace logs, and use BigNetSim for
+performance prediction.  \end{enumerate}
 
 For example, to simulate a parallel machine of size 64K as 40x40x40, with one
 worker processor and one communication processor on each node, and use 100 real
index 9a06a09c30c8b46271d4beab2bc774d530038875..434a1c214bded56e332a822bccd092d3b3c4336d 100644 (file)
@@ -3,9 +3,12 @@ doxygen:
        doxygen charm.conf
 
 web:  doxygen
-       /bin/rm -r -f /www/doxygen/charm.old 
-       /bin/mv -f /www/doxygen/charm /www/doxygen/charm.old
+       -/bin/rm -r -f /www/doxygen/charm.old
+       -/bin/rm -r -f /www/doxygen/charm.old.nobackup
        /bin/mv html /www/doxygen/charm.new
+       /bin/mv -f /www/doxygen/charm /www/doxygen/charm.old.nobackup
        /bin/mv /www/doxygen/charm.new /www/doxygen/charm
-       chown -R kale:kale /www/doxygen/charm  /www/doxygen/charm.old
-       chmod -R 775 /www/doxygen/charm  /www/doxygen/charm.old
+       chown -R kale:kale /www/doxygen/charm
+       -chown -R kale:kale /www/doxygen/charm.old.nobackup
+       chmod -R 775 /www/doxygen/charm
+       -chmod -R 775 /www/doxygen/charm.old.nobackup
index 5ee3f16e09d82aa615bbb646a5014d516fc1228e..6bae518cecd65be6b11032a5b0f884aa8f1edb7b 100644 (file)
@@ -75,6 +75,10 @@ defaults set in the {\tt pose\_config.h} file
        $\circ$ Minimum threshold for load balancing, default is 4000
 \item {\tt {\bf +lb\_diff\_pose N}}\\
        $\circ$ Once the load has been analyzed, we compute the difference between the max and min PE loads.  Only if this difference exceeds {\tt LB\_DIFF} do we bother migrating posers.\\
+\item {\tt {\bf +checkpoint\_gvt\_pose N}}\\
+       $\circ$ Checkpoint to disk approximately every N GVT ticks (N is an integer).  The default is 0, which indicates no checkpointing.
+\item {\tt {\bf +checkpoint\_time\_pose N}}\\
+       $\circ$ Checkpoint to disk every N seconds (N is an integer).  The default is 0, which indicates no checkpointing.  If both this parameter and +checkpoint\_gvt\_pose are greater than 0, a warning will be given, the value of this parameter will be set to 0, and POSE will checkpoint based on GVT ticks.
 \end{itemize}
 
 As a technical point, pose command line parsing is done inside the
index 976e65ad90448cfb837bbbe1db2e198e42c308cf..39fd711b930deaca3bdf873b395bb69141e147f0 100644 (file)
@@ -59,7 +59,7 @@ double map_linearly_to_interval(double val, double old_lower, double old_upper,
   if(val == old_lower)
        new_val = new_lower;
   else if(val == old_upper)
-       new_val = old_lower;
+       new_val = new_upper;
   else
        new_val = new_lower + ((val-old_lower)*(new_upper-new_lower))/(old_upper-old_lower);
 
@@ -304,7 +304,7 @@ int main()
 #ifdef WRITE_OUTPUT_FILES
             // Write out the file
             cout << "writing " << rec_count << " simulated processors to this bgTrace file" << endl;
-            BgWriteTimelines(fileNum,tlinerecs,rec_count,numWth,OUTPUTDIR);
+            BgWriteTimelines(fileNum,tlinerecs,rec_count,OUTPUTDIR);
 #endif
         delete[] tlinerecs;
 
index ae22ab6761dcc08809c9dc96295b7c5c7814634d..7bd90206dd12599f3782a7d3b55dd34ad5fb0ab8 100644 (file)
@@ -1,24 +1,52 @@
+MINISAT                  = minisat
+TNM                      = TNM
 #CHARMDIR = /Users/yanhuasun/PPL/charm/charm-6.1.2/multicore-darwin-x86_64
 OPTS = -g
-CHARMC = charmc $(OPTS)  
+CXX = charmc   
 default: all
-all: sat
+all: parsat_minisat parsat_tnm
 
-sat : main.o Solver.o 
-       $(CHARMC) -lz -language charm++  -o sat main.o Solver.o
+CFLAGS    = $(OPTS)  -ffloat-store
+CMINISATFLAGS = $(CFLAGS) -I$(MINISAT) -DMINISAT
+CTNMFLAGS       = $(CFLAGS) -I$(TNM) -DTNM
+LFLAGS    =  -lz -language charm++
+COPTIMIZE = -O3
 
-main.o : main.C main.decl.h main.def.h 
-       $(CHARMC) -o main.o main.C 
+CXX_COMPILE = $(CXX)
+
+CXX_LD = $(CXX) $(LFLAGS)
+
+parsat_minisat: $(MINISAT)/Solver.o par_Solver_minisat.o main.o
+       $(CXX_LD) $(LFLAGS) -o parsat_minisat $(MINISAT)/Solver.o par_Solver_minisat.o main.o
 
-Solver.o : Solver.C SolverTypes.h
-       $(CHARMC) -o Solver.o Solver.C
 
-#util.o : util.C
-#      $(CHARMC) -o util.o util.c
+main.o : main.C main.decl.h main.def.h 
+       $(CXX_COMPILE) $(CMINISATFLAGS) -o main.o -c main.C
+
+par_Solver_minisat.o : par_Solver.C par_SolverTypes.h par_Solver.h $(MINISAT)/SolverTypes.h  main.decl.h main.def.h 
+       $(CXX_COMPILE) $(CMINISATFLAGS) -o par_Solver_minisat.o -c par_Solver.C
 
 main.def.h main.decl.h : main.ci
-       $(CHARMC) main.ci
+       $(CXX) main.ci
+
+$(MINISAT)/Solver.o: $(MINISAT)/Solver.C $(MINISAT)/Solver.h  $(MINISAT)/SolverTypes.h 
+       $(CXX_COMPILE) $(CMINISATFLAGS) -o $(MINISAT)/Solver.o -c $(MINISAT)/Solver.C 
+
+
+parsat_tnm: $(TNM)/TNM.o par_Solver_tnm.o main.o
+       $(CXX) $(LFLAGS) -o parsat_tnm $(TNM)/TNM.o par_Solver_tnm.o main.o 
+
+par_Solver_tnm.o : par_Solver.C par_SolverTypes.h par_Solver.h  main.decl.h main.def.h 
+       $(CXX_COMPILE) $(CTNMFLAGS) -o par_Solver_tnm.o -c par_Solver.C 
+
+$(TNM)/TNM.o: $(TNM)/TNM.C
+       $(CXX_COMPILE) $(CTNMFLAGS) -o $(TNM)/TNM.o -c $(TNM)/TNM.C
+
+#$(TNM)/adaptnoisebis1at5.o: $(TNM)/adaptnoisebis1at5.C
+#      $(CXX_COMPILE) $(CTNMFLAGS) -o $(TNM)/adaptnoisebis1at5.o -c $(TNM)/adaptnoisebis1at5.C
+
+#$(TNM)/inputbis.o : $(TNM)/inputbis.C
+#      $(CXX_COMPILE) $(CTNMFLAGS) -o $(TNM)/inputbis.o -c $(TNM)/inputbis.C
 
 clean:
-       rm *.o *.def.h *.decl.h
-       rm  sat
+       @rm -f parsat_minisat *.def.h *.decl.h *.o $(MINISAT)/*.o $(TNM)/*.o charmrun
diff --git a/examples/charm++/satisfiability/Solver.C b/examples/charm++/satisfiability/Solver.C
deleted file mode 100644 (file)
index 3cdc120..0000000
+++ /dev/null
@@ -1,588 +0,0 @@
-#include "main.decl.h"
-#include "SolverTypes.h"
-#include "Solver.h"
-#include <map>
-#include <vector>
-
-using namespace std;
-
-extern CProxy_Main mainProxy;
-extern int grainsize;
-
-SolverState::SolverState()
-{
-
-    var_frequency = 0;
-}
-
-inline int SolverState::nVars()
-{
-    return var_frequency; 
-}
-
-Var SolverState::newVar(bool sign, bool dvar)
-{
-    int v = nVars();
-    var_frequency++;
-    return v;
-}
-
-void SolverState::attachClause(Clause& c)
-{
-
-}
-
-/* add clause, before adding, check unit conflict */
-bool SolverState::addClause(CkVec<Lit>& ps)
-{
-    /*TODO precheck is needed here */
-    if(ps.size() == 1)//unit clause
-    {
-        for(int _i=0; _i<unit_clause_index.size(); _i++)
-        {
-            int index = unit_clause_index[_i];
-
-            Clause unit = clauses[index];
-            Lit     unit_lit = unit[0];
-
-            if(unit_lit == ~ps[0])
-            {
-   
-                CkPrintf("clause conflict between %d and %d\n", index, clauses.size());
-                return false;
-            }
-            /*else if(unit_lit == ps[0])
-            {
-                return true;
-            }*/
-        }
-       /* all unit clauses are checked, no repeat, no conflict */
-        unit_clause_index.push_back(clauses.size());
-    }else{
-    //check whether the clause is already satisfiable in any case
-    /* if x and ~x exist in the same clause, this clause is already satisfiable, we do not have to deal with it */
-   
-    for(int i=0; i< ps.size(); i++)
-    {
-        Lit lit = ps[i];
-
-        for(int j=0; j<i; j++)
-        {
-            if(lit == ~ps[j])
-            {
-                CkPrintf("This clause is already satisfiable\n");
-                for(int _i=0; _i<ps.size(); _i++)
-                {
-                   occurrence[abs(toInt(ps[_i])-1)]--; 
-                   if(toInt(ps[_i]) > 0)
-                       positive_occurrence[abs(toInt(ps[_i])-1)]--; 
-                }
-                return true;
-            }
-        }
-    }
-    }
-    clauses.push_back(Clause());
-    clauses[clauses.size()-1].attachdata(ps, false);
-    return true;
-}
-
-void SolverState::assignclause(CkVec<Clause>& cls )
-{
-    clauses.removeAll();
-    for(int i=0; i<cls.size(); i++)
-    {
-        clauses.push_back( cls[i]);
-    }
-}
-
-/* *********** Solver chare */
-
-Solver::Solver(SolverState* state_msg)
-{
-
-    CkVec<Clause> next_clauses;
-    /* Which variable get assigned  */
-    Lit assigned_var = state_msg->assigned_lit;
-#ifdef DEBUG    
-    CkPrintf("\n\nNew chare: literal = %d, occurrence size=%d, level=%d \n", toInt(assigned_var), state_msg->occurrence.size(), state_msg->level);
-#endif    
-    SolverState *next_state = copy_solverstate(state_msg);
-    
-    //Unit clauses
-    map<int, int>  unit_clauses;
-
-    /* use this value to propagate the clauses */
-    for(int i=0; i<(state_msg->clauses).size(); i++)
-    {
-        Clause cl = ((state_msg->clauses)[i]);
-        CkVec<Lit> new_clause;
-        bool satisfied = false;
-#ifdef DEBUG    
-//        CkPrintf("\n");
-#endif
-        for(int j=0; j<cl.size();  j++)
-        {
-            Lit lit = cl[j];
-#ifdef DEBUG    
-        //    CkPrintf("%d   ", toInt(lit));
-#endif
-            if(lit == assigned_var)
-            {
-                satisfied = true;
-                break;
-            }else if( lit == ~(assigned_var))
-            {
-            } else
-            {
-                new_clause.push_back(lit);
-            }
-        }
-        if(satisfied)
-        {
-            for(int j=0; j<cl.size();  j++)
-            {
-                Lit lit = cl[j];
-                if(lit != assigned_var)
-                {
-                    int int_lit = toInt(lit);
-                    (next_state->occurrence[abs(int_lit)-1])--;
-                    if(int_lit > 0)
-                        (next_state->positive_occurrence[abs(int_lit)-1])--;
-                }
-            }
-        } else if(new_clause.size() == 0 )
-        {
-        
-            /* conflict */
-            return;
-        }else if(new_clause.size() == 1)
-        {
-            /*unit clause */
-            Lit lit = new_clause[0];
-            if(unit_clauses.find(-toInt(lit)) !=unit_clauses.end())
-            {
-#ifdef DEBUG
-                CkPrintf("conflict detected by unit progation, size=%d\n", unit_clauses.size());
-#endif
-                return;
-                /* conflict*/
-            }else
-            {
-                (unit_clauses[toInt(lit)])++;
-                int int_lit = toInt(lit);
-                int_lit>0?state_msg->occurrence[int_lit-1]=-2:state_msg->occurrence[-int_lit-1]=-1;
-#ifdef DEBUG
-                CkPrintf(" unit clause %d=%d, size=%D\n", toInt(lit), unit_clauses[toInt(lit)], unit_clauses.size());
-#endif
-            }
-        }
-        else if(new_clause.size() > 1)
-        {
-            Clause clsc(new_clause, false);
-            next_clauses.push_back(clsc);
-        }
-    } /* all clauses are checked*/
-   
-    if(next_clauses.size() == 0)
-    {
-        /* one solution is found*/
-        /* print the solution*/
-        CkPrintf("one solutions found level=%d parallel\n", state_msg->level);
-       /* 
-        for(int _i=0; _i<state_msg->var_size; _i++)
-        {
-            if(state_msg->occurrence[_i] == -2)
-                CkPrintf(" TRUE ");
-            else if(state_msg->occurrence[_i] == -1)
-                CkPrintf(" FALSE ");
-            else
-                CkPrintf(" Anything ");
-        }*/
-        CkPrintf("\n");
-        mainProxy.done();//highest priority
-        //CkExit();
-        return;
-    }else
-    {
-        /* make a decision and then fire new tasks */
-        /* if there is unit clause, should choose these first??? TODO */
-        /* TODO which variable to pick up */
-        /*unit clause literal and also which occurrs most times */
-        while(!unit_clauses.empty())
-        {
-           //CkPrintf(" parallel propagation unit clauses size=%d, non unit size=%d, assigned var=%d\n", unit_clauses.size(), next_clauses.size(), toInt(assigned_var));
-            int first_unit = (*(unit_clauses.begin())).first;
-           //assign this variable
-            for(int _i=0; _i<next_clauses.size(); _i++)
-            {
-                Clause& cl = next_clauses[_i];
-               
-                //reduce the clause
-                for(int j=0; j<cl.size(); j++)
-                {
-                    Lit lit = cl[j];
-                    if(toInt(lit) == first_unit)//this clause goes away
-                    {
-                        for(int jj=0; jj<cl.size(); jj++)
-                        {
-                            Lit lit_2 = cl[jj];
-                            (next_state->occurrence[abs(toInt(lit_2))-1])--; 
-                            if(toInt(lit_2) > 0)
-                                (next_state->positive_occurrence[abs(toInt(lit_2))-1])--; 
-                        }
-                        next_clauses.remove(_i);
-                        _i--;
-                       break; 
-                    }else if (toInt(lit) == -first_unit)
-                    {
-                        cl.remove(j);
-                        j--;
-                    }
-                }
-                if(cl.size()==0){ // conflict
-                    return;
-                }else if(cl.size() == 1)// new unit clause
-                {
-                    unit_clauses[toInt(cl[0])]++;
-                
-                    next_clauses.remove(_i);
-                    _i--;
-                }
-            }
-            /*remove this unit clause */
-            unit_clauses.erase(unit_clauses.begin());
-        }
-
-        }
-
-    if(next_clauses.size() == 0)
-    {
-        CkPrintf(" one solutions found after propagation \n");
-        mainProxy.done();
-        //CkExit();
-        return;
-    }
-        int max_index = get_max_element(next_state->occurrence);
-#ifdef DEBUG
-        CkPrintf("max index = %d\n", max_index);
-#endif
-        if(next_state->occurrence[max_index] <=0)
-        {
-            CkPrintf("Unsatisfiable\n");
-            mainProxy.done();
-            //CkExit();
-            return;
-        }
-
-
-        //if() left literal unassigned is larger than a grain size, parallel 
-        /* When we start sequential 3SAT Grainsize problem*/
-        next_state->assignclause(next_clauses);
-        next_state->var_size = state_msg->var_size;
-
-        SolverState *new_msg2 = copy_solverstate(next_state);;
-        new_msg2->var_size = state_msg->var_size;
-
-        next_state->level = state_msg->level+1;
-       
-
-        int lower = state_msg->lower;
-        int higher = state_msg->higher;
-        int middle = (lower+higher)/2;
-        int positive_max = next_state->positive_occurrence[max_index];
-        if(positive_max >= next_state->occurrence[max_index] - positive_max)
-        {
-            next_state->assigned_lit = Lit(max_index+1);
-            next_state->occurrence[max_index] = -2;
-        }
-        else
-        {
-            next_state->assigned_lit = Lit(-max_index-1);
-            next_state->occurrence[max_index] = -1;
-        }
-        bool satisfiable_1 = true;
-        bool satisfiable_0 = true;
-
-        if(next_state->clauses.size() > grainsize)
-        {
-            next_state->lower = lower + 1;
-            next_state->higher = middle;
-            *((int *)CkPriorityPtr(next_state)) = lower+1;
-            CkSetQueueing(next_state, CK_QUEUEING_IFIFO);
-            CProxy_Solver::ckNew(next_state);
-        }
-        else //sequential
-        {
-            satisfiable_1 = seq_solve(next_state);
-            if(satisfiable_1)
-            {
-                CkPrintf(" One solutions found by sequential algorithm\n");
-                mainProxy.done();
-                //CkExit();
-                return;
-            }
-        }
-
-        new_msg2->level = state_msg->level+1;
-        if(positive_max >= new_msg2->occurrence[max_index] - positive_max)
-        {
-            new_msg2->assigned_lit = Lit(-max_index-1);
-            new_msg2->occurrence[max_index] = -1;
-        }
-        else
-        {
-            new_msg2->assigned_lit = Lit(max_index+1);
-            new_msg2->occurrence[max_index] = -2;
-        }
-        if(new_msg2->clauses.size() > grainsize)
-        {
-
-            new_msg2->lower = middle + 1;
-            new_msg2->higher = higher-1;
-            *((int *)CkPriorityPtr(new_msg2)) = middle+1;
-            CkSetQueueing(new_msg2, CK_QUEUEING_IFIFO);
-            CProxy_Solver::ckNew(new_msg2);
-        }
-        else
-        {
-            satisfiable_0 = seq_solve(new_msg2);
-
-            if(satisfiable_0)
-            {
-                CkPrintf(" One solutions found by sequential algorithm\n");
-                mainProxy.done();
-                //CkExit();
-                return;
-            }
-
-        }
-
-        if(!satisfiable_1 && !satisfiable_0)
-        {
-            CkPrintf("Unsatisfiable through sequential\n");
-            mainProxy.done();
-            //CkExit();
-        }
-}
-
-/* Which literals are already assigned, which is assigned this interation, the unsolved clauses */
-/* should all these be passed as function parameters */
-/* solve the 3sat in sequence */
-
-long long int computes = 0;
-bool Solver::seq_solve(SolverState* state_msg)
-{
-       
-    CkVec<Clause> next_clauses;
-    /* Which variable get assigned  */
-    Lit assigned_var = state_msg->assigned_lit;
-#ifdef DEBUG
-    CkPrintf("\n\n Computes=%d Sequential SAT New chare: literal = %d,  level=%d, unsolved clauses=%d\n", computes++, toInt(assigned_var), state_msg->level, state_msg->clauses.size());
-    //CkPrintf("\n\n Computes=%d Sequential SAT New chare: literal = %d, occurrence size=%d, level=%d \n", computes++, toInt(assigned_var), state_msg->occurrence.size(), state_msg->level);
-#endif
-    SolverState *next_state = copy_solverstate(state_msg);
-    
-    //Unit clauses
-    /* use this value to propagate the clauses */
-    map<int, int> unit_clauses;
-#ifdef DEBUG
-    CkPrintf(" remainning clause size is %d\n", (state_msg->clauses).size());
-#endif
-    for(int i=0; i<(state_msg->clauses).size(); i++)
-    {
-        Clause cl = ((state_msg->clauses)[i]);
-        CkVec<Lit> new_clause;
-        bool satisfied = false;
-#ifdef DEBUG    
-        //CkPrintf("\n");
-#endif
-        for(int j=0; j<cl.size();  j++)
-        {
-            Lit lit = cl[j];
-#ifdef DEBUG    
-        //    CkPrintf("%d   ", toInt(lit));
-#endif
-            if(lit == assigned_var)
-            {
-                satisfied = true;
-                break;
-            }else if( lit == ~(assigned_var))
-            {
-            } else
-            {
-                new_clause.push_back(lit);
-            }
-        }
-        if(satisfied)//one literal is true in the clause
-        {           // the occurrence of all other literals in this clause decrease by 1 since this clause goes away
-            for(int j=0; j<cl.size();  j++)
-            {
-                Lit lit = cl[j];
-                if(lit != assigned_var)
-                {
-                    int int_lit = toInt(lit);
-                    (next_state->occurrence[abs(int_lit)-1])--;
-                    if(int_lit > 0)
-                        (next_state->positive_occurrence[abs(int_lit)-1])--;
-                }
-            }
-        } else if(new_clause.size() == 0 ) //this clause is unsatisfiable
-        {
-        
-            /* conflict */
-            return false;
-        }else if(new_clause.size() == 1) //unit clause
-        {
-            /*unit clause */
-            Lit lit = new_clause[0];
-            if(unit_clauses.find(-toInt(lit)) != unit_clauses.end()) // for a variable, x and ~x exist in unit clause at the same time
-            {
-                CkPrintf("conflict detected by unit progation\n");
-                return false;
-                /* conflict*/
-            }else
-            {
-                unit_clauses[toInt(lit)]++;
-            }
-
-        }
-        else if(new_clause.size() > 1)
-        {
-            Clause clsc(new_clause, false);
-            next_clauses.push_back(clsc);
-        }
-    } /* all clauses are checked*/
-   
-    //CkPrintf(" After assignment, unit clauses = %d, unsolved clauses=%d\n", unit_clauses.size(), next_clauses.size());
-
-    if(next_clauses.size() == 0)
-    {
-        /* one solution is found*/
-        /* print the solution*/
-        //CkPrintf("Inside sequential, done!! one solutions found level=%d by sequential SAT\n", state_msg->level);
-        /*
-        for(int _i=0; _i<state_msg->var_size; _i++)
-        {
-            if(state_msg->occurrence[_i] == -2)
-                CkPrintf(" TRUE ");
-            else if(state_msg->occurrence[_i] == -1)
-                CkPrintf(" FALSE ");
-            else
-                CkPrintf(" Anything ");
-        }*/
-        CkPrintf("\n");
-        return true;
-    }else
-    {
-        /*   assigned all unit clause literals first*/
-        while(!unit_clauses.empty())
-        {
-#ifdef DEBUG
-            CkPrintf("unit propagation, unit clauses=%d, unsolved clauses=%d\n", unit_clauses.size(), next_clauses.size());
-#endif
-            int first_unit = (*(unit_clauses.begin())).first;
-
-            //assign this variable
-            for(int _i=0; _i<next_clauses.size(); _i++)
-            {
-                Clause& cl = next_clauses[_i];
-                //reduce the clause
-                for(int j=0; j<cl.size(); j++)
-                {
-                    Lit lit = cl[j];
-                    if(toInt(lit) == first_unit)//this clause goes away
-                    {
-                        for(int jj=0; jj<cl.size(); jj++)
-                        {
-                            Lit lit_2 = cl[jj];
-                            (next_state->occurrence[abs(toInt(lit_2))-1])--; 
-                            if(toInt(lit_2) > 0)
-                                (next_state->positive_occurrence[abs(toInt(lit_2))-1])--; 
-                        }
-                       break; 
-                    }else if (toInt(lit) == -first_unit)
-                    {
-                        cl.remove(j);
-                        j--;
-                    }
-                }
-                if(cl.size()==0){ // conflict
-                    return false;
-                    //_i--;
-                }else if(cl.size() == 1)// new unit clause
-                {
-                    unit_clauses[toInt(cl[0])]++;
-                    next_clauses.remove(_i);
-                    _i--;
-                }
-            }
-            /*remove this unit clause */
-            unit_clauses.erase(unit_clauses.begin());
-        }
-
-        //CkPrintf("After unit propagation, unit size = %d, unsolved = %d\n", unit_clauses.size(), next_clauses.size());
-        if(next_clauses.size() == 0)
-            return true;
-        /* it would be better to insert the unit literal in order of their occurrence */
-
-        /* make a decision and then fire new tasks */
-        /* if there is unit clause, should choose these first??? TODO */
-        /* TODO which variable to pick up */
-        /*unit clause literal and also which occurrs most times */
-        int max_index =  get_max_element(next_state->occurrence);
-#ifdef DEBUG
-        CkPrintf("max index = %d\n", max_index);
-#endif
-        if(next_state->occurrence[max_index] <=0)
-        {
-            CkPrintf("****Unsatisfiable in sequential SAT\n");
-            return false;
-        }
-
-
-        next_state->assignclause(next_clauses);
-        next_state->var_size = state_msg->var_size;
-        next_state->level = state_msg->level+1;
-
-        int positive_max = next_state->positive_occurrence[max_index];
-        if(positive_max >= next_state->occurrence[max_index] - positive_max)
-        {
-            next_state->occurrence[max_index] = -2;
-            next_state->assigned_lit = Lit(max_index+1);
-        }
-        else
-        {
-            next_state->occurrence[max_index] = -1;
-            next_state->assigned_lit = Lit(-max_index-1);
-        } 
-
-        bool   satisfiable_1 = seq_solve(next_state);
-        if(satisfiable_1)
-        {
-            return true;
-        }
-        
-       
-        if(positive_max >= next_state->occurrence[max_index] - positive_max)
-        {
-            next_state->occurrence[max_index] = -1;
-            next_state->assigned_lit = Lit(-max_index-1);
-        }
-        else
-        {
-            next_state->occurrence[max_index] = -2;
-            next_state->assigned_lit = Lit(max_index+1);
-        } 
-            
-        bool satisfiable_0 = seq_solve(next_state);
-        if(satisfiable_0)
-        {
-            return true;
-        }
-
-        CkPrintf("Unsatisfiable through sequential\n");
-        return false;
-    }
-
-}
diff --git a/examples/charm++/satisfiability/Solver.h b/examples/charm++/satisfiability/Solver.h
deleted file mode 100644 (file)
index 4699bcc..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef _SOLVER_H
-#define _SOLVER_H
-
-class SolverState : public CMessage_SolverState {
-
-private:
-
-public:
-
-    
-    SolverState();
-
-    int nVars();
-
-    Var newVar (bool polarity = true, bool dvar = true);
-    
-    bool addClause(CkVec<Lit>& lits);
-
-    void attachClause(Clause& c);
-
-    void assignclause(CkVec<Clause>& );
-
-
-    CkVec<Clause>   clauses;
-    Lit             assigned_lit;
-    int             var_size;
-
-    int             var_frequency; // 1, -1, 1 freq = 3
-    CkVec<int>      unit_clause_index;
-    // -2 means true, -1 means false, 0 means anything, > 0 means occurrence
-    CkVec<int>      occurrence; 
-    CkVec<int>      positive_occurrence; 
-    int             level;
-   
-    int             lower;
-    int             higher;
-
-    //CkVec<Lit>      lit_state;
-    //vector<Lit> assigns;
-
-    /*
-    void pup(PUP::er &p) {
-    
-        p|assigns;
-        p|clauses;
-        p|assigned_lit;
-    }*/
-
-    friend SolverState* copy_solverstate( const SolverState* org)
-    {
-       SolverState *new_state = new (8*sizeof(int))SolverState;
-        
-       new_state->clauses.resize(org->clauses.size());
-       for(int _i=0; _i<org->clauses.size(); _i++)
-       {
-           new_state->clauses[_i] = Clause(org->clauses[_i]); 
-       }
-
-       new_state->var_size = org->var_size;
-
-       new_state->occurrence.resize(org->occurrence.size());
-       new_state->positive_occurrence.resize(org->occurrence.size());
-       for(int _i=0; _i<org->occurrence.size(); _i++){
-           new_state->occurrence[_i] = org->occurrence[_i];
-           new_state->positive_occurrence[_i] = org->occurrence[_i];
-       }
-        new_state->level = org->level;
-       return new_state;
-    }
-
-};
-
-
-class Solver : public CBase_Solver {
-
-private:
-
-    bool seq_solve(SolverState*);
-public:
-    Solver(SolverState*);
-
-};
-#endif
diff --git a/examples/charm++/satisfiability/TNM/TNM.C b/examples/charm++/satisfiability/TNM/TNM.C
new file mode 100644 (file)
index 0000000..3ee788b
--- /dev/null
@@ -0,0 +1,1367 @@
+/* 
+Copyright (C) 2009
+Wanxia WEI (weiwanxia@gmail.com), 
+Chumin LI (chu-min.li@u-picardie.fr)
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <time.h>
+
+#include <sys/times.h>
+#include <sys/types.h>
+#include <limits.h>
+
+#include "TNM.h"
+
+#include <vector>
+
+using namespace std;
+
+typedef signed int my_type;
+typedef unsigned int my_unsigned_type;
+
+//#define lookahead_length 30
+//int decreasing_vars_stack1[lookahead_length+1];
+#define WORD_LENGTH 100 
+#define TRUE 1
+#define FALSE 0
+#define NONE -1
+#define SATISFIABLE 2
+#define walk_satisfiable() (MY_CLAUSE_STACK_fill_pointer == 0)
+
+#define WEIGTH 4
+#define T 10
+
+/* the tables of variables and clauses are statically allocated. Modify the 
+   parameters tab_variable_size and tab_clause_size before compilation if 
+   necessary */
+
+#define tab_variable_size  100000
+#define tab_clause_size 500000
+
+#define tab_unitclause_size \
+ ((tab_clause_size/4<2000) ? 2000 : tab_clause_size/4)
+#define my_tab_variable_size \
+ ((tab_variable_size/2<1000) ? 1000 : tab_variable_size/2)
+#define my_tab_clause_size \
+ ((tab_clause_size/2<2000) ? 2000 : tab_clause_size/2)
+#define my_tab_unitclause_size \
+ ((tab_unitclause_size/2<1000) ? 1000 : tab_unitclause_size/2)
+#define tab_literal_size 2*tab_variable_size
+#define double_tab_clause_size 2*tab_clause_size
+#define positive(literal) literal<NB_VAR
+#define negative(literal) literal>=NB_VAR
+#define get_var_from_lit(negative_literal) negative_literal-NB_VAR
+#define RESOLVANT_LENGTH 3
+#define RESOLVANT_SEARCH_THRESHOLD 5000
+#define complement(lit1, lit2) \
+ ((lit1<lit2) ? lit2-lit1 == NB_VAR : lit1-lit2 == NB_VAR)
+
+#define inverse_signe(signe) \
+ (signe == POSITIVE) ? NEGATIVE : POSITIVE
+#define unsat(val) (val==0)?"UNS":"SAT"
+#define pop(stack) stack[--stack ## _fill_pointer]
+#define push(item, stack) stack[stack ## _fill_pointer++] = item
+#define satisfiable() CLAUSE_STACK_fill_pointer == NB_CLAUSE
+
+#define NEGATIVE 0
+#define POSITIVE 1
+#define PASSIVE 0
+#define ACTIVE 1
+#define INUTILE 2
+#define MAX_NODE_NUMBER 6000
+struct node {
+  int clause;
+  struct node *next;
+};
+
+int *neg_in[tab_variable_size];
+int *pos_in[tab_variable_size];
+int neg_nb[tab_variable_size];
+int pos_nb[tab_variable_size];
+my_type *var_current_value;//[tab_variable_size];
+my_type *var_rest_value;//[tab_variable_size];
+my_type *var_state;//[tab_variable_size];
+
+
+float *reduce_if_negative_nb;//[tab_variable_size];
+float *reduce_if_positive_nb;//[tab_variable_size];
+
+int *sat[tab_clause_size];
+int *var_sign[tab_clause_size];
+my_type *clause_state;//[tab_clause_size];
+my_type *clause_length;//[tab_clause_size];
+int *most_recent;//[tab_clause_size];
+int *most_recent_count;//[tab_clause_size];
+
+int VARIABLE_STACK_fill_pointer = 0;
+int CLAUSE_STACK_fill_pointer = 0;
+int UNITCLAUSE_STACK_fill_pointer = 0;
+int MANAGEDCLAUSE_STACK_fill_pointer = 0;
+
+
+int *VARIABLE_STACK;//[tab_variable_size];
+int *CLAUSE_STACK;//[tab_clause_size];
+int *UNITCLAUSE_STACK;//[tab_unitclause_size];
+int *MANAGEDCLAUSE_STACK;//[tab_clause_size];
+//int TESTED_VAR_STACK[tab_variable_size];
+//int TESTED_VAR_STACK_fill_pointer=0;
+
+
+int tab_variable_nb_unit[2*tab_variable_size]={0};
+int clause_possible[tab_clause_size]={0};
+//int SAVED_VAR_VARIABLE_STACK[tab_variable_size];
+int SAVED_VAR_VARIABLE_STACK_fill_pointer = 0;
+//int SAVED_DEB_CLAUSE_STACK[tab_variable_size];
+int SAVED_DEB_CLAUSE_STACK_fill_pointer;
+//int SAVED_FIN_CLAUSE_STACK[tab_variable_size];
+int SAVED_FIN_CLAUSE_STACK_fill_pointer;
+//int SAVED_VARIABLE_STACK[tab_variable_size];
+int SAVED_VARIABLE_STACK_fill_pointer = 0;
+//int SAVED_MANAGEDCLAUSE_STACK[tab_clause_size];
+int SAVED_MANAGEDCLAUSE_STACK_fill_pointer = 0;
+//int SAVED_CLAUSE_STACK[tab_clause_size];
+int SAVED_CLAUSE_STACK_fill_pointer = 0;
+int PREVIOUS_MANAGEDCLAUSE_STACK_fill_pointer = 0;
+
+int CPT=0;
+
+int NB_VAR;
+int NB_ACTIVE_VAR;
+int NB_CLAUSE;
+int INIT_NB_CLAUSE;
+my_type R = 3;
+
+double *counter;//[tab_variable_size];
+double max_counter, min_counter, ave_counter, old_ave_counter;
+int global_j;
+
+double Interval, Adjustment, Sigma;
+double coefficient_for_prm;
+int Intensity;
+
+long NB_UNIT=1, NB_MONO=0, NB_BRANCHE=0, NB_BACK = 0;
+
+#define double_tab_clause_size 2*tab_clause_size
+
+struct var_node {
+  int var;
+  int weight;
+  struct var_node *next;
+};
+
+#define VAR_NODES1_nb 6
+int VAR_NODES1_index=0;
+struct var_node VAR_NODES1[10*VAR_NODES1_nb];
+struct var_node *VAR_FOR_TEST1=NULL;
+
+struct var_node *allocate_var_node1() {
+  return &VAR_NODES1[VAR_NODES1_index++];
+}
+
+int *test_flag;//[tab_variable_size];
+
+int MAX_REDUCED;
+int T_SEUIL;
+
+unsigned int SEED;
+int SEED_FLAG=FALSE, BUILD_FLAG=TRUE;
+char saved_input_file[WORD_LENGTH];
+char *INPUT_FILE;
+
+unsigned long IMPLIED_LIT_FLAG=0;
+int IMPLIED_LIT_STACK_fill_pointer=0;
+int *IMPLIED_LIT_STACK;//[tab_variable_size];
+unsigned long LIT_IMPLIED[tab_variable_size]={0};
+
+long NB_SECOND_SEARCH=0;
+long NB_SECOND_FIXED = 0;
+
+void remove_clauses(int var) {
+  register int clause;
+  register int *clauses;
+  if (var_current_value[var] == POSITIVE) clauses = pos_in[var];
+  else clauses = neg_in[var];
+  for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {
+    if (clause_state[clause] == ACTIVE) {
+      clause_state[clause] = PASSIVE;
+      push(clause, CLAUSE_STACK);
+    }
+  }
+}
+
+int manage_clauses(int var) {
+  register int clause;
+  register int *clauses;
+  if (var_current_value[var] == POSITIVE) clauses = neg_in[var];
+  else clauses = pos_in[var];
+  for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {
+    if (clause_state[clause] == ACTIVE) {
+      switch (clause_length[clause]) {
+      case 1: return FALSE;
+      case 2: push(clause, UNITCLAUSE_STACK);
+       push(clause, MANAGEDCLAUSE_STACK);
+       clause_length[clause]--; break;
+      default: clause_possible[clause] = 1;
+       clause_length[clause]--;
+       push(clause, MANAGEDCLAUSE_STACK);
+      }
+    }
+  }
+  return TRUE;
+}
+void print_values(int nb_var) {
+  FILE* fp_out;
+  int i;
+  fp_out = fopen("satx.sol", "w");
+  for (i=0; i<nb_var; i++) {
+    if (var_current_value[i] == 1) 
+      fprintf(fp_out, "%d ", i+1);
+    else
+      fprintf(fp_out, "%d ", 0-i-1);
+  }
+  fprintf(fp_out, "\n");
+  fclose(fp_out);                      
+} 
+#include "inputbis.C"
+
+int verify_solution() {
+  int i, var, *vars_signs, clause_truth,cpt;
+
+  for (i=0; i<NB_CLAUSE; i++) {
+    clause_truth = FALSE;
+    vars_signs = var_sign[i];
+    for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2))
+      if (*(vars_signs+1) == var_current_value[var] ) {
+       clause_truth = TRUE;
+       break;
+      }
+    if (clause_truth == FALSE) return FALSE;
+  }
+  return TRUE;
+}
+
+long NB_SEARCH = 0; long NB_FIXED = 0;
+  
+int unitclause_process() {
+  int  i, unitclause, var, *vars_signs, unitclause_position,cpt;
+  
+  for (unitclause_position = 0; 
+       unitclause_position < UNITCLAUSE_STACK_fill_pointer;
+       unitclause_position++) {
+    unitclause = UNITCLAUSE_STACK[unitclause_position];
+    if (clause_state[unitclause] == ACTIVE) {
+      NB_UNIT++;
+      vars_signs = var_sign[unitclause];
+      for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+       if (var_state[var] == ACTIVE ){
+         var_current_value[var] = *(vars_signs+1);
+         var_rest_value[var] = NONE;
+         if (manage_clauses(var)==TRUE) {
+           var_state[var] = PASSIVE;
+           push(var, VARIABLE_STACK);
+           remove_clauses(var);
+           break;
+         }
+         else {
+           return NONE;
+         }
+       }
+      }
+    }     
+  }
+  UNITCLAUSE_STACK_fill_pointer = 0;
+  return TRUE;
+}
+int PREVIOUS_UNITCLAUSE_STACK_fill_pointer = 0;
+
+/*
+my_type build(int build_flag, char* input_file) {
+  if (build_flag==TRUE)
+    return build_simple_sat_instance(input_file);
+  else return build_simple_sat_instance(input_file);
+}
+*/
+
+
+#define DECREASING 1
+#define INCREASING 2
+#define PLATEAU 0
+int var_count[tab_variable_size]={1};
+int *neibor_stack;//[tab_variable_size];
+int neibor_stack_fill_pointer=0;
+int **neibor_relations[tab_variable_size];
+int *neibor[tab_variable_size];
+int *score;//[tab_variable_size];
+int *make;//[tab_variable_size];
+int *break_value;//[tab_variable_size];
+int *tmp_score;//[tab_variable_size];
+int *decreasing_vars_stack;//[tab_variable_size];
+int decreasing_vars_stack_fill_pointer=0;
+int tabu[tab_variable_size]={FALSE};
+int *tabu_stack;//[tab_variable_size];
+int tabu_stack_fill_pointer=0;
+int *tabu_list;//[tab_variable_size];
+int *tendance;//[tab_variable_size];
+int MY_CLAUSE_STACK_fill_pointer=0;
+int *MY_CLAUSE_STACK;//[tab_clause_size];
+int *nb_lit_true;//[tab_clause_size];
+int *clause_truth;//[tab_clause_size];
+int *dommage_if_flip;//[tab_variable_size];
+int *zerodommage;//[tab_variable_size];
+int *zerodommage_vars_stack;//[tab_variable_size];
+int zerodommage_vars_stack_fill_pointer=0;
+int *flip_time;//[tab_variable_size];
+int *enter_stack_time;//[tab_variable_size];
+int *walk_time;//[tab_variable_size];
+int MAXTRIES=10000;
+int MAXSTEPS=2000000000;
+int NOISE=50;
+int NOISE1=50;
+int LNOISE=5;
+int saved_var_current_value[tab_variable_size];
+
+int index_in_MY_CLAUSE_STACK[tab_clause_size];
+
+void clause_value() {
+  int clause, var, *vars_signs, nb_true;
+   
+  MY_CLAUSE_STACK_fill_pointer=0;  
+  for (clause=0; clause<NB_CLAUSE; clause++) {
+    nb_true=0;
+    vars_signs = var_sign[clause];
+    for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2))
+      if (var_current_value[var]==*(vars_signs+1))  
+       nb_true++;        
+    nb_lit_true[clause]=nb_true;
+    if (nb_true ==0 ) {
+      clause_truth[clause]=FALSE;
+      //push(clause, MY_CLAUSE_STACK);
+      index_in_MY_CLAUSE_STACK[clause]=MY_CLAUSE_STACK_fill_pointer;
+      push(clause, MY_CLAUSE_STACK);
+    }
+    else
+      clause_truth[clause]=TRUE;    
+  } 
+}
+
+void pass(int the_var, int *clauses) {
+  int clause, var, *vars_signs;
+  for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {
+    if (clause_state[clause] == ACTIVE) {
+      vars_signs = var_sign[clause];
+      for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+       if (var_state[var]==ACTIVE && var != the_var) {
+         if (var_count[var]==1) push(var, neibor_stack);
+         // nb of cells for other variables (than var and the_var: length-2)
+         //and a sign for dxdy and a separator from the next clauses
+         var_count[var]+=2*(clause_length[clause]-1);
+       }
+      }
+    }
+  }
+}
+
+int *build_neibor_relation(int var, int neibor_var, 
+                         int *neibor_relations, int *clauses) {
+  int i, clause, var1, *vars_signs, present, *relations, sign1, sign2;
+
+  for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {
+    if (clause_state[clause] == ACTIVE) {
+      vars_signs = var_sign[clause];
+      present=FALSE;
+      for(var1=*vars_signs; var1!=NONE; var1=*(vars_signs+=2)) {
+       if (var1==neibor_var) {present=TRUE; break;}
+      }
+      if (present==TRUE) {
+       relations=neibor_relations; neibor_relations++;
+       vars_signs = var_sign[clause];
+       for(var1=*vars_signs; var1!=NONE; var1=*(vars_signs+=2)) {
+         if (var_state[var1]==ACTIVE) {
+           if (var1==var) sign1=*(vars_signs+1);
+           else if (var1==neibor_var) sign2=*(vars_signs+1);
+           else {
+             *neibor_relations=var1; 
+             *(neibor_relations+1)=*(vars_signs+1);
+             neibor_relations+=2;
+           }
+         }
+       }
+       *relations=(sign1==sign2);
+       *neibor_relations=NONE;
+       neibor_relations++;
+      }
+    }
+  }
+  return neibor_relations;
+}
+      
+
+void preprocess() {
+  int var, neibor_var, i, *vector;
+
+  for (var=0; var<NB_VAR; var++) {
+    var_count[var]=1;
+    tabu[var]=FALSE;
+    tabu_list[var]=FALSE;
+  }
+
+  for (var=0; var<NB_VAR; var++) {
+    for(i=0; i<neibor_stack_fill_pointer; i++) var_count[neibor_stack[i]]=1;
+    neibor_stack_fill_pointer=0;
+    pass(var, neg_in[var]);
+    pass(var, pos_in[var]);
+    vector=(int *)malloc((neibor_stack_fill_pointer+1)*sizeof(int));
+    // vector_relations=(int **)malloc((neibor_stack_fill_pointer+1)*sizeof(int));
+    for(i=0; i<neibor_stack_fill_pointer; i++) {
+      neibor_var=neibor_stack[i];
+      vector[i]=neibor_var;
+      // neibor_var occupies var_count cells for all clauses
+      // in which var and neibor_var both occur
+      //vector_relations[i]=(int *)malloc((var_count[neibor_var])*sizeof(int));
+      //relations=build_neibor_relation(var, neibor_var, 
+      //vector_relations[i], neg_in[var]);
+    // relations=build_neibor_relation(var, neibor_var, 
+      //                             relations, pos_in[var]);
+      //the end
+      //*relations=NONE;
+    }
+    vector[i]=NONE;
+    neibor[var]=vector;
+// neibor_relations[var]=vector_relations;
+  }
+}
+
+int random_integer(int max)
+{
+  unsigned long int RAND;
+  RAND=rand();
+  return RAND % max;
+}//random_integer(max) is from 0 to max-1
+
+//-------------------------------------------------------------------------
+
+//Modifaction du germe du générateur aléatoire
+
+//-------------------------------------------------------------------------
+/*
+void modify_seed()
+{
+  struct tms *a_tms;
+  int seed=2;
+  time_t tp, mess;
+
+  mess=time(&tp);
+
+//  tv=(struct timeval *)malloc(sizeof(struct timeval));
+//  tzp=(struct timezone *)malloc(sizeof(struct timezone));
+//  gettimeofday(tv,tzp);
+//  seed = (( tv->tv_sec & 0177 ) * 1000000) + tv->tv_usec;  
+
+  if (mess==-1) {
+    a_tms = ( struct tms *) malloc( sizeof (struct tms));
+    mess=times(a_tms);
+    seed = a_tms->tms_utime;
+  }
+  else seed=mess;
+  srand(seed);
+}
+*/
+
+  struct timeval tv;
+  struct timezone tzp;
+
+void modify_seed() {
+  int seed;
+  if (SEED_FLAG==TRUE) {
+    srand(SEED); SEED=SEED+17;
+    if (SEED==0) SEED=17;
+  }
+  else {
+    gettimeofday(&tv,&tzp);
+    seed = (( tv.tv_sec & 0177 ) * 1000000) + tv.tv_usec;
+    srand(seed);
+  }
+}
+
+
+int get_gradient(int var, int *clauses) {
+  int clause, var1, *vars_signs, gradient=0, clause_gradient=1;
+  for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {
+    if (clause_state[clause] == ACTIVE) {
+      vars_signs = var_sign[clause];  clause_gradient=1;
+      for(var1=*vars_signs; var1!=NONE; var1=*(vars_signs+=2)) {
+       if ((var_state[var1]==ACTIVE) && (var1!=var)) {
+
+         if (var_current_value[var1]==*(vars_signs+1)) {
+           clause_gradient=0; break;
+         }
+       }
+      }
+      gradient+=clause_gradient;
+    }
+  }
+  return gradient;
+}
+
+void free_tabu() {
+  int i, var;
+  for (i=0; i<tabu_stack_fill_pointer; i++) {
+    var=tabu_stack[i];
+    tabu[var]=FALSE;
+    tabu_list[var]=FALSE;
+  }
+  tabu_stack_fill_pointer=0;
+}
+
+inline int decreasing_var(int var) {
+  return (score[var]>0);
+}
+//int clause_weight[tab_clause_size];
+//after vars have initial values, call initialize()
+int initialize() {
+  int var, gradient, neg_gradient, pos_gradient, clause;
+
+  decreasing_vars_stack_fill_pointer=0;
+  zerodommage_vars_stack_fill_pointer=0;
+  for (var=0; var<NB_VAR; var++) {
+       counter[var]=0.0; 
+    tmp_score[var]=0;
+    if (var_state[var]==ACTIVE) {
+      neg_gradient=get_gradient(var, neg_in[var]);
+      pos_gradient=get_gradient(var, pos_in[var]);
+      if (var_current_value[var]==TRUE) {
+       score[var]=neg_gradient-pos_gradient;
+       make[var]=neg_gradient; break_value[var]=pos_gradient;
+      }        
+      else {
+       score[var]=pos_gradient-neg_gradient;
+       make[var]=pos_gradient; break_value[var]=neg_gradient; 
+      }        
+      if (var_current_value[var]==TRUE)
+            dommage_if_flip[var]=pos_gradient;
+      else dommage_if_flip[var]=neg_gradient;
+      if ((dommage_if_flip[var]==0)  && ( score[var] != 0)) {
+       push(var, zerodommage_vars_stack);
+               zerodommage[var]=TRUE;
+      }
+      else zerodommage[var]=FALSE;
+      if (decreasing_var(var)) {
+       push(var, decreasing_vars_stack);
+       tendance[var]=DECREASING;
+      }
+      else if (score[var]==0)
+       tendance[var]=PLATEAU;
+      else tendance[var]=INCREASING;
+    }
+  }
+  max_counter=0.0; min_counter=0.0; ave_counter=0.0;
+  
+  for(clause=0; clause<NB_CLAUSE; clause++) {
+    most_recent[clause]=NONE;
+    most_recent_count[clause]=0;
+   // clause_weight[clause]=0;
+  }  
+  
+  free_tabu();
+  return TRUE;
+}
+
+int nb_clauses_violated(int *clauses) {
+  int clause, nb_violated=0;
+    
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses))
+    if (nb_lit_true[clause]==1)
+      nb_violated++;       
+  return nb_violated; 
+}
+
+int choose_least_flipped_var() {
+  int var, chosen_var, i, flip=MAXSTEPS;
+
+  for (i=0; i<VARIABLE_STACK_fill_pointer; i++) {
+    var=VARIABLE_STACK[i];
+    if (flip_time[var]<flip) {
+      chosen_var=var; flip=flip_time[var];
+    }
+  }
+  return chosen_var;
+}
+
+void score_for_vars_in_sat_clauses(int var, int *clauses) {
+  int clause,  neibor_var, *vars_signs, dommage=0;
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses)) {
+    vars_signs=var_sign[clause];
+    switch(nb_lit_true[clause]) {
+    case 0: 
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if (neibor_var!=var) {
+           tmp_score[neibor_var]--;
+       }
+      }
+      break;
+    case 1: 
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if ((neibor_var!=var) && 
+           (var_current_value[neibor_var]==*(vars_signs+1))) {
+         tmp_score[neibor_var]++;
+         break;
+       }
+      }
+      break;
+    }
+  }
+}
+
+void score_for_vars_in_unsat_clauses(int var, int *clauses) {
+  int clause, neibor_var, *vars_signs;
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses)) {
+    vars_signs=var_sign[clause];
+    switch(nb_lit_true[clause]) {
+    case 1: 
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if (neibor_var!=var) {
+         tmp_score[neibor_var]++;
+       }
+      }
+      break;
+    case 2: 
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if ((neibor_var!=var) && 
+           (var_current_value[neibor_var]==*(vars_signs+1))) {
+         tmp_score[neibor_var]--;
+         break;
+       }
+      }
+      break;
+    }
+  }
+}
+
+int TIME;
+
+char expchance(int X)
+{
+   if (X>Intensity) X=Intensity;
+   if (X<1) return 1;
+   X=1<<X;
+   if (rand()%X==0) return 1;
+   return 0;
+}
+      
+int get_wp_var(int random_clause_unsat) {
+  int number_vars=0, index_of_vars, var;
+  //int number_vars=0, index_vars, var, old=MAXSTEPS, old_var=NONE, clause, *clauses, weight;
+  register int *vars_signs;
+  int all_vars[tab_variable_size];
+
+  vars_signs = var_sign[random_clause_unsat]; 
+  
+  //weight=MAXSTEPS; old_var=NONE;
+  for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+       all_vars[number_vars++]=var;
+       //number_vars++;
+  }//var is all_vars[0], all_vars[1], ..., all_vars[number_vars-1]
+  index_of_vars=random_integer(number_vars);//index_of_vars is from 0 to number_vars-1
+  //random_integer(max) is from 0 to max-1
+  return all_vars[index_of_vars];
+ }
+
+
+
+int get_var_by_ori_vw() {
+  int  random_unsatisfied_clause,  var_to_flip, number_vars=0, ii, one_index, var, best_break, the_break, best_var, best_counter, var_counter;
+  int all_vars[tab_variable_size]; 
+  register int *vars_signs;
+  
+  random_unsatisfied_clause=random_integer(MY_CLAUSE_STACK_fill_pointer);
+  random_unsatisfied_clause=MY_CLAUSE_STACK[random_unsatisfied_clause];
+  vars_signs = var_sign[random_unsatisfied_clause]; 
+  for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+       all_vars[number_vars++]=var;
+       //number_vars++;
+  }//var is all_vars[0], all_vars[1], ..., all_vars[number_vars-1], there are number_vars vars
+  //number_vw++;
+  one_index=random_integer(number_vars);
+  var=all_vars[one_index];
+  best_break=break_value[var]; 
+  if (best_break==0) return var;
+  best_var=var; best_counter=counter[var]; 
+  for (ii=1;ii<number_vars;ii++) {
+    one_index++; if (one_index>=number_vars) one_index=0;
+    var=all_vars[one_index];
+    the_break=break_value[var];
+       if (the_break==0) return var;
+       var_counter=counter[var];
+       if (the_break<best_break || (var_counter<best_counter) && (the_break==best_break || expchance(the_break-best_break)))
+         {
+          best_var=var; best_counter=var_counter; best_break=the_break; 
+         }
+ }
+ return best_var;
+}
+
+int get_var_to_flip_in_clause_as_plus(int random_clause_unsat) {
+  int var, best_var, second_best_var, nb, max_nb, pos_gradient, second_max=-NB_CLAUSE,
+    neg_gradient, real_nb, flip=-1, flip_index, var_to_flip, old=MAXSTEPS, old_var;
+  register int *vars_signs;
+
+  vars_signs = var_sign[random_clause_unsat]; max_nb=-NB_CLAUSE;
+  for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+    nb=score[var];
+    if ((nb>max_nb) || ((nb==max_nb) && (flip_time[var]<flip_time[best_var]))) {
+      second_best_var=best_var; second_max=max_nb; best_var=var; max_nb=nb;
+    }
+    else if ((nb>second_max) || 
+            ((nb==second_max) && (flip_time[var]<flip_time[second_best_var]))) {
+      second_max=nb; second_best_var=var;
+    }
+    if (flip_time[var]>flip) 
+      flip=flip_time[var];
+    if (flip_time[var]<old) {
+      old=flip_time[var];
+      old_var=var;
+    }
+  }
+  
+  //if (random_integer(100)<LNOISE)
+  //  return old_var;
+    
+  if (random_integer(100)<LNOISE) {
+     return get_wp_var(random_clause_unsat);
+  }  
+  else {
+    if (flip_time[best_var]==flip) {
+      if (random_integer(100)<NOISE) 
+           return second_best_var; 
+      else return best_var;
+      }
+    else return best_var;
+  }
+}
+
+
+
+int get_var_to_flip_in_clause_as_new(int random_clause_unsat) {
+  int var, best_var, second_best_var, nb, max_nb, pos_gradient, second_max=-NB_CLAUSE,
+    neg_gradient, real_nb, flip=-1, flip_index, var_to_flip, old=MAXSTEPS, old_var,
+    chosen_var;
+  register int *vars_signs;
+
+  vars_signs = var_sign[random_clause_unsat]; max_nb=-NB_CLAUSE;
+  for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {
+    nb=score[var];
+    if ((nb>max_nb) || ((nb==max_nb) && (flip_time[var]<flip_time[best_var]))) {
+      second_best_var=best_var; second_max=max_nb; best_var=var; max_nb=nb;
+    }
+    else if ((nb>second_max) || 
+            ((nb==second_max) && (flip_time[var]<flip_time[second_best_var]))) {
+      second_max=nb; second_best_var=var;
+    }
+    if (flip_time[var]<old) {
+      old=flip_time[var];
+      old_var=var;
+    }
+  }
+  if (random_integer(100)<LNOISE)
+    chosen_var=old_var;
+  else {
+    if (best_var==most_recent[random_clause_unsat]) {
+      switch(most_recent_count[random_clause_unsat]) {
+      case 1: NOISE1=20; break;
+      case 2: NOISE1=50; break;
+      case 3: NOISE1=65; break;
+      case 4: NOISE1=72; break;
+      case 5: NOISE1=78; break;
+      case 6: NOISE1=86; break;
+      case 7: NOISE1=90; break;
+      case 8: NOISE1=95; break;
+      case 9: NOISE1=98; break;
+      default: NOISE1=100; break;
+      }
+      if (random_integer(100)<NOISE1) {
+       chosen_var=second_best_var; 
+      }
+      else 
+       chosen_var=best_var;
+    }
+    else
+       chosen_var=best_var;
+  }
+  return chosen_var;
+}
+
+void satisfy_clauses(int var, int *clauses) {
+  int clause,  neibor_var, *vars_signs, dommage=0, last_unsatisfied_clause,
+    index;
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses)) {
+    vars_signs=var_sign[clause];
+    switch(nb_lit_true[clause]) {
+    case 0: clause_truth[clause]=TRUE; nb_lit_true[clause]++;
+      dommage++; //clause_weight[clause]=TIME;
+      last_unsatisfied_clause=pop(MY_CLAUSE_STACK);
+      index=index_in_MY_CLAUSE_STACK[clause];
+      MY_CLAUSE_STACK[index]=last_unsatisfied_clause;
+      index_in_MY_CLAUSE_STACK[last_unsatisfied_clause]=index;
+
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if (neibor_var!=var) {
+           tmp_score[neibor_var]--;
+           make[neibor_var]--;// break_value[neibor_var] unchanged
+       }
+      }
+      break;
+    case 1: nb_lit_true[clause]++;
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if ((neibor_var!=var) && 
+           (var_current_value[neibor_var]==*(vars_signs+1))) {
+         // dommage_if_flip[neibor_var]--;
+         tmp_score[neibor_var]++;
+         break_value[neibor_var]--;//make[neibor_var] unchanged, 
+         break;
+       }
+      }
+      break;
+    default:  nb_lit_true[clause]++;
+    }
+  }
+  if (dommage==0) 
+    printf("c'est curieux...");
+  
+}
+
+/* let x1 be the new value of x and x0 be the old value of x
+   then for each clause in *clauses here, (x1-x0)df/dx is positive */
+void unsatisfy_clauses(int var, int *clauses) {
+  int clause, neibor_var, *vars_signs;
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses)) {
+    vars_signs=var_sign[clause];
+    switch(nb_lit_true[clause]) {
+       //before flipping var, nb_lit_true[cause]>=1 because var is a positive literal  
+    case 1:  clause_truth[clause]=FALSE; nb_lit_true[clause]--;
+      //push(clause,MY_CLAUSE_STACK);
+      
+      if (most_recent[clause]==var) 
+            most_recent_count[clause]++;
+      else {
+           most_recent[clause]=var;
+           most_recent_count[clause]=1;
+      }
+      
+      index_in_MY_CLAUSE_STACK[clause]=MY_CLAUSE_STACK_fill_pointer;
+      push(clause,MY_CLAUSE_STACK);
+
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if (neibor_var!=var) {
+         tmp_score[neibor_var]++;
+         make[neibor_var]++;// break_value[neibor_var] unchanged
+       }
+      }
+      break;
+    case 2: nb_lit_true[clause]--;
+      for(neibor_var=*vars_signs; neibor_var!=NONE; 
+         neibor_var=*(vars_signs+=2)) {
+       if ((neibor_var!=var) && 
+           (var_current_value[neibor_var]==*(vars_signs+1))) {
+         tmp_score[neibor_var]--;
+         break_value[neibor_var]++; 
+         // dommage_if_flip[neibor_var]++;
+         break;
+       }
+      }
+      break;
+    default:  nb_lit_true[clause]--;
+    }
+  }
+}
+
+void check_implied_clauses(int var, int value, int nb_flip) { 
+  int *neibors, neibor_var;
+  //neibors=neibor[var];
+  //  for(neibor_var=*neibors; neibor_var!=NONE; neibor_var=*(++neibors)) 
+  //  tmp_score[neibor_var]=0;
+  if (value==TRUE) {
+    satisfy_clauses(var, pos_in[var]);
+    unsatisfy_clauses(var, neg_in[var]);
+  }
+  else {
+    satisfy_clauses(var, neg_in[var]);
+    unsatisfy_clauses(var, pos_in[var]);
+  }
+  neibors=neibor[var];
+  for(neibor_var=*neibors; neibor_var!=NONE; neibor_var=*(++neibors)) {
+    if ((score[neibor_var]<=0) && (score[neibor_var]+tmp_score[neibor_var]>0))
+      push(neibor_var, decreasing_vars_stack);
+    score[neibor_var]+=tmp_score[neibor_var];
+    tmp_score[neibor_var]=0;
+  }
+}
+
+void eliminate_satisfied_clauses() {
+  int first_satisfied=NONE,put_in,i;
+  
+  for (i=0;i<MY_CLAUSE_STACK_fill_pointer;i++)
+    if(clause_truth[MY_CLAUSE_STACK[i]]==TRUE) {
+      first_satisfied=i;
+      break;
+    }    
+  if (first_satisfied!=NONE) { 
+    put_in=first_satisfied;
+    for (i=first_satisfied+1;i<MY_CLAUSE_STACK_fill_pointer;i++)
+      if (clause_truth[MY_CLAUSE_STACK[i]]!=TRUE) {
+       MY_CLAUSE_STACK[put_in]=MY_CLAUSE_STACK[i];
+       put_in++;              
+      }
+    MY_CLAUSE_STACK_fill_pointer=put_in;
+  }
+}
+
+void push_unsatisfied_clauses(int var, int value) { 
+  int *clauses,clause;
+   
+  if (value==TRUE) clauses=neg_in[var];
+  else clauses=pos_in[var];
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses)) {
+    if (nb_lit_true[clause]==1 ) {
+      push(clause,MY_CLAUSE_STACK);
+      clause_truth[clause]=FALSE;         
+    }
+    nb_lit_true[clause]--;
+  } 
+}
+
+void dec_nb_lit_true(int var, int value) {
+  int *clauses,clause;
+  if (positive(var))
+    clauses=neg_in[var];
+  else
+    clauses=pos_in[var];
+  for (clause=*clauses;clause!=NONE;clause=*(++clauses))    
+    nb_lit_true[clause]--;    
+}
+
+int simple_eliminate_increasing_vars() {
+  int i, first=NONE, put_in, var, current=0, nb=0, chosen_var=NONE, flip=MAXSTEPS;
+  for (i=0; i<decreasing_vars_stack_fill_pointer; i++) {
+    var=decreasing_vars_stack[i];
+    if (score[var]<=0) {
+      first=i;
+      break;
+    }
+  }
+  if (first !=NONE) {
+    put_in=first;
+    for (i=first+1; i<decreasing_vars_stack_fill_pointer; i++) {
+      var=decreasing_vars_stack[i];
+      if (score[var]>0) {
+       decreasing_vars_stack[put_in++]=var;
+      }
+    }
+    decreasing_vars_stack_fill_pointer=put_in;
+  }
+  return chosen_var;
+}
+
+void eliminate_dommage_vars() {
+  int i, first=NONE, put_in, var, current=-1;
+  for (i=0; i<zerodommage_vars_stack_fill_pointer; i++) {
+    var=zerodommage_vars_stack[i];
+    if (zerodommage[var]==FALSE) {
+      first=i;
+      break;
+    }
+  }
+  if (first !=NONE) {
+    put_in=first;
+    for (i=first+1; i<zerodommage_vars_stack_fill_pointer; i++) {
+      var=zerodommage_vars_stack[i];
+      if (zerodommage[var]==TRUE)
+       zerodommage_vars_stack[put_in++]=var;
+    }
+    zerodommage_vars_stack_fill_pointer=put_in;
+  }
+}
+
+int choose_best_decreasing_var() {
+  int var, chosen_var, i, maxnb=0, flip=MAXSTEPS, nb, considered_length;
+  double the_counter;
+  considered_length=decreasing_vars_stack_fill_pointer; 
+  var=decreasing_vars_stack[0]; 
+  //the_counter=counter[var]; 
+  flip=flip_time[var]; 
+  chosen_var=var;
+  for (i=1; i<considered_length; i++) {
+     var=decreasing_vars_stack[i];
+     if (flip_time[var]<flip) {
+          flip=flip_time[var]; chosen_var=var; 
+     }
+  }
+  return chosen_var;
+}
+
+
+  
+int update_gradient_and_choose_flip_var(int var) {
+  int neibor_var, chosen1, sign, index, for_swap, 
+    other_var_in_same_clause, clause_gradient, gradient, chosen_var=NONE;
+
+  score[var]=0-score[var];
+  for_swap=make[var];
+  make[var]=break_value[var];
+  break_value[var]=for_swap;
+  simple_eliminate_increasing_vars();
+  if (decreasing_vars_stack_fill_pointer>1)
+    return choose_best_decreasing_var();
+  else if (decreasing_vars_stack_fill_pointer==1)
+    return decreasing_vars_stack[0];
+  return chosen_var;
+}
+  
+
+int choose_var_by_random_walk_as_plus() {
+  int  random_unsatisfied_clause,  var_to_flip;
+  random_unsatisfied_clause=random_integer(MY_CLAUSE_STACK_fill_pointer);
+  random_unsatisfied_clause=MY_CLAUSE_STACK[random_unsatisfied_clause];
+  var_to_flip=get_var_to_flip_in_clause_as_plus(random_unsatisfied_clause);
+  return  var_to_flip;
+}
+
+ int choose_var_by_random_walk_as_new() {
+  int  random_unsatisfied_clause,  var_to_flip;
+  random_unsatisfied_clause=random_integer(MY_CLAUSE_STACK_fill_pointer);
+  random_unsatisfied_clause=MY_CLAUSE_STACK[random_unsatisfied_clause];
+  var_to_flip=get_var_to_flip_in_clause_as_new(random_unsatisfied_clause);
+  return  var_to_flip;
+}
+
+
+int flipped_var_stack[tab_variable_size];
+int flipped_var_stack_fill_pointer=0;
+int flipped[tab_variable_size];
+
+void clean_flipped() {
+  int i;
+  for(i=0; i<flipped_var_stack_fill_pointer; i++)
+    flipped[flipped_var_stack[i]]=0;
+  flipped_var_stack_fill_pointer=0;
+}
+
+void save_assignment() {
+  int i;
+  clean_flipped();
+  // for(i=0; i<NB_VAR; i++) 
+  //  saved_var_current_value[i]=var_current_value[i];
+}
+
+int compute_distance() {
+  int k, dist=0, var, i;
+  for(i=0; i<flipped_var_stack_fill_pointer; i++) {
+    var=flipped_var_stack[i];
+    if (flipped[var]%2 == 1) 
+      dist++;
+  }
+  //for(k=0;k<NB_VAR;k++) {
+  //  if (var_current_value[k] != saved_var_current_value[k])
+  //    dist++; 
+  //}
+  return dist;
+}
+
+//int TIME;
+
+#include "adaptnoisebis1at5.C"
+
+void update_counter(int var_to_flip) {
+  double the_old_counter, the_new_counter;     
+  //if ((j+1)%1000==0) analyse_counter(var_to_flip, counter[var_to_flip]);
+  the_old_counter=counter[var_to_flip];
+  //ounter[var_to_flip]=(1.0-Sigma)*(counter[var_to_flip]+1.0)+Sigma*(double)(global_j+1);
+  counter[var_to_flip]=1.0*(counter[var_to_flip]+1.0);
+  the_new_counter=counter[var_to_flip];
+  old_ave_counter=ave_counter;
+  ave_counter=old_ave_counter+(the_new_counter-the_old_counter)/(double)NB_VAR;
+  if (the_new_counter>max_counter) {
+       max_counter=the_new_counter;
+       //var_with_biggest_counter=var_to_flip;
+  }
+}
+
+bool search() {
+  int last_suc_j=MAXSTEPS, i,j,k,SAT=FALSE, var_to_flip=NONE, index, flag, 
+    *min, nbwalk=0, var;
+
+  double avgdepth, depth=0;
+  //double avgdepths=0, total_min=0, total_last=0, total_nbwalk=0;
+  long begintime, endtime, mess;
+  struct tms *a_tms;
+  
+  a_tms = ( struct tms *) malloc( sizeof (struct tms));
+  mess=times(a_tms); begintime = a_tms->tms_utime;
+  
+  min=(int *)malloc(MAXTRIES*sizeof(int));
+  preprocess();
+
+  for (i=0;i<MAXTRIES;i++) {
+       //Intensity=1;  Sigma=0.1;  Interval=1000.0;  Adjustment=1000.0;
+       Sigma=0.0;
+    modify_seed(); min[i]=NB_CLAUSE; nbwalk=0; SAT=FALSE; depth=0;
+    for (k=0;k<NB_VAR;k++) {
+      if (var_state[k]==ACTIVE) {
+       var_current_value[k]=random_integer(2);
+       enter_stack_time[k]=0;
+       flip_time[k]=0;
+       walk_time[k]=0;
+       flipped[k]=0;
+      }
+    }
+    initialize();
+    clause_value();
+    initNoise();
+    if (zerodommage_vars_stack_fill_pointer>0) {
+      index=random_integer(zerodommage_vars_stack_fill_pointer);
+      var_to_flip=zerodommage_vars_stack[index];
+    }
+    else 
+    if (decreasing_vars_stack_fill_pointer>0) {
+      index=random_integer(decreasing_vars_stack_fill_pointer);
+      var_to_flip=decreasing_vars_stack[index];
+      // var_to_flip=choose_best_decreasing_var();
+    }
+    else var_to_flip=NONE;
+    for (j=0;j<MAXSTEPS;j++) {
+      global_j=j;      
+      flag=TRUE; TIME=j;
+      if (walk_satisfiable()) {
+           SAT=TRUE; last_suc_j=j;
+           break;
+      }
+     
+      if (max_counter>=(double)coefficient_for_prm*ave_counter)
+       {
+               //number_uneven++;
+               if (var_to_flip==NONE) {// when there is no non-tabu decreasing var 
+               nbwalk++; 
+               var_to_flip=choose_var_by_random_walk_as_new();
+               flag=FALSE; 
+          }   
+       }
+      else 
+       {
+           //number_even++;     
+          if (var_to_flip==NONE) {// when there is no non-tabu decreasing var 
+               nbwalk++; 
+               var_to_flip=choose_var_by_random_walk_as_plus(); 
+               flag=FALSE; 
+          }   
+        }
+               
+      var_current_value[var_to_flip]=1-var_current_value[var_to_flip]; 
+      check_implied_clauses(var_to_flip, var_current_value[var_to_flip], j);
+      //eliminate_satisfied_clauses();
+      flip_time[var_to_flip]=j;
+      update_counter(var_to_flip);
+      //if ((double)(j+1)>Adjustment) adjust_parameters_from_ori_vw((double)(j+1)); 
+      adaptNoveltyNoise(j);
+      // flipped_var=var_to_flip;
+      var_to_flip=update_gradient_and_choose_flip_var(var_to_flip);
+   }
+    if (SAT==TRUE) {
+      clause_value();
+      if (walk_satisfiable()) {
+       //fprintf(stdout, "c A solution is found\n");
+       break;
+      }
+      else {
+       //fprintf(stdout, "c I'AM SORRY SOMETHING IS WRONG\n");
+       SAT=FALSE;
+      }
+    }
+    
+ }
+  mess=times(a_tms); endtime = a_tms->tms_utime;
+   if (SAT==TRUE) {
+    //fprintf(stdout, "s SATISFIABLE\n");
+    //fprintf(stdout, "v ");
+    /*for (var=0; var<NB_VAR; var++) {
+      if (var_current_value[var]==TRUE)
+       fprintf(stdout, "%d ", var+1);
+      else fprintf(stdout, "%d ", -(var+1));
+    }*/
+    //fprintf(stdout, "\n");
+    //fprintf(stdout, "v 0 \n");
+  }
+  else {
+    //fprintf(stdout, "s UNKNOWN\n");
+  }
+  fprintf(stdout, "c Done (mycputime is %5.3f seconds)\n", 
+         ((double)(endtime-begintime)/((double)CLOCKS_PER_SEC/(double)10000)));
+  if (SAT==TRUE)
+    return true;
+  else return false;
+}
+
+
+
+int HELP_FLAG=FALSE;
+
+
+void __initialize_vars()
+{
+    var_current_value = (my_type*) malloc(tab_variable_size * sizeof(my_type));
+    var_rest_value = (my_type*) malloc(tab_variable_size * sizeof(my_type));
+    var_state = (my_type*) malloc(tab_variable_size * sizeof(my_type));
+    clause_state = (my_type*)malloc(tab_clause_size * sizeof(my_type));
+    clause_length = (my_type*)malloc(tab_clause_size * sizeof(my_type));
+
+    test_flag = (int*) malloc(sizeof(int) * tab_variable_size);
+
+    IMPLIED_LIT_STACK = (int*) malloc(sizeof(int) *tab_variable_size);
+   neibor_stack = (int*) malloc(sizeof(int) * tab_variable_size);
+
+    counter = (double*) malloc(tab_variable_size * sizeof(double));
+    reduce_if_negative_nb = (float*) malloc(sizeof(float) * tab_variable_size);
+    reduce_if_positive_nb = (float*) malloc(sizeof(float) * tab_variable_size);
+    most_recent = (int*) malloc(sizeof(int) * tab_clause_size);
+    most_recent_count = (int*) malloc( sizeof(int) * tab_clause_size);
+
+    VARIABLE_STACK = (int*) malloc(tab_variable_size * sizeof(int));
+    CLAUSE_STACK = (int*) malloc(tab_clause_size * sizeof(int));
+    UNITCLAUSE_STACK = (int*) malloc(tab_unitclause_size * sizeof(int));
+
+    MANAGEDCLAUSE_STACK = (int*) malloc(tab_clause_size * sizeof(int));
+
+
+    score = (int*) malloc( sizeof(int) * tab_variable_size);
+    make = (int*) malloc(sizeof(int) * tab_variable_size);
+    break_value= (int*) malloc( sizeof(int) *tab_variable_size);
+    tmp_score = (int*) malloc(sizeof(int) * tab_variable_size);
+    decreasing_vars_stack =  (int*) malloc( sizeof(int) *tab_variable_size);
+   tabu_stack = (int*) malloc(sizeof(int) * tab_variable_size);
+  
+   tabu_list = (int*) malloc(sizeof(int) * tab_variable_size);
+   tendance = (int*) malloc( sizeof(int) * tab_variable_size);
+
+   MY_CLAUSE_STACK = (int*) malloc(sizeof(int) * tab_clause_size);
+   nb_lit_true = (int*) malloc( sizeof(int) * tab_clause_size);
+   clause_truth = (int*) malloc(sizeof(int) * tab_clause_size);
+   dommage_if_flip = (int*) malloc(sizeof(int) * tab_variable_size);
+   zerodommage = (int*) malloc(sizeof(int) *tab_variable_size);
+   zerodommage_vars_stack = (int*) malloc(sizeof(int) * tab_variable_size);
+   flip_time = (int*) malloc(sizeof(int) * tab_variable_size);
+   enter_stack_time = (int*) malloc(sizeof(int) * tab_variable_size);
+   walk_time = (int*) malloc(sizeof(int) *tab_variable_size);
+
+}
+
+bool seq_processing(int _var_size, const vector< vector<int> >& clauses)
+{
+
+    int NB_VAR, NB_CLAUSE;
+    __initialize_vars();
+    int ret = build_simple_sat_instance(_var_size, clauses);
+
+    switch(ret)
+    {
+    case FALSE:
+         return false;
+    case SATISFIABLE:
+         return true;
+    case TRUE:
+         VARIABLE_STACK_fill_pointer=0;
+         CLAUSE_STACK_fill_pointer = 0;
+         MANAGEDCLAUSE_STACK_fill_pointer = 0;
+         T_SEUIL= 0; 
+         return search();
+    case NONE:
+         return false;
+    }
+
+    return false;
+}
+
+/*
+main(int argc, char *argv[]) {
+  int i,  var; 
+
+  if (argc==3) {
+    SEED_FLAG=TRUE; 
+    if (sscanf(argv[2],"%u",&SEED)!=1) {
+      fprintf(stdout, "c Bad argument %s\n", argv[2]);
+      fprintf(stdout, "s UNKNOWN\n");
+      exit(0);
+    }
+  } 
+  //parse_parameters(argc,argv);
+  INPUT_FILE=argv[1];
+  coefficient_for_prm = 10.0; 
+   switch (build(BUILD_FLAG, INPUT_FILE)) {
+  case FALSE: fprintf(stdout, "c Input file error or too large formula\n"); 
+    fprintf(stdout, "s UNKNOWN\n");
+    exit(0);
+    return FALSE;
+  case SATISFIABLE:
+    if (verify_sol_input(argv[1])==TRUE) {
+      fprintf(stdout, "c Satisfied at top\n");
+      fprintf(stdout, "s SATISFIABLE\n");
+      fprintf(stdout, "v ");
+
+      for (var=0; var<NB_VAR; var++) {
+       if (var_current_value[var]==TRUE)
+         fprintf(stdout, "%d ", var+1);
+       else fprintf(stdout, "%d ", -(var+1));
+      }
+      fprintf(stdout, "\n");
+      fprintf(stdout, "v 0 \n");
+      exit(10);
+    }
+    else {
+      fprintf(stdout, "c problem at top\n");
+      fprintf(stdout, "s UNKNOWN\n");
+      exit(0);
+    }
+    return FALSE;
+  case TRUE:
+    VARIABLE_STACK_fill_pointer=0;
+    CLAUSE_STACK_fill_pointer = 0;
+    MANAGEDCLAUSE_STACK_fill_pointer = 0;
+    T_SEUIL= 0; 
+    if (search(argv[1])==TRUE) {
+       exit(10);
+    }
+    else 
+      exit(0);
+    break;
+  case NONE: fprintf(stdout, "c A contradiction is found at top!\n");
+    fprintf(stdout, "s UNSATISFIABLE\n");
+    exit(20);
+  }
+  return TRUE;
+}
+
+*/
diff --git a/examples/charm++/satisfiability/TNM/TNM.h b/examples/charm++/satisfiability/TNM/TNM.h
new file mode 100644 (file)
index 0000000..019b87b
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _TNM_H_
+#define _TNM_H_
+
+#include <vector>
+
+using namespace std;
+
+bool seq_processing(int _var_size, const vector< vector<int> >& clauses);
+
+#endif
diff --git a/examples/charm++/satisfiability/TNM/TNM.pdf b/examples/charm++/satisfiability/TNM/TNM.pdf
new file mode 100644 (file)
index 0000000..37e7e4a
Binary files /dev/null and b/examples/charm++/satisfiability/TNM/TNM.pdf differ
diff --git a/examples/charm++/satisfiability/TNM/adaptnoisebis1at5.C b/examples/charm++/satisfiability/TNM/adaptnoisebis1at5.C
new file mode 100644 (file)
index 0000000..61cd079
--- /dev/null
@@ -0,0 +1,31 @@
+#define invPhi 10\r
+#define invTheta 5\r
+\r
+int lastAdaptFlip, lastBest, AdaptLength, NB_BETTER;\r
+\r
+int initNoise() {\r
+  lastAdaptFlip=0;\r
+  lastBest = MY_CLAUSE_STACK_fill_pointer;\r
+  NOISE=0; LNOISE=0; NB_BETTER=0;\r
+  AdaptLength=NB_CLAUSE / invTheta;\r
+}\r
+\r
+void adaptNoveltyNoise(int flip) {\r
+  if ((flip - lastAdaptFlip) > AdaptLength) {\r
+    NOISE += (int) ((100 - NOISE) / invPhi);\r
+    LNOISE= (int) NOISE/10;\r
+    lastAdaptFlip = flip;      \r
+    // NB_BETTER=0;\r
+    lastBest = MY_CLAUSE_STACK_fill_pointer;\r
+  } \r
+  else if (MY_CLAUSE_STACK_fill_pointer < lastBest) {\r
+    //  NB_BETTER++;\r
+    //  if (NB_BETTER>1) {\r
+      NOISE -= (int) (NOISE / invPhi / 2);\r
+      LNOISE= (int) NOISE/10;\r
+      lastAdaptFlip = flip;\r
+      lastBest = MY_CLAUSE_STACK_fill_pointer;\r
+      //   NB_BETTER=0;\r
+      // }\r
+  }\r
+}\r
diff --git a/examples/charm++/satisfiability/TNM/inputbis.C b/examples/charm++/satisfiability/TNM/inputbis.C
new file mode 100644 (file)
index 0000000..7cca5d5
--- /dev/null
@@ -0,0 +1,377 @@
+\r
+#define OLD_CLAUSE_REDUNDANT -77\r
+#define NEW_CLAUSE_REDUNDANT -7\r
+\r
+\r
+int smaller_than(int lit1, int lit2) {\r
+  return ((lit1<NB_VAR) ? lit1 : lit1-NB_VAR) < \r
+    ((lit2<NB_VAR) ? lit2 : lit2-NB_VAR);\r
+}\r
+\r
+my_type redundant(int *new_clause, int *old_clause) {\r
+  int lit1, lit2, old_clause_diff=0, new_clause_diff=0;\r
+    \r
+  lit1=*old_clause; lit2=*new_clause;\r
+  while ((lit1 != NONE) && (lit2 != NONE)) {\r
+    if (smaller_than(lit1, lit2)) {\r
+      lit1=*(++old_clause); old_clause_diff++;\r
+    }\r
+    else\r
+      if (smaller_than(lit2, lit1)) {\r
+       lit2=*(++new_clause); new_clause_diff++;\r
+      }\r
+      else\r
+       if (complement(lit1, lit2)) {\r
+         return FALSE; /* old_clause_diff++; new_clause_diff++; j1++; j2++; */\r
+       }\r
+       else {\r
+          lit1=*(++old_clause);  lit2=*(++new_clause);\r
+       }\r
+  }\r
+  if ((lit1 == NONE) && (old_clause_diff == 0))\r
+    /* la nouvelle clause est redondante ou subsumee */\r
+    return NEW_CLAUSE_REDUNDANT;\r
+  if ((lit2 == NONE) && (new_clause_diff == 0))\r
+    /* la old clause est redondante ou subsumee */\r
+    return OLD_CLAUSE_REDUNDANT;\r
+  return FALSE;\r
+}\r
+\r
+my_type get_resolvant(int *clause1, int *clause2, int *resolvant) {\r
+  int lit1, lit2, nb_diff1=0,  nb_diff2=0,\r
+    nb_iden=0, nb_opps=0, j1=0, j2=0, j, limited_length;\r
+\r
+  while (((lit1=clause1[j1])!=NONE) && ((lit2=clause2[j2]) != NONE)) {\r
+    if (complement(lit1, lit2)) {\r
+      j1++; j2++; nb_opps++;\r
+    }\r
+    else\r
+      if (lit1 == lit2) {\r
+       j1++; j2++; nb_iden++;\r
+      }\r
+      else\r
+       if (smaller_than(lit1, lit2)) {\r
+          nb_diff1++; j1++;\r
+       }\r
+       else {\r
+          nb_diff2++; j2++;\r
+       }\r
+  }\r
+  if (nb_opps ==1) {\r
+    if (clause1[j1] ==NONE) {\r
+      for (; clause2[j2]!= NONE; j2++) nb_diff2++;\r
+    }\r
+    else {\r
+      for (; clause1[j1]!= NONE; j1++) nb_diff1++;\r
+    }\r
+    if ((j1==1) || (j2==1))  limited_length=RESOLVANT_LENGTH; \r
+    else\r
+      if ((j1==2) && (j2==2))  limited_length=1;\r
+      else\r
+       if (j1<j2) limited_length=((j1<RESOLVANT_LENGTH) ? j1 : RESOLVANT_LENGTH);\r
+       else  limited_length=((j2<RESOLVANT_LENGTH) ? j2 : RESOLVANT_LENGTH);\r
+\r
+    if (nb_diff1 + nb_diff2 + nb_iden <= limited_length) {\r
+      j1=0; j2=0; j=0;\r
+      while (((lit1 = clause1[j1])!=NONE) && ((lit2 = clause2[j2]) != NONE)) {\r
+       if (lit1 == lit2) {\r
+         resolvant[j] = lit1; j1++; j2++; j++;\r
+       }\r
+       else \r
+         if (smaller_than(lit1, lit2)) {\r
+           resolvant[j] = lit1; j1++; j++;\r
+         }\r
+         else\r
+           if (smaller_than(lit2, lit1)) {\r
+             resolvant[j] = lit2; j2++; j++;\r
+           }\r
+           else {\r
+             j1++; j2++;\r
+           }\r
+      }\r
+      if (clause1[j1] ==NONE) while ((resolvant[j++] = clause2[j2++]) != NONE);\r
+      else while ((resolvant[j++] = clause1[j1++]) != NONE);\r
+      if (j==0) return NONE;\r
+      if (nb_diff2==0) return 2; /* clause1 is redundant */\r
+      return TRUE;\r
+    }\r
+  }\r
+  return FALSE;\r
+}\r
+\r
+int INVOLVED_CLAUSE_STACK[tab_clause_size];\r
+int INVOLVED_CLAUSE_STACK_fill_pointer=0;\r
+int CLAUSE_INVOLVED[tab_clause_size];\r
+\r
+void remove_passive_clauses() {\r
+  int  clause, put_in, first=NONE;\r
+  for (clause=0; clause<NB_CLAUSE; clause++) {\r
+    if (clause_state[clause]==PASSIVE) {\r
+      first=clause; break;\r
+    }\r
+  }\r
+  if (first!=NONE) {\r
+    put_in=first;\r
+    for(clause=first+1; clause<NB_CLAUSE; clause++) {\r
+      if (clause_state[clause]==ACTIVE) {\r
+       sat[put_in]=sat[clause]; var_sign[put_in]=var_sign[clause];\r
+       clause_state[put_in]=ACTIVE; \r
+       clause_length[put_in]=clause_length[clause];\r
+       put_in++;\r
+      }\r
+    }\r
+    NB_CLAUSE=put_in;\r
+  }\r
+}\r
+\r
+void remove_passive_vars_in_clause(int clause) {\r
+  int *vars_signs, *vars_signs1, var, var1, first=NONE;\r
+  vars_signs=var_sign[clause];\r
+  for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {\r
+    if (var_state[var]!=ACTIVE) {\r
+      first=var; break;\r
+    }\r
+  }\r
+  if (first!=NONE) {\r
+    for(vars_signs1=vars_signs+2, var1=*vars_signs1; var1!=NONE; \r
+       var1=*(vars_signs1+=2)) {\r
+      if (var_state[var1]==ACTIVE) {\r
+       *vars_signs=var1; *(vars_signs+1) = *(vars_signs1+1);\r
+       vars_signs+=2;\r
+      }\r
+    }\r
+    *vars_signs=NONE;\r
+  }\r
+}\r
+\r
+int clean_structure() {\r
+  int clause, var, *vars_signs;\r
+  remove_passive_clauses();\r
+  if (NB_CLAUSE==0) \r
+    return SATISFIABLE;\r
+  for (clause=0; clause<NB_CLAUSE; clause++) \r
+    remove_passive_vars_in_clause(clause);\r
+  NB_ACTIVE_VAR=0;\r
+  for (var=0; var<NB_VAR; var++) { \r
+    neg_nb[var] = 0;\r
+    pos_nb[var] = 0;\r
+    if (var_state[var]==ACTIVE) NB_ACTIVE_VAR++;\r
+  }\r
+  for (clause=0; clause<NB_CLAUSE; clause++) {\r
+    vars_signs=var_sign[clause];\r
+    for(var=*vars_signs; var!=NONE; var=*(vars_signs+=2)) {\r
+      if (*(vars_signs+1)==POSITIVE) \r
+       pos_in[var][pos_nb[var]++]=clause;\r
+      else  neg_in[var][neg_nb[var]++]=clause;\r
+    }\r
+  }\r
+  for (var=0; var<NB_VAR; var++) { \r
+    neg_in[var][neg_nb[var]]=NONE;\r
+    pos_in[var][pos_nb[var]]=NONE;\r
+  }\r
+  return TRUE;\r
+}\r
+\r
+int unitclause_process();\r
+int simplify_formula();\r
+\r
+int lire_clauses(const vector< vector<int> >& _clauses) {\r
+    int i, j, jj, ii, length, tautologie, lits[1000], lit, lit1;\r
+    for (i=0; i<NB_CLAUSE; i++) {\r
+    \r
+        length = _clauses[i].size();\r
+        for(j=0; j<length; j++)\r
+        {\r
+            lits[j] = _clauses[i][j];\r
+        }\r
+        tautologie = FALSE;\r
+        /* test if some literals are redundant and sort the clause */\r
+        for (ii=0; ii<length-1; ii++) {\r
+            lit = lits[ii];\r
+            for (jj=ii+1; jj<length; jj++) {\r
+                if (abs(lit)>abs(lits[jj])) {\r
+                    lit1=lits[jj]; lits[jj]=lit; lit=lit1;\r
+                }\r
+                else\r
+                    if (lit == lits[jj]) {\r
+                        lits[jj] = lits[length-1]; \r
+                        jj--; length--; lits[length] = 0;\r
+                    }\r
+                    else\r
+                        if (abs(lit) == abs(lits[jj])) {\r
+                            tautologie = TRUE; break;\r
+                        }\r
+            }\r
+            if (tautologie == TRUE) break;\r
+            else lits[ii] = lit;\r
+        }\r
+        if (tautologie == FALSE) {\r
+            sat[i]= (int *)malloc((length+1) * sizeof(int));\r
+            for (j=0; j<length; j++) {\r
+              if (lits[j] < 0) \r
+                  sat[i][j] = abs(lits[j]) - 1 + NB_VAR ;\r
+              else \r
+                  sat[i][j] = lits[j]-1;\r
+          }\r
+          sat[i][length]=NONE;\r
+          clause_length[i]=length;\r
+          clause_state[i] = ACTIVE;\r
+      }\r
+      else { i--; NB_CLAUSE--;}\r
+  }\r
+  return TRUE;\r
+}\r
+\r
+void build_structure() {\r
+    int i, j, var, *lits1, length, clause, *vars_signs, lit;\r
+    for (i=0; i<NB_VAR; i++) { \r
+        neg_nb[i] = 0; pos_nb[i] = 0;\r
+    }\r
+    for (i=0; i<NB_CLAUSE; i++) {\r
+        for(j=0; j<clause_length[i]; j++) {\r
+            if (sat[i][j]>=NB_VAR) {\r
+                var=sat[i][j]-NB_VAR; neg_nb[var]++;\r
+            }\r
+            else {\r
+                var=sat[i][j]; \r
+                pos_nb[var]++;\r
+            }\r
+        }\r
+        if (sat[i][clause_length[i]] !=NONE)\r
+            printf("erreur ");\r
+    }\r
+    for(clause=0;clause<NB_CLAUSE;clause++) {\r
+        length = clause_length[clause];\r
+        var_sign[clause] = (int *)malloc((2*length+1)*sizeof(int));\r
+        lits1 = sat[clause]; vars_signs = var_sign[clause];\r
+        for(lit=*lits1; lit!=NONE; lit=*(++lits1),(vars_signs+=2)) {\r
+            if (negative(lit)) {\r
+                *(vars_signs+1)= NEGATIVE;\r
+                *vars_signs = get_var_from_lit(lit);\r
+            }\r
+            else {\r
+                *(vars_signs+1)=POSITIVE;\r
+                *vars_signs = lit;\r
+            }\r
+        }\r
+        *vars_signs = NONE;  \r
+    }\r
+    for (i=0; i<NB_VAR; i++) { \r
+    neg_in[i] = (int *)malloc((neg_nb[i]+1) * sizeof(int));\r
+    pos_in[i] = (int *)malloc((pos_nb[i]+1) * sizeof(int));\r
+    neg_in[i][neg_nb[i]]=NONE; pos_in[i][pos_nb[i]]=NONE;\r
+    neg_nb[i] = 0; pos_nb[i] = 0;\r
+    var_state[i] = ACTIVE;\r
+  }   \r
+  for (i=0; i<NB_CLAUSE; i++) {\r
+    // if (i==774)\r
+    //  printf("kjhsdf");\r
+    lits1 = sat[i];\r
+    //printf("\n");\r
+    for(lit=*lits1; lit!=NONE; lit=*(++lits1)) {\r
+\r
+      //  printf("   %d", get_var_from_lit(lit));\r
+        if (positive(lit)) \r
+            pos_in[lit][pos_nb[lit]++] = i;\r
+        else\r
+            neg_in[get_var_from_lit(lit)]\r
+                [neg_nb[get_var_from_lit(lit)]++] = i;\r
+    }\r
+  }\r
+}\r
+\r
+\r
+void eliminate_redundance() {\r
+  int *lits, i, lit, *clauses, res, clause;\r
+\r
+  for (i=0; i<NB_CLAUSE; i++) {\r
+    if (clause_state[i]==ACTIVE) {\r
+      if (clause_length[i]==1)\r
+       push(i, UNITCLAUSE_STACK);\r
+      lits = sat[i];\r
+      for(lit=*lits; lit!=NONE; lit=*(++lits)) {\r
+       if (positive(lit)) \r
+         clauses=pos_in[lit];\r
+       else clauses=neg_in[lit-NB_VAR];\r
+       for(clause=*clauses; clause!=NONE; clause=*(++clauses)) {\r
+         if ((clause<i) && (clause_state[clause]==ACTIVE)) {\r
+           res=redundant(sat[i], sat[clause]);\r
+           if (res==NEW_CLAUSE_REDUNDANT) {\r
+             clause_state[i]=PASSIVE;\r
+             break;\r
+           }\r
+           else if (res==OLD_CLAUSE_REDUNDANT)\r
+             clause_state[clause]=PASSIVE;\r
+         }\r
+       }\r
+       if (res==NEW_CLAUSE_REDUNDANT)\r
+         break;\r
+      }\r
+    }\r
+  }\r
+}\r
+\r
+my_type build_simple_sat_instance(int vars_size,  const vector< vector<int> >&  clauses) {\r
+  \r
+    int i, j, length, NB_CLAUSE1, res, ii, jj, tautologie, lit1,\r
+        *pos_nb, *neg_nb;\r
\r
+    NB_VAR = vars_size;\r
+    NB_CLAUSE = clauses.size();\r
+\r
+    INIT_NB_CLAUSE = NB_CLAUSE;\r
+    neg_nb=(int *)reduce_if_negative_nb;\r
+    pos_nb=(int *)reduce_if_positive_nb;\r
+\r
+    if (lire_clauses(clauses)==FALSE)\r
+        return FALSE;\r
+    build_structure();\r
+    eliminate_redundance();\r
+    if (unitclause_process()==NONE) return NONE;\r
+    res=clean_structure();\r
+    if (res==FALSE)\r
+        return FALSE;\r
+    else if (res==SATISFIABLE)\r
+        return SATISFIABLE;\r
+    return TRUE;\r
+}\r
+\r
+int verify_sol_input(char *input_file) {\r
+    FILE* fp_in=fopen(input_file, "r");\r
+  char ch, word2[WORD_LENGTH];\r
+  int i, j, lit, var, nb_var1, nb_clause1;\r
+\r
+  if (fp_in == NULL) return FALSE;\r
+\r
+  fscanf(fp_in, "%c", &ch);\r
+  while (ch!='p') {\r
+    while (ch!='\n') fscanf(fp_in, "%c", &ch);  \r
+    fscanf(fp_in, "%c", &ch);\r
+  }\r
+  \r
+  fscanf(fp_in, "%s%d%d", word2, &nb_var1, &nb_clause1);\r
+  for (i=0; i<nb_clause1; i++) {\r
+    fscanf(fp_in, "%d", &lit);\r
+    while (lit != 0) {\r
+      if (lit<0) {\r
+       if (var_current_value[abs(lit)-1]==FALSE)\r
+         break;\r
+      }\r
+      else {\r
+       if (var_current_value[lit-1]==TRUE)\r
+         break;\r
+      }\r
+      fscanf(fp_in, "%d", &lit);\r
+    }\r
+    if (lit==0) {\r
+      fclose(fp_in);\r
+      return FALSE;\r
+    }\r
+    else {\r
+      do fscanf(fp_in, "%d", &lit);\r
+      while (lit != 0) ;\r
+    }\r
+  }\r
+  fclose(fp_in);\r
+  return TRUE;\r
+}\r
diff --git a/examples/charm++/satisfiability/example/example_100.cnf b/examples/charm++/satisfiability/example/example_100.cnf
new file mode 100644 (file)
index 0000000..7933544
--- /dev/null
@@ -0,0 +1,103 @@
+c SAT07-Contest Parameters: unif2p p=7 nbc2=2803 nbc3=6541 v=3500 seed=1286605994
+c Uniform UNKNOWN (2+p)-SAT Instance nbc2=2803, nbc3=6541, p=0.70, nbv=3500, seed=1286605994
+p cnf 3500 100
+-1765 -1070 0
+-1298 -3068 0
+-2907 -225 0
+776 -3004 0
+578 1958 0
+-1372 1977 0
+1900 -2858 0
+-1841 -488 0
+-104 -1745 0
+-599 -1021 0
+-424 -88 0
+2289 1997 0
+-2443 2011 0
+-910 -1746 0
+-174 3232 0
+2267 -2120 0
+1778 272 0
+1676 -2380 0
+-2538 -3299 0
+-2059 691 0
+2248 -1315 0
+-3189 2467 0
+664 -1877 0
+2418 1800 0
+-861 -3070 0
+3364 -1135 0
+917 -227 0
+2728 -476 0
+-119 -1132 0
+-1351 -3170 0
+-2297 1445 0
+-2043 -1910 0
+1816 1939 0
+3429 582 0
+-507 -320 0
+1726 -1209 0
+2585 -1652 0
+-2440 -2450 0
+-2867 2451 0
+-139 813 0
+2340 135 0
+-2325 -3113 0
+1524 -2565 0
+727 -1593 0
+2614 247 0
+1065 -2790 0
+3091 -1842 0
+-2600 -1685 0
+1904 -207 0
+2535 -59 0
+-3251 307 0
+2898 -289 0
+-1644 -65 0
+-3232 -3141 0
+1094 -2553 0
+635 1633 0
+-2556 -3267 0
+1658 -2147 0
+2450 1886 0
+853 358 0
+2710 1705 0
+-3275 -1764 0
+2827 1061 0
+1552 -2501 0
+1032 -2196 0
+2093 599 0
+-3297 2888 0
+-1159 3146 0
+-167 -2808 0
+2696 808 0
+1887 -1984 0
+-1062 545 0
+-3251 1283 0
+83 2885 0
+-865 -528 0
+-2017 2391 0
+1523 -2124 0
+2769 -2741 0
+-1300 -1093 0
+-2209 954 0
+-878 -303 0
+618 840 0
+1959 5 0
+-1540 -2659 0
+593 281 0
+-713 1017 0
+746 873 0
+-247 -1414 0
+564 -2085 0
+1404 2663 0
+-791 -338 0
+-1563 -1893 0
+777 2017 0
+1696 -2 0
+1643 1896 0
+2701 -3013 0
+1526 -945 0
+-1021 -2791 0
+2775 642 0
+2624 -2992 0
diff --git a/examples/charm++/satisfiability/example/example_1000.cnf b/examples/charm++/satisfiability/example/example_1000.cnf
new file mode 100644 (file)
index 0000000..33943aa
--- /dev/null
@@ -0,0 +1,1003 @@
+c SAT07-Contest Parameters: unif2p p=7 nbc2=2803 nbc3=6541 v=3500 seed=1286605994
+c Uniform UNKNOWN (2+p)-SAT Instance nbc2=2803, nbc3=6541, p=0.70, nbv=3500, seed=1286605994
+p cnf 3500 1000
+-1765 -1070 0
+-1298 -3068 0
+-2907 -225 0
+776 -3004 0
+578 1958 0
+-1372 1977 0
+1900 -2858 0
+-1841 -488 0
+-104 -1745 0
+-599 -1021 0
+-424 -88 0
+2289 1997 0
+-2443 2011 0
+-910 -1746 0
+-174 3232 0
+2267 -2120 0
+1778 272 0
+1676 -2380 0
+-2538 -3299 0
+-2059 691 0
+2248 -1315 0
+-3189 2467 0
+664 -1877 0
+2418 1800 0
+-861 -3070 0
+3364 -1135 0
+917 -227 0
+2728 -476 0
+-119 -1132 0
+-1351 -3170 0
+-2297 1445 0
+-2043 -1910 0
+1816 1939 0
+3429 582 0
+-507 -320 0
+1726 -1209 0
+2585 -1652 0
+-2440 -2450 0
+-2867 2451 0
+-139 813 0
+2340 135 0
+-2325 -3113 0
+1524 -2565 0
+727 -1593 0
+2614 247 0
+1065 -2790 0
+3091 -1842 0
+-2600 -1685 0
+1904 -207 0
+2535 -59 0
+-3251 307 0
+2898 -289 0
+-1644 -65 0
+-3232 -3141 0
+1094 -2553 0
+635 1633 0
+-2556 -3267 0
+1658 -2147 0
+2450 1886 0
+853 358 0
+2710 1705 0
+-3275 -1764 0
+2827 1061 0
+1552 -2501 0
+1032 -2196 0
+2093 599 0
+-3297 2888 0
+-1159 3146 0
+-167 -2808 0
+2696 808 0
+1887 -1984 0
+-1062 545 0
+-3251 1283 0
+83 2885 0
+-865 -528 0
+-2017 2391 0
+1523 -2124 0
+2769 -2741 0
+-1300 -1093 0
+-2209 954 0
+-878 -303 0
+618 840 0
+1959 5 0
+-1540 -2659 0
+593 281 0
+-713 1017 0
+746 873 0
+-247 -1414 0
+564 -2085 0
+1404 2663 0
+-791 -338 0
+-1563 -1893 0
+777 2017 0
+1696 -2 0
+1643 1896 0
+2701 -3013 0
+1526 -945 0
+-1021 -2791 0
+2775 642 0
+2624 -2992 0
+1208 -1390 0
+1041 1844 0
+-2265 -1072 0
+49 1230 0
+2182 -1004 0
+-2282 1514 0
+3423 -2393 0
+1189 2447 0
+3392 1800 0
+-1727 115 0
+-382 1957 0
+-1772 2005 0
+-1860 156 0
+3303 -2197 0
+-323 2272 0
+-2972 408 0
+-1554 -295 0
+-2350 -272 0
+1597 3162 0
+-1915 321 0
+1175 -915 0
+-2145 -702 0
+-701 -479 0
+691 -3036 0
+3093 2025 0
+-240 1173 0
+1026 1704 0
+-2502 -3214 0
+2501 1152 0
+-240 -113 0
+1326 1112 0
+1477 760 0
+-477 3011 0
+-1581 -2553 0
+-1519 2046 0
+-2781 695 0
+2387 -2927 0
+-200 66 0
+130 41 0
+1825 -2675 0
+85 3018 0
+-2869 772 0
+-2827 1407 0
+1075 -388 0
+-448 2587 0
+-2853 2173 0
+330 1088 0
+-3014 955 0
+2448 -1263 0
+-2542 2703 0
+1350 -475 0
+-2710 -2386 0
+-677 305 0
+625 3011 0
+1190 -3109 0
+-860 -300 0
+1036 1623 0
+-96 1945 0
+-1434 371 0
+3282 301 0
+729 -487 0
+3081 -2308 0
+-595 -1473 0
+2480 -1261 0
+3335 92 0
+-208 1377 0
+-956 -2285 0
+-1003 1195 0
+3190 -3085 0
+-1678 41 0
+-309 -227 0
+-3286 -2803 0
+-871 3052 0
+-1430 2720 0
+-2675 3121 0
+-590 1909 0
+-2496 3050 0
+3385 -2946 0
+1104 2982 0
+1160 511 0
+-1677 -3109 0
+-990 -1991 0
+-333 341 0
+-2426 -1202 0
+242 2096 0
+342 -321 0
+-1214 2335 0
+-2085 904 0
+-2907 3368 0
+2840 560 0
+3469 -595 0
+-3150 -317 0
+2547 19 0
+-453 -834 0
+-141 -540 0
+-2514 2487 0
+1955 2317 0
+-713 967 0
+-276 3076 0
+-3357 3317 0
+2303 1793 0
+-174 921 0
+2295 -2539 0
+-2903 3230 0
+380 -2651 0
+-1422 1773 0
+-1679 1623 0
+-1239 439 0
+1275 2796 0
+-1358 -1762 0
+1676 1461 0
+2325 2436 0
+-3236 296 0
+1704 2855 0
+-3415 1417 0
+-2417 1194 0
+587 1639 0
+-705 2096 0
+700 -3459 0
+-1246 -2228 0
+480 2138 0
+-1091 -2065 0
+-2470 -2158 0
+1837 1577 0
+340 868 0
+3115 3425 0
+-3020 -3338 0
+-2278 -1746 0
+-1089 -1440 0
+1876 -3184 0
+-3486 2231 0
+1692 747 0
+22 -3076 0
+1078 3450 0
+-2884 -1361 0
+1853 -918 0
+3490 1621 0
+2363 2711 0
+3145 -672 0
+1747 3367 0
+-3032 1404 0
+-2443 -1206 0
+-1141 -3487 0
+-2174 -2435 0
+3262 529 0
+-1859 973 0
+-1179 2839 0
+3062 -1193 0
+2148 3203 0
+-449 2915 0
+3475 1083 0
+306 -811 0
+571 -2192 0
+1078 432 0
+1308 1682 0
+-2475 -3463 0
+1971 -2212 0
+-573 -509 0
+-1028 -2695 0
+1608 -1401 0
+1345 -1107 0
+-3256 1179 0
+-1309 -1933 0
+-2235 -1405 0
+1559 3125 0
+1742 -2679 0
+-1724 602 0
+-1879 -2009 0
+2094 2146 0
+-1154 -2913 0
+-2685 -2745 0
+-3239 2125 0
+-765 3429 0
+1882 1776 0
+-981 3435 0
+-880 2583 0
+-1559 -1322 0
+1054 1674 0
+2079 1658 0
+1568 3115 0
+2031 1339 0
+-2151 -516 0
+1992 2491 0
+2394 -2343 0
+2803 -3164 0
+898 594 0
+-2257 1293 0
+2533 -2656 0
+450 1475 0
+108 -2233 0
+2441 -1470 0
+2797 -1786 0
+-476 -2455 0
+-2788 850 0
+1799 -1868 0
+3050 1895 0
+1517 -2600 0
+-1860 224 0
+-2556 -2135 0
+-2005 452 0
+1871 355 0
+-2454 2702 0
+-3347 -1583 0
+2092 -2896 0
+-3346 -1734 0
+3328 -2506 0
+151 -735 0
+1560 1136 0
+-592 -1088 0
+-2695 296 0
+-1358 1937 0
+1856 58 0
+3328 -3407 0
+-249 2038 0
+52 -2555 0
+-459 1542 0
+1680 -594 0
+2918 3415 0
+-2768 -725 0
+-3183 -2825 0
+2574 2666 0
+-1644 -3222 0
+475 3307 0
+2466 1983 0
+478 1519 0
+-3466 671 0
+3284 -358 0
+2179 -2477 0
+-2414 575 0
+2845 -2252 0
+-2573 753 0
+3407 -2182 0
+1812 -280 0
+1633 -1011 0
+2347 882 0
+-1050 2277 0
+-1500 519 0
+-3149 663 0
+-1329 -258 0
+-650 1620 0
+-2640 -738 0
+2849 2188 0
+3116 2720 0
+2927 628 0
+-849 -1769 0
+418 -2718 0
+346 -2982 0
+1916 -3456 0
+3000 -1828 0
+2441 544 0
+84 -2722 0
+-1260 435 0
+997 2606 0
+-1135 3160 0
+1299 -2476 0
+-243 -769 0
+-3125 2091 0
+3112 -622 0
+-2397 2704 0
+3194 2266 0
+-1843 -2104 0
+-3194 958 0
+-906 706 0
+-2365 -890 0
+571 554 0
+2113 3376 0
+-1020 1167 0
+-2219 1403 0
+1302 -38 0
+1771 1987 0
+928 -324 0
+666 1781 0
+-692 1418 0
+-10 314 0
+-373 -1742 0
+-1412 -3153 0
+3151 208 0
+-685 -597 0
+1385 1405 0
+2133 -3286 0
+2020 -2129 0
+2496 -3059 0
+423 -1961 0
+945 -1047 0
+1303 -2016 0
+3448 99 0
+32 -3382 0
+1189 1488 0
+-870 -1739 0
+-2559 2734 0
+2598 1315 0
+2807 -636 0
+-115 2595 0
+-1763 1395 0
+698 458 0
+-943 1595 0
+-2062 1678 0
+-1130 -602 0
+2106 269 0
+-777 2021 0
+-55 954 0
+-309 112 0
+-124 -2892 0
+2515 2879 0
+820 2198 0
+-1968 -2176 0
+-1215 1985 0
+3349 -2883 0
+-1621 1720 0
+-2684 2936 0
+2401 374 0
+-3314 -2492 0
+-809 -2582 0
+-488 3350 0
+-202 -194 0
+-2340 3453 0
+3412 2389 0
+4 1903 0
+652 319 0
+2030 1098 0
+-500 2116 0
+-1437 -2691 0
+300 -1688 0
+-2459 -3099 0
+3313 1466 0
+312 -2220 0
+-2146 -1427 0
+1849 -14 0
+-2704 3337 0
+-594 -2278 0
+-1910 -32 0
+-2106 -3239 0
+1618 1735 0
+-1074 -2891 0
+2992 395 0
+-3342 -189 0
+2537 -3184 0
+2551 -523 0
+2427 -1829 0
+185 2951 0
+-2772 231 0
+-1639 -65 0
+439 -2471 0
+-867 2825 0
+2684 -3033 0
+971 2696 0
+611 -930 0
+-2591 2598 0
+-1566 -2207 0
+-2450 -835 0
+2730 -3169 0
+2464 3498 0
+-1502 -3383 0
+3086 2369 0
+-102 -991 0
+-179 -1054 0
+-2916 1448 0
+2032 -1253 0
+-2088 -1356 0
+3414 2699 0
+885 387 0
+-1659 -666 0
+2555 952 0
+1745 977 0
+-1766 3025 0
+1207 -1558 0
+1698 -845 0
+-768 -3027 0
+-2625 2122 0
+2669 2544 0
+-944 -956 0
+2000 -348 0
+857 562 0
+-649 -1858 0
+-1533 -458 0
+-2746 -451 0
+-3397 -2655 0
+1860 -789 0
+1693 -1992 0
+177 -457 0
+2212 3098 0
+3138 1707 0
+-657 -3470 0
+-2148 1773 0
+2994 1110 0
+-2625 656 0
+142 1009 0
+1487 -1352 0
+2484 -3058 0
+2404 -3292 0
+3428 -2963 0
+-183 620 0
+-2162 -1028 0
+-127 -2103 0
+831 -587 0
+-1077 -2515 0
+2888 2182 0
+3336 -1351 0
+1735 1840 0
+2049 1593 0
+688 -1997 0
+804 -1083 0
+211 452 0
+-108 1348 0
+1538 1286 0
+2003 1138 0
+3450 2155 0
+1935 -2708 0
+-2868 3436 0
+1804 -1806 0
+2688 -3301 0
+-1724 2290 0
+-1178 -1136 0
+2711 -3418 0
+1749 1158 0
+2320 -2806 0
+-1569 1859 0
+259 1886 0
+-2422 -2241 0
+2835 -408 0
+1105 192 0
+-316 2975 0
+2182 2248 0
+-997 2688 0
+794 2438 0
+1211 -498 0
+2511 -778 0
+268 2356 0
+2729 -1688 0
+-2656 -1608 0
+1794 -2338 0
+1907 1856 0
+2572 -252 0
+-1617 414 0
+3488 -2471 0
+2377 1629 0
+374 -1148 0
+-977 867 0
+3110 2060 0
+1230 -716 0
+-1208 584 0
+1718 -3451 0
+2188 -1961 0
+248 2668 0
+-3404 -151 0
+-3071 151 0
+721 697 0
+-2626 -2253 0
+-2380 3157 0
+332 -2302 0
+-2028 -83 0
+852 -2897 0
+3067 1637 0
+-564 -1817 0
+-498 -3236 0
+425 3455 0
+1323 3402 0
+-2719 -674 0
+-2967 22 0
+7 -1074 0
+-2466 2210 0
+-997 -814 0
+-3039 1117 0
+2536 -2768 0
+683 -2012 0
+1373 1147 0
+3441 1157 0
+587 -3020 0
+1441 2581 0
+-2255 432 0
+442 -1757 0
+-2619 -3336 0
+194 -3202 0
+1032 -2405 0
+2017 -920 0
+-2292 -2155 0
+-2169 2669 0
+-1128 2717 0
+-1147 1047 0
+-1998 -66 0
+-2729 257 0
+616 -1234 0
+2723 1735 0
+2592 -1745 0
+-1624 -2184 0
+513 -821 0
+2373 1926 0
+2749 -3061 0
+1759 2238 0
+2478 1506 0
+2124 -3214 0
+-129 -2476 0
+2372 1003 0
+-2559 1045 0
+-191 2300 0
+1461 -1417 0
+1677 2092 0
+126 2355 0
+3337 -3465 0
+27 1718 0
+99 -1783 0
+1044 588 0
+2296 673 0
+-1247 3475 0
+-2243 -78 0
+2163 1117 0
+1001 -1966 0
+21 3425 0
+2903 2777 0
+-1033 1680 0
+-2751 -84 0
+941 -3421 0
+-2124 -2051 0
+-2431 -2787 0
+748 -959 0
+1434 -889 0
+2589 1283 0
+-29 3450 0
+-1814 -3277 0
+92 -2437 0
+-3195 3003 0
+-654 -2058 0
+41 2170 0
+-398 2311 0
+3223 -3109 0
+-3056 2530 0
+-3092 624 0
+-2003 -1899 0
+-548 -323 0
+-190 2603 0
+1896 -1705 0
+-830 -1780 0
+-609 303 0
+-946 1533 0
+-1638 221 0
+1717 1838 0
+20 3465 0
+1041 440 0
+340 1730 0
+2659 1722 0
+-1398 -3430 0
+-1357 -2881 0
+-119 3134 0
+1720 -599 0
+-132 1949 0
+-3131 608 0
+1031 1139 0
+2346 -3456 0
+1385 -2586 0
+-1348 2235 0
+1567 3301 0
+3340 -1526 0
+962 1143 0
+-2361 562 0
+586 81 0
+1061 3174 0
+-3422 1686 0
+725 -2736 0
+2289 2078 0
+2936 -2099 0
+77 -990 0
+1491 2329 0
+-3252 -1507 0
+2446 -3257 0
+-3440 137 0
+-1863 -2956 0
+1909 -2780 0
+-1636 1742 0
+-1119 650 0
+782 1186 0
+1888 1345 0
+-373 3200 0
+2545 -976 0
+2709 1558 0
+-1964 -2463 0
+-2216 1812 0
+-3436 2444 0
+1939 -1251 0
+2821 1160 0
+197 -4 0
+696 -149 0
+1409 -1022 0
+2544 -3472 0
+-688 -1092 0
+744 1340 0
+-164 3009 0
+1685 -2676 0
+1528 1124 0
+-158 2128 0
+2977 -1438 0
+-3133 -3279 0
+3192 944 0
+906 -3119 0
+-1374 -552 0
+3296 -1441 0
+2406 46 0
+335 -629 0
+-1822 1832 0
+-3476 1775 0
+-2480 -103 0
+-1502 -953 0
+2348 -2433 0
+1232 -3466 0
+-2936 2700 0
+2183 -3081 0
+1895 -1958 0
+3021 1537 0
+2950 1885 0
+1361 326 0
+841 2351 0
+3131 -2209 0
+-2326 -2336 0
+-1237 -1513 0
+3329 1501 0
+202 1350 0
+1178 -603 0
+2571 2745 0
+-186 1984 0
+411 2382 0
+2101 245 0
+3134 -2969 0
+1727 2311 0
+507 1581 0
+-3395 721 0
+-3111 -2377 0
+1561 -3112 0
+1553 -1208 0
+-3211 -3491 0
+-3209 -2306 0
+429 -3363 0
+1277 2619 0
+-126 -136 0
+3306 3033 0
+-3372 -3338 0
+1138 -1577 0
+2497 192 0
+-1026 -139 0
+-113 -2389 0
+1445 -2561 0
+-1348 -1307 0
+1708 -2519 0
+3484 3002 0
+-3401 1968 0
+-2645 -1102 0
+1156 -1625 0
+1243 -2658 0
+-2021 758 0
+-915 -1021 0
+-2904 701 0
+-2396 508 0
+-1281 1194 0
+1135 -596 0
+37 59 0
+-2734 -467 0
+-935 -1122 0
+3290 971 0
+2182 -2081 0
+-1873 3373 0
+1564 79 0
+-3362 -1489 0
+2894 1178 0
+764 -3381 0
+2869 48 0
+-3145 1852 0
+2689 -2902 0
+-3020 715 0
+-341 282 0
+1467 101 0
+3317 2988 0
+2923 -2278 0
+371 1450 0
+-3343 -1841 0
+233 93 0
+-517 836 0
+-1600 1060 0
+-2887 427 0
+2438 -3283 0
+2783 -652 0
+-886 -3169 0
+1902 -3260 0
+2752 -1886 0
+659 -626 0
+338 -1824 0
+-2846 -2427 0
+2165 -144 0
+-770 1101 0
+2896 2385 0
+2278 3431 0
+-1996 1299 0
+-1038 -1412 0
+-110 1100 0
+1987 -1238 0
+2235 2099 0
+2176 1161 0
+467 -2868 0
+2188 775 0
+-1116 3338 0
+497 -29 0
+-985 61 0
+-1154 122 0
+2679 2893 0
+-1919 -2925 0
+-598 -1630 0
+-1592 3469 0
+977 1361 0
+1055 -2080 0
+-2517 -1510 0
+-3438 -58 0
+-351 469 0
+4 -1154 0
+-2185 3387 0
+1688 -2983 0
+3160 638 0
+-2232 2753 0
+-1357 1417 0
+2394 -410 0
+925 1514 0
+771 -1529 0
+1952 3231 0
+-1270 2804 0
+57 -1644 0
+2659 -35 0
+-1659 -1810 0
+2926 -3297 0
+3096 -1278 0
+478 3321 0
+722 -2568 0
+-2266 2921 0
+1813 -1110 0
+1961 -1487 0
+2596 -672 0
+2014 -2371 0
+1779 -1976 0
+2956 -1185 0
+-1349 2168 0
+-2124 -2436 0
+-2653 -1408 0
+-1189 -1233 0
+2690 -2305 0
+-2373 -2814 0
+1324 2907 0
+-3086 956 0
+-845 1049 0
+-1212 3405 0
+29 -1478 0
+707 1501 0
+-1114 -1100 0
+-1480 -637 0
+-1703 -82 0
+636 -2223 0
+660 949 0
+3255 -2236 0
+-2166 1001 0
+2923 2769 0
+2807 -522 0
+782 90 0
+1203 -272 0
+-1208 3320 0
+2265 -239 0
+1621 -1802 0
+2687 -3160 0
+-1805 2645 0
+-2796 -1898 0
+-826 -2562 0
+-2158 368 0
+-1828 1733 0
+-954 2611 0
+946 2862 0
+216 -2242 0
+-1449 -3131 0
+1053 -822 0
+-15 407 0
+-2718 -2038 0
+961 1638 0
+2242 -989 0
+-1662 -3320 0
+-2872 397 0
+3447 1564 0
+-1555 -2878 0
+2269 241 0
+-558 2533 0
+2548 3433 0
+1419 -977 0
+-1272 1458 0
+-2858 1462 0
+-1881 304 0
+1911 1503 0
+-2966 2166 0
+521 -1542 0
+-1868 -859 0
+2395 -2868 0
+-2633 808 0
+-2680 1295 0
+-1795 995 0
+-1279 -884 0
+741 -767 0
+-747 -831 0
+-282 2402 0
+-25 2841 0
+2594 -1146 0
+-2418 -2833 0
+-538 -917 0
+-2825 2561 0
+1349 1327 0
+2136 1210 0
+-346 1592 0
+1880 3026 0
+-1081 -2747 0
+-3112 711 0
+-2407 -1967 0
+3426 1796 0
+-854 3369 0
+-1779 -1905 0
+1189 -2495 0
+929 -542 0
+-2692 2008 0
+-1867 2454 0
+844 -2504 0
+-1946 -2043 0
+-422 2288 0
+-2988 -825 0
+689 244 0
+1839 -126 0
+-573 -3335 0
+1350 -3213 0
+-3208 -2963 0
+3015 -953 0
+-3416 2136 0
+433 80 0
+2779 2739 0
+1108 -2148 0
+1497 620 0
+-770 1541 0
+2548 2130 0
+2508 -1999 0
+-2823 1826 0
+-95 877 0
+2228 -491 0
+-2980 1516 0
+1121 -324 0
+2467 2367 0
+2867 -77 0
+579 796 0
+2710 3157 0
+1026 2178 0
+-649 -3088 0
+-1806 -1105 0
+3239 1316 0
+-3292 -220 0
+-1179 1031 0
+-2373 1660 0
+948 886 0
+1850 1726 0
+-2231 2626 0
+2417 -3463 0
+-1658 -861 0
+1461 607 0
+1378 -898 0
+3465 1832 0
+-373 2885 0
+2280 1220 0
+2423 -1547 0
+576 -3495 0
+2788 182 0
+1936 3389 0
+2427 64 0
+3344 3302 0
+-1112 2438 0
+-296 -902 0
+-502 558 0
+-458 3310 0
+-1408 -495 0
+-781 -3157 0
+1170 2097 0
+1615 -1229 0
+-1085 2617 0
+-322 -598 0
+2467 -1901 0
+1707 2671 0
+-1702 2958 0
+-49 2188 0
+-2335 -2232 0
+2683 3174 0
+-126 -1647 0
+2309 1271 0
+3399 -700 0
+1381 1220 0
+-3035 2063 0
+-3292 803 0
+1535 2574 0
+2994 984 0
+-1038 66 0
+1374 1121 0
+-1008 2878 0
+-1690 -1970 0
+-1274 -809 0
+-1282 -3191 0
+1145 -33 0
+-1012 257 0
+-147 -1896 0
diff --git a/examples/charm++/satisfiability/example/example_4000.cnf b/examples/charm++/satisfiability/example/example_4000.cnf
new file mode 100644 (file)
index 0000000..5074113
--- /dev/null
@@ -0,0 +1,4003 @@
+c SAT07-Contest Parameters: unif2p p=7 nbc2=2803 nbc3=6541 v=3500 seed=1286605994
+c Uniform UNKNOWN (2+p)-SAT Instance nbc2=2803, nbc3=6541, p=0.70, nbv=3500, seed=1286605994
+p cnf 3500 4000
+-1765 -1070 0
+-1298 -3068 0
+-2907 -225 0
+776 -3004 0
+578 1958 0
+-1372 1977 0
+1900 -2858 0
+-1841 -488 0
+-104 -1745 0
+-599 -1021 0
+-424 -88 0
+2289 1997 0
+-2443 2011 0
+-910 -1746 0
+-174 3232 0
+2267 -2120 0
+1778 272 0
+1676 -2380 0
+-2538 -3299 0
+-2059 691 0
+2248 -1315 0
+-3189 2467 0
+664 -1877 0
+2418 1800 0
+-861 -3070 0
+3364 -1135 0
+917 -227 0
+2728 -476 0
+-119 -1132 0
+-1351 -3170 0
+-2297 1445 0
+-2043 -1910 0
+1816 1939 0
+3429 582 0
+-507 -320 0
+1726 -1209 0
+2585 -1652 0
+-2440 -2450 0
+-2867 2451 0
+-139 813 0
+2340 135 0
+-2325 -3113 0
+1524 -2565 0
+727 -1593 0
+2614 247 0
+1065 -2790 0
+3091 -1842 0
+-2600 -1685 0
+1904 -207 0
+2535 -59 0
+-3251 307 0
+2898 -289 0
+-1644 -65 0
+-3232 -3141 0
+1094 -2553 0
+635 1633 0
+-2556 -3267 0
+1658 -2147 0
+2450 1886 0
+853 358 0
+2710 1705 0
+-3275 -1764 0
+2827 1061 0
+1552 -2501 0
+1032 -2196 0
+2093 599 0
+-3297 2888 0
+-1159 3146 0
+-167 -2808 0
+2696 808 0
+1887 -1984 0
+-1062 545 0
+-3251 1283 0
+83 2885 0
+-865 -528 0
+-2017 2391 0
+1523 -2124 0
+2769 -2741 0
+-1300 -1093 0
+-2209 954 0
+-878 -303 0
+618 840 0
+1959 5 0
+-1540 -2659 0
+593 281 0
+-713 1017 0
+746 873 0
+-247 -1414 0
+564 -2085 0
+1404 2663 0
+-791 -338 0
+-1563 -1893 0
+777 2017 0
+1696 -2 0
+1643 1896 0
+2701 -3013 0
+1526 -945 0
+-1021 -2791 0
+2775 642 0
+2624 -2992 0
+1208 -1390 0
+1041 1844 0
+-2265 -1072 0
+49 1230 0
+2182 -1004 0
+-2282 1514 0
+3423 -2393 0
+1189 2447 0
+3392 1800 0
+-1727 115 0
+-382 1957 0
+-1772 2005 0
+-1860 156 0
+3303 -2197 0
+-323 2272 0
+-2972 408 0
+-1554 -295 0
+-2350 -272 0
+1597 3162 0
+-1915 321 0
+1175 -915 0
+-2145 -702 0
+-701 -479 0
+691 -3036 0
+3093 2025 0
+-240 1173 0
+1026 1704 0
+-2502 -3214 0
+2501 1152 0
+-240 -113 0
+1326 1112 0
+1477 760 0
+-477 3011 0
+-1581 -2553 0
+-1519 2046 0
+-2781 695 0
+2387 -2927 0
+-200 66 0
+130 41 0
+1825 -2675 0
+85 3018 0
+-2869 772 0
+-2827 1407 0
+1075 -388 0
+-448 2587 0
+-2853 2173 0
+330 1088 0
+-3014 955 0
+2448 -1263 0
+-2542 2703 0
+1350 -475 0
+-2710 -2386 0
+-677 305 0
+625 3011 0
+1190 -3109 0
+-860 -300 0
+1036 1623 0
+-96 1945 0
+-1434 371 0
+3282 301 0
+729 -487 0
+3081 -2308 0
+-595 -1473 0
+2480 -1261 0
+3335 92 0
+-208 1377 0
+-956 -2285 0
+-1003 1195 0
+3190 -3085 0
+-1678 41 0
+-309 -227 0
+-3286 -2803 0
+-871 3052 0
+-1430 2720 0
+-2675 3121 0
+-590 1909 0
+-2496 3050 0
+3385 -2946 0
+1104 2982 0
+1160 511 0
+-1677 -3109 0
+-990 -1991 0
+-333 341 0
+-2426 -1202 0
+242 2096 0
+342 -321 0
+-1214 2335 0
+-2085 904 0
+-2907 3368 0
+2840 560 0
+3469 -595 0
+-3150 -317 0
+2547 19 0
+-453 -834 0
+-141 -540 0
+-2514 2487 0
+1955 2317 0
+-713 967 0
+-276 3076 0
+-3357 3317 0
+2303 1793 0
+-174 921 0
+2295 -2539 0
+-2903 3230 0
+380 -2651 0
+-1422 1773 0
+-1679 1623 0
+-1239 439 0
+1275 2796 0
+-1358 -1762 0
+1676 1461 0
+2325 2436 0
+-3236 296 0
+1704 2855 0
+-3415 1417 0
+-2417 1194 0
+587 1639 0
+-705 2096 0
+700 -3459 0
+-1246 -2228 0
+480 2138 0
+-1091 -2065 0
+-2470 -2158 0
+1837 1577 0
+340 868 0
+3115 3425 0
+-3020 -3338 0
+-2278 -1746 0
+-1089 -1440 0
+1876 -3184 0
+-3486 2231 0
+1692 747 0
+22 -3076 0
+1078 3450 0
+-2884 -1361 0
+1853 -918 0
+3490 1621 0
+2363 2711 0
+3145 -672 0
+1747 3367 0
+-3032 1404 0
+-2443 -1206 0
+-1141 -3487 0
+-2174 -2435 0
+3262 529 0
+-1859 973 0
+-1179 2839 0
+3062 -1193 0
+2148 3203 0
+-449 2915 0
+3475 1083 0
+306 -811 0
+571 -2192 0
+1078 432 0
+1308 1682 0
+-2475 -3463 0
+1971 -2212 0
+-573 -509 0
+-1028 -2695 0
+1608 -1401 0
+1345 -1107 0
+-3256 1179 0
+-1309 -1933 0
+-2235 -1405 0
+1559 3125 0
+1742 -2679 0
+-1724 602 0
+-1879 -2009 0
+2094 2146 0
+-1154 -2913 0
+-2685 -2745 0
+-3239 2125 0
+-765 3429 0
+1882 1776 0
+-981 3435 0
+-880 2583 0
+-1559 -1322 0
+1054 1674 0
+2079 1658 0
+1568 3115 0
+2031 1339 0
+-2151 -516 0
+1992 2491 0
+2394 -2343 0
+2803 -3164 0
+898 594 0
+-2257 1293 0
+2533 -2656 0
+450 1475 0
+108 -2233 0
+2441 -1470 0
+2797 -1786 0
+-476 -2455 0
+-2788 850 0
+1799 -1868 0
+3050 1895 0
+1517 -2600 0
+-1860 224 0
+-2556 -2135 0
+-2005 452 0
+1871 355 0
+-2454 2702 0
+-3347 -1583 0
+2092 -2896 0
+-3346 -1734 0
+3328 -2506 0
+151 -735 0
+1560 1136 0
+-592 -1088 0
+-2695 296 0
+-1358 1937 0
+1856 58 0
+3328 -3407 0
+-249 2038 0
+52 -2555 0
+-459 1542 0
+1680 -594 0
+2918 3415 0
+-2768 -725 0
+-3183 -2825 0
+2574 2666 0
+-1644 -3222 0
+475 3307 0
+2466 1983 0
+478 1519 0
+-3466 671 0
+3284 -358 0
+2179 -2477 0
+-2414 575 0
+2845 -2252 0
+-2573 753 0
+3407 -2182 0
+1812 -280 0
+1633 -1011 0
+2347 882 0
+-1050 2277 0
+-1500 519 0
+-3149 663 0
+-1329 -258 0
+-650 1620 0
+-2640 -738 0
+2849 2188 0
+3116 2720 0
+2927 628 0
+-849 -1769 0
+418 -2718 0
+346 -2982 0
+1916 -3456 0
+3000 -1828 0
+2441 544 0
+84 -2722 0
+-1260 435 0
+997 2606 0
+-1135 3160 0
+1299 -2476 0
+-243 -769 0
+-3125 2091 0
+3112 -622 0
+-2397 2704 0
+3194 2266 0
+-1843 -2104 0
+-3194 958 0
+-906 706 0
+-2365 -890 0
+571 554 0
+2113 3376 0
+-1020 1167 0
+-2219 1403 0
+1302 -38 0
+1771 1987 0
+928 -324 0
+666 1781 0
+-692 1418 0
+-10 314 0
+-373 -1742 0
+-1412 -3153 0
+3151 208 0
+-685 -597 0
+1385 1405 0
+2133 -3286 0
+2020 -2129 0
+2496 -3059 0
+423 -1961 0
+945 -1047 0
+1303 -2016 0
+3448 99 0
+32 -3382 0
+1189 1488 0
+-870 -1739 0
+-2559 2734 0
+2598 1315 0
+2807 -636 0
+-115 2595 0
+-1763 1395 0
+698 458 0
+-943 1595 0
+-2062 1678 0
+-1130 -602 0
+2106 269 0
+-777 2021 0
+-55 954 0
+-309 112 0
+-124 -2892 0
+2515 2879 0
+820 2198 0
+-1968 -2176 0
+-1215 1985 0
+3349 -2883 0
+-1621 1720 0
+-2684 2936 0
+2401 374 0
+-3314 -2492 0
+-809 -2582 0
+-488 3350 0
+-202 -194 0
+-2340 3453 0
+3412 2389 0
+4 1903 0
+652 319 0
+2030 1098 0
+-500 2116 0
+-1437 -2691 0
+300 -1688 0
+-2459 -3099 0
+3313 1466 0
+312 -2220 0
+-2146 -1427 0
+1849 -14 0
+-2704 3337 0
+-594 -2278 0
+-1910 -32 0
+-2106 -3239 0
+1618 1735 0
+-1074 -2891 0
+2992 395 0
+-3342 -189 0
+2537 -3184 0
+2551 -523 0
+2427 -1829 0
+185 2951 0
+-2772 231 0
+-1639 -65 0
+439 -2471 0
+-867 2825 0
+2684 -3033 0
+971 2696 0
+611 -930 0
+-2591 2598 0
+-1566 -2207 0
+-2450 -835 0
+2730 -3169 0
+2464 3498 0
+-1502 -3383 0
+3086 2369 0
+-102 -991 0
+-179 -1054 0
+-2916 1448 0
+2032 -1253 0
+-2088 -1356 0
+3414 2699 0
+885 387 0
+-1659 -666 0
+2555 952 0
+1745 977 0
+-1766 3025 0
+1207 -1558 0
+1698 -845 0
+-768 -3027 0
+-2625 2122 0
+2669 2544 0
+-944 -956 0
+2000 -348 0
+857 562 0
+-649 -1858 0
+-1533 -458 0
+-2746 -451 0
+-3397 -2655 0
+1860 -789 0
+1693 -1992 0
+177 -457 0
+2212 3098 0
+3138 1707 0
+-657 -3470 0
+-2148 1773 0
+2994 1110 0
+-2625 656 0
+142 1009 0
+1487 -1352 0
+2484 -3058 0
+2404 -3292 0
+3428 -2963 0
+-183 620 0
+-2162 -1028 0
+-127 -2103 0
+831 -587 0
+-1077 -2515 0
+2888 2182 0
+3336 -1351 0
+1735 1840 0
+2049 1593 0
+688 -1997 0
+804 -1083 0
+211 452 0
+-108 1348 0
+1538 1286 0
+2003 1138 0
+3450 2155 0
+1935 -2708 0
+-2868 3436 0
+1804 -1806 0
+2688 -3301 0
+-1724 2290 0
+-1178 -1136 0
+2711 -3418 0
+1749 1158 0
+2320 -2806 0
+-1569 1859 0
+259 1886 0
+-2422 -2241 0
+2835 -408 0
+1105 192 0
+-316 2975 0
+2182 2248 0
+-997 2688 0
+794 2438 0
+1211 -498 0
+2511 -778 0
+268 2356 0
+2729 -1688 0
+-2656 -1608 0
+1794 -2338 0
+1907 1856 0
+2572 -252 0
+-1617 414 0
+3488 -2471 0
+2377 1629 0
+374 -1148 0
+-977 867 0
+3110 2060 0
+1230 -716 0
+-1208 584 0
+1718 -3451 0
+2188 -1961 0
+248 2668 0
+-3404 -151 0
+-3071 151 0
+721 697 0
+-2626 -2253 0
+-2380 3157 0
+332 -2302 0
+-2028 -83 0
+852 -2897 0
+3067 1637 0
+-564 -1817 0
+-498 -3236 0
+425 3455 0
+1323 3402 0
+-2719 -674 0
+-2967 22 0
+7 -1074 0
+-2466 2210 0
+-997 -814 0
+-3039 1117 0
+2536 -2768 0
+683 -2012 0
+1373 1147 0
+3441 1157 0
+587 -3020 0
+1441 2581 0
+-2255 432 0
+442 -1757 0
+-2619 -3336 0
+194 -3202 0
+1032 -2405 0
+2017 -920 0
+-2292 -2155 0
+-2169 2669 0
+-1128 2717 0
+-1147 1047 0
+-1998 -66 0
+-2729 257 0
+616 -1234 0
+2723 1735 0
+2592 -1745 0
+-1624 -2184 0
+513 -821 0
+2373 1926 0
+2749 -3061 0
+1759 2238 0
+2478 1506 0
+2124 -3214 0
+-129 -2476 0
+2372 1003 0
+-2559 1045 0
+-191 2300 0
+1461 -1417 0
+1677 2092 0
+126 2355 0
+3337 -3465 0
+27 1718 0
+99 -1783 0
+1044 588 0
+2296 673 0
+-1247 3475 0
+-2243 -78 0
+2163 1117 0
+1001 -1966 0
+21 3425 0
+2903 2777 0
+-1033 1680 0
+-2751 -84 0
+941 -3421 0
+-2124 -2051 0
+-2431 -2787 0
+748 -959 0
+1434 -889 0
+2589 1283 0
+-29 3450 0
+-1814 -3277 0
+92 -2437 0
+-3195 3003 0
+-654 -2058 0
+41 2170 0
+-398 2311 0
+3223 -3109 0
+-3056 2530 0
+-3092 624 0
+-2003 -1899 0
+-548 -323 0
+-190 2603 0
+1896 -1705 0
+-830 -1780 0
+-609 303 0
+-946 1533 0
+-1638 221 0
+1717 1838 0
+20 3465 0
+1041 440 0
+340 1730 0
+2659 1722 0
+-1398 -3430 0
+-1357 -2881 0
+-119 3134 0
+1720 -599 0
+-132 1949 0
+-3131 608 0
+1031 1139 0
+2346 -3456 0
+1385 -2586 0
+-1348 2235 0
+1567 3301 0
+3340 -1526 0
+962 1143 0
+-2361 562 0
+586 81 0
+1061 3174 0
+-3422 1686 0
+725 -2736 0
+2289 2078 0
+2936 -2099 0
+77 -990 0
+1491 2329 0
+-3252 -1507 0
+2446 -3257 0
+-3440 137 0
+-1863 -2956 0
+1909 -2780 0
+-1636 1742 0
+-1119 650 0
+782 1186 0
+1888 1345 0
+-373 3200 0
+2545 -976 0
+2709 1558 0
+-1964 -2463 0
+-2216 1812 0
+-3436 2444 0
+1939 -1251 0
+2821 1160 0
+197 -4 0
+696 -149 0
+1409 -1022 0
+2544 -3472 0
+-688 -1092 0
+744 1340 0
+-164 3009 0
+1685 -2676 0
+1528 1124 0
+-158 2128 0
+2977 -1438 0
+-3133 -3279 0
+3192 944 0
+906 -3119 0
+-1374 -552 0
+3296 -1441 0
+2406 46 0
+335 -629 0
+-1822 1832 0
+-3476 1775 0
+-2480 -103 0
+-1502 -953 0
+2348 -2433 0
+1232 -3466 0
+-2936 2700 0
+2183 -3081 0
+1895 -1958 0
+3021 1537 0
+2950 1885 0
+1361 326 0
+841 2351 0
+3131 -2209 0
+-2326 -2336 0
+-1237 -1513 0
+3329 1501 0
+202 1350 0
+1178 -603 0
+2571 2745 0
+-186 1984 0
+411 2382 0
+2101 245 0
+3134 -2969 0
+1727 2311 0
+507 1581 0
+-3395 721 0
+-3111 -2377 0
+1561 -3112 0
+1553 -1208 0
+-3211 -3491 0
+-3209 -2306 0
+429 -3363 0
+1277 2619 0
+-126 -136 0
+3306 3033 0
+-3372 -3338 0
+1138 -1577 0
+2497 192 0
+-1026 -139 0
+-113 -2389 0
+1445 -2561 0
+-1348 -1307 0
+1708 -2519 0
+3484 3002 0
+-3401 1968 0
+-2645 -1102 0
+1156 -1625 0
+1243 -2658 0
+-2021 758 0
+-915 -1021 0
+-2904 701 0
+-2396 508 0
+-1281 1194 0
+1135 -596 0
+37 59 0
+-2734 -467 0
+-935 -1122 0
+3290 971 0
+2182 -2081 0
+-1873 3373 0
+1564 79 0
+-3362 -1489 0
+2894 1178 0
+764 -3381 0
+2869 48 0
+-3145 1852 0
+2689 -2902 0
+-3020 715 0
+-341 282 0
+1467 101 0
+3317 2988 0
+2923 -2278 0
+371 1450 0
+-3343 -1841 0
+233 93 0
+-517 836 0
+-1600 1060 0
+-2887 427 0
+2438 -3283 0
+2783 -652 0
+-886 -3169 0
+1902 -3260 0
+2752 -1886 0
+659 -626 0
+338 -1824 0
+-2846 -2427 0
+2165 -144 0
+-770 1101 0
+2896 2385 0
+2278 3431 0
+-1996 1299 0
+-1038 -1412 0
+-110 1100 0
+1987 -1238 0
+2235 2099 0
+2176 1161 0
+467 -2868 0
+2188 775 0
+-1116 3338 0
+497 -29 0
+-985 61 0
+-1154 122 0
+2679 2893 0
+-1919 -2925 0
+-598 -1630 0
+-1592 3469 0
+977 1361 0
+1055 -2080 0
+-2517 -1510 0
+-3438 -58 0
+-351 469 0
+4 -1154 0
+-2185 3387 0
+1688 -2983 0
+3160 638 0
+-2232 2753 0
+-1357 1417 0
+2394 -410 0
+925 1514 0
+771 -1529 0
+1952 3231 0
+-1270 2804 0
+57 -1644 0
+2659 -35 0
+-1659 -1810 0
+2926 -3297 0
+3096 -1278 0
+478 3321 0
+722 -2568 0
+-2266 2921 0
+1813 -1110 0
+1961 -1487 0
+2596 -672 0
+2014 -2371 0
+1779 -1976 0
+2956 -1185 0
+-1349 2168 0
+-2124 -2436 0
+-2653 -1408 0
+-1189 -1233 0
+2690 -2305 0
+-2373 -2814 0
+1324 2907 0
+-3086 956 0
+-845 1049 0
+-1212 3405 0
+29 -1478 0
+707 1501 0
+-1114 -1100 0
+-1480 -637 0
+-1703 -82 0
+636 -2223 0
+660 949 0
+3255 -2236 0
+-2166 1001 0
+2923 2769 0
+2807 -522 0
+782 90 0
+1203 -272 0
+-1208 3320 0
+2265 -239 0
+1621 -1802 0
+2687 -3160 0
+-1805 2645 0
+-2796 -1898 0
+-826 -2562 0
+-2158 368 0
+-1828 1733 0
+-954 2611 0
+946 2862 0
+216 -2242 0
+-1449 -3131 0
+1053 -822 0
+-15 407 0
+-2718 -2038 0
+961 1638 0
+2242 -989 0
+-1662 -3320 0
+-2872 397 0
+3447 1564 0
+-1555 -2878 0
+2269 241 0
+-558 2533 0
+2548 3433 0
+1419 -977 0
+-1272 1458 0
+-2858 1462 0
+-1881 304 0
+1911 1503 0
+-2966 2166 0
+521 -1542 0
+-1868 -859 0
+2395 -2868 0
+-2633 808 0
+-2680 1295 0
+-1795 995 0
+-1279 -884 0
+741 -767 0
+-747 -831 0
+-282 2402 0
+-25 2841 0
+2594 -1146 0
+-2418 -2833 0
+-538 -917 0
+-2825 2561 0
+1349 1327 0
+2136 1210 0
+-346 1592 0
+1880 3026 0
+-1081 -2747 0
+-3112 711 0
+-2407 -1967 0
+3426 1796 0
+-854 3369 0
+-1779 -1905 0
+1189 -2495 0
+929 -542 0
+-2692 2008 0
+-1867 2454 0
+844 -2504 0
+-1946 -2043 0
+-422 2288 0
+-2988 -825 0
+689 244 0
+1839 -126 0
+-573 -3335 0
+1350 -3213 0
+-3208 -2963 0
+3015 -953 0
+-3416 2136 0
+433 80 0
+2779 2739 0
+1108 -2148 0
+1497 620 0
+-770 1541 0
+2548 2130 0
+2508 -1999 0
+-2823 1826 0
+-95 877 0
+2228 -491 0
+-2980 1516 0
+1121 -324 0
+2467 2367 0
+2867 -77 0
+579 796 0
+2710 3157 0
+1026 2178 0
+-649 -3088 0
+-1806 -1105 0
+3239 1316 0
+-3292 -220 0
+-1179 1031 0
+-2373 1660 0
+948 886 0
+1850 1726 0
+-2231 2626 0
+2417 -3463 0
+-1658 -861 0
+1461 607 0
+1378 -898 0
+3465 1832 0
+-373 2885 0
+2280 1220 0
+2423 -1547 0
+576 -3495 0
+2788 182 0
+1936 3389 0
+2427 64 0
+3344 3302 0
+-1112 2438 0
+-296 -902 0
+-502 558 0
+-458 3310 0
+-1408 -495 0
+-781 -3157 0
+1170 2097 0
+1615 -1229 0
+-1085 2617 0
+-322 -598 0
+2467 -1901 0
+1707 2671 0
+-1702 2958 0
+-49 2188 0
+-2335 -2232 0
+2683 3174 0
+-126 -1647 0
+2309 1271 0
+3399 -700 0
+1381 1220 0
+-3035 2063 0
+-3292 803 0
+1535 2574 0
+2994 984 0
+-1038 66 0
+1374 1121 0
+-1008 2878 0
+-1690 -1970 0
+-1274 -809 0
+-1282 -3191 0
+1145 -33 0
+-1012 257 0
+-147 -1896 0
+-1659 2793 0
+-1336 1554 0
+-2766 -751 0
+555 -1605 0
+-3170 1153 0
+-60 1453 0
+-2202 -3121 0
+-2032 -369 0
+1032 2856 0
+1830 1894 0
+-933 1636 0
+703 3324 0
+-1035 1187 0
+2161 2166 0
+-848 -3211 0
+3302 3069 0
+3240 3202 0
+-3335 2666 0
+739 2254 0
+-540 -1814 0
+-3052 2669 0
+-2140 2574 0
+-3121 2366 0
+-2364 256 0
+-858 -173 0
+1552 1459 0
+139 232 0
+-2289 2254 0
+1546 -53 0
+-2757 3172 0
+1411 1799 0
+-471 -2378 0
+2011 2021 0
+1889 -2353 0
+-191 -2706 0
+1129 820 0
+2882 2859 0
+3498 1015 0
+1068 -1682 0
+1368 -2866 0
+-3109 3441 0
+1365 -25 0
+-1377 -534 0
+689 1680 0
+2225 2208 0
+69 130 0
+2535 2673 0
+2371 280 0
+-3424 -3477 0
+2514 2842 0
+2731 2895 0
+1229 -3489 0
+-2112 2175 0
+-1919 3315 0
+617 -1355 0
+-1026 1467 0
+-1856 2237 0
+-1444 1259 0
+1454 -593 0
+1727 -2635 0
+-2778 -2519 0
+114 -2149 0
+1321 217 0
+-1638 3295 0
+-3126 -862 0
+109 -1742 0
+-2773 -744 0
+-2916 -1339 0
+-1188 -3390 0
+-2690 -2032 0
+-2042 -2857 0
+-431 -173 0
+-1182 1124 0
+-3154 2853 0
+-1700 3427 0
+-3475 -3308 0
+-1621 2464 0
+1735 1321 0
+3244 455 0
+-3328 -230 0
+1661 -2300 0
+719 241 0
+-1748 33 0
+-1431 -2885 0
+-3037 363 0
+2844 -1547 0
+-2360 -2760 0
+2629 -3197 0
+-843 2103 0
+148 478 0
+2510 -117 0
+-350 -3492 0
+-1349 1158 0
+2037 -3279 0
+1207 3085 0
+2028 -1124 0
+1278 931 0
+-2069 -3319 0
+-1919 1518 0
+-2937 -2155 0
+1864 -1478 0
+2517 1297 0
+294 557 0
+163 -1691 0
+1406 2864 0
+529 1052 0
+-2618 -1215 0
+-580 -2840 0
+-3181 -2843 0
+-2072 -2420 0
+1521 1187 0
+-1156 3122 0
+-1998 -2535 0
+-1667 1473 0
+2657 -2839 0
+2556 2178 0
+2995 -933 0
+2160 -433 0
+-2828 1862 0
+996 3044 0
+467 -2020 0
+2166 2919 0
+-2679 1057 0
+936 471 0
+-1255 1998 0
+1256 93 0
+-548 1067 0
+-3437 -1036 0
+2689 -2538 0
+-3047 -2675 0
+-714 -461 0
+3465 2081 0
+2335 -1132 0
+-3007 674 0
+-3179 1597 0
+-2350 19 0
+-2188 2892 0
+-1012 460 0
+2297 3375 0
+1852 3480 0
+2532 -777 0
+-2337 2092 0
+3189 -1630 0
+2821 -76 0
+-703 -3243 0
+1533 -3439 0
+1123 -2590 0
+-1768 161 0
+181 -2837 0
+2386 1031 0
+1617 613 0
+-808 -2446 0
+155 -3224 0
+-2391 2016 0
+2976 -2988 0
+174 -2043 0
+-584 -2870 0
+2808 1545 0
+-3060 -1862 0
+-2846 1877 0
+2996 -1187 0
+-1263 1899 0
+-807 -1981 0
+-1034 1333 0
+-1903 1088 0
+-1102 2135 0
+1289 1029 0
+1303 133 0
+1005 2684 0
+1022 -3005 0
+2469 -2809 0
+-2009 -1621 0
+-1343 1621 0
+-1839 3107 0
+751 260 0
+39 2852 0
+-1713 3310 0
+-3118 -1063 0
+799 2089 0
+1012 3218 0
+-2917 -1300 0
+-1594 881 0
+-1540 -899 0
+-1533 2622 0
+2285 2479 0
+1746 489 0
+412 1851 0
+2787 -279 0
+-2906 -3458 0
+-2484 3344 0
+1978 2103 0
+992 -3255 0
+-156 1679 0
+2274 944 0
+-1246 -610 0
+-863 2736 0
+-2465 -1268 0
+-31 -1972 0
+1853 2019 0
+-1798 2620 0
+-506 -353 0
+-2967 1966 0
+592 -1245 0
+-3462 -1722 0
+3173 -375 0
+-601 1711 0
+-2920 -1797 0
+2002 -3170 0
+1715 -1787 0
+1320 -1893 0
+2827 -3365 0
+-117 1715 0
+-1076 -2992 0
+-936 -628 0
+1431 1573 0
+3341 -2439 0
+1265 -2737 0
+-977 995 0
+767 -3091 0
+2446 672 0
+3395 1697 0
+-1365 -1185 0
+1249 -2727 0
+-499 2644 0
+-2390 848 0
+-3010 170 0
+2702 1160 0
+1066 1668 0
+1995 -1789 0
+-2188 2654 0
+-2230 -1024 0
+-45 -992 0
+2048 -2302 0
+182 1834 0
+2232 -1030 0
+-1324 757 0
+-2561 3177 0
+-2019 1184 0
+-710 -3477 0
+-2376 -3189 0
+2807 -2481 0
+-961 -2370 0
+306 -2988 0
+2597 1448 0
+2789 -2906 0
+3454 -2055 0
+-2797 1417 0
+-2999 -2595 0
+-3095 1793 0
+2389 -247 0
+562 824 0
+-3479 -1316 0
+-3395 575 0
+-1311 -511 0
+1161 2279 0
+3033 -2965 0
+-2949 -3183 0
+-1920 -1032 0
+3163 2140 0
+626 2409 0
+-676 369 0
+2112 2593 0
+-2807 432 0
+-2745 -1467 0
+-1152 530 0
+-1077 2052 0
+-3416 -381 0
+646 -1062 0
+2272 3307 0
+-2309 655 0
+271 -455 0
+-982 1707 0
+-3069 -1704 0
+297 -1385 0
+-946 753 0
+1055 -2913 0
+-3245 709 0
+1619 169 0
+-2450 1404 0
+2543 -2063 0
+1847 -2757 0
+-522 -2355 0
+-2407 3059 0
+1422 -3286 0
+1691 3220 0
+1858 -1698 0
+512 737 0
+-2712 1666 0
+-3066 3201 0
+-1564 1555 0
+-1663 431 0
+-84 -751 0
+-712 1584 0
+-360 3375 0
+2882 -426 0
+-3411 -3151 0
+-3013 3064 0
+1407 -1547 0
+-2231 -2653 0
+2195 -588 0
+-375 1975 0
+-1952 -1605 0
+-2461 -3427 0
+-621 -1847 0
+-2429 -1210 0
+-2528 -3403 0
+-1234 -72 0
+-2459 -2834 0
+2831 67 0
+-3157 2616 0
+-201 -988 0
+-2120 -954 0
+-745 1382 0
+-1419 1030 0
+340 -2581 0
+1762 -2132 0
+3223 -2374 0
+369 1496 0
+-533 -1390 0
+1818 -200 0
+1006 -2334 0
+-2867 1576 0
+965 -2505 0
+2571 -318 0
+-3334 1672 0
+682 772 0
+-2151 -366 0
+-1004 -3029 0
+2148 933 0
+-1726 1220 0
+3165 -1917 0
+1360 -1028 0
+-1426 -1395 0
+-2367 -3321 0
+828 1485 0
+-752 340 0
+-2876 913 0
+-280 -293 0
+2355 2180 0
+-944 -1407 0
+2407 -976 0
+1468 2291 0
+-982 -625 0
+1288 -1133 0
+2236 -1765 0
+676 -2460 0
+-767 -3244 0
+-847 579 0
+-452 -1028 0
+2350 713 0
+92 1565 0
+-2302 2043 0
+-1242 53 0
+2365 1448 0
+152 -1342 0
+2342 -753 0
+3473 1211 0
+1597 -2154 0
+3262 -3068 0
+-2916 3101 0
+1918 2575 0
+2167 -414 0
+1713 3317 0
+-175 -3347 0
+2348 -2470 0
+2981 -2133 0
+-1342 -1306 0
+-3310 1414 0
+-561 2509 0
+-1010 1545 0
+1178 -3276 0
+1930 1499 0
+-680 -1222 0
+-1591 -2903 0
+-1554 -189 0
+-1615 -3090 0
+2089 -1402 0
+-1521 2320 0
+808 550 0
+-1718 15 0
+-2516 2557 0
+-1091 38 0
+2667 -507 0
+-1828 2956 0
+2194 14 0
+-304 -2912 0
+-930 -348 0
+-2009 -1544 0
+-1599 1631 0
+2559 -1832 0
+-1894 2507 0
+-2434 638 0
+2820 1341 0
+-2985 734 0
+-714 -3061 0
+1442 -247 0
+-1705 2229 0
+-45 2489 0
+2899 2160 0
+3458 2959 0
+-3448 -2400 0
+1553 3346 0
+714 -1489 0
+-510 -1696 0
+113 2977 0
+-984 -2095 0
+3461 2215 0
+51 -2695 0
+2474 -2930 0
+1228 -2793 0
+-2181 -597 0
+2517 -1404 0
+2716 2786 0
+-2845 582 0
+2135 2723 0
+969 2182 0
+-13 -469 0
+-886 3181 0
+542 2256 0
+2569 2187 0
+-1039 -1983 0
+2852 3189 0
+-1860 -171 0
+-828 -2772 0
+464 2080 0
+-3000 -915 0
+-2038 -3100 0
+3329 -2890 0
+-3259 1251 0
+-437 596 0
+3349 -1626 0
+3119 -1517 0
+637 -1432 0
+-1857 -178 0
+-2017 1501 0
+-1563 -2713 0
+2264 -431 0
+-1402 1498 0
+-1793 1927 0
+-520 1494 0
+-40 1292 0
+-1771 -2292 0
+1246 2132 0
+1183 -629 0
+1807 2646 0
+-2086 958 0
+-266 1790 0
+-2828 -1942 0
+2707 -1264 0
+-1203 1264 0
+347 1756 0
+-1238 -1474 0
+-3445 2751 0
+1263 -2409 0
+3092 -2315 0
+-482 1787 0
+490 -665 0
+-3105 -639 0
+-1823 1480 0
+1280 -2604 0
+-73 3254 0
+-2063 -2864 0
+2861 574 0
+-2434 -3030 0
+-1910 1114 0
+-2123 -1466 0
+-647 6 0
+-2399 -3150 0
+964 -308 0
+1565 1181 0
+-1349 768 0
+-615 -3205 0
+-492 -539 0
+-2571 3060 0
+1451 -1644 0
+-2174 -2821 0
+696 2664 0
+-2799 -3186 0
+2099 930 0
+750 1738 0
+1453 -356 0
+781 -241 0
+-2981 -2580 0
+3176 -1292 0
+1529 -2631 0
+-800 -1475 0
+-2769 -2112 0
+3038 1260 0
+2626 -1513 0
+1531 2138 0
+136 -2665 0
+-3118 -183 0
+-912 -1973 0
+1629 -1110 0
+2350 916 0
+-71 2878 0
+-290 2603 0
+-2643 2831 0
+2457 -2590 0
+-2452 3219 0
+2086 1574 0
+1638 -1112 0
+2405 2375 0
+-701 -1672 0
+-2642 -2810 0
+-2015 -1062 0
+635 -3044 0
+-2925 -2949 0
+-954 1724 0
+-206 3078 0
+-1362 1586 0
+204 -3052 0
+532 -1129 0
+1001 17 0
+-2342 1222 0
+-2323 -3276 0
+-1692 2367 0
+-834 -1007 0
+-396 758 0
+-2350 -3443 0
+2670 1927 0
+-3261 1805 0
+-1503 369 0
+196 -102 0
+-1644 -284 0
+-912 1173 0
+-383 1906 0
+2238 2113 0
+-2920 1577 0
+2482 1283 0
+-2907 -810 0
+1796 1489 0
+-3380 -2416 0
+-3064 -2099 0
+-2018 -2677 0
+2353 -2163 0
+-1828 952 0
+120 1294 0
+-386 2628 0
+3015 2120 0
+-2389 186 0
+1124 1898 0
+-2789 -398 0
+2363 3413 0
+2799 1500 0
+-3099 -2444 0
+-1397 2166 0
+-2187 -307 0
+1822 3028 0
+-2777 -2587 0
+-2500 -206 0
+-2044 2053 0
+-983 760 0
+2847 566 0
+-1274 -1655 0
+-18 -1037 0
+-2453 -1284 0
+-1990 294 0
+3355 -2352 0
+618 3241 0
+-957 2182 0
+203 1046 0
+-1980 -1436 0
+-1162 336 0
+3036 1844 0
+-1990 -2515 0
+-2637 244 0
+-2270 1355 0
+484 -29 0
+-2784 -2162 0
+-275 -3261 0
+2569 1552 0
+-1715 131 0
+2032 2049 0
+510 923 0
+2276 2505 0
+-2314 3445 0
+108 -2861 0
+-2203 1819 0
+2716 3376 0
+3265 -1134 0
+-2651 -2965 0
+1974 -2439 0
+2664 8 0
+476 3074 0
+-2058 -965 0
+1555 -2031 0
+2653 -1700 0
+-1913 -714 0
+-2515 -723 0
+565 1737 0
+-1104 1206 0
+1696 -2162 0
+3213 -1012 0
+2410 -2038 0
+-1450 480 0
+3070 926 0
+1371 3073 0
+1310 -1665 0
+-3053 494 0
+148 -1501 0
+2282 -1129 0
+2055 -2754 0
+3403 -3367 0
+-926 -1557 0
+2442 733 0
+2438 2666 0
+-1766 3239 0
+2314 1775 0
+251 -2285 0
+2568 -2310 0
+1271 1942 0
+-2969 994 0
+-1127 -2162 0
+-623 -2055 0
+985 802 0
+-3031 -893 0
+-1979 2086 0
+-1216 16 0
+3071 1183 0
+1956 -950 0
+-402 -3146 0
+938 -3412 0
+3492 -1721 0
+-3289 2803 0
+-2290 2813 0
+2284 -2491 0
+1287 -894 0
+2349 2823 0
+-1455 274 0
+-668 816 0
+897 182 0
+1649 -2452 0
+-874 444 0
+-1093 -1511 0
+-3108 -2121 0
+748 -1207 0
+412 -1096 0
+1664 -1740 0
+948 -3246 0
+-1406 -3036 0
+462 1936 0
+-2913 434 0
+2351 976 0
+-498 1802 0
+162 1990 0
+1309 886 0
+-2150 -1353 0
+2829 -2335 0
+867 1345 0
+716 2799 0
+833 -2665 0
+2456 2241 0
+363 -943 0
+-959 -428 0
+-2460 -3164 0
+-2669 1579 0
+-2769 314 0
+1202 -3051 0
+3386 -3365 0
+3182 -1460 0
+-2835 -1716 0
+-730 -3402 0
+424 1478 0
+-1564 3126 0
+2481 -816 0
+3051 -2217 0
+2582 1779 0
+-686 -2307 0
+-2140 -313 0
+2666 2559 0
+-3279 2680 0
+94 2174 0
+-2245 -2756 0
+-3357 -1233 0
+-54 1201 0
+2750 -759 0
+-529 -759 0
+1286 -2783 0
+355 -2407 0
+768 -3022 0
+571 -1309 0
+250 2864 0
+2054 1042 0
+-572 -2693 0
+-2873 -795 0
+3269 -1723 0
+2039 571 0
+-1710 2320 0
+-2370 2707 0
+-2669 -2922 0
+-2635 2525 0
+2263 -806 0
+1668 -2294 0
+1677 1559 0
+-1145 -3022 0
+2221 1635 0
+1969 208 0
+-2911 -2360 0
+-92 1751 0
+3101 -490 0
+657 -2704 0
+3299 -2548 0
+2891 298 0
+-411 -2700 0
+2772 16 0
+2537 -727 0
+260 -1483 0
+1533 1129 0
+1256 -1021 0
+-1095 1997 0
+2139 2096 0
+726 1428 0
+703 2179 0
+-319 2368 0
+1881 -438 0
+-2324 2102 0
+-1899 1133 0
+3192 -3478 0
+1923 879 0
+-3368 2645 0
+-248 -310 0
+729 -1144 0
+-3029 2523 0
+3147 1931 0
+-746 -1038 0
+2692 2267 0
+3088 263 0
+1950 26 0
+-731 2764 0
+3013 -568 0
+1988 894 0
+-714 -3180 0
+2387 1897 0
+-1733 2694 0
+308 -775 0
+2363 956 0
+1135 1053 0
+-627 3189 0
+1210 749 0
+3406 -3383 0
+1146 372 0
+-2443 699 0
+2521 1508 0
+-2273 -977 0
+-2683 -556 0
+150 2424 0
+826 -3282 0
+-102 -3025 0
+1444 626 0
+2961 -3136 0
+-2797 -3365 0
+-108 1478 0
+-2871 -2600 0
+-2276 -879 0
+-1196 -334 0
+-326 2544 0
+3254 2155 0
+993 1196 0
+2934 -1859 0
+1902 -2331 0
+-1869 -793 0
+2954 -246 0
+-2333 1945 0
+-437 -927 0
+658 -2905 0
+-1372 -1939 0
+1661 346 0
+134 1336 0
+-608 2647 0
+-301 -709 0
+-3472 -1792 0
+143 598 0
+2300 2450 0
+-604 976 0
+1186 2328 0
+-499 3321 0
+2292 1166 0
+-1859 1726 0
+1029 2238 0
+-2736 -1971 0
+2839 1707 0
+-1807 -2206 0
+505 811 0
+-1196 -2109 0
+-3099 -2580 0
+1649 3288 0
+823 349 0
+-1361 1594 0
+-3238 -640 0
+2483 1037 0
+-379 -489 0
+-2480 1562 0
+2372 -35 0
+-1447 -3198 0
+1848 2328 0
+-2364 -406 0
+222 -146 0
+391 2190 0
+3030 2343 0
+-1776 586 0
+1046 1167 0
+443 1263 0
+-910 -1998 0
+512 1875 0
+-3448 3437 0
+3203 -1107 0
+-1305 1240 0
+-353 227 0
+-2446 391 0
+-2257 1679 0
+1743 2941 0
+2579 2988 0
+-3336 2865 0
+1550 -2269 0
+421 -2434 0
+-1834 2172 0
+-553 169 0
+716 -2477 0
+2024 1213 0
+-3232 -129 0
+124 -2605 0
+-3465 -1028 0
+1382 -1158 0
+2622 495 0
+-2393 2485 0
+2511 -2066 0
+3378 2135 0
+-479 -2677 0
+-1756 -2276 0
+3155 -2105 0
+-3265 752 0
+3092 2062 0
+1910 -1591 0
+-2507 -1954 0
+3435 1993 0
+-2852 -1015 0
+-2950 2827 0
+-3093 140 0
+1193 -1744 0
+2138 -2768 0
+-1350 1468 0
+-1014 -2740 0
+-509 1361 0
+2402 967 0
+2165 955 0
+-1724 1115 0
+1986 -200 0
+3162 1170 0
+325 -1369 0
+2558 2287 0
+-1841 -2926 0
+-2523 2593 0
+-686 2945 0
+-1142 -1825 0
+3417 250 0
+1492 -590 0
+-557 3155 0
+2566 -2681 0
+2089 1649 0
+2499 2300 0
+-789 -2093 0
+2303 -1557 0
+2442 -1797 0
+3226 2250 0
+-845 -3397 0
+-345 -817 0
+1183 46 0
+3207 3364 0
+588 -2426 0
+-2374 -1609 0
+2289 -1749 0
+2291 2297 0
+-2402 -3046 0
+1270 1680 0
+-2827 -2632 0
+569 -3029 0
+-952 -546 0
+-2435 1140 0
+-2060 3237 0
+-3386 -486 0
+726 -1532 0
+-392 -946 0
+1436 2252 0
+-2573 -3160 0
+-233 -3349 0
+2360 -391 0
+376 -1769 0
+2161 2547 0
+-2285 1381 0
+-290 -2395 0
+-2405 -229 0
+2927 -1502 0
+93 2328 0
+-2337 -3371 0
+-2846 2973 0
+-394 -893 0
+2598 1854 0
+-1101 1113 0
+1896 -1483 0
+1228 982 0
+-833 -273 0
+2527 -2381 0
+-1783 3379 0
+-372 1354 0
+3046 2357 0
+457 651 0
+1310 -174 0
+1617 358 0
+-964 -2118 0
+774 1863 0
+-2852 -1234 0
+-2514 2693 0
+2295 -2705 0
+-1519 1602 0
+-1989 -1866 0
+2930 -2554 0
+-2855 -383 0
+2171 -2685 0
+487 1245 0
+3005 1558 0
+1987 1051 0
+-617 2835 0
+927 -2710 0
+-3424 -749 0
+-2935 2906 0
+3376 -3127 0
+-2508 -3362 0
+-1309 313 0
+2181 -3301 0
+-515 -1902 0
+-335 -1798 0
+2875 -3037 0
+177 -414 0
+-1032 414 0
+912 2052 0
+1694 2016 0
+227 3172 0
+-952 2182 0
+2684 -1545 0
+-3025 867 0
+23 3253 0
+1322 1094 0
+-441 -953 0
+2010 2508 0
+1285 2976 0
+-252 -23 0
+-2137 1494 0
+-2648 1361 0
+142 224 0
+-1279 -196 0
+962 353 0
+-617 -1707 0
+1540 638 0
+2841 -1227 0
+-2226 3137 0
+1581 -544 0
+2111 -3185 0
+2084 1608 0
+-1029 -2517 0
+1321 47 0
+1907 -1150 0
+-1343 -2723 0
+-1597 -1443 0
+-3357 1400 0
+-2753 -1856 0
+-965 882 0
+-1923 -138 0
+622 -2602 0
+868 275 0
+2628 2279 0
+-1857 402 0
+-2207 -180 0
+-2886 -2794 0
+1997 -2343 0
+74 -161 0
+2665 -3224 0
+-3014 -2243 0
+-2995 2865 0
+1242 3064 0
+-1568 -1407 0
+-1778 1303 0
+876 -694 0
+2626 -1644 0
+116 1822 0
+-1365 -1770 0
+-1586 2211 0
+-901 2776 0
+-1518 -3421 0
+1382 69 0
+-1368 -3206 0
+-1616 -2283 0
+2716 -1361 0
+1169 1439 0
+-765 -2081 0
+1923 633 0
+-2038 3235 0
+-1775 2177 0
+-565 -135 0
+-3230 -413 0
+-3021 3025 0
+1403 3442 0
+-1112 -332 0
+-3379 -2974 0
+-1516 1837 0
+-2511 -2933 0
+-2394 1757 0
+-1983 -1069 0
+-441 -2191 0
+-1557 510 0
+655 2203 0
+1805 -2451 0
+-884 -3111 0
+1299 -2970 0
+-2109 2315 0
+3395 2093 0
+-477 2179 0
+2916 -1202 0
+-30 604 0
+-1580 -1654 0
+-341 2358 0
+-307 1831 0
+-3054 -3006 0
+529 3284 0
+2382 3038 0
+1152 -1868 0
+643 -3015 0
+-2026 -1186 0
+-2433 -505 0
+1871 1654 0
+2980 -873 0
+-2758 -1014 0
+2619 3436 0
+1291 1451 0
+-775 -656 0
+2134 1665 0
+-1885 -304 0
+1004 -1681 0
+-3116 492 0
+-3210 -512 0
+-2058 2599 0
+-2251 -1782 0
+1514 2324 0
+779 -1213 0
+-2657 2920 0
+3474 643 0
+-153 1962 0
+2640 -2190 0
+-2921 1045 0
+-1837 1195 0
+-1764 3498 0
+506 1706 0
+2726 3322 0
+2224 -2289 0
+-1599 -2238 0
+-3224 -1936 0
+-2215 815 0
+2307 -402 0
+2027 3113 0
+-1608 -2195 0
+-2443 -33 0
+2481 -42 0
+3072 -1318 0
+-3207 1938 0
+2734 2472 0
+-1261 2111 0
+-3272 2320 0
+-3041 -2213 0
+3030 -3149 0
+-1067 2589 0
+-1970 -3432 0
+-160 -97 0
+-1122 934 0
+-1941 2170 0
+1268 -3091 0
+-2004 -2791 0
+-549 -44 0
+-2129 2253 0
+3039 -2274 0
+-555 -2592 0
+-1439 -559 0
+-3071 1592 0
+218 -1646 0
+2986 254 0
+3375 1650 0
+-2930 2602 0
+2587 2168 0
+-246 1318 0
+-1285 -1564 0
+1103 1693 0
+-837 41 0
+-774 -356 0
+-592 2652 0
+2408 2490 0
+-3129 1136 0
+2417 -1559 0
+-828 -1057 0
+2776 3251 0
+2588 434 0
+86 510 0
+2795 -699 0
+-1415 -3196 0
+846 -918 0
+-3284 -3463 0
+2099 -2543 0
+-269 -1487 0
+-2084 2717 0
+2709 2847 0
+2888 205 0
+-3233 1846 0
+733 340 0
+-1740 -1128 0
+-1322 1712 0
+-2463 -946 0
+-1618 -3216 0
+-3389 -2830 0
+2607 -78 0
+-2935 2918 0
+1187 -684 0
+61 3264 0
+1981 -2973 0
+1174 -1991 0
+-580 -117 0
+-768 3244 0
+2481 -2214 0
+1744 2083 0
+1389 -2357 0
+1078 2831 0
+96 -502 0
+2721 -560 0
+698 268 0
+-123 -1340 0
+-3331 -1020 0
+1686 -1005 0
+-2369 1023 0
+-1981 3003 0
+2657 -3345 0
+2496 -1677 0
+-1081 1159 0
+-1954 308 0
+-2553 -3360 0
+-929 -312 0
+724 -3242 0
+1688 -1281 0
+-2750 2721 0
+1530 -1439 0
+-2841 315 0
+1597 -3080 0
+-1949 -1387 0
+-302 2675 0
+-3033 230 0
+-1661 2064 0
+2636 -2656 0
+2182 3275 0
+3192 -2817 0
+711 -1937 0
+-1834 2036 0
+-1522 -3161 0
+126 2274 0
+1401 2697 0
+2123 -1201 0
+-2447 -2326 0
+-1064 3426 0
+537 -932 0
+1685 -1006 0
+-678 760 0
+-557 2591 0
+371 2494 0
+140 -3297 0
+-1168 -1224 0
+264 505 0
+-3011 -3171 0
+904 901 0
+1342 2385 0
+1194 356 0
+3262 -558 0
+-3043 2488 0
+-2476 -2941 0
+-1359 39 0
+-1381 -2064 0
+-384 366 0
+1125 124 0
+725 -384 0
+3329 -388 0
+1296 -81 0
+-3086 -3010 0
+-2966 1814 0
+-2756 3131 0
+-3342 1365 0
+2746 -3286 0
+-1968 -457 0
+1110 1167 0
+219 2676 0
+-769 749 0
+-1733 1080 0
+2939 628 0
+-706 246 0
+-3481 3422 0
+200 245 0
+1222 215 0
+2659 1244 0
+1575 -161 0
+1054 -795 0
+-1951 3272 0
+3415 2609 0
+49 -1844 0
+2907 1557 0
+3500 -2068 0
+1161 2586 0
+1804 -2542 0
+-486 -3350 0
+1258 -1594 0
+-3139 -1067 0
+3231 -3434 0
+1498 -3265 0
+-3262 657 0
+1644 158 0
+2487 -2805 0
+2535 1909 0
+-2275 1464 0
+704 1599 0
+-1940 3072 0
+3024 -1435 0
+1168 -208 0
+1832 2758 0
+3065 291 0
+-1216 2391 0
+-2202 -1902 0
+-2884 3340 0
+-1533 1260 0
+2247 -342 0
+1286 2725 0
+-915 -436 0
+545 2578 0
+-2926 1749 0
+-1823 -1033 0
+150 -2529 0
+284 -2738 0
+2984 2445 0
+128 386 0
+-153 1521 0
+1547 2456 0
+-2067 -2600 0
+-854 1595 0
+-1006 -2686 0
+912 319 0
+1502 1164 0
+-933 -2672 0
+2369 -1782 0
+1291 1388 0
+1441 -246 0
+620 -3298 0
+2464 -2913 0
+-906 271 0
+-2495 537 0
+2982 1013 0
+401 -2267 0
+-30 1549 0
+641 265 0
+-135 2884 0
+-2544 -2474 0
+2028 2356 0
+-677 951 0
+-2601 2010 0
+1257 -1194 0
+930 2757 0
+-1037 2829 0
+-3082 269 0
+1009 2075 0
+-1985 560 0
+323 2821 0
+3473 2425 0
+2105 2515 0
+-2860 1104 0
+-1292 1567 0
+2645 2999 0
+1078 -3191 0
+2503 -2224 0
+1760 -2248 0
+-2874 -2961 0
+1290 1013 0
+-247 -1045 0
+2549 -2411 0
+948 -1848 0
+-3482 -1587 0
+1788 -1808 0
+-1855 -1780 0
+-1727 -2707 0
+-3217 -165 0
+2335 -1500 0
+322 3076 0
+-2319 -3294 0
+2960 -1284 0
+1691 1295 0
+146 -1274 0
+-815 1387 0
+698 -494 0
+2761 915 0
+-2403 -850 0
+-1913 22 0
+2023 -2620 0
+-896 -260 0
+-3489 2913 0
+2013 -1334 0
+2351 2243 0
+-320 -1192 0
+146 -445 0
+-2685 -3430 0
+-1772 -1421 0
+2964 209 0
+3214 -255 0
+-421 936 0
+-3416 882 0
+2835 2959 0
+615 -1538 0
+-370 -1007 0
+-517 1308 0
+-608 -2932 0
+-1137 2047 0
+-1276 827 0
+2660 1427 0
+282 1474 0
+788 696 0
+979 -3298 0
+-630 -1475 0
+2621 1558 0
+-593 -1813 0
+-3086 3059 0
+-848 739 0
+1871 2026 0
+1724 -315 0
+-923 698 0
+1218 -2790 0
+3079 -595 0
+-951 -2040 0
+1548 2781 0
+-2585 -25 0
+2233 113 0
+-1272 3158 0
+540 247 0
+2528 2095 0
+382 -2279 0
+-1598 1868 0
+-2417 -2040 0
+1168 -2456 0
+-615 356 0
+-2995 580 0
+369 -1790 0
+361 1503 0
+3074 -2075 0
+-1100 -816 0
+1590 1517 0
+-1420 -2658 0
+-3040 -421 0
+-3028 -2568 0
+-1826 2793 0
+-1242 2929 0
+1077 -1987 0
+-1945 2192 0
+-2157 -2792 0
+-681 2112 0
+1464 -2755 0
+-31 888 0
+-2680 543 0
+-976 1238 0
+1474 729 0
+-2526 3452 0
+-3129 1259 0
+1194 -531 0
+-2402 -148 0
+1607 -789 0
+-1215 1208 0
+1302 -744 0
+-2169 -2693 0
+-892 -2376 0
+1888 -831 0
+-5 2237 0
+1145 1339 0
+3419 39 0
+-3458 3325 0
+192 -535 0
+2040 54 0
+-2371 -3452 0
+-2565 338 0
+-2142 -1476 0
+-1459 2539 0
+-1440 -2512 0
+-324 -2657 0
+-2904 -2875 0
+2918 -875 0
+-1858 2546 0
+-1608 3492 0
+-1958 -37 0
+-780 1295 0
+-1652 117 0
+-2643 2490 0
+-2465 -3490 0
+-1292 171 0
+-1690 572 0
+2100 47 0
+-2030 474 0
+2658 -1529 0
+2075 -2785 0
+-919 -3263 0
+138 1767 0
+616 1078 0
+-1153 2103 0
+-2212 -309 0
+2232 -50 0
+2552 -2200 0
+-3224 2343 0
+-3258 -527 0
+-1858 1323 0
+-729 1278 0
+-550 1634 0
+-2029 -3 0
+-2726 2150 0
+1631 2903 0
+2333 1998 0
+-352 1985 0
+1316 -1182 0
+-2208 427 0
+2340 -2019 0
+502 1629 0
+2074 -1504 0
+1128 -1559 0
+2651 2051 0
+2580 -1711 0
+-341 2441 0
+1853 -1806 0
+-1427 -1561 0
+2345 -1655 0
+3469 1123 0
+563 1057 0
+-2738 2716 0
+-141 2213 0
+319 -3030 0
+-519 2863 0
+-1660 373 0
+613 1423 0
+1685 1678 0
+-1727 -1962 0
+-2341 2781 0
+2103 -2963 0
+-2645 1092 0
+-328 -1609 0
+-1377 -2492 0
+-509 2571 0
+2959 941 0
+3482 2150 0
+579 1303 0
+-2923 -1602 0
+-3258 -1732 0
+3146 2073 0
+1822 3012 0
+1478 -1024 0
+-2831 2122 0
+-1367 -1634 0
+-2201 -1125 0
+201 -190 0
+1918 44 0
+-1761 -2586 0
+-3179 -2413 0
+-681 -2092 0
+1901 2822 0
+1484 1711 0
+391 -1807 0
+-2062 550 0
+418 -2044 0
+-2708 -2261 0
+-3227 43 0
+1110 -417 0
+-2848 -2777 0
+-694 1016 0
+324 1676 0
+1319 -2865 0
+-2817 414 0
+2537 912 0
+-347 2670 0
+3089 966 0
+-2825 3269 0
+1229 -1103 0
+107 437 0
+1502 -3162 0
+1209 -2843 0
+2749 2507 0
+1209 1051 0
+-1263 3234 0
+2258 606 0
+-287 -1539 0
+985 1819 0
+-1776 -3304 0
+1555 -3228 0
+2901 -399 0
+-411 -1407 0
+3465 2261 0
+-642 2209 0
+-1073 1321 0
+-2221 1044 0
+-1119 -3481 0
+3494 -3476 0
+1943 4 0
+-1823 527 0
+2550 -510 0
+2154 -619 0
+2964 -1784 0
+-1578 -2181 0
+174 -1869 0
+-1869 3062 0
+2218 2666 0
+-975 2328 0
+-2480 3216 0
+2054 -859 0
+-2275 3202 0
+-1969 -3048 0
+545 2309 0
+-3261 2725 0
+1435 -2518 0
+-1582 2434 0
+682 -1694 0
+-2485 -753 0
+-1694 -1611 0
+2338 2303 0
+2575 -1795 0
+2981 -813 0
+2910 -3325 0
+1176 1553 0
+-908 -1093 0
+2298 -1151 0
+-2301 -653 0
+421 520 0
+-566 1830 0
+-3335 -961 0
+-2474 235 0
+-3043 2006 0
+1532 343 0
+-1444 -820 0
+-756 -1382 0
+-927 671 0
+-717 -1538 0
+-1644 -3294 0
+3283 765 0
+1815 -3276 0
+-2369 -175 0
+-1612 557 0
+2467 43 0
+-340 -1385 0
+3214 1607 0
+1921 -1973 0
+1428 -1029 0
+-2009 3088 0
+-923 1189 0
+757 -1402 0
+183 -3116 0
+-2157 -1578 0
+423 3228 0
+1084 546 0
+-938 -2253 0
+-2378 -323 0
+-1602 -2334 0
+3257 2082 0
+-1679 -461 0
+2698 -2207 0
+-1723 -1962 0
+-134 -1818 0
+-582 517 0
+2410 -2759 0
+-2351 -2870 0
+-1828 -2046 0
+3149 -342 0
+1046 -1965 0
+982 2075 0
+-2934 -2187 0
+963 -2974 0
+-43 384 0
+-325 -1000 0
+1204 2158 0
+2052 -3197 0
+1548 -2366 0
+2088 145 0
+-1333 1536 0
+1535 2167 0
+3242 471 0
+2303 2217 0
+1016 858 0
+3375 -2665 0
+2216 -452 0
+2470 2325 0
+2927 2598 0
+1370 -2539 0
+314 1176 0
+-980 -2622 0
+-768 -1563 0
+-534 -2064 0
+-2257 -52 0
+-3111 1529 0
+-2737 -3499 0
+-1890 1716 0
+2046 1319 0
+2785 1520 0
+-420 693 0
+310 -203 0
+-1771 293 0
+2631 -419 0
+2447 -2473 0
+2955 -3040 0
+-80 -1025 0
+-1300 -2916 0
+-2127 2673 0
+-2865 1503 0
+-3130 2517 0
+116 -627 0
+-3353 3400 0
+-287 807 0
+-298 3230 0
+-876 3317 0
+2753 -1939 0
+-1865 3252 0
+-1736 -254 0
+1704 914 0
+-479 862 0
+252 -1131 0
+3500 2147 0
+5 378 0
+-953 1375 0
+-2258 811 0
+3395 2344 0
+-1945 3154 0
+-570 -3188 0
+-2184 -1370 0
+-1678 -3058 0
+-1980 -941 0
+2251 -2249 0
+-3443 1501 0
+625 -1435 0
+-101 1492 0
+1604 1491 0
+-1997 -2470 0
+-2877 -1858 0
+1962 -789 0
+-1614 1721 0
+2598 -1393 0
+-65 2290 0
+416 -836 0
+1460 2307 0
+-1687 131 0
+3304 -2420 0
+-1287 -2478 0
+2745 956 0
+-420 -1564 0
+-1676 650 0
+634 -611 0
+-311 -2050 0
+-694 3060 0
+-668 -2262 0
+-1687 1354 0
+-1938 2773 0
+-1158 2842 0
+-1189 -1425 0
+-1476 416 0
+-1453 283 0
+-1145 -2642 0
+1822 -266 0
+-2643 939 0
+428 3438 0
+1048 918 0
+2771 559 0
+-878 2533 0
+3439 -976 0
+-2658 2895 0
+1521 986 0
+1280 1743 0
+2136 3293 0
+960 -1918 0
+3054 976 0
+-3450 2762 0
+2822 -971 0
+-355 2958 0
+27 2539 0
+2367 -3015 0
+-2462 -684 0
+-18 150 0
+1578 -3 0
+1132 -1415 0
+-3001 -2433 0
+-2752 -1731 0
+-2333 -584 0
+-1550 -2201 0
+-2906 431 0
+-1986 2495 0
+-1705 -1590 0
+-1761 -3290 0
+1891 -1117 0
+-611 419 0
+116 -642 0
+1101 2177 0
+-2226 3429 0
+-3188 -774 0
+1420 -728 0
+1869 942 0
+2738 -1400 0
+-1406 -2792 0
+-2821 -3187 0
+2776 928 0
+971 -2212 0
+3280 2049 0
+-1850 880 0
+-3293 476 0
+-380 2380 0
+-193 3306 0
+-1605 -3435 0
+-1356 -2381 0
+-1719 -2984 0
+578 -2699 0
+-809 -2645 0
+-1900 3132 0
+1494 -564 0
+182 1200 0
+-3362 -2666 0
+-1997 44 0
+2639 -1714 0
+-1059 -2144 0
+990 2469 0
+-907 1668 0
+-612 587 0
+-2600 2580 0
+2921 -178 0
+-3292 1632 0
+-3248 -2147 0
+758 2674 0
+-2078 -1136 0
+-244 -1885 0
+-1534 -1649 0
+757 3094 0
+2473 1594 0
+3493 1193 0
+-3072 547 0
+-629 -2075 0
+-1364 -2191 0
+-2514 -2462 0
+-3047 1180 0
+-1337 481 0
+-545 2572 0
+1800 277 0
+-104 -1699 0
+-544 -3440 0
+3485 -14 0
+2705 3045 0
+3084 2554 0
+1498 1230 0
+1608 2579 0
+566 1278 0
+-180 -1403 0
+3250 2630 0
+3472 2232 0
+-1618 -1427 0
+2500 2122 0
+15 -2539 0
+152 -1529 0
+-974 -1388 0
+2282 1876 0
+-632 -1766 0
+-148 -3279 0
+2273 -2967 0
+1686 1770 0
+-1440 3322 0
+2426 -2309 0
+656 1053 0
+2986 -1470 0
+433 -720 0
+231 -2347 0
+-1703 -276 0
+-3402 -1587 0
+-2853 -2933 0
+-2758 -1678 0
+1938 -2851 0
+-2158 1540 0
+-555 3172 0
+-2757 -3289 0
+-331 846 0
+2109 1574 0
+-341 3240 0
+-2747 -3012 0
+647 -2607 0
+3183 1895 0
+2906 1023 0
+-84 -3120 0
+876 647 0
+-2899 -946 0
+-3225 -2837 0
+2102 -155 0
+1210 -2053 0
+3409 1129 0
+-2014 -1475 0
+-2963 2512 0
+1561 3322 0
+1878 697 0
+-1451 -574 0
+2381 -2801 0
+3490 -982 0
+-1802 -2712 0
+-761 2413 0
+1781 -561 0
+1082 799 -1149 0
+-1062 -1529 2652 0
+2363 500 3306 0
+2250 -91 1922 0
+2147 1075 -2259 0
+-268 -2018 2800 0
+-2562 -2265 1995 0
+999 3369 -3209 0
+-2979 1282 -3420 0
+-422 538 2493 0
+3131 -2637 326 0
+1314 2297 -3477 0
+1496 -1649 -2473 0
+-1039 3316 1521 0
+-2025 1801 -3438 0
+-1859 -52 -1217 0
+-2931 3263 2609 0
+2518 -714 1969 0
+-2024 1639 1828 0
+1574 -1601 -2914 0
+-666 1107 2267 0
+1095 1354 3424 0
+-596 1067 -3108 0
+-997 2541 3470 0
+-2295 1220 1417 0
+1934 -1906 2801 0
+1864 2368 1252 0
+-179 -1232 -3158 0
+780 2470 3290 0
+689 -483 -2479 0
+2542 -482 -452 0
+-1619 177 2032 0
+2777 -3275 3456 0
+-1348 86 556 0
+-2757 1958 3153 0
+1639 1848 3142 0
+-1903 -1115 1746 0
+7 1857 -1532 0
+2713 2548 -3197 0
+-2673 848 -2193 0
+-2067 -2696 -2452 0
+-2714 97 2934 0
+3475 -2865 -2721 0
+144 275 1231 0
+2296 2425 -1534 0
+144 -1449 -515 0
+1676 -1256 57 0
+-114 -128 -1862 0
+-374 -1281 -1198 0
+-619 -2915 -3136 0
+661 1049 -2618 0
+-2510 1292 2564 0
+953 -1379 2156 0
+429 1747 3177 0
+-721 -2937 3339 0
+1084 2352 -2608 0
+-196 2262 1881 0
+2836 503 414 0
+455 -1688 2552 0
+-1645 -1660 -3408 0
+-155 1997 -3125 0
+-475 -2721 1308 0
+562 435 1356 0
+223 -1691 512 0
+3275 514 3238 0
+-2933 1414 -2399 0
+-2533 -858 2110 0
+2854 -2808 236 0
+-637 2474 -2369 0
+-3068 1641 -78 0
+504 1271 -939 0
+-2955 3042 -1724 0
+-2478 822 866 0
+-2448 1516 329 0
+906 2528 -3479 0
+-425 -2115 2400 0
+-1864 -3024 -2167 0
+-3056 2326 2928 0
+-1435 1194 -3296 0
+3336 -1419 -3246 0
+1469 1879 -1865 0
+-3136 -2632 1634 0
+-408 2442 -1567 0
+-2424 -244 2452 0
+-1640 -739 -1151 0
+955 655 2702 0
+111 -2748 -1497 0
+-541 -2070 -1137 0
+-1350 3138 -178 0
+-1631 -877 1374 0
+-2854 1146 -1661 0
+2528 -2684 1015 0
+-2656 -2585 1036 0
+1361 281 479 0
+-3088 -2275 -979 0
+-2491 -2476 340 0
+482 2409 -1142 0
+346 1477 -1522 0
+-3150 1398 381 0
+389 -485 433 0
+2811 1795 -3058 0
+2424 -1502 3205 0
+1254 -2941 -2979 0
+-1743 -346 -2559 0
+1516 695 2110 0
+-3464 550 -3207 0
+-394 147 -3462 0
+-1039 -3400 -447 0
+1442 2007 -1830 0
+2514 512 -1846 0
+835 542 -68 0
+-1491 2379 2356 0
+1488 56 373 0
+766 2692 102 0
+337 -866 2323 0
+-3469 -1020 -1042 0
+-758 -1548 670 0
+1977 -297 45 0
+2535 -2484 83 0
+2747 1700 -1267 0
+-2822 180 -1745 0
+-1429 255 2139 0
+3380 -3081 -2647 0
+846 -436 3407 0
+-2416 937 -2764 0
+-1138 -3439 -2428 0
+2539 686 3333 0
+217 -3439 -3388 0
+-2923 767 -564 0
+377 3326 93 0
+16 1176 2548 0
+-1637 -459 879 0
+-1647 3 -892 0
+671 -624 -173 0
+-2110 665 1862 0
+-1025 1988 -1831 0
+2303 2621 -2290 0
+3053 1094 -2022 0
+2945 2301 629 0
+-1254 3023 1174 0
+2675 3261 899 0
+2197 -1559 -2463 0
+1317 785 1570 0
+-896 -1998 -1081 0
+2169 1865 752 0
+3075 1736 -1089 0
+-927 -2336 -1103 0
+2834 -3313 -1329 0
+2924 2395 1919 0
+-547 2309 2278 0
+-1949 2987 1187 0
+2819 -362 -1098 0
+-2952 384 -549 0
+-645 -436 1394 0
+-3015 2942 -851 0
+-1384 71 2983 0
+-1447 -3370 456 0
+3272 -1399 -2670 0
+1867 -1921 2855 0
+-1157 1754 692 0
+2317 1903 -2946 0
+-146 -187 -2699 0
+-983 -549 2626 0
+-829 -3034 3294 0
+-2563 -1256 1548 0
+3420 -522 -2752 0
+-3208 -858 2912 0
+-537 2527 2777 0
+-804 2644 2855 0
+2724 -3387 -2733 0
+2426 1798 974 0
+2915 -446 -576 0
+-329 -253 -2197 0
+-1008 -3134 3336 0
+2588 905 -3039 0
+407 -2789 1412 0
+3254 943 -1099 0
+-58 2631 783 0
+3339 -828 1941 0
+1960 3223 2 0
+-3001 1225 -2613 0
+2551 -3463 2566 0
+1512 2488 -2932 0
+-1971 1561 -2243 0
+-3461 -1030 66 0
+-2445 1440 1855 0
+-2805 2919 899 0
+-328 1106 3053 0
+2585 -3308 -821 0
+-646 -2752 -465 0
+-2706 -2384 3078 0
+1198 -1644 1650 0
+-2601 1452 -1293 0
+-744 2527 -1023 0
+2602 -628 3343 0
+-1172 501 -3195 0
+794 2462 1509 0
+1479 2589 -816 0
+-433 758 2111 0
+2805 3448 -3067 0
+-1024 2340 793 0
+1604 2926 524 0
+-1177 1544 -1431 0
+646 -418 1323 0
+3184 -241 -560 0
+2922 -545 3109 0
+-296 2923 -1777 0
+-656 -1948 3219 0
+1059 1741 -1768 0
+504 -191 -1082 0
+551 -2333 -2265 0
+-2432 3153 -2282 0
+-1801 883 1637 0
+126 965 671 0
+1430 -683 1919 0
+2370 2268 -65 0
+-3143 -93 -852 0
+-725 -1811 -2900 0
+2208 -2642 -1392 0
+2404 987 941 0
+-1351 1876 -1013 0
+-1151 937 3451 0
+-116 940 2283 0
+-1874 3365 -663 0
+828 578 2653 0
+1221 -1329 621 0
+1537 -2996 3014 0
+-762 122 1556 0
+2041 -3395 -945 0
+-3162 123 88 0
+-1757 -3278 -904 0
+-1925 2169 -1414 0
+-868 -1311 377 0
+3394 -2796 823 0
+344 2013 722 0
+3241 3408 -2062 0
+3417 3252 -1908 0
+-267 3341 264 0
+945 -2635 -3444 0
+480 -440 -754 0
+1092 -139 12 0
+1810 -2688 2013 0
+2726 370 358 0
+2784 789 1542 0
+-1874 1020 1014 0
+-3475 2267 3104 0
+-2315 2207 -2975 0
+2597 2999 -1267 0
+-98 -1157 -2468 0
+1620 -1219 3156 0
+-912 -837 3244 0
+-1957 1854 60 0
+-1382 28 2122 0
+-735 -1844 -3107 0
+1089 1653 -365 0
+-1040 -938 -955 0
+2317 2740 -74 0
+1998 -1955 -2334 0
+3319 -2797 1461 0
+-2474 128 1357 0
+-1934 1769 -772 0
+-52 2134 -258 0
+-2090 162 781 0
+1122 -2065 2262 0
+2820 2574 -1861 0
+-3441 -2827 3165 0
+-933 -3187 2507 0
+1774 -2200 1642 0
+930 -79 3180 0
+3019 -75 1948 0
+-2523 2229 -98 0
+-1948 -1609 -596 0
+1579 1712 -804 0
+3258 2616 -1228 0
+2176 -1295 2839 0
+-686 -1631 -210 0
+-1307 -2757 -291 0
+-31 -2221 2146 0
+1595 -1258 -1740 0
+-3006 3231 -2666 0
+-543 -929 -2765 0
+401 3296 3486 0
+3010 -1954 -1758 0
+-1255 -2504 564 0
+1496 1159 -870 0
+-295 175 -86 0
+-2362 11 -144 0
+-2243 13 -1384 0
+1296 1623 -1649 0
+1042 -2255 870 0
+-2524 -1036 -2388 0
+-2138 1608 3406 0
+-2144 1404 2844 0
+427 1924 -938 0
+-735 -3217 -679 0
+-2614 1751 2400 0
+-1271 1887 3185 0
+1129 441 -485 0
+1819 424 -2960 0
+-315 -3341 -3184 0
+-619 221 -2446 0
+-3008 158 -3094 0
+3187 1672 3254 0
+-3411 3067 1815 0
+1696 -2721 2161 0
+2055 1202 -1649 0
+-1396 364 -2551 0
+-1396 -680 -2364 0
+1723 -2006 2608 0
+-315 2449 2339 0
+-1940 389 -3169 0
+-3288 -3194 -2618 0
+109 980 80 0
+1221 2117 3091 0
+46 -2027 2941 0
+-104 -1759 -1022 0
+2530 2491 -961 0
+966 2121 -1857 0
+1789 -502 -2804 0
+1630 -3497 1844 0
+1022 818 -2440 0
+707 -2649 -192 0
+1306 1179 3103 0
+-2126 2613 1798 0
+-2719 -1266 84 0
+-2153 -1557 386 0
+-1310 -1964 790 0
+-568 3313 -2022 0
+1281 807 3274 0
+2310 2532 1707 0
+-3185 -221 -3331 0
+-1736 1700 1599 0
+-2355 -1085 -412 0
+-1582 253 2086 0
+-1492 -2518 970 0
+3138 -1085 1894 0
+466 -2055 329 0
+-1155 -2319 1349 0
+1846 -923 1818 0
+2124 -403 332 0
+-1867 -2026 -3329 0
+-366 548 -2460 0
+2573 -59 -2354 0
+-622 837 2798 0
+1052 -2462 2563 0
+-2826 2763 381 0
+-1770 2885 3167 0
+3194 -1958 -131 0
+-1160 1511 2297 0
+1149 2229 1302 0
+-2904 -2221 -1979 0
+1258 -3349 2566 0
+-2486 -1755 -2013 0
+-1755 2638 1667 0
+-573 -1283 -2926 0
+593 -3212 -996 0
+-1916 -1939 -2895 0
+-1279 -3264 2824 0
+1418 -1448 844 0
+1989 -2430 -718 0
+2355 684 -625 0
+256 432 803 0
+-3199 -1707 -1614 0
+1239 -2109 -85 0
+-2300 -869 -1844 0
+-3084 -2897 -2764 0
+1947 2561 -1714 0
+-2205 -1945 874 0
+1442 -3089 -1298 0
+3002 1746 -1327 0
+-1957 -787 1177 0
+-1374 -3070 -2002 0
+298 2695 -1118 0
+2300 2181 2609 0
+1561 76 2481 0
+3396 -2312 2291 0
+-733 3112 598 0
+-1586 -2319 3137 0
+-849 -2495 -324 0
+-3007 215 1691 0
+983 -132 -2268 0
+-3282 2587 3302 0
+1005 580 -2168 0
+3260 2153 2544 0
+-358 861 1632 0
+-3267 636 2408 0
+2321 -2403 1582 0
+1091 92 -2410 0
+1887 1775 -923 0
+-3015 2869 -1852 0
+2926 -114 1518 0
+2964 1210 -1745 0
+-571 1877 -1006 0
+-2921 -2955 -3431 0
+2014 1658 -3321 0
+2382 -1628 2807 0
+-1517 -3483 -636 0
+2017 1063 1868 0
+1180 1460 -2484 0
+1011 -836 2380 0
+2678 3403 257 0
+450 1478 999 0
+-2159 -3319 -3409 0
+-1790 -2974 -1722 0
+-1140 -2954 -1901 0
+2632 3094 -1883 0
+-1742 -1623 2764 0
+-1833 2137 1145 0
+3336 -3132 -2682 0
+-1267 586 2296 0
+2554 -63 461 0
+-1999 778 -1922 0
+-2743 1464 -1904 0
+-3423 2042 1050 0
+908 1545 -3037 0
+478 1768 -738 0
+2486 931 -2857 0
+3305 3105 3478 0
+-377 3248 -2955 0
+-142 -3113 1855 0
+2026 1240 2873 0
+-2521 1214 1622 0
+-2803 2669 2695 0
+416 -2546 -1989 0
+960 -2362 -316 0
+3222 -3048 2634 0
+2939 779 -1606 0
+-1222 -327 3315 0
+-3037 -2592 -393 0
+582 3211 -1925 0
+159 -2367 2607 0
+2126 3155 2697 0
+-1806 -2169 -808 0
+1653 2214 -2426 0
+-1826 459 -2450 0
+1561 -529 2314 0
+1927 -1681 -345 0
+-2842 1294 -781 0
+-3494 2445 3179 0
+1313 877 3039 0
+-654 -2435 1527 0
+-818 -2188 -1535 0
+-3375 -1181 2388 0
+-3269 -896 1088 0
+83 2078 671 0
+-786 2716 2506 0
+968 -696 2321 0
+2187 -3108 -3362 0
+-1829 -876 1845 0
+-3298 -864 2886 0
+-3492 -2857 -3391 0
+3450 1685 -512 0
+-2876 2700 2566 0
+979 2192 -119 0
+-318 2463 -1792 0
+2714 -2020 990 0
+433 2768 -1584 0
+-2623 -2477 -3443 0
+883 -2436 2775 0
+111 -2471 773 0
+923 -2544 -2057 0
+-1353 -972 -1107 0
+398 -14 -2051 0
+-917 -877 -2508 0
+2407 -3244 -1692 0
+2139 -503 2057 0
+-1216 -1549 -528 0
+-1242 -2885 -300 0
+1211 869 -1068 0
+-2240 2495 -1351 0
+-2500 3300 -1171 0
+2062 1765 1073 0
+-2765 -3217 70 0
+-84 1233 3368 0
+-828 -2274 -591 0
+-508 113 2594 0
+2164 171 -1264 0
+-2720 58 -2676 0
+2453 1407 -210 0
+-2485 -3382 859 0
+-1383 64 1674 0
+2779 311 765 0
+-693 2101 2420 0
+-876 -535 1557 0
+56 -1783 -1800 0
+410 507 -1177 0
+-3129 -2517 -3405 0
+-1513 -3264 1346 0
+1390 -56 -1004 0
+2669 2153 996 0
+92 134 -1878 0
+2778 -1766 -1445 0
+-1575 -2267 3070 0
+22 2334 2883 0
+1688 896 -3003 0
+793 3297 -193 0
+-2235 -3180 -1265 0
+-2170 580 677 0
+-1049 -1108 775 0
+3220 -2543 -2803 0
+2507 -1640 -1021 0
+477 -1302 256 0
+-1279 1906 3362 0
+2008 3281 -793 0
+106 -3018 -1128 0
+-1193 2416 2437 0
+1163 -3192 3068 0
+1531 2373 -2705 0
+2519 3145 -828 0
+2854 -950 -80 0
+-1191 2211 -603 0
+-42 560 730 0
+-3180 974 -2197 0
+787 -1391 -14 0
+869 -3151 1738 0
+-395 -1002 3034 0
+-252 -3370 2810 0
+938 -2860 1042 0
+2090 2771 -2258 0
+2198 2151 1444 0
+1577 -3316 -943 0
+683 -2426 2005 0
+1152 724 -1353 0
+-2068 92 -3422 0
+-622 1976 -467 0
+-3160 1758 1122 0
+2324 -395 2357 0
+-2984 -1841 -520 0
+-1971 3136 -426 0
+-913 1676 319 0
+2808 686 2953 0
+-266 112 3026 0
+-3058 -2477 -2716 0
+1092 2084 3249 0
+-285 -56 49 0
+-602 -353 -422 0
+-3094 1582 -1346 0
+-2173 115 2303 0
+-646 -516 -622 0
+1739 926 -2866 0
+2169 331 1255 0
+2326 1439 553 0
+-1513 189 -375 0
+958 -2385 250 0
+-1739 412 -282 0
+-138 -3245 1471 0
+-1221 -1847 703 0
+-1945 1624 344 0
+-1124 -3019 2775 0
+3015 1757 -177 0
+-3204 989 784 0
+447 2756 -1164 0
+1191 2175 -1741 0
+-1314 -319 2873 0
+601 607 2315 0
+-895 1098 -1466 0
+-844 385 704 0
+-58 1157 1210 0
+1249 -2262 -3355 0
+1161 -523 -2812 0
+2550 1355 -2091 0
+2028 -1232 -3033 0
+-461 -331 1822 0
+-1015 563 -1138 0
+-1412 873 -566 0
+-1270 -391 -3263 0
+-1944 1914 -703 0
+1611 -1036 -2781 0
+-3481 -2427 -73 0
+-960 -2362 -3418 0
+2016 2543 311 0
+-1386 595 1930 0
+1245 -2461 -1981 0
+-1637 -2038 2504 0
+-627 94 -1795 0
+2416 1198 -2716 0
+263 264 401 0
+-2155 2234 426 0
+-2856 2676 -2625 0
+-3 1642 -2741 0
+-107 247 3114 0
+2813 64 -734 0
+-1769 2109 -503 0
+1216 -1096 1252 0
+-2070 3472 -1351 0
+149 -868 2761 0
+3358 358 -1648 0
+385 -479 -418 0
+-1527 840 -2025 0
+2844 -3345 -806 0
+-2027 -2652 1349 0
+3377 -484 1127 0
+-1326 2048 504 0
+-2786 599 1154 0
+2216 3217 3312 0
+3256 -1476 -1233 0
+819 -530 -1344 0
+3435 -3167 -973 0
+-948 -2202 -384 0
+-669 -352 -1161 0
+907 2002 3324 0
+1705 -844 1945 0
+391 -1355 -362 0
+-229 2586 2854 0
+2285 -2069 407 0
+2799 645 195 0
+1034 -1110 634 0
+-563 1434 1082 0
+746 -3104 -240 0
+2801 2480 -1660 0
+1098 -699 2258 0
+2210 -2792 -1668 0
+-2873 950 -648 0
+2602 -3341 1224 0
+-1162 2604 1893 0
+3027 1720 -1231 0
+1119 -268 -3259 0
+-336 -665 -3439 0
+-3316 -2706 1244 0
+3237 953 -2546 0
+-3102 2335 2297 0
+-1799 -6 -326 0
+-501 2397 -1946 0
+-2478 1374 1418 0
+2112 1522 3494 0
+2411 2639 917 0
+1312 1351 1282 0
+1082 2337 -2948 0
+2313 2543 -108 0
+2804 1615 -1785 0
+1392 -1204 1940 0
+-1966 1337 1068 0
+-1493 -901 2128 0
+1111 2273 -1127 0
+-615 -1101 1254 0
+-338 80 3176 0
+-162 1770 -1459 0
+616 1487 3280 0
+-1864 1055 -1043 0
+3018 -2610 386 0
+2 -3010 2264 0
+2100 -828 -424 0
+-3207 -1737 2556 0
+-1308 2406 1556 0
+1043 -1605 1691 0
+-516 -2714 1774 0
+2711 404 743 0
+2324 1866 -1642 0
+-2076 -1840 -1811 0
+930 -968 3005 0
+-1025 -850 46 0
+-1717 -2996 2794 0
+-2946 687 2177 0
+-2233 1778 1734 0
+-467 2942 1697 0
+592 2467 -2960 0
+-565 -1770 -3295 0
+-299 2681 553 0
+3313 2110 3357 0
+1679 -3006 -1759 0
+66 424 -292 0
+-1546 -1059 917 0
+-878 95 2199 0
+-1415 3433 -102 0
+368 -113 -2900 0
+-1076 -721 -1999 0
+-1383 1869 3360 0
+3296 -499 795 0
+537 -1209 2235 0
+259 -3091 -2476 0
+-2242 -1957 1552 0
+-476 -501 -1876 0
+-1629 -1097 -1561 0
+-1325 601 2567 0
+344 1937 -3196 0
+-2426 -965 -1400 0
+1338 1950 719 0
+-2198 1996 974 0
+1685 2153 1331 0
+-1620 -544 -1609 0
+970 -2176 1417 0
+950 -1950 1093 0
+-3224 1515 3085 0
+1775 1285 54 0
+-1647 -789 -1731 0
+2429 -2932 1135 0
+1180 102 1483 0
+2297 985 2926 0
+-2798 1837 1628 0
+-3197 -65 -1965 0
+-2883 996 1998 0
+-3161 714 -2806 0
+-957 -3403 1913 0
+2509 -528 1792 0
+-2737 1931 1974 0
+-1097 1289 -170 0
+722 -2963 3092 0
+-132 370 -2489 0
+2861 -3492 -2342 0
+-2045 3272 -880 0
+871 -3102 568 0
+-1945 -3101 2726 0
+175 -3241 2890 0
+2827 -226 -2139 0
+1102 -646 1159 0
+-2620 -1 -689 0
+-1991 -1858 541 0
+784 -439 -1260 0
+-2753 -2078 -3404 0
+2045 1401 -1879 0
+-715 -1089 -3219 0
+1283 -911 -3301 0
+-723 -2166 1108 0
+990 512 -3337 0
+-285 1421 1072 0
+-745 -798 -2502 0
+110 2225 -3425 0
+-2471 -2609 -1809 0
+-1063 -576 2366 0
+-1989 2295 835 0
+3210 -1653 3412 0
+-1022 938 1042 0
+1772 1509 1149 0
+-1097 -2616 285 0
+2085 631 -2183 0
+-746 3043 2399 0
+3053 -2976 3167 0
+1353 529 2319 0
+-2679 -389 -1587 0
+3275 2947 1051 0
+-1869 -21 -694 0
+865 2340 -736 0
+857 -3444 -1449 0
+-3064 2178 2421 0
+625 436 -2600 0
+1700 -3282 2379 0
+-640 -721 -84 0
+1485 45 2326 0
+191 2121 -1841 0
+-2633 -3237 2536 0
+1055 -3304 2456 0
+-1312 1926 2574 0
+-3489 -2950 -1987 0
+1527 165 -1046 0
+-1189 970 3247 0
+-3262 -740 1637 0
+1747 2790 1480 0
+-2182 -2422 1503 0
+3407 3085 -3177 0
+2075 809 -1791 0
+-3048 1355 -1117 0
+-3482 2439 3036 0
+-1134 -1888 3348 0
+-963 -2919 3325 0
+1178 3461 -1443 0
+2540 3304 1278 0
+-3386 285 530 0
+-2743 1537 1718 0
+-1021 1138 3227 0
+3035 2862 -2890 0
+-1247 1795 -2324 0
+1972 832 1033 0
+2076 3025 1407 0
+-1496 422 2866 0
+96 1052 1895 0
+261 -2370 -693 0
+1627 -3402 -1421 0
+-319 1211 -107 0
+1085 1543 736 0
+1655 -3308 -288 0
+-3148 -1345 -2604 0
+-3211 -1202 3189 0
+-548 -2618 3350 0
+875 -827 2442 0
+-3326 -2394 3303 0
+-1336 -3230 1468 0
+1217 3063 792 0
+-1541 -2758 3097 0
+3382 42 -2888 0
+2270 3079 2346 0
+344 2332 2861 0
+2405 1479 -2997 0
+1218 -109 1695 0
+-3082 -177 2285 0
+2107 2278 -2218 0
+-1067 1305 -2634 0
+-198 -1243 6 0
+-446 -1776 1697 0
+-260 1547 -902 0
+-1 1385 -1193 0
+3401 2663 -2157 0
+1870 3336 -530 0
+351 -1064 1530 0
+2097 -538 -2225 0
+474 -947 1003 0
+-1961 -898 2109 0
+-2920 1909 91 0
+2596 -3414 -2568 0
+-2919 3232 1308 0
+-1396 682 140 0
+981 2588 -3223 0
+1432 1674 1896 0
+-2278 2205 -1150 0
+-133 -2438 525 0
+-1820 2026 762 0
+-685 765 119 0
+-968 -3129 -1390 0
+906 -2516 -2358 0
+884 733 2355 0
+65 -3178 3175 0
+-756 2181 133 0
+2007 -350 242 0
+-3159 1907 -758 0
+-2339 3254 1461 0
+-829 -2782 -116 0
+-945 2817 -2391 0
+1925 -549 2531 0
+-514 1938 863 0
+-3184 836 -2773 0
+-1545 323 -608 0
+-3283 -1310 1178 0
+-2047 -1097 -1877 0
+-3386 -2317 -1310 0
+1019 -2881 -430 0
+651 2255 2800 0
+1413 914 1681 0
+2922 1693 -2824 0
+647 -2459 1032 0
+-2643 -1262 -404 0
+677 -166 -2029 0
+2293 -2048 -2663 0
+-1797 -456 2603 0
+-58 2488 -2713 0
+2785 -2070 379 0
+2238 -28 -486 0
+1868 -1997 2484 0
+-644 -3243 770 0
+879 -2095 3344 0
+3386 -3162 3175 0
+-928 1095 815 0
+3013 858 3099 0
+2668 -623 1342 0
+1256 2219 2087 0
+1157 -1191 -427 0
+858 2778 2311 0
+-31 -2776 -3332 0
+-731 2616 -1409 0
+-2745 -2677 -2515 0
+26 -3235 989 0
+-2082 1517 -298 0
+1451 2149 -1217 0
+3100 -979 3301 0
+-2671 -1552 509 0
+-3111 738 -1750 0
+3007 -73 1690 0
+1349 698 -367 0
+-1978 -362 -2180 0
+1844 2707 3199 0
+-462 -249 -2154 0
+2926 -2328 -2682 0
+3367 -157 -528 0
+-2478 -489 -1962 0
+-3001 -520 201 0
+1923 3026 -1861 0
+668 3338 -784 0
+12 3050 1214 0
+-692 2583 3031 0
+348 -1350 -1239 0
+-1085 -2213 1831 0
+-2289 1860 -1994 0
+-1146 -3293 2174 0
+-772 1197 -545 0
+-900 3258 1759 0
+-300 658 -3453 0
+3086 -1487 -868 0
+587 1986 2708 0
+1385 24 -3335 0
+-3308 -1460 2983 0
+562 -2562 -2294 0
+208 -1256 -3323 0
+1674 -636 789 0
+818 -3323 -1254 0
+1408 -391 -626 0
+-2586 3155 -2407 0
+662 326 -808 0
+540 -558 -2641 0
+-1020 19 799 0
+-499 -2333 -1573 0
+-762 -646 2305 0
+2364 -2166 -1383 0
+-2838 -1955 -3099 0
+1242 1054 1460 0
+-2532 558 -2848 0
+822 2789 -526 0
+-1020 -1059 -2078 0
+-2659 865 -1311 0
+-2209 -1081 -312 0
+-1614 -999 707 0
+802 456 -2997 0
+-1683 371 202 0
+-1683 364 474 0
+3010 726 2445 0
+3130 -380 2729 0
+974 -2616 -120 0
+2411 2628 1043 0
+1730 2189 1772 0
+-267 -1844 -1871 0
+2029 1347 2128 0
+3495 605 -1032 0
+-1223 -2526 -2723 0
+3180 -2794 3045 0
+1030 2347 -802 0
+162 2218 -1738 0
+2083 448 -844 0
+3412 1421 2417 0
+-2506 1596 463 0
+-2864 950 -866 0
+-2429 1082 -2536 0
+-1992 -1053 -306 0
+418 462 -2654 0
+-2482 1473 -3457 0
+1717 3428 1031 0
+-918 1821 -1106 0
+-1318 1974 2037 0
+766 -2495 793 0
+-604 -3306 -352 0
+512 -2583 -1233 0
+1232 73 -649 0
+408 776 837 0
+1160 -1766 -2828 0
+1802 -2333 -2008 0
+1370 -1251 2958 0
+567 1134 241 0
+1818 249 -3030 0
+1904 -2687 -843 0
+-2727 1946 -751 0
+743 -2972 2573 0
+-976 -3118 -278 0
+392 507 -1188 0
+-1725 725 -3260 0
+2925 711 546 0
+-1824 -82 -3281 0
+-225 2294 -2866 0
+3202 1167 397 0
+-245 1945 -3032 0
+-2536 -691 -328 0
+-1208 -2524 -3447 0
+-444 3060 -15 0
+1808 -2182 -3424 0
+-1828 1199 -1138 0
+-1976 3187 3420 0
+403 -2165 -2417 0
+1731 -2283 2096 0
+215 -2012 -3377 0
+1474 2104 -1976 0
+-3402 3415 -3119 0
+3102 962 2949 0
+377 -2738 -2469 0
+-1455 1737 -1581 0
+1903 -3318 2226 0
+248 2246 -1716 0
+-3497 1886 3083 0
+836 2513 2618 0
+1406 666 539 0
+-1256 -1800 -2948 0
+2866 2653 -3357 0
+3476 -2186 -812 0
+3195 1728 1720 0
+-188 -1417 -2768 0
+3098 897 1595 0
+1922 40 -2573 0
+-1943 3250 908 0
+2397 2208 -2809 0
+1469 -53 -349 0
+-1341 -3343 1344 0
+2583 2399 840 0
+2518 518 3412 0
+2829 -2028 -2933 0
+-1964 -832 286 0
+1336 1127 -364 0
+-2616 2235 2068 0
+2985 2358 3353 0
+-1427 -1078 -717 0
+1290 -1410 1195 0
+3300 3322 209 0
+-3396 -3131 839 0
+1705 -2783 325 0
+2832 1816 -1705 0
+-919 -1711 -1615 0
+-524 -1937 2340 0
+-530 1470 866 0
+-1859 2632 3133 0
+-277 1207 -2874 0
+1124 2406 2620 0
+2240 -1933 3489 0
+-2821 3008 -680 0
+3099 -2943 180 0
+1685 1540 -2548 0
+2303 -1205 -3005 0
+1727 3469 2420 0
+933 476 -2531 0
+813 193 -859 0
+-2831 -828 -1935 0
+-1784 46 1945 0
+3313 1295 -331 0
+-3238 -1955 -1703 0
+1368 -3115 -2771 0
+-1931 -3017 2973 0
+-2633 2189 -745 0
+-2229 -805 338 0
+-238 2399 -289 0
+3178 3116 3215 0
+-3266 989 904 0
+734 -1717 2716 0
+56 3017 -1468 0
+1996 -3430 399 0
+-1495 1874 -2869 0
+3498 3234 1915 0
+1446 -675 -2070 0
+2122 -1334 -2986 0
+1494 1007 2376 0
+1641 1481 1482 0
+-1602 -3482 -2464 0
+-1974 -1045 -72 0
+2538 1740 -332 0
+3173 -2706 -3248 0
+2084 -1951 1402 0
+-914 1411 -838 0
+-2792 784 -1959 0
+3451 -3048 -1368 0
+2914 1705 1719 0
+200 2840 -367 0
+-2084 -244 -2175 0
+-368 -393 -1803 0
+-2007 3348 3442 0
+1434 -2254 -1475 0
+-1090 -774 -326 0
+-1170 -2420 -2402 0
+2494 2561 422 0
+-1738 -2616 -482 0
+-2799 -1913 1554 0
+-2025 1561 3071 0
+-439 -795 -2152 0
+453 -2466 -532 0
+376 -1815 353 0
+-2049 -712 -1205 0
+-348 -1407 2528 0
+295 1717 -2325 0
+786 -1515 2290 0
+-2638 -814 2157 0
+3249 819 -1167 0
+2726 -1752 3423 0
+-1610 -246 1306 0
+-196 1847 -1842 0
+-255 3302 1932 0
+-2236 -2664 -2141 0
+1578 1844 -1998 0
+609 -1983 -3434 0
+3425 -1880 -1838 0
+2407 -1201 3162 0
+-667 -1314 1452 0
+160 1320 -2858 0
+-268 3425 -821 0
+-2038 3486 -2516 0
+-639 -417 -131 0
+1472 1976 -627 0
+2739 2956 -2789 0
+-376 2280 -1806 0
+-158 346 -761 0
+1968 784 3238 0
+2462 -1713 494 0
+865 3125 291 0
+-2635 1970 -967 0
+-1015 -619 1268 0
+-722 2778 2119 0
+2421 -224 -2018 0
+-2972 -449 3204 0
+-1510 -1406 252 0
+254 -3496 -2627 0
+2251 -998 -1354 0
+543 696 906 0
+-1483 2096 -2973 0
+2671 637 961 0
+-2948 2155 -2085 0
+-706 1130 2363 0
+-1319 2757 171 0
+1228 539 -84 0
+1623 994 3330 0
+-3148 3167 -2220 0
+-3084 2587 1130 0
+-3196 -855 -963 0
+2614 2678 -2015 0
+-3165 -2015 -2397 0
+-2612 1122 347 0
+530 -2768 644 0
+-1067 2845 -2791 0
+2947 -2499 -1557 0
+-1386 -1150 1879 0
+1745 2090 3268 0
+-2708 -2367 -3414 0
+-2371 -3349 -2902 0
+2023 -1044 -973 0
+2034 -322 2258 0
+-3229 -3189 -3369 0
+755 3254 -1050 0
+2632 -648 -1636 0
+1620 -2397 1180 0
+1764 2227 2896 0
+784 -1488 943 0
+-3429 432 1319 0
+2849 1402 2930 0
+44 3196 -212 0
+-2310 589 559 0
+2021 2609 1815 0
+1363 -1749 1425 0
+3275 18 769 0
+713 496 3253 0
+-1284 -2682 -3098 0
+1855 1083 1625 0
+-1015 1140 -1282 0
+-2332 -3337 2232 0
+-1796 1418 3352 0
+-2999 -3232 -3007 0
+-1921 -947 2325 0
+-2400 -2060 -2603 0
+2604 897 283 0
+-3046 2572 -871 0
+-2132 59 2550 0
+-1193 -926 -472 0
+-1211 3089 2911 0
+3110 125 954 0
+134 -2486 -1462 0
+-1628 225 1957 0
+-1251 244 1787 0
+1925 87 -2767 0
+205 1510 2883 0
+736 -2962 -2220 0
+3077 -1016 2034 0
+-2575 -2621 1960 0
+-33 -405 1898 0
+-3116 2048 -2431 0
+89 945 -2888 0
+474 13 -2265 0
+-962 -1830 656 0
+-989 -673 807 0
+-1064 -1172 1547 0
+1041 3270 1186 0
+1650 -1621 3148 0
+208 -1723 -691 0
+-2326 3066 -3072 0
+-2068 -795 -247 0
+-3342 477 3272 0
+-2268 -3321 3083 0
+-773 78 1827 0
+-1373 2446 149 0
+-1311 -2653 1956 0
+-947 686 -1409 0
+-3086 -1878 -565 0
+2375 1250 332 0
+3220 228 2643 0
+-683 -2592 -2559 0
+2734 2845 1429 0
+376 930 421 0
+-214 -2832 1747 0
+1039 1367 132 0
+1642 -962 -649 0
+1781 26 -3301 0
+-1880 2468 2429 0
+804 2183 605 0
+3298 -1896 -2909 0
+1673 -2842 -1784 0
+-2654 -3373 -1191 0
+-633 -3349 2380 0
+2489 -1419 3318 0
+-1602 166 -779 0
+-2025 625 -1585 0
+-1356 -2473 -3418 0
+901 3233 -152 0
+-3026 -1795 312 0
+2968 -1228 1910 0
+-2708 957 1799 0
+-2240 -3281 883 0
+1375 249 2532 0
+3218 -3041 -3003 0
+3125 1765 -2103 0
+-2858 608 1142 0
+2856 2062 1094 0
+-2334 1227 74 0
+2982 -2316 -1304 0
+2374 788 1780 0
+813 700 -1451 0
+-327 1723 3443 0
+-1831 -1783 1358 0
+3315 1648 3361 0
+448 379 2873 0
+-625 3295 1605 0
+3166 -2052 818 0
diff --git a/examples/charm++/satisfiability/example/example_6000.cnf b/examples/charm++/satisfiability/example/example_6000.cnf
new file mode 100644 (file)
index 0000000..9f9684e
--- /dev/null
@@ -0,0 +1,6003 @@
+c SAT07-Contest Parameters: unif2p p=7 nbc2=2803 nbc3=6541 v=3500 seed=1286605994
+c Uniform UNKNOWN (2+p)-SAT Instance nbc2=2803, nbc3=6541, p=0.70, nbv=3500, seed=1286605994
+p cnf 3500 6000
+-1765 -1070 0
+-1298 -3068 0
+-2907 -225 0
+776 -3004 0
+578 1958 0
+-1372 1977 0
+1900 -2858 0
+-1841 -488 0
+-104 -1745 0
+-599 -1021 0
+-424 -88 0
+2289 1997 0
+-2443 2011 0
+-910 -1746 0
+-174 3232 0
+2267 -2120 0
+1778 272 0
+1676 -2380 0
+-2538 -3299 0
+-2059 691 0
+2248 -1315 0
+-3189 2467 0
+664 -1877 0
+2418 1800 0
+-861 -3070 0
+3364 -1135 0
+917 -227 0
+2728 -476 0
+-119 -1132 0
+-1351 -3170 0
+-2297 1445 0
+-2043 -1910 0
+1816 1939 0
+3429 582 0
+-507 -320 0
+1726 -1209 0
+2585 -1652 0
+-2440 -2450 0
+-2867 2451 0
+-139 813 0
+2340 135 0
+-2325 -3113 0
+1524 -2565 0
+727 -1593 0
+2614 247 0
+1065 -2790 0
+3091 -1842 0
+-2600 -1685 0
+1904 -207 0
+2535 -59 0
+-3251 307 0
+2898 -289 0
+-1644 -65 0
+-3232 -3141 0
+1094 -2553 0
+635 1633 0
+-2556 -3267 0
+1658 -2147 0
+2450 1886 0
+853 358 0
+2710 1705 0
+-3275 -1764 0
+2827 1061 0
+1552 -2501 0
+1032 -2196 0
+2093 599 0
+-3297 2888 0
+-1159 3146 0
+-167 -2808 0
+2696 808 0
+1887 -1984 0
+-1062 545 0
+-3251 1283 0
+83 2885 0
+-865 -528 0
+-2017 2391 0
+1523 -2124 0
+2769 -2741 0
+-1300 -1093 0
+-2209 954 0
+-878 -303 0
+618 840 0
+1959 5 0
+-1540 -2659 0
+593 281 0
+-713 1017 0
+746 873 0
+-247 -1414 0
+564 -2085 0
+1404 2663 0
+-791 -338 0
+-1563 -1893 0
+777 2017 0
+1696 -2 0
+1643 1896 0
+2701 -3013 0
+1526 -945 0
+-1021 -2791 0
+2775 642 0
+2624 -2992 0
+1208 -1390 0
+1041 1844 0
+-2265 -1072 0
+49 1230 0
+2182 -1004 0
+-2282 1514 0
+3423 -2393 0
+1189 2447 0
+3392 1800 0
+-1727 115 0
+-382 1957 0
+-1772 2005 0
+-1860 156 0
+3303 -2197 0
+-323 2272 0
+-2972 408 0
+-1554 -295 0
+-2350 -272 0
+1597 3162 0
+-1915 321 0
+1175 -915 0
+-2145 -702 0
+-701 -479 0
+691 -3036 0
+3093 2025 0
+-240 1173 0
+1026 1704 0
+-2502 -3214 0
+2501 1152 0
+-240 -113 0
+1326 1112 0
+1477 760 0
+-477 3011 0
+-1581 -2553 0
+-1519 2046 0
+-2781 695 0
+2387 -2927 0
+-200 66 0
+130 41 0
+1825 -2675 0
+85 3018 0
+-2869 772 0
+-2827 1407 0
+1075 -388 0
+-448 2587 0
+-2853 2173 0
+330 1088 0
+-3014 955 0
+2448 -1263 0
+-2542 2703 0
+1350 -475 0
+-2710 -2386 0
+-677 305 0
+625 3011 0
+1190 -3109 0
+-860 -300 0
+1036 1623 0
+-96 1945 0
+-1434 371 0
+3282 301 0
+729 -487 0
+3081 -2308 0
+-595 -1473 0
+2480 -1261 0
+3335 92 0
+-208 1377 0
+-956 -2285 0
+-1003 1195 0
+3190 -3085 0
+-1678 41 0
+-309 -227 0
+-3286 -2803 0
+-871 3052 0
+-1430 2720 0
+-2675 3121 0
+-590 1909 0
+-2496 3050 0
+3385 -2946 0
+1104 2982 0
+1160 511 0
+-1677 -3109 0
+-990 -1991 0
+-333 341 0
+-2426 -1202 0
+242 2096 0
+342 -321 0
+-1214 2335 0
+-2085 904 0
+-2907 3368 0
+2840 560 0
+3469 -595 0
+-3150 -317 0
+2547 19 0
+-453 -834 0
+-141 -540 0
+-2514 2487 0
+1955 2317 0
+-713 967 0
+-276 3076 0
+-3357 3317 0
+2303 1793 0
+-174 921 0
+2295 -2539 0
+-2903 3230 0
+380 -2651 0
+-1422 1773 0
+-1679 1623 0
+-1239 439 0
+1275 2796 0
+-1358 -1762 0
+1676 1461 0
+2325 2436 0
+-3236 296 0
+1704 2855 0
+-3415 1417 0
+-2417 1194 0
+587 1639 0
+-705 2096 0
+700 -3459 0
+-1246 -2228 0
+480 2138 0
+-1091 -2065 0
+-2470 -2158 0
+1837 1577 0
+340 868 0
+3115 3425 0
+-3020 -3338 0
+-2278 -1746 0
+-1089 -1440 0
+1876 -3184 0
+-3486 2231 0
+1692 747 0
+22 -3076 0
+1078 3450 0
+-2884 -1361 0
+1853 -918 0
+3490 1621 0
+2363 2711 0
+3145 -672 0
+1747 3367 0
+-3032 1404 0
+-2443 -1206 0
+-1141 -3487 0
+-2174 -2435 0
+3262 529 0
+-1859 973 0
+-1179 2839 0
+3062 -1193 0
+2148 3203 0
+-449 2915 0
+3475 1083 0
+306 -811 0
+571 -2192 0
+1078 432 0
+1308 1682 0
+-2475 -3463 0
+1971 -2212 0
+-573 -509 0
+-1028 -2695 0
+1608 -1401 0
+1345 -1107 0
+-3256 1179 0
+-1309 -1933 0
+-2235 -1405 0
+1559 3125 0
+1742 -2679 0
+-1724 602 0
+-1879 -2009 0
+2094 2146 0
+-1154 -2913 0
+-2685 -2745 0
+-3239 2125 0
+-765 3429 0
+1882 1776 0
+-981 3435 0
+-880 2583 0
+-1559 -1322 0
+1054 1674 0
+2079 1658 0
+1568 3115 0
+2031 1339 0
+-2151 -516 0
+1992 2491 0
+2394 -2343 0
+2803 -3164 0
+898 594 0
+-2257 1293 0
+2533 -2656 0
+450 1475 0
+108 -2233 0
+2441 -1470 0
+2797 -1786 0
+-476 -2455 0
+-2788 850 0
+1799 -1868 0
+3050 1895 0
+1517 -2600 0
+-1860 224 0
+-2556 -2135 0
+-2005 452 0
+1871 355 0
+-2454 2702 0
+-3347 -1583 0
+2092 -2896 0
+-3346 -1734 0
+3328 -2506 0
+151 -735 0
+1560 1136 0
+-592 -1088 0
+-2695 296 0
+-1358 1937 0
+1856 58 0
+3328 -3407 0
+-249 2038 0
+52 -2555 0
+-459 1542 0
+1680 -594 0
+2918 3415 0
+-2768 -725 0
+-3183 -2825 0
+2574 2666 0
+-1644 -3222 0
+475 3307 0
+2466 1983 0
+478 1519 0
+-3466 671 0
+3284 -358 0
+2179 -2477 0
+-2414 575 0
+2845 -2252 0
+-2573 753 0
+3407 -2182 0
+1812 -280 0
+1633 -1011 0
+2347 882 0
+-1050 2277 0
+-1500 519 0
+-3149 663 0
+-1329 -258 0
+-650 1620 0
+-2640 -738 0
+2849 2188 0
+3116 2720 0
+2927 628 0
+-849 -1769 0
+418 -2718 0
+346 -2982 0
+1916 -3456 0
+3000 -1828 0
+2441 544 0
+84 -2722 0
+-1260 435 0
+997 2606 0
+-1135 3160 0
+1299 -2476 0
+-243 -769 0
+-3125 2091 0
+3112 -622 0
+-2397 2704 0
+3194 2266 0
+-1843 -2104 0
+-3194 958 0
+-906 706 0
+-2365 -890 0
+571 554 0
+2113 3376 0
+-1020 1167 0
+-2219 1403 0
+1302 -38 0
+1771 1987 0
+928 -324 0
+666 1781 0
+-692 1418 0
+-10 314 0
+-373 -1742 0
+-1412 -3153 0
+3151 208 0
+-685 -597 0
+1385 1405 0
+2133 -3286 0
+2020 -2129 0
+2496 -3059 0
+423 -1961 0
+945 -1047 0
+1303 -2016 0
+3448 99 0
+32 -3382 0
+1189 1488 0
+-870 -1739 0
+-2559 2734 0
+2598 1315 0
+2807 -636 0
+-115 2595 0
+-1763 1395 0
+698 458 0
+-943 1595 0
+-2062 1678 0
+-1130 -602 0
+2106 269 0
+-777 2021 0
+-55 954 0
+-309 112 0
+-124 -2892 0
+2515 2879 0
+820 2198 0
+-1968 -2176 0
+-1215 1985 0
+3349 -2883 0
+-1621 1720 0
+-2684 2936 0
+2401 374 0
+-3314 -2492 0
+-809 -2582 0
+-488 3350 0
+-202 -194 0
+-2340 3453 0
+3412 2389 0
+4 1903 0
+652 319 0
+2030 1098 0
+-500 2116 0
+-1437 -2691 0
+300 -1688 0
+-2459 -3099 0
+3313 1466 0
+312 -2220 0
+-2146 -1427 0
+1849 -14 0
+-2704 3337 0
+-594 -2278 0
+-1910 -32 0
+-2106 -3239 0
+1618 1735 0
+-1074 -2891 0
+2992 395 0
+-3342 -189 0
+2537 -3184 0
+2551 -523 0
+2427 -1829 0
+185 2951 0
+-2772 231 0
+-1639 -65 0
+439 -2471 0
+-867 2825 0
+2684 -3033 0
+971 2696 0
+611 -930 0
+-2591 2598 0
+-1566 -2207 0
+-2450 -835 0
+2730 -3169 0
+2464 3498 0
+-1502 -3383 0
+3086 2369 0
+-102 -991 0
+-179 -1054 0
+-2916 1448 0
+2032 -1253 0
+-2088 -1356 0
+3414 2699 0
+885 387 0
+-1659 -666 0
+2555 952 0
+1745 977 0
+-1766 3025 0
+1207 -1558 0
+1698 -845 0
+-768 -3027 0
+-2625 2122 0
+2669 2544 0
+-944 -956 0
+2000 -348 0
+857 562 0
+-649 -1858 0
+-1533 -458 0
+-2746 -451 0
+-3397 -2655 0
+1860 -789 0
+1693 -1992 0
+177 -457 0
+2212 3098 0
+3138 1707 0
+-657 -3470 0
+-2148 1773 0
+2994 1110 0
+-2625 656 0
+142 1009 0
+1487 -1352 0
+2484 -3058 0
+2404 -3292 0
+3428 -2963 0
+-183 620 0
+-2162 -1028 0
+-127 -2103 0
+831 -587 0
+-1077 -2515 0
+2888 2182 0
+3336 -1351 0
+1735 1840 0
+2049 1593 0
+688 -1997 0
+804 -1083 0
+211 452 0
+-108 1348 0
+1538 1286 0
+2003 1138 0
+3450 2155 0
+1935 -2708 0
+-2868 3436 0
+1804 -1806 0
+2688 -3301 0
+-1724 2290 0
+-1178 -1136 0
+2711 -3418 0
+1749 1158 0
+2320 -2806 0
+-1569 1859 0
+259 1886 0
+-2422 -2241 0
+2835 -408 0
+1105 192 0
+-316 2975 0
+2182 2248 0
+-997 2688 0
+794 2438 0
+1211 -498 0
+2511 -778 0
+268 2356 0
+2729 -1688 0
+-2656 -1608 0
+1794 -2338 0
+1907 1856 0
+2572 -252 0
+-1617 414 0
+3488 -2471 0
+2377 1629 0
+374 -1148 0
+-977 867 0
+3110 2060 0
+1230 -716 0
+-1208 584 0
+1718 -3451 0
+2188 -1961 0
+248 2668 0
+-3404 -151 0
+-3071 151 0
+721 697 0
+-2626 -2253 0
+-2380 3157 0
+332 -2302 0
+-2028 -83 0
+852 -2897 0
+3067 1637 0
+-564 -1817 0
+-498 -3236 0
+425 3455 0
+1323 3402 0
+-2719 -674 0
+-2967 22 0
+7 -1074 0
+-2466 2210 0
+-997 -814 0
+-3039 1117 0
+2536 -2768 0
+683 -2012 0
+1373 1147 0
+3441 1157 0
+587 -3020 0
+1441 2581 0
+-2255 432 0
+442 -1757 0
+-2619 -3336 0
+194 -3202 0
+1032 -2405 0
+2017 -920 0
+-2292 -2155 0
+-2169 2669 0
+-1128 2717 0
+-1147 1047 0
+-1998 -66 0
+-2729 257 0
+616 -1234 0
+2723 1735 0
+2592 -1745 0
+-1624 -2184 0
+513 -821 0
+2373 1926 0
+2749 -3061 0
+1759 2238 0
+2478 1506 0
+2124 -3214 0
+-129 -2476 0
+2372 1003 0
+-2559 1045 0
+-191 2300 0
+1461 -1417 0
+1677 2092 0
+126 2355 0
+3337 -3465 0
+27 1718 0
+99 -1783 0
+1044 588 0
+2296 673 0
+-1247 3475 0
+-2243 -78 0
+2163 1117 0
+1001 -1966 0
+21 3425 0
+2903 2777 0
+-1033 1680 0
+-2751 -84 0
+941 -3421 0
+-2124 -2051 0
+-2431 -2787 0
+748 -959 0
+1434 -889 0
+2589 1283 0
+-29 3450 0
+-1814 -3277 0
+92 -2437 0
+-3195 3003 0
+-654 -2058 0
+41 2170 0
+-398 2311 0
+3223 -3109 0
+-3056 2530 0
+-3092 624 0
+-2003 -1899 0
+-548 -323 0
+-190 2603 0
+1896 -1705 0
+-830 -1780 0
+-609 303 0
+-946 1533 0
+-1638 221 0
+1717 1838 0
+20 3465 0
+1041 440 0
+340 1730 0
+2659 1722 0
+-1398 -3430 0
+-1357 -2881 0
+-119 3134 0
+1720 -599 0
+-132 1949 0
+-3131 608 0
+1031 1139 0
+2346 -3456 0
+1385 -2586 0
+-1348 2235 0
+1567 3301 0
+3340 -1526 0
+962 1143 0
+-2361 562 0
+586 81 0
+1061 3174 0
+-3422 1686 0
+725 -2736 0
+2289 2078 0
+2936 -2099 0
+77 -990 0
+1491 2329 0
+-3252 -1507 0
+2446 -3257 0
+-3440 137 0
+-1863 -2956 0
+1909 -2780 0
+-1636 1742 0
+-1119 650 0
+782 1186 0
+1888 1345 0
+-373 3200 0
+2545 -976 0
+2709 1558 0
+-1964 -2463 0
+-2216 1812 0
+-3436 2444 0
+1939 -1251 0
+2821 1160 0
+197 -4 0
+696 -149 0
+1409 -1022 0
+2544 -3472 0
+-688 -1092 0
+744 1340 0
+-164 3009 0
+1685 -2676 0
+1528 1124 0
+-158 2128 0
+2977 -1438 0
+-3133 -3279 0
+3192 944 0
+906 -3119 0
+-1374 -552 0
+3296 -1441 0
+2406 46 0
+335 -629 0
+-1822 1832 0
+-3476 1775 0
+-2480 -103 0
+-1502 -953 0
+2348 -2433 0
+1232 -3466 0
+-2936 2700 0
+2183 -3081 0
+1895 -1958 0
+3021 1537 0
+2950 1885 0
+1361 326 0
+841 2351 0
+3131 -2209 0
+-2326 -2336 0
+-1237 -1513 0
+3329 1501 0
+202 1350 0
+1178 -603 0
+2571 2745 0
+-186 1984 0
+411 2382 0
+2101 245 0
+3134 -2969 0
+1727 2311 0
+507 1581 0
+-3395 721 0
+-3111 -2377 0
+1561 -3112 0
+1553 -1208 0
+-3211 -3491 0
+-3209 -2306 0
+429 -3363 0
+1277 2619 0
+-126 -136 0
+3306 3033 0
+-3372 -3338 0
+1138 -1577 0
+2497 192 0
+-1026 -139 0
+-113 -2389 0
+1445 -2561 0
+-1348 -1307 0
+1708 -2519 0
+3484 3002 0
+-3401 1968 0
+-2645 -1102 0
+1156 -1625 0
+1243 -2658 0
+-2021 758 0
+-915 -1021 0
+-2904 701 0
+-2396 508 0
+-1281 1194 0
+1135 -596 0
+37 59 0
+-2734 -467 0
+-935 -1122 0
+3290 971 0
+2182 -2081 0
+-1873 3373 0
+1564 79 0
+-3362 -1489 0
+2894 1178 0
+764 -3381 0
+2869 48 0
+-3145 1852 0
+2689 -2902 0
+-3020 715 0
+-341 282 0
+1467 101 0
+3317 2988 0
+2923 -2278 0
+371 1450 0
+-3343 -1841 0
+233 93 0
+-517 836 0
+-1600 1060 0
+-2887 427 0
+2438 -3283 0
+2783 -652 0
+-886 -3169 0
+1902 -3260 0
+2752 -1886 0
+659 -626 0
+338 -1824 0
+-2846 -2427 0
+2165 -144 0
+-770 1101 0
+2896 2385 0
+2278 3431 0
+-1996 1299 0
+-1038 -1412 0
+-110 1100 0
+1987 -1238 0
+2235 2099 0
+2176 1161 0
+467 -2868 0
+2188 775 0
+-1116 3338 0
+497 -29 0
+-985 61 0
+-1154 122 0
+2679 2893 0
+-1919 -2925 0
+-598 -1630 0
+-1592 3469 0
+977 1361 0
+1055 -2080 0
+-2517 -1510 0
+-3438 -58 0
+-351 469 0
+4 -1154 0
+-2185 3387 0
+1688 -2983 0
+3160 638 0
+-2232 2753 0
+-1357 1417 0
+2394 -410 0
+925 1514 0
+771 -1529 0
+1952 3231 0
+-1270 2804 0
+57 -1644 0
+2659 -35 0
+-1659 -1810 0
+2926 -3297 0
+3096 -1278 0
+478 3321 0
+722 -2568 0
+-2266 2921 0
+1813 -1110 0
+1961 -1487 0
+2596 -672 0
+2014 -2371 0
+1779 -1976 0
+2956 -1185 0
+-1349 2168 0
+-2124 -2436 0
+-2653 -1408 0
+-1189 -1233 0
+2690 -2305 0
+-2373 -2814 0
+1324 2907 0
+-3086 956 0
+-845 1049 0
+-1212 3405 0
+29 -1478 0
+707 1501 0
+-1114 -1100 0
+-1480 -637 0
+-1703 -82 0
+636 -2223 0
+660 949 0
+3255 -2236 0
+-2166 1001 0
+2923 2769 0
+2807 -522 0
+782 90 0
+1203 -272 0
+-1208 3320 0
+2265 -239 0
+1621 -1802 0
+2687 -3160 0
+-1805 2645 0
+-2796 -1898 0
+-826 -2562 0
+-2158 368 0
+-1828 1733 0
+-954 2611 0
+946 2862 0
+216 -2242 0
+-1449 -3131 0
+1053 -822 0
+-15 407 0
+-2718 -2038 0
+961 1638 0
+2242 -989 0
+-1662 -3320 0
+-2872 397 0
+3447 1564 0
+-1555 -2878 0
+2269 241 0
+-558 2533 0
+2548 3433 0
+1419 -977 0
+-1272 1458 0
+-2858 1462 0
+-1881 304 0
+1911 1503 0
+-2966 2166 0
+521 -1542 0
+-1868 -859 0
+2395 -2868 0
+-2633 808 0
+-2680 1295 0
+-1795 995 0
+-1279 -884 0
+741 -767 0
+-747 -831 0
+-282 2402 0
+-25 2841 0
+2594 -1146 0
+-2418 -2833 0
+-538 -917 0
+-2825 2561 0
+1349 1327 0
+2136 1210 0
+-346 1592 0
+1880 3026 0
+-1081 -2747 0
+-3112 711 0
+-2407 -1967 0
+3426 1796 0
+-854 3369 0
+-1779 -1905 0
+1189 -2495 0
+929 -542 0
+-2692 2008 0
+-1867 2454 0
+844 -2504 0
+-1946 -2043 0
+-422 2288 0
+-2988 -825 0
+689 244 0
+1839 -126 0
+-573 -3335 0
+1350 -3213 0
+-3208 -2963 0
+3015 -953 0
+-3416 2136 0
+433 80 0
+2779 2739 0
+1108 -2148 0
+1497 620 0
+-770 1541 0
+2548 2130 0
+2508 -1999 0
+-2823 1826 0
+-95 877 0
+2228 -491 0
+-2980 1516 0
+1121 -324 0
+2467 2367 0
+2867 -77 0
+579 796 0
+2710 3157 0
+1026 2178 0
+-649 -3088 0
+-1806 -1105 0
+3239 1316 0
+-3292 -220 0
+-1179 1031 0
+-2373 1660 0
+948 886 0
+1850 1726 0
+-2231 2626 0
+2417 -3463 0
+-1658 -861 0
+1461 607 0
+1378 -898 0
+3465 1832 0
+-373 2885 0
+2280 1220 0
+2423 -1547 0
+576 -3495 0
+2788 182 0
+1936 3389 0
+2427 64 0
+3344 3302 0
+-1112 2438 0
+-296 -902 0
+-502 558 0
+-458 3310 0
+-1408 -495 0
+-781 -3157 0
+1170 2097 0
+1615 -1229 0
+-1085 2617 0
+-322 -598 0
+2467 -1901 0
+1707 2671 0
+-1702 2958 0
+-49 2188 0
+-2335 -2232 0
+2683 3174 0
+-126 -1647 0
+2309 1271 0
+3399 -700 0
+1381 1220 0
+-3035 2063 0
+-3292 803 0
+1535 2574 0
+2994 984 0
+-1038 66 0
+1374 1121 0
+-1008 2878 0
+-1690 -1970 0
+-1274 -809 0
+-1282 -3191 0
+1145 -33 0
+-1012 257 0
+-147 -1896 0
+-1659 2793 0
+-1336 1554 0
+-2766 -751 0
+555 -1605 0
+-3170 1153 0
+-60 1453 0
+-2202 -3121 0
+-2032 -369 0
+1032 2856 0
+1830 1894 0
+-933 1636 0
+703 3324 0
+-1035 1187 0
+2161 2166 0
+-848 -3211 0
+3302 3069 0
+3240 3202 0
+-3335 2666 0
+739 2254 0
+-540 -1814 0
+-3052 2669 0
+-2140 2574 0
+-3121 2366 0
+-2364 256 0
+-858 -173 0
+1552 1459 0
+139 232 0
+-2289 2254 0
+1546 -53 0
+-2757 3172 0
+1411 1799 0
+-471 -2378 0
+2011 2021 0
+1889 -2353 0
+-191 -2706 0
+1129 820 0
+2882 2859 0
+3498 1015 0
+1068 -1682 0
+1368 -2866 0
+-3109 3441 0
+1365 -25 0
+-1377 -534 0
+689 1680 0
+2225 2208 0
+69 130 0
+2535 2673 0
+2371 280 0
+-3424 -3477 0
+2514 2842 0
+2731 2895 0
+1229 -3489 0
+-2112 2175 0
+-1919 3315 0
+617 -1355 0
+-1026 1467 0
+-1856 2237 0
+-1444 1259 0
+1454 -593 0
+1727 -2635 0
+-2778 -2519 0
+114 -2149 0
+1321 217 0
+-1638 3295 0
+-3126 -862 0
+109 -1742 0
+-2773 -744 0
+-2916 -1339 0
+-1188 -3390 0
+-2690 -2032 0
+-2042 -2857 0
+-431 -173 0
+-1182 1124 0
+-3154 2853 0
+-1700 3427 0
+-3475 -3308 0
+-1621 2464 0
+1735 1321 0
+3244 455 0
+-3328 -230 0
+1661 -2300 0
+719 241 0
+-1748 33 0
+-1431 -2885 0
+-3037 363 0
+2844 -1547 0
+-2360 -2760 0
+2629 -3197 0
+-843 2103 0
+148 478 0
+2510 -117 0
+-350 -3492 0
+-1349 1158 0
+2037 -3279 0
+1207 3085 0
+2028 -1124 0
+1278 931 0
+-2069 -3319 0
+-1919 1518 0
+-2937 -2155 0
+1864 -1478 0
+2517 1297 0
+294 557 0
+163 -1691 0
+1406 2864 0
+529 1052 0
+-2618 -1215 0
+-580 -2840 0
+-3181 -2843 0
+-2072 -2420 0
+1521 1187 0
+-1156 3122 0
+-1998 -2535 0
+-1667 1473 0
+2657 -2839 0
+2556 2178 0
+2995 -933 0
+2160 -433 0
+-2828 1862 0
+996 3044 0
+467 -2020 0
+2166 2919 0
+-2679 1057 0
+936 471 0
+-1255 1998 0
+1256 93 0
+-548 1067 0
+-3437 -1036 0
+2689 -2538 0
+-3047 -2675 0
+-714 -461 0
+3465 2081 0
+2335 -1132 0
+-3007 674 0
+-3179 1597 0
+-2350 19 0
+-2188 2892 0
+-1012 460 0
+2297 3375 0
+1852 3480 0
+2532 -777 0
+-2337 2092 0
+3189 -1630 0
+2821 -76 0
+-703 -3243 0
+1533 -3439 0
+1123 -2590 0
+-1768 161 0
+181 -2837 0
+2386 1031 0
+1617 613 0
+-808 -2446 0
+155 -3224 0
+-2391 2016 0
+2976 -2988 0
+174 -2043 0
+-584 -2870 0
+2808 1545 0
+-3060 -1862 0
+-2846 1877 0
+2996 -1187 0
+-1263 1899 0
+-807 -1981 0
+-1034 1333 0
+-1903 1088 0
+-1102 2135 0
+1289 1029 0
+1303 133 0
+1005 2684 0
+1022 -3005 0
+2469 -2809 0
+-2009 -1621 0
+-1343 1621 0
+-1839 3107 0
+751 260 0
+39 2852 0
+-1713 3310 0
+-3118 -1063 0
+799 2089 0
+1012 3218 0
+-2917 -1300 0
+-1594 881 0
+-1540 -899 0
+-1533 2622 0
+2285 2479 0
+1746 489 0
+412 1851 0
+2787 -279 0
+-2906 -3458 0
+-2484 3344 0
+1978 2103 0
+992 -3255 0
+-156 1679 0
+2274 944 0
+-1246 -610 0
+-863 2736 0
+-2465 -1268 0
+-31 -1972 0
+1853 2019 0
+-1798 2620 0
+-506 -353 0
+-2967 1966 0
+592 -1245 0
+-3462 -1722 0
+3173 -375 0
+-601 1711 0
+-2920 -1797 0
+2002 -3170 0
+1715 -1787 0
+1320 -1893 0
+2827 -3365 0
+-117 1715 0
+-1076 -2992 0
+-936 -628 0
+1431 1573 0
+3341 -2439 0
+1265 -2737 0
+-977 995 0
+767 -3091 0
+2446 672 0
+3395 1697 0
+-1365 -1185 0
+1249 -2727 0
+-499 2644 0
+-2390 848 0
+-3010 170 0
+2702 1160 0
+1066 1668 0
+1995 -1789 0
+-2188 2654 0
+-2230 -1024 0
+-45 -992 0
+2048 -2302 0
+182 1834 0
+2232 -1030 0
+-1324 757 0
+-2561 3177 0
+-2019 1184 0
+-710 -3477 0
+-2376 -3189 0
+2807 -2481 0
+-961 -2370 0
+306 -2988 0
+2597 1448 0
+2789 -2906 0
+3454 -2055 0
+-2797 1417 0
+-2999 -2595 0
+-3095 1793 0
+2389 -247 0
+562 824 0
+-3479 -1316 0
+-3395 575 0
+-1311 -511 0
+1161 2279 0
+3033 -2965 0
+-2949 -3183 0
+-1920 -1032 0
+3163 2140 0
+626 2409 0
+-676 369 0
+2112 2593 0
+-2807 432 0
+-2745 -1467 0
+-1152 530 0
+-1077 2052 0
+-3416 -381 0
+646 -1062 0
+2272 3307 0
+-2309 655 0
+271 -455 0
+-982 1707 0
+-3069 -1704 0
+297 -1385 0
+-946 753 0
+1055 -2913 0
+-3245 709 0
+1619 169 0
+-2450 1404 0
+2543 -2063 0
+1847 -2757 0
+-522 -2355 0
+-2407 3059 0
+1422 -3286 0
+1691 3220 0
+1858 -1698 0
+512 737 0
+-2712 1666 0
+-3066 3201 0
+-1564 1555 0
+-1663 431 0
+-84 -751 0
+-712 1584 0
+-360 3375 0
+2882 -426 0
+-3411 -3151 0
+-3013 3064 0
+1407 -1547 0
+-2231 -2653 0
+2195 -588 0
+-375 1975 0
+-1952 -1605 0
+-2461 -3427 0
+-621 -1847 0
+-2429 -1210 0
+-2528 -3403 0
+-1234 -72 0
+-2459 -2834 0
+2831 67 0
+-3157 2616 0
+-201 -988 0
+-2120 -954 0
+-745 1382 0
+-1419 1030 0
+340 -2581 0
+1762 -2132 0
+3223 -2374 0
+369 1496 0
+-533 -1390 0
+1818 -200 0
+1006 -2334 0
+-2867 1576 0
+965 -2505 0
+2571 -318 0
+-3334 1672 0
+682 772 0
+-2151 -366 0
+-1004 -3029 0
+2148 933 0
+-1726 1220 0
+3165 -1917 0
+1360 -1028 0
+-1426 -1395 0
+-2367 -3321 0
+828 1485 0
+-752 340 0
+-2876 913 0
+-280 -293 0
+2355 2180 0
+-944 -1407 0
+2407 -976 0
+1468 2291 0
+-982 -625 0
+1288 -1133 0
+2236 -1765 0
+676 -2460 0
+-767 -3244 0
+-847 579 0
+-452 -1028 0
+2350 713 0
+92 1565 0
+-2302 2043 0
+-1242 53 0
+2365 1448 0
+152 -1342 0
+2342 -753 0
+3473 1211 0
+1597 -2154 0
+3262 -3068 0
+-2916 3101 0
+1918 2575 0
+2167 -414 0
+1713 3317 0
+-175 -3347 0
+2348 -2470 0
+2981 -2133 0
+-1342 -1306 0
+-3310 1414 0
+-561 2509 0
+-1010 1545 0
+1178 -3276 0
+1930 1499 0
+-680 -1222 0
+-1591 -2903 0
+-1554 -189 0
+-1615 -3090 0
+2089 -1402 0
+-1521 2320 0
+808 550 0
+-1718 15 0
+-2516 2557 0
+-1091 38 0
+2667 -507 0
+-1828 2956 0
+2194 14 0
+-304 -2912 0
+-930 -348 0
+-2009 -1544 0
+-1599 1631 0
+2559 -1832 0
+-1894 2507 0
+-2434 638 0
+2820 1341 0
+-2985 734 0
+-714 -3061 0
+1442 -247 0
+-1705 2229 0
+-45 2489 0
+2899 2160 0
+3458 2959 0
+-3448 -2400 0
+1553 3346 0
+714 -1489 0
+-510 -1696 0
+113 2977 0
+-984 -2095 0
+3461 2215 0
+51 -2695 0
+2474 -2930 0
+1228 -2793 0
+-2181 -597 0
+2517 -1404 0
+2716 2786 0
+-2845 582 0
+2135 2723 0
+969 2182 0
+-13 -469 0
+-886 3181 0
+542 2256 0
+2569 2187 0
+-1039 -1983 0
+2852 3189 0
+-1860 -171 0
+-828 -2772 0
+464 2080 0
+-3000 -915 0
+-2038 -3100 0
+3329 -2890 0
+-3259 1251 0
+-437 596 0
+3349 -1626 0
+3119 -1517 0
+637 -1432 0
+-1857 -178 0
+-2017 1501 0
+-1563 -2713 0
+2264 -431 0
+-1402 1498 0
+-1793 1927 0
+-520 1494 0
+-40 1292 0
+-1771 -2292 0
+1246 2132 0
+1183 -629 0
+1807 2646 0
+-2086 958 0
+-266 1790 0
+-2828 -1942 0
+2707 -1264 0
+-1203 1264 0
+347 1756 0
+-1238 -1474 0
+-3445 2751 0
+1263 -2409 0
+3092 -2315 0
+-482 1787 0
+490 -665 0
+-3105 -639 0
+-1823 1480 0
+1280 -2604 0
+-73 3254 0
+-2063 -2864 0
+2861 574 0
+-2434 -3030 0
+-1910 1114 0
+-2123 -1466 0
+-647 6 0
+-2399 -3150 0
+964 -308 0
+1565 1181 0
+-1349 768 0
+-615 -3205 0
+-492 -539 0
+-2571 3060 0
+1451 -1644 0
+-2174 -2821 0
+696 2664 0
+-2799 -3186 0
+2099 930 0
+750 1738 0
+1453 -356 0
+781 -241 0
+-2981 -2580 0
+3176 -1292 0
+1529 -2631 0
+-800 -1475 0
+-2769 -2112 0
+3038 1260 0
+2626 -1513 0
+1531 2138 0
+136 -2665 0
+-3118 -183 0
+-912 -1973 0
+1629 -1110 0
+2350 916 0
+-71 2878 0
+-290 2603 0
+-2643 2831 0
+2457 -2590 0
+-2452 3219 0
+2086 1574 0
+1638 -1112 0
+2405 2375 0
+-701 -1672 0
+-2642 -2810 0
+-2015 -1062 0
+635 -3044 0
+-2925 -2949 0
+-954 1724 0
+-206 3078 0
+-1362 1586 0
+204 -3052 0
+532 -1129 0
+1001 17 0
+-2342 1222 0
+-2323 -3276 0
+-1692 2367 0
+-834 -1007 0
+-396 758 0
+-2350 -3443 0
+2670 1927 0
+-3261 1805 0
+-1503 369 0
+196 -102 0
+-1644 -284 0
+-912 1173 0
+-383 1906 0
+2238 2113 0
+-2920 1577 0
+2482 1283 0
+-2907 -810 0
+1796 1489 0
+-3380 -2416 0
+-3064 -2099 0
+-2018 -2677 0
+2353 -2163 0
+-1828 952 0
+120 1294 0
+-386 2628 0
+3015 2120 0
+-2389 186 0
+1124 1898 0
+-2789 -398 0
+2363 3413 0
+2799 1500 0
+-3099 -2444 0
+-1397 2166 0
+-2187 -307 0
+1822 3028 0
+-2777 -2587 0
+-2500 -206 0
+-2044 2053 0
+-983 760 0
+2847 566 0
+-1274 -1655 0
+-18 -1037 0
+-2453 -1284 0
+-1990 294 0
+3355 -2352 0
+618 3241 0
+-957 2182 0
+203 1046 0
+-1980 -1436 0
+-1162 336 0
+3036 1844 0
+-1990 -2515 0
+-2637 244 0
+-2270 1355 0
+484 -29 0
+-2784 -2162 0
+-275 -3261 0
+2569 1552 0
+-1715 131 0
+2032 2049 0
+510 923 0
+2276 2505 0
+-2314 3445 0
+108 -2861 0
+-2203 1819 0
+2716 3376 0
+3265 -1134 0
+-2651 -2965 0
+1974 -2439 0
+2664 8 0
+476 3074 0
+-2058 -965 0
+1555 -2031 0
+2653 -1700 0
+-1913 -714 0
+-2515 -723 0
+565 1737 0
+-1104 1206 0
+1696 -2162 0
+3213 -1012 0
+2410 -2038 0
+-1450 480 0
+3070 926 0
+1371 3073 0
+1310 -1665 0
+-3053 494 0
+148 -1501 0
+2282 -1129 0
+2055 -2754 0
+3403 -3367 0
+-926 -1557 0
+2442 733 0
+2438 2666 0
+-1766 3239 0
+2314 1775 0
+251 -2285 0
+2568 -2310 0
+1271 1942 0
+-2969 994 0
+-1127 -2162 0
+-623 -2055 0
+985 802 0
+-3031 -893 0
+-1979 2086 0
+-1216 16 0
+3071 1183 0
+1956 -950 0
+-402 -3146 0
+938 -3412 0
+3492 -1721 0
+-3289 2803 0
+-2290 2813 0
+2284 -2491 0
+1287 -894 0
+2349 2823 0
+-1455 274 0
+-668 816 0
+897 182 0
+1649 -2452 0
+-874 444 0
+-1093 -1511 0
+-3108 -2121 0
+748 -1207 0
+412 -1096 0
+1664 -1740 0
+948 -3246 0
+-1406 -3036 0
+462 1936 0
+-2913 434 0
+2351 976 0
+-498 1802 0
+162 1990 0
+1309 886 0
+-2150 -1353 0
+2829 -2335 0
+867 1345 0
+716 2799 0
+833 -2665 0
+2456 2241 0
+363 -943 0
+-959 -428 0
+-2460 -3164 0
+-2669 1579 0
+-2769 314 0
+1202 -3051 0
+3386 -3365 0
+3182 -1460 0
+-2835 -1716 0
+-730 -3402 0
+424 1478 0
+-1564 3126 0
+2481 -816 0
+3051 -2217 0
+2582 1779 0
+-686 -2307 0
+-2140 -313 0
+2666 2559 0
+-3279 2680 0
+94 2174 0
+-2245 -2756 0
+-3357 -1233 0
+-54 1201 0
+2750 -759 0
+-529 -759 0
+1286 -2783 0
+355 -2407 0
+768 -3022 0
+571 -1309 0
+250 2864 0
+2054 1042 0
+-572 -2693 0
+-2873 -795 0
+3269 -1723 0
+2039 571 0
+-1710 2320 0
+-2370 2707 0
+-2669 -2922 0
+-2635 2525 0
+2263 -806 0
+1668 -2294 0
+1677 1559 0
+-1145 -3022 0
+2221 1635 0
+1969 208 0
+-2911 -2360 0
+-92 1751 0
+3101 -490 0
+657 -2704 0
+3299 -2548 0
+2891 298 0
+-411 -2700 0
+2772 16 0
+2537 -727 0
+260 -1483 0
+1533 1129 0
+1256 -1021 0
+-1095 1997 0
+2139 2096 0
+726 1428 0
+703 2179 0
+-319 2368 0
+1881 -438 0
+-2324 2102 0
+-1899 1133 0
+3192 -3478 0
+1923 879 0
+-3368 2645 0
+-248 -310 0
+729 -1144 0
+-3029 2523 0
+3147 1931 0
+-746 -1038 0
+2692 2267 0
+3088 263 0
+1950 26 0
+-731 2764 0
+3013 -568 0
+1988 894 0
+-714 -3180 0
+2387 1897 0
+-1733 2694 0
+308 -775 0
+2363 956 0
+1135 1053 0
+-627 3189 0
+1210 749 0
+3406 -3383 0
+1146 372 0
+-2443 699 0
+2521 1508 0
+-2273 -977 0
+-2683 -556 0
+150 2424 0
+826 -3282 0
+-102 -3025 0
+1444 626 0
+2961 -3136 0
+-2797 -3365 0
+-108 1478 0
+-2871 -2600 0
+-2276 -879 0
+-1196 -334 0
+-326 2544 0
+3254 2155 0
+993 1196 0
+2934 -1859 0
+1902 -2331 0
+-1869 -793 0
+2954 -246 0
+-2333 1945 0
+-437 -927 0
+658 -2905 0
+-1372 -1939 0
+1661 346 0
+134 1336 0
+-608 2647 0
+-301 -709 0
+-3472 -1792 0
+143 598 0
+2300 2450 0
+-604 976 0
+1186 2328 0
+-499 3321 0
+2292 1166 0
+-1859 1726 0
+1029 2238 0
+-2736 -1971 0
+2839 1707 0
+-1807 -2206 0
+505 811 0
+-1196 -2109 0
+-3099 -2580 0
+1649 3288 0
+823 349 0
+-1361 1594 0
+-3238 -640 0
+2483 1037 0
+-379 -489 0
+-2480 1562 0
+2372 -35 0
+-1447 -3198 0
+1848 2328 0
+-2364 -406 0
+222 -146 0
+391 2190 0
+3030 2343 0
+-1776 586 0
+1046 1167 0
+443 1263 0
+-910 -1998 0
+512 1875 0
+-3448 3437 0
+3203 -1107 0
+-1305 1240 0
+-353 227 0
+-2446 391 0
+-2257 1679 0
+1743 2941 0
+2579 2988 0
+-3336 2865 0
+1550 -2269 0
+421 -2434 0
+-1834 2172 0
+-553 169 0
+716 -2477 0
+2024 1213 0
+-3232 -129 0
+124 -2605 0
+-3465 -1028 0
+1382 -1158 0
+2622 495 0
+-2393 2485 0
+2511 -2066 0
+3378 2135 0
+-479 -2677 0
+-1756 -2276 0
+3155 -2105 0
+-3265 752 0
+3092 2062 0
+1910 -1591 0
+-2507 -1954 0
+3435 1993 0
+-2852 -1015 0
+-2950 2827 0
+-3093 140 0
+1193 -1744 0
+2138 -2768 0
+-1350 1468 0
+-1014 -2740 0
+-509 1361 0
+2402 967 0
+2165 955 0
+-1724 1115 0
+1986 -200 0
+3162 1170 0
+325 -1369 0
+2558 2287 0
+-1841 -2926 0
+-2523 2593 0
+-686 2945 0
+-1142 -1825 0
+3417 250 0
+1492 -590 0
+-557 3155 0
+2566 -2681 0
+2089 1649 0
+2499 2300 0
+-789 -2093 0
+2303 -1557 0
+2442 -1797 0
+3226 2250 0
+-845 -3397 0
+-345 -817 0
+1183 46 0
+3207 3364 0
+588 -2426 0
+-2374 -1609 0
+2289 -1749 0
+2291 2297 0
+-2402 -3046 0
+1270 1680 0
+-2827 -2632 0
+569 -3029 0
+-952 -546 0
+-2435 1140 0
+-2060 3237 0
+-3386 -486 0
+726 -1532 0
+-392 -946 0
+1436 2252 0
+-2573 -3160 0
+-233 -3349 0
+2360 -391 0
+376 -1769 0
+2161 2547 0
+-2285 1381 0
+-290 -2395 0
+-2405 -229 0
+2927 -1502 0
+93 2328 0
+-2337 -3371 0
+-2846 2973 0
+-394 -893 0
+2598 1854 0
+-1101 1113 0
+1896 -1483 0
+1228 982 0
+-833 -273 0
+2527 -2381 0
+-1783 3379 0
+-372 1354 0
+3046 2357 0
+457 651 0
+1310 -174 0
+1617 358 0
+-964 -2118 0
+774 1863 0
+-2852 -1234 0
+-2514 2693 0
+2295 -2705 0
+-1519 1602 0
+-1989 -1866 0
+2930 -2554 0
+-2855 -383 0
+2171 -2685 0
+487 1245 0
+3005 1558 0
+1987 1051 0
+-617 2835 0
+927 -2710 0
+-3424 -749 0
+-2935 2906 0
+3376 -3127 0
+-2508 -3362 0
+-1309 313 0
+2181 -3301 0
+-515 -1902 0
+-335 -1798 0
+2875 -3037 0
+177 -414 0
+-1032 414 0
+912 2052 0
+1694 2016 0
+227 3172 0
+-952 2182 0
+2684 -1545 0
+-3025 867 0
+23 3253 0
+1322 1094 0
+-441 -953 0
+2010 2508 0
+1285 2976 0
+-252 -23 0
+-2137 1494 0
+-2648 1361 0
+142 224 0
+-1279 -196 0
+962 353 0
+-617 -1707 0
+1540 638 0
+2841 -1227 0
+-2226 3137 0
+1581 -544 0
+2111 -3185 0
+2084 1608 0
+-1029 -2517 0
+1321 47 0
+1907 -1150 0
+-1343 -2723 0
+-1597 -1443 0
+-3357 1400 0
+-2753 -1856 0
+-965 882 0
+-1923 -138 0
+622 -2602 0
+868 275 0
+2628 2279 0
+-1857 402 0
+-2207 -180 0
+-2886 -2794 0
+1997 -2343 0
+74 -161 0
+2665 -3224 0
+-3014 -2243 0
+-2995 2865 0
+1242 3064 0
+-1568 -1407 0
+-1778 1303 0
+876 -694 0
+2626 -1644 0
+116 1822 0
+-1365 -1770 0
+-1586 2211 0
+-901 2776 0
+-1518 -3421 0
+1382 69 0
+-1368 -3206 0
+-1616 -2283 0
+2716 -1361 0
+1169 1439 0
+-765 -2081 0
+1923 633 0
+-2038 3235 0
+-1775 2177 0
+-565 -135 0
+-3230 -413 0
+-3021 3025 0
+1403 3442 0
+-1112 -332 0
+-3379 -2974 0
+-1516 1837 0
+-2511 -2933 0
+-2394 1757 0
+-1983 -1069 0
+-441 -2191 0
+-1557 510 0
+655 2203 0
+1805 -2451 0
+-884 -3111 0
+1299 -2970 0
+-2109 2315 0
+3395 2093 0
+-477 2179 0
+2916 -1202 0
+-30 604 0
+-1580 -1654 0
+-341 2358 0
+-307 1831 0
+-3054 -3006 0
+529 3284 0
+2382 3038 0
+1152 -1868 0
+643 -3015 0
+-2026 -1186 0
+-2433 -505 0
+1871 1654 0
+2980 -873 0
+-2758 -1014 0
+2619 3436 0
+1291 1451 0
+-775 -656 0
+2134 1665 0
+-1885 -304 0
+1004 -1681 0
+-3116 492 0
+-3210 -512 0
+-2058 2599 0
+-2251 -1782 0
+1514 2324 0
+779 -1213 0
+-2657 2920 0
+3474 643 0
+-153 1962 0
+2640 -2190 0
+-2921 1045 0
+-1837 1195 0
+-1764 3498 0
+506 1706 0
+2726 3322 0
+2224 -2289 0
+-1599 -2238 0
+-3224 -1936 0
+-2215 815 0
+2307 -402 0
+2027 3113 0
+-1608 -2195 0
+-2443 -33 0
+2481 -42 0
+3072 -1318 0
+-3207 1938 0
+2734 2472 0
+-1261 2111 0
+-3272 2320 0
+-3041 -2213 0
+3030 -3149 0
+-1067 2589 0
+-1970 -3432 0
+-160 -97 0
+-1122 934 0
+-1941 2170 0
+1268 -3091 0
+-2004 -2791 0
+-549 -44 0
+-2129 2253 0
+3039 -2274 0
+-555 -2592 0
+-1439 -559 0
+-3071 1592 0
+218 -1646 0
+2986 254 0
+3375 1650 0
+-2930 2602 0
+2587 2168 0
+-246 1318 0
+-1285 -1564 0
+1103 1693 0
+-837 41 0
+-774 -356 0
+-592 2652 0
+2408 2490 0
+-3129 1136 0
+2417 -1559 0
+-828 -1057 0
+2776 3251 0
+2588 434 0
+86 510 0
+2795 -699 0
+-1415 -3196 0
+846 -918 0
+-3284 -3463 0
+2099 -2543 0
+-269 -1487 0
+-2084 2717 0
+2709 2847 0
+2888 205 0
+-3233 1846 0
+733 340 0
+-1740 -1128 0
+-1322 1712 0
+-2463 -946 0
+-1618 -3216 0
+-3389 -2830 0
+2607 -78 0
+-2935 2918 0
+1187 -684 0
+61 3264 0
+1981 -2973 0
+1174 -1991 0
+-580 -117 0
+-768 3244 0
+2481 -2214 0
+1744 2083 0
+1389 -2357 0
+1078 2831 0
+96 -502 0
+2721 -560 0
+698 268 0
+-123 -1340 0
+-3331 -1020 0
+1686 -1005 0
+-2369 1023 0
+-1981 3003 0
+2657 -3345 0
+2496 -1677 0
+-1081 1159 0
+-1954 308 0
+-2553 -3360 0
+-929 -312 0
+724 -3242 0
+1688 -1281 0
+-2750 2721 0
+1530 -1439 0
+-2841 315 0
+1597 -3080 0
+-1949 -1387 0
+-302 2675 0
+-3033 230 0
+-1661 2064 0
+2636 -2656 0
+2182 3275 0
+3192 -2817 0
+711 -1937 0
+-1834 2036 0
+-1522 -3161 0
+126 2274 0
+1401 2697 0
+2123 -1201 0
+-2447 -2326 0
+-1064 3426 0
+537 -932 0
+1685 -1006 0
+-678 760 0
+-557 2591 0
+371 2494 0
+140 -3297 0
+-1168 -1224 0
+264 505 0
+-3011 -3171 0
+904 901 0
+1342 2385 0
+1194 356 0
+3262 -558 0
+-3043 2488 0
+-2476 -2941 0
+-1359 39 0
+-1381 -2064 0
+-384 366 0
+1125 124 0
+725 -384 0
+3329 -388 0
+1296 -81 0
+-3086 -3010 0
+-2966 1814 0
+-2756 3131 0
+-3342 1365 0
+2746 -3286 0
+-1968 -457 0
+1110 1167 0
+219 2676 0
+-769 749 0
+-1733 1080 0
+2939 628 0
+-706 246 0
+-3481 3422 0
+200 245 0
+1222 215 0
+2659 1244 0
+1575 -161 0
+1054 -795 0
+-1951 3272 0
+3415 2609 0
+49 -1844 0
+2907 1557 0
+3500 -2068 0
+1161 2586 0
+1804 -2542 0
+-486 -3350 0
+1258 -1594 0
+-3139 -1067 0
+3231 -3434 0
+1498 -3265 0
+-3262 657 0
+1644 158 0
+2487 -2805 0
+2535 1909 0
+-2275 1464 0
+704 1599 0
+-1940 3072 0
+3024 -1435 0
+1168 -208 0
+1832 2758 0
+3065 291 0
+-1216 2391 0
+-2202 -1902 0
+-2884 3340 0
+-1533 1260 0
+2247 -342 0
+1286 2725 0
+-915 -436 0
+545 2578 0
+-2926 1749 0
+-1823 -1033 0
+150 -2529 0
+284 -2738 0
+2984 2445 0
+128 386 0
+-153 1521 0
+1547 2456 0
+-2067 -2600 0
+-854 1595 0
+-1006 -2686 0
+912 319 0
+1502 1164 0
+-933 -2672 0
+2369 -1782 0
+1291 1388 0
+1441 -246 0
+620 -3298 0
+2464 -2913 0
+-906 271 0
+-2495 537 0
+2982 1013 0
+401 -2267 0
+-30 1549 0
+641 265 0
+-135 2884 0
+-2544 -2474 0
+2028 2356 0
+-677 951 0
+-2601 2010 0
+1257 -1194 0
+930 2757 0
+-1037 2829 0
+-3082 269 0
+1009 2075 0
+-1985 560 0
+323 2821 0
+3473 2425 0
+2105 2515 0
+-2860 1104 0
+-1292 1567 0
+2645 2999 0
+1078 -3191 0
+2503 -2224 0
+1760 -2248 0
+-2874 -2961 0
+1290 1013 0
+-247 -1045 0
+2549 -2411 0
+948 -1848 0
+-3482 -1587 0
+1788 -1808 0
+-1855 -1780 0
+-1727 -2707 0
+-3217 -165 0
+2335 -1500 0
+322 3076 0
+-2319 -3294 0
+2960 -1284 0
+1691 1295 0
+146 -1274 0
+-815 1387 0
+698 -494 0
+2761 915 0
+-2403 -850 0
+-1913 22 0
+2023 -2620 0
+-896 -260 0
+-3489 2913 0
+2013 -1334 0
+2351 2243 0
+-320 -1192 0
+146 -445 0
+-2685 -3430 0
+-1772 -1421 0
+2964 209 0
+3214 -255 0
+-421 936 0
+-3416 882 0
+2835 2959 0
+615 -1538 0
+-370 -1007 0
+-517 1308 0
+-608 -2932 0
+-1137 2047 0
+-1276 827 0
+2660 1427 0
+282 1474 0
+788 696 0
+979 -3298 0
+-630 -1475 0
+2621 1558 0
+-593 -1813 0
+-3086 3059 0
+-848 739 0
+1871 2026 0
+1724 -315 0
+-923 698 0
+1218 -2790 0
+3079 -595 0
+-951 -2040 0
+1548 2781 0
+-2585 -25 0
+2233 113 0
+-1272 3158 0
+540 247 0
+2528 2095 0
+382 -2279 0
+-1598 1868 0
+-2417 -2040 0
+1168 -2456 0
+-615 356 0
+-2995 580 0
+369 -1790 0
+361 1503 0
+3074 -2075 0
+-1100 -816 0
+1590 1517 0
+-1420 -2658 0
+-3040 -421 0
+-3028 -2568 0
+-1826 2793 0
+-1242 2929 0
+1077 -1987 0
+-1945 2192 0
+-2157 -2792 0
+-681 2112 0
+1464 -2755 0
+-31 888 0
+-2680 543 0
+-976 1238 0
+1474 729 0
+-2526 3452 0
+-3129 1259 0
+1194 -531 0
+-2402 -148 0
+1607 -789 0
+-1215 1208 0
+1302 -744 0
+-2169 -2693 0
+-892 -2376 0
+1888 -831 0
+-5 2237 0
+1145 1339 0
+3419 39 0
+-3458 3325 0
+192 -535 0
+2040 54 0
+-2371 -3452 0
+-2565 338 0
+-2142 -1476 0
+-1459 2539 0
+-1440 -2512 0
+-324 -2657 0
+-2904 -2875 0
+2918 -875 0
+-1858 2546 0
+-1608 3492 0
+-1958 -37 0
+-780 1295 0
+-1652 117 0
+-2643 2490 0
+-2465 -3490 0
+-1292 171 0
+-1690 572 0
+2100 47 0
+-2030 474 0
+2658 -1529 0
+2075 -2785 0
+-919 -3263 0
+138 1767 0
+616 1078 0
+-1153 2103 0
+-2212 -309 0
+2232 -50 0
+2552 -2200 0
+-3224 2343 0
+-3258 -527 0
+-1858 1323 0
+-729 1278 0
+-550 1634 0
+-2029 -3 0
+-2726 2150 0
+1631 2903 0
+2333 1998 0
+-352 1985 0
+1316 -1182 0
+-2208 427 0
+2340 -2019 0
+502 1629 0
+2074 -1504 0
+1128 -1559 0
+2651 2051 0
+2580 -1711 0
+-341 2441 0
+1853 -1806 0
+-1427 -1561 0
+2345 -1655 0
+3469 1123 0
+563 1057 0
+-2738 2716 0
+-141 2213 0
+319 -3030 0
+-519 2863 0
+-1660 373 0
+613 1423 0
+1685 1678 0
+-1727 -1962 0
+-2341 2781 0
+2103 -2963 0
+-2645 1092 0
+-328 -1609 0
+-1377 -2492 0
+-509 2571 0
+2959 941 0
+3482 2150 0
+579 1303 0
+-2923 -1602 0
+-3258 -1732 0
+3146 2073 0
+1822 3012 0
+1478 -1024 0
+-2831 2122 0
+-1367 -1634 0
+-2201 -1125 0
+201 -190 0
+1918 44 0
+-1761 -2586 0
+-3179 -2413 0
+-681 -2092 0
+1901 2822 0
+1484 1711 0
+391 -1807 0
+-2062 550 0
+418 -2044 0
+-2708 -2261 0
+-3227 43 0
+1110 -417 0
+-2848 -2777 0
+-694 1016 0
+324 1676 0
+1319 -2865 0
+-2817 414 0
+2537 912 0
+-347 2670 0
+3089 966 0
+-2825 3269 0
+1229 -1103 0
+107 437 0
+1502 -3162 0
+1209 -2843 0
+2749 2507 0
+1209 1051 0
+-1263 3234 0
+2258 606 0
+-287 -1539 0
+985 1819 0
+-1776 -3304 0
+1555 -3228 0
+2901 -399 0
+-411 -1407 0
+3465 2261 0
+-642 2209 0
+-1073 1321 0
+-2221 1044 0
+-1119 -3481 0
+3494 -3476 0
+1943 4 0
+-1823 527 0
+2550 -510 0
+2154 -619 0
+2964 -1784 0
+-1578 -2181 0
+174 -1869 0
+-1869 3062 0
+2218 2666 0
+-975 2328 0
+-2480 3216 0
+2054 -859 0
+-2275 3202 0
+-1969 -3048 0
+545 2309 0
+-3261 2725 0
+1435 -2518 0
+-1582 2434 0
+682 -1694 0
+-2485 -753 0
+-1694 -1611 0
+2338 2303 0
+2575 -1795 0
+2981 -813 0
+2910 -3325 0
+1176 1553 0
+-908 -1093 0
+2298 -1151 0
+-2301 -653 0
+421 520 0
+-566 1830 0
+-3335 -961 0
+-2474 235 0
+-3043 2006 0
+1532 343 0
+-1444 -820 0
+-756 -1382 0
+-927 671 0
+-717 -1538 0
+-1644 -3294 0
+3283 765 0
+1815 -3276 0
+-2369 -175 0
+-1612 557 0
+2467 43 0
+-340 -1385 0
+3214 1607 0
+1921 -1973 0
+1428 -1029 0
+-2009 3088 0
+-923 1189 0
+757 -1402 0
+183 -3116 0
+-2157 -1578 0
+423 3228 0
+1084 546 0
+-938 -2253 0
+-2378 -323 0
+-1602 -2334 0
+3257 2082 0
+-1679 -461 0
+2698 -2207 0
+-1723 -1962 0
+-134 -1818 0
+-582 517 0
+2410 -2759 0
+-2351 -2870 0
+-1828 -2046 0
+3149 -342 0
+1046 -1965 0
+982 2075 0
+-2934 -2187 0
+963 -2974 0
+-43 384 0
+-325 -1000 0
+1204 2158 0
+2052 -3197 0
+1548 -2366 0
+2088 145 0
+-1333 1536 0
+1535 2167 0
+3242 471 0
+2303 2217 0
+1016 858 0
+3375 -2665 0
+2216 -452 0
+2470 2325 0
+2927 2598 0
+1370 -2539 0
+314 1176 0
+-980 -2622 0
+-768 -1563 0
+-534 -2064 0
+-2257 -52 0
+-3111 1529 0
+-2737 -3499 0
+-1890 1716 0
+2046 1319 0
+2785 1520 0
+-420 693 0
+310 -203 0
+-1771 293 0
+2631 -419 0
+2447 -2473 0
+2955 -3040 0
+-80 -1025 0
+-1300 -2916 0
+-2127 2673 0
+-2865 1503 0
+-3130 2517 0
+116 -627 0
+-3353 3400 0
+-287 807 0
+-298 3230 0
+-876 3317 0
+2753 -1939 0
+-1865 3252 0
+-1736 -254 0
+1704 914 0
+-479 862 0
+252 -1131 0
+3500 2147 0
+5 378 0
+-953 1375 0
+-2258 811 0
+3395 2344 0
+-1945 3154 0
+-570 -3188 0
+-2184 -1370 0
+-1678 -3058 0
+-1980 -941 0
+2251 -2249 0
+-3443 1501 0
+625 -1435 0
+-101 1492 0
+1604 1491 0
+-1997 -2470 0
+-2877 -1858 0
+1962 -789 0
+-1614 1721 0
+2598 -1393 0
+-65 2290 0
+416 -836 0
+1460 2307 0
+-1687 131 0
+3304 -2420 0
+-1287 -2478 0
+2745 956 0
+-420 -1564 0
+-1676 650 0
+634 -611 0
+-311 -2050 0
+-694 3060 0
+-668 -2262 0
+-1687 1354 0
+-1938 2773 0
+-1158 2842 0
+-1189 -1425 0
+-1476 416 0
+-1453 283 0
+-1145 -2642 0
+1822 -266 0
+-2643 939 0
+428 3438 0
+1048 918 0
+2771 559 0
+-878 2533 0
+3439 -976 0
+-2658 2895 0
+1521 986 0
+1280 1743 0
+2136 3293 0
+960 -1918 0
+3054 976 0
+-3450 2762 0
+2822 -971 0
+-355 2958 0
+27 2539 0
+2367 -3015 0
+-2462 -684 0
+-18 150 0
+1578 -3 0
+1132 -1415 0
+-3001 -2433 0
+-2752 -1731 0
+-2333 -584 0
+-1550 -2201 0
+-2906 431 0
+-1986 2495 0
+-1705 -1590 0
+-1761 -3290 0
+1891 -1117 0
+-611 419 0
+116 -642 0
+1101 2177 0
+-2226 3429 0
+-3188 -774 0
+1420 -728 0
+1869 942 0
+2738 -1400 0
+-1406 -2792 0
+-2821 -3187 0
+2776 928 0
+971 -2212 0
+3280 2049 0
+-1850 880 0
+-3293 476 0
+-380 2380 0
+-193 3306 0
+-1605 -3435 0
+-1356 -2381 0
+-1719 -2984 0
+578 -2699 0
+-809 -2645 0
+-1900 3132 0
+1494 -564 0
+182 1200 0
+-3362 -2666 0
+-1997 44 0
+2639 -1714 0
+-1059 -2144 0
+990 2469 0
+-907 1668 0
+-612 587 0
+-2600 2580 0
+2921 -178 0
+-3292 1632 0
+-3248 -2147 0
+758 2674 0
+-2078 -1136 0
+-244 -1885 0
+-1534 -1649 0
+757 3094 0
+2473 1594 0
+3493 1193 0
+-3072 547 0
+-629 -2075 0
+-1364 -2191 0
+-2514 -2462 0
+-3047 1180 0
+-1337 481 0
+-545 2572 0
+1800 277 0
+-104 -1699 0
+-544 -3440 0
+3485 -14 0
+2705 3045 0
+3084 2554 0
+1498 1230 0
+1608 2579 0
+566 1278 0
+-180 -1403 0
+3250 2630 0
+3472 2232 0
+-1618 -1427 0
+2500 2122 0
+15 -2539 0
+152 -1529 0
+-974 -1388 0
+2282 1876 0
+-632 -1766 0
+-148 -3279 0
+2273 -2967 0
+1686 1770 0
+-1440 3322 0
+2426 -2309 0
+656 1053 0
+2986 -1470 0
+433 -720 0
+231 -2347 0
+-1703 -276 0
+-3402 -1587 0
+-2853 -2933 0
+-2758 -1678 0
+1938 -2851 0
+-2158 1540 0
+-555 3172 0
+-2757 -3289 0
+-331 846 0
+2109 1574 0
+-341 3240 0
+-2747 -3012 0
+647 -2607 0
+3183 1895 0
+2906 1023 0
+-84 -3120 0
+876 647 0
+-2899 -946 0
+-3225 -2837 0
+2102 -155 0
+1210 -2053 0
+3409 1129 0
+-2014 -1475 0
+-2963 2512 0
+1561 3322 0
+1878 697 0
+-1451 -574 0
+2381 -2801 0
+3490 -982 0
+-1802 -2712 0
+-761 2413 0
+1781 -561 0
+1082 799 -1149 0
+-1062 -1529 2652 0
+2363 500 3306 0
+2250 -91 1922 0
+2147 1075 -2259 0
+-268 -2018 2800 0
+-2562 -2265 1995 0
+999 3369 -3209 0
+-2979 1282 -3420 0
+-422 538 2493 0
+3131 -2637 326 0
+1314 2297 -3477 0
+1496 -1649 -2473 0
+-1039 3316 1521 0
+-2025 1801 -3438 0
+-1859 -52 -1217 0
+-2931 3263 2609 0
+2518 -714 1969 0
+-2024 1639 1828 0
+1574 -1601 -2914 0
+-666 1107 2267 0
+1095 1354 3424 0
+-596 1067 -3108 0
+-997 2541 3470 0
+-2295 1220 1417 0
+1934 -1906 2801 0
+1864 2368 1252 0
+-179 -1232 -3158 0
+780 2470 3290 0
+689 -483 -2479 0
+2542 -482 -452 0
+-1619 177 2032 0
+2777 -3275 3456 0
+-1348 86 556 0
+-2757 1958 3153 0
+1639 1848 3142 0
+-1903 -1115 1746 0
+7 1857 -1532 0
+2713 2548 -3197 0
+-2673 848 -2193 0
+-2067 -2696 -2452 0
+-2714 97 2934 0
+3475 -2865 -2721 0
+144 275 1231 0
+2296 2425 -1534 0
+144 -1449 -515 0
+1676 -1256 57 0
+-114 -128 -1862 0
+-374 -1281 -1198 0
+-619 -2915 -3136 0
+661 1049 -2618 0
+-2510 1292 2564 0
+953 -1379 2156 0
+429 1747 3177 0
+-721 -2937 3339 0
+1084 2352 -2608 0
+-196 2262 1881 0
+2836 503 414 0
+455 -1688 2552 0
+-1645 -1660 -3408 0
+-155 1997 -3125 0
+-475 -2721 1308 0
+562 435 1356 0
+223 -1691 512 0
+3275 514 3238 0
+-2933 1414 -2399 0
+-2533 -858 2110 0
+2854 -2808 236 0
+-637 2474 -2369 0
+-3068 1641 -78 0
+504 1271 -939 0
+-2955 3042 -1724 0
+-2478 822 866 0
+-2448 1516 329 0
+906 2528 -3479 0
+-425 -2115 2400 0
+-1864 -3024 -2167 0
+-3056 2326 2928 0
+-1435 1194 -3296 0
+3336 -1419 -3246 0
+1469 1879 -1865 0
+-3136 -2632 1634 0
+-408 2442 -1567 0
+-2424 -244 2452 0
+-1640 -739 -1151 0
+955 655 2702 0
+111 -2748 -1497 0
+-541 -2070 -1137 0
+-1350 3138 -178 0
+-1631 -877 1374 0
+-2854 1146 -1661 0
+2528 -2684 1015 0
+-2656 -2585 1036 0
+1361 281 479 0
+-3088 -2275 -979 0
+-2491 -2476 340 0
+482 2409 -1142 0
+346 1477 -1522 0
+-3150 1398 381 0
+389 -485 433 0
+2811 1795 -3058 0
+2424 -1502 3205 0
+1254 -2941 -2979 0
+-1743 -346 -2559 0
+1516 695 2110 0
+-3464 550 -3207 0
+-394 147 -3462 0
+-1039 -3400 -447 0
+1442 2007 -1830 0
+2514 512 -1846 0
+835 542 -68 0
+-1491 2379 2356 0
+1488 56 373 0
+766 2692 102 0
+337 -866 2323 0
+-3469 -1020 -1042 0
+-758 -1548 670 0
+1977 -297 45 0
+2535 -2484 83 0
+2747 1700 -1267 0
+-2822 180 -1745 0
+-1429 255 2139 0
+3380 -3081 -2647 0
+846 -436 3407 0
+-2416 937 -2764 0
+-1138 -3439 -2428 0
+2539 686 3333 0
+217 -3439 -3388 0
+-2923 767 -564 0
+377 3326 93 0
+16 1176 2548 0
+-1637 -459 879 0
+-1647 3 -892 0
+671 -624 -173 0
+-2110 665 1862 0
+-1025 1988 -1831 0
+2303 2621 -2290 0
+3053 1094 -2022 0
+2945 2301 629 0
+-1254 3023 1174 0
+2675 3261 899 0
+2197 -1559 -2463 0
+1317 785 1570 0
+-896 -1998 -1081 0
+2169 1865 752 0
+3075 1736 -1089 0
+-927 -2336 -1103 0
+2834 -3313 -1329 0
+2924 2395 1919 0
+-547 2309 2278 0
+-1949 2987 1187 0
+2819 -362 -1098 0
+-2952 384 -549 0
+-645 -436 1394 0
+-3015 2942 -851 0
+-1384 71 2983 0
+-1447 -3370 456 0
+3272 -1399 -2670 0
+1867 -1921 2855 0
+-1157 1754 692 0
+2317 1903 -2946 0
+-146 -187 -2699 0
+-983 -549 2626 0
+-829 -3034 3294 0
+-2563 -1256 1548 0
+3420 -522 -2752 0
+-3208 -858 2912 0
+-537 2527 2777 0
+-804 2644 2855 0
+2724 -3387 -2733 0
+2426 1798 974 0
+2915 -446 -576 0
+-329 -253 -2197 0
+-1008 -3134 3336 0
+2588 905 -3039 0
+407 -2789 1412 0
+3254 943 -1099 0
+-58 2631 783 0
+3339 -828 1941 0
+1960 3223 2 0
+-3001 1225 -2613 0
+2551 -3463 2566 0
+1512 2488 -2932 0
+-1971 1561 -2243 0
+-3461 -1030 66 0
+-2445 1440 1855 0
+-2805 2919 899 0
+-328 1106 3053 0
+2585 -3308 -821 0
+-646 -2752 -465 0
+-2706 -2384 3078 0
+1198 -1644 1650 0
+-2601 1452 -1293 0
+-744 2527 -1023 0
+2602 -628 3343 0
+-1172 501 -3195 0
+794 2462 1509 0
+1479 2589 -816 0
+-433 758 2111 0
+2805 3448 -3067 0
+-1024 2340 793 0
+1604 2926 524 0
+-1177 1544 -1431 0
+646 -418 1323 0
+3184 -241 -560 0
+2922 -545 3109 0
+-296 2923 -1777 0
+-656 -1948 3219 0
+1059 1741 -1768 0
+504 -191 -1082 0
+551 -2333 -2265 0
+-2432 3153 -2282 0
+-1801 883 1637 0
+126 965 671 0
+1430 -683 1919 0
+2370 2268 -65 0
+-3143 -93 -852 0
+-725 -1811 -2900 0
+2208 -2642 -1392 0
+2404 987 941 0
+-1351 1876 -1013 0
+-1151 937 3451 0
+-116 940 2283 0
+-1874 3365 -663 0
+828 578 2653 0
+1221 -1329 621 0
+1537 -2996 3014 0
+-762 122 1556 0
+2041 -3395 -945 0
+-3162 123 88 0
+-1757 -3278 -904 0
+-1925 2169 -1414 0
+-868 -1311 377 0
+3394 -2796 823 0
+344 2013 722 0
+3241 3408 -2062 0
+3417 3252 -1908 0
+-267 3341 264 0
+945 -2635 -3444 0
+480 -440 -754 0
+1092 -139 12 0
+1810 -2688 2013 0
+2726 370 358 0
+2784 789 1542 0
+-1874 1020 1014 0
+-3475 2267 3104 0
+-2315 2207 -2975 0
+2597 2999 -1267 0
+-98 -1157 -2468 0
+1620 -1219 3156 0
+-912 -837 3244 0
+-1957 1854 60 0
+-1382 28 2122 0
+-735 -1844 -3107 0
+1089 1653 -365 0
+-1040 -938 -955 0
+2317 2740 -74 0
+1998 -1955 -2334 0
+3319 -2797 1461 0
+-2474 128 1357 0
+-1934 1769 -772 0
+-52 2134 -258 0
+-2090 162 781 0
+1122 -2065 2262 0
+2820 2574 -1861 0
+-3441 -2827 3165 0
+-933 -3187 2507 0
+1774 -2200 1642 0
+930 -79 3180 0
+3019 -75 1948 0
+-2523 2229 -98 0
+-1948 -1609 -596 0
+1579 1712 -804 0
+3258 2616 -1228 0
+2176 -1295 2839 0
+-686 -1631 -210 0
+-1307 -2757 -291 0
+-31 -2221 2146 0
+1595 -1258 -1740 0
+-3006 3231 -2666 0
+-543 -929 -2765 0
+401 3296 3486 0
+3010 -1954 -1758 0
+-1255 -2504 564 0
+1496 1159 -870 0
+-295 175 -86 0
+-2362 11 -144 0
+-2243 13 -1384 0
+1296 1623 -1649 0
+1042 -2255 870 0
+-2524 -1036 -2388 0
+-2138 1608 3406 0
+-2144 1404 2844 0
+427 1924 -938 0
+-735 -3217 -679 0
+-2614 1751 2400 0
+-1271 1887 3185 0
+1129 441 -485 0
+1819 424 -2960 0
+-315 -3341 -3184 0
+-619 221 -2446 0
+-3008 158 -3094 0
+3187 1672 3254 0
+-3411 3067 1815 0
+1696 -2721 2161 0
+2055 1202 -1649 0
+-1396 364 -2551 0
+-1396 -680 -2364 0
+1723 -2006 2608 0
+-315 2449 2339 0
+-1940 389 -3169 0
+-3288 -3194 -2618 0
+109 980 80 0
+1221 2117 3091 0
+46 -2027 2941 0
+-104 -1759 -1022 0
+2530 2491 -961 0
+966 2121 -1857 0
+1789 -502 -2804 0
+1630 -3497 1844 0
+1022 818 -2440 0
+707 -2649 -192 0
+1306 1179 3103 0
+-2126 2613 1798 0
+-2719 -1266 84 0
+-2153 -1557 386 0
+-1310 -1964 790 0
+-568 3313 -2022 0
+1281 807 3274 0
+2310 2532 1707 0
+-3185 -221 -3331 0
+-1736 1700 1599 0
+-2355 -1085 -412 0
+-1582 253 2086 0
+-1492 -2518 970 0
+3138 -1085 1894 0
+466 -2055 329 0
+-1155 -2319 1349 0
+1846 -923 1818 0
+2124 -403 332 0
+-1867 -2026 -3329 0
+-366 548 -2460 0
+2573 -59 -2354 0
+-622 837 2798 0
+1052 -2462 2563 0
+-2826 2763 381 0
+-1770 2885 3167 0
+3194 -1958 -131 0
+-1160 1511 2297 0
+1149 2229 1302 0
+-2904 -2221 -1979 0
+1258 -3349 2566 0
+-2486 -1755 -2013 0
+-1755 2638 1667 0
+-573 -1283 -2926 0
+593 -3212 -996 0
+-1916 -1939 -2895 0
+-1279 -3264 2824 0
+1418 -1448 844 0
+1989 -2430 -718 0
+2355 684 -625 0
+256 432 803 0
+-3199 -1707 -1614 0
+1239 -2109 -85 0
+-2300 -869 -1844 0
+-3084 -2897 -2764 0
+1947 2561 -1714 0
+-2205 -1945 874 0
+1442 -3089 -1298 0
+3002 1746 -1327 0
+-1957 -787 1177 0
+-1374 -3070 -2002 0
+298 2695 -1118 0
+2300 2181 2609 0
+1561 76 2481 0
+3396 -2312 2291 0
+-733 3112 598 0
+-1586 -2319 3137 0
+-849 -2495 -324 0
+-3007 215 1691 0
+983 -132 -2268 0
+-3282 2587 3302 0
+1005 580 -2168 0
+3260 2153 2544 0
+-358 861 1632 0
+-3267 636 2408 0
+2321 -2403 1582 0
+1091 92 -2410 0
+1887 1775 -923 0
+-3015 2869 -1852 0
+2926 -114 1518 0
+2964 1210 -1745 0
+-571 1877 -1006 0
+-2921 -2955 -3431 0
+2014 1658 -3321 0
+2382 -1628 2807 0
+-1517 -3483 -636 0
+2017 1063 1868 0
+1180 1460 -2484 0
+1011 -836 2380 0
+2678 3403 257 0
+450 1478 999 0
+-2159 -3319 -3409 0
+-1790 -2974 -1722 0
+-1140 -2954 -1901 0
+2632 3094 -1883 0
+-1742 -1623 2764 0
+-1833 2137 1145 0
+3336 -3132 -2682 0
+-1267 586 2296 0
+2554 -63 461 0
+-1999 778 -1922 0
+-2743 1464 -1904 0
+-3423 2042 1050 0
+908 1545 -3037 0
+478 1768 -738 0
+2486 931 -2857 0
+3305 3105 3478 0
+-377 3248 -2955 0
+-142 -3113 1855 0
+2026 1240 2873 0
+-2521 1214 1622 0
+-2803 2669 2695 0
+416 -2546 -1989 0
+960 -2362 -316 0
+3222 -3048 2634 0
+2939 779 -1606 0
+-1222 -327 3315 0
+-3037 -2592 -393 0
+582 3211 -1925 0
+159 -2367 2607 0
+2126 3155 2697 0
+-1806 -2169 -808 0
+1653 2214 -2426 0
+-1826 459 -2450 0
+1561 -529 2314 0
+1927 -1681 -345 0
+-2842 1294 -781 0
+-3494 2445 3179 0
+1313 877 3039 0
+-654 -2435 1527 0
+-818 -2188 -1535 0
+-3375 -1181 2388 0
+-3269 -896 1088 0
+83 2078 671 0
+-786 2716 2506 0
+968 -696 2321 0
+2187 -3108 -3362 0
+-1829 -876 1845 0
+-3298 -864 2886 0
+-3492 -2857 -3391 0
+3450 1685 -512 0
+-2876 2700 2566 0
+979 2192 -119 0
+-318 2463 -1792 0
+2714 -2020 990 0
+433 2768 -1584 0
+-2623 -2477 -3443 0
+883 -2436 2775 0
+111 -2471 773 0
+923 -2544 -2057 0
+-1353 -972 -1107 0
+398 -14 -2051 0
+-917 -877 -2508 0
+2407 -3244 -1692 0
+2139 -503 2057 0
+-1216 -1549 -528 0
+-1242 -2885 -300 0
+1211 869 -1068 0
+-2240 2495 -1351 0
+-2500 3300 -1171 0
+2062 1765 1073 0
+-2765 -3217 70 0
+-84 1233 3368 0
+-828 -2274 -591 0
+-508 113 2594 0
+2164 171 -1264 0
+-2720 58 -2676 0
+2453 1407 -210 0
+-2485 -3382 859 0
+-1383 64 1674 0
+2779 311 765 0
+-693 2101 2420 0
+-876 -535 1557 0
+56 -1783 -1800 0
+410 507 -1177 0
+-3129 -2517 -3405 0
+-1513 -3264 1346 0
+1390 -56 -1004 0
+2669 2153 996 0
+92 134 -1878 0
+2778 -1766 -1445 0
+-1575 -2267 3070 0
+22 2334 2883 0
+1688 896 -3003 0
+793 3297 -193 0
+-2235 -3180 -1265 0
+-2170 580 677 0
+-1049 -1108 775 0
+3220 -2543 -2803 0
+2507 -1640 -1021 0
+477 -1302 256 0
+-1279 1906 3362 0
+2008 3281 -793 0
+106 -3018 -1128 0
+-1193 2416 2437 0
+1163 -3192 3068 0
+1531 2373 -2705 0
+2519 3145 -828 0
+2854 -950 -80 0
+-1191 2211 -603 0
+-42 560 730 0
+-3180 974 -2197 0
+787 -1391 -14 0
+869 -3151 1738 0
+-395 -1002 3034 0
+-252 -3370 2810 0
+938 -2860 1042 0
+2090 2771 -2258 0
+2198 2151 1444 0
+1577 -3316 -943 0
+683 -2426 2005 0
+1152 724 -1353 0
+-2068 92 -3422 0
+-622 1976 -467 0
+-3160 1758 1122 0
+2324 -395 2357 0
+-2984 -1841 -520 0
+-1971 3136 -426 0
+-913 1676 319 0
+2808 686 2953 0
+-266 112 3026 0
+-3058 -2477 -2716 0
+1092 2084 3249 0
+-285 -56 49 0
+-602 -353 -422 0
+-3094 1582 -1346 0
+-2173 115 2303 0
+-646 -516 -622 0
+1739 926 -2866 0
+2169 331 1255 0
+2326 1439 553 0
+-1513 189 -375 0
+958 -2385 250 0
+-1739 412 -282 0
+-138 -3245 1471 0
+-1221 -1847 703 0
+-1945 1624 344 0
+-1124 -3019 2775 0
+3015 1757 -177 0
+-3204 989 784 0
+447 2756 -1164 0
+1191 2175 -1741 0
+-1314 -319 2873 0
+601 607 2315 0
+-895 1098 -1466 0
+-844 385 704 0
+-58 1157 1210 0
+1249 -2262 -3355 0
+1161 -523 -2812 0
+2550 1355 -2091 0
+2028 -1232 -3033 0
+-461 -331 1822 0
+-1015 563 -1138 0
+-1412 873 -566 0
+-1270 -391 -3263 0
+-1944 1914 -703 0
+1611 -1036 -2781 0
+-3481 -2427 -73 0
+-960 -2362 -3418 0
+2016 2543 311 0
+-1386 595 1930 0
+1245 -2461 -1981 0
+-1637 -2038 2504 0
+-627 94 -1795 0
+2416 1198 -2716 0
+263 264 401 0
+-2155 2234 426 0
+-2856 2676 -2625 0
+-3 1642 -2741 0
+-107 247 3114 0
+2813 64 -734 0
+-1769 2109 -503 0
+1216 -1096 1252 0
+-2070 3472 -1351 0
+149 -868 2761 0
+3358 358 -1648 0
+385 -479 -418 0
+-1527 840 -2025 0
+2844 -3345 -806 0
+-2027 -2652 1349 0
+3377 -484 1127 0
+-1326 2048 504 0
+-2786 599 1154 0
+2216 3217 3312 0
+3256 -1476 -1233 0
+819 -530 -1344 0
+3435 -3167 -973 0
+-948 -2202 -384 0
+-669 -352 -1161 0
+907 2002 3324 0
+1705 -844 1945 0
+391 -1355 -362 0
+-229 2586 2854 0
+2285 -2069 407 0
+2799 645 195 0
+1034 -1110 634 0
+-563 1434 1082 0
+746 -3104 -240 0
+2801 2480 -1660 0
+1098 -699 2258 0
+2210 -2792 -1668 0
+-2873 950 -648 0
+2602 -3341 1224 0
+-1162 2604 1893 0
+3027 1720 -1231 0
+1119 -268 -3259 0
+-336 -665 -3439 0
+-3316 -2706 1244 0
+3237 953 -2546 0
+-3102 2335 2297 0
+-1799 -6 -326 0
+-501 2397 -1946 0
+-2478 1374 1418 0
+2112 1522 3494 0
+2411 2639 917 0
+1312 1351 1282 0
+1082 2337 -2948 0
+2313 2543 -108 0
+2804 1615 -1785 0
+1392 -1204 1940 0
+-1966 1337 1068 0
+-1493 -901 2128 0
+1111 2273 -1127 0
+-615 -1101 1254 0
+-338 80 3176 0
+-162 1770 -1459 0
+616 1487 3280 0
+-1864 1055 -1043 0
+3018 -2610 386 0
+2 -3010 2264 0
+2100 -828 -424 0
+-3207 -1737 2556 0
+-1308 2406 1556 0
+1043 -1605 1691 0
+-516 -2714 1774 0
+2711 404 743 0
+2324 1866 -1642 0
+-2076 -1840 -1811 0
+930 -968 3005 0
+-1025 -850 46 0
+-1717 -2996 2794 0
+-2946 687 2177 0
+-2233 1778 1734 0
+-467 2942 1697 0
+592 2467 -2960 0
+-565 -1770 -3295 0
+-299 2681 553 0
+3313 2110 3357 0
+1679 -3006 -1759 0
+66 424 -292 0
+-1546 -1059 917 0
+-878 95 2199 0
+-1415 3433 -102 0
+368 -113 -2900 0
+-1076 -721 -1999 0
+-1383 1869 3360 0
+3296 -499 795 0
+537 -1209 2235 0
+259 -3091 -2476 0
+-2242 -1957 1552 0
+-476 -501 -1876 0
+-1629 -1097 -1561 0
+-1325 601 2567 0
+344 1937 -3196 0
+-2426 -965 -1400 0
+1338 1950 719 0
+-2198 1996 974 0
+1685 2153 1331 0
+-1620 -544 -1609 0
+970 -2176 1417 0
+950 -1950 1093 0
+-3224 1515 3085 0
+1775 1285 54 0
+-1647 -789 -1731 0
+2429 -2932 1135 0
+1180 102 1483 0
+2297 985 2926 0
+-2798 1837 1628 0
+-3197 -65 -1965 0
+-2883 996 1998 0
+-3161 714 -2806 0
+-957 -3403 1913 0
+2509 -528 1792 0
+-2737 1931 1974 0
+-1097 1289 -170 0
+722 -2963 3092 0
+-132 370 -2489 0
+2861 -3492 -2342 0
+-2045 3272 -880 0
+871 -3102 568 0
+-1945 -3101 2726 0
+175 -3241 2890 0
+2827 -226 -2139 0
+1102 -646 1159 0
+-2620 -1 -689 0
+-1991 -1858 541 0
+784 -439 -1260 0
+-2753 -2078 -3404 0
+2045 1401 -1879 0
+-715 -1089 -3219 0
+1283 -911 -3301 0
+-723 -2166 1108 0
+990 512 -3337 0
+-285 1421 1072 0
+-745 -798 -2502 0
+110 2225 -3425 0
+-2471 -2609 -1809 0
+-1063 -576 2366 0
+-1989 2295 835 0
+3210 -1653 3412 0
+-1022 938 1042 0
+1772 1509 1149 0
+-1097 -2616 285 0
+2085 631 -2183 0
+-746 3043 2399 0
+3053 -2976 3167 0
+1353 529 2319 0
+-2679 -389 -1587 0
+3275 2947 1051 0
+-1869 -21 -694 0
+865 2340 -736 0
+857 -3444 -1449 0
+-3064 2178 2421 0
+625 436 -2600 0
+1700 -3282 2379 0
+-640 -721 -84 0
+1485 45 2326 0
+191 2121 -1841 0
+-2633 -3237 2536 0
+1055 -3304 2456 0
+-1312 1926 2574 0
+-3489 -2950 -1987 0
+1527 165 -1046 0
+-1189 970 3247 0
+-3262 -740 1637 0
+1747 2790 1480 0
+-2182 -2422 1503 0
+3407 3085 -3177 0
+2075 809 -1791 0
+-3048 1355 -1117 0
+-3482 2439 3036 0
+-1134 -1888 3348 0
+-963 -2919 3325 0
+1178 3461 -1443 0
+2540 3304 1278 0
+-3386 285 530 0
+-2743 1537 1718 0
+-1021 1138 3227 0
+3035 2862 -2890 0
+-1247 1795 -2324 0
+1972 832 1033 0
+2076 3025 1407 0
+-1496 422 2866 0
+96 1052 1895 0
+261 -2370 -693 0
+1627 -3402 -1421 0
+-319 1211 -107 0
+1085 1543 736 0
+1655 -3308 -288 0
+-3148 -1345 -2604 0
+-3211 -1202 3189 0
+-548 -2618 3350 0
+875 -827 2442 0
+-3326 -2394 3303 0
+-1336 -3230 1468 0
+1217 3063 792 0
+-1541 -2758 3097 0
+3382 42 -2888 0
+2270 3079 2346 0
+344 2332 2861 0
+2405 1479 -2997 0
+1218 -109 1695 0
+-3082 -177 2285 0
+2107 2278 -2218 0
+-1067 1305 -2634 0
+-198 -1243 6 0
+-446 -1776 1697 0
+-260 1547 -902 0
+-1 1385 -1193 0
+3401 2663 -2157 0
+1870 3336 -530 0
+351 -1064 1530 0
+2097 -538 -2225 0
+474 -947 1003 0
+-1961 -898 2109 0
+-2920 1909 91 0
+2596 -3414 -2568 0
+-2919 3232 1308 0
+-1396 682 140 0
+981 2588 -3223 0
+1432 1674 1896 0
+-2278 2205 -1150 0
+-133 -2438 525 0
+-1820 2026 762 0
+-685 765 119 0
+-968 -3129 -1390 0
+906 -2516 -2358 0
+884 733 2355 0
+65 -3178 3175 0
+-756 2181 133 0
+2007 -350 242 0
+-3159 1907 -758 0
+-2339 3254 1461 0
+-829 -2782 -116 0
+-945 2817 -2391 0
+1925 -549 2531 0
+-514 1938 863 0
+-3184 836 -2773 0
+-1545 323 -608 0
+-3283 -1310 1178 0
+-2047 -1097 -1877 0
+-3386 -2317 -1310 0
+1019 -2881 -430 0
+651 2255 2800 0
+1413 914 1681 0
+2922 1693 -2824 0
+647 -2459 1032 0
+-2643 -1262 -404 0
+677 -166 -2029 0
+2293 -2048 -2663 0
+-1797 -456 2603 0
+-58 2488 -2713 0
+2785 -2070 379 0
+2238 -28 -486 0
+1868 -1997 2484 0
+-644 -3243 770 0
+879 -2095 3344 0
+3386 -3162 3175 0
+-928 1095 815 0
+3013 858 3099 0
+2668 -623 1342 0
+1256 2219 2087 0
+1157 -1191 -427 0
+858 2778 2311 0
+-31 -2776 -3332 0
+-731 2616 -1409 0
+-2745 -2677 -2515 0
+26 -3235 989 0
+-2082 1517 -298 0
+1451 2149 -1217 0
+3100 -979 3301 0
+-2671 -1552 509 0
+-3111 738 -1750 0
+3007 -73 1690 0
+1349 698 -367 0
+-1978 -362 -2180 0
+1844 2707 3199 0
+-462 -249 -2154 0
+2926 -2328 -2682 0
+3367 -157 -528 0
+-2478 -489 -1962 0
+-3001 -520 201 0
+1923 3026 -1861 0
+668 3338 -784 0
+12 3050 1214 0
+-692 2583 3031 0
+348 -1350 -1239 0
+-1085 -2213 1831 0
+-2289 1860 -1994 0
+-1146 -3293 2174 0
+-772 1197 -545 0
+-900 3258 1759 0
+-300 658 -3453 0
+3086 -1487 -868 0
+587 1986 2708 0
+1385 24 -3335 0
+-3308 -1460 2983 0
+562 -2562 -2294 0
+208 -1256 -3323 0
+1674 -636 789 0
+818 -3323 -1254 0
+1408 -391 -626 0
+-2586 3155 -2407 0
+662 326 -808 0
+540 -558 -2641 0
+-1020 19 799 0
+-499 -2333 -1573 0
+-762 -646 2305 0
+2364 -2166 -1383 0
+-2838 -1955 -3099 0
+1242 1054 1460 0
+-2532 558 -2848 0
+822 2789 -526 0
+-1020 -1059 -2078 0
+-2659 865 -1311 0
+-2209 -1081 -312 0
+-1614 -999 707 0
+802 456 -2997 0
+-1683 371 202 0
+-1683 364 474 0
+3010 726 2445 0
+3130 -380 2729 0
+974 -2616 -120 0
+2411 2628 1043 0
+1730 2189 1772 0
+-267 -1844 -1871 0
+2029 1347 2128 0
+3495 605 -1032 0
+-1223 -2526 -2723 0
+3180 -2794 3045 0
+1030 2347 -802 0
+162 2218 -1738 0
+2083 448 -844 0
+3412 1421 2417 0
+-2506 1596 463 0
+-2864 950 -866 0
+-2429 1082 -2536 0
+-1992 -1053 -306 0
+418 462 -2654 0
+-2482 1473 -3457 0
+1717 3428 1031 0
+-918 1821 -1106 0
+-1318 1974 2037 0
+766 -2495 793 0
+-604 -3306 -352 0
+512 -2583 -1233 0
+1232 73 -649 0
+408 776 837 0
+1160 -1766 -2828 0
+1802 -2333 -2008 0
+1370 -1251 2958 0
+567 1134 241 0
+1818 249 -3030 0
+1904 -2687 -843 0
+-2727 1946 -751 0
+743 -2972 2573 0
+-976 -3118 -278 0
+392 507 -1188 0
+-1725 725 -3260 0
+2925 711 546 0
+-1824 -82 -3281 0
+-225 2294 -2866 0
+3202 1167 397 0
+-245 1945 -3032 0
+-2536 -691 -328 0
+-1208 -2524 -3447 0
+-444 3060 -15 0
+1808 -2182 -3424 0
+-1828 1199 -1138 0
+-1976 3187 3420 0
+403 -2165 -2417 0
+1731 -2283 2096 0
+215 -2012 -3377 0
+1474 2104 -1976 0
+-3402 3415 -3119 0
+3102 962 2949 0
+377 -2738 -2469 0
+-1455 1737 -1581 0
+1903 -3318 2226 0
+248 2246 -1716 0
+-3497 1886 3083 0
+836 2513 2618 0
+1406 666 539 0
+-1256 -1800 -2948 0
+2866 2653 -3357 0
+3476 -2186 -812 0
+3195 1728 1720 0
+-188 -1417 -2768 0
+3098 897 1595 0
+1922 40 -2573 0
+-1943 3250 908 0
+2397 2208 -2809 0
+1469 -53 -349 0
+-1341 -3343 1344 0
+2583 2399 840 0
+2518 518 3412 0
+2829 -2028 -2933 0
+-1964 -832 286 0
+1336 1127 -364 0
+-2616 2235 2068 0
+2985 2358 3353 0
+-1427 -1078 -717 0
+1290 -1410 1195 0
+3300 3322 209 0
+-3396 -3131 839 0
+1705 -2783 325 0
+2832 1816 -1705 0
+-919 -1711 -1615 0
+-524 -1937 2340 0
+-530 1470 866 0
+-1859 2632 3133 0
+-277 1207 -2874 0
+1124 2406 2620 0
+2240 -1933 3489 0
+-2821 3008 -680 0
+3099 -2943 180 0
+1685 1540 -2548 0
+2303 -1205 -3005 0
+1727 3469 2420 0
+933 476 -2531 0
+813 193 -859 0
+-2831 -828 -1935 0
+-1784 46 1945 0
+3313 1295 -331 0
+-3238 -1955 -1703 0
+1368 -3115 -2771 0
+-1931 -3017 2973 0
+-2633 2189 -745 0
+-2229 -805 338 0
+-238 2399 -289 0
+3178 3116 3215 0
+-3266 989 904 0
+734 -1717 2716 0
+56 3017 -1468 0
+1996 -3430 399 0
+-1495 1874 -2869 0
+3498 3234 1915 0
+1446 -675 -2070 0
+2122 -1334 -2986 0
+1494 1007 2376 0
+1641 1481 1482 0
+-1602 -3482 -2464 0
+-1974 -1045 -72 0
+2538 1740 -332 0
+3173 -2706 -3248 0
+2084 -1951 1402 0
+-914 1411 -838 0
+-2792 784 -1959 0
+3451 -3048 -1368 0
+2914 1705 1719 0
+200 2840 -367 0
+-2084 -244 -2175 0
+-368 -393 -1803 0
+-2007 3348 3442 0
+1434 -2254 -1475 0
+-1090 -774 -326 0
+-1170 -2420 -2402 0
+2494 2561 422 0
+-1738 -2616 -482 0
+-2799 -1913 1554 0
+-2025 1561 3071 0
+-439 -795 -2152 0
+453 -2466 -532 0
+376 -1815 353 0
+-2049 -712 -1205 0
+-348 -1407 2528 0
+295 1717 -2325 0
+786 -1515 2290 0
+-2638 -814 2157 0
+3249 819 -1167 0
+2726 -1752 3423 0
+-1610 -246 1306 0
+-196 1847 -1842 0
+-255 3302 1932 0
+-2236 -2664 -2141 0
+1578 1844 -1998 0
+609 -1983 -3434 0
+3425 -1880 -1838 0
+2407 -1201 3162 0
+-667 -1314 1452 0
+160 1320 -2858 0
+-268 3425 -821 0
+-2038 3486 -2516 0
+-639 -417 -131 0
+1472 1976 -627 0
+2739 2956 -2789 0
+-376 2280 -1806 0
+-158 346 -761 0
+1968 784 3238 0
+2462 -1713 494 0
+865 3125 291 0
+-2635 1970 -967 0
+-1015 -619 1268 0
+-722 2778 2119 0
+2421 -224 -2018 0
+-2972 -449 3204 0
+-1510 -1406 252 0
+254 -3496 -2627 0
+2251 -998 -1354 0
+543 696 906 0
+-1483 2096 -2973 0
+2671 637 961 0
+-2948 2155 -2085 0
+-706 1130 2363 0
+-1319 2757 171 0
+1228 539 -84 0
+1623 994 3330 0
+-3148 3167 -2220 0
+-3084 2587 1130 0
+-3196 -855 -963 0
+2614 2678 -2015 0
+-3165 -2015 -2397 0
+-2612 1122 347 0
+530 -2768 644 0
+-1067 2845 -2791 0
+2947 -2499 -1557 0
+-1386 -1150 1879 0
+1745 2090 3268 0
+-2708 -2367 -3414 0
+-2371 -3349 -2902 0
+2023 -1044 -973 0
+2034 -322 2258 0
+-3229 -3189 -3369 0
+755 3254 -1050 0
+2632 -648 -1636 0
+1620 -2397 1180 0
+1764 2227 2896 0
+784 -1488 943 0
+-3429 432 1319 0
+2849 1402 2930 0
+44 3196 -212 0
+-2310 589 559 0
+2021 2609 1815 0
+1363 -1749 1425 0
+3275 18 769 0
+713 496 3253 0
+-1284 -2682 -3098 0
+1855 1083 1625 0
+-1015 1140 -1282 0
+-2332 -3337 2232 0
+-1796 1418 3352 0
+-2999 -3232 -3007 0
+-1921 -947 2325 0
+-2400 -2060 -2603 0
+2604 897 283 0
+-3046 2572 -871 0
+-2132 59 2550 0
+-1193 -926 -472 0
+-1211 3089 2911 0
+3110 125 954 0
+134 -2486 -1462 0
+-1628 225 1957 0
+-1251 244 1787 0
+1925 87 -2767 0
+205 1510 2883 0
+736 -2962 -2220 0
+3077 -1016 2034 0
+-2575 -2621 1960 0
+-33 -405 1898 0
+-3116 2048 -2431 0
+89 945 -2888 0
+474 13 -2265 0
+-962 -1830 656 0
+-989 -673 807 0
+-1064 -1172 1547 0
+1041 3270 1186 0
+1650 -1621 3148 0
+208 -1723 -691 0
+-2326 3066 -3072 0
+-2068 -795 -247 0
+-3342 477 3272 0
+-2268 -3321 3083 0
+-773 78 1827 0
+-1373 2446 149 0
+-1311 -2653 1956 0
+-947 686 -1409 0
+-3086 -1878 -565 0
+2375 1250 332 0
+3220 228 2643 0
+-683 -2592 -2559 0
+2734 2845 1429 0
+376 930 421 0
+-214 -2832 1747 0
+1039 1367 132 0
+1642 -962 -649 0
+1781 26 -3301 0
+-1880 2468 2429 0
+804 2183 605 0
+3298 -1896 -2909 0
+1673 -2842 -1784 0
+-2654 -3373 -1191 0
+-633 -3349 2380 0
+2489 -1419 3318 0
+-1602 166 -779 0
+-2025 625 -1585 0
+-1356 -2473 -3418 0
+901 3233 -152 0
+-3026 -1795 312 0
+2968 -1228 1910 0
+-2708 957 1799 0
+-2240 -3281 883 0
+1375 249 2532 0
+3218 -3041 -3003 0
+3125 1765 -2103 0
+-2858 608 1142 0
+2856 2062 1094 0
+-2334 1227 74 0
+2982 -2316 -1304 0
+2374 788 1780 0
+813 700 -1451 0
+-327 1723 3443 0
+-1831 -1783 1358 0
+3315 1648 3361 0
+448 379 2873 0
+-625 3295 1605 0
+3166 -2052 818 0
+703 -769 -2205 0
+-842 2966 650 0
+-1942 1561 2333 0
+978 1118 781 0
+-2018 1152 1833 0
+2562 1118 1522 0
+1957 1842 -1353 0
+749 -88 -2114 0
+3243 1876 -365 0
+83 -3102 -2950 0
+-3204 -471 1843 0
+643 -855 1722 0
+1474 2002 1280 0
+-481 -208 1883 0
+-1513 -2953 -3199 0
+2550 915 -222 0
+-1512 3056 -3348 0
+1075 248 -2882 0
+-191 2549 -2219 0
+-970 2896 1347 0
+-2826 -1997 3417 0
+-2996 -3083 -295 0
+-329 751 -945 0
+-2103 3495 -1534 0
+-2083 -2445 -2926 0
+-574 -688 2490 0
+-1288 -2032 1037 0
+-299 195 1941 0
+1181 2275 1695 0
+3388 2811 -1756 0
+2624 987 1398 0
+414 1962 55 0
+1272 864 1402 0
+-2606 3348 -257 0
+1688 1819 2476 0
+3235 -2403 -1409 0
+698 -2986 -769 0
+-2158 3392 -8 0
+-2327 375 494 0
+217 775 -3180 0
+-2110 1349 -135 0
+-1313 1081 3491 0
+-337 390 1670 0
+-1522 3010 -2671 0
+2528 -2185 -1422 0
+3053 -1278 1043 0
+-160 -2245 3153 0
+-3090 884 -219 0
+-377 3050 137 0
+-3390 1607 2467 0
+438 -3058 2921 0
+-3129 2956 -821 0
+609 2599 -390 0
+-546 -1057 -653 0
+2316 357 -2616 0
+-3449 -1342 -1270 0
+-108 -343 2771 0
+2173 1574 -1372 0
+-588 2730 2013 0
+-2836 -424 -1251 0
+2515 2593 -706 0
+1119 -1260 -377 0
+2624 -409 320 0
+2661 198 2550 0
+-1773 -3040 -1579 0
+1736 1989 -950 0
+-1190 8 -29 0
+-2978 -2934 -3350 0
+-1668 659 -902 0
+576 1595 1370 0
+905 -267 -433 0
+2087 3284 571 0
+2479 2465 3435 0
+1664 -1326 -3467 0
+-2032 1400 658 0
+-3299 -2375 -955 0
+-1281 -930 1635 0
+877 -1548 -2524 0
+-2156 3085 -3010 0
+-2207 94 -1667 0
+2877 2313 -1531 0
+1060 -2807 -376 0
+3489 -1554 -1094 0
+3019 -1264 -3230 0
+2154 -2314 -2043 0
+2998 -1945 -3171 0
+-1577 2787 2719 0
+-1825 914 744 0
+456 -1756 -2865 0
+2492 3421 -264 0
+1786 3384 -1571 0
+-206 284 -531 0
+2654 -2210 -2233 0
+-2073 -3215 -907 0
+-1813 -596 1205 0
+198 -621 -3220 0
+3135 1839 -2917 0
+-2921 1224 -2136 0
+-1084 2644 -1037 0
+3378 3450 1082 0
+-1333 -643 -1360 0
+645 -288 -913 0
+1353 1774 -1964 0
+-2533 1118 -346 0
+-1727 1503 696 0
+2830 363 -482 0
+-335 2716 110 0
+-326 -461 539 0
+2508 -1972 1247 0
+2280 2541 -1150 0
+2866 1765 -452 0
+1450 -3372 -1408 0
+-793 -1444 332 0
+-178 1553 -2965 0
+-967 2274 -2026 0
+-3244 403 -1118 0
+-254 1640 3232 0
+-107 1280 -1778 0
+-33 -950 -605 0
+-886 -2159 -1579 0
+3083 -2075 2830 0
+-839 2260 -3208 0
+-2025 -2516 1365 0
+-1416 2748 2983 0
+2780 -1424 -27 0
+-2123 -824 3094 0
+-390 3235 -2910 0
+1140 -2756 -1239 0
+-949 2017 -1520 0
+-49 -1868 -2238 0
+-975 1504 -1557 0
+-1951 1529 -1095 0
+1128 -2374 -2390 0
+1004 2767 -35 0
+1020 -1585 -1556 0
+1282 1182 -828 0
+-382 -1184 965 0
+2850 -1012 2476 0
+-1835 -3239 -2999 0
+-1887 -3357 3405 0
+293 -441 -471 0
+712 547 -2764 0
+674 -103 335 0
+1586 -2557 3270 0
+1098 2573 -1626 0
+-2366 -164 3392 0
+575 1487 -2500 0
+2633 2862 -1358 0
+1814 -1865 -769 0
+-2926 -3290 2820 0
+976 3333 991 0
+-1773 329 2687 0
+509 -2502 -1055 0
+3066 3303 239 0
+-3064 2437 -1663 0
+768 3440 -277 0
+325 -2496 1808 0
+3482 1 -2186 0
+2842 423 -3181 0
+3215 326 2097 0
+-407 -1126 -3465 0
+1277 3451 943 0
+1954 -575 3408 0
+3009 -1011 -1894 0
+-593 -3436 -260 0
+-2906 1397 1014 0
+-1933 1650 -2563 0
+142 -17 2971 0
+3476 -2675 2412 0
+1678 -2677 -423 0
+147 104 360 0
+-2904 3408 -675 0
+-145 -3486 -1532 0
+-87 1936 -2493 0
+329 352 2284 0
+-2442 -602 -473 0
+162 -3253 -929 0
+2539 1244 -1235 0
+1981 -783 582 0
+-1264 -446 -415 0
+2389 -1660 -1902 0
+-451 -2008 2132 0
+-632 509 -194 0
+-1151 3065 2591 0
+1709 1056 -1968 0
+1383 -827 -346 0
+-1674 1291 -1001 0
+-3117 1092 8 0
+-1869 -3460 3092 0
+1579 -2903 3453 0
+604 -2227 -878 0
+658 -3369 2732 0
+-1871 2501 -2474 0
+-748 -167 2275 0
+3257 1058 2987 0
+531 2346 1521 0
+1829 -2274 -628 0
+-2566 -354 -1960 0
+575 -169 -3415 0
+-499 -2796 2331 0
+2567 2373 2118 0
+-1135 -2573 -2143 0
+1413 -2198 2775 0
+1093 -3365 591 0
+-205 -2950 2645 0
+-1783 1141 -3124 0
+1049 -203 -666 0
+-3321 -54 -345 0
+-2675 2678 -2699 0
+2318 -857 2404 0
+-46 1713 1341 0
+944 -2094 -2511 0
+-3492 1337 850 0
+2875 3118 2563 0
+1821 -1720 3147 0
+2679 1309 879 0
+-2227 -1539 -2968 0
+79 -2882 3005 0
+-3096 -255 931 0
+1530 -697 -1929 0
+372 35 -1998 0
+829 2735 1545 0
+2918 -1661 -3039 0
+-2529 44 1848 0
+-2100 -226 -3126 0
+3139 3260 -1677 0
+-587 -2483 -1374 0
+2022 2150 -3090 0
+-1348 -823 1401 0
+-2365 2547 -2797 0
+-1244 -2170 2110 0
+-2761 -2852 -2517 0
+2270 1517 -1221 0
+-2608 -3224 -458 0
+2600 1126 -1913 0
+-318 -2857 -660 0
+-2833 662 -1664 0
+-2910 -716 -1353 0
+2032 1003 390 0
+2880 -784 1135 0
+-927 2353 -438 0
+-1750 2932 -1954 0
+-2089 1528 -2289 0
+1240 -3340 2576 0
+-203 -3219 2461 0
+-183 2305 171 0
+2046 2512 831 0
+2573 2329 2222 0
+3481 -1938 -2204 0
+-51 2969 -3393 0
+-623 -1816 -2609 0
+-2169 -405 -2632 0
+-2147 -654 2306 0
+2093 -2836 -2108 0
+-1543 -445 -1928 0
+-2940 -411 1976 0
+-3240 -674 -1825 0
+1380 1511 1446 0
+1408 2603 568 0
+2283 -3368 -3123 0
+3064 -845 317 0
+2994 -3465 -201 0
+3473 -2260 -113 0
+-1799 244 -2263 0
+2111 -2922 -272 0
+-274 -1606 -3310 0
+-438 1978 2972 0
+-2191 259 927 0
+-1156 -1890 -126 0
+-2210 1698 715 0
+675 -1805 -2107 0
+-703 -918 2946 0
+1359 -3333 -2587 0
+1988 3485 1640 0
+1031 -2348 -1981 0
+1197 551 1436 0
+1115 -1701 -1319 0
+2422 -2782 -795 0
+3014 -2111 -3160 0
+3109 599 -3418 0
+1518 1734 614 0
+-1225 1808 261 0
+-570 2303 -1436 0
+-1721 2380 447 0
+581 2730 2011 0
+-259 260 2096 0
+1662 2602 -2745 0
+3095 -2043 -3166 0
+-1495 928 -1717 0
+-2414 -1430 3476 0
+790 3469 -2226 0
+1923 1885 -356 0
+-386 943 1848 0
+2407 1995 217 0
+-1209 -2507 -774 0
+-2580 2716 -2613 0
+1113 1828 2059 0
+-627 2133 1373 0
+2179 323 -114 0
+884 3170 461 0
+2373 -2006 -2088 0
+3030 2152 -2698 0
+40 -3155 1394 0
+-2653 1308 -745 0
+15 -2744 1519 0
+-126 -2745 1979 0
+-3248 -1033 -2865 0
+-2610 55 1578 0
+3293 -1521 206 0
+2521 -393 3403 0
+-1469 -2302 2159 0
+2045 2289 306 0
+-3308 -1058 1680 0
+-1311 3366 -2572 0
+-1596 -291 3357 0
+398 -222 2038 0
+-3479 -786 160 0
+-420 -507 -3329 0
+-613 159 -470 0
+549 -823 553 0
+1032 -2004 149 0
+134 -1123 -2394 0
+-2011 -1249 -791 0
+1203 -2216 1880 0
+591 1251 -3267 0
+-2092 -2752 2052 0
+-1136 3027 -3104 0
+40 -1233 631 0
+-2365 -3426 -3195 0
+266 733 1699 0
+-3318 1298 -885 0
+-1970 2034 -779 0
+-3416 3252 2106 0
+-3172 -2217 2051 0
+1403 -2196 -332 0
+-2635 -683 2719 0
+-282 -88 2684 0
+453 -1684 248 0
+-588 1260 3017 0
+1214 -2127 -3055 0
+-303 2607 -2621 0
+2553 -3013 -1717 0
+-6 -1295 -2375 0
+-1980 -1462 -2266 0
+3050 1897 -3388 0
+-633 140 1176 0
+-1565 2162 2869 0
+3274 -2548 1064 0
+-2611 -885 -2782 0
+1550 -3129 -507 0
+1396 3206 880 0
+-795 -1110 22 0
+-3335 3352 864 0
+-305 459 546 0
+838 -2072 -2041 0
+3482 217 -1471 0
+-570 40 1722 0
+-2157 -3357 439 0
+2924 -695 -1932 0
+-3123 3336 3236 0
+772 -1812 -2905 0
+2085 2049 1653 0
+2186 1826 2317 0
+-2763 -3007 1622 0
+-1198 -708 -2939 0
+2910 161 -1198 0
+1004 -3040 1906 0
+-3322 1500 2633 0
+-412 -2056 -1853 0
+1356 -1422 584 0
+2507 -1070 1214 0
+-2232 2049 -1770 0
+-2963 -1045 -3239 0
+1278 2073 67 0
+11 -3475 -3487 0
+2293 550 1660 0
+2129 -480 2162 0
+-1131 341 -2586 0
+-2352 -228 197 0
+1349 -1718 1641 0
+-1881 -697 -295 0
+693 -2747 3101 0
+-3422 3033 -2907 0
+341 2483 -2682 0
+863 -2887 1853 0
+-784 1460 2663 0
+336 -679 1028 0
+992 1010 -1212 0
+2643 -2174 -2120 0
+-805 -1886 -2063 0
+1218 -471 -827 0
+932 2988 -745 0
+1889 -1465 -2261 0
+-3314 728 3029 0
+3343 2330 523 0
+1966 238 -918 0
+-2069 -2227 3459 0
+-2071 -1208 1245 0
+-2711 -1371 -3046 0
+2785 1231 1117 0
+2506 -3494 2019 0
+308 -2760 -2143 0
+2006 -1065 749 0
+-3181 3368 -3398 0
+-1950 2302 796 0
+-1435 3001 -2545 0
+2339 -2106 -1887 0
+817 -1462 -106 0
+690 -2169 -838 0
+-3470 -1249 -2469 0
+-2190 -1846 -1831 0
+-3209 243 -2268 0
+2563 2523 -1464 0
+-2733 2415 2710 0
+3468 2540 -1451 0
+3261 1910 -1830 0
+-2496 910 3353 0
+1369 -2761 2939 0
+3020 -2878 73 0
+1687 -1267 -1257 0
+-2234 2857 2623 0
+884 -2725 -857 0
+-1470 -1493 2618 0
+1455 3102 -572 0
+2919 -3215 -2985 0
+-3402 -1988 -2362 0
+445 -2728 -1538 0
+2247 -2311 -238 0
+-1170 -66 2524 0
+446 2896 -2628 0
+1132 598 -1788 0
+-730 2704 1902 0
+43 249 -887 0
+-282 -2178 2827 0
+-984 3144 3432 0
+2759 -1301 -684 0
+2815 -1821 1370 0
+2759 -870 266 0
+3493 311 893 0
+3372 -2909 2257 0
+1787 -405 -1372 0
+2676 -2500 -2704 0
+-1218 1782 1469 0
+343 -2594 -132 0
+291 1863 3019 0
+2540 -2134 -893 0
+531 692 -1064 0
+3400 -1857 868 0
+229 -1287 1864 0
+-2808 -1422 1853 0
+1790 -2246 336 0
+429 -3206 -396 0
+1015 3050 1977 0
+2696 1628 1526 0
+-1900 2146 2004 0
+761 -1391 717 0
+-2644 -2592 2265 0
+3117 -3283 -2650 0
+3084 465 2326 0
+1203 2824 546 0
+-347 -1621 812 0
+-3463 -3483 2304 0
+2042 2026 1087 0
+-84 -3020 1882 0
+-2538 -2571 -2933 0
+3189 -922 1517 0
+146 -1689 -534 0
+-2375 2413 901 0
+2076 -669 1532 0
+-3441 2135 2432 0
+-2127 -1347 3429 0
+1283 843 203 0
+3463 453 3478 0
+-2374 2337 149 0
+-2092 939 -2600 0
+2293 -1989 776 0
+3003 -1992 -1529 0
+-1723 1272 366 0
+28 -3303 -2281 0
+2733 40 1598 0
+-41 -367 531 0
+-447 3200 -379 0
+1133 -2719 776 0
+-153 -2323 3167 0
+-3407 1975 2570 0
+2586 -464 1140 0
+-594 -1027 524 0
+1521 -6 560 0
+324 1585 668 0
+250 150 -520 0
+-2297 -1830 -2558 0
+254 -1055 -3444 0
+2685 3235 -2204 0
+-3472 1006 -1675 0
+-2807 -2246 649 0
+-2176 2371 -2206 0
+3475 -1079 -239 0
+2608 -2488 -2113 0
+-2635 219 141 0
+-1813 -318 2403 0
+-3324 412 1584 0
+123 -1576 -2588 0
+-2225 1237 537 0
+2403 1935 -3311 0
+1015 1521 2182 0
+2299 1502 -700 0
+-1828 1144 -2024 0
+1718 1926 -1959 0
+2804 -2133 3483 0
+3312 -67 -2331 0
+-1755 -753 -340 0
+-2842 -2274 -2070 0
+716 -1544 3241 0
+-1603 864 281 0
+-2178 1845 -1425 0
+992 1804 -2936 0
+-3196 -809 -2761 0
+-2765 3166 -2617 0
+811 1950 -954 0
+2521 -2323 -1876 0
+-1539 3427 1112 0
+1985 -1638 -2776 0
+-2172 -875 2850 0
+1242 -709 -1834 0
+-1922 -1294 1718 0
+991 -2536 -3098 0
+-278 955 875 0
+2814 2271 1383 0
+-179 1780 -2316 0
+2550 -967 1480 0
+12 2441 3387 0
+-2695 -120 -2080 0
+-379 541 1582 0
+-769 -1048 2648 0
+2660 600 2040 0
+2810 1050 -1098 0
+-289 -1102 440 0
+1403 -1075 -3467 0
+367 -917 -3283 0
+1278 1762 2569 0
+-457 2352 129 0
+2444 240 825 0
+3226 -1498 671 0
+-3458 -2199 -2453 0
+-939 -924 2108 0
+-3001 -1870 572 0
+-1801 2415 3059 0
+-2719 1966 -85 0
+-2180 174 916 0
+2860 -2857 -1054 0
+275 529 2407 0
+643 -615 2746 0
+-2795 -2958 2681 0
+-397 -3083 2240 0
+-3197 -2352 -1883 0
+-519 461 802 0
+-2148 73 -1000 0
+-2936 1284 1555 0
+-1934 -1825 -2522 0
+-2015 2163 1273 0
+773 -2702 2838 0
+600 1446 747 0
+-3491 2739 2574 0
+-1738 -2745 -2525 0
+626 485 -1906 0
+-3332 -47 -411 0
+2536 -869 1683 0
+2926 1797 2947 0
+2958 -1879 1247 0
+468 -1942 -1160 0
+-2708 3026 -25 0
+2139 -947 3041 0
+1122 -802 -1131 0
+-289 -1433 2791 0
+-3070 1051 -710 0
+-1859 3201 2672 0
+1321 2285 817 0
+1397 792 -1356 0
+-2446 -2511 312 0
+3057 1559 1393 0
+2817 2186 1136 0
+-2242 -2667 1225 0
+2852 -1921 1318 0
+2065 1422 641 0
+-2875 -1615 -804 0
+3202 2759 -2636 0
+-3245 -2851 2404 0
+-2395 3196 -1897 0
+593 -1276 1536 0
+247 -2113 1844 0
+-1369 3035 3432 0
+1021 48 2088 0
+947 706 1797 0
+1655 3064 903 0
+1346 2009 3011 0
+-2873 1897 1505 0
+-1078 -1504 -2897 0
+-76 -1073 985 0
+-3384 1758 -2069 0
+547 -309 3372 0
+2907 698 -1652 0
+3131 -1228 -354 0
+-1225 967 -1211 0
+-1666 1091 542 0
+2583 3073 -144 0
+2711 -2189 -854 0
+2110 3069 -1619 0
+462 -351 1641 0
+-3380 -2655 -3230 0
+629 785 1704 0
+3146 -478 823 0
+2175 1815 2770 0
+1665 -2776 1159 0
+-75 722 -2008 0
+2425 2763 2839 0
+-637 1881 -819 0
+-2445 -2136 1236 0
+692 -1137 -1415 0
+884 -3333 718 0
+2057 -978 2852 0
+-2286 2800 1102 0
+3371 -3111 805 0
+3412 246 -1464 0
+3342 -3149 453 0
+-1516 9 329 0
+-2809 -2847 -3281 0
+-2226 -494 1657 0
+2683 2794 -2615 0
+1089 -3105 -2131 0
+-1104 -2566 2640 0
+-472 -2008 556 0
+-267 -1438 1119 0
+2058 -1162 3230 0
+-2109 -2732 1556 0
+-1770 -1509 -272 0
+229 2597 563 0
+-524 -2434 1590 0
+-1556 -354 1499 0
+2992 902 1820 0
+86 1618 923 0
+2243 2633 -3387 0
+991 525 2371 0
+-3478 -2262 -3143 0
+415 367 -1358 0
+-275 2274 -3039 0
+-281 -848 -3121 0
+-2609 -1144 -536 0
+-1747 -440 845 0
+768 2716 2576 0
+-3319 -2017 -1241 0
+1790 3336 -936 0
+-3371 -67 3177 0
+1027 1117 1931 0
+-1548 -3219 -331 0
+-1336 -1644 -2243 0
+1406 906 3168 0
+698 -1885 -552 0
+-1368 -2984 3045 0
+-944 611 1854 0
+2957 -1091 -3040 0
+-485 365 2188 0
+3232 -3071 -150 0
+3176 -1701 -501 0
+-573 2336 2107 0
+2125 378 2664 0
+-3049 -863 -1038 0
+3446 2436 -2385 0
+-3139 603 -1220 0
+-2583 -2547 -2975 0
+-2107 -2717 1314 0
+-2401 -1528 -776 0
+2813 -3335 238 0
+-834 779 -1214 0
+-2538 -290 -1715 0
+-2738 -1363 2805 0
+334 -38 -1468 0
+-927 1534 -2529 0
+2980 -1647 -1297 0
+2257 3157 -1919 0
+2310 1692 3110 0
+-2848 -2701 1805 0
+199 1448 3493 0
+-4 -338 -3232 0
+-1011 1968 1034 0
+-2039 1542 15 0
+-1226 -1095 -2248 0
+-1094 2131 680 0
+-3017 -1596 -2333 0
+-1488 -3315 510 0
+-342 691 -2778 0
+3035 -68 -930 0
+28 1263 1065 0
+-782 2624 -436 0
+-205 1299 1879 0
+-867 857 -604 0
+2262 -638 767 0
+1145 -92 2952 0
+848 1738 -2611 0
+1429 596 -2833 0
+-1036 1195 1756 0
+-2026 1935 -2847 0
+-731 3495 -2898 0
+-1978 -3180 -218 0
+2389 1604 873 0
+1959 1136 300 0
+1450 3408 1489 0
+-2585 -3245 -3041 0
+2025 -2888 -1734 0
+-494 -1251 -106 0
+3034 530 -1716 0
+-59 -3155 3049 0
+-2721 -3362 1212 0
+1608 -921 1441 0
+-600 3277 531 0
+472 1946 732 0
+-1831 -3327 -757 0
+2628 1508 -2442 0
+-1891 2456 1544 0
+-1966 2330 493 0
+-1625 2924 1966 0
+-232 946 1782 0
+2933 1679 -3399 0
+160 -1169 -1101 0
+3012 -1356 1309 0
+-1202 -2812 3003 0
+-781 -1574 -3292 0
+-3428 764 165 0
+2227 -2451 2941 0
+-2609 -3118 794 0
+-2311 360 -2620 0
+-2899 3096 1626 0
+-827 -2111 3161 0
+-2252 2600 1783 0
+-1254 -992 -1355 0
+-1799 -281 1787 0
+-2019 -2801 2157 0
+-1001 2480 -1073 0
+1887 527 -1028 0
+3025 -3201 3153 0
+-2302 1220 108 0
+-1983 692 -241 0
+-2209 2331 -852 0
+-3328 -3228 -224 0
+2664 3036 266 0
+3419 -639 1649 0
+-645 -2874 -1415 0
+-684 -855 -1312 0
+2918 945 -1494 0
+3400 917 -3021 0
+-2124 -249 -579 0
+10 2029 -2559 0
+2496 -66 2757 0
+1557 2516 -1320 0
+-169 -1166 655 0
+-2266 -127 -2042 0
+911 -1928 -1434 0
+2882 729 280 0
+824 -2160 836 0
+348 1198 2089 0
+2200 1131 -3368 0
+-3031 -1723 218 0
+-2444 -85 -2546 0
+3158 2200 3207 0
+1795 -540 1568 0
+1345 3482 -2594 0
+2146 -628 82 0
+-24 -443 -2199 0
+472 2857 -173 0
+-2207 -2618 -1460 0
+1875 953 1779 0
+1706 -2170 793 0
+-3178 1277 924 0
+3109 -1831 -567 0
+-1528 -471 2021 0
+-1331 -1234 -2251 0
+-2328 -3437 -2789 0
+-3249 -1544 2586 0
+1000 363 1159 0
+-1334 -204 -3332 0
+233 2618 -3445 0
+979 -1824 -3270 0
+1643 -77 -543 0
+2155 -1356 -873 0
+3447 -1701 -510 0
+-2375 2695 2209 0
+-2861 -1413 -601 0
+-2296 -701 -1931 0
+1535 -2786 3102 0
+-1905 -2365 -3199 0
+1638 -116 -66 0
+-3473 -2011 -611 0
+-2568 -1355 1778 0
+1012 370 2703 0
+-455 3019 1212 0
+2192 -1291 183 0
+1131 783 1540 0
+-2252 -799 377 0
+-3392 2389 -1684 0
+232 2697 1457 0
+-2468 -3258 -2456 0
+1616 -95 3227 0
+292 2243 -2085 0
+-167 -506 -2238 0
+645 828 2220 0
+-250 2433 -1446 0
+-3448 1473 1960 0
+-1677 -3177 -3341 0
+-3038 -238 -2562 0
+-2233 1444 3048 0
+-1844 1350 -3305 0
+2163 -2357 -3295 0
+1335 -3068 1891 0
+2773 -2916 1472 0
+1985 1682 -3264 0
+91 -1027 2383 0
+736 584 -1181 0
+409 1850 -27 0
+-2885 1669 2309 0
+-776 -3345 721 0
+-187 -1216 -2252 0
+2044 -1144 2581 0
+3006 1340 -2966 0
+-1596 665 1149 0
+-2905 -265 -882 0
+-2358 1797 -2281 0
+-171 -37 3452 0
+-139 2106 -811 0
+2844 -421 -2171 0
+2980 3495 -825 0
+-730 1945 3254 0
+-3075 1550 -1238 0
+-2228 958 -2854 0
+-2405 675 -2205 0
+-896 921 -1429 0
+-1767 -1426 1185 0
+937 1104 370 0
+487 218 -3431 0
+-3213 -1769 -1661 0
+-3232 2157 3447 0
+2397 2243 -1924 0
+1502 686 -1846 0
+-1448 153 -277 0
+-1237 -2419 376 0
+3478 -3137 759 0
+-2219 -1295 -3478 0
+889 -2578 -585 0
+2629 -3256 197 0
+-2865 21 -938 0
+-2364 -504 3049 0
+1583 -918 -2729 0
+2596 -2373 -1691 0
+-2596 -1489 101 0
+2384 3118 1250 0
+-2800 1469 2113 0
+1066 2785 3073 0
+2877 2131 341 0
+1207 -1141 1788 0
+880 707 -3075 0
+-1052 -2069 2178 0
+-39 877 1725 0
+-1337 2618 -2851 0
+-289 2395 -3252 0
+-2670 1354 1129 0
+1831 -3304 -1202 0
+-1080 -1724 563 0
+-2406 -1049 1867 0
+981 -957 -84 0
+559 1340 2628 0
+2841 -1149 1357 0
+1125 -89 893 0
+2796 2551 1321 0
+-744 3073 2177 0
+-2408 2409 -1148 0
+-2715 -2494 -3132 0
+-2713 2788 -105 0
+3453 -3479 3245 0
+3421 101 2188 0
+2649 -1512 1343 0
+-3093 -3148 -921 0
+-2437 36 2935 0
+-1904 -3040 -1891 0
+3181 -3272 1305 0
+2058 3056 -2010 0
+-2729 -1456 -189 0
+-1655 -2510 850 0
+-1830 1332 1136 0
+-652 -1534 597 0
+-2384 -3292 2723 0
+-2837 3404 -826 0
+-3168 2719 670 0
+621 -2822 -368 0
+-1674 1274 -1443 0
+-2546 -1024 2264 0
+639 2197 2392 0
+-635 -2003 -736 0
+-3422 1671 -3307 0
+-3201 3057 -1189 0
+2843 -1325 2572 0
+-612 -1689 252 0
+2331 2639 -739 0
+-5 -1230 3404 0
+-212 -2518 -578 0
+767 441 -287 0
+-2180 2722 207 0
+-948 -360 3371 0
+-3461 -1759 1549 0
+2226 1266 -1528 0
+-1449 -1764 -886 0
+-1401 2948 -3433 0
+-96 -2192 968 0
+-1553 -1937 -2118 0
+-1473 -1745 2087 0
+1082 -2067 1924 0
+-1394 2517 447 0
+497 3330 -997 0
+-1250 1724 2361 0
+3171 1185 3071 0
+-1187 -3306 3497 0
+-2705 1554 -2232 0
+-670 -2543 -1916 0
+1296 -2589 -2852 0
+-3361 1782 437 0
+-816 -2005 -1378 0
+-2350 3391 2303 0
+-2404 1351 -3472 0
+1486 2933 787 0
+-2023 1306 1692 0
+1656 -3367 -3128 0
+2161 -1826 -2381 0
+-674 -102 2730 0
+1791 1340 -1289 0
+-7 2773 114 0
+-3055 3472 1930 0
+-665 1577 2641 0
+3119 1741 1839 0
+3293 -1686 -1351 0
+-3259 -2785 2670 0
+-3497 1168 1646 0
+-3067 187 -1301 0
+1600 -2641 639 0
+-811 -1108 -1564 0
+-1970 -315 -354 0
+-652 1708 318 0
+-1416 -2163 1028 0
+-929 -882 -2467 0
+-1048 -1953 2273 0
+-1113 1339 -1995 0
+-912 2043 -965 0
+2472 -2245 -482 0
+1098 -2398 1479 0
+1 1142 -1181 0
+1969 656 222 0
+1501 -1796 -252 0
+2403 1641 358 0
+919 -32 3435 0
+1182 536 -1888 0
+2237 511 164 0
+2042 1864 -1707 0
+-3098 1339 -1757 0
+3361 -3151 2492 0
+1402 -3020 -2496 0
+155 -1763 623 0
+1397 -90 3002 0
+-1876 2406 -338 0
+1409 3338 -89 0
+-645 2502 3428 0
+1570 -2728 747 0
+1758 2515 -1903 0
+-144 -1115 3492 0
+3212 1649 -2460 0
+1878 3228 -3267 0
+2375 3237 1169 0
+-1453 -2626 -1275 0
+-2482 1306 468 0
+-1548 2698 3228 0
+1434 -1261 -2483 0
+-816 2364 -2960 0
+1035 2959 1378 0
+-1187 2151 -456 0
+290 -2798 1699 0
+-1143 630 -793 0
+3431 969 -2160 0
+-2327 -1340 -3353 0
+-2518 -3076 32 0
+287 -2034 3308 0
+2109 -3365 -3353 0
+-2351 2265 2077 0
+248 618 2688 0
+803 1510 -2874 0
+411 -1862 2746 0
+2677 2619 -593 0
+-3198 -2255 2762 0
+2886 -1735 -1095 0
+473 -2628 2277 0
+22 -1662 1631 0
+-53 -2262 3348 0
+-1642 -2296 1507 0
+1228 1066 -895 0
+-384 -558 -3348 0
+1513 2020 -1753 0
+582 958 -976 0
+2196 350 -3014 0
+2549 -2749 203 0
+2274 -1509 -98 0
+-2165 1226 1285 0
+-835 1283 1208 0
+2598 1376 -895 0
+1304 1630 57 0
+695 2420 -1662 0
+59 -628 -1011 0
+-763 277 137 0
+-804 1388 -2182 0
+3068 2226 -537 0
+-3030 1113 3434 0
+966 3101 1277 0
+-5 2456 585 0
+-1767 -1827 -67 0
+1937 492 831 0
+-2945 2260 2309 0
+-3332 -2186 1368 0
+43 -2002 1654 0
+-1590 -474 3074 0
+423 -173 2173 0
+-1943 1363 -2174 0
+2895 -3446 1437 0
+1542 2686 -477 0
+-2629 -760 1982 0
+141 -1844 -3319 0
+-1317 -2132 2464 0
+2850 2811 -3439 0
+609 -2227 -1524 0
+633 1269 -254 0
+1726 -2154 708 0
+-585 234 -1203 0
+22 1056 -3347 0
+-81 -2474 249 0
+-1511 -1149 2274 0
+2529 -1796 568 0
+-3154 1027 -368 0
+2585 2781 3223 0
+1134 -3083 2110 0
+605 -712 2899 0
+3155 3483 3109 0
+454 1701 -2650 0
+-210 -2458 -1875 0
+2118 -1983 -3116 0
+1530 -713 1973 0
+1726 2038 3078 0
+2258 -909 1511 0
+2527 -1793 1211 0
+-165 -3176 1527 0
+2741 -3012 -1798 0
+-65 -3112 -1730 0
+-249 2720 -946 0
+-1216 -2451 1457 0
+3176 3489 270 0
+2144 -1072 -2964 0
+3140 2891 -1631 0
+1940 1608 -3036 0
+-1890 2525 -260 0
+1001 -2104 -2786 0
+-2504 -1884 3085 0
+2943 -875 -1975 0
+3454 -884 1574 0
+-614 -1171 -803 0
+-121 -1365 2792 0
+1098 -2079 -1870 0
+828 -887 146 0
+-708 -3277 1661 0
+-2011 1314 1914 0
+1111 419 -758 0
+3125 -1504 -1337 0
+3367 1185 -368 0
+-115 -1430 -2666 0
+-1242 1864 857 0
+1171 -2311 -942 0
+-1298 1424 -2270 0
+-2674 -1425 -2889 0
+-1689 -2866 2896 0
+2707 3208 3192 0
+-1348 2531 2450 0
+3228 -538 3049 0
+411 -1443 2580 0
+-127 -335 385 0
+1525 367 663 0
+1796 920 2170 0
+798 117 -3048 0
+643 -1887 1794 0
+2918 -1734 1413 0
+-2983 1711 -668 0
+3408 885 3289 0
+-697 -1451 -1923 0
+478 -956 -1152 0
+-3331 1169 -321 0
+183 -2019 -3152 0
+-767 -1650 386 0
+-1205 -2025 -1895 0
+153 -3014 1237 0
+358 1233 2631 0
+-609 -1356 1206 0
+1813 566 123 0
+-1400 -2033 483 0
+372 -2799 1745 0
+-550 1603 129 0
+3336 46 3363 0
+2199 3223 1637 0
+215 -1174 -2960 0
+2673 2292 3216 0
+2508 2638 -2048 0
+-1342 -4 -3075 0
+-2638 1542 -1037 0
+2206 2713 3497 0
+-1535 2004 1142 0
+863 1984 758 0
+2767 2414 -3486 0
+-2636 261 1484 0
+354 2548 68 0
+1740 1714 1929 0
+-1962 -3004 -2791 0
+976 -2361 1326 0
+1878 -1470 -1138 0
+3434 -3141 -1058 0
+-1526 1311 3040 0
+2594 2530 1946 0
+-2360 -377 2812 0
+66 -2164 -3326 0
+988 -1292 -2241 0
+-337 1647 5 0
+-1386 -2687 1197 0
+2235 -555 -1276 0
+-814 1055 -2876 0
+2778 641 -991 0
+2918 3148 -2974 0
+2251 -1274 2570 0
+3 -2620 2991 0
+-2619 -2909 -1426 0
+-2358 -2755 -1447 0
+1175 -3237 747 0
+-1507 3424 -2945 0
+-2788 -2117 -726 0
+1840 2152 1839 0
+-3435 -2143 -545 0
+1361 1184 2368 0
+-3084 1428 -3155 0
+2000 320 -850 0
+2224 890 -437 0
+953 3425 -3060 0
+3185 2189 2018 0
+-2798 -1431 -1109 0
+-1597 -27 225 0
+-2961 65 3324 0
+-3078 -872 -371 0
+-3472 -1351 923 0
+3216 1470 946 0
+2231 2185 -959 0
+3134 1358 -769 0
+-198 -1958 -3349 0
+-1500 2384 1980 0
+-2719 -28 -2842 0
+3265 -16 -330 0
+860 -1394 -3160 0
+3399 2510 927 0
+686 -2179 1778 0
+2876 -2353 1684 0
+-377 -3266 3398 0
+-1367 -58 2974 0
+1424 3075 1230 0
+-2791 -2929 -1484 0
+2127 -2202 -264 0
+-2673 -1834 -1033 0
+-2534 -2488 -1660 0
+-2309 1335 -16 0
+-2385 -979 -775 0
+-3020 -3322 -380 0
+2107 -725 -1991 0
+-2170 656 115 0
+3119 -1899 -806 0
+-17 -1220 1505 0
+-3457 1395 -2745 0
+-3363 -1327 -1791 0
+2344 842 1619 0
+1816 -3379 -2190 0
+-2128 -376 3201 0
+-1842 2904 2935 0
+1512 3500 -3384 0
+2655 -2251 1727 0
+952 -1606 256 0
+-1516 2502 2231 0
+271 -1859 310 0
+-1822 -591 -1159 0
+112 2701 309 0
+2732 970 -2091 0
+1133 108 1997 0
+-2337 -2912 -1941 0
+1990 -1542 -2084 0
+-3054 -3013 1057 0
+-3182 1082 -1125 0
+-1876 -3279 2393 0
+823 -543 1925 0
+-3455 -2745 -2994 0
+-696 -22 1301 0
+30 -1367 -1633 0
+784 1249 1992 0
+-2337 1370 -3048 0
+-1862 209 -998 0
+-2433 -2248 -1902 0
+33 -1031 -3042 0
+390 -2672 -886 0
+-1779 -477 -2601 0
+-2943 -3025 2068 0
+2852 2216 3455 0
+-1648 2547 -1386 0
+-1841 -2412 -3414 0
+-2175 -3020 1341 0
+2675 3083 -435 0
+-2722 2650 -1386 0
+-2053 2591 -2211 0
+3187 -2253 1564 0
+1895 -359 -2888 0
+-35 2483 -761 0
+-1266 -2704 -1419 0
+-3019 -122 1070 0
+-2586 -2884 2854 0
+-4 -1185 -2663 0
+-2062 -2635 -2314 0
+-462 -3378 495 0
+254 -1267 -2123 0
+-2708 3091 2546 0
+3038 193 -2913 0
+-1295 -2052 2519 0
+324 945 -2646 0
+1497 1452 -3274 0
+-1598 -1281 -1072 0
+-133 -2877 -1332 0
+3180 -263 3054 0
+-2596 2262 -78 0
+1479 805 -836 0
+-3003 3059 -123 0
+-1111 -1240 -580 0
+-2776 -1696 1991 0
+-2319 1127 1126 0
+2487 -2778 2033 0
+369 2547 -2319 0
+557 -2925 -416 0
+867 -264 2728 0
+312 3340 2627 0
+2642 -69 -1403 0
+-2033 -137 1699 0
+249 -2385 551 0
+-3177 -2490 -480 0
+-2194 -3264 -2229 0
+2999 502 -3290 0
+1670 -177 2901 0
+763 629 2821 0
+2446 -2597 2437 0
+3153 -368 -3164 0
+-1806 -467 2231 0
+-713 -2077 2207 0
+2763 -1126 -2615 0
+-1072 -2942 2995 0
+3245 3009 -2064 0
+-2709 1835 -2678 0
+-3431 -965 -778 0
+-3485 -2640 -3433 0
+1555 3314 1172 0
+2876 1956 -1029 0
+1557 -889 3412 0
+-457 3455 -1850 0
+-1093 774 -2943 0
+1985 -1709 1994 0
+-1107 -298 253 0
+81 1563 -1701 0
+-1035 1316 78 0
+-3201 1938 1685 0
+-791 1801 2353 0
+2413 -362 -3403 0
+-1949 719 -1926 0
+2929 -1967 2643 0
+-1868 -3255 253 0
+-737 730 2131 0
+1090 2016 -1518 0
+-13 -2856 -3231 0
+-1527 -1429 86 0
+3361 2915 -2258 0
+-1054 710 2031 0
+-1367 383 -1070 0
+1801 -1867 -1812 0
+2437 756 3332 0
+936 -2794 -2808 0
+-17 -1045 2145 0
+-67 -2694 -3394 0
+-2350 1345 -2850 0
+-2313 -2995 2151 0
+-409 -2519 -3436 0
+-1253 -2187 -680 0
+-1872 843 -1195 0
+1328 -2430 -760 0
+-2329 65 -2641 0
+-1150 -1802 2752 0
+1994 1690 -2801 0
+1512 -3116 2237 0
+-3089 -855 2737 0
+297 1187 -3388 0
+-2577 -3376 1206 0
+-2615 -3131 -379 0
+-3174 -104 -744 0
+100 2405 -2350 0
+2568 3205 3009 0
+581 631 2962 0
+-3083 1535 2882 0
+1645 304 1844 0
+-588 -1379 2897 0
+-1132 2876 2219 0
+-430 968 3255 0
+-2895 2506 2051 0
+2843 942 1944 0
+-693 -1229 -2023 0
+-2300 -2590 492 0
+558 607 -1980 0
+-1955 -3200 -2305 0
+2848 1946 -1293 0
+3075 2921 -557 0
+1430 1099 1030 0
+-1828 -2511 -3113 0
+-2795 -2365 2528 0
+744 2817 2164 0
+-3079 2595 2543 0
+-442 2507 992 0
+-3130 -1624 1753 0
+-3130 -2804 -42 0
+3164 -206 -3475 0
+3089 609 2053 0
+1835 124 535 0
+-877 -434 -2304 0
+-237 3233 429 0
+1371 560 2573 0
+-445 -88 845 0
+-705 1134 -20 0
+1943 -1832 3397 0
+-1062 2569 -3173 0
+569 3089 -2619 0
+-1663 -823 617 0
+390 847 2149 0
+-3191 -1762 2967 0
+-2157 -1792 1323 0
+-721 2508 3020 0
+2471 1190 -2933 0
+-1461 -3128 1345 0
+3173 -2367 -2556 0
+3093 2362 2437 0
+2848 2077 -3467 0
+3481 -2779 -2231 0
+-2976 2033 -2499 0
+-880 -912 105 0
+-1580 -1180 1080 0
+-626 3273 -2281 0
+-799 -2177 3431 0
+2289 1099 2010 0
+698 2267 2635 0
+1577 2067 1155 0
+-2871 74 983 0
+-2382 -1116 -1860 0
+1965 452 1469 0
+-3159 1850 276 0
+-796 1698 1108 0
+2510 1133 -3121 0
+1437 398 3060 0
+97 -2904 1087 0
+-3010 -3039 2671 0
+-2344 1667 2829 0
+3394 -3251 -921 0
+3143 1373 1409 0
+2296 2456 -2054 0
+-2572 -787 -2923 0
+1926 3422 2308 0
+2866 1089 3227 0
+1988 -866 -2909 0
+-792 280 3403 0
+3288 -398 1086 0
+-531 1587 3103 0
+3203 2595 1584 0
+2801 -1691 3431 0
+2441 -2803 -470 0
+-1555 -1680 832 0
+1772 2276 -1814 0
+-253 -846 2308 0
+1669 -2501 -1774 0
+-958 -3154 3436 0
+2966 -380 3441 0
+-411 -2572 -1572 0
+-1065 2401 -1171 0
+840 2816 -2698 0
+-2271 1804 -416 0
+-2048 3229 1027 0
+-138 1382 624 0
+-95 -1277 -99 0
+-203 -1786 -778 0
+608 -1139 -1473 0
+-651 -1436 2447 0
+-49 -399 -1793 0
+-883 2710 1107 0
+-246 -604 376 0
+-571 124 -3069 0
+-2062 1154 3466 0
+92 2632 -1386 0
+272 2174 -3403 0
+2240 -2672 -1170 0
+-555 -1061 -283 0
+1452 -1633 3353 0
+-307 1962 1829 0
+2953 -442 -3255 0
+-1407 -492 -1338 0
+125 -3402 2570 0
+-1815 -2530 -3126 0
+-1545 -2327 -2870 0
+-3353 -2756 -449 0
+-638 -1005 -2432 0
+-2790 734 242 0
+-2876 -324 2003 0
+-787 3382 53 0
+-268 1573 199 0
+2035 376 -1965 0
+1882 -1864 445 0
+-2418 661 1725 0
+-2690 2711 2124 0
+1822 2669 -1916 0
+1916 -204 -3490 0
+1598 -3422 986 0
+2067 -188 -2644 0
+1891 923 905 0
+-365 1938 -2621 0
+-2401 -804 3328 0
+-1273 2664 1387 0
+1561 -52 2681 0
+160 -1028 2172 0
+-629 -1159 -2070 0
+2921 1316 -75 0
+1017 2569 2542 0
+329 -408 -2351 0
+-3074 -659 93 0
+-2534 1868 -3289 0
+472 1408 -2933 0
+2930 -2830 -629 0
+2453 2473 1336 0
+-2449 -333 1511 0
+-2439 1147 -736 0
+-1243 -144 2994 0
+633 -25 922 0
+-1833 -1609 -2735 0
+2129 -354 -1291 0
+2887 -2408 -1035 0
+-1469 850 1428 0
+-1188 2766 2023 0
+-1864 61 1161 0
+2917 978 2251 0
+1633 -2498 -2172 0
+183 2311 -1752 0
+-1375 -2299 650 0
+-827 1176 2485 0
+-182 2126 -1671 0
+-3428 -2515 -344 0
+2458 -1326 -1558 0
+-1506 2515 71 0
+-1125 2177 -1785 0
+-1137 3062 3125 0
+639 1036 1978 0
+839 1904 -2203 0
+-1740 -2893 -512 0
+-418 -361 436 0
+-255 -611 1334 0
+1049 -3288 1626 0
+3463 -2700 -1128 0
+-1827 1610 -122 0
+-683 257 3133 0
+3187 -2263 -3203 0
+-533 -2068 2835 0
+-2085 -2657 1163 0
+-2686 3152 -709 0
+-2917 312 -2433 0
+365 -3331 -2417 0
+2723 284 3269 0
+-1483 -2415 -3137 0
+-924 3066 3119 0
+-347 1665 -2208 0
+-602 -2717 -1699 0
+-3465 1083 -2211 0
+3366 -2705 833 0
+-2357 -1164 -2330 0
+-2196 -3317 3336 0
+958 1096 -869 0
+-1808 214 1082 0
+-242 -2618 -3227 0
+-1787 1706 505 0
+233 -3213 3061 0
+2073 -3485 692 0
+-2462 -1687 -1890 0
+1601 -215 -1577 0
+669 -2024 2814 0
+2910 1729 -3095 0
+-2170 1807 1336 0
+-3009 1498 -2974 0
+-463 -2018 1792 0
+618 3458 -1334 0
+1670 2316 -3365 0
+1187 77 690 0
+-1992 1710 -1393 0
+3376 -2256 2533 0
+1987 3007 2292 0
+1215 1583 -359 0
+-1940 -3483 -1039 0
+3429 -870 3019 0
+-2821 -618 1287 0
+2123 -2800 1717 0
+-2470 2053 2961 0
+-2001 456 3417 0
+2656 -1024 1485 0
+-2287 3435 2381 0
+2553 -994 2633 0
+-3444 -2140 -2155 0
+-907 3000 2639 0
+2856 -2763 -1818 0
+-920 1552 8 0
+2076 -1436 914 0
+-2279 -2171 -2854 0
+2518 1481 1622 0
+-1435 -2413 1356 0
+-1445 1334 -3130 0
+-3428 403 -1274 0
+1931 2173 970 0
+-1427 -1786 -2006 0
+-26 884 -638 0
+-3168 1014 -1578 0
+-2343 -2349 -2867 0
+-561 174 1898 0
+761 -1131 2731 0
+-2454 -3076 -1695 0
+2076 -2295 2363 0
+233 -1876 452 0
+2703 2540 -247 0
+520 762 53 0
+1286 -2749 -2343 0
+-1074 2305 -508 0
+-240 2374 3322 0
+-3358 -338 -1901 0
+-3334 1590 -570 0
+588 648 2717 0
+-780 408 159 0
+-753 -1657 -2513 0
+2451 503 -1266 0
+3372 -1322 -1696 0
+-3103 -247 -2120 0
+3240 3254 -2484 0
+-1063 -311 -2863 0
+697 1693 -1102 0
+102 -558 2434 0
+-3316 1036 2286 0
+-3025 -2555 2172 0