*** empty log message ***
authorNilesh Choudhury <nchoudh2@uiuc.edu>
Fri, 23 Sep 2005 16:46:43 +0000 (16:46 +0000)
committerNilesh Choudhury <nchoudh2@uiuc.edu>
Fri, 23 Sep 2005 16:46:43 +0000 (16:46 +0000)
14 files changed:
examples/fem/3Dexample/Makefile [new file with mode: 0644]
examples/fem/3Dexample/charmrun [deleted file]
examples/fem/3Dexample/generatenode.sh [new file with mode: 0755]
examples/fem/3Dexample/generatetet.sh [new file with mode: 0755]
examples/fem/3Dexample/matrix.h [new file with mode: 0644]
examples/fem/3Dexample/mesh1.node [new file with mode: 0644]
examples/fem/3Dexample/mesh1.tet [new file with mode: 0644]
examples/fem/3Dexample/mesh1000.node [new file with mode: 0644]
examples/fem/3Dexample/mesh1000.tet [new file with mode: 0644]
examples/fem/3Dexample/pgm [deleted file]
examples/fem/3Dexample/pgm.C [new file with mode: 0644]
examples/fem/3Dexample/pgm.h [new file with mode: 0644]
examples/fem/3Dexample/pgm.o [deleted file]
examples/fem/3Dexample/vector3d.h [new file with mode: 0644]

diff --git a/examples/fem/3Dexample/Makefile b/examples/fem/3Dexample/Makefile
new file mode 100644 (file)
index 0000000..22465b1
--- /dev/null
@@ -0,0 +1,18 @@
+CHARMC=../../../bin/charmc $(OPTS) 
+
+all: pgm
+
+pgm: pgm.o
+       $(CHARMC) -o pgm pgm.o -language fem -module netfem #-memory paranoid 
+
+pgm.o: pgm.C
+       $(CHARMC) -g -I../../../src/libs/ck-libs/fem -c pgm.C
+
+test: pgm
+       ./charmrun ./pgm +vp4 +p2
+
+bgtest: pgm
+       ./charmrun ./pgm +vp4 +p2 +x2 +y2 +z1
+
+clean:
+       rm -rf pgm fpgm *.o conv-host charmrun NetFEM Paraview* ParaView* *~ pvClient.out README
diff --git a/examples/fem/3Dexample/charmrun b/examples/fem/3Dexample/charmrun
deleted file mode 100644 (file)
index e4c4fea..0000000
Binary files a/examples/fem/3Dexample/charmrun and /dev/null differ
diff --git a/examples/fem/3Dexample/generatenode.sh b/examples/fem/3Dexample/generatenode.sh
new file mode 100755 (executable)
index 0000000..e66c5a7
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+let "mini = 0";
+let "i = $mini";
+let "maxi = 2";
+let "minj = 0";
+let "j = $minj";
+let "maxj = 2";
+let "mink = 0";
+let "k = $mink";
+let "maxk = 2";
+let "count = 1";
+let "total = ($maxi+1) * ($maxj+1) * ($maxk+1)";
+echo $total;
+while [ $i -le $maxi ]
+  do
+  let "j = 0";
+  ycord=$(echo "$i * 0.01" | bc);
+  while [ $j -le $maxj ]
+    do
+    xcord=$(echo "$j * 0.01" | bc);
+    let "k = 0";
+    while [ $k -le $maxk ]
+      do
+      zcord=$(echo "$k * 0.01" | bc);
+      let "bound = 0";
+      if [ $i -eq $mini ] 
+         then
+         let "bound = -1";
+      fi
+      if [ $j -eq $maxj ]
+         then
+         let "bound = -2";
+      fi
+      if [ $i -eq $maxi ]
+         then
+         let "bound = -3";
+      fi
+      if [ $j -eq $minj ] 
+         then
+         let "bound = -4";
+      fi
+
+      echo $count $xcord $ycord $zcord $bound;
+      let "count = count + 1";
+      let "k = $k + 1";
+    done
+    let "j = $j + 1";
+  done
+  let "i = $i + 1";
+done
diff --git a/examples/fem/3Dexample/generatetet.sh b/examples/fem/3Dexample/generatetet.sh
new file mode 100755 (executable)
index 0000000..3b41a58
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+let "i = 0";
+let "maxi = 2";
+let "j = 0";
+let "maxj = 2";
+let "k = 0";
+let "maxk = 2";
+let "count = 1";
+let "total = $maxi * $maxj * $maxk * 6";
+echo $total;
+while [ $i -lt $maxi ]
+  do
+  let "j = 0";
+  while [ $j -lt $maxj ]
+    do
+    let "k = 0";
+    while [ $k -lt $maxk ]
+      do
+      let "vert1 = $i * ($maxk+1) * ($maxj+1) + $j * ($maxk+1) + $k";
+      let "vert2 = $vert1 + 1";
+      let "vert3 = $vert1 + ($maxk+1)";
+      let "vert4 = $vert3 + 1";
+      let "vert5 = $vert1 + ($maxk+1) * ($maxj+1)";
+      let "vert6 = $vert5 + 1";
+      let "vert7 = $vert5 + ($maxk+1)";
+      let "vert8 = $vert7 + 1";
+      echo $count $vert1 $vert2 $vert4 $vert6;
+      let "count = count + 1";
+      echo $count $vert5 $vert8 $vert6 $vert1;
+      let "count = count + 1";
+      echo $count $vert8 $vert6 $vert4 $vert1;
+      let "count = count + 1";
+      echo $count $vert1 $vert3 $vert4 $vert7;
+      let "count = count + 1";
+      echo $count $vert5 $vert8 $vert7 $vert4;
+      let "count = count + 1";
+      echo $count $vert7 $vert4 $vert1 $vert5;
+      let "count = count + 1";
+      let "k = $k + 1";
+    done
+      let "j = $j + 1";
+  done
+  let "i = $i + 1";
+done
+
diff --git a/examples/fem/3Dexample/matrix.h b/examples/fem/3Dexample/matrix.h
new file mode 100644 (file)
index 0000000..a98ec10
--- /dev/null
@@ -0,0 +1,64 @@
+/// Matrix class with some fundmental operations
+/** This is probably a bad thing to do, but given my luck with STL of late,
+    I don't want to have to deal with anyone else's ill- or un-documented
+    code.  Matrices are here to get Delaunay flippable tests done. */
+class Matrix {
+ protected:
+  /// this mtx can be of any size
+  double **mtx;
+  /// dimension of matrix (when using square matrices)
+  int order;
+  
+ public:
+  /// Perform basic initialization
+  /** Allocate arrays for a square matrix of size dim X dim, and initialize
+      order to dim. */
+  Matrix(int dim) {
+    mtx = (double **)malloc(dim*sizeof(double *));
+    for (int i=0; i<dim; i++)
+      mtx[i] = (double *)malloc(dim*sizeof(double));
+    order = dim;
+  }
+  
+  /// Sets element i,j of matrix
+  void setElement(int i, int j, double value) { 
+    CmiAssert((i < order) && (j < order));
+    mtx[i][j] = value; 
+  }
+
+  /// Accesses matrix and returns mtx[i][j] (value)
+  const double &elem(int i, int j) const { 
+    CmiAssert((i < order) && (j < order));
+    return mtx[i][j]; 
+  }
+  
+  /// Calculate and return the matrix' determinant
+  double determinant(void) const {
+    double d = 0.0;
+    if (order <= 1) return elem(0, 0);
+    for (int i=0; i<order; i++) {
+      double sign = (i%2) ? -1 : 1;
+      d += sign * elem(i, 0) * cofactor(i, 0).determinant();
+    }
+    return d;
+  }
+
+  /// Helper to determinant but may eventually be generally useful
+  /** Returns a new matrix with dim one smaller than current, with 
+      row aI and column aJ removed.  */
+  Matrix cofactor(int aI, int aJ) const {
+    CmiAssert((aI < order) && (aJ < order));
+    Matrix a(order-1);
+    for (int i=0, k=0; i<order; i++)
+      if (i != aI) {
+        for (int j=0, l=0; j<order; j++) {
+          if (j != aJ) {
+            a.setElement(k, l, elem(i, j));
+            l++;
+          }
+        }
+        k++;
+      }
+    return a;
+  }
+};
diff --git a/examples/fem/3Dexample/mesh1.node b/examples/fem/3Dexample/mesh1.node
new file mode 100644 (file)
index 0000000..faa6d10
--- /dev/null
@@ -0,0 +1,28 @@
+27
+1 0 0 0 -4
+2 0 0 .01 -4
+3 0 0 .02 -4
+4 .01 0 0 -1
+5 .01 0 .01 -1
+6 .01 0 .02 -1
+7 .02 0 0 -2
+8 .02 0 .01 -2
+9 .02 0 .02 -2
+10 0 .01 0 -4
+11 0 .01 .01 -4
+12 0 .01 .02 -4
+13 .01 .01 0 0
+14 .01 .01 .01 0
+15 .01 .01 .02 0
+16 .02 .01 0 -2
+17 .02 .01 .01 -2
+18 .02 .01 .02 -2
+19 0 .02 0 -4
+20 0 .02 .01 -4
+21 0 .02 .02 -4
+22 .01 .02 0 -3
+23 .01 .02 .01 -3
+24 .01 .02 .02 -3
+25 .02 .02 0 -3
+26 .02 .02 .01 -3
+27 .02 .02 .02 -3
diff --git a/examples/fem/3Dexample/mesh1.tet b/examples/fem/3Dexample/mesh1.tet
new file mode 100644 (file)
index 0000000..bb01757
--- /dev/null
@@ -0,0 +1,49 @@
+48
+1 0 1 4 10
+2 9 13 10 0
+3 13 10 4 0
+4 0 3 4 12
+5 9 13 12 4
+6 12 4 0 9
+7 1 2 5 11
+8 10 14 11 1
+9 14 11 5 1
+10 1 4 5 13
+11 10 14 13 5
+12 13 5 1 10
+13 3 4 7 13
+14 12 16 13 3
+15 16 13 7 3
+16 3 6 7 15
+17 12 16 15 7
+18 15 7 3 12
+19 4 5 8 14
+20 13 17 14 4
+21 17 14 8 4
+22 4 7 8 16
+23 13 17 16 8
+24 16 8 4 13
+25 9 10 13 19
+26 18 22 19 9
+27 22 19 13 9
+28 9 12 13 21
+29 18 22 21 13
+30 21 13 9 18
+31 10 11 14 20
+32 19 23 20 10
+33 23 20 14 10
+34 10 13 14 22
+35 19 23 22 14
+36 22 14 10 19
+37 12 13 16 22
+38 21 25 22 12
+39 25 22 16 12
+40 12 15 16 24
+41 21 25 24 16
+42 24 16 12 21
+43 13 14 17 23
+44 22 26 23 13
+45 26 23 17 13
+46 13 16 17 25
+47 22 26 25 17
+48 25 17 13 22
diff --git a/examples/fem/3Dexample/mesh1000.node b/examples/fem/3Dexample/mesh1000.node
new file mode 100644 (file)
index 0000000..32e0ea4
--- /dev/null
@@ -0,0 +1,1332 @@
+1331
+1 0 0 0 -4
+2 0 0 .01 -4
+3 0 0 .02 -4
+4 0 0 .03 -4
+5 0 0 .04 -4
+6 0 0 .05 -4
+7 0 0 .06 -4
+8 0 0 .07 -4
+9 0 0 .08 -4
+10 0 0 .09 -4
+11 0 0 .10 -4
+12 .01 0 0 -1
+13 .01 0 .01 -1
+14 .01 0 .02 -1
+15 .01 0 .03 -1
+16 .01 0 .04 -1
+17 .01 0 .05 -1
+18 .01 0 .06 -1
+19 .01 0 .07 -1
+20 .01 0 .08 -1
+21 .01 0 .09 -1
+22 .01 0 .10 -1
+23 .02 0 0 -1
+24 .02 0 .01 -1
+25 .02 0 .02 -1
+26 .02 0 .03 -1
+27 .02 0 .04 -1
+28 .02 0 .05 -1
+29 .02 0 .06 -1
+30 .02 0 .07 -1
+31 .02 0 .08 -1
+32 .02 0 .09 -1
+33 .02 0 .10 -1
+34 .03 0 0 -1
+35 .03 0 .01 -1
+36 .03 0 .02 -1
+37 .03 0 .03 -1
+38 .03 0 .04 -1
+39 .03 0 .05 -1
+40 .03 0 .06 -1
+41 .03 0 .07 -1
+42 .03 0 .08 -1
+43 .03 0 .09 -1
+44 .03 0 .10 -1
+45 .04 0 0 -1
+46 .04 0 .01 -1
+47 .04 0 .02 -1
+48 .04 0 .03 -1
+49 .04 0 .04 -1
+50 .04 0 .05 -1
+51 .04 0 .06 -1
+52 .04 0 .07 -1
+53 .04 0 .08 -1
+54 .04 0 .09 -1
+55 .04 0 .10 -1
+56 .05 0 0 -1
+57 .05 0 .01 -1
+58 .05 0 .02 -1
+59 .05 0 .03 -1
+60 .05 0 .04 -1
+61 .05 0 .05 -1
+62 .05 0 .06 -1
+63 .05 0 .07 -1
+64 .05 0 .08 -1
+65 .05 0 .09 -1
+66 .05 0 .10 -1
+67 .06 0 0 -1
+68 .06 0 .01 -1
+69 .06 0 .02 -1
+70 .06 0 .03 -1
+71 .06 0 .04 -1
+72 .06 0 .05 -1
+73 .06 0 .06 -1
+74 .06 0 .07 -1
+75 .06 0 .08 -1
+76 .06 0 .09 -1
+77 .06 0 .10 -1
+78 .07 0 0 -1
+79 .07 0 .01 -1
+80 .07 0 .02 -1
+81 .07 0 .03 -1
+82 .07 0 .04 -1
+83 .07 0 .05 -1
+84 .07 0 .06 -1
+85 .07 0 .07 -1
+86 .07 0 .08 -1
+87 .07 0 .09 -1
+88 .07 0 .10 -1
+89 .08 0 0 -1
+90 .08 0 .01 -1
+91 .08 0 .02 -1
+92 .08 0 .03 -1
+93 .08 0 .04 -1
+94 .08 0 .05 -1
+95 .08 0 .06 -1
+96 .08 0 .07 -1
+97 .08 0 .08 -1
+98 .08 0 .09 -1
+99 .08 0 .10 -1
+100 .09 0 0 -1
+101 .09 0 .01 -1
+102 .09 0 .02 -1
+103 .09 0 .03 -1
+104 .09 0 .04 -1
+105 .09 0 .05 -1
+106 .09 0 .06 -1
+107 .09 0 .07 -1
+108 .09 0 .08 -1
+109 .09 0 .09 -1
+110 .09 0 .10 -1
+111 .10 0 0 -2
+112 .10 0 .01 -2
+113 .10 0 .02 -2
+114 .10 0 .03 -2
+115 .10 0 .04 -2
+116 .10 0 .05 -2
+117 .10 0 .06 -2
+118 .10 0 .07 -2
+119 .10 0 .08 -2
+120 .10 0 .09 -2
+121 .10 0 .10 -2
+122 0 .01 0 -4
+123 0 .01 .01 -4
+124 0 .01 .02 -4
+125 0 .01 .03 -4
+126 0 .01 .04 -4
+127 0 .01 .05 -4
+128 0 .01 .06 -4
+129 0 .01 .07 -4
+130 0 .01 .08 -4
+131 0 .01 .09 -4
+132 0 .01 .10 -4
+133 .01 .01 0 0
+134 .01 .01 .01 0
+135 .01 .01 .02 0
+136 .01 .01 .03 0
+137 .01 .01 .04 0
+138 .01 .01 .05 0
+139 .01 .01 .06 0
+140 .01 .01 .07 0
+141 .01 .01 .08 0
+142 .01 .01 .09 0
+143 .01 .01 .10 0
+144 .02 .01 0 0
+145 .02 .01 .01 0
+146 .02 .01 .02 0
+147 .02 .01 .03 0
+148 .02 .01 .04 0
+149 .02 .01 .05 0
+150 .02 .01 .06 0
+151 .02 .01 .07 0
+152 .02 .01 .08 0
+153 .02 .01 .09 0
+154 .02 .01 .10 0
+155 .03 .01 0 0
+156 .03 .01 .01 0
+157 .03 .01 .02 0
+158 .03 .01 .03 0
+159 .03 .01 .04 0
+160 .03 .01 .05 0
+161 .03 .01 .06 0
+162 .03 .01 .07 0
+163 .03 .01 .08 0
+164 .03 .01 .09 0
+165 .03 .01 .10 0
+166 .04 .01 0 0
+167 .04 .01 .01 0
+168 .04 .01 .02 0
+169 .04 .01 .03 0
+170 .04 .01 .04 0
+171 .04 .01 .05 0
+172 .04 .01 .06 0
+173 .04 .01 .07 0
+174 .04 .01 .08 0
+175 .04 .01 .09 0
+176 .04 .01 .10 0
+177 .05 .01 0 0
+178 .05 .01 .01 0
+179 .05 .01 .02 0
+180 .05 .01 .03 0
+181 .05 .01 .04 0
+182 .05 .01 .05 0
+183 .05 .01 .06 0
+184 .05 .01 .07 0
+185 .05 .01 .08 0
+186 .05 .01 .09 0
+187 .05 .01 .10 0
+188 .06 .01 0 0
+189 .06 .01 .01 0
+190 .06 .01 .02 0
+191 .06 .01 .03 0
+192 .06 .01 .04 0
+193 .06 .01 .05 0
+194 .06 .01 .06 0
+195 .06 .01 .07 0
+196 .06 .01 .08 0
+197 .06 .01 .09 0
+198 .06 .01 .10 0
+199 .07 .01 0 0
+200 .07 .01 .01 0
+201 .07 .01 .02 0
+202 .07 .01 .03 0
+203 .07 .01 .04 0
+204 .07 .01 .05 0
+205 .07 .01 .06 0
+206 .07 .01 .07 0
+207 .07 .01 .08 0
+208 .07 .01 .09 0
+209 .07 .01 .10 0
+210 .08 .01 0 0
+211 .08 .01 .01 0
+212 .08 .01 .02 0
+213 .08 .01 .03 0
+214 .08 .01 .04 0
+215 .08 .01 .05 0
+216 .08 .01 .06 0
+217 .08 .01 .07 0
+218 .08 .01 .08 0
+219 .08 .01 .09 0
+220 .08 .01 .10 0
+221 .09 .01 0 0
+222 .09 .01 .01 0
+223 .09 .01 .02 0
+224 .09 .01 .03 0
+225 .09 .01 .04 0
+226 .09 .01 .05 0
+227 .09 .01 .06 0
+228 .09 .01 .07 0
+229 .09 .01 .08 0
+230 .09 .01 .09 0
+231 .09 .01 .10 0
+232 .10 .01 0 -2
+233 .10 .01 .01 -2
+234 .10 .01 .02 -2
+235 .10 .01 .03 -2
+236 .10 .01 .04 -2
+237 .10 .01 .05 -2
+238 .10 .01 .06 -2
+239 .10 .01 .07 -2
+240 .10 .01 .08 -2
+241 .10 .01 .09 -2
+242 .10 .01 .10 -2
+243 0 .02 0 -4
+244 0 .02 .01 -4
+245 0 .02 .02 -4
+246 0 .02 .03 -4
+247 0 .02 .04 -4
+248 0 .02 .05 -4
+249 0 .02 .06 -4
+250 0 .02 .07 -4
+251 0 .02 .08 -4
+252 0 .02 .09 -4
+253 0 .02 .10 -4
+254 .01 .02 0 0
+255 .01 .02 .01 0
+256 .01 .02 .02 0
+257 .01 .02 .03 0
+258 .01 .02 .04 0
+259 .01 .02 .05 0
+260 .01 .02 .06 0
+261 .01 .02 .07 0
+262 .01 .02 .08 0
+263 .01 .02 .09 0
+264 .01 .02 .10 0
+265 .02 .02 0 0
+266 .02 .02 .01 0
+267 .02 .02 .02 0
+268 .02 .02 .03 0
+269 .02 .02 .04 0
+270 .02 .02 .05 0
+271 .02 .02 .06 0
+272 .02 .02 .07 0
+273 .02 .02 .08 0
+274 .02 .02 .09 0
+275 .02 .02 .10 0
+276 .03 .02 0 0
+277 .03 .02 .01 0
+278 .03 .02 .02 0
+279 .03 .02 .03 0
+280 .03 .02 .04 0
+281 .03 .02 .05 0
+282 .03 .02 .06 0
+283 .03 .02 .07 0
+284 .03 .02 .08 0
+285 .03 .02 .09 0
+286 .03 .02 .10 0
+287 .04 .02 0 0
+288 .04 .02 .01 0
+289 .04 .02 .02 0
+290 .04 .02 .03 0
+291 .04 .02 .04 0
+292 .04 .02 .05 0
+293 .04 .02 .06 0
+294 .04 .02 .07 0
+295 .04 .02 .08 0
+296 .04 .02 .09 0
+297 .04 .02 .10 0
+298 .05 .02 0 0
+299 .05 .02 .01 0
+300 .05 .02 .02 0
+301 .05 .02 .03 0
+302 .05 .02 .04 0
+303 .05 .02 .05 0
+304 .05 .02 .06 0
+305 .05 .02 .07 0
+306 .05 .02 .08 0
+307 .05 .02 .09 0
+308 .05 .02 .10 0
+309 .06 .02 0 0
+310 .06 .02 .01 0
+311 .06 .02 .02 0
+312 .06 .02 .03 0
+313 .06 .02 .04 0
+314 .06 .02 .05 0
+315 .06 .02 .06 0
+316 .06 .02 .07 0
+317 .06 .02 .08 0
+318 .06 .02 .09 0
+319 .06 .02 .10 0
+320 .07 .02 0 0
+321 .07 .02 .01 0
+322 .07 .02 .02 0
+323 .07 .02 .03 0
+324 .07 .02 .04 0
+325 .07 .02 .05 0
+326 .07 .02 .06 0
+327 .07 .02 .07 0
+328 .07 .02 .08 0
+329 .07 .02 .09 0
+330 .07 .02 .10 0
+331 .08 .02 0 0
+332 .08 .02 .01 0
+333 .08 .02 .02 0
+334 .08 .02 .03 0
+335 .08 .02 .04 0
+336 .08 .02 .05 0
+337 .08 .02 .06 0
+338 .08 .02 .07 0
+339 .08 .02 .08 0
+340 .08 .02 .09 0
+341 .08 .02 .10 0
+342 .09 .02 0 0
+343 .09 .02 .01 0
+344 .09 .02 .02 0
+345 .09 .02 .03 0
+346 .09 .02 .04 0
+347 .09 .02 .05 0
+348 .09 .02 .06 0
+349 .09 .02 .07 0
+350 .09 .02 .08 0
+351 .09 .02 .09 0
+352 .09 .02 .10 0
+353 .10 .02 0 -2
+354 .10 .02 .01 -2
+355 .10 .02 .02 -2
+356 .10 .02 .03 -2
+357 .10 .02 .04 -2
+358 .10 .02 .05 -2
+359 .10 .02 .06 -2
+360 .10 .02 .07 -2
+361 .10 .02 .08 -2
+362 .10 .02 .09 -2
+363 .10 .02 .10 -2
+364 0 .03 0 -4
+365 0 .03 .01 -4
+366 0 .03 .02 -4
+367 0 .03 .03 -4
+368 0 .03 .04 -4
+369 0 .03 .05 -4
+370 0 .03 .06 -4
+371 0 .03 .07 -4
+372 0 .03 .08 -4
+373 0 .03 .09 -4
+374 0 .03 .10 -4
+375 .01 .03 0 0
+376 .01 .03 .01 0
+377 .01 .03 .02 0
+378 .01 .03 .03 0
+379 .01 .03 .04 0
+380 .01 .03 .05 0
+381 .01 .03 .06 0
+382 .01 .03 .07 0
+383 .01 .03 .08 0
+384 .01 .03 .09 0
+385 .01 .03 .10 0
+386 .02 .03 0 0
+387 .02 .03 .01 0
+388 .02 .03 .02 0
+389 .02 .03 .03 0
+390 .02 .03 .04 0
+391 .02 .03 .05 0
+392 .02 .03 .06 0
+393 .02 .03 .07 0
+394 .02 .03 .08 0
+395 .02 .03 .09 0
+396 .02 .03 .10 0
+397 .03 .03 0 0
+398 .03 .03 .01 0
+399 .03 .03 .02 0
+400 .03 .03 .03 0
+401 .03 .03 .04 0
+402 .03 .03 .05 0
+403 .03 .03 .06 0
+404 .03 .03 .07 0
+405 .03 .03 .08 0
+406 .03 .03 .09 0
+407 .03 .03 .10 0
+408 .04 .03 0 0
+409 .04 .03 .01 0
+410 .04 .03 .02 0
+411 .04 .03 .03 0
+412 .04 .03 .04 0
+413 .04 .03 .05 0
+414 .04 .03 .06 0
+415 .04 .03 .07 0
+416 .04 .03 .08 0
+417 .04 .03 .09 0
+418 .04 .03 .10 0
+419 .05 .03 0 0
+420 .05 .03 .01 0
+421 .05 .03 .02 0
+422 .05 .03 .03 0
+423 .05 .03 .04 0
+424 .05 .03 .05 0
+425 .05 .03 .06 0
+426 .05 .03 .07 0
+427 .05 .03 .08 0
+428 .05 .03 .09 0
+429 .05 .03 .10 0
+430 .06 .03 0 0
+431 .06 .03 .01 0
+432 .06 .03 .02 0
+433 .06 .03 .03 0
+434 .06 .03 .04 0
+435 .06 .03 .05 0
+436 .06 .03 .06 0
+437 .06 .03 .07 0
+438 .06 .03 .08 0
+439 .06 .03 .09 0
+440 .06 .03 .10 0
+441 .07 .03 0 0
+442 .07 .03 .01 0
+443 .07 .03 .02 0
+444 .07 .03 .03 0
+445 .07 .03 .04 0
+446 .07 .03 .05 0
+447 .07 .03 .06 0
+448 .07 .03 .07 0
+449 .07 .03 .08 0
+450 .07 .03 .09 0
+451 .07 .03 .10 0
+452 .08 .03 0 0
+453 .08 .03 .01 0
+454 .08 .03 .02 0
+455 .08 .03 .03 0
+456 .08 .03 .04 0
+457 .08 .03 .05 0
+458 .08 .03 .06 0
+459 .08 .03 .07 0
+460 .08 .03 .08 0
+461 .08 .03 .09 0
+462 .08 .03 .10 0
+463 .09 .03 0 0
+464 .09 .03 .01 0
+465 .09 .03 .02 0
+466 .09 .03 .03 0
+467 .09 .03 .04 0
+468 .09 .03 .05 0
+469 .09 .03 .06 0
+470 .09 .03 .07 0
+471 .09 .03 .08 0
+472 .09 .03 .09 0
+473 .09 .03 .10 0
+474 .10 .03 0 -2
+475 .10 .03 .01 -2
+476 .10 .03 .02 -2
+477 .10 .03 .03 -2
+478 .10 .03 .04 -2
+479 .10 .03 .05 -2
+480 .10 .03 .06 -2
+481 .10 .03 .07 -2
+482 .10 .03 .08 -2
+483 .10 .03 .09 -2
+484 .10 .03 .10 -2
+485 0 .04 0 -4
+486 0 .04 .01 -4
+487 0 .04 .02 -4
+488 0 .04 .03 -4
+489 0 .04 .04 -4
+490 0 .04 .05 -4
+491 0 .04 .06 -4
+492 0 .04 .07 -4
+493 0 .04 .08 -4
+494 0 .04 .09 -4
+495 0 .04 .10 -4
+496 .01 .04 0 0
+497 .01 .04 .01 0
+498 .01 .04 .02 0
+499 .01 .04 .03 0
+500 .01 .04 .04 0
+501 .01 .04 .05 0
+502 .01 .04 .06 0
+503 .01 .04 .07 0
+504 .01 .04 .08 0
+505 .01 .04 .09 0
+506 .01 .04 .10 0
+507 .02 .04 0 0
+508 .02 .04 .01 0
+509 .02 .04 .02 0
+510 .02 .04 .03 0
+511 .02 .04 .04 0
+512 .02 .04 .05 0
+513 .02 .04 .06 0
+514 .02 .04 .07 0
+515 .02 .04 .08 0
+516 .02 .04 .09 0
+517 .02 .04 .10 0
+518 .03 .04 0 0
+519 .03 .04 .01 0
+520 .03 .04 .02 0
+521 .03 .04 .03 0
+522 .03 .04 .04 0
+523 .03 .04 .05 0
+524 .03 .04 .06 0
+525 .03 .04 .07 0
+526 .03 .04 .08 0
+527 .03 .04 .09 0
+528 .03 .04 .10 0
+529 .04 .04 0 0
+530 .04 .04 .01 0
+531 .04 .04 .02 0
+532 .04 .04 .03 0
+533 .04 .04 .04 0
+534 .04 .04 .05 0
+535 .04 .04 .06 0
+536 .04 .04 .07 0
+537 .04 .04 .08 0
+538 .04 .04 .09 0
+539 .04 .04 .10 0
+540 .05 .04 0 0
+541 .05 .04 .01 0
+542 .05 .04 .02 0
+543 .05 .04 .03 0
+544 .05 .04 .04 0
+545 .05 .04 .05 0
+546 .05 .04 .06 0
+547 .05 .04 .07 0
+548 .05 .04 .08 0
+549 .05 .04 .09 0
+550 .05 .04 .10 0
+551 .06 .04 0 0
+552 .06 .04 .01 0
+553 .06 .04 .02 0
+554 .06 .04 .03 0
+555 .06 .04 .04 0
+556 .06 .04 .05 0
+557 .06 .04 .06 0
+558 .06 .04 .07 0
+559 .06 .04 .08 0
+560 .06 .04 .09 0
+561 .06 .04 .10 0
+562 .07 .04 0 0
+563 .07 .04 .01 0
+564 .07 .04 .02 0
+565 .07 .04 .03 0
+566 .07 .04 .04 0
+567 .07 .04 .05 0
+568 .07 .04 .06 0
+569 .07 .04 .07 0
+570 .07 .04 .08 0
+571 .07 .04 .09 0
+572 .07 .04 .10 0
+573 .08 .04 0 0
+574 .08 .04 .01 0
+575 .08 .04 .02 0
+576 .08 .04 .03 0
+577 .08 .04 .04 0
+578 .08 .04 .05 0
+579 .08 .04 .06 0
+580 .08 .04 .07 0
+581 .08 .04 .08 0
+582 .08 .04 .09 0
+583 .08 .04 .10 0
+584 .09 .04 0 0
+585 .09 .04 .01 0
+586 .09 .04 .02 0
+587 .09 .04 .03 0
+588 .09 .04 .04 0
+589 .09 .04 .05 0
+590 .09 .04 .06 0
+591 .09 .04 .07 0
+592 .09 .04 .08 0
+593 .09 .04 .09 0
+594 .09 .04 .10 0
+595 .10 .04 0 -2
+596 .10 .04 .01 -2
+597 .10 .04 .02 -2
+598 .10 .04 .03 -2
+599 .10 .04 .04 -2
+600 .10 .04 .05 -2
+601 .10 .04 .06 -2
+602 .10 .04 .07 -2
+603 .10 .04 .08 -2
+604 .10 .04 .09 -2
+605 .10 .04 .10 -2
+606 0 .05 0 -4
+607 0 .05 .01 -4
+608 0 .05 .02 -4
+609 0 .05 .03 -4
+610 0 .05 .04 -4
+611 0 .05 .05 -4
+612 0 .05 .06 -4
+613 0 .05 .07 -4
+614 0 .05 .08 -4
+615 0 .05 .09 -4
+616 0 .05 .10 -4
+617 .01 .05 0 0
+618 .01 .05 .01 0
+619 .01 .05 .02 0
+620 .01 .05 .03 0
+621 .01 .05 .04 0
+622 .01 .05 .05 0
+623 .01 .05 .06 0
+624 .01 .05 .07 0
+625 .01 .05 .08 0
+626 .01 .05 .09 0
+627 .01 .05 .10 0
+628 .02 .05 0 0
+629 .02 .05 .01 0
+630 .02 .05 .02 0
+631 .02 .05 .03 0
+632 .02 .05 .04 0
+633 .02 .05 .05 0
+634 .02 .05 .06 0
+635 .02 .05 .07 0
+636 .02 .05 .08 0
+637 .02 .05 .09 0
+638 .02 .05 .10 0
+639 .03 .05 0 0
+640 .03 .05 .01 0
+641 .03 .05 .02 0
+642 .03 .05 .03 0
+643 .03 .05 .04 0
+644 .03 .05 .05 0
+645 .03 .05 .06 0
+646 .03 .05 .07 0
+647 .03 .05 .08 0
+648 .03 .05 .09 0
+649 .03 .05 .10 0
+650 .04 .05 0 0
+651 .04 .05 .01 0
+652 .04 .05 .02 0
+653 .04 .05 .03 0
+654 .04 .05 .04 0
+655 .04 .05 .05 0
+656 .04 .05 .06 0
+657 .04 .05 .07 0
+658 .04 .05 .08 0
+659 .04 .05 .09 0
+660 .04 .05 .10 0
+661 .05 .05 0 0
+662 .05 .05 .01 0
+663 .05 .05 .02 0
+664 .05 .05 .03 0
+665 .05 .05 .04 0
+666 .05 .05 .05 0
+667 .05 .05 .06 0
+668 .05 .05 .07 0
+669 .05 .05 .08 0
+670 .05 .05 .09 0
+671 .05 .05 .10 0
+672 .06 .05 0 0
+673 .06 .05 .01 0
+674 .06 .05 .02 0
+675 .06 .05 .03 0
+676 .06 .05 .04 0
+677 .06 .05 .05 0
+678 .06 .05 .06 0
+679 .06 .05 .07 0
+680 .06 .05 .08 0
+681 .06 .05 .09 0
+682 .06 .05 .10 0
+683 .07 .05 0 0
+684 .07 .05 .01 0
+685 .07 .05 .02 0
+686 .07 .05 .03 0
+687 .07 .05 .04 0
+688 .07 .05 .05 0
+689 .07 .05 .06 0
+690 .07 .05 .07 0
+691 .07 .05 .08 0
+692 .07 .05 .09 0
+693 .07 .05 .10 0
+694 .08 .05 0 0
+695 .08 .05 .01 0
+696 .08 .05 .02 0
+697 .08 .05 .03 0
+698 .08 .05 .04 0
+699 .08 .05 .05 0
+700 .08 .05 .06 0
+701 .08 .05 .07 0
+702 .08 .05 .08 0
+703 .08 .05 .09 0
+704 .08 .05 .10 0
+705 .09 .05 0 0
+706 .09 .05 .01 0
+707 .09 .05 .02 0
+708 .09 .05 .03 0
+709 .09 .05 .04 0
+710 .09 .05 .05 0
+711 .09 .05 .06 0
+712 .09 .05 .07 0
+713 .09 .05 .08 0
+714 .09 .05 .09 0
+715 .09 .05 .10 0
+716 .10 .05 0 -2
+717 .10 .05 .01 -2
+718 .10 .05 .02 -2
+719 .10 .05 .03 -2
+720 .10 .05 .04 -2
+721 .10 .05 .05 -2
+722 .10 .05 .06 -2
+723 .10 .05 .07 -2
+724 .10 .05 .08 -2
+725 .10 .05 .09 -2
+726 .10 .05 .10 -2
+727 0 .06 0 -4
+728 0 .06 .01 -4
+729 0 .06 .02 -4
+730 0 .06 .03 -4
+731 0 .06 .04 -4
+732 0 .06 .05 -4
+733 0 .06 .06 -4
+734 0 .06 .07 -4
+735 0 .06 .08 -4
+736 0 .06 .09 -4
+737 0 .06 .10 -4
+738 .01 .06 0 0
+739 .01 .06 .01 0
+740 .01 .06 .02 0
+741 .01 .06 .03 0
+742 .01 .06 .04 0
+743 .01 .06 .05 0
+744 .01 .06 .06 0
+745 .01 .06 .07 0
+746 .01 .06 .08 0
+747 .01 .06 .09 0
+748 .01 .06 .10 0
+749 .02 .06 0 0
+750 .02 .06 .01 0
+751 .02 .06 .02 0
+752 .02 .06 .03 0
+753 .02 .06 .04 0
+754 .02 .06 .05 0
+755 .02 .06 .06 0
+756 .02 .06 .07 0
+757 .02 .06 .08 0
+758 .02 .06 .09 0
+759 .02 .06 .10 0
+760 .03 .06 0 0
+761 .03 .06 .01 0
+762 .03 .06 .02 0
+763 .03 .06 .03 0
+764 .03 .06 .04 0
+765 .03 .06 .05 0
+766 .03 .06 .06 0
+767 .03 .06 .07 0
+768 .03 .06 .08 0
+769 .03 .06 .09 0
+770 .03 .06 .10 0
+771 .04 .06 0 0
+772 .04 .06 .01 0
+773 .04 .06 .02 0
+774 .04 .06 .03 0
+775 .04 .06 .04 0
+776 .04 .06 .05 0
+777 .04 .06 .06 0
+778 .04 .06 .07 0
+779 .04 .06 .08 0
+780 .04 .06 .09 0
+781 .04 .06 .10 0
+782 .05 .06 0 0
+783 .05 .06 .01 0
+784 .05 .06 .02 0
+785 .05 .06 .03 0
+786 .05 .06 .04 0
+787 .05 .06 .05 0
+788 .05 .06 .06 0
+789 .05 .06 .07 0
+790 .05 .06 .08 0
+791 .05 .06 .09 0
+792 .05 .06 .10 0
+793 .06 .06 0 0
+794 .06 .06 .01 0
+795 .06 .06 .02 0
+796 .06 .06 .03 0
+797 .06 .06 .04 0
+798 .06 .06 .05 0
+799 .06 .06 .06 0
+800 .06 .06 .07 0
+801 .06 .06 .08 0
+802 .06 .06 .09 0
+803 .06 .06 .10 0
+804 .07 .06 0 0
+805 .07 .06 .01 0
+806 .07 .06 .02 0
+807 .07 .06 .03 0
+808 .07 .06 .04 0
+809 .07 .06 .05 0
+810 .07 .06 .06 0
+811 .07 .06 .07 0
+812 .07 .06 .08 0
+813 .07 .06 .09 0
+814 .07 .06 .10 0
+815 .08 .06 0 0
+816 .08 .06 .01 0
+817 .08 .06 .02 0
+818 .08 .06 .03 0
+819 .08 .06 .04 0
+820 .08 .06 .05 0
+821 .08 .06 .06 0
+822 .08 .06 .07 0
+823 .08 .06 .08 0
+824 .08 .06 .09 0
+825 .08 .06 .10 0
+826 .09 .06 0 0
+827 .09 .06 .01 0
+828 .09 .06 .02 0
+829 .09 .06 .03 0
+830 .09 .06 .04 0
+831 .09 .06 .05 0
+832 .09 .06 .06 0
+833 .09 .06 .07 0
+834 .09 .06 .08 0
+835 .09 .06 .09 0
+836 .09 .06 .10 0
+837 .10 .06 0 -2
+838 .10 .06 .01 -2
+839 .10 .06 .02 -2
+840 .10 .06 .03 -2
+841 .10 .06 .04 -2
+842 .10 .06 .05 -2
+843 .10 .06 .06 -2
+844 .10 .06 .07 -2
+845 .10 .06 .08 -2
+846 .10 .06 .09 -2
+847 .10 .06 .10 -2
+848 0 .07 0 -4
+849 0 .07 .01 -4
+850 0 .07 .02 -4
+851 0 .07 .03 -4
+852 0 .07 .04 -4
+853 0 .07 .05 -4
+854 0 .07 .06 -4
+855 0 .07 .07 -4
+856 0 .07 .08 -4
+857 0 .07 .09 -4
+858 0 .07 .10 -4
+859 .01 .07 0 0
+860 .01 .07 .01 0
+861 .01 .07 .02 0
+862 .01 .07 .03 0
+863 .01 .07 .04 0
+864 .01 .07 .05 0
+865 .01 .07 .06 0
+866 .01 .07 .07 0
+867 .01 .07 .08 0
+868 .01 .07 .09 0
+869 .01 .07 .10 0
+870 .02 .07 0 0
+871 .02 .07 .01 0
+872 .02 .07 .02 0
+873 .02 .07 .03 0
+874 .02 .07 .04 0
+875 .02 .07 .05 0
+876 .02 .07 .06 0
+877 .02 .07 .07 0
+878 .02 .07 .08 0
+879 .02 .07 .09 0
+880 .02 .07 .10 0
+881 .03 .07 0 0
+882 .03 .07 .01 0
+883 .03 .07 .02 0
+884 .03 .07 .03 0
+885 .03 .07 .04 0
+886 .03 .07 .05 0
+887 .03 .07 .06 0
+888 .03 .07 .07 0
+889 .03 .07 .08 0
+890 .03 .07 .09 0
+891 .03 .07 .10 0
+892 .04 .07 0 0
+893 .04 .07 .01 0
+894 .04 .07 .02 0
+895 .04 .07 .03 0
+896 .04 .07 .04 0
+897 .04 .07 .05 0
+898 .04 .07 .06 0
+899 .04 .07 .07 0
+900 .04 .07 .08 0
+901 .04 .07 .09 0
+902 .04 .07 .10 0
+903 .05 .07 0 0
+904 .05 .07 .01 0
+905 .05 .07 .02 0
+906 .05 .07 .03 0
+907 .05 .07 .04 0
+908 .05 .07 .05 0
+909 .05 .07 .06 0
+910 .05 .07 .07 0
+911 .05 .07 .08 0
+912 .05 .07 .09 0
+913 .05 .07 .10 0
+914 .06 .07 0 0
+915 .06 .07 .01 0
+916 .06 .07 .02 0
+917 .06 .07 .03 0
+918 .06 .07 .04 0
+919 .06 .07 .05 0
+920 .06 .07 .06 0
+921 .06 .07 .07 0
+922 .06 .07 .08 0
+923 .06 .07 .09 0
+924 .06 .07 .10 0
+925 .07 .07 0 0
+926 .07 .07 .01 0
+927 .07 .07 .02 0
+928 .07 .07 .03 0
+929 .07 .07 .04 0
+930 .07 .07 .05 0
+931 .07 .07 .06 0
+932 .07 .07 .07 0
+933 .07 .07 .08 0
+934 .07 .07 .09 0
+935 .07 .07 .10 0
+936 .08 .07 0 0
+937 .08 .07 .01 0
+938 .08 .07 .02 0
+939 .08 .07 .03 0
+940 .08 .07 .04 0
+941 .08 .07 .05 0
+942 .08 .07 .06 0
+943 .08 .07 .07 0
+944 .08 .07 .08 0
+945 .08 .07 .09 0
+946 .08 .07 .10 0
+947 .09 .07 0 0
+948 .09 .07 .01 0
+949 .09 .07 .02 0
+950 .09 .07 .03 0
+951 .09 .07 .04 0
+952 .09 .07 .05 0
+953 .09 .07 .06 0
+954 .09 .07 .07 0
+955 .09 .07 .08 0
+956 .09 .07 .09 0
+957 .09 .07 .10 0
+958 .10 .07 0 -2
+959 .10 .07 .01 -2
+960 .10 .07 .02 -2
+961 .10 .07 .03 -2
+962 .10 .07 .04 -2
+963 .10 .07 .05 -2
+964 .10 .07 .06 -2
+965 .10 .07 .07 -2
+966 .10 .07 .08 -2
+967 .10 .07 .09 -2
+968 .10 .07 .10 -2
+969 0 .08 0 -4
+970 0 .08 .01 -4
+971 0 .08 .02 -4
+972 0 .08 .03 -4
+973 0 .08 .04 -4
+974 0 .08 .05 -4
+975 0 .08 .06 -4
+976 0 .08 .07 -4
+977 0 .08 .08 -4
+978 0 .08 .09 -4
+979 0 .08 .10 -4
+980 .01 .08 0 0
+981 .01 .08 .01 0
+982 .01 .08 .02 0
+983 .01 .08 .03 0
+984 .01 .08 .04 0
+985 .01 .08 .05 0
+986 .01 .08 .06 0
+987 .01 .08 .07 0
+988 .01 .08 .08 0
+989 .01 .08 .09 0
+990 .01 .08 .10 0
+991 .02 .08 0 0
+992 .02 .08 .01 0
+993 .02 .08 .02 0
+994 .02 .08 .03 0
+995 .02 .08 .04 0
+996 .02 .08 .05 0
+997 .02 .08 .06 0
+998 .02 .08 .07 0
+999 .02 .08 .08 0
+1000 .02 .08 .09 0
+1001 .02 .08 .10 0
+1002 .03 .08 0 0
+1003 .03 .08 .01 0
+1004 .03 .08 .02 0
+1005 .03 .08 .03 0
+1006 .03 .08 .04 0
+1007 .03 .08 .05 0
+1008 .03 .08 .06 0
+1009 .03 .08 .07 0
+1010 .03 .08 .08 0
+1011 .03 .08 .09 0
+1012 .03 .08 .10 0
+1013 .04 .08 0 0
+1014 .04 .08 .01 0
+1015 .04 .08 .02 0
+1016 .04 .08 .03 0
+1017 .04 .08 .04 0
+1018 .04 .08 .05 0
+1019 .04 .08 .06 0
+1020 .04 .08 .07 0
+1021 .04 .08 .08 0
+1022 .04 .08 .09 0
+1023 .04 .08 .10 0
+1024 .05 .08 0 0
+1025 .05 .08 .01 0
+1026 .05 .08 .02 0
+1027 .05 .08 .03 0
+1028 .05 .08 .04 0
+1029 .05 .08 .05 0
+1030 .05 .08 .06 0
+1031 .05 .08 .07 0
+1032 .05 .08 .08 0
+1033 .05 .08 .09 0
+1034 .05 .08 .10 0
+1035 .06 .08 0 0
+1036 .06 .08 .01 0
+1037 .06 .08 .02 0
+1038 .06 .08 .03 0
+1039 .06 .08 .04 0
+1040 .06 .08 .05 0
+1041 .06 .08 .06 0
+1042 .06 .08 .07 0
+1043 .06 .08 .08 0
+1044 .06 .08 .09 0
+1045 .06 .08 .10 0
+1046 .07 .08 0 0
+1047 .07 .08 .01 0
+1048 .07 .08 .02 0
+1049 .07 .08 .03 0
+1050 .07 .08 .04 0
+1051 .07 .08 .05 0
+1052 .07 .08 .06 0
+1053 .07 .08 .07 0
+1054 .07 .08 .08 0
+1055 .07 .08 .09 0
+1056 .07 .08 .10 0
+1057 .08 .08 0 0
+1058 .08 .08 .01 0
+1059 .08 .08 .02 0
+1060 .08 .08 .03 0
+1061 .08 .08 .04 0
+1062 .08 .08 .05 0
+1063 .08 .08 .06 0
+1064 .08 .08 .07 0
+1065 .08 .08 .08 0
+1066 .08 .08 .09 0
+1067 .08 .08 .10 0
+1068 .09 .08 0 0
+1069 .09 .08 .01 0
+1070 .09 .08 .02 0
+1071 .09 .08 .03 0
+1072 .09 .08 .04 0
+1073 .09 .08 .05 0
+1074 .09 .08 .06 0
+1075 .09 .08 .07 0
+1076 .09 .08 .08 0
+1077 .09 .08 .09 0
+1078 .09 .08 .10 0
+1079 .10 .08 0 -2
+1080 .10 .08 .01 -2
+1081 .10 .08 .02 -2
+1082 .10 .08 .03 -2
+1083 .10 .08 .04 -2
+1084 .10 .08 .05 -2
+1085 .10 .08 .06 -2
+1086 .10 .08 .07 -2
+1087 .10 .08 .08 -2
+1088 .10 .08 .09 -2
+1089 .10 .08 .10 -2
+1090 0 .09 0 -4
+1091 0 .09 .01 -4
+1092 0 .09 .02 -4
+1093 0 .09 .03 -4
+1094 0 .09 .04 -4
+1095 0 .09 .05 -4
+1096 0 .09 .06 -4
+1097 0 .09 .07 -4
+1098 0 .09 .08 -4
+1099 0 .09 .09 -4
+1100 0 .09 .10 -4
+1101 .01 .09 0 0
+1102 .01 .09 .01 0
+1103 .01 .09 .02 0
+1104 .01 .09 .03 0
+1105 .01 .09 .04 0
+1106 .01 .09 .05 0
+1107 .01 .09 .06 0
+1108 .01 .09 .07 0
+1109 .01 .09 .08 0
+1110 .01 .09 .09 0
+1111 .01 .09 .10 0
+1112 .02 .09 0 0
+1113 .02 .09 .01 0
+1114 .02 .09 .02 0
+1115 .02 .09 .03 0
+1116 .02 .09 .04 0
+1117 .02 .09 .05 0
+1118 .02 .09 .06 0
+1119 .02 .09 .07 0
+1120 .02 .09 .08 0
+1121 .02 .09 .09 0
+1122 .02 .09 .10 0
+1123 .03 .09 0 0
+1124 .03 .09 .01 0
+1125 .03 .09 .02 0
+1126 .03 .09 .03 0
+1127 .03 .09 .04 0
+1128 .03 .09 .05 0
+1129 .03 .09 .06 0
+1130 .03 .09 .07 0
+1131 .03 .09 .08 0
+1132 .03 .09 .09 0
+1133 .03 .09 .10 0
+1134 .04 .09 0 0
+1135 .04 .09 .01 0
+1136 .04 .09 .02 0
+1137 .04 .09 .03 0
+1138 .04 .09 .04 0
+1139 .04 .09 .05 0
+1140 .04 .09 .06 0
+1141 .04 .09 .07 0
+1142 .04 .09 .08 0
+1143 .04 .09 .09 0
+1144 .04 .09 .10 0
+1145 .05 .09 0 0
+1146 .05 .09 .01 0
+1147 .05 .09 .02 0
+1148 .05 .09 .03 0
+1149 .05 .09 .04 0
+1150 .05 .09 .05 0
+1151 .05 .09 .06 0
+1152 .05 .09 .07 0
+1153 .05 .09 .08 0
+1154 .05 .09 .09 0
+1155 .05 .09 .10 0
+1156 .06 .09 0 0
+1157 .06 .09 .01 0
+1158 .06 .09 .02 0
+1159 .06 .09 .03 0
+1160 .06 .09 .04 0
+1161 .06 .09 .05 0
+1162 .06 .09 .06 0
+1163 .06 .09 .07 0
+1164 .06 .09 .08 0
+1165 .06 .09 .09 0
+1166 .06 .09 .10 0
+1167 .07 .09 0 0
+1168 .07 .09 .01 0
+1169 .07 .09 .02 0
+1170 .07 .09 .03 0
+1171 .07 .09 .04 0
+1172 .07 .09 .05 0
+1173 .07 .09 .06 0
+1174 .07 .09 .07 0
+1175 .07 .09 .08 0
+1176 .07 .09 .09 0
+1177 .07 .09 .10 0
+1178 .08 .09 0 0
+1179 .08 .09 .01 0
+1180 .08 .09 .02 0
+1181 .08 .09 .03 0
+1182 .08 .09 .04 0
+1183 .08 .09 .05 0
+1184 .08 .09 .06 0
+1185 .08 .09 .07 0
+1186 .08 .09 .08 0
+1187 .08 .09 .09 0
+1188 .08 .09 .10 0
+1189 .09 .09 0 0
+1190 .09 .09 .01 0
+1191 .09 .09 .02 0
+1192 .09 .09 .03 0
+1193 .09 .09 .04 0
+1194 .09 .09 .05 0
+1195 .09 .09 .06 0
+1196 .09 .09 .07 0
+1197 .09 .09 .08 0
+1198 .09 .09 .09 0
+1199 .09 .09 .10 0
+1200 .10 .09 0 -2
+1201 .10 .09 .01 -2
+1202 .10 .09 .02 -2
+1203 .10 .09 .03 -2
+1204 .10 .09 .04 -2
+1205 .10 .09 .05 -2
+1206 .10 .09 .06 -2
+1207 .10 .09 .07 -2
+1208 .10 .09 .08 -2
+1209 .10 .09 .09 -2
+1210 .10 .09 .10 -2
+1211 0 .10 0 -4
+1212 0 .10 .01 -4
+1213 0 .10 .02 -4
+1214 0 .10 .03 -4
+1215 0 .10 .04 -4
+1216 0 .10 .05 -4
+1217 0 .10 .06 -4
+1218 0 .10 .07 -4
+1219 0 .10 .08 -4
+1220 0 .10 .09 -4
+1221 0 .10 .10 -4
+1222 .01 .10 0 -3
+1223 .01 .10 .01 -3
+1224 .01 .10 .02 -3
+1225 .01 .10 .03 -3
+1226 .01 .10 .04 -3
+1227 .01 .10 .05 -3
+1228 .01 .10 .06 -3
+1229 .01 .10 .07 -3
+1230 .01 .10 .08 -3
+1231 .01 .10 .09 -3
+1232 .01 .10 .10 -3
+1233 .02 .10 0 -3
+1234 .02 .10 .01 -3
+1235 .02 .10 .02 -3
+1236 .02 .10 .03 -3
+1237 .02 .10 .04 -3
+1238 .02 .10 .05 -3
+1239 .02 .10 .06 -3
+1240 .02 .10 .07 -3
+1241 .02 .10 .08 -3
+1242 .02 .10 .09 -3
+1243 .02 .10 .10 -3
+1244 .03 .10 0 -3
+1245 .03 .10 .01 -3
+1246 .03 .10 .02 -3
+1247 .03 .10 .03 -3
+1248 .03 .10 .04 -3
+1249 .03 .10 .05 -3
+1250 .03 .10 .06 -3
+1251 .03 .10 .07 -3
+1252 .03 .10 .08 -3
+1253 .03 .10 .09 -3
+1254 .03 .10 .10 -3
+1255 .04 .10 0 -3
+1256 .04 .10 .01 -3
+1257 .04 .10 .02 -3
+1258 .04 .10 .03 -3
+1259 .04 .10 .04 -3
+1260 .04 .10 .05 -3
+1261 .04 .10 .06 -3
+1262 .04 .10 .07 -3
+1263 .04 .10 .08 -3
+1264 .04 .10 .09 -3
+1265 .04 .10 .10 -3
+1266 .05 .10 0 -3
+1267 .05 .10 .01 -3
+1268 .05 .10 .02 -3
+1269 .05 .10 .03 -3
+1270 .05 .10 .04 -3
+1271 .05 .10 .05 -3
+1272 .05 .10 .06 -3
+1273 .05 .10 .07 -3
+1274 .05 .10 .08 -3
+1275 .05 .10 .09 -3
+1276 .05 .10 .10 -3
+1277 .06 .10 0 -3
+1278 .06 .10 .01 -3
+1279 .06 .10 .02 -3
+1280 .06 .10 .03 -3
+1281 .06 .10 .04 -3
+1282 .06 .10 .05 -3
+1283 .06 .10 .06 -3
+1284 .06 .10 .07 -3
+1285 .06 .10 .08 -3
+1286 .06 .10 .09 -3
+1287 .06 .10 .10 -3
+1288 .07 .10 0 -3
+1289 .07 .10 .01 -3
+1290 .07 .10 .02 -3
+1291 .07 .10 .03 -3
+1292 .07 .10 .04 -3
+1293 .07 .10 .05 -3
+1294 .07 .10 .06 -3
+1295 .07 .10 .07 -3
+1296 .07 .10 .08 -3
+1297 .07 .10 .09 -3
+1298 .07 .10 .10 -3
+1299 .08 .10 0 -3
+1300 .08 .10 .01 -3
+1301 .08 .10 .02 -3
+1302 .08 .10 .03 -3
+1303 .08 .10 .04 -3
+1304 .08 .10 .05 -3
+1305 .08 .10 .06 -3
+1306 .08 .10 .07 -3
+1307 .08 .10 .08 -3
+1308 .08 .10 .09 -3
+1309 .08 .10 .10 -3
+1310 .09 .10 0 -3
+1311 .09 .10 .01 -3
+1312 .09 .10 .02 -3
+1313 .09 .10 .03 -3
+1314 .09 .10 .04 -3
+1315 .09 .10 .05 -3
+1316 .09 .10 .06 -3
+1317 .09 .10 .07 -3
+1318 .09 .10 .08 -3
+1319 .09 .10 .09 -3
+1320 .09 .10 .10 -3
+1321 .10 .10 0 -3
+1322 .10 .10 .01 -3
+1323 .10 .10 .02 -3
+1324 .10 .10 .03 -3
+1325 .10 .10 .04 -3
+1326 .10 .10 .05 -3
+1327 .10 .10 .06 -3
+1328 .10 .10 .07 -3
+1329 .10 .10 .08 -3
+1330 .10 .10 .09 -3
+1331 .10 .10 .10 -3
diff --git a/examples/fem/3Dexample/mesh1000.tet b/examples/fem/3Dexample/mesh1000.tet
new file mode 100644 (file)
index 0000000..5a35519
--- /dev/null
@@ -0,0 +1,6001 @@
+6000
+1 0 1 12 122
+2 121 133 122 0
+3 133 122 12 0
+4 0 11 12 132
+5 121 133 132 12
+6 132 12 0 121
+7 1 2 13 123
+8 122 134 123 1
+9 134 123 13 1
+10 1 12 13 133
+11 122 134 133 13
+12 133 13 1 122
+13 2 3 14 124
+14 123 135 124 2
+15 135 124 14 2
+16 2 13 14 134
+17 123 135 134 14
+18 134 14 2 123
+19 3 4 15 125
+20 124 136 125 3
+21 136 125 15 3
+22 3 14 15 135
+23 124 136 135 15
+24 135 15 3 124
+25 4 5 16 126
+26 125 137 126 4
+27 137 126 16 4
+28 4 15 16 136
+29 125 137 136 16
+30 136 16 4 125
+31 5 6 17 127
+32 126 138 127 5
+33 138 127 17 5
+34 5 16 17 137
+35 126 138 137 17
+36 137 17 5 126
+37 6 7 18 128
+38 127 139 128 6
+39 139 128 18 6
+40 6 17 18 138
+41 127 139 138 18
+42 138 18 6 127
+43 7 8 19 129
+44 128 140 129 7
+45 140 129 19 7
+46 7 18 19 139
+47 128 140 139 19
+48 139 19 7 128
+49 8 9 20 130
+50 129 141 130 8
+51 141 130 20 8
+52 8 19 20 140
+53 129 141 140 20
+54 140 20 8 129
+55 9 10 21 131
+56 130 142 131 9
+57 142 131 21 9
+58 9 20 21 141
+59 130 142 141 21
+60 141 21 9 130
+61 11 12 23 133
+62 132 144 133 11
+63 144 133 23 11
+64 11 22 23 143
+65 132 144 143 23
+66 143 23 11 132
+67 12 13 24 134
+68 133 145 134 12
+69 145 134 24 12
+70 12 23 24 144
+71 133 145 144 24
+72 144 24 12 133
+73 13 14 25 135
+74 134 146 135 13
+75 146 135 25 13
+76 13 24 25 145
+77 134 146 145 25
+78 145 25 13 134
+79 14 15 26 136
+80 135 147 136 14
+81 147 136 26 14
+82 14 25 26 146
+83 135 147 146 26
+84 146 26 14 135
+85 15 16 27 137
+86 136 148 137 15
+87 148 137 27 15
+88 15 26 27 147
+89 136 148 147 27
+90 147 27 15 136
+91 16 17 28 138
+92 137 149 138 16
+93 149 138 28 16
+94 16 27 28 148
+95 137 149 148 28
+96 148 28 16 137
+97 17 18 29 139
+98 138 150 139 17
+99 150 139 29 17
+100 17 28 29 149
+101 138 150 149 29
+102 149 29 17 138
+103 18 19 30 140
+104 139 151 140 18
+105 151 140 30 18
+106 18 29 30 150
+107 139 151 150 30
+108 150 30 18 139
+109 19 20 31 141
+110 140 152 141 19
+111 152 141 31 19
+112 19 30 31 151
+113 140 152 151 31
+114 151 31 19 140
+115 20 21 32 142
+116 141 153 142 20
+117 153 142 32 20
+118 20 31 32 152
+119 141 153 152 32
+120 152 32 20 141
+121 22 23 34 144
+122 143 155 144 22
+123 155 144 34 22
+124 22 33 34 154
+125 143 155 154 34
+126 154 34 22 143
+127 23 24 35 145
+128 144 156 145 23
+129 156 145 35 23
+130 23 34 35 155
+131 144 156 155 35
+132 155 35 23 144
+133 24 25 36 146
+134 145 157 146 24
+135 157 146 36 24
+136 24 35 36 156
+137 145 157 156 36
+138 156 36 24 145
+139 25 26 37 147
+140 146 158 147 25
+141 158 147 37 25
+142 25 36 37 157
+143 146 158 157 37
+144 157 37 25 146
+145 26 27 38 148
+146 147 159 148 26
+147 159 148 38 26
+148 26 37 38 158
+149 147 159 158 38
+150 158 38 26 147
+151 27 28 39 149
+152 148 160 149 27
+153 160 149 39 27
+154 27 38 39 159
+155 148 160 159 39
+156 159 39 27 148
+157 28 29 40 150
+158 149 161 150 28
+159 161 150 40 28
+160 28 39 40 160
+161 149 161 160 40
+162 160 40 28 149
+163 29 30 41 151
+164 150 162 151 29
+165 162 151 41 29
+166 29 40 41 161
+167 150 162 161 41
+168 161 41 29 150
+169 30 31 42 152
+170 151 163 152 30
+171 163 152 42 30
+172 30 41 42 162
+173 151 163 162 42
+174 162 42 30 151
+175 31 32 43 153
+176 152 164 153 31
+177 164 153 43 31
+178 31 42 43 163
+179 152 164 163 43
+180 163 43 31 152
+181 33 34 45 155
+182 154 166 155 33
+183 166 155 45 33
+184 33 44 45 165
+185 154 166 165 45
+186 165 45 33 154
+187 34 35 46 156
+188 155 167 156 34
+189 167 156 46 34
+190 34 45 46 166
+191 155 167 166 46
+192 166 46 34 155
+193 35 36 47 157
+194 156 168 157 35
+195 168 157 47 35
+196 35 46 47 167
+197 156 168 167 47
+198 167 47 35 156
+199 36 37 48 158
+200 157 169 158 36
+201 169 158 48 36
+202 36 47 48 168
+203 157 169 168 48
+204 168 48 36 157
+205 37 38 49 159
+206 158 170 159 37
+207 170 159 49 37
+208 37 48 49 169
+209 158 170 169 49
+210 169 49 37 158
+211 38 39 50 160
+212 159 171 160 38
+213 171 160 50 38
+214 38 49 50 170
+215 159 171 170 50
+216 170 50 38 159
+217 39 40 51 161
+218 160 172 161 39
+219 172 161 51 39
+220 39 50 51 171
+221 160 172 171 51
+222 171 51 39 160
+223 40 41 52 162
+224 161 173 162 40
+225 173 162 52 40
+226 40 51 52 172
+227 161 173 172 52
+228 172 52 40 161
+229 41 42 53 163
+230 162 174 163 41
+231 174 163 53 41
+232 41 52 53 173
+233 162 174 173 53
+234 173 53 41 162
+235 42 43 54 164
+236 163 175 164 42
+237 175 164 54 42
+238 42 53 54 174
+239 163 175 174 54
+240 174 54 42 163
+241 44 45 56 166
+242 165 177 166 44
+243 177 166 56 44
+244 44 55 56 176
+245 165 177 176 56
+246 176 56 44 165
+247 45 46 57 167
+248 166 178 167 45
+249 178 167 57 45
+250 45 56 57 177
+251 166 178 177 57
+252 177 57 45 166
+253 46 47 58 168
+254 167 179 168 46
+255 179 168 58 46
+256 46 57 58 178
+257 167 179 178 58
+258 178 58 46 167
+259 47 48 59 169
+260 168 180 169 47
+261 180 169 59 47
+262 47 58 59 179
+263 168 180 179 59
+264 179 59 47 168
+265 48 49 60 170
+266 169 181 170 48
+267 181 170 60 48
+268 48 59 60 180
+269 169 181 180 60
+270 180 60 48 169
+271 49 50 61 171
+272 170 182 171 49
+273 182 171 61 49
+274 49 60 61 181
+275 170 182 181 61
+276 181 61 49 170
+277 50 51 62 172
+278 171 183 172 50
+279 183 172 62 50
+280 50 61 62 182
+281 171 183 182 62
+282 182 62 50 171
+283 51 52 63 173
+284 172 184 173 51
+285 184 173 63 51
+286 51 62 63 183
+287 172 184 183 63
+288 183 63 51 172
+289 52 53 64 174
+290 173 185 174 52
+291 185 174 64 52
+292 52 63 64 184
+293 173 185 184 64
+294 184 64 52 173
+295 53 54 65 175
+296 174 186 175 53
+297 186 175 65 53
+298 53 64 65 185
+299 174 186 185 65
+300 185 65 53 174
+301 55 56 67 177
+302 176 188 177 55
+303 188 177 67 55
+304 55 66 67 187
+305 176 188 187 67
+306 187 67 55 176
+307 56 57 68 178
+308 177 189 178 56
+309 189 178 68 56
+310 56 67 68 188
+311 177 189 188 68
+312 188 68 56 177
+313 57 58 69 179
+314 178 190 179 57
+315 190 179 69 57
+316 57 68 69 189
+317 178 190 189 69
+318 189 69 57 178
+319 58 59 70 180
+320 179 191 180 58
+321 191 180 70 58
+322 58 69 70 190
+323 179 191 190 70
+324 190 70 58 179
+325 59 60 71 181
+326 180 192 181 59
+327 192 181 71 59
+328 59 70 71 191
+329 180 192 191 71
+330 191 71 59 180
+331 60 61 72 182
+332 181 193 182 60
+333 193 182 72 60
+334 60 71 72 192
+335 181 193 192 72
+336 192 72 60 181
+337 61 62 73 183
+338 182 194 183 61
+339 194 183 73 61
+340 61 72 73 193
+341 182 194 193 73
+342 193 73 61 182
+343 62 63 74 184
+344 183 195 184 62
+345 195 184 74 62
+346 62 73 74 194
+347 183 195 194 74
+348 194 74 62 183
+349 63 64 75 185
+350 184 196 185 63
+351 196 185 75 63
+352 63 74 75 195
+353 184 196 195 75
+354 195 75 63 184
+355 64 65 76 186
+356 185 197 186 64
+357 197 186 76 64
+358 64 75 76 196
+359 185 197 196 76
+360 196 76 64 185
+361 66 67 78 188
+362 187 199 188 66
+363 199 188 78 66
+364 66 77 78 198
+365 187 199 198 78
+366 198 78 66 187
+367 67 68 79 189
+368 188 200 189 67
+369 200 189 79 67
+370 67 78 79 199
+371 188 200 199 79
+372 199 79 67 188
+373 68 69 80 190
+374 189 201 190 68
+375 201 190 80 68
+376 68 79 80 200
+377 189 201 200 80
+378 200 80 68 189
+379 69 70 81 191
+380 190 202 191 69
+381 202 191 81 69
+382 69 80 81 201
+383 190 202 201 81
+384 201 81 69 190
+385 70 71 82 192
+386 191 203 192 70
+387 203 192 82 70
+388 70 81 82 202
+389 191 203 202 82
+390 202 82 70 191
+391 71 72 83 193
+392 192 204 193 71
+393 204 193 83 71
+394 71 82 83 203
+395 192 204 203 83
+396 203 83 71 192
+397 72 73 84 194
+398 193 205 194 72
+399 205 194 84 72
+400 72 83 84 204
+401 193 205 204 84
+402 204 84 72 193
+403 73 74 85 195
+404 194 206 195 73
+405 206 195 85 73
+406 73 84 85 205
+407 194 206 205 85
+408 205 85 73 194
+409 74 75 86 196
+410 195 207 196 74
+411 207 196 86 74
+412 74 85 86 206
+413 195 207 206 86
+414 206 86 74 195
+415 75 76 87 197
+416 196 208 197 75
+417 208 197 87 75
+418 75 86 87 207
+419 196 208 207 87
+420 207 87 75 196
+421 77 78 89 199
+422 198 210 199 77
+423 210 199 89 77
+424 77 88 89 209
+425 198 210 209 89
+426 209 89 77 198
+427 78 79 90 200
+428 199 211 200 78
+429 211 200 90 78
+430 78 89 90 210
+431 199 211 210 90
+432 210 90 78 199
+433 79 80 91 201
+434 200 212 201 79
+435 212 201 91 79
+436 79 90 91 211
+437 200 212 211 91
+438 211 91 79 200
+439 80 81 92 202
+440 201 213 202 80
+441 213 202 92 80
+442 80 91 92 212
+443 201 213 212 92
+444 212 92 80 201
+445 81 82 93 203
+446 202 214 203 81
+447 214 203 93 81
+448 81 92 93 213
+449 202 214 213 93
+450 213 93 81 202
+451 82 83 94 204
+452 203 215 204 82
+453 215 204 94 82
+454 82 93 94 214
+455 203 215 214 94
+456 214 94 82 203
+457 83 84 95 205
+458 204 216 205 83
+459 216 205 95 83
+460 83 94 95 215
+461 204 216 215 95
+462 215 95 83 204
+463 84 85 96 206
+464 205 217 206 84
+465 217 206 96 84
+466 84 95 96 216
+467 205 217 216 96
+468 216 96 84 205
+469 85 86 97 207
+470 206 218 207 85
+471 218 207 97 85
+472 85 96 97 217
+473 206 218 217 97
+474 217 97 85 206
+475 86 87 98 208
+476 207 219 208 86
+477 219 208 98 86
+478 86 97 98 218
+479 207 219 218 98
+480 218 98 86 207
+481 88 89 100 210
+482 209 221 210 88
+483 221 210 100 88
+484 88 99 100 220
+485 209 221 220 100
+486 220 100 88 209
+487 89 90 101 211
+488 210 222 211 89
+489 222 211 101 89
+490 89 100 101 221
+491 210 222 221 101
+492 221 101 89 210
+493 90 91 102 212
+494 211 223 212 90
+495 223 212 102 90
+496 90 101 102 222
+497 211 223 222 102
+498 222 102 90 211
+499 91 92 103 213
+500 212 224 213 91
+501 224 213 103 91
+502 91 102 103 223
+503 212 224 223 103
+504 223 103 91 212
+505 92 93 104 214
+506 213 225 214 92
+507 225 214 104 92
+508 92 103 104 224
+509 213 225 224 104
+510 224 104 92 213
+511 93 94 105 215
+512 214 226 215 93
+513 226 215 105 93
+514 93 104 105 225
+515 214 226 225 105
+516 225 105 93 214
+517 94 95 106 216
+518 215 227 216 94
+519 227 216 106 94
+520 94 105 106 226
+521 215 227 226 106
+522 226 106 94 215
+523 95 96 107 217
+524 216 228 217 95
+525 228 217 107 95
+526 95 106 107 227
+527 216 228 227 107
+528 227 107 95 216
+529 96 97 108 218
+530 217 229 218 96
+531 229 218 108 96
+532 96 107 108 228
+533 217 229 228 108
+534 228 108 96 217
+535 97 98 109 219
+536 218 230 219 97
+537 230 219 109 97
+538 97 108 109 229
+539 218 230 229 109
+540 229 109 97 218
+541 99 100 111 221
+542 220 232 221 99
+543 232 221 111 99
+544 99 110 111 231
+545 220 232 231 111
+546 231 111 99 220
+547 100 101 112 222
+548 221 233 222 100
+549 233 222 112 100
+550 100 111 112 232
+551 221 233 232 112
+552 232 112 100 221
+553 101 102 113 223
+554 222 234 223 101
+555 234 223 113 101
+556 101 112 113 233
+557 222 234 233 113
+558 233 113 101 222
+559 102 103 114 224
+560 223 235 224 102
+561 235 224 114 102
+562 102 113 114 234
+563 223 235 234 114
+564 234 114 102 223
+565 103 104 115 225
+566 224 236 225 103
+567 236 225 115 103
+568 103 114 115 235
+569 224 236 235 115
+570 235 115 103 224
+571 104 105 116 226
+572 225 237 226 104
+573 237 226 116 104
+574 104 115 116 236
+575 225 237 236 116
+576 236 116 104 225
+577 105 106 117 227
+578 226 238 227 105
+579 238 227 117 105
+580 105 116 117 237
+581 226 238 237 117
+582 237 117 105 226
+583 106 107 118 228
+584 227 239 228 106
+585 239 228 118 106
+586 106 117 118 238
+587 227 239 238 118
+588 238 118 106 227
+589 107 108 119 229
+590 228 240 229 107
+591 240 229 119 107
+592 107 118 119 239
+593 228 240 239 119
+594 239 119 107 228
+595 108 109 120 230
+596 229 241 230 108
+597 241 230 120 108
+598 108 119 120 240
+599 229 241 240 120
+600 240 120 108 229
+601 121 122 133 243
+602 242 254 243 121
+603 254 243 133 121
+604 121 132 133 253
+605 242 254 253 133
+606 253 133 121 242
+607 122 123 134 244
+608 243 255 244 122
+609 255 244 134 122
+610 122 133 134 254
+611 243 255 254 134
+612 254 134 122 243
+613 123 124 135 245
+614 244 256 245 123
+615 256 245 135 123
+616 123 134 135 255
+617 244 256 255 135
+618 255 135 123 244
+619 124 125 136 246
+620 245 257 246 124
+621 257 246 136 124
+622 124 135 136 256
+623 245 257 256 136
+624 256 136 124 245
+625 125 126 137 247
+626 246 258 247 125
+627 258 247 137 125
+628 125 136 137 257
+629 246 258 257 137
+630 257 137 125 246
+631 126 127 138 248
+632 247 259 248 126
+633 259 248 138 126
+634 126 137 138 258
+635 247 259 258 138
+636 258 138 126 247
+637 127 128 139 249
+638 248 260 249 127
+639 260 249 139 127
+640 127 138 139 259
+641 248 260 259 139
+642 259 139 127 248
+643 128 129 140 250
+644 249 261 250 128
+645 261 250 140 128
+646 128 139 140 260
+647 249 261 260 140
+648 260 140 128 249
+649 129 130 141 251
+650 250 262 251 129
+651 262 251 141 129
+652 129 140 141 261
+653 250 262 261 141
+654 261 141 129 250
+655 130 131 142 252
+656 251 263 252 130
+657 263 252 142 130
+658 130 141 142 262
+659 251 263 262 142
+660 262 142 130 251
+661 132 133 144 254
+662 253 265 254 132
+663 265 254 144 132
+664 132 143 144 264
+665 253 265 264 144
+666 264 144 132 253
+667 133 134 145 255
+668 254 266 255 133
+669 266 255 145 133
+670 133 144 145 265
+671 254 266 265 145
+672 265 145 133 254
+673 134 135 146 256
+674 255 267 256 134
+675 267 256 146 134
+676 134 145 146 266
+677 255 267 266 146
+678 266 146 134 255
+679 135 136 147 257
+680 256 268 257 135
+681 268 257 147 135
+682 135 146 147 267
+683 256 268 267 147
+684 267 147 135 256
+685 136 137 148 258
+686 257 269 258 136
+687 269 258 148 136
+688 136 147 148 268
+689 257 269 268 148
+690 268 148 136 257
+691 137 138 149 259
+692 258 270 259 137
+693 270 259 149 137
+694 137 148 149 269
+695 258 270 269 149
+696 269 149 137 258
+697 138 139 150 260
+698 259 271 260 138
+699 271 260 150 138
+700 138 149 150 270
+701 259 271 270 150
+702 270 150 138 259
+703 139 140 151 261
+704 260 272 261 139
+705 272 261 151 139
+706 139 150 151 271
+707 260 272 271 151
+708 271 151 139 260
+709 140 141 152 262
+710 261 273 262 140
+711 273 262 152 140
+712 140 151 152 272
+713 261 273 272 152
+714 272 152 140 261
+715 141 142 153 263
+716 262 274 263 141
+717 274 263 153 141
+718 141 152 153 273
+719 262 274 273 153
+720 273 153 141 262
+721 143 144 155 265
+722 264 276 265 143
+723 276 265 155 143
+724 143 154 155 275
+725 264 276 275 155
+726 275 155 143 264
+727 144 145 156 266
+728 265 277 266 144
+729 277 266 156 144
+730 144 155 156 276
+731 265 277 276 156
+732 276 156 144 265
+733 145 146 157 267
+734 266 278 267 145
+735 278 267 157 145
+736 145 156 157 277
+737 266 278 277 157
+738 277 157 145 266
+739 146 147 158 268
+740 267 279 268 146
+741 279 268 158 146
+742 146 157 158 278
+743 267 279 278 158
+744 278 158 146 267
+745 147 148 159 269
+746 268 280 269 147
+747 280 269 159 147
+748 147 158 159 279
+749 268 280 279 159
+750 279 159 147 268
+751 148 149 160 270
+752 269 281 270 148
+753 281 270 160 148
+754 148 159 160 280
+755 269 281 280 160
+756 280 160 148 269
+757 149 150 161 271
+758 270 282 271 149
+759 282 271 161 149
+760 149 160 161 281
+761 270 282 281 161
+762 281 161 149 270
+763 150 151 162 272
+764 271 283 272 150
+765 283 272 162 150
+766 150 161 162 282
+767 271 283 282 162
+768 282 162 150 271
+769 151 152 163 273
+770 272 284 273 151
+771 284 273 163 151
+772 151 162 163 283
+773 272 284 283 163
+774 283 163 151 272
+775 152 153 164 274
+776 273 285 274 152
+777 285 274 164 152
+778 152 163 164 284
+779 273 285 284 164
+780 284 164 152 273
+781 154 155 166 276
+782 275 287 276 154
+783 287 276 166 154
+784 154 165 166 286
+785 275 287 286 166
+786 286 166 154 275
+787 155 156 167 277
+788 276 288 277 155
+789 288 277 167 155
+790 155 166 167 287
+791 276 288 287 167
+792 287 167 155 276
+793 156 157 168 278
+794 277 289 278 156
+795 289 278 168 156
+796 156 167 168 288
+797 277 289 288 168
+798 288 168 156 277
+799 157 158 169 279
+800 278 290 279 157
+801 290 279 169 157
+802 157 168 169 289
+803 278 290 289 169
+804 289 169 157 278
+805 158 159 170 280
+806 279 291 280 158
+807 291 280 170 158
+808 158 169 170 290
+809 279 291 290 170
+810 290 170 158 279
+811 159 160 171 281
+812 280 292 281 159
+813 292 281 171 159
+814 159 170 171 291
+815 280 292 291 171
+816 291 171 159 280
+817 160 161 172 282
+818 281 293 282 160
+819 293 282 172 160
+820 160 171 172 292
+821 281 293 292 172
+822 292 172 160 281
+823 161 162 173 283
+824 282 294 283 161
+825 294 283 173 161
+826 161 172 173 293
+827 282 294 293 173
+828 293 173 161 282
+829 162 163 174 284
+830 283 295 284 162
+831 295 284 174 162
+832 162 173 174 294
+833 283 295 294 174
+834 294 174 162 283
+835 163 164 175 285
+836 284 296 285 163
+837 296 285 175 163
+838 163 174 175 295
+839 284 296 295 175
+840 295 175 163 284
+841 165 166 177 287
+842 286 298 287 165
+843 298 287 177 165
+844 165 176 177 297
+845 286 298 297 177
+846 297 177 165 286
+847 166 167 178 288
+848 287 299 288 166
+849 299 288 178 166
+850 166 177 178 298
+851 287 299 298 178
+852 298 178 166 287
+853 167 168 179 289
+854 288 300 289 167
+855 300 289 179 167
+856 167 178 179 299
+857 288 300 299 179
+858 299 179 167 288
+859 168 169 180 290
+860 289 301 290 168
+861 301 290 180 168
+862 168 179 180 300
+863 289 301 300 180
+864 300 180 168 289
+865 169 170 181 291
+866 290 302 291 169
+867 302 291 181 169
+868 169 180 181 301
+869 290 302 301 181
+870 301 181 169 290
+871 170 171 182 292
+872 291 303 292 170
+873 303 292 182 170
+874 170 181 182 302
+875 291 303 302 182
+876 302 182 170 291
+877 171 172 183 293
+878 292 304 293 171
+879 304 293 183 171
+880 171 182 183 303
+881 292 304 303 183
+882 303 183 171 292
+883 172 173 184 294
+884 293 305 294 172
+885 305 294 184 172
+886 172 183 184 304
+887 293 305 304 184
+888 304 184 172 293
+889 173 174 185 295
+890 294 306 295 173
+891 306 295 185 173
+892 173 184 185 305
+893 294 306 305 185
+894 305 185 173 294
+895 174 175 186 296
+896 295 307 296 174
+897 307 296 186 174
+898 174 185 186 306
+899 295 307 306 186
+900 306 186 174 295
+901 176 177 188 298
+902 297 309 298 176
+903 309 298 188 176
+904 176 187 188 308
+905 297 309 308 188
+906 308 188 176 297
+907 177 178 189 299
+908 298 310 299 177
+909 310 299 189 177
+910 177 188 189 309
+911 298 310 309 189
+912 309 189 177 298
+913 178 179 190 300
+914 299 311 300 178
+915 311 300 190 178
+916 178 189 190 310
+917 299 311 310 190
+918 310 190 178 299
+919 179 180 191 301
+920 300 312 301 179
+921 312 301 191 179
+922 179 190 191 311
+923 300 312 311 191
+924 311 191 179 300
+925 180 181 192 302
+926 301 313 302 180
+927 313 302 192 180
+928 180 191 192 312
+929 301 313 312 192
+930 312 192 180 301
+931 181 182 193 303
+932 302 314 303 181
+933 314 303 193 181
+934 181 192 193 313
+935 302 314 313 193
+936 313 193 181 302
+937 182 183 194 304
+938 303 315 304 182
+939 315 304 194 182
+940 182 193 194 314
+941 303 315 314 194
+942 314 194 182 303
+943 183 184 195 305
+944 304 316 305 183
+945 316 305 195 183
+946 183 194 195 315
+947 304 316 315 195
+948 315 195 183 304
+949 184 185 196 306
+950 305 317 306 184
+951 317 306 196 184
+952 184 195 196 316
+953 305 317 316 196
+954 316 196 184 305
+955 185 186 197 307
+956 306 318 307 185
+957 318 307 197 185
+958 185 196 197 317
+959 306 318 317 197
+960 317 197 185 306
+961 187 188 199 309
+962 308 320 309 187
+963 320 309 199 187
+964 187 198 199 319
+965 308 320 319 199
+966 319 199 187 308
+967 188 189 200 310
+968 309 321 310 188
+969 321 310 200 188
+970 188 199 200 320
+971 309 321 320 200
+972 320 200 188 309
+973 189 190 201 311
+974 310 322 311 189
+975 322 311 201 189
+976 189 200 201 321
+977 310 322 321 201
+978 321 201 189 310
+979 190 191 202 312
+980 311 323 312 190
+981 323 312 202 190
+982 190 201 202 322
+983 311 323 322 202
+984 322 202 190 311
+985 191 192 203 313
+986 312 324 313 191
+987 324 313 203 191
+988 191 202 203 323
+989 312 324 323 203
+990 323 203 191 312
+991 192 193 204 314
+992 313 325 314 192
+993 325 314 204 192
+994 192 203 204 324
+995 313 325 324 204
+996 324 204 192 313
+997 193 194 205 315
+998 314 326 315 193
+999 326 315 205 193
+1000 193 204 205 325
+1001 314 326 325 205
+1002 325 205 193 314
+1003 194 195 206 316
+1004 315 327 316 194
+1005 327 316 206 194
+1006 194 205 206 326
+1007 315 327 326 206
+1008 326 206 194 315
+1009 195 196 207 317
+1010 316 328 317 195
+1011 328 317 207 195
+1012 195 206 207 327
+1013 316 328 327 207
+1014 327 207 195 316
+1015 196 197 208 318
+1016 317 329 318 196
+1017 329 318 208 196
+1018 196 207 208 328
+1019 317 329 328 208
+1020 328 208 196 317
+1021 198 199 210 320
+1022 319 331 320 198
+1023 331 320 210 198
+1024 198 209 210 330
+1025 319 331 330 210
+1026 330 210 198 319
+1027 199 200 211 321
+1028 320 332 321 199
+1029 332 321 211 199
+1030 199 210 211 331
+1031 320 332 331 211
+1032 331 211 199 320
+1033 200 201 212 322
+1034 321 333 322 200
+1035 333 322 212 200
+1036 200 211 212 332
+1037 321 333 332 212
+1038 332 212 200 321
+1039 201 202 213 323
+1040 322 334 323 201
+1041 334 323 213 201
+1042 201 212 213 333
+1043 322 334 333 213
+1044 333 213 201 322
+1045 202 203 214 324
+1046 323 335 324 202
+1047 335 324 214 202
+1048 202 213 214 334
+1049 323 335 334 214
+1050 334 214 202 323
+1051 203 204 215 325
+1052 324 336 325 203
+1053 336 325 215 203
+1054 203 214 215 335
+1055 324 336 335 215
+1056 335 215 203 324
+1057 204 205 216 326
+1058 325 337 326 204
+1059 337 326 216 204
+1060 204 215 216 336
+1061 325 337 336 216
+1062 336 216 204 325
+1063 205 206 217 327
+1064 326 338 327 205
+1065 338 327 217 205
+1066 205 216 217 337
+1067 326 338 337 217
+1068 337 217 205 326
+1069 206 207 218 328
+1070 327 339 328 206
+1071 339 328 218 206
+1072 206 217 218 338
+1073 327 339 338 218
+1074 338 218 206 327
+1075 207 208 219 329
+1076 328 340 329 207
+1077 340 329 219 207
+1078 207 218 219 339
+1079 328 340 339 219
+1080 339 219 207 328
+1081 209 210 221 331
+1082 330 342 331 209
+1083 342 331 221 209
+1084 209 220 221 341
+1085 330 342 341 221
+1086 341 221 209 330
+1087 210 211 222 332
+1088 331 343 332 210
+1089 343 332 222 210
+1090 210 221 222 342
+1091 331 343 342 222
+1092 342 222 210 331
+1093 211 212 223 333
+1094 332 344 333 211
+1095 344 333 223 211
+1096 211 222 223 343
+1097 332 344 343 223
+1098 343 223 211 332
+1099 212 213 224 334
+1100 333 345 334 212
+1101 345 334 224 212
+1102 212 223 224 344
+1103 333 345 344 224
+1104 344 224 212 333
+1105 213 214 225 335
+1106 334 346 335 213
+1107 346 335 225 213
+1108 213 224 225 345
+1109 334 346 345 225
+1110 345 225 213 334
+1111 214 215 226 336
+1112 335 347 336 214
+1113 347 336 226 214
+1114 214 225 226 346
+1115 335 347 346 226
+1116 346 226 214 335
+1117 215 216 227 337
+1118 336 348 337 215
+1119 348 337 227 215
+1120 215 226 227 347
+1121 336 348 347 227
+1122 347 227 215 336
+1123 216 217 228 338
+1124 337 349 338 216
+1125 349 338 228 216
+1126 216 227 228 348
+1127 337 349 348 228
+1128 348 228 216 337
+1129 217 218 229 339
+1130 338 350 339 217
+1131 350 339 229 217
+1132 217 228 229 349
+1133 338 350 349 229
+1134 349 229 217 338
+1135 218 219 230 340
+1136 339 351 340 218
+1137 351 340 230 218
+1138 218 229 230 350
+1139 339 351 350 230
+1140 350 230 218 339
+1141 220 221 232 342
+1142 341 353 342 220
+1143 353 342 232 220
+1144 220 231 232 352
+1145 341 353 352 232
+1146 352 232 220 341
+1147 221 222 233 343
+1148 342 354 343 221
+1149 354 343 233 221
+1150 221 232 233 353
+1151 342 354 353 233
+1152 353 233 221 342
+1153 222 223 234 344
+1154 343 355 344 222
+1155 355 344 234 222
+1156 222 233 234 354
+1157 343 355 354 234
+1158 354 234 222 343
+1159 223 224 235 345
+1160 344 356 345 223
+1161 356 345 235 223
+1162 223 234 235 355
+1163 344 356 355 235
+1164 355 235 223 344
+1165 224 225 236 346
+1166 345 357 346 224
+1167 357 346 236 224
+1168 224 235 236 356
+1169 345 357 356 236
+1170 356 236 224 345
+1171 225 226 237 347
+1172 346 358 347 225
+1173 358 347 237 225
+1174 225 236 237 357
+1175 346 358 357 237
+1176 357 237 225 346
+1177 226 227 238 348
+1178 347 359 348 226
+1179 359 348 238 226
+1180 226 237 238 358
+1181 347 359 358 238
+1182 358 238 226 347
+1183 227 228 239 349
+1184 348 360 349 227
+1185 360 349 239 227
+1186 227 238 239 359
+1187 348 360 359 239
+1188 359 239 227 348
+1189 228 229 240 350
+1190 349 361 350 228
+1191 361 350 240 228
+1192 228 239 240 360
+1193 349 361 360 240
+1194 360 240 228 349
+1195 229 230 241 351
+1196 350 362 351 229
+1197 362 351 241 229
+1198 229 240 241 361
+1199 350 362 361 241
+1200 361 241 229 350
+1201 242 243 254 364
+1202 363 375 364 242
+1203 375 364 254 242
+1204 242 253 254 374
+1205 363 375 374 254
+1206 374 254 242 363
+1207 243 244 255 365
+1208 364 376 365 243
+1209 376 365 255 243
+1210 243 254 255 375
+1211 364 376 375 255
+1212 375 255 243 364
+1213 244 245 256 366
+1214 365 377 366 244
+1215 377 366 256 244
+1216 244 255 256 376
+1217 365 377 376 256
+1218 376 256 244 365
+1219 245 246 257 367
+1220 366 378 367 245
+1221 378 367 257 245
+1222 245 256 257 377
+1223 366 378 377 257
+1224 377 257 245 366
+1225 246 247 258 368
+1226 367 379 368 246
+1227 379 368 258 246
+1228 246 257 258 378
+1229 367 379 378 258
+1230 378 258 246 367
+1231 247 248 259 369
+1232 368 380 369 247
+1233 380 369 259 247
+1234 247 258 259 379
+1235 368 380 379 259
+1236 379 259 247 368
+1237 248 249 260 370
+1238 369 381 370 248
+1239 381 370 260 248
+1240 248 259 260 380
+1241 369 381 380 260
+1242 380 260 248 369
+1243 249 250 261 371
+1244 370 382 371 249
+1245 382 371 261 249
+1246 249 260 261 381
+1247 370 382 381 261
+1248 381 261 249 370
+1249 250 251 262 372
+1250 371 383 372 250
+1251 383 372 262 250
+1252 250 261 262 382
+1253 371 383 382 262
+1254 382 262 250 371
+1255 251 252 263 373
+1256 372 384 373 251
+1257 384 373 263 251
+1258 251 262 263 383
+1259 372 384 383 263
+1260 383 263 251 372
+1261 253 254 265 375
+1262 374 386 375 253
+1263 386 375 265 253
+1264 253 264 265 385
+1265 374 386 385 265
+1266 385 265 253 374
+1267 254 255 266 376
+1268 375 387 376 254
+1269 387 376 266 254
+1270 254 265 266 386
+1271 375 387 386 266
+1272 386 266 254 375
+1273 255 256 267 377
+1274 376 388 377 255
+1275 388 377 267 255
+1276 255 266 267 387
+1277 376 388 387 267
+1278 387 267 255 376
+1279 256 257 268 378
+1280 377 389 378 256
+1281 389 378 268 256
+1282 256 267 268 388
+1283 377 389 388 268
+1284 388 268 256 377
+1285 257 258 269 379
+1286 378 390 379 257
+1287 390 379 269 257
+1288 257 268 269 389
+1289 378 390 389 269
+1290 389 269 257 378
+1291 258 259 270 380
+1292 379 391 380 258
+1293 391 380 270 258
+1294 258 269 270 390
+1295 379 391 390 270
+1296 390 270 258 379
+1297 259 260 271 381
+1298 380 392 381 259
+1299 392 381 271 259
+1300 259 270 271 391
+1301 380 392 391 271
+1302 391 271 259 380
+1303 260 261 272 382
+1304 381 393 382 260
+1305 393 382 272 260
+1306 260 271 272 392
+1307 381 393 392 272
+1308 392 272 260 381
+1309 261 262 273 383
+1310 382 394 383 261
+1311 394 383 273 261
+1312 261 272 273 393
+1313 382 394 393 273
+1314 393 273 261 382
+1315 262 263 274 384
+1316 383 395 384 262
+1317 395 384 274 262
+1318 262 273 274 394
+1319 383 395 394 274
+1320 394 274 262 383
+1321 264 265 276 386
+1322 385 397 386 264
+1323 397 386 276 264
+1324 264 275 276 396
+1325 385 397 396 276
+1326 396 276 264 385
+1327 265 266 277 387
+1328 386 398 387 265
+1329 398 387 277 265
+1330 265 276 277 397
+1331 386 398 397 277
+1332 397 277 265 386
+1333 266 267 278 388
+1334 387 399 388 266
+1335 399 388 278 266
+1336 266 277 278 398
+1337 387 399 398 278
+1338 398 278 266 387
+1339 267 268 279 389
+1340 388 400 389 267
+1341 400 389 279 267
+1342 267 278 279 399
+1343 388 400 399 279
+1344 399 279 267 388
+1345 268 269 280 390
+1346 389 401 390 268
+1347 401 390 280 268
+1348 268 279 280 400
+1349 389 401 400 280
+1350 400 280 268 389
+1351 269 270 281 391
+1352 390 402 391 269
+1353 402 391 281 269
+1354 269 280 281 401
+1355 390 402 401 281
+1356 401 281 269 390
+1357 270 271 282 392
+1358 391 403 392 270
+1359 403 392 282 270
+1360 270 281 282 402
+1361 391 403 402 282
+1362 402 282 270 391
+1363 271 272 283 393
+1364 392 404 393 271
+1365 404 393 283 271
+1366 271 282 283 403
+1367 392 404 403 283
+1368 403 283 271 392
+1369 272 273 284 394
+1370 393 405 394 272
+1371 405 394 284 272
+1372 272 283 284 404
+1373 393 405 404 284
+1374 404 284 272 393
+1375 273 274 285 395
+1376 394 406 395 273
+1377 406 395 285 273
+1378 273 284 285 405
+1379 394 406 405 285
+1380 405 285 273 394
+1381 275 276 287 397
+1382 396 408 397 275
+1383 408 397 287 275
+1384 275 286 287 407
+1385 396 408 407 287
+1386 407 287 275 396
+1387 276 277 288 398
+1388 397 409 398 276
+1389 409 398 288 276
+1390 276 287 288 408
+1391 397 409 408 288
+1392 408 288 276 397
+1393 277 278 289 399
+1394 398 410 399 277
+1395 410 399 289 277
+1396 277 288 289 409
+1397 398 410 409 289
+1398 409 289 277 398
+1399 278 279 290 400
+1400 399 411 400 278
+1401 411 400 290 278
+1402 278 289 290 410
+1403 399 411 410 290
+1404 410 290 278 399
+1405 279 280 291 401
+1406 400 412 401 279
+1407 412 401 291 279
+1408 279 290 291 411
+1409 400 412 411 291
+1410 411 291 279 400
+1411 280 281 292 402
+1412 401 413 402 280
+1413 413 402 292 280
+1414 280 291 292 412
+1415 401 413 412 292
+1416 412 292 280 401
+1417 281 282 293 403
+1418 402 414 403 281
+1419 414 403 293 281
+1420 281 292 293 413
+1421 402 414 413 293
+1422 413 293 281 402
+1423 282 283 294 404
+1424 403 415 404 282
+1425 415 404 294 282
+1426 282 293 294 414
+1427 403 415 414 294
+1428 414 294 282 403
+1429 283 284 295 405
+1430 404 416 405 283
+1431 416 405 295 283
+1432 283 294 295 415
+1433 404 416 415 295
+1434 415 295 283 404
+1435 284 285 296 406
+1436 405 417 406 284
+1437 417 406 296 284
+1438 284 295 296 416
+1439 405 417 416 296
+1440 416 296 284 405
+1441 286 287 298 408
+1442 407 419 408 286
+1443 419 408 298 286
+1444 286 297 298 418
+1445 407 419 418 298
+1446 418 298 286 407
+1447 287 288 299 409
+1448 408 420 409 287
+1449 420 409 299 287
+1450 287 298 299 419
+1451 408 420 419 299
+1452 419 299 287 408
+1453 288 289 300 410
+1454 409 421 410 288
+1455 421 410 300 288
+1456 288 299 300 420
+1457 409 421 420 300
+1458 420 300 288 409
+1459 289 290 301 411
+1460 410 422 411 289
+1461 422 411 301 289
+1462 289 300 301 421
+1463 410 422 421 301
+1464 421 301 289 410
+1465 290 291 302 412
+1466 411 423 412 290
+1467 423 412 302 290
+1468 290 301 302 422
+1469 411 423 422 302
+1470 422 302 290 411
+1471 291 292 303 413
+1472 412 424 413 291
+1473 424 413 303 291
+1474 291 302 303 423
+1475 412 424 423 303
+1476 423 303 291 412
+1477 292 293 304 414
+1478 413 425 414 292
+1479 425 414 304 292
+1480 292 303 304 424
+1481 413 425 424 304
+1482 424 304 292 413
+1483 293 294 305 415
+1484 414 426 415 293
+1485 426 415 305 293
+1486 293 304 305 425
+1487 414 426 425 305
+1488 425 305 293 414
+1489 294 295 306 416
+1490 415 427 416 294
+1491 427 416 306 294
+1492 294 305 306 426
+1493 415 427 426 306
+1494 426 306 294 415
+1495 295 296 307 417
+1496 416 428 417 295
+1497 428 417 307 295
+1498 295 306 307 427
+1499 416 428 427 307
+1500 427 307 295 416
+1501 297 298 309 419
+1502 418 430 419 297
+1503 430 419 309 297
+1504 297 308 309 429
+1505 418 430 429 309
+1506 429 309 297 418
+1507 298 299 310 420
+1508 419 431 420 298
+1509 431 420 310 298
+1510 298 309 310 430
+1511 419 431 430 310
+1512 430 310 298 419
+1513 299 300 311 421
+1514 420 432 421 299
+1515 432 421 311 299
+1516 299 310 311 431
+1517 420 432 431 311
+1518 431 311 299 420
+1519 300 301 312 422
+1520 421 433 422 300
+1521 433 422 312 300
+1522 300 311 312 432
+1523 421 433 432 312
+1524 432 312 300 421
+1525 301 302 313 423
+1526 422 434 423 301
+1527 434 423 313 301
+1528 301 312 313 433
+1529 422 434 433 313
+1530 433 313 301 422
+1531 302 303 314 424
+1532 423 435 424 302
+1533 435 424 314 302
+1534 302 313 314 434
+1535 423 435 434 314
+1536 434 314 302 423
+1537 303 304 315 425
+1538 424 436 425 303
+1539 436 425 315 303
+1540 303 314 315 435
+1541 424 436 435 315
+1542 435 315 303 424
+1543 304 305 316 426
+1544 425 437 426 304
+1545 437 426 316 304
+1546 304 315 316 436
+1547 425 437 436 316
+1548 436 316 304 425
+1549 305 306 317 427
+1550 426 438 427 305
+1551 438 427 317 305
+1552 305 316 317 437
+1553 426 438 437 317
+1554 437 317 305 426
+1555 306 307 318 428
+1556 427 439 428 306
+1557 439 428 318 306
+1558 306 317 318 438
+1559 427 439 438 318
+1560 438 318 306 427
+1561 308 309 320 430
+1562 429 441 430 308
+1563 441 430 320 308
+1564 308 319 320 440
+1565 429 441 440 320
+1566 440 320 308 429
+1567 309 310 321 431
+1568 430 442 431 309
+1569 442 431 321 309
+1570 309 320 321 441
+1571 430 442 441 321
+1572 441 321 309 430
+1573 310 311 322 432
+1574 431 443 432 310
+1575 443 432 322 310
+1576 310 321 322 442
+1577 431 443 442 322
+1578 442 322 310 431
+1579 311 312 323 433
+1580 432 444 433 311
+1581 444 433 323 311
+1582 311 322 323 443
+1583 432 444 443 323
+1584 443 323 311 432
+1585 312 313 324 434
+1586 433 445 434 312
+1587 445 434 324 312
+1588 312 323 324 444
+1589 433 445 444 324
+1590 444 324 312 433
+1591 313 314 325 435
+1592 434 446 435 313
+1593 446 435 325 313
+1594 313 324 325 445
+1595 434 446 445 325
+1596 445 325 313 434
+1597 314 315 326 436
+1598 435 447 436 314
+1599 447 436 326 314
+1600 314 325 326 446
+1601 435 447 446 326
+1602 446 326 314 435
+1603 315 316 327 437
+1604 436 448 437 315
+1605 448 437 327 315
+1606 315 326 327 447
+1607 436 448 447 327
+1608 447 327 315 436
+1609 316 317 328 438
+1610 437 449 438 316
+1611 449 438 328 316
+1612 316 327 328 448
+1613 437 449 448 328
+1614 448 328 316 437
+1615 317 318 329 439
+1616 438 450 439 317
+1617 450 439 329 317
+1618 317 328 329 449
+1619 438 450 449 329
+1620 449 329 317 438
+1621 319 320 331 441
+1622 440 452 441 319
+1623 452 441 331 319
+1624 319 330 331 451
+1625 440 452 451 331
+1626 451 331 319 440
+1627 320 321 332 442
+1628 441 453 442 320
+1629 453 442 332 320
+1630 320 331 332 452
+1631 441 453 452 332
+1632 452 332 320 441
+1633 321 322 333 443
+1634 442 454 443 321
+1635 454 443 333 321
+1636 321 332 333 453
+1637 442 454 453 333
+1638 453 333 321 442
+1639 322 323 334 444
+1640 443 455 444 322
+1641 455 444 334 322
+1642 322 333 334 454
+1643 443 455 454 334
+1644 454 334 322 443
+1645 323 324 335 445
+1646 444 456 445 323
+1647 456 445 335 323
+1648 323 334 335 455
+1649 444 456 455 335
+1650 455 335 323 444
+1651 324 325 336 446
+1652 445 457 446 324
+1653 457 446 336 324
+1654 324 335 336 456
+1655 445 457 456 336
+1656 456 336 324 445
+1657 325 326 337 447
+1658 446 458 447 325
+1659 458 447 337 325
+1660 325 336 337 457
+1661 446 458 457 337
+1662 457 337 325 446
+1663 326 327 338 448
+1664 447 459 448 326
+1665 459 448 338 326
+1666 326 337 338 458
+1667 447 459 458 338
+1668 458 338 326 447
+1669 327 328 339 449
+1670 448 460 449 327
+1671 460 449 339 327
+1672 327 338 339 459
+1673 448 460 459 339
+1674 459 339 327 448
+1675 328 329 340 450
+1676 449 461 450 328
+1677 461 450 340 328
+1678 328 339 340 460
+1679 449 461 460 340
+1680 460 340 328 449
+1681 330 331 342 452
+1682 451 463 452 330
+1683 463 452 342 330
+1684 330 341 342 462
+1685 451 463 462 342
+1686 462 342 330 451
+1687 331 332 343 453
+1688 452 464 453 331
+1689 464 453 343 331
+1690 331 342 343 463
+1691 452 464 463 343
+1692 463 343 331 452
+1693 332 333 344 454
+1694 453 465 454 332
+1695 465 454 344 332
+1696 332 343 344 464
+1697 453 465 464 344
+1698 464 344 332 453
+1699 333 334 345 455
+1700 454 466 455 333
+1701 466 455 345 333
+1702 333 344 345 465
+1703 454 466 465 345
+1704 465 345 333 454
+1705 334 335 346 456
+1706 455 467 456 334
+1707 467 456 346 334
+1708 334 345 346 466
+1709 455 467 466 346
+1710 466 346 334 455
+1711 335 336 347 457
+1712 456 468 457 335
+1713 468 457 347 335
+1714 335 346 347 467
+1715 456 468 467 347
+1716 467 347 335 456
+1717 336 337 348 458
+1718 457 469 458 336
+1719 469 458 348 336
+1720 336 347 348 468
+1721 457 469 468 348
+1722 468 348 336 457
+1723 337 338 349 459
+1724 458 470 459 337
+1725 470 459 349 337
+1726 337 348 349 469
+1727 458 470 469 349
+1728 469 349 337 458
+1729 338 339 350 460
+1730 459 471 460 338
+1731 471 460 350 338
+1732 338 349 350 470
+1733 459 471 470 350
+1734 470 350 338 459
+1735 339 340 351 461
+1736 460 472 461 339
+1737 472 461 351 339
+1738 339 350 351 471
+1739 460 472 471 351
+1740 471 351 339 460
+1741 341 342 353 463
+1742 462 474 463 341
+1743 474 463 353 341
+1744 341 352 353 473
+1745 462 474 473 353
+1746 473 353 341 462
+1747 342 343 354 464
+1748 463 475 464 342
+1749 475 464 354 342
+1750 342 353 354 474
+1751 463 475 474 354
+1752 474 354 342 463
+1753 343 344 355 465
+1754 464 476 465 343
+1755 476 465 355 343
+1756 343 354 355 475
+1757 464 476 475 355
+1758 475 355 343 464
+1759 344 345 356 466
+1760 465 477 466 344
+1761 477 466 356 344
+1762 344 355 356 476
+1763 465 477 476 356
+1764 476 356 344 465
+1765 345 346 357 467
+1766 466 478 467 345
+1767 478 467 357 345
+1768 345 356 357 477
+1769 466 478 477 357
+1770 477 357 345 466
+1771 346 347 358 468
+1772 467 479 468 346
+1773 479 468 358 346
+1774 346 357 358 478
+1775 467 479 478 358
+1776 478 358 346 467
+1777 347 348 359 469
+1778 468 480 469 347
+1779 480 469 359 347
+1780 347 358 359 479
+1781 468 480 479 359
+1782 479 359 347 468
+1783 348 349 360 470
+1784 469 481 470 348
+1785 481 470 360 348
+1786 348 359 360 480
+1787 469 481 480 360
+1788 480 360 348 469
+1789 349 350 361 471
+1790 470 482 471 349
+1791 482 471 361 349
+1792 349 360 361 481
+1793 470 482 481 361
+1794 481 361 349 470
+1795 350 351 362 472
+1796 471 483 472 350
+1797 483 472 362 350
+1798 350 361 362 482
+1799 471 483 482 362
+1800 482 362 350 471
+1801 363 364 375 485
+1802 484 496 485 363
+1803 496 485 375 363
+1804 363 374 375 495
+1805 484 496 495 375
+1806 495 375 363 484
+1807 364 365 376 486
+1808 485 497 486 364
+1809 497 486 376 364
+1810 364 375 376 496
+1811 485 497 496 376
+1812 496 376 364 485
+1813 365 366 377 487
+1814 486 498 487 365
+1815 498 487 377 365
+1816 365 376 377 497
+1817 486 498 497 377
+1818 497 377 365 486
+1819 366 367 378 488
+1820 487 499 488 366
+1821 499 488 378 366
+1822 366 377 378 498
+1823 487 499 498 378
+1824 498 378 366 487
+1825 367 368 379 489
+1826 488 500 489 367
+1827 500 489 379 367
+1828 367 378 379 499
+1829 488 500 499 379
+1830 499 379 367 488
+1831 368 369 380 490
+1832 489 501 490 368
+1833 501 490 380 368
+1834 368 379 380 500
+1835 489 501 500 380
+1836 500 380 368 489
+1837 369 370 381 491
+1838 490 502 491 369
+1839 502 491 381 369
+1840 369 380 381 501
+1841 490 502 501 381
+1842 501 381 369 490
+1843 370 371 382 492
+1844 491 503 492 370
+1845 503 492 382 370
+1846 370 381 382 502
+1847 491 503 502 382
+1848 502 382 370 491
+1849 371 372 383 493
+1850 492 504 493 371
+1851 504 493 383 371
+1852 371 382 383 503
+1853 492 504 503 383
+1854 503 383 371 492
+1855 372 373 384 494
+1856 493 505 494 372
+1857 505 494 384 372
+1858 372 383 384 504
+1859 493 505 504 384
+1860 504 384 372 493
+1861 374 375 386 496
+1862 495 507 496 374
+1863 507 496 386 374
+1864 374 385 386 506
+1865 495 507 506 386
+1866 506 386 374 495
+1867 375 376 387 497
+1868 496 508 497 375
+1869 508 497 387 375
+1870 375 386 387 507
+1871 496 508 507 387
+1872 507 387 375 496
+1873 376 377 388 498
+1874 497 509 498 376
+1875 509 498 388 376
+1876 376 387 388 508
+1877 497 509 508 388
+1878 508 388 376 497
+1879 377 378 389 499
+1880 498 510 499 377
+1881 510 499 389 377
+1882 377 388 389 509
+1883 498 510 509 389
+1884 509 389 377 498
+1885 378 379 390 500
+1886 499 511 500 378
+1887 511 500 390 378
+1888 378 389 390 510
+1889 499 511 510 390
+1890 510 390 378 499
+1891 379 380 391 501
+1892 500 512 501 379
+1893 512 501 391 379
+1894 379 390 391 511
+1895 500 512 511 391
+1896 511 391 379 500
+1897 380 381 392 502
+1898 501 513 502 380
+1899 513 502 392 380
+1900 380 391 392 512
+1901 501 513 512 392
+1902 512 392 380 501
+1903 381 382 393 503
+1904 502 514 503 381
+1905 514 503 393 381
+1906 381 392 393 513
+1907 502 514 513 393
+1908 513 393 381 502
+1909 382 383 394 504
+1910 503 515 504 382
+1911 515 504 394 382
+1912 382 393 394 514
+1913 503 515 514 394
+1914 514 394 382 503
+1915 383 384 395 505
+1916 504 516 505 383
+1917 516 505 395 383
+1918 383 394 395 515
+1919 504 516 515 395
+1920 515 395 383 504
+1921 385 386 397 507
+1922 506 518 507 385
+1923 518 507 397 385
+1924 385 396 397 517
+1925 506 518 517 397
+1926 517 397 385 506
+1927 386 387 398 508
+1928 507 519 508 386
+1929 519 508 398 386
+1930 386 397 398 518
+1931 507 519 518 398
+1932 518 398 386 507
+1933 387 388 399 509
+1934 508 520 509 387
+1935 520 509 399 387
+1936 387 398 399 519
+1937 508 520 519 399
+1938 519 399 387 508
+1939 388 389 400 510
+1940 509 521 510 388
+1941 521 510 400 388
+1942 388 399 400 520
+1943 509 521 520 400
+1944 520 400 388 509
+1945 389 390 401 511
+1946 510 522 511 389
+1947 522 511 401 389
+1948 389 400 401 521
+1949 510 522 521 401
+1950 521 401 389 510
+1951 390 391 402 512
+1952 511 523 512 390
+1953 523 512 402 390
+1954 390 401 402 522
+1955 511 523 522 402
+1956 522 402 390 511
+1957 391 392 403 513
+1958 512 524 513 391
+1959 524 513 403 391
+1960 391 402 403 523
+1961 512 524 523 403
+1962 523 403 391 512
+1963 392 393 404 514
+1964 513 525 514 392
+1965 525 514 404 392
+1966 392 403 404 524
+1967 513 525 524 404
+1968 524 404 392 513
+1969 393 394 405 515
+1970 514 526 515 393
+1971 526 515 405 393
+1972 393 404 405 525
+1973 514 526 525 405
+1974 525 405 393 514
+1975 394 395 406 516
+1976 515 527 516 394
+1977 527 516 406 394
+1978 394 405 406 526
+1979 515 527 526 406
+1980 526 406 394 515
+1981 396 397 408 518
+1982 517 529 518 396
+1983 529 518 408 396
+1984 396 407 408 528
+1985 517 529 528 408
+1986 528 408 396 517
+1987 397 398 409 519
+1988 518 530 519 397
+1989 530 519 409 397
+1990 397 408 409 529
+1991 518 530 529 409
+1992 529 409 397 518
+1993 398 399 410 520
+1994 519 531 520 398
+1995 531 520 410 398
+1996 398 409 410 530
+1997 519 531 530 410
+1998 530 410 398 519
+1999 399 400 411 521
+2000 520 532 521 399
+2001 532 521 411 399
+2002 399 410 411 531
+2003 520 532 531 411
+2004 531 411 399 520
+2005 400 401 412 522
+2006 521 533 522 400
+2007 533 522 412 400
+2008 400 411 412 532
+2009 521 533 532 412
+2010 532 412 400 521
+2011 401 402 413 523
+2012 522 534 523 401
+2013 534 523 413 401
+2014 401 412 413 533
+2015 522 534 533 413
+2016 533 413 401 522
+2017 402 403 414 524
+2018 523 535 524 402
+2019 535 524 414 402
+2020 402 413 414 534
+2021 523 535 534 414
+2022 534 414 402 523
+2023 403 404 415 525
+2024 524 536 525 403
+2025 536 525 415 403
+2026 403 414 415 535
+2027 524 536 535 415
+2028 535 415 403 524
+2029 404 405 416 526
+2030 525 537 526 404
+2031 537 526 416 404
+2032 404 415 416 536
+2033 525 537 536 416
+2034 536 416 404 525
+2035 405 406 417 527
+2036 526 538 527 405
+2037 538 527 417 405
+2038 405 416 417 537
+2039 526 538 537 417
+2040 537 417 405 526
+2041 407 408 419 529
+2042 528 540 529 407
+2043 540 529 419 407
+2044 407 418 419 539
+2045 528 540 539 419
+2046 539 419 407 528
+2047 408 409 420 530
+2048 529 541 530 408
+2049 541 530 420 408
+2050 408 419 420 540
+2051 529 541 540 420
+2052 540 420 408 529
+2053 409 410 421 531
+2054 530 542 531 409
+2055 542 531 421 409
+2056 409 420 421 541
+2057 530 542 541 421
+2058 541 421 409 530
+2059 410 411 422 532
+2060 531 543 532 410
+2061 543 532 422 410
+2062 410 421 422 542
+2063 531 543 542 422
+2064 542 422 410 531
+2065 411 412 423 533
+2066 532 544 533 411
+2067 544 533 423 411
+2068 411 422 423 543
+2069 532 544 543 423
+2070 543 423 411 532
+2071 412 413 424 534
+2072 533 545 534 412
+2073 545 534 424 412
+2074 412 423 424 544
+2075 533 545 544 424
+2076 544 424 412 533
+2077 413 414 425 535
+2078 534 546 535 413
+2079 546 535 425 413
+2080 413 424 425 545
+2081 534 546 545 425
+2082 545 425 413 534
+2083 414 415 426 536
+2084 535 547 536 414
+2085 547 536 426 414
+2086 414 425 426 546
+2087 535 547 546 426
+2088 546 426 414 535
+2089 415 416 427 537
+2090 536 548 537 415
+2091 548 537 427 415
+2092 415 426 427 547
+2093 536 548 547 427
+2094 547 427 415 536
+2095 416 417 428 538
+2096 537 549 538 416
+2097 549 538 428 416
+2098 416 427 428 548
+2099 537 549 548 428
+2100 548 428 416 537
+2101 418 419 430 540
+2102 539 551 540 418
+2103 551 540 430 418
+2104 418 429 430 550
+2105 539 551 550 430
+2106 550 430 418 539
+2107 419 420 431 541
+2108 540 552 541 419
+2109 552 541 431 419
+2110 419 430 431 551
+2111 540 552 551 431
+2112 551 431 419 540
+2113 420 421 432 542
+2114 541 553 542 420
+2115 553 542 432 420
+2116 420 431 432 552
+2117 541 553 552 432
+2118 552 432 420 541
+2119 421 422 433 543
+2120 542 554 543 421
+2121 554 543 433 421
+2122 421 432 433 553
+2123 542 554 553 433
+2124 553 433 421 542
+2125 422 423 434 544
+2126 543 555 544 422
+2127 555 544 434 422
+2128 422 433 434 554
+2129 543 555 554 434
+2130 554 434 422 543
+2131 423 424 435 545
+2132 544 556 545 423
+2133 556 545 435 423
+2134 423 434 435 555
+2135 544 556 555 435
+2136 555 435 423 544
+2137 424 425 436 546
+2138 545 557 546 424
+2139 557 546 436 424
+2140 424 435 436 556
+2141 545 557 556 436
+2142 556 436 424 545
+2143 425 426 437 547
+2144 546 558 547 425
+2145 558 547 437 425
+2146 425 436 437 557
+2147 546 558 557 437
+2148 557 437 425 546
+2149 426 427 438 548
+2150 547 559 548 426
+2151 559 548 438 426
+2152 426 437 438 558
+2153 547 559 558 438
+2154 558 438 426 547
+2155 427 428 439 549
+2156 548 560 549 427
+2157 560 549 439 427
+2158 427 438 439 559
+2159 548 560 559 439
+2160 559 439 427 548
+2161 429 430 441 551
+2162 550 562 551 429
+2163 562 551 441 429
+2164 429 440 441 561
+2165 550 562 561 441
+2166 561 441 429 550
+2167 430 431 442 552
+2168 551 563 552 430
+2169 563 552 442 430
+2170 430 441 442 562
+2171 551 563 562 442
+2172 562 442 430 551
+2173 431 432 443 553
+2174 552 564 553 431
+2175 564 553 443 431
+2176 431 442 443 563
+2177 552 564 563 443
+2178 563 443 431 552
+2179 432 433 444 554
+2180 553 565 554 432
+2181 565 554 444 432
+2182 432 443 444 564
+2183 553 565 564 444
+2184 564 444 432 553
+2185 433 434 445 555
+2186 554 566 555 433
+2187 566 555 445 433
+2188 433 444 445 565
+2189 554 566 565 445
+2190 565 445 433 554
+2191 434 435 446 556
+2192 555 567 556 434
+2193 567 556 446 434
+2194 434 445 446 566
+2195 555 567 566 446
+2196 566 446 434 555
+2197 435 436 447 557
+2198 556 568 557 435
+2199 568 557 447 435
+2200 435 446 447 567
+2201 556 568 567 447
+2202 567 447 435 556
+2203 436 437 448 558
+2204 557 569 558 436
+2205 569 558 448 436
+2206 436 447 448 568
+2207 557 569 568 448
+2208 568 448 436 557
+2209 437 438 449 559
+2210 558 570 559 437
+2211 570 559 449 437
+2212 437 448 449 569
+2213 558 570 569 449
+2214 569 449 437 558
+2215 438 439 450 560
+2216 559 571 560 438
+2217 571 560 450 438
+2218 438 449 450 570
+2219 559 571 570 450
+2220 570 450 438 559
+2221 440 441 452 562
+2222 561 573 562 440
+2223 573 562 452 440
+2224 440 451 452 572
+2225 561 573 572 452
+2226 572 452 440 561
+2227 441 442 453 563
+2228 562 574 563 441
+2229 574 563 453 441
+2230 441 452 453 573
+2231 562 574 573 453
+2232 573 453 441 562
+2233 442 443 454 564
+2234 563 575 564 442
+2235 575 564 454 442
+2236 442 453 454 574
+2237 563 575 574 454
+2238 574 454 442 563
+2239 443 444 455 565
+2240 564 576 565 443
+2241 576 565 455 443
+2242 443 454 455 575
+2243 564 576 575 455
+2244 575 455 443 564
+2245 444 445 456 566
+2246 565 577 566 444
+2247 577 566 456 444
+2248 444 455 456 576
+2249 565 577 576 456
+2250 576 456 444 565
+2251 445 446 457 567
+2252 566 578 567 445
+2253 578 567 457 445
+2254 445 456 457 577
+2255 566 578 577 457
+2256 577 457 445 566
+2257 446 447 458 568
+2258 567 579 568 446
+2259 579 568 458 446
+2260 446 457 458 578
+2261 567 579 578 458
+2262 578 458 446 567
+2263 447 448 459 569
+2264 568 580 569 447
+2265 580 569 459 447
+2266 447 458 459 579
+2267 568 580 579 459
+2268 579 459 447 568
+2269 448 449 460 570
+2270 569 581 570 448
+2271 581 570 460 448
+2272 448 459 460 580
+2273 569 581 580 460
+2274 580 460 448 569
+2275 449 450 461 571
+2276 570 582 571 449
+2277 582 571 461 449
+2278 449 460 461 581
+2279 570 582 581 461
+2280 581 461 449 570
+2281 451 452 463 573
+2282 572 584 573 451
+2283 584 573 463 451
+2284 451 462 463 583
+2285 572 584 583 463
+2286 583 463 451 572
+2287 452 453 464 574
+2288 573 585 574 452
+2289 585 574 464 452
+2290 452 463 464 584
+2291 573 585 584 464
+2292 584 464 452 573
+2293 453 454 465 575
+2294 574 586 575 453
+2295 586 575 465 453
+2296 453 464 465 585
+2297 574 586 585 465
+2298 585 465 453 574
+2299 454 455 466 576
+2300 575 587 576 454
+2301 587 576 466 454
+2302 454 465 466 586
+2303 575 587 586 466
+2304 586 466 454 575
+2305 455 456 467 577
+2306 576 588 577 455
+2307 588 577 467 455
+2308 455 466 467 587
+2309 576 588 587 467
+2310 587 467 455 576
+2311 456 457 468 578
+2312 577 589 578 456
+2313 589 578 468 456
+2314 456 467 468 588
+2315 577 589 588 468
+2316 588 468 456 577
+2317 457 458 469 579
+2318 578 590 579 457
+2319 590 579 469 457
+2320 457 468 469 589
+2321 578 590 589 469
+2322 589 469 457 578
+2323 458 459 470 580
+2324 579 591 580 458
+2325 591 580 470 458
+2326 458 469 470 590
+2327 579 591 590 470
+2328 590 470 458 579
+2329 459 460 471 581
+2330 580 592 581 459
+2331 592 581 471 459
+2332 459 470 471 591
+2333 580 592 591 471
+2334 591 471 459 580
+2335 460 461 472 582
+2336 581 593 582 460
+2337 593 582 472 460
+2338 460 471 472 592
+2339 581 593 592 472
+2340 592 472 460 581
+2341 462 463 474 584
+2342 583 595 584 462
+2343 595 584 474 462
+2344 462 473 474 594
+2345 583 595 594 474
+2346 594 474 462 583
+2347 463 464 475 585
+2348 584 596 585 463
+2349 596 585 475 463
+2350 463 474 475 595
+2351 584 596 595 475
+2352 595 475 463 584
+2353 464 465 476 586
+2354 585 597 586 464
+2355 597 586 476 464
+2356 464 475 476 596
+2357 585 597 596 476
+2358 596 476 464 585
+2359 465 466 477 587
+2360 586 598 587 465
+2361 598 587 477 465
+2362 465 476 477 597
+2363 586 598 597 477
+2364 597 477 465 586
+2365 466 467 478 588
+2366 587 599 588 466
+2367 599 588 478 466
+2368 466 477 478 598
+2369 587 599 598 478
+2370 598 478 466 587
+2371 467 468 479 589
+2372 588 600 589 467
+2373 600 589 479 467
+2374 467 478 479 599
+2375 588 600 599 479
+2376 599 479 467 588
+2377 468 469 480 590
+2378 589 601 590 468
+2379 601 590 480 468
+2380 468 479 480 600
+2381 589 601 600 480
+2382 600 480 468 589
+2383 469 470 481 591
+2384 590 602 591 469
+2385 602 591 481 469
+2386 469 480 481 601
+2387 590 602 601 481
+2388 601 481 469 590
+2389 470 471 482 592
+2390 591 603 592 470
+2391 603 592 482 470
+2392 470 481 482 602
+2393 591 603 602 482
+2394 602 482 470 591
+2395 471 472 483 593
+2396 592 604 593 471
+2397 604 593 483 471
+2398 471 482 483 603
+2399 592 604 603 483
+2400 603 483 471 592
+2401 484 485 496 606
+2402 605 617 606 484
+2403 617 606 496 484
+2404 484 495 496 616
+2405 605 617 616 496
+2406 616 496 484 605
+2407 485 486 497 607
+2408 606 618 607 485
+2409 618 607 497 485
+2410 485 496 497 617
+2411 606 618 617 497
+2412 617 497 485 606
+2413 486 487 498 608
+2414 607 619 608 486
+2415 619 608 498 486
+2416 486 497 498 618
+2417 607 619 618 498
+2418 618 498 486 607
+2419 487 488 499 609
+2420 608 620 609 487
+2421 620 609 499 487
+2422 487 498 499 619
+2423 608 620 619 499
+2424 619 499 487 608
+2425 488 489 500 610
+2426 609 621 610 488
+2427 621 610 500 488
+2428 488 499 500 620
+2429 609 621 620 500
+2430 620 500 488 609
+2431 489 490 501 611
+2432 610 622 611 489
+2433 622 611 501 489
+2434 489 500 501 621
+2435 610 622 621 501
+2436 621 501 489 610
+2437 490 491 502 612
+2438 611 623 612 490
+2439 623 612 502 490
+2440 490 501 502 622
+2441 611 623 622 502
+2442 622 502 490 611
+2443 491 492 503 613
+2444 612 624 613 491
+2445 624 613 503 491
+2446 491 502 503 623
+2447 612 624 623 503
+2448 623 503 491 612
+2449 492 493 504 614
+2450 613 625 614 492
+2451 625 614 504 492
+2452 492 503 504 624
+2453 613 625 624 504
+2454 624 504 492 613
+2455 493 494 505 615
+2456 614 626 615 493
+2457 626 615 505 493
+2458 493 504 505 625
+2459 614 626 625 505
+2460 625 505 493 614
+2461 495 496 507 617
+2462 616 628 617 495
+2463 628 617 507 495
+2464 495 506 507 627
+2465 616 628 627 507
+2466 627 507 495 616
+2467 496 497 508 618
+2468 617 629 618 496
+2469 629 618 508 496
+2470 496 507 508 628
+2471 617 629 628 508
+2472 628 508 496 617
+2473 497 498 509 619
+2474 618 630 619 497
+2475 630 619 509 497
+2476 497 508 509 629
+2477 618 630 629 509
+2478 629 509 497 618
+2479 498 499 510 620
+2480 619 631 620 498
+2481 631 620 510 498
+2482 498 509 510 630
+2483 619 631 630 510
+2484 630 510 498 619
+2485 499 500 511 621
+2486 620 632 621 499
+2487 632 621 511 499
+2488 499 510 511 631
+2489 620 632 631 511
+2490 631 511 499 620
+2491 500 501 512 622
+2492 621 633 622 500
+2493 633 622 512 500
+2494 500 511 512 632
+2495 621 633 632 512
+2496 632 512 500 621
+2497 501 502 513 623
+2498 622 634 623 501
+2499 634 623 513 501
+2500 501 512 513 633
+2501 622 634 633 513
+2502 633 513 501 622
+2503 502 503 514 624
+2504 623 635 624 502
+2505 635 624 514 502
+2506 502 513 514 634
+2507 623 635 634 514
+2508 634 514 502 623
+2509 503 504 515 625
+2510 624 636 625 503
+2511 636 625 515 503
+2512 503 514 515 635
+2513 624 636 635 515
+2514 635 515 503 624
+2515 504 505 516 626
+2516 625 637 626 504
+2517 637 626 516 504
+2518 504 515 516 636
+2519 625 637 636 516
+2520 636 516 504 625
+2521 506 507 518 628
+2522 627 639 628 506
+2523 639 628 518 506
+2524 506 517 518 638
+2525 627 639 638 518
+2526 638 518 506 627
+2527 507 508 519 629
+2528 628 640 629 507
+2529 640 629 519 507
+2530 507 518 519 639
+2531 628 640 639 519
+2532 639 519 507 628
+2533 508 509 520 630
+2534 629 641 630 508
+2535 641 630 520 508
+2536 508 519 520 640
+2537 629 641 640 520
+2538 640 520 508 629
+2539 509 510 521 631
+2540 630 642 631 509
+2541 642 631 521 509
+2542 509 520 521 641
+2543 630 642 641 521
+2544 641 521 509 630
+2545 510 511 522 632
+2546 631 643 632 510
+2547 643 632 522 510
+2548 510 521 522 642
+2549 631 643 642 522
+2550 642 522 510 631
+2551 511 512 523 633
+2552 632 644 633 511
+2553 644 633 523 511
+2554 511 522 523 643
+2555 632 644 643 523
+2556 643 523 511 632
+2557 512 513 524 634
+2558 633 645 634 512
+2559 645 634 524 512
+2560 512 523 524 644
+2561 633 645 644 524
+2562 644 524 512 633
+2563 513 514 525 635
+2564 634 646 635 513
+2565 646 635 525 513
+2566 513 524 525 645
+2567 634 646 645 525
+2568 645 525 513 634
+2569 514 515 526 636
+2570 635 647 636 514
+2571 647 636 526 514
+2572 514 525 526 646
+2573 635 647 646 526
+2574 646 526 514 635
+2575 515 516 527 637
+2576 636 648 637 515
+2577 648 637 527 515
+2578 515 526 527 647
+2579 636 648 647 527
+2580 647 527 515 636
+2581 517 518 529 639
+2582 638 650 639 517
+2583 650 639 529 517
+2584 517 528 529 649
+2585 638 650 649 529
+2586 649 529 517 638
+2587 518 519 530 640
+2588 639 651 640 518
+2589 651 640 530 518
+2590 518 529 530 650
+2591 639 651 650 530
+2592 650 530 518 639
+2593 519 520 531 641
+2594 640 652 641 519
+2595 652 641 531 519
+2596 519 530 531 651
+2597 640 652 651 531
+2598 651 531 519 640
+2599 520 521 532 642
+2600 641 653 642 520
+2601 653 642 532 520
+2602 520 531 532 652
+2603 641 653 652 532
+2604 652 532 520 641
+2605 521 522 533 643
+2606 642 654 643 521
+2607 654 643 533 521
+2608 521 532 533 653
+2609 642 654 653 533
+2610 653 533 521 642
+2611 522 523 534 644
+2612 643 655 644 522
+2613 655 644 534 522
+2614 522 533 534 654
+2615 643 655 654 534
+2616 654 534 522 643
+2617 523 524 535 645
+2618 644 656 645 523
+2619 656 645 535 523
+2620 523 534 535 655
+2621 644 656 655 535
+2622 655 535 523 644
+2623 524 525 536 646
+2624 645 657 646 524
+2625 657 646 536 524
+2626 524 535 536 656
+2627 645 657 656 536
+2628 656 536 524 645
+2629 525 526 537 647
+2630 646 658 647 525
+2631 658 647 537 525
+2632 525 536 537 657
+2633 646 658 657 537
+2634 657 537 525 646
+2635 526 527 538 648
+2636 647 659 648 526
+2637 659 648 538 526
+2638 526 537 538 658
+2639 647 659 658 538
+2640 658 538 526 647
+2641 528 529 540 650
+2642 649 661 650 528
+2643 661 650 540 528
+2644 528 539 540 660
+2645 649 661 660 540
+2646 660 540 528 649
+2647 529 530 541 651
+2648 650 662 651 529
+2649 662 651 541 529
+2650 529 540 541 661
+2651 650 662 661 541
+2652 661 541 529 650
+2653 530 531 542 652
+2654 651 663 652 530
+2655 663 652 542 530
+2656 530 541 542 662
+2657 651 663 662 542
+2658 662 542 530 651
+2659 531 532 543 653
+2660 652 664 653 531
+2661 664 653 543 531
+2662 531 542 543 663
+2663 652 664 663 543
+2664 663 543 531 652
+2665 532 533 544 654
+2666 653 665 654 532
+2667 665 654 544 532
+2668 532 543 544 664
+2669 653 665 664 544
+2670 664 544 532 653
+2671 533 534 545 655
+2672 654 666 655 533
+2673 666 655 545 533
+2674 533 544 545 665
+2675 654 666 665 545
+2676 665 545 533 654
+2677 534 535 546 656
+2678 655 667 656 534
+2679 667 656 546 534
+2680 534 545 546 666
+2681 655 667 666 546
+2682 666 546 534 655
+2683 535 536 547 657
+2684 656 668 657 535
+2685 668 657 547 535
+2686 535 546 547 667
+2687 656 668 667 547
+2688 667 547 535 656
+2689 536 537 548 658
+2690 657 669 658 536
+2691 669 658 548 536
+2692 536 547 548 668
+2693 657 669 668 548
+2694 668 548 536 657
+2695 537 538 549 659
+2696 658 670 659 537
+2697 670 659 549 537
+2698 537 548 549 669
+2699 658 670 669 549
+2700 669 549 537 658
+2701 539 540 551 661
+2702 660 672 661 539
+2703 672 661 551 539
+2704 539 550 551 671
+2705 660 672 671 551
+2706 671 551 539 660
+2707 540 541 552 662
+2708 661 673 662 540
+2709 673 662 552 540
+2710 540 551 552 672
+2711 661 673 672 552
+2712 672 552 540 661
+2713 541 542 553 663
+2714 662 674 663 541
+2715 674 663 553 541
+2716 541 552 553 673
+2717 662 674 673 553
+2718 673 553 541 662
+2719 542 543 554 664
+2720 663 675 664 542
+2721 675 664 554 542
+2722 542 553 554 674
+2723 663 675 674 554
+2724 674 554 542 663
+2725 543 544 555 665
+2726 664 676 665 543
+2727 676 665 555 543
+2728 543 554 555 675
+2729 664 676 675 555
+2730 675 555 543 664
+2731 544 545 556 666
+2732 665 677 666 544
+2733 677 666 556 544
+2734 544 555 556 676
+2735 665 677 676 556
+2736 676 556 544 665
+2737 545 546 557 667
+2738 666 678 667 545
+2739 678 667 557 545
+2740 545 556 557 677
+2741 666 678 677 557
+2742 677 557 545 666
+2743 546 547 558 668
+2744 667 679 668 546
+2745 679 668 558 546
+2746 546 557 558 678
+2747 667 679 678 558
+2748 678 558 546 667
+2749 547 548 559 669
+2750 668 680 669 547
+2751 680 669 559 547
+2752 547 558 559 679
+2753 668 680 679 559
+2754 679 559 547 668
+2755 548 549 560 670
+2756 669 681 670 548
+2757 681 670 560 548
+2758 548 559 560 680
+2759 669 681 680 560
+2760 680 560 548 669
+2761 550 551 562 672
+2762 671 683 672 550
+2763 683 672 562 550
+2764 550 561 562 682
+2765 671 683 682 562
+2766 682 562 550 671
+2767 551 552 563 673
+2768 672 684 673 551
+2769 684 673 563 551
+2770 551 562 563 683
+2771 672 684 683 563
+2772 683 563 551 672
+2773 552 553 564 674
+2774 673 685 674 552
+2775 685 674 564 552
+2776 552 563 564 684
+2777 673 685 684 564
+2778 684 564 552 673
+2779 553 554 565 675
+2780 674 686 675 553
+2781 686 675 565 553
+2782 553 564 565 685
+2783 674 686 685 565
+2784 685 565 553 674
+2785 554 555 566 676
+2786 675 687 676 554
+2787 687 676 566 554
+2788 554 565 566 686
+2789 675 687 686 566
+2790 686 566 554 675
+2791 555 556 567 677
+2792 676 688 677 555
+2793 688 677 567 555
+2794 555 566 567 687
+2795 676 688 687 567
+2796 687 567 555 676
+2797 556 557 568 678
+2798 677 689 678 556
+2799 689 678 568 556
+2800 556 567 568 688
+2801 677 689 688 568
+2802 688 568 556 677
+2803 557 558 569 679
+2804 678 690 679 557
+2805 690 679 569 557
+2806 557 568 569 689
+2807 678 690 689 569
+2808 689 569 557 678
+2809 558 559 570 680
+2810 679 691 680 558
+2811 691 680 570 558
+2812 558 569 570 690
+2813 679 691 690 570
+2814 690 570 558 679
+2815 559 560 571 681
+2816 680 692 681 559
+2817 692 681 571 559
+2818 559 570 571 691
+2819 680 692 691 571
+2820 691 571 559 680
+2821 561 562 573 683
+2822 682 694 683 561
+2823 694 683 573 561
+2824 561 572 573 693
+2825 682 694 693 573
+2826 693 573 561 682
+2827 562 563 574 684
+2828 683 695 684 562
+2829 695 684 574 562
+2830 562 573 574 694
+2831 683 695 694 574
+2832 694 574 562 683
+2833 563 564 575 685
+2834 684 696 685 563
+2835 696 685 575 563
+2836 563 574 575 695
+2837 684 696 695 575
+2838 695 575 563 684
+2839 564 565 576 686
+2840 685 697 686 564
+2841 697 686 576 564
+2842 564 575 576 696
+2843 685 697 696 576
+2844 696 576 564 685
+2845 565 566 577 687
+2846 686 698 687 565
+2847 698 687 577 565
+2848 565 576 577 697
+2849 686 698 697 577
+2850 697 577 565 686
+2851 566 567 578 688
+2852 687 699 688 566
+2853 699 688 578 566
+2854 566 577 578 698
+2855 687 699 698 578
+2856 698 578 566 687
+2857 567 568 579 689
+2858 688 700 689 567
+2859 700 689 579 567
+2860 567 578 579 699
+2861 688 700 699 579
+2862 699 579 567 688
+2863 568 569 580 690
+2864 689 701 690 568
+2865 701 690 580 568
+2866 568 579 580 700
+2867 689 701 700 580
+2868 700 580 568 689
+2869 569 570 581 691
+2870 690 702 691 569
+2871 702 691 581 569
+2872 569 580 581 701
+2873 690 702 701 581
+2874 701 581 569 690
+2875 570 571 582 692
+2876 691 703 692 570
+2877 703 692 582 570
+2878 570 581 582 702
+2879 691 703 702 582
+2880 702 582 570 691
+2881 572 573 584 694
+2882 693 705 694 572
+2883 705 694 584 572
+2884 572 583 584 704
+2885 693 705 704 584
+2886 704 584 572 693
+2887 573 574 585 695
+2888 694 706 695 573
+2889 706 695 585 573
+2890 573 584 585 705
+2891 694 706 705 585
+2892 705 585 573 694
+2893 574 575 586 696
+2894 695 707 696 574
+2895 707 696 586 574
+2896 574 585 586 706
+2897 695 707 706 586
+2898 706 586 574 695
+2899 575 576 587 697
+2900 696 708 697 575
+2901 708 697 587 575
+2902 575 586 587 707
+2903 696 708 707 587
+2904 707 587 575 696
+2905 576 577 588 698
+2906 697 709 698 576
+2907 709 698 588 576
+2908 576 587 588 708
+2909 697 709 708 588
+2910 708 588 576 697
+2911 577 578 589 699
+2912 698 710 699 577
+2913 710 699 589 577
+2914 577 588 589 709
+2915 698 710 709 589
+2916 709 589 577 698
+2917 578 579 590 700
+2918 699 711 700 578
+2919 711 700 590 578
+2920 578 589 590 710
+2921 699 711 710 590
+2922 710 590 578 699
+2923 579 580 591 701
+2924 700 712 701 579
+2925 712 701 591 579
+2926 579 590 591 711
+2927 700 712 711 591
+2928 711 591 579 700
+2929 580 581 592 702
+2930 701 713 702 580
+2931 713 702 592 580
+2932 580 591 592 712
+2933 701 713 712 592
+2934 712 592 580 701
+2935 581 582 593 703
+2936 702 714 703 581
+2937 714 703 593 581
+2938 581 592 593 713
+2939 702 714 713 593
+2940 713 593 581 702
+2941 583 584 595 705
+2942 704 716 705 583
+2943 716 705 595 583
+2944 583 594 595 715
+2945 704 716 715 595
+2946 715 595 583 704
+2947 584 585 596 706
+2948 705 717 706 584
+2949 717 706 596 584
+2950 584 595 596 716
+2951 705 717 716 596
+2952 716 596 584 705
+2953 585 586 597 707
+2954 706 718 707 585
+2955 718 707 597 585
+2956 585 596 597 717
+2957 706 718 717 597
+2958 717 597 585 706
+2959 586 587 598 708
+2960 707 719 708 586
+2961 719 708 598 586
+2962 586 597 598 718
+2963 707 719 718 598
+2964 718 598 586 707
+2965 587 588 599 709
+2966 708 720 709 587
+2967 720 709 599 587
+2968 587 598 599 719
+2969 708 720 719 599
+2970 719 599 587 708
+2971 588 589 600 710
+2972 709 721 710 588
+2973 721 710 600 588
+2974 588 599 600 720
+2975 709 721 720 600
+2976 720 600 588 709
+2977 589 590 601 711
+2978 710 722 711 589
+2979 722 711 601 589
+2980 589 600 601 721
+2981 710 722 721 601
+2982 721 601 589 710
+2983 590 591 602 712
+2984 711 723 712 590
+2985 723 712 602 590
+2986 590 601 602 722
+2987 711 723 722 602
+2988 722 602 590 711
+2989 591 592 603 713
+2990 712 724 713 591
+2991 724 713 603 591
+2992 591 602 603 723
+2993 712 724 723 603
+2994 723 603 591 712
+2995 592 593 604 714
+2996 713 725 714 592
+2997 725 714 604 592
+2998 592 603 604 724
+2999 713 725 724 604
+3000 724 604 592 713
+3001 605 606 617 727
+3002 726 738 727 605
+3003 738 727 617 605
+3004 605 616 617 737
+3005 726 738 737 617
+3006 737 617 605 726
+3007 606 607 618 728
+3008 727 739 728 606
+3009 739 728 618 606
+3010 606 617 618 738
+3011 727 739 738 618
+3012 738 618 606 727
+3013 607 608 619 729
+3014 728 740 729 607
+3015 740 729 619 607
+3016 607 618 619 739
+3017 728 740 739 619
+3018 739 619 607 728
+3019 608 609 620 730
+3020 729 741 730 608
+3021 741 730 620 608
+3022 608 619 620 740
+3023 729 741 740 620
+3024 740 620 608 729
+3025 609 610 621 731
+3026 730 742 731 609
+3027 742 731 621 609
+3028 609 620 621 741
+3029 730 742 741 621
+3030 741 621 609 730
+3031 610 611 622 732
+3032 731 743 732 610
+3033 743 732 622 610
+3034 610 621 622 742
+3035 731 743 742 622
+3036 742 622 610 731
+3037 611 612 623 733
+3038 732 744 733 611
+3039 744 733 623 611
+3040 611 622 623 743
+3041 732 744 743 623
+3042 743 623 611 732
+3043 612 613 624 734
+3044 733 745 734 612
+3045 745 734 624 612
+3046 612 623 624 744
+3047 733 745 744 624
+3048 744 624 612 733
+3049 613 614 625 735
+3050 734 746 735 613
+3051 746 735 625 613
+3052 613 624 625 745
+3053 734 746 745 625
+3054 745 625 613 734
+3055 614 615 626 736
+3056 735 747 736 614
+3057 747 736 626 614
+3058 614 625 626 746
+3059 735 747 746 626
+3060 746 626 614 735
+3061 616 617 628 738
+3062 737 749 738 616
+3063 749 738 628 616
+3064 616 627 628 748
+3065 737 749 748 628
+3066 748 628 616 737
+3067 617 618 629 739
+3068 738 750 739 617
+3069 750 739 629 617
+3070 617 628 629 749
+3071 738 750 749 629
+3072 749 629 617 738
+3073 618 619 630 740
+3074 739 751 740 618
+3075 751 740 630 618
+3076 618 629 630 750
+3077 739 751 750 630
+3078 750 630 618 739
+3079 619 620 631 741
+3080 740 752 741 619
+3081 752 741 631 619
+3082 619 630 631 751
+3083 740 752 751 631
+3084 751 631 619 740
+3085 620 621 632 742
+3086 741 753 742 620
+3087 753 742 632 620
+3088 620 631 632 752
+3089 741 753 752 632
+3090 752 632 620 741
+3091 621 622 633 743
+3092 742 754 743 621
+3093 754 743 633 621
+3094 621 632 633 753
+3095 742 754 753 633
+3096 753 633 621 742
+3097 622 623 634 744
+3098 743 755 744 622
+3099 755 744 634 622
+3100 622 633 634 754
+3101 743 755 754 634
+3102 754 634 622 743
+3103 623 624 635 745
+3104 744 756 745 623
+3105 756 745 635 623
+3106 623 634 635 755
+3107 744 756 755 635
+3108 755 635 623 744
+3109 624 625 636 746
+3110 745 757 746 624
+3111 757 746 636 624
+3112 624 635 636 756
+3113 745 757 756 636
+3114 756 636 624 745
+3115 625 626 637 747
+3116 746 758 747 625
+3117 758 747 637 625
+3118 625 636 637 757
+3119 746 758 757 637
+3120 757 637 625 746
+3121 627 628 639 749
+3122 748 760 749 627
+3123 760 749 639 627
+3124 627 638 639 759
+3125 748 760 759 639
+3126 759 639 627 748
+3127 628 629 640 750
+3128 749 761 750 628
+3129 761 750 640 628
+3130 628 639 640 760
+3131 749 761 760 640
+3132 760 640 628 749
+3133 629 630 641 751
+3134 750 762 751 629
+3135 762 751 641 629
+3136 629 640 641 761
+3137 750 762 761 641
+3138 761 641 629 750
+3139 630 631 642 752
+3140 751 763 752 630
+3141 763 752 642 630
+3142 630 641 642 762
+3143 751 763 762 642
+3144 762 642 630 751
+3145 631 632 643 753
+3146 752 764 753 631
+3147 764 753 643 631
+3148 631 642 643 763
+3149 752 764 763 643
+3150 763 643 631 752
+3151 632 633 644 754
+3152 753 765 754 632
+3153 765 754 644 632
+3154 632 643 644 764
+3155 753 765 764 644
+3156 764 644 632 753
+3157 633 634 645 755
+3158 754 766 755 633
+3159 766 755 645 633
+3160 633 644 645 765
+3161 754 766 765 645
+3162 765 645 633 754
+3163 634 635 646 756
+3164 755 767 756 634
+3165 767 756 646 634
+3166 634 645 646 766
+3167 755 767 766 646
+3168 766 646 634 755
+3169 635 636 647 757
+3170 756 768 757 635
+3171 768 757 647 635
+3172 635 646 647 767
+3173 756 768 767 647
+3174 767 647 635 756
+3175 636 637 648 758
+3176 757 769 758 636
+3177 769 758 648 636
+3178 636 647 648 768
+3179 757 769 768 648
+3180 768 648 636 757
+3181 638 639 650 760
+3182 759 771 760 638
+3183 771 760 650 638
+3184 638 649 650 770
+3185 759 771 770 650
+3186 770 650 638 759
+3187 639 640 651 761
+3188 760 772 761 639
+3189 772 761 651 639
+3190 639 650 651 771
+3191 760 772 771 651
+3192 771 651 639 760
+3193 640 641 652 762
+3194 761 773 762 640
+3195 773 762 652 640
+3196 640 651 652 772
+3197 761 773 772 652
+3198 772 652 640 761
+3199 641 642 653 763
+3200 762 774 763 641
+3201 774 763 653 641
+3202 641 652 653 773
+3203 762 774 773 653
+3204 773 653 641 762
+3205 642 643 654 764
+3206 763 775 764 642
+3207 775 764 654 642
+3208 642 653 654 774
+3209 763 775 774 654
+3210 774 654 642 763
+3211 643 644 655 765
+3212 764 776 765 643
+3213 776 765 655 643
+3214 643 654 655 775
+3215 764 776 775 655
+3216 775 655 643 764
+3217 644 645 656 766
+3218 765 777 766 644
+3219 777 766 656 644
+3220 644 655 656 776
+3221 765 777 776 656
+3222 776 656 644 765
+3223 645 646 657 767
+3224 766 778 767 645
+3225 778 767 657 645
+3226 645 656 657 777
+3227 766 778 777 657
+3228 777 657 645 766
+3229 646 647 658 768
+3230 767 779 768 646
+3231 779 768 658 646
+3232 646 657 658 778
+3233 767 779 778 658
+3234 778 658 646 767
+3235 647 648 659 769
+3236 768 780 769 647
+3237 780 769 659 647
+3238 647 658 659 779
+3239 768 780 779 659
+3240 779 659 647 768
+3241 649 650 661 771
+3242 770 782 771 649
+3243 782 771 661 649
+3244 649 660 661 781
+3245 770 782 781 661
+3246 781 661 649 770
+3247 650 651 662 772
+3248 771 783 772 650
+3249 783 772 662 650
+3250 650 661 662 782
+3251 771 783 782 662
+3252 782 662 650 771
+3253 651 652 663 773
+3254 772 784 773 651
+3255 784 773 663 651
+3256 651 662 663 783
+3257 772 784 783 663
+3258 783 663 651 772
+3259 652 653 664 774
+3260 773 785 774 652
+3261 785 774 664 652
+3262 652 663 664 784
+3263 773 785 784 664
+3264 784 664 652 773
+3265 653 654 665 775
+3266 774 786 775 653
+3267 786 775 665 653
+3268 653 664 665 785
+3269 774 786 785 665
+3270 785 665 653 774
+3271 654 655 666 776
+3272 775 787 776 654
+3273 787 776 666 654
+3274 654 665 666 786
+3275 775 787 786 666
+3276 786 666 654 775
+3277 655 656 667 777
+3278 776 788 777 655
+3279 788 777 667 655
+3280 655 666 667 787
+3281 776 788 787 667
+3282 787 667 655 776
+3283 656 657 668 778
+3284 777 789 778 656
+3285 789 778 668 656
+3286 656 667 668 788
+3287 777 789 788 668
+3288 788 668 656 777
+3289 657 658 669 779
+3290 778 790 779 657
+3291 790 779 669 657
+3292 657 668 669 789
+3293 778 790 789 669
+3294 789 669 657 778
+3295 658 659 670 780
+3296 779 791 780 658
+3297 791 780 670 658
+3298 658 669 670 790
+3299 779 791 790 670
+3300 790 670 658 779
+3301 660 661 672 782
+3302 781 793 782 660
+3303 793 782 672 660
+3304 660 671 672 792
+3305 781 793 792 672
+3306 792 672 660 781
+3307 661 662 673 783
+3308 782 794 783 661
+3309 794 783 673 661
+3310 661 672 673 793
+3311 782 794 793 673
+3312 793 673 661 782
+3313 662 663 674 784
+3314 783 795 784 662
+3315 795 784 674 662
+3316 662 673 674 794
+3317 783 795 794 674
+3318 794 674 662 783
+3319 663 664 675 785
+3320 784 796 785 663
+3321 796 785 675 663
+3322 663 674 675 795
+3323 784 796 795 675
+3324 795 675 663 784
+3325 664 665 676 786
+3326 785 797 786 664
+3327 797 786 676 664
+3328 664 675 676 796
+3329 785 797 796 676
+3330 796 676 664 785
+3331 665 666 677 787
+3332 786 798 787 665
+3333 798 787 677 665
+3334 665 676 677 797
+3335 786 798 797 677
+3336 797 677 665 786
+3337 666 667 678 788
+3338 787 799 788 666
+3339 799 788 678 666
+3340 666 677 678 798
+3341 787 799 798 678
+3342 798 678 666 787
+3343 667 668 679 789
+3344 788 800 789 667
+3345 800 789 679 667
+3346 667 678 679 799
+3347 788 800 799 679
+3348 799 679 667 788
+3349 668 669 680 790
+3350 789 801 790 668
+3351 801 790 680 668
+3352 668 679 680 800
+3353 789 801 800 680
+3354 800 680 668 789
+3355 669 670 681 791
+3356 790 802 791 669
+3357 802 791 681 669
+3358 669 680 681 801
+3359 790 802 801 681
+3360 801 681 669 790
+3361 671 672 683 793
+3362 792 804 793 671
+3363 804 793 683 671
+3364 671 682 683 803
+3365 792 804 803 683
+3366 803 683 671 792
+3367 672 673 684 794
+3368 793 805 794 672
+3369 805 794 684 672
+3370 672 683 684 804
+3371 793 805 804 684
+3372 804 684 672 793
+3373 673 674 685 795
+3374 794 806 795 673
+3375 806 795 685 673
+3376 673 684 685 805
+3377 794 806 805 685
+3378 805 685 673 794
+3379 674 675 686 796
+3380 795 807 796 674
+3381 807 796 686 674
+3382 674 685 686 806
+3383 795 807 806 686
+3384 806 686 674 795
+3385 675 676 687 797
+3386 796 808 797 675
+3387 808 797 687 675
+3388 675 686 687 807
+3389 796 808 807 687
+3390 807 687 675 796
+3391 676 677 688 798
+3392 797 809 798 676
+3393 809 798 688 676
+3394 676 687 688 808
+3395 797 809 808 688
+3396 808 688 676 797
+3397 677 678 689 799
+3398 798 810 799 677
+3399 810 799 689 677
+3400 677 688 689 809
+3401 798 810 809 689
+3402 809 689 677 798
+3403 678 679 690 800
+3404 799 811 800 678
+3405 811 800 690 678
+3406 678 689 690 810
+3407 799 811 810 690
+3408 810 690 678 799
+3409 679 680 691 801
+3410 800 812 801 679
+3411 812 801 691 679
+3412 679 690 691 811
+3413 800 812 811 691
+3414 811 691 679 800
+3415 680 681 692 802
+3416 801 813 802 680
+3417 813 802 692 680
+3418 680 691 692 812
+3419 801 813 812 692
+3420 812 692 680 801
+3421 682 683 694 804
+3422 803 815 804 682
+3423 815 804 694 682
+3424 682 693 694 814
+3425 803 815 814 694
+3426 814 694 682 803
+3427 683 684 695 805
+3428 804 816 805 683
+3429 816 805 695 683
+3430 683 694 695 815
+3431 804 816 815 695
+3432 815 695 683 804
+3433 684 685 696 806
+3434 805 817 806 684
+3435 817 806 696 684
+3436 684 695 696 816
+3437 805 817 816 696
+3438 816 696 684 805
+3439 685 686 697 807
+3440 806 818 807 685
+3441 818 807 697 685
+3442 685 696 697 817
+3443 806 818 817 697
+3444 817 697 685 806
+3445 686 687 698 808
+3446 807 819 808 686
+3447 819 808 698 686
+3448 686 697 698 818
+3449 807 819 818 698
+3450 818 698 686 807
+3451 687 688 699 809
+3452 808 820 809 687
+3453 820 809 699 687
+3454 687 698 699 819
+3455 808 820 819 699
+3456 819 699 687 808
+3457 688 689 700 810
+3458 809 821 810 688
+3459 821 810 700 688
+3460 688 699 700 820
+3461 809 821 820 700
+3462 820 700 688 809
+3463 689 690 701 811
+3464 810 822 811 689
+3465 822 811 701 689
+3466 689 700 701 821
+3467 810 822 821 701
+3468 821 701 689 810
+3469 690 691 702 812
+3470 811 823 812 690
+3471 823 812 702 690
+3472 690 701 702 822
+3473 811 823 822 702
+3474 822 702 690 811
+3475 691 692 703 813
+3476 812 824 813 691
+3477 824 813 703 691
+3478 691 702 703 823
+3479 812 824 823 703
+3480 823 703 691 812
+3481 693 694 705 815
+3482 814 826 815 693
+3483 826 815 705 693
+3484 693 704 705 825
+3485 814 826 825 705
+3486 825 705 693 814
+3487 694 695 706 816
+3488 815 827 816 694
+3489 827 816 706 694
+3490 694 705 706 826
+3491 815 827 826 706
+3492 826 706 694 815
+3493 695 696 707 817
+3494 816 828 817 695
+3495 828 817 707 695
+3496 695 706 707 827
+3497 816 828 827 707
+3498 827 707 695 816
+3499 696 697 708 818
+3500 817 829 818 696
+3501 829 818 708 696
+3502 696 707 708 828
+3503 817 829 828 708
+3504 828 708 696 817
+3505 697 698 709 819
+3506 818 830 819 697
+3507 830 819 709 697
+3508 697 708 709 829
+3509 818 830 829 709
+3510 829 709 697 818
+3511 698 699 710 820
+3512 819 831 820 698
+3513 831 820 710 698
+3514 698 709 710 830
+3515 819 831 830 710
+3516 830 710 698 819
+3517 699 700 711 821
+3518 820 832 821 699
+3519 832 821 711 699
+3520 699 710 711 831
+3521 820 832 831 711
+3522 831 711 699 820
+3523 700 701 712 822
+3524 821 833 822 700
+3525 833 822 712 700
+3526 700 711 712 832
+3527 821 833 832 712
+3528 832 712 700 821
+3529 701 702 713 823
+3530 822 834 823 701
+3531 834 823 713 701
+3532 701 712 713 833
+3533 822 834 833 713
+3534 833 713 701 822
+3535 702 703 714 824
+3536 823 835 824 702
+3537 835 824 714 702
+3538 702 713 714 834
+3539 823 835 834 714
+3540 834 714 702 823
+3541 704 705 716 826
+3542 825 837 826 704
+3543 837 826 716 704
+3544 704 715 716 836
+3545 825 837 836 716
+3546 836 716 704 825
+3547 705 706 717 827
+3548 826 838 827 705
+3549 838 827 717 705
+3550 705 716 717 837
+3551 826 838 837 717
+3552 837 717 705 826
+3553 706 707 718 828
+3554 827 839 828 706
+3555 839 828 718 706
+3556 706 717 718 838
+3557 827 839 838 718
+3558 838 718 706 827
+3559 707 708 719 829
+3560 828 840 829 707
+3561 840 829 719 707
+3562 707 718 719 839
+3563 828 840 839 719
+3564 839 719 707 828
+3565 708 709 720 830
+3566 829 841 830 708
+3567 841 830 720 708
+3568 708 719 720 840
+3569 829 841 840 720
+3570 840 720 708 829
+3571 709 710 721 831
+3572 830 842 831 709
+3573 842 831 721 709
+3574 709 720 721 841
+3575 830 842 841 721
+3576 841 721 709 830
+3577 710 711 722 832
+3578 831 843 832 710
+3579 843 832 722 710
+3580 710 721 722 842
+3581 831 843 842 722
+3582 842 722 710 831
+3583 711 712 723 833
+3584 832 844 833 711
+3585 844 833 723 711
+3586 711 722 723 843
+3587 832 844 843 723
+3588 843 723 711 832
+3589 712 713 724 834
+3590 833 845 834 712
+3591 845 834 724 712
+3592 712 723 724 844
+3593 833 845 844 724
+3594 844 724 712 833
+3595 713 714 725 835
+3596 834 846 835 713
+3597 846 835 725 713
+3598 713 724 725 845
+3599 834 846 845 725
+3600 845 725 713 834
+3601 726 727 738 848
+3602 847 859 848 726
+3603 859 848 738 726
+3604 726 737 738 858
+3605 847 859 858 738
+3606 858 738 726 847
+3607 727 728 739 849
+3608 848 860 849 727
+3609 860 849 739 727
+3610 727 738 739 859
+3611 848 860 859 739
+3612 859 739 727 848
+3613 728 729 740 850
+3614 849 861 850 728
+3615 861 850 740 728
+3616 728 739 740 860
+3617 849 861 860 740
+3618 860 740 728 849
+3619 729 730 741 851
+3620 850 862 851 729
+3621 862 851 741 729
+3622 729 740 741 861
+3623 850 862 861 741
+3624 861 741 729 850
+3625 730 731 742 852
+3626 851 863 852 730
+3627 863 852 742 730
+3628 730 741 742 862
+3629 851 863 862 742
+3630 862 742 730 851
+3631 731 732 743 853
+3632 852 864 853 731
+3633 864 853 743 731
+3634 731 742 743 863
+3635 852 864 863 743
+3636 863 743 731 852
+3637 732 733 744 854
+3638 853 865 854 732
+3639 865 854 744 732
+3640 732 743 744 864
+3641 853 865 864 744
+3642 864 744 732 853
+3643 733 734 745 855
+3644 854 866 855 733
+3645 866 855 745 733
+3646 733 744 745 865
+3647 854 866 865 745
+3648 865 745 733 854
+3649 734 735 746 856
+3650 855 867 856 734
+3651 867 856 746 734
+3652 734 745 746 866
+3653 855 867 866 746
+3654 866 746 734 855
+3655 735 736 747 857
+3656 856 868 857 735
+3657 868 857 747 735
+3658 735 746 747 867
+3659 856 868 867 747
+3660 867 747 735 856
+3661 737 738 749 859
+3662 858 870 859 737
+3663 870 859 749 737
+3664 737 748 749 869
+3665 858 870 869 749
+3666 869 749 737 858
+3667 738 739 750 860
+3668 859 871 860 738
+3669 871 860 750 738
+3670 738 749 750 870
+3671 859 871 870 750
+3672 870 750 738 859
+3673 739 740 751 861
+3674 860 872 861 739
+3675 872 861 751 739
+3676 739 750 751 871
+3677 860 872 871 751
+3678 871 751 739 860
+3679 740 741 752 862
+3680 861 873 862 740
+3681 873 862 752 740
+3682 740 751 752 872
+3683 861 873 872 752
+3684 872 752 740 861
+3685 741 742 753 863
+3686 862 874 863 741
+3687 874 863 753 741
+3688 741 752 753 873
+3689 862 874 873 753
+3690 873 753 741 862
+3691 742 743 754 864
+3692 863 875 864 742
+3693 875 864 754 742
+3694 742 753 754 874
+3695 863 875 874 754
+3696 874 754 742 863
+3697 743 744 755 865
+3698 864 876 865 743
+3699 876 865 755 743
+3700 743 754 755 875
+3701 864 876 875 755
+3702 875 755 743 864
+3703 744 745 756 866
+3704 865 877 866 744
+3705 877 866 756 744
+3706 744 755 756 876
+3707 865 877 876 756
+3708 876 756 744 865
+3709 745 746 757 867
+3710 866 878 867 745
+3711 878 867 757 745
+3712 745 756 757 877
+3713 866 878 877 757
+3714 877 757 745 866
+3715 746 747 758 868
+3716 867 879 868 746
+3717 879 868 758 746
+3718 746 757 758 878
+3719 867 879 878 758
+3720 878 758 746 867
+3721 748 749 760 870
+3722 869 881 870 748
+3723 881 870 760 748
+3724 748 759 760 880
+3725 869 881 880 760
+3726 880 760 748 869
+3727 749 750 761 871
+3728 870 882 871 749
+3729 882 871 761 749
+3730 749 760 761 881
+3731 870 882 881 761
+3732 881 761 749 870
+3733 750 751 762 872
+3734 871 883 872 750
+3735 883 872 762 750
+3736 750 761 762 882
+3737 871 883 882 762
+3738 882 762 750 871
+3739 751 752 763 873
+3740 872 884 873 751
+3741 884 873 763 751
+3742 751 762 763 883
+3743 872 884 883 763
+3744 883 763 751 872
+3745 752 753 764 874
+3746 873 885 874 752
+3747 885 874 764 752
+3748 752 763 764 884
+3749 873 885 884 764
+3750 884 764 752 873
+3751 753 754 765 875
+3752 874 886 875 753
+3753 886 875 765 753
+3754 753 764 765 885
+3755 874 886 885 765
+3756 885 765 753 874
+3757 754 755 766 876
+3758 875 887 876 754
+3759 887 876 766 754
+3760 754 765 766 886
+3761 875 887 886 766
+3762 886 766 754 875
+3763 755 756 767 877
+3764 876 888 877 755
+3765 888 877 767 755
+3766 755 766 767 887
+3767 876 888 887 767
+3768 887 767 755 876
+3769 756 757 768 878
+3770 877 889 878 756
+3771 889 878 768 756
+3772 756 767 768 888
+3773 877 889 888 768
+3774 888 768 756 877
+3775 757 758 769 879
+3776 878 890 879 757
+3777 890 879 769 757
+3778 757 768 769 889
+3779 878 890 889 769
+3780 889 769 757 878
+3781 759 760 771 881
+3782 880 892 881 759
+3783 892 881 771 759
+3784 759 770 771 891
+3785 880 892 891 771
+3786 891 771 759 880
+3787 760 761 772 882
+3788 881 893 882 760
+3789 893 882 772 760
+3790 760 771 772 892
+3791 881 893 892 772
+3792 892 772 760 881
+3793 761 762 773 883
+3794 882 894 883 761
+3795 894 883 773 761
+3796 761 772 773 893
+3797 882 894 893 773
+3798 893 773 761 882
+3799 762 763 774 884
+3800 883 895 884 762
+3801 895 884 774 762
+3802 762 773 774 894
+3803 883 895 894 774
+3804 894 774 762 883
+3805 763 764 775 885
+3806 884 896 885 763
+3807 896 885 775 763
+3808 763 774 775 895
+3809 884 896 895 775
+3810 895 775 763 884
+3811 764 765 776 886
+3812 885 897 886 764
+3813 897 886 776 764
+3814 764 775 776 896
+3815 885 897 896 776
+3816 896 776 764 885
+3817 765 766 777 887
+3818 886 898 887 765
+3819 898 887 777 765
+3820 765 776 777 897
+3821 886 898 897 777
+3822 897 777 765 886
+3823 766 767 778 888
+3824 887 899 888 766
+3825 899 888 778 766
+3826 766 777 778 898
+3827 887 899 898 778
+3828 898 778 766 887
+3829 767 768 779 889
+3830 888 900 889 767
+3831 900 889 779 767
+3832 767 778 779 899
+3833 888 900 899 779
+3834 899 779 767 888
+3835 768 769 780 890
+3836 889 901 890 768
+3837 901 890 780 768
+3838 768 779 780 900
+3839 889 901 900 780
+3840 900 780 768 889
+3841 770 771 782 892
+3842 891 903 892 770
+3843 903 892 782 770
+3844 770 781 782 902
+3845 891 903 902 782
+3846 902 782 770 891
+3847 771 772 783 893
+3848 892 904 893 771
+3849 904 893 783 771
+3850 771 782 783 903
+3851 892 904 903 783
+3852 903 783 771 892
+3853 772 773 784 894
+3854 893 905 894 772
+3855 905 894 784 772
+3856 772 783 784 904
+3857 893 905 904 784
+3858 904 784 772 893
+3859 773 774 785 895
+3860 894 906 895 773
+3861 906 895 785 773
+3862 773 784 785 905
+3863 894 906 905 785
+3864 905 785 773 894
+3865 774 775 786 896
+3866 895 907 896 774
+3867 907 896 786 774
+3868 774 785 786 906
+3869 895 907 906 786
+3870 906 786 774 895
+3871 775 776 787 897
+3872 896 908 897 775
+3873 908 897 787 775
+3874 775 786 787 907
+3875 896 908 907 787
+3876 907 787 775 896
+3877 776 777 788 898
+3878 897 909 898 776
+3879 909 898 788 776
+3880 776 787 788 908
+3881 897 909 908 788
+3882 908 788 776 897
+3883 777 778 789 899
+3884 898 910 899 777
+3885 910 899 789 777
+3886 777 788 789 909
+3887 898 910 909 789
+3888 909 789 777 898
+3889 778 779 790 900
+3890 899 911 900 778
+3891 911 900 790 778
+3892 778 789 790 910
+3893 899 911 910 790
+3894 910 790 778 899
+3895 779 780 791 901
+3896 900 912 901 779
+3897 912 901 791 779
+3898 779 790 791 911
+3899 900 912 911 791
+3900 911 791 779 900
+3901 781 782 793 903
+3902 902 914 903 781
+3903 914 903 793 781
+3904 781 792 793 913
+3905 902 914 913 793
+3906 913 793 781 902
+3907 782 783 794 904
+3908 903 915 904 782
+3909 915 904 794 782
+3910 782 793 794 914
+3911 903 915 914 794
+3912 914 794 782 903
+3913 783 784 795 905
+3914 904 916 905 783
+3915 916 905 795 783
+3916 783 794 795 915
+3917 904 916 915 795
+3918 915 795 783 904
+3919 784 785 796 906
+3920 905 917 906 784
+3921 917 906 796 784
+3922 784 795 796 916
+3923 905 917 916 796
+3924 916 796 784 905
+3925 785 786 797 907
+3926 906 918 907 785
+3927 918 907 797 785
+3928 785 796 797 917
+3929 906 918 917 797
+3930 917 797 785 906
+3931 786 787 798 908
+3932 907 919 908 786
+3933 919 908 798 786
+3934 786 797 798 918
+3935 907 919 918 798
+3936 918 798 786 907
+3937 787 788 799 909
+3938 908 920 909 787
+3939 920 909 799 787
+3940 787 798 799 919
+3941 908 920 919 799
+3942 919 799 787 908
+3943 788 789 800 910
+3944 909 921 910 788
+3945 921 910 800 788
+3946 788 799 800 920
+3947 909 921 920 800
+3948 920 800 788 909
+3949 789 790 801 911
+3950 910 922 911 789
+3951 922 911 801 789
+3952 789 800 801 921
+3953 910 922 921 801
+3954 921 801 789 910
+3955 790 791 802 912
+3956 911 923 912 790
+3957 923 912 802 790
+3958 790 801 802 922
+3959 911 923 922 802
+3960 922 802 790 911
+3961 792 793 804 914
+3962 913 925 914 792
+3963 925 914 804 792
+3964 792 803 804 924
+3965 913 925 924 804
+3966 924 804 792 913
+3967 793 794 805 915
+3968 914 926 915 793
+3969 926 915 805 793
+3970 793 804 805 925
+3971 914 926 925 805
+3972 925 805 793 914
+3973 794 795 806 916
+3974 915 927 916 794
+3975 927 916 806 794
+3976 794 805 806 926
+3977 915 927 926 806
+3978 926 806 794 915
+3979 795 796 807 917
+3980 916 928 917 795
+3981 928 917 807 795
+3982 795 806 807 927
+3983 916 928 927 807
+3984 927 807 795 916
+3985 796 797 808 918
+3986 917 929 918 796
+3987 929 918 808 796
+3988 796 807 808 928
+3989 917 929 928 808
+3990 928 808 796 917
+3991 797 798 809 919
+3992 918 930 919 797
+3993 930 919 809 797
+3994 797 808 809 929
+3995 918 930 929 809
+3996 929 809 797 918
+3997 798 799 810 920
+3998 919 931 920 798
+3999 931 920 810 798
+4000 798 809 810 930
+4001 919 931 930 810
+4002 930 810 798 919
+4003 799 800 811 921
+4004 920 932 921 799
+4005 932 921 811 799
+4006 799 810 811 931
+4007 920 932 931 811
+4008 931 811 799 920
+4009 800 801 812 922
+4010 921 933 922 800
+4011 933 922 812 800
+4012 800 811 812 932
+4013 921 933 932 812
+4014 932 812 800 921
+4015 801 802 813 923
+4016 922 934 923 801
+4017 934 923 813 801
+4018 801 812 813 933
+4019 922 934 933 813
+4020 933 813 801 922
+4021 803 804 815 925
+4022 924 936 925 803
+4023 936 925 815 803
+4024 803 814 815 935
+4025 924 936 935 815
+4026 935 815 803 924
+4027 804 805 816 926
+4028 925 937 926 804
+4029 937 926 816 804
+4030 804 815 816 936
+4031 925 937 936 816
+4032 936 816 804 925
+4033 805 806 817 927
+4034 926 938 927 805
+4035 938 927 817 805
+4036 805 816 817 937
+4037 926 938 937 817
+4038 937 817 805 926
+4039 806 807 818 928
+4040 927 939 928 806
+4041 939 928 818 806
+4042 806 817 818 938
+4043 927 939 938 818
+4044 938 818 806 927
+4045 807 808 819 929
+4046 928 940 929 807
+4047 940 929 819 807
+4048 807 818 819 939
+4049 928 940 939 819
+4050 939 819 807 928
+4051 808 809 820 930
+4052 929 941 930 808
+4053 941 930 820 808
+4054 808 819 820 940
+4055 929 941 940 820
+4056 940 820 808 929
+4057 809 810 821 931
+4058 930 942 931 809
+4059 942 931 821 809
+4060 809 820 821 941
+4061 930 942 941 821
+4062 941 821 809 930
+4063 810 811 822 932
+4064 931 943 932 810
+4065 943 932 822 810
+4066 810 821 822 942
+4067 931 943 942 822
+4068 942 822 810 931
+4069 811 812 823 933
+4070 932 944 933 811
+4071 944 933 823 811
+4072 811 822 823 943
+4073 932 944 943 823
+4074 943 823 811 932
+4075 812 813 824 934
+4076 933 945 934 812
+4077 945 934 824 812
+4078 812 823 824 944
+4079 933 945 944 824
+4080 944 824 812 933
+4081 814 815 826 936
+4082 935 947 936 814
+4083 947 936 826 814
+4084 814 825 826 946
+4085 935 947 946 826
+4086 946 826 814 935
+4087 815 816 827 937
+4088 936 948 937 815
+4089 948 937 827 815
+4090 815 826 827 947
+4091 936 948 947 827
+4092 947 827 815 936
+4093 816 817 828 938
+4094 937 949 938 816
+4095 949 938 828 816
+4096 816 827 828 948
+4097 937 949 948 828
+4098 948 828 816 937
+4099 817 818 829 939
+4100 938 950 939 817
+4101 950 939 829 817
+4102 817 828 829 949
+4103 938 950 949 829
+4104 949 829 817 938
+4105 818 819 830 940
+4106 939 951 940 818
+4107 951 940 830 818
+4108 818 829 830 950
+4109 939 951 950 830
+4110 950 830 818 939
+4111 819 820 831 941
+4112 940 952 941 819
+4113 952 941 831 819
+4114 819 830 831 951
+4115 940 952 951 831
+4116 951 831 819 940
+4117 820 821 832 942
+4118 941 953 942 820
+4119 953 942 832 820
+4120 820 831 832 952
+4121 941 953 952 832
+4122 952 832 820 941
+4123 821 822 833 943
+4124 942 954 943 821
+4125 954 943 833 821
+4126 821 832 833 953
+4127 942 954 953 833
+4128 953 833 821 942
+4129 822 823 834 944
+4130 943 955 944 822
+4131 955 944 834 822
+4132 822 833 834 954
+4133 943 955 954 834
+4134 954 834 822 943
+4135 823 824 835 945
+4136 944 956 945 823
+4137 956 945 835 823
+4138 823 834 835 955
+4139 944 956 955 835
+4140 955 835 823 944
+4141 825 826 837 947
+4142 946 958 947 825
+4143 958 947 837 825
+4144 825 836 837 957
+4145 946 958 957 837
+4146 957 837 825 946
+4147 826 827 838 948
+4148 947 959 948 826
+4149 959 948 838 826
+4150 826 837 838 958
+4151 947 959 958 838
+4152 958 838 826 947
+4153 827 828 839 949
+4154 948 960 949 827
+4155 960 949 839 827
+4156 827 838 839 959
+4157 948 960 959 839
+4158 959 839 827 948
+4159 828 829 840 950
+4160 949 961 950 828
+4161 961 950 840 828
+4162 828 839 840 960
+4163 949 961 960 840
+4164 960 840 828 949
+4165 829 830 841 951
+4166 950 962 951 829
+4167 962 951 841 829
+4168 829 840 841 961
+4169 950 962 961 841
+4170 961 841 829 950
+4171 830 831 842 952
+4172 951 963 952 830
+4173 963 952 842 830
+4174 830 841 842 962
+4175 951 963 962 842
+4176 962 842 830 951
+4177 831 832 843 953
+4178 952 964 953 831
+4179 964 953 843 831
+4180 831 842 843 963
+4181 952 964 963 843
+4182 963 843 831 952
+4183 832 833 844 954
+4184 953 965 954 832
+4185 965 954 844 832
+4186 832 843 844 964
+4187 953 965 964 844
+4188 964 844 832 953
+4189 833 834 845 955
+4190 954 966 955 833
+4191 966 955 845 833
+4192 833 844 845 965
+4193 954 966 965 845
+4194 965 845 833 954
+4195 834 835 846 956
+4196 955 967 956 834
+4197 967 956 846 834
+4198 834 845 846 966
+4199 955 967 966 846
+4200 966 846 834 955
+4201 847 848 859 969
+4202 968 980 969 847
+4203 980 969 859 847
+4204 847 858 859 979
+4205 968 980 979 859
+4206 979 859 847 968
+4207 848 849 860 970
+4208 969 981 970 848
+4209 981 970 860 848
+4210 848 859 860 980
+4211 969 981 980 860
+4212 980 860 848 969
+4213 849 850 861 971
+4214 970 982 971 849
+4215 982 971 861 849
+4216 849 860 861 981
+4217 970 982 981 861
+4218 981 861 849 970
+4219 850 851 862 972
+4220 971 983 972 850
+4221 983 972 862 850
+4222 850 861 862 982
+4223 971 983 982 862
+4224 982 862 850 971
+4225 851 852 863 973
+4226 972 984 973 851
+4227 984 973 863 851
+4228 851 862 863 983
+4229 972 984 983 863
+4230 983 863 851 972
+4231 852 853 864 974
+4232 973 985 974 852
+4233 985 974 864 852
+4234 852 863 864 984
+4235 973 985 984 864
+4236 984 864 852 973
+4237 853 854 865 975
+4238 974 986 975 853
+4239 986 975 865 853
+4240 853 864 865 985
+4241 974 986 985 865
+4242 985 865 853 974
+4243 854 855 866 976
+4244 975 987 976 854
+4245 987 976 866 854
+4246 854 865 866 986
+4247 975 987 986 866
+4248 986 866 854 975
+4249 855 856 867 977
+4250 976 988 977 855
+4251 988 977 867 855
+4252 855 866 867 987
+4253 976 988 987 867
+4254 987 867 855 976
+4255 856 857 868 978
+4256 977 989 978 856
+4257 989 978 868 856
+4258 856 867 868 988
+4259 977 989 988 868
+4260 988 868 856 977
+4261 858 859 870 980
+4262 979 991 980 858
+4263 991 980 870 858
+4264 858 869 870 990
+4265 979 991 990 870
+4266 990 870 858 979
+4267 859 860 871 981
+4268 980 992 981 859
+4269 992 981 871 859
+4270 859 870 871 991
+4271 980 992 991 871
+4272 991 871 859 980
+4273 860 861 872 982
+4274 981 993 982 860
+4275 993 982 872 860
+4276 860 871 872 992
+4277 981 993 992 872
+4278 992 872 860 981
+4279 861 862 873 983
+4280 982 994 983 861
+4281 994 983 873 861
+4282 861 872 873 993
+4283 982 994 993 873
+4284 993 873 861 982
+4285 862 863 874 984
+4286 983 995 984 862
+4287 995 984 874 862
+4288 862 873 874 994
+4289 983 995 994 874
+4290 994 874 862 983
+4291 863 864 875 985
+4292 984 996 985 863
+4293 996 985 875 863
+4294 863 874 875 995
+4295 984 996 995 875
+4296 995 875 863 984
+4297 864 865 876 986
+4298 985 997 986 864
+4299 997 986 876 864
+4300 864 875 876 996
+4301 985 997 996 876
+4302 996 876 864 985
+4303 865 866 877 987
+4304 986 998 987 865
+4305 998 987 877 865
+4306 865 876 877 997
+4307 986 998 997 877
+4308 997 877 865 986
+4309 866 867 878 988
+4310 987 999 988 866
+4311 999 988 878 866
+4312 866 877 878 998
+4313 987 999 998 878
+4314 998 878 866 987
+4315 867 868 879 989
+4316 988 1000 989 867
+4317 1000 989 879 867
+4318 867 878 879 999
+4319 988 1000 999 879
+4320 999 879 867 988
+4321 869 870 881 991
+4322 990 1002 991 869
+4323 1002 991 881 869
+4324 869 880 881 1001
+4325 990 1002 1001 881
+4326 1001 881 869 990
+4327 870 871 882 992
+4328 991 1003 992 870
+4329 1003 992 882 870
+4330 870 881 882 1002
+4331 991 1003 1002 882
+4332 1002 882 870 991
+4333 871 872 883 993
+4334 992 1004 993 871
+4335 1004 993 883 871
+4336 871 882 883 1003
+4337 992 1004 1003 883
+4338 1003 883 871 992
+4339 872 873 884 994
+4340 993 1005 994 872
+4341 1005 994 884 872
+4342 872 883 884 1004
+4343 993 1005 1004 884
+4344 1004 884 872 993
+4345 873 874 885 995
+4346 994 1006 995 873
+4347 1006 995 885 873
+4348 873 884 885 1005
+4349 994 1006 1005 885
+4350 1005 885 873 994
+4351 874 875 886 996
+4352 995 1007 996 874
+4353 1007 996 886 874
+4354 874 885 886 1006
+4355 995 1007 1006 886
+4356 1006 886 874 995
+4357 875 876 887 997
+4358 996 1008 997 875
+4359 1008 997 887 875
+4360 875 886 887 1007
+4361 996 1008 1007 887
+4362 1007 887 875 996
+4363 876 877 888 998
+4364 997 1009 998 876
+4365 1009 998 888 876
+4366 876 887 888 1008
+4367 997 1009 1008 888
+4368 1008 888 876 997
+4369 877 878 889 999
+4370 998 1010 999 877
+4371 1010 999 889 877
+4372 877 888 889 1009
+4373 998 1010 1009 889
+4374 1009 889 877 998
+4375 878 879 890 1000
+4376 999 1011 1000 878
+4377 1011 1000 890 878
+4378 878 889 890 1010
+4379 999 1011 1010 890
+4380 1010 890 878 999
+4381 880 881 892 1002
+4382 1001 1013 1002 880
+4383 1013 1002 892 880
+4384 880 891 892 1012
+4385 1001 1013 1012 892
+4386 1012 892 880 1001
+4387 881 882 893 1003
+4388 1002 1014 1003 881
+4389 1014 1003 893 881
+4390 881 892 893 1013
+4391 1002 1014 1013 893
+4392 1013 893 881 1002
+4393 882 883 894 1004
+4394 1003 1015 1004 882
+4395 1015 1004 894 882
+4396 882 893 894 1014
+4397 1003 1015 1014 894
+4398 1014 894 882 1003
+4399 883 884 895 1005
+4400 1004 1016 1005 883
+4401 1016 1005 895 883
+4402 883 894 895 1015
+4403 1004 1016 1015 895
+4404 1015 895 883 1004
+4405 884 885 896 1006
+4406 1005 1017 1006 884
+4407 1017 1006 896 884
+4408 884 895 896 1016
+4409 1005 1017 1016 896
+4410 1016 896 884 1005
+4411 885 886 897 1007
+4412 1006 1018 1007 885
+4413 1018 1007 897 885
+4414 885 896 897 1017
+4415 1006 1018 1017 897
+4416 1017 897 885 1006
+4417 886 887 898 1008
+4418 1007 1019 1008 886
+4419 1019 1008 898 886
+4420 886 897 898 1018
+4421 1007 1019 1018 898
+4422 1018 898 886 1007
+4423 887 888 899 1009
+4424 1008 1020 1009 887
+4425 1020 1009 899 887
+4426 887 898 899 1019
+4427 1008 1020 1019 899
+4428 1019 899 887 1008
+4429 888 889 900 1010
+4430 1009 1021 1010 888
+4431 1021 1010 900 888
+4432 888 899 900 1020
+4433 1009 1021 1020 900
+4434 1020 900 888 1009
+4435 889 890 901 1011
+4436 1010 1022 1011 889
+4437 1022 1011 901 889
+4438 889 900 901 1021
+4439 1010 1022 1021 901
+4440 1021 901 889 1010
+4441 891 892 903 1013
+4442 1012 1024 1013 891
+4443 1024 1013 903 891
+4444 891 902 903 1023
+4445 1012 1024 1023 903
+4446 1023 903 891 1012
+4447 892 893 904 1014
+4448 1013 1025 1014 892
+4449 1025 1014 904 892
+4450 892 903 904 1024
+4451 1013 1025 1024 904
+4452 1024 904 892 1013
+4453 893 894 905 1015
+4454 1014 1026 1015 893
+4455 1026 1015 905 893
+4456 893 904 905 1025
+4457 1014 1026 1025 905
+4458 1025 905 893 1014
+4459 894 895 906 1016
+4460 1015 1027 1016 894
+4461 1027 1016 906 894
+4462 894 905 906 1026
+4463 1015 1027 1026 906
+4464 1026 906 894 1015
+4465 895 896 907 1017
+4466 1016 1028 1017 895
+4467 1028 1017 907 895
+4468 895 906 907 1027
+4469 1016 1028 1027 907
+4470 1027 907 895 1016
+4471 896 897 908 1018
+4472 1017 1029 1018 896
+4473 1029 1018 908 896
+4474 896 907 908 1028
+4475 1017 1029 1028 908
+4476 1028 908 896 1017
+4477 897 898 909 1019
+4478 1018 1030 1019 897
+4479 1030 1019 909 897
+4480 897 908 909 1029
+4481 1018 1030 1029 909
+4482 1029 909 897 1018
+4483 898 899 910 1020
+4484 1019 1031 1020 898
+4485 1031 1020 910 898
+4486 898 909 910 1030
+4487 1019 1031 1030 910
+4488 1030 910 898 1019
+4489 899 900 911 1021
+4490 1020 1032 1021 899
+4491 1032 1021 911 899
+4492 899 910 911 1031
+4493 1020 1032 1031 911
+4494 1031 911 899 1020
+4495 900 901 912 1022
+4496 1021 1033 1022 900
+4497 1033 1022 912 900
+4498 900 911 912 1032
+4499 1021 1033 1032 912
+4500 1032 912 900 1021
+4501 902 903 914 1024
+4502 1023 1035 1024 902
+4503 1035 1024 914 902
+4504 902 913 914 1034
+4505 1023 1035 1034 914
+4506 1034 914 902 1023
+4507 903 904 915 1025
+4508 1024 1036 1025 903
+4509 1036 1025 915 903
+4510 903 914 915 1035
+4511 1024 1036 1035 915
+4512 1035 915 903 1024
+4513 904 905 916 1026
+4514 1025 1037 1026 904
+4515 1037 1026 916 904
+4516 904 915 916 1036
+4517 1025 1037 1036 916
+4518 1036 916 904 1025
+4519 905 906 917 1027
+4520 1026 1038 1027 905
+4521 1038 1027 917 905
+4522 905 916 917 1037
+4523 1026 1038 1037 917
+4524 1037 917 905 1026
+4525 906 907 918 1028
+4526 1027 1039 1028 906
+4527 1039 1028 918 906
+4528 906 917 918 1038
+4529 1027 1039 1038 918
+4530 1038 918 906 1027
+4531 907 908 919 1029
+4532 1028 1040 1029 907
+4533 1040 1029 919 907
+4534 907 918 919 1039
+4535 1028 1040 1039 919
+4536 1039 919 907 1028
+4537 908 909 920 1030
+4538 1029 1041 1030 908
+4539 1041 1030 920 908
+4540 908 919 920 1040
+4541 1029 1041 1040 920
+4542 1040 920 908 1029
+4543 909 910 921 1031
+4544 1030 1042 1031 909
+4545 1042 1031 921 909
+4546 909 920 921 1041
+4547 1030 1042 1041 921
+4548 1041 921 909 1030
+4549 910 911 922 1032
+4550 1031 1043 1032 910
+4551 1043 1032 922 910
+4552 910 921 922 1042
+4553 1031 1043 1042 922
+4554 1042 922 910 1031
+4555 911 912 923 1033
+4556 1032 1044 1033 911
+4557 1044 1033 923 911
+4558 911 922 923 1043
+4559 1032 1044 1043 923
+4560 1043 923 911 1032
+4561 913 914 925 1035
+4562 1034 1046 1035 913
+4563 1046 1035 925 913
+4564 913 924 925 1045
+4565 1034 1046 1045 925
+4566 1045 925 913 1034
+4567 914 915 926 1036
+4568 1035 1047 1036 914
+4569 1047 1036 926 914
+4570 914 925 926 1046
+4571 1035 1047 1046 926
+4572 1046 926 914 1035
+4573 915 916 927 1037
+4574 1036 1048 1037 915
+4575 1048 1037 927 915
+4576 915 926 927 1047
+4577 1036 1048 1047 927
+4578 1047 927 915 1036
+4579 916 917 928 1038
+4580 1037 1049 1038 916
+4581 1049 1038 928 916
+4582 916 927 928 1048
+4583 1037 1049 1048 928
+4584 1048 928 916 1037
+4585 917 918 929 1039
+4586 1038 1050 1039 917
+4587 1050 1039 929 917
+4588 917 928 929 1049
+4589 1038 1050 1049 929
+4590 1049 929 917 1038
+4591 918 919 930 1040
+4592 1039 1051 1040 918
+4593 1051 1040 930 918
+4594 918 929 930 1050
+4595 1039 1051 1050 930
+4596 1050 930 918 1039
+4597 919 920 931 1041
+4598 1040 1052 1041 919
+4599 1052 1041 931 919
+4600 919 930 931 1051
+4601 1040 1052 1051 931
+4602 1051 931 919 1040
+4603 920 921 932 1042
+4604 1041 1053 1042 920
+4605 1053 1042 932 920
+4606 920 931 932 1052
+4607 1041 1053 1052 932
+4608 1052 932 920 1041
+4609 921 922 933 1043
+4610 1042 1054 1043 921
+4611 1054 1043 933 921
+4612 921 932 933 1053
+4613 1042 1054 1053 933
+4614 1053 933 921 1042
+4615 922 923 934 1044
+4616 1043 1055 1044 922
+4617 1055 1044 934 922
+4618 922 933 934 1054
+4619 1043 1055 1054 934
+4620 1054 934 922 1043
+4621 924 925 936 1046
+4622 1045 1057 1046 924
+4623 1057 1046 936 924
+4624 924 935 936 1056
+4625 1045 1057 1056 936
+4626 1056 936 924 1045
+4627 925 926 937 1047
+4628 1046 1058 1047 925
+4629 1058 1047 937 925
+4630 925 936 937 1057
+4631 1046 1058 1057 937
+4632 1057 937 925 1046
+4633 926 927 938 1048
+4634 1047 1059 1048 926
+4635 1059 1048 938 926
+4636 926 937 938 1058
+4637 1047 1059 1058 938
+4638 1058 938 926 1047
+4639 927 928 939 1049
+4640 1048 1060 1049 927
+4641 1060 1049 939 927
+4642 927 938 939 1059
+4643 1048 1060 1059 939
+4644 1059 939 927 1048
+4645 928 929 940 1050
+4646 1049 1061 1050 928
+4647 1061 1050 940 928
+4648 928 939 940 1060
+4649 1049 1061 1060 940
+4650 1060 940 928 1049
+4651 929 930 941 1051
+4652 1050 1062 1051 929
+4653 1062 1051 941 929
+4654 929 940 941 1061
+4655 1050 1062 1061 941
+4656 1061 941 929 1050
+4657 930 931 942 1052
+4658 1051 1063 1052 930
+4659 1063 1052 942 930
+4660 930 941 942 1062
+4661 1051 1063 1062 942
+4662 1062 942 930 1051
+4663 931 932 943 1053
+4664 1052 1064 1053 931
+4665 1064 1053 943 931
+4666 931 942 943 1063
+4667 1052 1064 1063 943
+4668 1063 943 931 1052
+4669 932 933 944 1054
+4670 1053 1065 1054 932
+4671 1065 1054 944 932
+4672 932 943 944 1064
+4673 1053 1065 1064 944
+4674 1064 944 932 1053
+4675 933 934 945 1055
+4676 1054 1066 1055 933
+4677 1066 1055 945 933
+4678 933 944 945 1065
+4679 1054 1066 1065 945
+4680 1065 945 933 1054
+4681 935 936 947 1057
+4682 1056 1068 1057 935
+4683 1068 1057 947 935
+4684 935 946 947 1067
+4685 1056 1068 1067 947
+4686 1067 947 935 1056
+4687 936 937 948 1058
+4688 1057 1069 1058 936
+4689 1069 1058 948 936
+4690 936 947 948 1068
+4691 1057 1069 1068 948
+4692 1068 948 936 1057
+4693 937 938 949 1059
+4694 1058 1070 1059 937
+4695 1070 1059 949 937
+4696 937 948 949 1069
+4697 1058 1070 1069 949
+4698 1069 949 937 1058
+4699 938 939 950 1060
+4700 1059 1071 1060 938
+4701 1071 1060 950 938
+4702 938 949 950 1070
+4703 1059 1071 1070 950
+4704 1070 950 938 1059
+4705 939 940 951 1061
+4706 1060 1072 1061 939
+4707 1072 1061 951 939
+4708 939 950 951 1071
+4709 1060 1072 1071 951
+4710 1071 951 939 1060
+4711 940 941 952 1062
+4712 1061 1073 1062 940
+4713 1073 1062 952 940
+4714 940 951 952 1072
+4715 1061 1073 1072 952
+4716 1072 952 940 1061
+4717 941 942 953 1063
+4718 1062 1074 1063 941
+4719 1074 1063 953 941
+4720 941 952 953 1073
+4721 1062 1074 1073 953
+4722 1073 953 941 1062
+4723 942 943 954 1064
+4724 1063 1075 1064 942
+4725 1075 1064 954 942
+4726 942 953 954 1074
+4727 1063 1075 1074 954
+4728 1074 954 942 1063
+4729 943 944 955 1065
+4730 1064 1076 1065 943
+4731 1076 1065 955 943
+4732 943 954 955 1075
+4733 1064 1076 1075 955
+4734 1075 955 943 1064
+4735 944 945 956 1066
+4736 1065 1077 1066 944
+4737 1077 1066 956 944
+4738 944 955 956 1076
+4739 1065 1077 1076 956
+4740 1076 956 944 1065
+4741 946 947 958 1068
+4742 1067 1079 1068 946
+4743 1079 1068 958 946
+4744 946 957 958 1078
+4745 1067 1079 1078 958
+4746 1078 958 946 1067
+4747 947 948 959 1069
+4748 1068 1080 1069 947
+4749 1080 1069 959 947
+4750 947 958 959 1079
+4751 1068 1080 1079 959
+4752 1079 959 947 1068
+4753 948 949 960 1070
+4754 1069 1081 1070 948
+4755 1081 1070 960 948
+4756 948 959 960 1080
+4757 1069 1081 1080 960
+4758 1080 960 948 1069
+4759 949 950 961 1071
+4760 1070 1082 1071 949
+4761 1082 1071 961 949
+4762 949 960 961 1081
+4763 1070 1082 1081 961
+4764 1081 961 949 1070
+4765 950 951 962 1072
+4766 1071 1083 1072 950
+4767 1083 1072 962 950
+4768 950 961 962 1082
+4769 1071 1083 1082 962
+4770 1082 962 950 1071
+4771 951 952 963 1073
+4772 1072 1084 1073 951
+4773 1084 1073 963 951
+4774 951 962 963 1083
+4775 1072 1084 1083 963
+4776 1083 963 951 1072
+4777 952 953 964 1074
+4778 1073 1085 1074 952
+4779 1085 1074 964 952
+4780 952 963 964 1084
+4781 1073 1085 1084 964
+4782 1084 964 952 1073
+4783 953 954 965 1075
+4784 1074 1086 1075 953
+4785 1086 1075 965 953
+4786 953 964 965 1085
+4787 1074 1086 1085 965
+4788 1085 965 953 1074
+4789 954 955 966 1076
+4790 1075 1087 1076 954
+4791 1087 1076 966 954
+4792 954 965 966 1086
+4793 1075 1087 1086 966
+4794 1086 966 954 1075
+4795 955 956 967 1077
+4796 1076 1088 1077 955
+4797 1088 1077 967 955
+4798 955 966 967 1087
+4799 1076 1088 1087 967
+4800 1087 967 955 1076
+4801 968 969 980 1090
+4802 1089 1101 1090 968
+4803 1101 1090 980 968
+4804 968 979 980 1100
+4805 1089 1101 1100 980
+4806 1100 980 968 1089
+4807 969 970 981 1091
+4808 1090 1102 1091 969
+4809 1102 1091 981 969
+4810 969 980 981 1101
+4811 1090 1102 1101 981
+4812 1101 981 969 1090
+4813 970 971 982 1092
+4814 1091 1103 1092 970
+4815 1103 1092 982 970
+4816 970 981 982 1102
+4817 1091 1103 1102 982
+4818 1102 982 970 1091
+4819 971 972 983 1093
+4820 1092 1104 1093 971
+4821 1104 1093 983 971
+4822 971 982 983 1103
+4823 1092 1104 1103 983
+4824 1103 983 971 1092
+4825 972 973 984 1094
+4826 1093 1105 1094 972
+4827 1105 1094 984 972
+4828 972 983 984 1104
+4829 1093 1105 1104 984
+4830 1104 984 972 1093
+4831 973 974 985 1095
+4832 1094 1106 1095 973
+4833 1106 1095 985 973
+4834 973 984 985 1105
+4835 1094 1106 1105 985
+4836 1105 985 973 1094
+4837 974 975 986 1096
+4838 1095 1107 1096 974
+4839 1107 1096 986 974
+4840 974 985 986 1106
+4841 1095 1107 1106 986
+4842 1106 986 974 1095
+4843 975 976 987 1097
+4844 1096 1108 1097 975
+4845 1108 1097 987 975
+4846 975 986 987 1107
+4847 1096 1108 1107 987
+4848 1107 987 975 1096
+4849 976 977 988 1098
+4850 1097 1109 1098 976
+4851 1109 1098 988 976
+4852 976 987 988 1108
+4853 1097 1109 1108 988
+4854 1108 988 976 1097
+4855 977 978 989 1099
+4856 1098 1110 1099 977
+4857 1110 1099 989 977
+4858 977 988 989 1109
+4859 1098 1110 1109 989
+4860 1109 989 977 1098
+4861 979 980 991 1101
+4862 1100 1112 1101 979
+4863 1112 1101 991 979
+4864 979 990 991 1111
+4865 1100 1112 1111 991
+4866 1111 991 979 1100
+4867 980 981 992 1102
+4868 1101 1113 1102 980
+4869 1113 1102 992 980
+4870 980 991 992 1112
+4871 1101 1113 1112 992
+4872 1112 992 980 1101
+4873 981 982 993 1103
+4874 1102 1114 1103 981
+4875 1114 1103 993 981
+4876 981 992 993 1113
+4877 1102 1114 1113 993
+4878 1113 993 981 1102
+4879 982 983 994 1104
+4880 1103 1115 1104 982
+4881 1115 1104 994 982
+4882 982 993 994 1114
+4883 1103 1115 1114 994
+4884 1114 994 982 1103
+4885 983 984 995 1105
+4886 1104 1116 1105 983
+4887 1116 1105 995 983
+4888 983 994 995 1115
+4889 1104 1116 1115 995
+4890 1115 995 983 1104
+4891 984 985 996 1106
+4892 1105 1117 1106 984
+4893 1117 1106 996 984
+4894 984 995 996 1116
+4895 1105 1117 1116 996
+4896 1116 996 984 1105
+4897 985 986 997 1107
+4898 1106 1118 1107 985
+4899 1118 1107 997 985
+4900 985 996 997 1117
+4901 1106 1118 1117 997
+4902 1117 997 985 1106
+4903 986 987 998 1108
+4904 1107 1119 1108 986
+4905 1119 1108 998 986
+4906 986 997 998 1118
+4907 1107 1119 1118 998
+4908 1118 998 986 1107
+4909 987 988 999 1109
+4910 1108 1120 1109 987
+4911 1120 1109 999 987
+4912 987 998 999 1119
+4913 1108 1120 1119 999
+4914 1119 999 987 1108
+4915 988 989 1000 1110
+4916 1109 1121 1110 988
+4917 1121 1110 1000 988
+4918 988 999 1000 1120
+4919 1109 1121 1120 1000
+4920 1120 1000 988 1109
+4921 990 991 1002 1112
+4922 1111 1123 1112 990
+4923 1123 1112 1002 990
+4924 990 1001 1002 1122
+4925 1111 1123 1122 1002
+4926 1122 1002 990 1111
+4927 991 992 1003 1113
+4928 1112 1124 1113 991
+4929 1124 1113 1003 991
+4930 991 1002 1003 1123
+4931 1112 1124 1123 1003
+4932 1123 1003 991 1112
+4933 992 993 1004 1114
+4934 1113 1125 1114 992
+4935 1125 1114 1004 992
+4936 992 1003 1004 1124
+4937 1113 1125 1124 1004
+4938 1124 1004 992 1113
+4939 993 994 1005 1115
+4940 1114 1126 1115 993
+4941 1126 1115 1005 993
+4942 993 1004 1005 1125
+4943 1114 1126 1125 1005
+4944 1125 1005 993 1114
+4945 994 995 1006 1116
+4946 1115 1127 1116 994
+4947 1127 1116 1006 994
+4948 994 1005 1006 1126
+4949 1115 1127 1126 1006
+4950 1126 1006 994 1115
+4951 995 996 1007 1117
+4952 1116 1128 1117 995
+4953 1128 1117 1007 995
+4954 995 1006 1007 1127
+4955 1116 1128 1127 1007
+4956 1127 1007 995 1116
+4957 996 997 1008 1118
+4958 1117 1129 1118 996
+4959 1129 1118 1008 996
+4960 996 1007 1008 1128
+4961 1117 1129 1128 1008
+4962 1128 1008 996 1117
+4963 997 998 1009 1119
+4964 1118 1130 1119 997
+4965 1130 1119 1009 997
+4966 997 1008 1009 1129
+4967 1118 1130 1129 1009
+4968 1129 1009 997 1118
+4969 998 999 1010 1120
+4970 1119 1131 1120 998
+4971 1131 1120 1010 998
+4972 998 1009 1010 1130
+4973 1119 1131 1130 1010
+4974 1130 1010 998 1119
+4975 999 1000 1011 1121
+4976 1120 1132 1121 999
+4977 1132 1121 1011 999
+4978 999 1010 1011 1131
+4979 1120 1132 1131 1011
+4980 1131 1011 999 1120
+4981 1001 1002 1013 1123
+4982 1122 1134 1123 1001
+4983 1134 1123 1013 1001
+4984 1001 1012 1013 1133
+4985 1122 1134 1133 1013
+4986 1133 1013 1001 1122
+4987 1002 1003 1014 1124
+4988 1123 1135 1124 1002
+4989 1135 1124 1014 1002
+4990 1002 1013 1014 1134
+4991 1123 1135 1134 1014
+4992 1134 1014 1002 1123
+4993 1003 1004 1015 1125
+4994 1124 1136 1125 1003
+4995 1136 1125 1015 1003
+4996 1003 1014 1015 1135
+4997 1124 1136 1135 1015
+4998 1135 1015 1003 1124
+4999 1004 1005 1016 1126
+5000 1125 1137 1126 1004
+5001 1137 1126 1016 1004
+5002 1004 1015 1016 1136
+5003 1125 1137 1136 1016
+5004 1136 1016 1004 1125
+5005 1005 1006 1017 1127
+5006 1126 1138 1127 1005
+5007 1138 1127 1017 1005
+5008 1005 1016 1017 1137
+5009 1126 1138 1137 1017
+5010 1137 1017 1005 1126
+5011 1006 1007 1018 1128
+5012 1127 1139 1128 1006
+5013 1139 1128 1018 1006
+5014 1006 1017 1018 1138
+5015 1127 1139 1138 1018
+5016 1138 1018 1006 1127
+5017 1007 1008 1019 1129
+5018 1128 1140 1129 1007
+5019 1140 1129 1019 1007
+5020 1007 1018 1019 1139
+5021 1128 1140 1139 1019
+5022 1139 1019 1007 1128
+5023 1008 1009 1020 1130
+5024 1129 1141 1130 1008
+5025 1141 1130 1020 1008
+5026 1008 1019 1020 1140
+5027 1129 1141 1140 1020
+5028 1140 1020 1008 1129
+5029 1009 1010 1021 1131
+5030 1130 1142 1131 1009
+5031 1142 1131 1021 1009
+5032 1009 1020 1021 1141
+5033 1130 1142 1141 1021
+5034 1141 1021 1009 1130
+5035 1010 1011 1022 1132
+5036 1131 1143 1132 1010
+5037 1143 1132 1022 1010
+5038 1010 1021 1022 1142
+5039 1131 1143 1142 1022
+5040 1142 1022 1010 1131
+5041 1012 1013 1024 1134
+5042 1133 1145 1134 1012
+5043 1145 1134 1024 1012
+5044 1012 1023 1024 1144
+5045 1133 1145 1144 1024
+5046 1144 1024 1012 1133
+5047 1013 1014 1025 1135
+5048 1134 1146 1135 1013
+5049 1146 1135 1025 1013
+5050 1013 1024 1025 1145
+5051 1134 1146 1145 1025
+5052 1145 1025 1013 1134
+5053 1014 1015 1026 1136
+5054 1135 1147 1136 1014
+5055 1147 1136 1026 1014
+5056 1014 1025 1026 1146
+5057 1135 1147 1146 1026
+5058 1146 1026 1014 1135
+5059 1015 1016 1027 1137
+5060 1136 1148 1137 1015
+5061 1148 1137 1027 1015
+5062 1015 1026 1027 1147
+5063 1136 1148 1147 1027
+5064 1147 1027 1015 1136
+5065 1016 1017 1028 1138
+5066 1137 1149 1138 1016
+5067 1149 1138 1028 1016
+5068 1016 1027 1028 1148
+5069 1137 1149 1148 1028
+5070 1148 1028 1016 1137
+5071 1017 1018 1029 1139
+5072 1138 1150 1139 1017
+5073 1150 1139 1029 1017
+5074 1017 1028 1029 1149
+5075 1138 1150 1149 1029
+5076 1149 1029 1017 1138
+5077 1018 1019 1030 1140
+5078 1139 1151 1140 1018
+5079 1151 1140 1030 1018
+5080 1018 1029 1030 1150
+5081 1139 1151 1150 1030
+5082 1150 1030 1018 1139
+5083 1019 1020 1031 1141
+5084 1140 1152 1141 1019
+5085 1152 1141 1031 1019
+5086 1019 1030 1031 1151
+5087 1140 1152 1151 1031
+5088 1151 1031 1019 1140
+5089 1020 1021 1032 1142
+5090 1141 1153 1142 1020
+5091 1153 1142 1032 1020
+5092 1020 1031 1032 1152
+5093 1141 1153 1152 1032
+5094 1152 1032 1020 1141
+5095 1021 1022 1033 1143
+5096 1142 1154 1143 1021
+5097 1154 1143 1033 1021
+5098 1021 1032 1033 1153
+5099 1142 1154 1153 1033
+5100 1153 1033 1021 1142
+5101 1023 1024 1035 1145
+5102 1144 1156 1145 1023
+5103 1156 1145 1035 1023
+5104 1023 1034 1035 1155
+5105 1144 1156 1155 1035
+5106 1155 1035 1023 1144
+5107 1024 1025 1036 1146
+5108 1145 1157 1146 1024
+5109 1157 1146 1036 1024
+5110 1024 1035 1036 1156
+5111 1145 1157 1156 1036
+5112 1156 1036 1024 1145
+5113 1025 1026 1037 1147
+5114 1146 1158 1147 1025
+5115 1158 1147 1037 1025
+5116 1025 1036 1037 1157
+5117 1146 1158 1157 1037
+5118 1157 1037 1025 1146
+5119 1026 1027 1038 1148
+5120 1147 1159 1148 1026
+5121 1159 1148 1038 1026
+5122 1026 1037 1038 1158
+5123 1147 1159 1158 1038
+5124 1158 1038 1026 1147
+5125 1027 1028 1039 1149
+5126 1148 1160 1149 1027
+5127 1160 1149 1039 1027
+5128 1027 1038 1039 1159
+5129 1148 1160 1159 1039
+5130 1159 1039 1027 1148
+5131 1028 1029 1040 1150
+5132 1149 1161 1150 1028
+5133 1161 1150 1040 1028
+5134 1028 1039 1040 1160
+5135 1149 1161 1160 1040
+5136 1160 1040 1028 1149
+5137 1029 1030 1041 1151
+5138 1150 1162 1151 1029
+5139 1162 1151 1041 1029
+5140 1029 1040 1041 1161
+5141 1150 1162 1161 1041
+5142 1161 1041 1029 1150
+5143 1030 1031 1042 1152
+5144 1151 1163 1152 1030
+5145 1163 1152 1042 1030
+5146 1030 1041 1042 1162
+5147 1151 1163 1162 1042
+5148 1162 1042 1030 1151
+5149 1031 1032 1043 1153
+5150 1152 1164 1153 1031
+5151 1164 1153 1043 1031
+5152 1031 1042 1043 1163
+5153 1152 1164 1163 1043
+5154 1163 1043 1031 1152
+5155 1032 1033 1044 1154
+5156 1153 1165 1154 1032
+5157 1165 1154 1044 1032
+5158 1032 1043 1044 1164
+5159 1153 1165 1164 1044
+5160 1164 1044 1032 1153
+5161 1034 1035 1046 1156
+5162 1155 1167 1156 1034
+5163 1167 1156 1046 1034
+5164 1034 1045 1046 1166
+5165 1155 1167 1166 1046
+5166 1166 1046 1034 1155
+5167 1035 1036 1047 1157
+5168 1156 1168 1157 1035
+5169 1168 1157 1047 1035
+5170 1035 1046 1047 1167
+5171 1156 1168 1167 1047
+5172 1167 1047 1035 1156
+5173 1036 1037 1048 1158
+5174 1157 1169 1158 1036
+5175 1169 1158 1048 1036
+5176 1036 1047 1048 1168
+5177 1157 1169 1168 1048
+5178 1168 1048 1036 1157
+5179 1037 1038 1049 1159
+5180 1158 1170 1159 1037
+5181 1170 1159 1049 1037
+5182 1037 1048 1049 1169
+5183 1158 1170 1169 1049
+5184 1169 1049 1037 1158
+5185 1038 1039 1050 1160
+5186 1159 1171 1160 1038
+5187 1171 1160 1050 1038
+5188 1038 1049 1050 1170
+5189 1159 1171 1170 1050
+5190 1170 1050 1038 1159
+5191 1039 1040 1051 1161
+5192 1160 1172 1161 1039
+5193 1172 1161 1051 1039
+5194 1039 1050 1051 1171
+5195 1160 1172 1171 1051
+5196 1171 1051 1039 1160
+5197 1040 1041 1052 1162
+5198 1161 1173 1162 1040
+5199 1173 1162 1052 1040
+5200 1040 1051 1052 1172
+5201 1161 1173 1172 1052
+5202 1172 1052 1040 1161
+5203 1041 1042 1053 1163
+5204 1162 1174 1163 1041
+5205 1174 1163 1053 1041
+5206 1041 1052 1053 1173
+5207 1162 1174 1173 1053
+5208 1173 1053 1041 1162
+5209 1042 1043 1054 1164
+5210 1163 1175 1164 1042
+5211 1175 1164 1054 1042
+5212 1042 1053 1054 1174
+5213 1163 1175 1174 1054
+5214 1174 1054 1042 1163
+5215 1043 1044 1055 1165
+5216 1164 1176 1165 1043
+5217 1176 1165 1055 1043
+5218 1043 1054 1055 1175
+5219 1164 1176 1175 1055
+5220 1175 1055 1043 1164
+5221 1045 1046 1057 1167
+5222 1166 1178 1167 1045
+5223 1178 1167 1057 1045
+5224 1045 1056 1057 1177
+5225 1166 1178 1177 1057
+5226 1177 1057 1045 1166
+5227 1046 1047 1058 1168
+5228 1167 1179 1168 1046
+5229 1179 1168 1058 1046
+5230 1046 1057 1058 1178
+5231 1167 1179 1178 1058
+5232 1178 1058 1046 1167
+5233 1047 1048 1059 1169
+5234 1168 1180 1169 1047
+5235 1180 1169 1059 1047
+5236 1047 1058 1059 1179
+5237 1168 1180 1179 1059
+5238 1179 1059 1047 1168
+5239 1048 1049 1060 1170
+5240 1169 1181 1170 1048
+5241 1181 1170 1060 1048
+5242 1048 1059 1060 1180
+5243 1169 1181 1180 1060
+5244 1180 1060 1048 1169
+5245 1049 1050 1061 1171
+5246 1170 1182 1171 1049
+5247 1182 1171 1061 1049
+5248 1049 1060 1061 1181
+5249 1170 1182 1181 1061
+5250 1181 1061 1049 1170
+5251 1050 1051 1062 1172
+5252 1171 1183 1172 1050
+5253 1183 1172 1062 1050
+5254 1050 1061 1062 1182
+5255 1171 1183 1182 1062
+5256 1182 1062 1050 1171
+5257 1051 1052 1063 1173
+5258 1172 1184 1173 1051
+5259 1184 1173 1063 1051
+5260 1051 1062 1063 1183
+5261 1172 1184 1183 1063
+5262 1183 1063 1051 1172
+5263 1052 1053 1064 1174
+5264 1173 1185 1174 1052
+5265 1185 1174 1064 1052
+5266 1052 1063 1064 1184
+5267 1173 1185 1184 1064
+5268 1184 1064 1052 1173
+5269 1053 1054 1065 1175
+5270 1174 1186 1175 1053
+5271 1186 1175 1065 1053
+5272 1053 1064 1065 1185
+5273 1174 1186 1185 1065
+5274 1185 1065 1053 1174
+5275 1054 1055 1066 1176
+5276 1175 1187 1176 1054
+5277 1187 1176 1066 1054
+5278 1054 1065 1066 1186
+5279 1175 1187 1186 1066
+5280 1186 1066 1054 1175
+5281 1056 1057 1068 1178
+5282 1177 1189 1178 1056
+5283 1189 1178 1068 1056
+5284 1056 1067 1068 1188
+5285 1177 1189 1188 1068
+5286 1188 1068 1056 1177
+5287 1057 1058 1069 1179
+5288 1178 1190 1179 1057
+5289 1190 1179 1069 1057
+5290 1057 1068 1069 1189
+5291 1178 1190 1189 1069
+5292 1189 1069 1057 1178
+5293 1058 1059 1070 1180
+5294 1179 1191 1180 1058
+5295 1191 1180 1070 1058
+5296 1058 1069 1070 1190
+5297 1179 1191 1190 1070
+5298 1190 1070 1058 1179
+5299 1059 1060 1071 1181
+5300 1180 1192 1181 1059
+5301 1192 1181 1071 1059
+5302 1059 1070 1071 1191
+5303 1180 1192 1191 1071
+5304 1191 1071 1059 1180
+5305 1060 1061 1072 1182
+5306 1181 1193 1182 1060
+5307 1193 1182 1072 1060
+5308 1060 1071 1072 1192
+5309 1181 1193 1192 1072
+5310 1192 1072 1060 1181
+5311 1061 1062 1073 1183
+5312 1182 1194 1183 1061
+5313 1194 1183 1073 1061
+5314 1061 1072 1073 1193
+5315 1182 1194 1193 1073
+5316 1193 1073 1061 1182
+5317 1062 1063 1074 1184
+5318 1183 1195 1184 1062
+5319 1195 1184 1074 1062
+5320 1062 1073 1074 1194
+5321 1183 1195 1194 1074
+5322 1194 1074 1062 1183
+5323 1063 1064 1075 1185
+5324 1184 1196 1185 1063
+5325 1196 1185 1075 1063
+5326 1063 1074 1075 1195
+5327 1184 1196 1195 1075
+5328 1195 1075 1063 1184
+5329 1064 1065 1076 1186
+5330 1185 1197 1186 1064
+5331 1197 1186 1076 1064
+5332 1064 1075 1076 1196
+5333 1185 1197 1196 1076
+5334 1196 1076 1064 1185
+5335 1065 1066 1077 1187
+5336 1186 1198 1187 1065
+5337 1198 1187 1077 1065
+5338 1065 1076 1077 1197
+5339 1186 1198 1197 1077
+5340 1197 1077 1065 1186
+5341 1067 1068 1079 1189
+5342 1188 1200 1189 1067
+5343 1200 1189 1079 1067
+5344 1067 1078 1079 1199
+5345 1188 1200 1199 1079
+5346 1199 1079 1067 1188
+5347 1068 1069 1080 1190
+5348 1189 1201 1190 1068
+5349 1201 1190 1080 1068
+5350 1068 1079 1080 1200
+5351 1189 1201 1200 1080
+5352 1200 1080 1068 1189
+5353 1069 1070 1081 1191
+5354 1190 1202 1191 1069
+5355 1202 1191 1081 1069
+5356 1069 1080 1081 1201
+5357 1190 1202 1201 1081
+5358 1201 1081 1069 1190
+5359 1070 1071 1082 1192
+5360 1191 1203 1192 1070
+5361 1203 1192 1082 1070
+5362 1070 1081 1082 1202
+5363 1191 1203 1202 1082
+5364 1202 1082 1070 1191
+5365 1071 1072 1083 1193
+5366 1192 1204 1193 1071
+5367 1204 1193 1083 1071
+5368 1071 1082 1083 1203
+5369 1192 1204 1203 1083
+5370 1203 1083 1071 1192
+5371 1072 1073 1084 1194
+5372 1193 1205 1194 1072
+5373 1205 1194 1084 1072
+5374 1072 1083 1084 1204
+5375 1193 1205 1204 1084
+5376 1204 1084 1072 1193
+5377 1073 1074 1085 1195
+5378 1194 1206 1195 1073
+5379 1206 1195 1085 1073
+5380 1073 1084 1085 1205
+5381 1194 1206 1205 1085
+5382 1205 1085 1073 1194
+5383 1074 1075 1086 1196
+5384 1195 1207 1196 1074
+5385 1207 1196 1086 1074
+5386 1074 1085 1086 1206
+5387 1195 1207 1206 1086
+5388 1206 1086 1074 1195
+5389 1075 1076 1087 1197
+5390 1196 1208 1197 1075
+5391 1208 1197 1087 1075
+5392 1075 1086 1087 1207
+5393 1196 1208 1207 1087
+5394 1207 1087 1075 1196
+5395 1076 1077 1088 1198
+5396 1197 1209 1198 1076
+5397 1209 1198 1088 1076
+5398 1076 1087 1088 1208
+5399 1197 1209 1208 1088
+5400 1208 1088 1076 1197
+5401 1089 1090 1101 1211
+5402 1210 1222 1211 1089
+5403 1222 1211 1101 1089
+5404 1089 1100 1101 1221
+5405 1210 1222 1221 1101
+5406 1221 1101 1089 1210
+5407 1090 1091 1102 1212
+5408 1211 1223 1212 1090
+5409 1223 1212 1102 1090
+5410 1090 1101 1102 1222
+5411 1211 1223 1222 1102
+5412 1222 1102 1090 1211
+5413 1091 1092 1103 1213
+5414 1212 1224 1213 1091
+5415 1224 1213 1103 1091
+5416 1091 1102 1103 1223
+5417 1212 1224 1223 1103
+5418 1223 1103 1091 1212
+5419 1092 1093 1104 1214
+5420 1213 1225 1214 1092
+5421 1225 1214 1104 1092
+5422 1092 1103 1104 1224
+5423 1213 1225 1224 1104
+5424 1224 1104 1092 1213
+5425 1093 1094 1105 1215
+5426 1214 1226 1215 1093
+5427 1226 1215 1105 1093
+5428 1093 1104 1105 1225
+5429 1214 1226 1225 1105
+5430 1225 1105 1093 1214
+5431 1094 1095 1106 1216
+5432 1215 1227 1216 1094
+5433 1227 1216 1106 1094
+5434 1094 1105 1106 1226
+5435 1215 1227 1226 1106
+5436 1226 1106 1094 1215
+5437 1095 1096 1107 1217
+5438 1216 1228 1217 1095
+5439 1228 1217 1107 1095
+5440 1095 1106 1107 1227
+5441 1216 1228 1227 1107
+5442 1227 1107 1095 1216
+5443 1096 1097 1108 1218
+5444 1217 1229 1218 1096
+5445 1229 1218 1108 1096
+5446 1096 1107 1108 1228
+5447 1217 1229 1228 1108
+5448 1228 1108 1096 1217
+5449 1097 1098 1109 1219
+5450 1218 1230 1219 1097
+5451 1230 1219 1109 1097
+5452 1097 1108 1109 1229
+5453 1218 1230 1229 1109
+5454 1229 1109 1097 1218
+5455 1098 1099 1110 1220
+5456 1219 1231 1220 1098
+5457 1231 1220 1110 1098
+5458 1098 1109 1110 1230
+5459 1219 1231 1230 1110
+5460 1230 1110 1098 1219
+5461 1100 1101 1112 1222
+5462 1221 1233 1222 1100
+5463 1233 1222 1112 1100
+5464 1100 1111 1112 1232
+5465 1221 1233 1232 1112
+5466 1232 1112 1100 1221
+5467 1101 1102 1113 1223
+5468 1222 1234 1223 1101
+5469 1234 1223 1113 1101
+5470 1101 1112 1113 1233
+5471 1222 1234 1233 1113
+5472 1233 1113 1101 1222
+5473 1102 1103 1114 1224
+5474 1223 1235 1224 1102
+5475 1235 1224 1114 1102
+5476 1102 1113 1114 1234
+5477 1223 1235 1234 1114
+5478 1234 1114 1102 1223
+5479 1103 1104 1115 1225
+5480 1224 1236 1225 1103
+5481 1236 1225 1115 1103
+5482 1103 1114 1115 1235
+5483 1224 1236 1235 1115
+5484 1235 1115 1103 1224
+5485 1104 1105 1116 1226
+5486 1225 1237 1226 1104
+5487 1237 1226 1116 1104
+5488 1104 1115 1116 1236
+5489 1225 1237 1236 1116
+5490 1236 1116 1104 1225
+5491 1105 1106 1117 1227
+5492 1226 1238 1227 1105
+5493 1238 1227 1117 1105
+5494 1105 1116 1117 1237
+5495 1226 1238 1237 1117
+5496 1237 1117 1105 1226
+5497 1106 1107 1118 1228
+5498 1227 1239 1228 1106
+5499 1239 1228 1118 1106
+5500 1106 1117 1118 1238
+5501 1227 1239 1238 1118
+5502 1238 1118 1106 1227
+5503 1107 1108 1119 1229
+5504 1228 1240 1229 1107
+5505 1240 1229 1119 1107
+5506 1107 1118 1119 1239
+5507 1228 1240 1239 1119
+5508 1239 1119 1107 1228
+5509 1108 1109 1120 1230
+5510 1229 1241 1230 1108
+5511 1241 1230 1120 1108
+5512 1108 1119 1120 1240
+5513 1229 1241 1240 1120
+5514 1240 1120 1108 1229
+5515 1109 1110 1121 1231
+5516 1230 1242 1231 1109
+5517 1242 1231 1121 1109
+5518 1109 1120 1121 1241
+5519 1230 1242 1241 1121
+5520 1241 1121 1109 1230
+5521 1111 1112 1123 1233
+5522 1232 1244 1233 1111
+5523 1244 1233 1123 1111
+5524 1111 1122 1123 1243
+5525 1232 1244 1243 1123
+5526 1243 1123 1111 1232
+5527 1112 1113 1124 1234
+5528 1233 1245 1234 1112
+5529 1245 1234 1124 1112
+5530 1112 1123 1124 1244
+5531 1233 1245 1244 1124
+5532 1244 1124 1112 1233
+5533 1113 1114 1125 1235
+5534 1234 1246 1235 1113
+5535 1246 1235 1125 1113
+5536 1113 1124 1125 1245
+5537 1234 1246 1245 1125
+5538 1245 1125 1113 1234
+5539 1114 1115 1126 1236
+5540 1235 1247 1236 1114
+5541 1247 1236 1126 1114
+5542 1114 1125 1126 1246
+5543 1235 1247 1246 1126
+5544 1246 1126 1114 1235
+5545 1115 1116 1127 1237
+5546 1236 1248 1237 1115
+5547 1248 1237 1127 1115
+5548 1115 1126 1127 1247
+5549 1236 1248 1247 1127
+5550 1247 1127 1115 1236
+5551 1116 1117 1128 1238
+5552 1237 1249 1238 1116
+5553 1249 1238 1128 1116
+5554 1116 1127 1128 1248
+5555 1237 1249 1248 1128
+5556 1248 1128 1116 1237
+5557 1117 1118 1129 1239
+5558 1238 1250 1239 1117
+5559 1250 1239 1129 1117
+5560 1117 1128 1129 1249
+5561 1238 1250 1249 1129
+5562 1249 1129 1117 1238
+5563 1118 1119 1130 1240
+5564 1239 1251 1240 1118
+5565 1251 1240 1130 1118
+5566 1118 1129 1130 1250
+5567 1239 1251 1250 1130
+5568 1250 1130 1118 1239
+5569 1119 1120 1131 1241
+5570 1240 1252 1241 1119
+5571 1252 1241 1131 1119
+5572 1119 1130 1131 1251
+5573 1240 1252 1251 1131
+5574 1251 1131 1119 1240
+5575 1120 1121 1132 1242
+5576 1241 1253 1242 1120
+5577 1253 1242 1132 1120
+5578 1120 1131 1132 1252
+5579 1241 1253 1252 1132
+5580 1252 1132 1120 1241
+5581 1122 1123 1134 1244
+5582 1243 1255 1244 1122
+5583 1255 1244 1134 1122
+5584 1122 1133 1134 1254
+5585 1243 1255 1254 1134
+5586 1254 1134 1122 1243
+5587 1123 1124 1135 1245
+5588 1244 1256 1245 1123
+5589 1256 1245 1135 1123
+5590 1123 1134 1135 1255
+5591 1244 1256 1255 1135
+5592 1255 1135 1123 1244
+5593 1124 1125 1136 1246
+5594 1245 1257 1246 1124
+5595 1257 1246 1136 1124
+5596 1124 1135 1136 1256
+5597 1245 1257 1256 1136
+5598 1256 1136 1124 1245
+5599 1125 1126 1137 1247
+5600 1246 1258 1247 1125
+5601 1258 1247 1137 1125
+5602 1125 1136 1137 1257
+5603 1246 1258 1257 1137
+5604 1257 1137 1125 1246
+5605 1126 1127 1138 1248
+5606 1247 1259 1248 1126
+5607 1259 1248 1138 1126
+5608 1126 1137 1138 1258
+5609 1247 1259 1258 1138
+5610 1258 1138 1126 1247
+5611 1127 1128 1139 1249
+5612 1248 1260 1249 1127
+5613 1260 1249 1139 1127
+5614 1127 1138 1139 1259
+5615 1248 1260 1259 1139
+5616 1259 1139 1127 1248
+5617 1128 1129 1140 1250
+5618 1249 1261 1250 1128
+5619 1261 1250 1140 1128
+5620 1128 1139 1140 1260
+5621 1249 1261 1260 1140
+5622 1260 1140 1128 1249
+5623 1129 1130 1141 1251
+5624 1250 1262 1251 1129
+5625 1262 1251 1141 1129
+5626 1129 1140 1141 1261
+5627 1250 1262 1261 1141
+5628 1261 1141 1129 1250
+5629 1130 1131 1142 1252
+5630 1251 1263 1252 1130
+5631 1263 1252 1142 1130
+5632 1130 1141 1142 1262
+5633 1251 1263 1262 1142
+5634 1262 1142 1130 1251
+5635 1131 1132 1143 1253
+5636 1252 1264 1253 1131
+5637 1264 1253 1143 1131
+5638 1131 1142 1143 1263
+5639 1252 1264 1263 1143
+5640 1263 1143 1131 1252
+5641 1133 1134 1145 1255
+5642 1254 1266 1255 1133
+5643 1266 1255 1145 1133
+5644 1133 1144 1145 1265
+5645 1254 1266 1265 1145
+5646 1265 1145 1133 1254
+5647 1134 1135 1146 1256
+5648 1255 1267 1256 1134
+5649 1267 1256 1146 1134
+5650 1134 1145 1146 1266
+5651 1255 1267 1266 1146
+5652 1266 1146 1134 1255
+5653 1135 1136 1147 1257
+5654 1256 1268 1257 1135
+5655 1268 1257 1147 1135
+5656 1135 1146 1147 1267
+5657 1256 1268 1267 1147
+5658 1267 1147 1135 1256
+5659 1136 1137 1148 1258
+5660 1257 1269 1258 1136
+5661 1269 1258 1148 1136
+5662 1136 1147 1148 1268
+5663 1257 1269 1268 1148
+5664 1268 1148 1136 1257
+5665 1137 1138 1149 1259
+5666 1258 1270 1259 1137
+5667 1270 1259 1149 1137
+5668 1137 1148 1149 1269
+5669 1258 1270 1269 1149
+5670 1269 1149 1137 1258
+5671 1138 1139 1150 1260
+5672 1259 1271 1260 1138
+5673 1271 1260 1150 1138
+5674 1138 1149 1150 1270
+5675 1259 1271 1270 1150
+5676 1270 1150 1138 1259
+5677 1139 1140 1151 1261
+5678 1260 1272 1261 1139
+5679 1272 1261 1151 1139
+5680 1139 1150 1151 1271
+5681 1260 1272 1271 1151
+5682 1271 1151 1139 1260
+5683 1140 1141 1152 1262
+5684 1261 1273 1262 1140
+5685 1273 1262 1152 1140
+5686 1140 1151 1152 1272
+5687 1261 1273 1272 1152
+5688 1272 1152 1140 1261
+5689 1141 1142 1153 1263
+5690 1262 1274 1263 1141
+5691 1274 1263 1153 1141
+5692 1141 1152 1153 1273
+5693 1262 1274 1273 1153
+5694 1273 1153 1141 1262
+5695 1142 1143 1154 1264
+5696 1263 1275 1264 1142
+5697 1275 1264 1154 1142
+5698 1142 1153 1154 1274
+5699 1263 1275 1274 1154
+5700 1274 1154 1142 1263
+5701 1144 1145 1156 1266
+5702 1265 1277 1266 1144
+5703 1277 1266 1156 1144
+5704 1144 1155 1156 1276
+5705 1265 1277 1276 1156
+5706 1276 1156 1144 1265
+5707 1145 1146 1157 1267
+5708 1266 1278 1267 1145
+5709 1278 1267 1157 1145
+5710 1145 1156 1157 1277
+5711 1266 1278 1277 1157
+5712 1277 1157 1145 1266
+5713 1146 1147 1158 1268
+5714 1267 1279 1268 1146
+5715 1279 1268 1158 1146
+5716 1146 1157 1158 1278
+5717 1267 1279 1278 1158
+5718 1278 1158 1146 1267
+5719 1147 1148 1159 1269
+5720 1268 1280 1269 1147
+5721 1280 1269 1159 1147
+5722 1147 1158 1159 1279
+5723 1268 1280 1279 1159
+5724 1279 1159 1147 1268
+5725 1148 1149 1160 1270
+5726 1269 1281 1270 1148
+5727 1281 1270 1160 1148
+5728 1148 1159 1160 1280
+5729 1269 1281 1280 1160
+5730 1280 1160 1148 1269
+5731 1149 1150 1161 1271
+5732 1270 1282 1271 1149
+5733 1282 1271 1161 1149
+5734 1149 1160 1161 1281
+5735 1270 1282 1281 1161
+5736 1281 1161 1149 1270
+5737 1150 1151 1162 1272
+5738 1271 1283 1272 1150
+5739 1283 1272 1162 1150
+5740 1150 1161 1162 1282
+5741 1271 1283 1282 1162
+5742 1282 1162 1150 1271
+5743 1151 1152 1163 1273
+5744 1272 1284 1273 1151
+5745 1284 1273 1163 1151
+5746 1151 1162 1163 1283
+5747 1272 1284 1283 1163
+5748 1283 1163 1151 1272
+5749 1152 1153 1164 1274
+5750 1273 1285 1274 1152
+5751 1285 1274 1164 1152
+5752 1152 1163 1164 1284
+5753 1273 1285 1284 1164
+5754 1284 1164 1152 1273
+5755 1153 1154 1165 1275
+5756 1274 1286 1275 1153
+5757 1286 1275 1165 1153
+5758 1153 1164 1165 1285
+5759 1274 1286 1285 1165
+5760 1285 1165 1153 1274
+5761 1155 1156 1167 1277
+5762 1276 1288 1277 1155
+5763 1288 1277 1167 1155
+5764 1155 1166 1167 1287
+5765 1276 1288 1287 1167
+5766 1287 1167 1155 1276
+5767 1156 1157 1168 1278
+5768 1277 1289 1278 1156
+5769 1289 1278 1168 1156
+5770 1156 1167 1168 1288
+5771 1277 1289 1288 1168
+5772 1288 1168 1156 1277
+5773 1157 1158 1169 1279
+5774 1278 1290 1279 1157
+5775 1290 1279 1169 1157
+5776 1157 1168 1169 1289
+5777 1278 1290 1289 1169
+5778 1289 1169 1157 1278
+5779 1158 1159 1170 1280
+5780 1279 1291 1280 1158
+5781 1291 1280 1170 1158
+5782 1158 1169 1170 1290
+5783 1279 1291 1290 1170
+5784 1290 1170 1158 1279
+5785 1159 1160 1171 1281
+5786 1280 1292 1281 1159
+5787 1292 1281 1171 1159
+5788 1159 1170 1171 1291
+5789 1280 1292 1291 1171
+5790 1291 1171 1159 1280
+5791 1160 1161 1172 1282
+5792 1281 1293 1282 1160
+5793 1293 1282 1172 1160
+5794 1160 1171 1172 1292
+5795 1281 1293 1292 1172
+5796 1292 1172 1160 1281
+5797 1161 1162 1173 1283
+5798 1282 1294 1283 1161
+5799 1294 1283 1173 1161
+5800 1161 1172 1173 1293
+5801 1282 1294 1293 1173
+5802 1293 1173 1161 1282
+5803 1162 1163 1174 1284
+5804 1283 1295 1284 1162
+5805 1295 1284 1174 1162
+5806 1162 1173 1174 1294
+5807 1283 1295 1294 1174
+5808 1294 1174 1162 1283
+5809 1163 1164 1175 1285
+5810 1284 1296 1285 1163
+5811 1296 1285 1175 1163
+5812 1163 1174 1175 1295
+5813 1284 1296 1295 1175
+5814 1295 1175 1163 1284
+5815 1164 1165 1176 1286
+5816 1285 1297 1286 1164
+5817 1297 1286 1176 1164
+5818 1164 1175 1176 1296
+5819 1285 1297 1296 1176
+5820 1296 1176 1164 1285
+5821 1166 1167 1178 1288
+5822 1287 1299 1288 1166
+5823 1299 1288 1178 1166
+5824 1166 1177 1178 1298
+5825 1287 1299 1298 1178
+5826 1298 1178 1166 1287
+5827 1167 1168 1179 1289
+5828 1288 1300 1289 1167
+5829 1300 1289 1179 1167
+5830 1167 1178 1179 1299
+5831 1288 1300 1299 1179
+5832 1299 1179 1167 1288
+5833 1168 1169 1180 1290
+5834 1289 1301 1290 1168
+5835 1301 1290 1180 1168
+5836 1168 1179 1180 1300
+5837 1289 1301 1300 1180
+5838 1300 1180 1168 1289
+5839 1169 1170 1181 1291
+5840 1290 1302 1291 1169
+5841 1302 1291 1181 1169
+5842 1169 1180 1181 1301
+5843 1290 1302 1301 1181
+5844 1301 1181 1169 1290
+5845 1170 1171 1182 1292
+5846 1291 1303 1292 1170
+5847 1303 1292 1182 1170
+5848 1170 1181 1182 1302
+5849 1291 1303 1302 1182
+5850 1302 1182 1170 1291
+5851 1171 1172 1183 1293
+5852 1292 1304 1293 1171
+5853 1304 1293 1183 1171
+5854 1171 1182 1183 1303
+5855 1292 1304 1303 1183
+5856 1303 1183 1171 1292
+5857 1172 1173 1184 1294
+5858 1293 1305 1294 1172
+5859 1305 1294 1184 1172
+5860 1172 1183 1184 1304
+5861 1293 1305 1304 1184
+5862 1304 1184 1172 1293
+5863 1173 1174 1185 1295
+5864 1294 1306 1295 1173
+5865 1306 1295 1185 1173
+5866 1173 1184 1185 1305
+5867 1294 1306 1305 1185
+5868 1305 1185 1173 1294
+5869 1174 1175 1186 1296
+5870 1295 1307 1296 1174
+5871 1307 1296 1186 1174
+5872 1174 1185 1186 1306
+5873 1295 1307 1306 1186
+5874 1306 1186 1174 1295
+5875 1175 1176 1187 1297
+5876 1296 1308 1297 1175
+5877 1308 1297 1187 1175
+5878 1175 1186 1187 1307
+5879 1296 1308 1307 1187
+5880 1307 1187 1175 1296
+5881 1177 1178 1189 1299
+5882 1298 1310 1299 1177
+5883 1310 1299 1189 1177
+5884 1177 1188 1189 1309
+5885 1298 1310 1309 1189
+5886 1309 1189 1177 1298
+5887 1178 1179 1190 1300
+5888 1299 1311 1300 1178
+5889 1311 1300 1190 1178
+5890 1178 1189 1190 1310
+5891 1299 1311 1310 1190
+5892 1310 1190 1178 1299
+5893 1179 1180 1191 1301
+5894 1300 1312 1301 1179
+5895 1312 1301 1191 1179
+5896 1179 1190 1191 1311
+5897 1300 1312 1311 1191
+5898 1311 1191 1179 1300
+5899 1180 1181 1192 1302
+5900 1301 1313 1302 1180
+5901 1313 1302 1192 1180
+5902 1180 1191 1192 1312
+5903 1301 1313 1312 1192
+5904 1312 1192 1180 1301
+5905 1181 1182 1193 1303
+5906 1302 1314 1303 1181
+5907 1314 1303 1193 1181
+5908 1181 1192 1193 1313
+5909 1302 1314 1313 1193
+5910 1313 1193 1181 1302
+5911 1182 1183 1194 1304
+5912 1303 1315 1304 1182
+5913 1315 1304 1194 1182
+5914 1182 1193 1194 1314
+5915 1303 1315 1314 1194
+5916 1314 1194 1182 1303
+5917 1183 1184 1195 1305
+5918 1304 1316 1305 1183
+5919 1316 1305 1195 1183
+5920 1183 1194 1195 1315
+5921 1304 1316 1315 1195
+5922 1315 1195 1183 1304
+5923 1184 1185 1196 1306
+5924 1305 1317 1306 1184
+5925 1317 1306 1196 1184
+5926 1184 1195 1196 1316
+5927 1305 1317 1316 1196
+5928 1316 1196 1184 1305
+5929 1185 1186 1197 1307
+5930 1306 1318 1307 1185
+5931 1318 1307 1197 1185
+5932 1185 1196 1197 1317
+5933 1306 1318 1317 1197
+5934 1317 1197 1185 1306
+5935 1186 1187 1198 1308
+5936 1307 1319 1308 1186
+5937 1319 1308 1198 1186
+5938 1186 1197 1198 1318
+5939 1307 1319 1318 1198
+5940 1318 1198 1186 1307
+5941 1188 1189 1200 1310
+5942 1309 1321 1310 1188
+5943 1321 1310 1200 1188
+5944 1188 1199 1200 1320
+5945 1309 1321 1320 1200
+5946 1320 1200 1188 1309
+5947 1189 1190 1201 1311
+5948 1310 1322 1311 1189
+5949 1322 1311 1201 1189
+5950 1189 1200 1201 1321
+5951 1310 1322 1321 1201
+5952 1321 1201 1189 1310
+5953 1190 1191 1202 1312
+5954 1311 1323 1312 1190
+5955 1323 1312 1202 1190
+5956 1190 1201 1202 1322
+5957 1311 1323 1322 1202
+5958 1322 1202 1190 1311
+5959 1191 1192 1203 1313
+5960 1312 1324 1313 1191
+5961 1324 1313 1203 1191
+5962 1191 1202 1203 1323
+5963 1312 1324 1323 1203
+5964 1323 1203 1191 1312
+5965 1192 1193 1204 1314
+5966 1313 1325 1314 1192
+5967 1325 1314 1204 1192
+5968 1192 1203 1204 1324
+5969 1313 1325 1324 1204
+5970 1324 1204 1192 1313
+5971 1193 1194 1205 1315
+5972 1314 1326 1315 1193
+5973 1326 1315 1205 1193
+5974 1193 1204 1205 1325
+5975 1314 1326 1325 1205
+5976 1325 1205 1193 1314
+5977 1194 1195 1206 1316
+5978 1315 1327 1316 1194
+5979 1327 1316 1206 1194
+5980 1194 1205 1206 1326
+5981 1315 1327 1326 1206
+5982 1326 1206 1194 1315
+5983 1195 1196 1207 1317
+5984 1316 1328 1317 1195
+5985 1328 1317 1207 1195
+5986 1195 1206 1207 1327
+5987 1316 1328 1327 1207
+5988 1327 1207 1195 1316
+5989 1196 1197 1208 1318
+5990 1317 1329 1318 1196
+5991 1329 1318 1208 1196
+5992 1196 1207 1208 1328
+5993 1317 1329 1328 1208
+5994 1328 1208 1196 1317
+5995 1197 1198 1209 1319
+5996 1318 1330 1319 1197
+5997 1330 1319 1209 1197
+5998 1197 1208 1209 1329
+5999 1318 1330 1329 1209
+6000 1329 1209 1197 1318
diff --git a/examples/fem/3Dexample/pgm b/examples/fem/3Dexample/pgm
deleted file mode 100644 (file)
index 730ba17..0000000
Binary files a/examples/fem/3Dexample/pgm and /dev/null differ
diff --git a/examples/fem/3Dexample/pgm.C b/examples/fem/3Dexample/pgm.C
new file mode 100644 (file)
index 0000000..1d5cb45
--- /dev/null
@@ -0,0 +1,1151 @@
+#include "pgm.h"
+#include "mpi.h"
+
+#include "fem_adapt_new.h"
+#include "fem_mesh_modify.h"
+#include "matrix.h"
+
+#define SUMMARY_ON
+
+extern void _registerFEMMeshModify(void);
+
+double getArea(double *n1_coord, double *n2_coord, double *n3_coord) {
+  double area=0.0;
+  double aLen, bLen, cLen, sLen, d, ds_sum;
+
+  ds_sum = 0.0;
+  for (int i=0; i<2; i++) {
+    d = n1_coord[i] - n2_coord[i];
+    ds_sum += d*d;
+  }
+  aLen = sqrt(ds_sum);
+  ds_sum = 0.0;
+  for (int i=0; i<2; i++) {
+    d = n2_coord[i] - n3_coord[i];
+    ds_sum += d*d;
+  }
+  bLen = sqrt(ds_sum);
+  ds_sum = 0.0;
+  for (int i=0; i<2; i++) {
+    d = n3_coord[i] - n1_coord[i];
+    ds_sum += d*d;
+  }
+  cLen = sqrt(ds_sum);
+  sLen = (aLen+bLen+cLen)/2;
+  if(sLen-aLen < 0) return 0.0;
+  else if(sLen-bLen < 0) return 0.0;
+  else if(sLen-cLen < 0) return 0.0; //area too small to note
+  return (sqrt(sLen*(sLen-aLen)*(sLen-bLen)*(sLen-cLen)));
+}
+
+double getVolume(double *n1_coord, double *n2_coord, double *n3_coord, double *n4_coord) {
+  Matrix mtx(4);
+  int i;
+  double vol;
+  
+  for (i=0; i<3; i++) {
+    mtx.setElement(0, i, n1_coord[i]);
+    mtx.setElement(1, i, n2_coord[i]);
+    mtx.setElement(2, i, n3_coord[i]);
+    mtx.setElement(3, i, n4_coord[i]);
+  }
+  for (i=0; i<4; i++)  
+    mtx.setElement(i, 3, 1.0); // set end of row to 1
+
+  vol = mtx.determinant() / 6.0;
+  if (vol < 0.0) vol *= -1.0;
+
+  return vol;
+}
+
+void publish_data_netfem(int i,  myGlobals g) {
+  MPI_Barrier(MPI_COMM_WORLD);
+  if (1) { //Publish data to the net
+    int mesh=FEM_Mesh_default_read(); // Tell framework we are reading data from the mesh
+    int rank = FEM_My_partition();
+    g.nnodes=FEM_Mesh_get_length(mesh,FEM_NODE); // Get number of nodes
+    g.coord=new vector3d[g.nnodes];
+    int count = 0;
+    vector3d *coord = new vector3d[g.nnodes];
+    int *maptovalid = new int[g.nnodes];
+    double *nodeid = new double[g.nnodes];
+    // Get node positions
+    FEM_Mesh_data(mesh, FEM_NODE, FEM_DATA+0, (double*)g.coord, 0, g.nnodes, FEM_DOUBLE, 3);
+    for(int j=0; j<g.nnodes; j++) {
+      if(FEM_is_valid(mesh,FEM_NODE+0,j)) {
+       coord[count].x = g.coord[j].x;
+       coord[count].y = g.coord[j].y;
+       coord[count].z = g.coord[j].z;
+       maptovalid[j] = count;
+       nodeid[count] = j;
+       count++;
+      }
+    }
+    NetFEM n=NetFEM_Begin(rank,i,3,NetFEM_WRITE);
+    NetFEM_Nodes(n,count,(double *)coord,"Position (m)");
+    //NetFEM_Nodes(n,g.nnodes,(double *)g.coord,"Position (m)");
+    NetFEM_Scalar(n,nodeid,1,"Node ID");
+
+    // Get element data
+    g.nelems=FEM_Mesh_get_length(mesh,FEM_ELEM+0); // Get number of elements
+    g.conn=new connRec[g.nelems];
+    connRec *conn = new connRec[g.nelems];
+    double *elid = new double[g.nelems];
+    count = 0;
+    // Get connectivity for elements
+    FEM_Mesh_data(mesh, FEM_ELEM+0, FEM_CONN, (int *)g.conn, 0, g.nelems, FEM_INDEX_0, 4);
+    double totalVolume = 0.0;
+    for(int j=0; j<g.nelems; j++) {
+      if(FEM_is_valid(mesh,FEM_ELEM+0,j)) {
+       conn[count][0] = maptovalid[g.conn[j][0]];
+       conn[count][1] = maptovalid[g.conn[j][1]];
+       conn[count][2] = maptovalid[g.conn[j][2]];
+       conn[count][3] = maptovalid[g.conn[j][3]];
+       elid[count] = j;
+       totalVolume += getVolume(coord[conn[count][0]],coord[conn[count][1]],coord[conn[count][2]],coord[conn[count][3]]);
+       if(totalVolume != totalVolume) {
+         CkPrintf("NAN\n");
+       }
+       count++;
+      }
+    }
+    NetFEM_Elements(n,count,4,(int *)conn,"Tets");
+    //NetFEM_Elements(n,g.nelems,4,(int *)g.conn,"Tets");
+    NetFEM_Scalar(n,elid,1,"Element ID");
+    NetFEM_End(n);
+
+    double finalVolume;
+    CkPrintf("Chunk[%d]: local volume: %.12f\n",rank,totalVolume);
+    MPI_Reduce((void*)&totalVolume,(void*)&finalVolume,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
+    if(rank == 0) CkPrintf("Chunk[%d]: total volume: %.12f\n",rank,finalVolume);
+
+    delete [] g.coord;
+    delete [] g.conn;
+    delete [] coord;
+    delete [] conn;
+    delete [] maptovalid;
+    delete [] nodeid;
+    delete [] elid;
+  }
+}
+
+
+extern "C" void
+init(void)
+{
+  CkPrintf("init started\n");
+  double startTime=CmiWallTimer();
+  const char *eleName="mesh1.tet";//"adpmm/xxx.1.ele";//"88mesh/mesh1.tri";
+  const char *nodeName="mesh1.node";//"adpmm/xxx.1.node";//"88mesh/mesh1.node";
+  int nPts=0; //Number of nodes
+  vector3d *pts=0; //Node coordinates
+  int *bounds;
+
+  CkPrintf("Reading node coordinates from %s\n",nodeName);
+  //Open and read the node coordinate file
+  {
+    char line[1024];
+    FILE *f=fopen(nodeName,"r");
+    if (f==NULL) die("Can't open node file!");
+    fgets(line,1024,f);
+    if (1!=sscanf(line,"%d",&nPts)) die("Can't read number of points!");
+    pts=new vector3d[nPts];
+    bounds = new int[nPts];
+    for (int i=0;i<nPts;i++) {
+      int ptNo;
+      if (NULL==fgets(line,1024,f)) die("Can't read node input line!");
+      if (5!=sscanf(line,"%d%lf%lf%lf%d",&ptNo,&pts[i].x,&pts[i].y,&pts[i].z,&bounds[i])) 
+       die("Can't parse node input line!");
+    }
+    fclose(f);
+  }
+  int nEle=0;
+  connRec *ele=NULL;
+  CkPrintf("Reading elements from %s\n",eleName);
+  //Open and read the element connectivity file
+  {
+    char line[10240];
+    FILE *f=fopen(eleName,"r");
+    if (f==NULL) die("Can't open element file!");
+    fgets(line,1024,f);
+    if (1!=sscanf(line,"%d",&nEle)) die("Can't read number of elements!");
+    ele=new connRec[nEle];
+    for (int i=0;i<nEle;i++) {
+      int elNo;
+      if (NULL==fgets(line,10240,f)) die("Can't read element input line!");
+      if (5!=sscanf(line,"%d%d%d%d%d",&elNo,&ele[i][0],&ele[i][1],&ele[i][2],&ele[i][3])) 
+       die("Can't parse element input line!");  
+      //ele[i][0]--; 
+      //ele[i][1]--; 
+      //ele[i][2]--; 
+      //ele[i][3]--;
+    }
+    fclose(f);
+  }
+
+
+  int fem_mesh=FEM_Mesh_default_write(); // Tell framework we are writing to the mesh
+
+  CkPrintf("Passing node coords to framework\n");
+
+
+  FEM_Mesh_data(fem_mesh,        // Add nodes to the current mesh
+                FEM_NODE,        // We are registering nodes
+                FEM_DATA+0,      // Register the point locations which are normally 
+                                 // the first data elements for an FEM_NODE
+                (double *)pts,   // The array of point locations
+                0,               // 0 based indexing
+                nPts,            // The number of points
+                FEM_DOUBLE,      // Coordinates are doubles
+                3);              // Points have dimension 3 (x,y,z)
+  CkPrintf("Passing node bounds to framework\n");
+
+
+  FEM_Mesh_data(fem_mesh,        // Add nodes to the current mesh
+                FEM_NODE,        // We are registering nodes
+                FEM_BOUNDARY,      // Register the point bound info 
+                                 // the first data elements for an FEM_NODE
+                (int *)bounds,  // The array of point bound info
+                0,               // 0 based indexing
+                nPts,            // The number of points
+                FEM_INT,        // bounds are ints
+                1);              // Points have dimension 1
+
+  CkPrintf("Passing elements to framework\n");
+
+  FEM_Mesh_data(fem_mesh,      // Add nodes to the current mesh
+                FEM_ELEM+0,      // We are registering elements with type 0
+                                 // The next type of element could be registered with FEM_ELEM+1
+                FEM_CONN,        // Register the connectivity table for this
+                                 // data elements for this type of FEM entity
+                (int *)ele,      // The array of point locations
+                0,               // 0 based indexing
+                nEle,            // The number of elements
+                FEM_INDEX_0,     // We use zero based node numbering
+                4);              // Elements have degree 3, since triangles are defined 
+                                 // by three nodes
+
+
+
+  // Register values to the elements so we can keep track of them after partitioning
+  double values[10240];
+  for(int i=0;i<10240;i++)values[i]=i;
+
+  // tets
+  FEM_Mesh_data(fem_mesh,      // Add nodes to the current mesh
+                FEM_ELEM,      // We are registering elements with type 1
+                FEM_DATA,   
+                (int *)values,   // The array of point locations
+                0,               // 0 based indexing
+                nEle,            // The number of elements
+                FEM_DOUBLE,         // We use zero based node numbering
+                1);
+
+  //boundary conditions
+  FEM_Mesh_data(fem_mesh,      // Add nodes to the current mesh
+                FEM_NODE,      // We are registering elements with type 1
+                FEM_BOUNDARY,   
+                (int *)bounds,   // The array of point locations
+                0,               // 0 based indexing
+                nPts,            // The number of elements
+                FEM_INT,         // We use zero based node numbering
+                1);
+
+
+
+  delete[] ele;
+  delete[] pts;
+  delete[] bounds;
+  
+  double *sizingData = new double[nEle];
+  for (int i=0; i<nEle; i++) sizingData[i]=-1.0;
+  FEM_Mesh_data(fem_mesh, FEM_ELEM+0, FEM_MESH_SIZING, sizingData, 0, nEle,
+                  FEM_DOUBLE, 1);
+  delete [] sizingData;
+
+  // add ghost layers
+
+  const int triangleFaces[4] = {0,1,2,3};
+  CkPrintf("Adding Ghost layers\n");
+  FEM_Add_ghost_layer(1,1);
+  FEM_Add_ghost_elem(0,4,triangleFaces);
+
+  CkPrintf("Finished with init (Reading took %.f s)\n",CmiWallTimer()-startTime);
+
+}
+
+
+// A driver() function 
+// driver() is required in all FEM programs
+extern "C" void
+driver(void)
+{
+  int nnodes,nelems,nelems2,ignored;
+  int i, myId=FEM_My_partition();
+  myGlobals g;
+  FEM_Register(&g,(FEM_PupFn)pup_myGlobals);
+  
+  _registerFEMMeshModify();
+
+  printf("partition %d is in driver\n", myId);
+
+  int mesh=FEM_Mesh_default_read(); // Tell framework we are reading data from the mesh
+  
+  // Get node data
+  nnodes=FEM_Mesh_get_length(mesh,FEM_NODE); // Get number of nodes
+  g.nnodes=nnodes;
+  g.coord=new vector3d[nnodes];
+  // Get node positions
+  FEM_Mesh_data(mesh, FEM_NODE, FEM_DATA+0, (double*)g.coord, 0, nnodes, FEM_DOUBLE, 3);
+
+  // Get element data
+  nelems=FEM_Mesh_get_length(mesh,FEM_ELEM+0); // Get number of elements
+  g.nelems=nelems;
+  g.conn=new connRec[nelems];
+  // Get connectivity for elements
+  FEM_Mesh_data(mesh, FEM_ELEM+0, FEM_CONN, (int *)g.conn, 0, nelems, FEM_INDEX_0, 4);
+
+
+  double* tridata =new double[nelems];
+  FEM_Mesh_data(mesh, FEM_ELEM+0, FEM_DATA, (int *)tridata, 0, nelems, FEM_DOUBLE, 1);  
+
+  int nelemsghost=FEM_Mesh_get_length(mesh,FEM_ELEM+0+FEM_GHOST); 
+  double* trighostdata =new double[nelemsghost];
+  FEM_Mesh_data(mesh, FEM_ELEM+0+FEM_GHOST, FEM_DATA, (int *)trighostdata, 0, nelemsghost, FEM_DOUBLE, 1);
+  int nnodesghost=FEM_Mesh_get_length(mesh,FEM_NODE+0+FEM_GHOST);
+  double* nodeghostdata =new double[3*nnodesghost];
+  FEM_Mesh_data(mesh, FEM_NODE+0+FEM_GHOST, FEM_DATA, (int *)nodeghostdata, 0, nnodesghost, FEM_DOUBLE, 3);
+
+
+  {
+    const int triangleFaces[12] = {0,1,2,1,2,3,2,3,0,0,3,1};
+    FEM_Add_elem2face_tuples(mesh, 0, 3, 4, triangleFaces);
+    FEM_Mesh_create_elem_elem_adjacency(mesh);
+    FEM_Mesh_allocate_valid_attr(mesh, FEM_ELEM+0);
+    FEM_Mesh_allocate_valid_attr(mesh, FEM_NODE);
+    FEM_Mesh_create_node_elem_adjacency(mesh);
+    FEM_Mesh_create_node_node_adjacency(mesh);
+    
+    int netIndex = 0;
+    publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+    FEM_Print_Mesh_Summary(mesh);
+#endif
+    int rank = 0;
+    MPI_Comm comm = MPI_COMM_WORLD;
+    MPI_Comm_rank(comm,&rank);
+    
+    MPI_Barrier(comm);
+    FEM_REF_INIT(mesh);
+    
+    FEM_Mesh *meshP = FEM_Mesh_lookup(FEM_Mesh_default_read(),"driver");
+    FEM_AdaptL *ada = meshP->getfmMM()->getfmAdaptL();
+    int ret_op = -1;
+    
+    FEM_Adapt_Algs *adaptAlgs= meshP->getfmMM()->getfmAdaptAlgs();
+    adaptAlgs->FEM_Adapt_Algs_Init(FEM_DATA+0,FEM_DATA+4);
+    FEM_Interpolate *interp = meshP->getfmMM()->getfmInp();
+    //interp->FEM_SetInterpolateNodeEdgeFnPtr(interpolate);
+    
+    MPI_Barrier(comm);
+    
+    //CkPrintf("Shadow arrays have been bound\n");
+    /*
+#ifdef SUMMARY_ON
+    FEM_Print_Mesh_Summary(mesh);
+#endif
+    
+    CkPrintf("Marking 5 nodes and one element as invalid\n");
+    FEM_set_entity_invalid(mesh, FEM_NODE, 5);
+    FEM_set_entity_invalid(mesh, FEM_NODE, 6);
+    FEM_set_entity_invalid(mesh, FEM_NODE, 7);
+    FEM_set_entity_invalid(mesh, FEM_NODE, 8);
+    FEM_set_entity_invalid(mesh, FEM_NODE, 9); 
+    FEM_set_entity_invalid(mesh, FEM_ELEM, 9);
+    
+#ifdef SUMMARY_ON
+    FEM_Print_Mesh_Summary(mesh);
+#endif
+    
+    CkPrintf("Marking 5 nodes and one element as valid again\n");
+    FEM_set_entity_valid(mesh, FEM_NODE, 5);
+    FEM_set_entity_valid(mesh, FEM_NODE, 6);
+    FEM_set_entity_valid(mesh, FEM_NODE, 7);
+    FEM_set_entity_valid(mesh, FEM_NODE, 8);
+    FEM_set_entity_valid(mesh, FEM_NODE, 9);   
+    FEM_set_entity_valid(mesh, FEM_ELEM, 9);
+    */
+#ifdef SUMMARY_ON
+    FEM_Print_Mesh_Summary(mesh);
+#endif
+    
+    int adjs[4];
+    int elemid;
+       if(rank == 0) {
+         adjs[0] = 0;
+         adjs[1] = 1;
+         adjs[2] = 2;
+         adjs[3] = 3;
+         elemid = 0;
+       } else if(rank == 1) {
+         adjs[0] = 19;
+         adjs[1] = 5;
+         adjs[2] = 7;
+         adjs[3] = 21;
+         elemid = 21;
+       } else if(rank == 2) {
+         adjs[0] = 8;
+         adjs[1] = 11;
+         adjs[2] = 6;
+         adjs[3] = 21;
+         elemid = 7;
+       } else {
+         adjs[0] = 0;
+         adjs[1] = 1;
+         adjs[2] = 2;
+         adjs[3] = 3;
+         elemid = 0;
+       }
+       int newel1 = 0;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+       FEM_Print_n2e(mesh,adjs[0]);
+       FEM_Print_n2e(mesh,adjs[1]);
+       FEM_Print_n2e(mesh,adjs[2]);
+       FEM_Print_n2e(mesh,adjs[3]);
+       FEM_Print_n2n(mesh,adjs[0]);
+       FEM_Print_n2n(mesh,adjs[1]);
+       FEM_Print_n2n(mesh,adjs[2]);
+       FEM_Print_n2n(mesh,adjs[3]);
+       FEM_Print_e2n(mesh,elemid);
+       FEM_Print_e2e(mesh,elemid);
+#endif
+
+       //FEM_Modify_Lock(mesh, adjs, 3, adjs, 0);
+       if(rank == 0) {
+         FEM_remove_element(mesh, elemid, 0, 1);
+       }
+       //FEM_Modify_Unlock(mesh);
+       MPI_Barrier(comm);
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+
+       //FEM_Modify_Lock(mesh, adjs, 3, adjs, 0);
+       if(rank == 0) {
+         newel1 = FEM_add_element(mesh,adjs,4,0,0);
+         CkPrintf("New Element\n");
+       }
+       //FEM_Modify_Unlock(mesh);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+       FEM_Print_n2e(mesh,adjs[0]);
+       FEM_Print_n2e(mesh,adjs[1]);
+       FEM_Print_n2e(mesh,adjs[2]);
+       FEM_Print_n2e(mesh,adjs[3]);
+       FEM_Print_n2n(mesh,adjs[0]);
+       FEM_Print_n2n(mesh,adjs[1]);
+       FEM_Print_n2n(mesh,adjs[2]);
+       FEM_Print_n2n(mesh,adjs[3]);
+       FEM_Print_e2n(mesh,newel1);
+       FEM_Print_e2e(mesh,newel1);
+#endif
+       /*
+       if(rank==0){
+         FEM_Print_Mesh_Summary(mesh);
+         CkPrintf("%d: Removing element \n", rank);
+         
+         int nelemsghost   =FEM_Mesh_get_length(mesh,FEM_ELEM+0+FEM_GHOST); 
+         int numvalidghost =FEM_count_valid(mesh,FEM_ELEM+0+FEM_GHOST);
+         CkPrintf("nelemsghost=%d numvalidghost=%d\n", nelemsghost, numvalidghost);
+       
+         for(int i=1;i<20;i++){
+               if(FEM_is_valid(mesh, FEM_ELEM+FEM_GHOST, i)){
+                 double data[1];
+                 FEM_Mesh_data(mesh, FEM_ELEM+FEM_GHOST, FEM_DATA, (int *)data, i, 1, FEM_DOUBLE, 1);  
+
+                 CkPrintf("%d: Eating ghost element %d with value %f\n", rank, i, data[1]);
+                 int conn[3];
+                 
+                 FEM_Mesh_data(mesh, FEM_ELEM+FEM_GHOST, FEM_CONN, (int *)conn, i, 1, FEM_INDEX_0, 3);
+                 CkPrintf("conn for element is: %d %d %d\n", conn[0], conn[1], conn[2]);
+                 FEM_Modify_Lock(mesh, conn, 3, conn, 0);
+                 FEM_remove_element(mesh, FEM_From_ghost_index(i), 0, 1);
+                 FEM_Modify_Unlock(mesh);
+
+                 MPI_Barrier(comm);
+                 FEM_Print_Mesh_Summary(mesh);
+
+                 FEM_Modify_Lock(mesh, conn, 3, conn, 0);
+                 FEM_add_element(mesh, conn, 3, 0, rank); // add locally
+                 FEM_Modify_Unlock(mesh);
+                 CkPrintf("New conn for element is: %d %d %d\n", conn[0], conn[1], conn[2]);
+                 
+                 publish_data_netfem(netIndex,g); netIndex++;
+                 FEM_Print_Mesh_Summary(mesh);
+               }
+               else{
+                 //  CkPrintf("invalid element %d\n", i);
+               }
+         }
+       }
+       else {
+         CkPrintf("Rank %d\n", rank);
+         for(int i=1;i<20;i++){
+           MPI_Barrier(comm);
+           FEM_Print_Mesh_Summary(mesh);
+
+           publish_data_netfem(netIndex,g); netIndex++;
+           FEM_Print_Mesh_Summary(mesh);
+         }
+       }
+       
+       publish_data_netfem(netIndex,g); netIndex++;
+       */      
+
+       /*
+       CkPrintf("Starting Local edge flips on individual chunks\n");
+       int flip[4];
+       if(rank == 0) {
+         flip[0] = 1;
+         flip[1] = 2;
+         flip[2] = 0;
+         flip[3] = 3;
+       }
+       else if(rank == 1) {
+         flip[0] = 1;
+         flip[1] = 2;
+         flip[2] = 0;
+         flip[3] = 4;
+       }
+       else if(rank == 2) {
+         flip[0] = 13;
+         flip[1] = 14;
+         flip[2] = 15;
+         flip[3] = 7;
+       }
+       else {
+         flip[0] = 0;
+         flip[1] = 1;
+         flip[2] = 2;
+         flip[3] = 3;
+       }
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->edge_flip(flip[0],flip[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       ret_op = ada->edge_flip(flip[2],flip[3]);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       
+       CkPrintf("Starting shared edge flips on individual chunks\n");
+       int sflip[4];
+       if(rank == 0) {
+         sflip[0] = 19;
+         sflip[1] = 18;
+         sflip[2] = 1;
+         sflip[3] = -4;
+       }
+       else if(rank == 1) {
+         sflip[0] = 5;
+         sflip[1] = 6;
+         sflip[2] = 7;
+         sflip[3] = -5;
+       }
+       else if(rank == 2) {
+         sflip[0] = 11;
+         sflip[1] = 2;
+         sflip[2] = 0;
+         sflip[3] = -2;
+       }
+       else {
+         sflip[0] = 0;
+         sflip[1] = 1;
+         sflip[2] = 2;
+         sflip[3] = 3;
+       }
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->edge_flip(sflip[0],sflip[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       if(ret_op > 0) {
+         if(sflip[2]<0) sflip[2] = ret_op;
+         else if(sflip[3]<0) sflip[3] = ret_op;
+       }
+       ret_op = ada->edge_flip(sflip[2],sflip[3]);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       
+       CkPrintf("Starting Local edge bisect on individual chunks\n");
+       int bisect[2];
+       if(rank == 0) {
+         bisect[0] = 16;
+         bisect[1] = 21;
+       }
+       else if(rank == 1) {
+         bisect[0] = 5;
+         bisect[1] = 6;
+       }
+       else if(rank == 2) {
+         bisect[0] = 8;
+         bisect[1] = 11;
+       }
+       else {
+         bisect[0] = 0;
+         bisect[1] = 1;
+       }
+       if(rank==2) ret_op = ada->edge_bisect(bisect[0],bisect[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       adaptAlgs->tests();
+       MPI_Barrier(comm);
+       
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       
+       CkPrintf("Starting Local vertex remove on individual chunks\n");
+       int vr[2];
+       if(rank == 0) {
+         vr[0] = ret_op;
+         vr[1] = 6;
+       }
+       else if(rank == 1) {
+         vr[0] = ret_op;
+         vr[1] = 13;
+       }
+       else if(rank == 2) {
+         vr[0] = ret_op;
+         vr[1] = 21;
+       }
+       else {
+         vr[0] = ret_op;
+         vr[1] = 1;
+       }
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->vertex_remove(vr[0],vr[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       
+       
+       CkPrintf("Starting shared edge bisect on individual chunks\n");
+       int sbisect[2];
+       if(rank == 0) {
+         sbisect[0] = 1;//4;//21;
+         sbisect[1] = 19;//20;
+       }
+       else if(rank == 1) {
+         sbisect[0] = 0;
+         sbisect[1] = 21;
+       }
+       else if(rank == 2) {
+         sbisect[0] = 20;//9;//3;
+         sbisect[1] = 8;//2;//19;
+       }
+       else {
+         sbisect[0] = 0;
+         sbisect[1] = 1;
+       }
+       
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->edge_bisect(sbisect[0],sbisect[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       CkPrintf("Starting shared vertex remove on individual chunks\n");
+
+       int svr[2];
+       if(rank == 0) {
+         svr[0] = ret_op;
+         svr[1] = 19;
+       }
+       else if(rank == 1) {
+         svr[0] = ret_op;
+         svr[1] = 21;
+       }
+       else if(rank == 2) {
+         svr[0] = ret_op;
+         svr[1] = 20;
+       }
+       else {
+         svr[0] = ret_op;
+         svr[1] = 1;
+       }
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->vertex_remove(svr[0],svr[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+
+       CkPrintf("Starting Local edge contract on individual chunks\n");
+       int contract[2];
+       if(rank == 0) {
+         contract[1] = 16;
+         contract[0] = 21;
+       }
+       else if(rank == 1) {
+         contract[0] = 5;
+         contract[1] = 6;
+       }
+       else if(rank == 2) {
+         contract[0] = 19;
+         contract[1] = 17;
+       }
+       else {
+         contract[0] = 0;
+         contract[1] = 1;
+       }
+       
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       if(rank==0) ret_op = ada->edge_contraction(contract[0],contract[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+
+       //CkPrintf("Starting Local vertex split on individual chunks\n");
+       /*
+       int vs[3];
+       if(rank == 0) {
+         vs[0] = ret_op;
+         vs[1] = 9;
+         vs[2] = 13;
+       }
+       else if(rank == 1) {
+         vs[0] = ret_op;
+         vs[1] = 8;
+         vs[2] = 7;
+       }
+       else if(rank == 2) {
+         vs[0] = ret_op;
+         vs[1] = 14;
+         vs[2] = 23;
+       }
+       else {
+         vs[0] = ret_op;
+         vs[1] = 2;
+         vs[2] = 3;
+       }
+#ifdef SUMMARY_ON
+       //FEM_Print_Mesh_Summary(mesh);
+#endif
+       //ret_op = ada->vertex_split(vs[0],vs[1],vs[2]);
+       //publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       */
+       /*
+       CkPrintf("Starting shared edge contract on individual chunks\n");
+       int scontract[2];
+       if(rank == 0) {
+         scontract[0] = 9;
+         scontract[1] = 10;
+       }
+       else if(rank == 1) {
+         scontract[0] = 5;
+         scontract[1] = 6;
+       }
+       else if(rank == 2) {
+         scontract[0] = 11;
+         scontract[1] = 2;
+       }
+       else {
+         scontract[0] = 0;
+         scontract[1] = 1;
+       }
+       
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ret_op = ada->edge_contraction(scontract[0],scontract[1]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       /*
+       //CkPrintf("Starting shared vertex split on individual chunks\n");
+       int svs[3];
+       if(rank == 0) {
+         svs[0] = ret_op;
+         svs[1] = 1;
+         svs[2] = -6;
+       }
+       else if(rank == 1) {
+         svs[0] = ret_op;
+         svs[1] = 7;
+         svs[2] = 7;
+       }
+       else if(rank == 2) {
+         svs[0] = ret_op;
+         svs[1] = 0;
+         svs[2] = -2;
+       }
+       else {
+         svs[0] = ret_op;
+         svs[1] = 2;
+         svs[2] = 3;
+       }
+#ifdef SUMMARY_ON
+       //FEM_Print_Mesh_Summary(mesh);
+#endif
+       //ret_op = ada->vertex_split(svs[0],svs[1],svs[2]);
+       //publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       */
+
+       /*
+       CkPrintf("Starting LEB on individual chunks\n");
+       int *leb_elem = (int*)malloc(1*sizeof(int));
+       if(rank==0) {
+         leb_elem[0] = 2;
+       }
+       else if(rank==1) {
+         leb_elem[0] = 13; //4;
+       }
+       else if(rank==2) {
+         leb_elem[0] = 20; //26;
+       }
+       else if (rank == 3){
+         leb_elem[0] = 14;
+       }
+       else {
+         leb_elem[0] = 0;
+       }
+
+       adaptAlgs->refine_element_leb(leb_elem[0]);
+       publish_data_netfem(netIndex,g); netIndex++;
+       */
+       /*
+         int nEle;
+         //for(int tstep = 0; tstep < 2; tstep++) {
+         nEle = FEM_Mesh_get_length(mesh, FEM_ELEM);   
+         for (int i=0; i<nEle; i++)
+         if (FEM_is_valid(mesh, FEM_ELEM, i))
+         adaptAlgs->refine_element_leb(i);
+         publish_data_netfem(netIndex,g); netIndex++;
+         FEM_Print_Mesh_Summary(mesh);
+         //}
+         */
+
+      
+      double targetArea = 0.00004;
+      
+      for(int tstep = 0; tstep < 0; tstep++) {
+       adaptAlgs->simple_refine(targetArea);
+       publish_data_netfem(netIndex,g); netIndex++;
+       adaptAlgs->tests();
+       MPI_Barrier(comm);
+       
+       //int *nodes = new int[g.nnodes];
+       //for (int i=0; i<g.nnodes; i++) nodes[i]=i;    
+       //FEM_mesh_smooth(mesh, nodes, g.nnodes, FEM_DATA+0);
+       //publish_data_netfem(netIndex,g); netIndex++;
+       //delete [] nodes;
+
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       adaptAlgs->simple_coarsen(targetArea);
+       publish_data_netfem(netIndex,g); netIndex++;
+       adaptAlgs->tests();
+       MPI_Barrier(comm);
+       
+       //int *nodes = new int[g.nnodes];
+       //for (int i=0; i<g.nnodes; i++) nodes[i]=i;
+       //FEM_mesh_smooth(mesh, nodes, g.nnodes, FEM_DATA+0);
+       //publish_data_netfem(netIndex,g); netIndex++;
+       //delete [] nodes;
+
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+      }
+
+      targetArea = 0.00004;
+      
+      for(int tstep = 0; tstep < 0; tstep++) {
+       adaptAlgs->simple_refine(targetArea);
+       publish_data_netfem(netIndex,g); netIndex++;
+       adaptAlgs->tests();
+       MPI_Barrier(comm);
+       
+       //int *nodes = new int[g.nnodes];
+       //for (int i=0; i<g.nnodes; i++) nodes[i]=i;    
+       //FEM_mesh_smooth(mesh, nodes, g.nnodes, FEM_DATA+0);
+       //publish_data_netfem(netIndex,g); netIndex++;
+       //delete [] nodes;
+
+
+       targetArea *= 0.5;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+      }
+      targetArea /= 0.4;
+      
+      for(int tstep = 0; tstep < 0; tstep++) {
+       adaptAlgs->simple_coarsen(targetArea);
+       publish_data_netfem(netIndex,g); netIndex++;
+       adaptAlgs->tests();
+       MPI_Barrier(comm);
+       
+       //int *nodes = new int[g.nnodes];
+       //for (int i=0; i<g.nnodes; i++) nodes[i]=i;
+       //FEM_mesh_smooth(mesh, nodes, g.nnodes, FEM_DATA+0);
+       //publish_data_netfem(netIndex,g); netIndex++;
+       //delete [] nodes;
+
+       targetArea *= 1.5;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+      }
+
+      //wave propagation on a bar
+      targetArea = 0.00004;
+      double xmin = 0.00;
+      double xmax = 0.1;
+      double ymin = 0.00;
+      double ymax = 0.01;
+      for(int tstep = 0; tstep < 0; tstep++) {
+       targetArea = 0.000002;
+       adaptAlgs->simple_refine(targetArea, xmin, ymin, xmax, ymax);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       targetArea = 0.0000014;
+       adaptAlgs->simple_coarsen(targetArea, xmin, ymin, xmax, ymax);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       ymin += 0.01;
+       ymax += 0.01;
+      }
+
+      //crack propagation on a block
+      targetArea = 0.00004;
+      xmin = 0.00;
+      xmax = 0.2;
+      double xcrackmin = 0.09;
+      double xcrackmax = 0.10;
+      ymin = 0.00;
+      ymax = 0.02;
+      for(int tstep = 0; tstep < 0; tstep++) {
+       targetArea = 0.000025;
+       adaptAlgs->simple_refine(targetArea, xmin, ymin, xmax, ymax);
+       publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       targetArea = 0.00005;
+       adaptAlgs->simple_coarsen(targetArea, xmin, ymin, xmax, ymax);
+       //publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+       FEM_Print_Mesh_Summary(mesh);
+#endif
+       /*if(tstep > 2) {
+         targetArea = 0.000025;
+         adaptAlgs->simple_refine(targetArea, xcrackmin, ymin, xcrackmax, ymax);
+         //publish_data_netfem(netIndex,g); netIndex++;
+#ifdef SUMMARY_ON
+         FEM_Print_Mesh_Summary(mesh);
+#endif
+         xcrackmin -= 0.004;
+         xcrackmax += 0.004;
+       }
+       */
+
+       ymin += 0.02;
+       ymax += 0.02;
+      }
+
+
+      CkPrintf("chunk %d Waiting for Synchronization\n",rank);
+      MPI_Barrier(comm);
+      CkPrintf("Synchronized\n");
+#ifdef SUMMARY_ON
+      FEM_Print_Mesh_Summary(mesh);
+#endif
+      publish_data_netfem(netIndex,g); netIndex++;
+      
+      CkExit();
+  }
+  
+}
+
+
+// A PUP function to allow for migration and load balancing of mesh partitions.
+// The PUP function is not needed if no migration or load balancing is desired.
+void pup_myGlobals(pup_er p,myGlobals *g) 
+{
+  FEM_Print("-------- called pup routine -------");
+  pup_int(p,&g->nnodes);
+  pup_int(p,&g->nelems);
+  int nnodes=g->nnodes, nelems=g->nelems;
+  if (pup_isUnpacking(p)) {
+    g->coord=new vector3d[nnodes];
+    g->conn=new connRec[nelems];
+    //g->R_net=new vector3d[nnodes]; //Net force
+    //g->d=new vector3d[nnodes];//Node displacement
+    //g->v=new vector3d[nnodes];//Node velocity
+    //g->a=new vector3d[nnodes];
+    //g->S11=new double[nelems];
+    //g->S22=new double[nelems];
+    //g->S12=new double[nelems];
+  }
+  pup_doubles(p,(double *)g->coord,2*nnodes);
+  pup_ints(p,(int *)g->conn,3*nelems);
+  //pup_doubles(p,(double *)g->R_net,3*nnodes);
+  //pup_doubles(p,(double *)g->d,3*nnodes);
+  //pup_doubles(p,(double *)g->v,3*nnodes);
+  //pup_doubles(p,(double *)g->a,3*nnodes);
+  //pup_doubles(p,(double *)g->S11,nelems);
+  //pup_doubles(p,(double *)g->S22,nelems);
+  //pup_doubles(p,(double *)g->S12,nelems);
+  if (pup_isDeleting(p)) {
+    delete[] g->coord;
+    delete[] g->conn;
+    //delete[] g->R_net;
+    //delete[] g->d;
+    //delete[] g->v;
+    //delete[] g->a;
+    //delete[] g->S11;
+    //delete[] g->S22;
+    //delete[] g->S12;
+  }
+}
+
+
+void FEM_mesh_smooth(int mesh, int *nodes, int nNodes, int attrNo)
+{
+  vector3d *centroids, newPos, *coords, *ghostCoords, *vGcoords;
+  int nEle, nGn, *boundVals, nodesInChunk, nVg;
+  int neighbors[3], *adjelems;
+  int gIdxN;
+  int j=0;
+  double x[3], y[3];
+  FEM_Mesh *meshP = FEM_Mesh_lookup(mesh, "driver");
+
+  nodesInChunk = FEM_Mesh_get_length(mesh,FEM_NODE);
+  boundVals = new int[nodesInChunk];
+  nGn = FEM_Mesh_get_length(mesh, FEM_GHOST + FEM_NODE);
+  coords = new vector3d[nodesInChunk+nGn];
+
+  FEM_Mesh_data(mesh, FEM_NODE, FEM_BOUNDARY, (int*) boundVals, 0, nodesInChunk, FEM_INT, 1);    
+
+  FEM_Mesh_data(mesh, FEM_NODE, attrNo, (double*)coords, 0, nodesInChunk, FEM_DOUBLE, 2);
+  for (int i=0; i<(nodesInChunk); i++) {
+    //CkPrintf(" coords[%d]: (%f, %f)\n", i, coords[i].x, coords[i].y);
+  }
+  IDXL_Layout_t coord_layout = IDXL_Layout_create(IDXL_DOUBLE, 2);
+  FEM_Update_ghost_field(coord_layout,-1, coords); 
+  ghostCoords = &(coords[nodesInChunk]);
+  /*
+  for (int i=0; i<nGn;i++) {
+    if (FEM_is_valid(mesh, FEM_GHOST+FEM_NODE, i)) {
+      CkPrintf("ghost %d is valid \n", i);       
+      // vGcoords[j]=ghostCoords[i];
+      //j++;
+    }
+    else
+      CkPrintf("ghost %d is invalid \n", i);
+  }
+  */
+  for (int i=0; i<(nodesInChunk+nGn); i++) {
+    //CkPrintf(" coords[%d]: (%f, %f)\n", i, coords[i].x, coords[i].y);
+  }
+//  FEM_Mesh_data(FEM_Mesh_default_write(), FEM_GHOST+FEM_NODE, attrNo, (double*)ghostCoords, 0, nGn, FEM_DOUBLE, 2);
+  for (int i=0; i<nNodes; i++)
+  {
+    newPos.x=0;
+    newPos.y=0;
+    CkAssert(nodes[i]<nodesInChunk);    
+    if (FEM_is_valid(mesh, FEM_NODE, i) && boundVals[i]>-1) //node must be internal
+    {
+      meshP->n2e_getAll(i, &adjelems, &nEle);
+      centroids = new vector3d[nEle];
+      
+      for (int j=0; j<nEle; j++) { //for all adjacent elements, find centroids
+       meshP->e2n_getAll(adjelems[j], neighbors);
+       for (int k=0; k<3; k++) {
+         if (neighbors[k]<-1) {
+           gIdxN = FEM_From_ghost_index(neighbors[k]);
+           x[k] = ghostCoords[gIdxN].x;
+           y[k] = ghostCoords[gIdxN].y;
+         }
+         else {
+           x[k] = coords[neighbors[k]].x;
+           y[k] = coords[neighbors[k]].y;
+         }
+       }     
+       centroids[j].x=(x[0]+x[1]+x[2])/3.0;
+       centroids[j].y=(y[0]+y[1]+y[2])/3.0;
+       newPos.x += centroids[j].x;
+       newPos.y += centroids[j].y;
+      }
+      newPos.x/=nEle;
+      newPos.y/=nEle;
+      FEM_set_entity_coord2(mesh, FEM_NODE, nodes[i], newPos.x, newPos.y);
+      delete [] centroids;
+      delete [] adjelems;
+    }
+  }
+  delete [] coords;
+  delete [] boundVals;
+}
+
+void interpolate(FEM_Interpolate::NodalArgs args, FEM_Mesh *meshP)
+{
+  //CkPrintf("INTERPOLATOR!!!!!!!!!!!\n");
+  int length = meshP->node.realsize();
+  int *boundVals= new int[length];
+
+  FEM_Mesh_dataP(meshP, FEM_NODE, FEM_BOUNDARY, (int*) boundVals, 0, length , FEM_INT, 1);   
+  CkVec<FEM_Attribute *>*attrs = (meshP->node).getAttrVec();
+  for (int i=0; i<attrs->size(); i++) {
+    FEM_Attribute *a = (FEM_Attribute *)(*attrs)[i];
+    if (a->getAttr() < FEM_ATTRIB_TAG_MAX || a->getAttr()==FEM_BOUNDARY) {
+      if (a->getAttr()==FEM_BOUNDARY) {
+       
+       int n1_bound =boundVals[args.nodes[0]]; 
+       int n2_bound =boundVals[args.nodes[1]]; 
+       if (n1_bound == n2_bound && n1_bound < 0) {
+         a->copyEntity(args.n, *a, args.nodes[0]);
+       } else if (n1_bound != n2_bound && n1_bound<0 && n2_bound < 0){
+         a->copyEntity(args.n, *a, args.nodes[0]); //a node which is not on the boundary
+       } else  if(n1_bound < 0){
+         a->copyEntity(args.n, *a, args.nodes[1]); 
+       } else {
+         a->copyEntity(args.n, *a, args.nodes[0]); 
+       }
+      }
+      else {
+       FEM_DataAttribute *d = (FEM_DataAttribute *)a;
+       d->interpolate(args.nodes[0], args.nodes[1], args.n, args.frac);
+      }
+    }
+  }
+  delete boundVals;
+}
+
+
+
diff --git a/examples/fem/3Dexample/pgm.h b/examples/fem/3Dexample/pgm.h
new file mode 100644 (file)
index 0000000..22d0e94
--- /dev/null
@@ -0,0 +1,56 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include "charm++.h"
+#include "fem.h"
+#include "netfem.h"
+#include "vector3d.h"
+#include "fem_interpolate.h"
+
+
+//One element's connectivity information
+typedef int connRec[4];
+
+// A structure for handling data that may need to be migrated
+struct myGlobals {
+  int nnodes;
+  int nelems;
+  vector3d *coord;
+  connRec *conn;
+
+  vector3d *R_net, *d, *v, *a;
+  
+  double *S11, *S22, *S12;
+};
+
+void FEM_mesh_smooth(int mesh, int *nodes, int nNodes, int attrNo);
+
+void interpolate(FEM_Interpolate::NodalArgs args,FEM_Mesh *meshP);
+//Compute forces on constant-strain triangles:
+void CST_NL(const vector3d *coor,const connRec *lm,vector3d *R_net,
+           const vector3d *d,const double *c,
+           int numnp,int numel,
+           double *S11o,double *S22o,double *S12o);
+
+// Prototypes
+void advanceNodes(const double dt,int nnodes,const vector3d *coord,
+                  vector3d *R_net,vector3d *a,vector3d *v,vector3d *d,bool dampen);
+
+void pup_myGlobals(pup_er p,myGlobals *g);
+
+//The material constants c, as computed by fortran mat_const
+// I think the units here are Pascals (N/m^2)
+const double matConst[4]={3.692e9,  1.292e9,  3.692e9,  1.200e9 };
+
+//The timestep, in seconds
+const double dt=1.0e-9;
+
+// A convenient error function
+static void die(const char *str) {
+  CkError("Fatal error: %s\n",str);
+  CkExit();
+}
+
+
+
+#define NANCHECK 1 /*Check for NaNs at each timestep*/
diff --git a/examples/fem/3Dexample/pgm.o b/examples/fem/3Dexample/pgm.o
deleted file mode 100644 (file)
index 2cb95f1..0000000
Binary files a/examples/fem/3Dexample/pgm.o and /dev/null differ
diff --git a/examples/fem/3Dexample/vector3d.h b/examples/fem/3Dexample/vector3d.h
new file mode 100644 (file)
index 0000000..69a9495
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+Orion's Standard Library
+Orion Sky Lawlor, 11/3/1999
+NAME:          vector3d.h
+
+DESCRIPTION:   C++ 3-Dimentional vector library (no templates)
+
+This file provides various utility routines for easily
+manipulating 3-D vectors-- included are arithmetic,
+dot/cross product, magnitude and normalization terms. 
+Most routines are provided right in the header file (for inlining).
+*/
+
+#ifndef __OSL_VECTOR_3D_H
+#define __OSL_VECTOR_3D_H
+
+typedef double real;
+
+class vector3d;
+//Polar3d is a point expressed in a 3D spherical coordinate system--
+// theta is the angle (right-handed about +z) in the x-y axis (longitude);
+// phi is the angle up (toward +z) from the x-y axis (latitude);
+// r is the distance of the point from the origin.
+class polar3d {
+public:
+       real theta, phi;//Angles in radians
+       real r;//Distance from origin
+//Nothing too useful can be done here, except convert to/from a vector3d (see below)
+       polar3d() {} //Default constructor
+       polar3d(real Nt,real Np,real Nr) {theta=Nt;phi=Np;r=Nr;}
+       polar3d(const vector3d &v);
+};
+
+//Vector3d is a cartesian vector in 3-space-- an x, y, and z.
+// For cross products, the space is assumed to be right-handed (x cross y = +z)
+class vector3d {
+public:
+       real x,y,z;
+       vector3d(void) {}//Default consructor
+       //Simple 1-value constructor
+       explicit vector3d(const real init) {x=y=z=init;}
+       //Simple 1-value constructor
+       explicit vector3d(int init) {x=y=z=init;}
+       //3-value constructor
+       vector3d(const real Nx,const real Ny,const real Nz) {x=Nx;y=Ny;z=Nz;}
+       //Real array constructor
+       vector3d(const real *arr) {x=arr[0];y=arr[1];z=arr[2];}
+       //Copy constructor
+       vector3d(const vector3d &copy) {x=copy.x;y=copy.y;z=copy.z;}
+       //Polar coordinate constructor
+       vector3d(const polar3d &p);
+       vector3d &operator=(const vector3d &b) {x=b.x;y=b.y;z=b.z;return *this;}
+
+       
+       //This lets you typecast a vector to a real array
+       operator real *() {return (real *)&x;}
+       operator const real *() const {return (const real *)&x;}
+
+//Basic mathematical operators 
+       int operator==(const vector3d &b) const {return (x==b.x)&&(y==b.y)&&(z==b.z);}
+       int operator!=(const vector3d &b) const {return (x!=b.x)||(y!=b.y)||(z!=b.z);}
+       vector3d operator+(const vector3d &b) const {return vector3d(x+b.x,y+b.y,z+b.z);}
+       vector3d operator-(const vector3d &b) const {return vector3d(x-b.x,y-b.y,z-b.z);}
+       vector3d operator*(const real scale) const 
+               {return vector3d(x*scale,y*scale,z*scale);}
+       friend vector3d operator*(const real scale,const vector3d &v)
+               {return vector3d(v.x*scale,v.y*scale,v.z*scale);}
+       vector3d operator/(const real &div) const
+               {real scale=1.0/div;return vector3d(x*scale,y*scale,z*scale);}
+       vector3d operator-(void) const {return vector3d(-x,-y,-z);}
+       void operator+=(const vector3d &b) {x+=b.x;y+=b.y;z+=b.z;}
+       void operator-=(const vector3d &b) {x-=b.x;y-=b.y;z-=b.z;}
+       void operator*=(const real scale) {x*=scale;y*=scale;z*=scale;}
+       void operator/=(const real div) {real scale=1.0/div;x*=scale;y*=scale;z*=scale;}
+
+//Vector-specific operations
+       //Return the square of the magnitude of this vector
+       real magSqr(void) const {return x*x+y*y+z*z;}
+       //Return the magnitude (length) of this vector
+       real mag(void) const {return sqrt(magSqr());}
+       
+       //Return the square of the distance to the vector b
+       real distSqr(const vector3d &b) const 
+               {return (x-b.x)*(x-b.x)+(y-b.y)*(y-b.y)+(z-b.z)*(z-b.z);}
+       //Return the distance to the vector b
+       real dist(const vector3d &b) const {return sqrt(distSqr(b));}
+       
+       //Return the dot product of this vector and b
+       real dot(const vector3d &b) const {return x*b.x+y*b.y+z*b.z;}
+       //Return the cosine of the angle between this vector and b
+       real cosAng(const vector3d &b) const {return dot(b)/(mag()*b.mag());}
+       
+       //Return the "direction" (unit vector) of this vector
+       vector3d dir(void) const {return (*this)/mag();}
+       //Return the right-handed cross product of this vector and b
+       vector3d cross(const vector3d &b) const;
+       
+       //Return the largest coordinate in this vector
+       real max(void);
+       //Make each of this vector's coordinates at least as big
+       // as the given vector's coordinates.
+       void enlarge(const vector3d &by);
+};
+
+//An axis-aligned 3D bounding box
+class bbox3d {
+public:
+       vector3d min,max;
+       bbox3d() {empty();}
+       void empty(void) {min.x=min.y=min.z=1e30;max.x=max.y=max.z=-1e30;}
+       bool isEmpty(void) const {return min.x>max.x;}
+       void add(const vector3d &p) {
+               if (min.x>p.x) min.x=p.x;
+               if (min.y>p.y) min.y=p.y;
+               if (min.z>p.z) min.z=p.z;
+               if (max.x<p.x) max.x=p.x;
+               if (max.y<p.y) max.y=p.y;
+               if (max.z<p.z) max.z=p.z;
+       }
+};
+
+//A halfspace3d is the portion of a 3d plane lying on
+// one side of the plane (p1,p2,p3).
+class halfspace3d {
+public:
+       // n dot p+d==0 on plane point p
+       vector3d n;//Plane normal
+       real d;
+       
+       typedef const vector3d cv;
+       halfspace3d() {}
+       halfspace3d(cv &p1,cv &p2,cv &p3) {init(p1,p2,p3);}
+       halfspace3d(cv &p1,cv &p2,cv &p3,cv &in) {initCheck(p1,p2,p3,in);}
+       //Norm points into the halfspace; p0 is on the line
+       halfspace3d(cv &norm,cv &p0) {n=norm;d=-n.dot(p0);}
+
+       //Set this halfspace to (p1,p2,p3).
+       // inside points are on the right-handed thumb side of p1,p2,p3
+       void init(cv &p1,cv &p2,cv &p3) {
+               n=(p2-p1).cross(p3-p1);
+               d=-n.dot(p1);
+       }
+       
+       //Set this halfspace to (p1,p2,p3) with in inside.
+       void initCheck(cv &p1,cv &p2,cv &p3,cv &in)
+       { init(p1,p2,p3); if (side(in)<0) {n=-n;d=-d;} }
+       
+       
+       //Returns + if inside halfspace, - if outside (and 0 on line).
+       real side(cv &pt) const
+       {return n.dot(pt)+d;}
+       
+       //Return a value t such that pos+t*dir lies on our plane.
+       real intersect(cv &pos,cv &dir) const
+               {return -(d+n.dot(pos))/n.dot(dir);}
+       
+       /*Returns the point that lies on our plane and 
+         the line starting at start and going in dir.*/
+       vector3d intersectPt(cv &start,cv &dir) const
+       {
+               return start+dir*intersect(start,dir);
+       }
+};
+#endif //__OSL_VECTOR3D_H
+
+