diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index b3bae8fd4a8d5e8be4d0af9dd45821a093812888..6471fb73780bb8b05da980b23d4de943d60035ea 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -178,7 +178,7 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR
   USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF
   USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC USER-SCAFACOS
   USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK
-  USER-QUIP USER-QMMM)
+  USER-QUIP USER-QMMM USER-YAFF)
 set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU)
 set(OTHER_PACKAGES CORESHELL QEQ)
 foreach(PKG ${DEFAULT_PACKAGES})
diff --git a/doc/src/Commands_bond.txt b/doc/src/Commands_bond.txt
index fbf292aab2798dbeeb5623f3f43dc8a169e3f367..3b79612e766c5649b93b8138e889c37bb5afb73e 100644
--- a/doc/src/Commands_bond.txt
+++ b/doc/src/Commands_bond.txt
@@ -37,6 +37,7 @@ OPT.
 "harmonic (iko)"_bond_harmonic.html,
 "harmonic/shift (o)"_bond_harmonic_shift.html,
 "harmonic/shift/cut (o)"_bond_harmonic_shift_cut.html,
+"mm3"_bond_mm3.html,
 "morse (o)"_bond_morse.html,
 "nonlinear (o)"_bond_nonlinear.html,
 "oxdna/fene"_bond_oxdna.html,
@@ -67,10 +68,12 @@ OPT.
 "cosine/shift (o)"_angle_cosine_shift.html,
 "cosine/shift/exp (o)"_angle_cosine_shift_exp.html,
 "cosine/squared (o)"_angle_cosine_squared.html,
+"cross"_angle_cross.html,
 "dipole (o)"_angle_dipole.html,
 "fourier (o)"_angle_fourier.html,
 "fourier/simple (o)"_angle_fourier_simple.html,
 "harmonic (iko)"_angle_harmonic.html,
+"mm3"_angle_mm3.html,
 "quartic (o)"_angle_quartic.html,
 "sdk (o)"_angle_sdk.html,
 "table (o)"_angle_table.html :tb(c=4,ea=c)
@@ -120,8 +123,10 @@ OPT.
 "cossq (o)"_improper_cossq.html,
 "cvff (io)"_improper_cvff.html,
 "distance"_improper_distance.html,
+"distharm"_improper_distharm.html,
 "fourier (o)"_improper_fourier.html,
 "harmonic (iko)"_improper_harmonic.html,
 "inversion/harmonic"_improper_inversion_harmonic.html,
 "ring (o)"_improper_ring.html,
+"sqdistharm"_improper_sqdistharm.html,
 "umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c)
diff --git a/doc/src/Commands_pair.txt b/doc/src/Commands_pair.txt
index 46f4950ad78fb60db7555b50810b318a56cd4147..b498e6bfdadc348034e849839c505d866af1639c 100644
--- a/doc/src/Commands_pair.txt
+++ b/doc/src/Commands_pair.txt
@@ -154,6 +154,7 @@ OPT.
 "lj/sf/dipole/sf (go)"_pair_dipole.html,
 "lj/smooth (o)"_pair_lj_smooth.html,
 "lj/smooth/linear (o)"_pair_lj_smooth_linear.html,
+"lj/switch3/coulgauss/long"_pair_lj_switch3_coulgauss.html,
 "lj96/cut (go)"_pair_lj96.html,
 "lubricate (o)"_pair_lubricate.html,
 "lubricate/poly (o)"_pair_lubricate.html,
diff --git a/doc/src/Eqs/angle_cross.jpg b/doc/src/Eqs/angle_cross.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b0f3fcf83ac2621807c7ae58772bfbddd1d94824
Binary files /dev/null and b/doc/src/Eqs/angle_cross.jpg differ
diff --git a/doc/src/Eqs/angle_cross.tex b/doc/src/Eqs/angle_cross.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9d1fdcb7f8e53e19e61b596e0e313d3050a46c4a
--- /dev/null
+++ b/doc/src/Eqs/angle_cross.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+$$
+  E = K_{SS} \left(r_{12}-r_{12,0}\right)\left(r_{32}-r_{32,0}\right) + K_{BS0}\left(r_{12}-r_{12,0}\right)\left(\theta-\theta_0\right) + K_{BS1}\left(r_{32}-r_{32,0}\right)\left(\theta-\theta_0\right)
+$$
+
+\end{document}
diff --git a/doc/src/Eqs/angle_mm3.jpg b/doc/src/Eqs/angle_mm3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5b9f3e34f091f5a2d439294e9c5a1802a2885fb4
Binary files /dev/null and b/doc/src/Eqs/angle_mm3.jpg differ
diff --git a/doc/src/Eqs/angle_mm3.tex b/doc/src/Eqs/angle_mm3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..e2d96f2d6939db2c6eb3e0ad3cbdf6dd4e4c9321
--- /dev/null
+++ b/doc/src/Eqs/angle_mm3.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+$$
+  E = K (\theta - \theta_0)^2 \left[ 1 - 0.014(\theta - \theta_0) + 5.6(10)^{-5} (\theta - \theta_0)^2 - 7.0(10)^{-7} (\theta - \theta_0)^3 + 9(10)^{-10} (\theta - \theta_0)^4 \right]
+$$
+
+\end{document}
diff --git a/doc/src/Eqs/bond_mm3.jpg b/doc/src/Eqs/bond_mm3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2c17739db57e8d147166ab0a4cc768cf80f534af
Binary files /dev/null and b/doc/src/Eqs/bond_mm3.jpg differ
diff --git a/doc/src/Eqs/bond_mm3.tex b/doc/src/Eqs/bond_mm3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..549500ebacc714b7106a864d4ba0b3d0d3f6bf7e
--- /dev/null
+++ b/doc/src/Eqs/bond_mm3.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+$$
+  E = K (r - r_0)^2 \left[ 1 - 2.55(r-r_0) + (7/12) 2.55^2(r-r_0)^2 \right]
+$$
+
+\end{document}
diff --git a/doc/src/Eqs/improper_distharm.jpg b/doc/src/Eqs/improper_distharm.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e55036b5bf092c1b35b8ba42427b78f562238947
Binary files /dev/null and b/doc/src/Eqs/improper_distharm.jpg differ
diff --git a/doc/src/Eqs/improper_distharm.tex b/doc/src/Eqs/improper_distharm.tex
new file mode 100644
index 0000000000000000000000000000000000000000..218de6a0ddc40ecd9021dd430647bc678c6e3fa0
--- /dev/null
+++ b/doc/src/Eqs/improper_distharm.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+$$
+  E = K (d - d_0)^2
+$$
+
+\end{document}
diff --git a/doc/src/Eqs/improper_sqdistharm.jpg b/doc/src/Eqs/improper_sqdistharm.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b1a84e995e655ca32d6529122fa971bc1ef1e574
Binary files /dev/null and b/doc/src/Eqs/improper_sqdistharm.jpg differ
diff --git a/doc/src/Eqs/improper_sqdistharm.tex b/doc/src/Eqs/improper_sqdistharm.tex
new file mode 100644
index 0000000000000000000000000000000000000000..1b50a309a046a0b4fe4a32ce6b728f5666dfda10
--- /dev/null
+++ b/doc/src/Eqs/improper_sqdistharm.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+$$
+  E = K (d^2 - d_0^2)^2
+$$
+
+\end{document}
diff --git a/doc/src/Eqs/pair_coulgauss.jpg b/doc/src/Eqs/pair_coulgauss.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bf84d90c4a1b4a7774e3933bfef6e949c9603cf7
Binary files /dev/null and b/doc/src/Eqs/pair_coulgauss.jpg differ
diff --git a/doc/src/Eqs/pair_coulgauss.tex b/doc/src/Eqs/pair_coulgauss.tex
new file mode 100644
index 0000000000000000000000000000000000000000..216d3b3360a791efb8ac8f29fe9dc887e87a97b5
--- /dev/null
+++ b/doc/src/Eqs/pair_coulgauss.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+  \thispagestyle{empty}
+\begin{eqnarray*}
+  E &=& \frac{q_i q_j \mathrm{erf}\left( r/\sqrt{\gamma_1^2+\gamma_2^2} \right) }{\epsilon r_{ij}}
+\end{eqnarray*}
+
+\end{document}
diff --git a/doc/src/Eqs/pair_lj_switch3.jpg b/doc/src/Eqs/pair_lj_switch3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a1f98ea2c24bcac86871e1476901791edc83dc62
Binary files /dev/null and b/doc/src/Eqs/pair_lj_switch3.jpg differ
diff --git a/doc/src/Eqs/pair_lj_switch3.tex b/doc/src/Eqs/pair_lj_switch3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..29161fb2ef679f9d2186dcf31335b5daacc5540b
--- /dev/null
+++ b/doc/src/Eqs/pair_lj_switch3.tex
@@ -0,0 +1,11 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+  \thispagestyle{empty}
+
+\begin{eqnarray*}
+  E = 4\epsilon \left[ \left(\frac{\sigma}{r}\right)^{12}-\left(\frac{\sigma}{r}\right)^{6} \right]
+% \qquad r < r_c \\
+\end{eqnarray*}
+
+\end{document}
diff --git a/doc/src/Eqs/pair_mm3_switch3.jpg b/doc/src/Eqs/pair_mm3_switch3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5d662584a7d1fec8d273c87ce3bf0b16a904f6d4
Binary files /dev/null and b/doc/src/Eqs/pair_mm3_switch3.jpg differ
diff --git a/doc/src/Eqs/pair_mm3_switch3.tex b/doc/src/Eqs/pair_mm3_switch3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a80278cce2236c6f7ba4951cadb8fe781abc60d2
--- /dev/null
+++ b/doc/src/Eqs/pair_mm3_switch3.tex
@@ -0,0 +1,11 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+  \thispagestyle{empty}
+\begin{eqnarray*}
+  E &=& \epsilon_{ij} \left[ -2.25 \left(\frac{r_{v,ij}}{r_{ij}}\right)^6 + 1.84(10)^5 \exp\left[-12.0 r_{ij}/r_{v,ij}\right] \right] S_3(r_{ij}) \\
+  r_{v,ij} &=& r_{v,i} + r_{v,j} \\ 
+  \epsilon_{ij} &=& \sqrt{\epsilon_i \epsilon_j}
+\end{eqnarray*}
+
+\end{document}
diff --git a/doc/src/Eqs/pair_switch3.jpg b/doc/src/Eqs/pair_switch3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e6327ee5ff1d2b6e586e4d0fdfc879a4b9977a56
Binary files /dev/null and b/doc/src/Eqs/pair_switch3.jpg differ
diff --git a/doc/src/Eqs/pair_switch3.tex b/doc/src/Eqs/pair_switch3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..7ae67a5e6548ed1b342a596ec3fbfbbec023891c
--- /dev/null
+++ b/doc/src/Eqs/pair_switch3.tex
@@ -0,0 +1,14 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+\thispagestyle{empty}
+
+\begin{eqnarray*}
+ S_3(r) = \left\lbrace \begin{array}{ll}
+                     1 & \quad\mathrm{if}\quad r < r_\mathrm{c} - w \\
+                     3x^2 - 2x^3 & \quad\mathrm{if}\quad r < r_\mathrm{c} \quad\mathrm{with\quad} x=\frac{r_\mathrm{c} - r}{w} \\
+                     0 & \quad\mathrm{if}\quad r >= r_\mathrm{c}
+                 \end{array} \right.
+\end{eqnarray*}
+
+\end{document}
diff --git a/doc/src/PDF/USER-CGDNA.pdf b/doc/src/PDF/USER-CGDNA.pdf
index 843bba00d5c5a707577d07dda1929ba4c8a07987..7fcf3660156a903ec1ea7ec984ef4f8b11c73bbe 100644
Binary files a/doc/src/PDF/USER-CGDNA.pdf and b/doc/src/PDF/USER-CGDNA.pdf differ
diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt
index 4768c50ca47d8ad2d9f8ec0634e4bf43f5ac2031..ebfe01d8a73a2cfbda9057cd761131313b3d0041 100644
--- a/doc/src/Packages_details.txt
+++ b/doc/src/Packages_details.txt
@@ -100,7 +100,8 @@ as contained in the file name.
 "USER-SPH"_#PKG-USER-SPH,
 "USER-TALLY"_#PKG-USER-TALLY,
 "USER-UEF"_#PKG-USER-UEF,
-"USER-VTK"_#PKG-USER-VTK :tb(c=6,ea=c)
+"USER-VTK"_#PKG-USER-VTK,
+"USER-YAFF"_#PKG-USER-YAFF, :tb(c=6,ea=c)
 
 :line
 
@@ -2067,3 +2068,39 @@ lib/vtk/README
 "dump vtk"_dump_vtk.html :ul
 
 
+:line
+
+USER-YAFF package :link(PKG-USER-YAFF),h4
+
+[Contents:]
+
+Some potentials that are also implemented in the Yet Another Force Field ("YAFF"_yaff) code.
+The expressions and their use are discussed in the following papers
+
+Vanduyfhuys et al., J. Comput. Chem., 36 (13), 1015-1027 (2015) "link"_vanduyfhuys2015
+Vanduyfhuys et al., J. Comput. Chem., 39 (16), 999-1011 (2018) "link"_vanduyfhuys2018 :ul
+
+which discuss the "QuickFF"_quickff methodology.
+
+
+:link(vanduyfhuys2015,http://dx.doi.org/10.1002/jcc.23877)
+:link(vanduyfhuys2018,http://dx.doi.org/10.1002/jcc.25173)
+:link(quickff,http://molmod.github.io/QuickFF)
+:link(yaff,https://github.com/molmod/yaff)
+
+
+[Author:] Steven Vandenbrande.
+
+[Supporting info:]
+
+src/USER-YAFF/README
+"angle_style cross"_angle_cross.html
+"angle_style mm3"_angle_mm3.html
+"bond_style mm3"_bond_mm3.html
+"improper_style distharm"_improper_distharm.html
+"improper_style sqdistharm"_improper_sqdistharm.html
+"pair_style mm3/switch3/coulgauss/long"_pair_mm3_switch3_coulgauss.html
+"pair_style lj/switch3/coulgauss/long"_pair_lj_switch3_coulgauss.html
+examples/USER/yaff :ul
+
+
diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt
index cea3db4377411c05272bae170c09625678e46cf0..4a702e971fe526c00298996da98776d2f0224f28 100644
--- a/doc/src/Packages_user.txt
+++ b/doc/src/Packages_user.txt
@@ -75,7 +75,8 @@ Package, Description, Doc page, Example, Library
 "USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no
 "USER-TALLY"_Packages_details.html#PKG-USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, no
 "USER-UEF"_Packages_details.html#PKG-USER-UEF, extensional flow,"fix nvt/uef"_fix_nh_uef.html, USER/uef, no
-"USER-VTK"_Packages_details.html#PKG-USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, n/a, ext :tb(ea=c,ca1=l)
+"USER-VTK"_Packages_details.html#PKG-USER-VTK, dump output via VTK, "compute vtk"_dump_vtk.html, n/a, ext
+"USER-YAFF"_Packages_details.html#PKG-USER-YAFF, additional styles implemented in YAFF, "angle_style cross"_angle_cross.html, USER/yaff, no :tb(ea=c,ca1=l)
 
 :link(MOFplus,https://www.mofplus.org/content/show/MOF-FF)
 :link(PLUMED,http://www.plumed.org)
diff --git a/doc/src/angle_cross.txt b/doc/src/angle_cross.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9d83ed4b69eef64c269f264382c1073259c0f5f
--- /dev/null
+++ b/doc/src/angle_cross.txt
@@ -0,0 +1,62 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+angle_style cross command :h3
+
+[Syntax:]
+
+angle_style cross :pre
+
+[Examples:]
+
+angle_style cross
+angle_coeff 1 200.0 100.0 100.0 1.25 1.25 107.0 :pre
+
+[Description:]
+
+The {cross} angle style uses a potential that couples the bond stretches of
+a bend with the angle stretch of that bend:
+
+:c,image(Eqs/angle_cross.jpg)
+
+where r12,0 is the rest value of the bond length between atom 1 and 2,
+r32,0 is the rest value of the bond length between atom 2 and 2,
+and theta0 is the rest value of the angle. KSS is the force constant of
+the bond stretch-bond stretch term and KBS0 and KBS1 are the force constants
+of the bond stretch-angle stretch terms.
+
+The following coefficients must be defined for each angle type via the
+"angle_coeff"_angle_coeff.html command as in the example above, or in
+the data file or restart files read by the "read_data"_read_data.html
+or "read_restart"_read_restart.html commands:
+
+KSS (energy/distance^2)
+KBS0 (energy/distance/rad)
+KBS1 (energy/distance/rad)
+r12,0 (distance)
+r32,0 (distance)
+theta0 (degrees) :ul
+
+Theta0 is specified in degrees, but LAMMPS converts it to radians
+internally; hence the units of KBS0 and KBS1 are in energy/distance/radian.
+
+[Restrictions:]
+
+This angle style can only be used if LAMMPS was built with the
+USER_YAFF package.  See the "Build package"_Build_package.html doc
+page for more info.
+
+[Related commands:]
+
+"angle_coeff"_angle_coeff.html
+
+[Default:] none
+
+:line
+
+
diff --git a/doc/src/angle_mm3.txt b/doc/src/angle_mm3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9ae032c4ff5344f78267b50c1d4f81914c15d6f6
--- /dev/null
+++ b/doc/src/angle_mm3.txt
@@ -0,0 +1,55 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+angle_style mm3 command :h3
+
+[Syntax:]
+
+angle_style mm3 :pre
+
+[Examples:]
+
+angle_style mm3
+angle_coeff 1 100.0 107.0 :pre
+
+[Description:]
+
+The {mm3} angle style uses the potential that is anharmonic in the angle
+as defined in "(Allinger)"_#mm3-allinger1989
+
+:c,image(Eqs/angle_mm3.jpg)
+
+where theta0 is the equilibrium value of the angle, and K is a
+prefactor. The anharmonic prefactors have units deg^(-n), for example
+-0.014 deg^(-1), 5.6(10)^(-5) deg^(-2), ...
+
+The following coefficients must be defined for each angle type via the
+"angle_coeff"_angle_coeff.html command as in the example above, or in
+the data file or restart files read by the "read_data"_read_data.html
+or "read_restart"_read_restart.html commands:
+
+K (energy/radian^2)
+theta0 (degrees) :ul
+
+Theta0 is specified in degrees, but LAMMPS converts it to radians
+internally; hence the units of K are in energy/radian^2.
+
+[Restrictions:]
+
+This angle style can only be used if LAMMPS was built with the
+USER_YAFF package.  See the "Build package"_Build_package.html doc
+page for more info.
+
+[Related commands:]
+
+"angle_coeff"_angle_coeff.html
+
+[Default:] none
+
+:line
+
diff --git a/doc/src/angle_style.txt b/doc/src/angle_style.txt
index 2c3c1f2bd1ff81aeb8a057b42148488cd096c6be..2f2da678d86ab7a2e254e318d0b713a87381add0 100644
--- a/doc/src/angle_style.txt
+++ b/doc/src/angle_style.txt
@@ -81,10 +81,12 @@ of (g,i,k,o,t) to indicate which accelerated styles exist.
 "cosine/shift"_angle_cosine_shift.html - angle cosine with a shift
 "cosine/shift/exp"_angle_cosine_shift_exp.html - cosine with shift and exponential term in spring constant
 "cosine/squared"_angle_cosine_squared.html - angle with cosine squared term
+"cross"_angle_cross.html - cross term coupling angle and bond lengths
 "dipole"_angle_dipole.html - angle that controls orientation of a point dipole
 "fourier"_angle_fourier.html - angle with multiple cosine terms
 "fourier/simple"_angle_fourier_simple.html - angle with a single cosine term
 "harmonic"_angle_harmonic.html - harmonic angle
+"mm3"_angle_mm3.html - anharmonic angle
 "quartic"_angle_quartic.html - angle with cubic and quartic terms
 "sdk"_angle_sdk.html - harmonic angle with repulsive SDK pair style between 1-3 atoms
 "table"_angle_table.html - tabulated by angle :ul
diff --git a/doc/src/angles.txt b/doc/src/angles.txt
index 3e91ba9917176bf02c5e06ba403aa18b2b2cd9d6..3d8a47b2ebceb834ca91aec44d81dd42f5b4c9e2 100644
--- a/doc/src/angles.txt
+++ b/doc/src/angles.txt
@@ -14,11 +14,13 @@ Angle Styles :h1
    angle_cosine_shift
    angle_cosine_shift_exp
    angle_cosine_squared
+   angle_cross
    angle_dipole
    angle_fourier
    angle_fourier_simple
    angle_harmonic
    angle_hybrid
+   angle_mm3
    angle_none
    angle_quartic
    angle_sdk
diff --git a/doc/src/bond_mm3.txt b/doc/src/bond_mm3.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3d0e39f52cf4885a7bd271cc00b8f60413b6163
--- /dev/null
+++ b/doc/src/bond_mm3.txt
@@ -0,0 +1,58 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+bond_style mm3 command :h3
+
+[Syntax:]
+
+bond_style mm3 :pre
+
+[Examples:]
+
+bond_style mm3
+bond_coeff 1 100.0 107.0 :pre
+
+[Description:]
+
+The {mm3} bond style uses the potential that is anharmonic in the bond
+as defined in "(Allinger)"_#mm3-allinger1989
+
+:c,image(Eqs/bond_mm3.jpg)
+
+where r0 is the equilibrium value of the bond, and K is a
+prefactor. The anharmonic prefactors have units angstrom^(-n):
+-2.55 angstrom^(-1) and (7/12)2.55^2 angstrom^(-2). The code takes
+care of the necessary unit conversion for these factors internally.
+Note that the MM3 papers contains an error in Eq (1):
+(7/12)2.55 should be replaced with (7/12)2.55^2
+
+The following coefficients must be defined for each bond type via the
+"bond_coeff"_bond_coeff.html command as in the example above, or in
+the data file or restart files read by the "read_data"_read_data.html
+or "read_restart"_read_restart.html commands:
+
+K (energy/distance^2)
+r0 (distance) :ul
+
+[Restrictions:]
+
+This bond style can only be used if LAMMPS was built with the
+USER_YAFF package.  See the "Build package"_Build_package.html doc
+page for more info.
+
+[Related commands:]
+
+"bond_coeff"_bond_coeff.html
+
+[Default:] none
+
+:line
+
+:link(mm3-allinger1989)
+[(Allinger)] Allinger, Yuh, Lii, JACS, 111(23), 8551-8566
+(1989),
diff --git a/doc/src/bond_style.txt b/doc/src/bond_style.txt
index ae19f2369d83c476ea9cad4740efbb5c55968d07..aba6d3a7781fe952c7977361536ae758983654ba 100644
--- a/doc/src/bond_style.txt
+++ b/doc/src/bond_style.txt
@@ -86,6 +86,7 @@ accelerated styles exist.
 "harmonic"_bond_harmonic.html - harmonic bond
 "harmonic/shift"_bond_harmonic_shift.html - shifted harmonic bond
 "harmonic/shift/cut"_bond_harmonic_shift_cut.html - shifted harmonic bond with a cutoff
+"mm3"_bond_mm3.html - MM3 anharmonic bond
 "morse"_bond_morse.html - Morse bond
 "nonlinear"_bond_nonlinear.html - nonlinear bond
 "oxdna/fene"_bond_oxdna.html - modified FENE bond suitable for DNA modeling
diff --git a/doc/src/bonds.txt b/doc/src/bonds.txt
index d33515eb88e36c3aca1525e5426a6cc80cbdeae8..48896e711c3bcdc57dd637c00ec0d285a6914f61 100644
--- a/doc/src/bonds.txt
+++ b/doc/src/bonds.txt
@@ -13,6 +13,7 @@ Bond Styles :h1
    bond_harmonic_shift
    bond_harmonic_shift_cut
    bond_hybrid
+   bond_mm3
    bond_morse
    bond_none
    bond_nonlinear
diff --git a/doc/src/fix_bond_react.txt b/doc/src/fix_bond_react.txt
index 8f71cd14ec7c4a405cd6f752db30ba7b37100e14..c5b07bb973310f3451bc9ae52a6853e4b8151e6e 100644
--- a/doc/src/fix_bond_react.txt
+++ b/doc/src/fix_bond_react.txt
@@ -36,10 +36,12 @@ react = mandatory argument indicating new reaction specification :l
   template-ID(post-reacted) = ID of a molecule template containing post-reaction topology :l
   map_file = name of file specifying corresponding atom-IDs in the pre- and post-reacted templates :l
   zero or more individual keyword/value pairs may be appended to each react argument :l
-  individual_keyword = {prob} or {stabilize_steps} or {update_edges} :l
+  individual_keyword = {prob} or {max_rxn} or {stabilize_steps} or {update_edges} :l
     {prob} values = fraction seed
       fraction = initiate reaction with this probability if otherwise eligible
       seed = random number seed (positive integer)
+    {max_rxn} value = N
+      N = maximum number of reactions allowed to occur
     {stabilize_steps} value = timesteps
       timesteps = number of timesteps to apply the internally-created "nve/limit"_fix_nve_limit.html fix to reacting atoms
     {update_edges} value = {none} or {charges} or {custom}
@@ -142,7 +144,7 @@ modified to match the post-reaction template.
 
 A bonding atom pair will be identified if several conditions are met.
 First, a pair of atoms I,J within the specified react-group-ID of type
-itype and jtype must separated by a distance between {Rmin} and
+itype and jtype must be separated by a distance between {Rmin} and
 {Rmax}. It is possible that multiple bonding atom pairs are
 identified: if the bonding atoms in the pre-reacted template are not
 1-2, 1-3, or 1-4 neighbors, the closest bonding atom partner is set as
@@ -211,9 +213,10 @@ mandatory keyword is 'equivalences' and the optional keywords are
 N {equivalences} = # of atoms N in the reaction molecule templates
 N {edgeIDs} = # of edge atoms N in the pre-reacted molecule template
 N {deleteIDs} = # of atoms N that are specified for deletion
-N {customIDs} = # of atoms N that are specified for a custom update :pre
+N {customIDs} = # of atoms N that are specified for a custom update
+N {constraints} = # of specified reaction constraints N :pre
 
-The body of the map file contains two mandatory sections and three
+The body of the map file contains two mandatory sections and four
 optional sections. The first mandatory section begins with the keyword
 'BondingIDs' and lists the atom IDs of the bonding atom pair in the
 pre-reacted molecule template. The second mandatory section begins
@@ -230,7 +233,10 @@ Edges' and allows for forcing the update of a specific atom's atomic
 charge. The first column is the ID of an atom near the edge of the
 pre-reacted molecule template, and the value of the second column is
 either 'none' or 'charges.' Further details are provided in the
-discussion of the 'update_edges' keyword.
+discussion of the 'update_edges' keyword. The fourth optional section
+begins with the keyword 'Constraints' and lists additional criteria
+that must be satisfied in order for the reaction to occur. Currently,
+there is one type of constraint available, as discussed below.
 
 A sample map file is given below:
 
@@ -263,6 +269,18 @@ Equivalences :pre
 
 :line
 
+Any number of additional constraints may be specified in the
+Constraints section of the map file. Currently there is one type of
+additional constraint, of type 'distance', whose syntax is as follows:
+
+distance {ID1} {ID2} {rmin} {rmax} :pre
+
+where 'distance' is the required keyword, {ID1} and {ID2} are
+pre-reaction atom IDs, and these two atoms must be separated by a
+distance between {rmin} and {rmax} for the reaction to occur. This
+constraint can be used to enforce a certain orientation between
+reacting molecules.
+
 Once a reaction site has been successfully identified, data structures
 within LAMMPS that store bond topology are updated to reflect the
 post-reacted molecule template. All force fields with fixed bonds,
@@ -285,7 +303,8 @@ The {prob} keyword can affect whether an eligible reaction actually
 occurs. The fraction setting must be a value between 0.0 and 1.0. A
 uniform random number between 0.0 and 1.0 is generated and the
 eligible reaction only occurs if the random number is less than the
-fraction.
+fraction. Up to N reactions are permitted to occur, as optionally
+specified by the {max_rxn} keyword.
 
 The {stabilize_steps} keyword allows for the specification of how many
 timesteps a reaction site is stabilized before being returned to the
diff --git a/doc/src/improper_distharm.txt b/doc/src/improper_distharm.txt
new file mode 100644
index 0000000000000000000000000000000000000000..52815e76aaaab5226076876c2bc118e3bf9e67f4
--- /dev/null
+++ b/doc/src/improper_distharm.txt
@@ -0,0 +1,53 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+improper_style distharm command :h3
+
+[Syntax:]
+
+improper_style distharm
+
+[Examples:]
+
+improper_style distharm
+improper_coeff 1 25.0 0.5 :pre
+
+[Description:]
+
+The {distharm} improper style uses the potential
+
+:c,image(Eqs/improper_distharm.jpg)
+
+where d is the oriented distance between the central atom and the plane formed
+by the other three atoms.  If the 4 atoms in an improper quadruplet
+(listed in the data file read by the "read_data"_read_data.html
+command) are ordered I,J,K,L then the L-atom is assumed to be the
+central atom. Note that this is different from the convention used
+in the improper_style distance. The distance d is oriented and can take
+on negative values. This may lead to unwanted behavior if d0 is not equal to zero.
+
+The following coefficients must be defined for each improper type via
+the improper_coeff command as in the example above, or in the data
+file or restart files read by the read_data or read_restart commands:
+
+K (energy/distance^2)
+d0 (distance) :ul
+
+:line
+
+[Restrictions:]
+
+This improper style can only be used if LAMMPS was built with the
+USER-YAFF package.  See the "Build package"_Build_package.html doc
+page for more info.
+
+[Related commands:]
+
+"improper_coeff"_improper_coeff.html
+
+[Default:] none
diff --git a/doc/src/improper_sqdistharm.txt b/doc/src/improper_sqdistharm.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7473fd8c5d87ed15c26ecfe9fba0dec3d92c0642
--- /dev/null
+++ b/doc/src/improper_sqdistharm.txt
@@ -0,0 +1,54 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+improper_style sqdistharm command :h3
+
+[Syntax:]
+
+improper_style sqdistharm
+
+[Examples:]
+
+improper_style sqdistharm
+improper_coeff 1 50.0 0.1 :pre
+
+[Description:]
+
+The {sqdistharm} improper style uses the potential
+
+:c,image(Eqs/improper_sqdistharm.jpg)
+
+where d is the distance between the central atom and the plane formed
+by the other three atoms.  If the 4 atoms in an improper quadruplet
+(listed in the data file read by the "read_data"_read_data.html
+command) are ordered I,J,K,L then the L-atom is assumed to be the
+central atom. Note that this is different from the convention used
+in the improper_style distance.
+
+The following coefficients must be defined for each improper type via
+the improper_coeff command as in the example above, or in the data
+file or restart files read by the read_data or read_restart commands:
+
+K (energy/distance^4)
+d0^2 (distance^2) :ul
+
+Note that d0^2 (in units distance^2) has be provided and not d0.
+
+:line
+
+[Restrictions:]
+
+This improper style can only be used if LAMMPS was built with the
+USER-MISC package.  See the "Build package"_Build_package.html doc
+page for more info.
+
+[Related commands:]
+
+"improper_coeff"_improper_coeff.html
+
+[Default:] none
diff --git a/doc/src/improper_style.txt b/doc/src/improper_style.txt
index c5e0be8a819aac165d61952af8abee28b908a22c..cd72da4d073d700aef9d310a1f2aa362334b651f 100644
--- a/doc/src/improper_style.txt
+++ b/doc/src/improper_style.txt
@@ -78,11 +78,13 @@ more of (g,i,k,o,t) to indicate which accelerated styles exist.
 "cossq"_improper_cossq.html - improper with a cosine squared term
 "cvff"_improper_cvff.html - CVFF improper
 "distance"_improper_distance.html - improper based on distance between atom planes
+"distharm"_improper_distharm.html - improper that is harmonic in the out-of-plane distance
 "fourier"_improper_fourier.html - improper with multiple cosine terms
 "harmonic"_improper_harmonic.html - harmonic improper
 "inversion/harmonic"_improper_inversion_harmonic.html - harmonic improper with Wilson-Decius out-of-plane definition
 "ring"_improper_ring.html - improper which prevents planar conformations
 "umbrella"_improper_umbrella.html - DREIDING improper :ul
+"sqdistharm"_improper_sqdistharm.html - improper that is harmonic in the square of the out-of-plane distance
 
 :line
 
diff --git a/doc/src/impropers.txt b/doc/src/impropers.txt
index ca6c839c95a03fc934d8811d8e4ab0284f4b2d94..ce829197fe8d5970a6c13752d116145db281ae03 100644
--- a/doc/src/impropers.txt
+++ b/doc/src/impropers.txt
@@ -9,6 +9,7 @@ Improper Styles :h1
    improper_cossq
    improper_cvff
    improper_distance
+   improper_distharm
    improper_fourier
    improper_harmonic
    improper_hybrid
@@ -16,6 +17,7 @@ Improper Styles :h1
    improper_none
    improper_ring
    improper_umbrella
+   improper_sqdistharm
    improper_zero
 
 END_RST -->
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index a1bbaf896ed48258a7d75f6257acc8d941f82f4e..5ae3456ad4be214edce5fc66e0d55b4e6418db26 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -596,6 +596,7 @@ pair_lj_long.html
 pair_lj_smooth.html
 pair_lj_smooth_linear.html
 pair_lj_soft.html
+pair_lj_switch3_coulgauss.html
 pair_lubricate.html
 pair_lubricateU.html
 pair_mdf.html
@@ -605,6 +606,7 @@ pair_meam_sw_spline.html
 pair_meso.html
 pair_mgpt.html
 pair_mie.html
+pair_mm3_switch3_coulgauss.html
 pair_momb.html
 pair_morse.html
 pair_multi_lucy.html
@@ -668,6 +670,7 @@ bond_harmonic_shift.html
 bond_harmonic_shift_cut.html
 bond_hybrid.html
 bond_morse.html
+bond_mm3.html
 bond_none.html
 bond_nonlinear.html
 bond_oxdna.html
@@ -687,11 +690,13 @@ angle_cosine_periodic.html
 angle_cosine_shift.html
 angle_cosine_shift_exp.html
 angle_cosine_squared.html
+angle_cross.html
 angle_dipole.html
 angle_fourier.html
 angle_fourier_simple.html
 angle_harmonic.html
 angle_hybrid.html
+angle_mm3.html
 angle_none.html
 angle_quartic.html
 angle_sdk.html
@@ -725,6 +730,7 @@ improper_class2.html
 improper_cossq.html
 improper_cvff.html
 improper_distance.html
+improper_distharm.html
 improper_fourier.html
 improper_harmonic.html
 improper_hybrid.html
@@ -732,6 +738,7 @@ improper_inversion_harmonic.html
 improper_none.html
 improper_ring.html
 improper_umbrella.html
+improper_sqdistharm.html
 improper_zero.html
 
 lammps_commands_kspace.html
diff --git a/doc/src/pair_lj_switch3_coulgauss.txt b/doc/src/pair_lj_switch3_coulgauss.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1277cff9aa995ed3663050dd966729ac42db6a17
--- /dev/null
+++ b/doc/src/pair_lj_switch3_coulgauss.txt
@@ -0,0 +1,86 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+pair_style lj/switch3/coulgauss/long command :h3
+
+[Syntax:]
+
+pair_style style args :pre
+
+style = {lj/switch3/coulgauss/long}
+args = list of arguments for a particular style :ul
+  {lj/switch3/coulgauss/long} args = cutoff (cutoff2) width
+    cutoff  = global cutoff for LJ (and Coulombic if only 1 arg) (distance units)
+    cutoff2 = global cutoff for Coulombic (optional) (distance units)
+    width  = width parameter of the smoothing function (distance units) :pre
+
+[Examples:]
+
+pair_style lj/switch3/coulgauss/long    12.0 3.0
+pair_coeff 1  0.2 2.5 1.2 :pre
+
+pair_style lj/switch3/coulgauss/long   12.0 10.0 3.0
+pair_coeff 1  0.2 2.5 1.2 :pre
+
+[Description:]
+
+The {lj/switch3/coulgauss} style evaluates the LJ
+vdW potential
+
+:c,image(Eqs/pair_lj_switch3.jpg)
+
+, which goes smoothly to zero at the cutoff r_c as defined
+by the switching function
+
+:c,image(Eqs/pair_switch3.jpg)
+
+where w is the width defined in the arguments. This potential
+is combined with Coulomb interaction between Gaussian charge densities:
+
+:c,image(Eqs/pair_coulgauss.jpg)
+
+where qi and qj are the
+charges on the 2 atoms, epsilon is the dielectric constant which
+can be set by the "dielectric"_dielectric.html command, gamma_i and gamma_j
+are the widths of the Gaussian charge distribution and erf() is the error-function.
+This style has to be used in conjunction with the "kspace_style"_kspace_style.html command
+
+If one cutoff is specified it is used for both the vdW and Coulomb
+terms.  If two cutoffs are specified, the first is used as the cutoff
+for the vdW terms, and the second is the cutoff for the Coulombic term.
+
+The following coefficients must be defined for each pair of atoms
+types via the "pair_coeff"_pair_coeff.html command as in the examples
+above, or in the data file or restart files read by the
+"read_data"_read_data.html or "read_restart"_read_restart.html
+commands:
+
+epsilon (energy)
+sigma (distance)
+gamma (distance) :ul
+
+:line
+
+[Mixing, shift, table, tail correction, restart, rRESPA info]:
+
+Shifting the potential energy is not necessary because the switching
+function ensures that the potential is zero at the cut-off.
+
+
+[Restrictions:]
+
+These styles are part of the USER-YAFF package.  They are only
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
+
+[Related commands:]
+
+"pair_coeff"_pair_coeff.html
+
+[Default:] none
+
diff --git a/doc/src/pair_mm3_switch3_coulgauss.txt b/doc/src/pair_mm3_switch3_coulgauss.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3e0e24150e2c1e2a8f11ee8eb085599797ebfc1c
--- /dev/null
+++ b/doc/src/pair_mm3_switch3_coulgauss.txt
@@ -0,0 +1,88 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Commands_all.html)
+
+:line
+
+pair_style mm3/switch3/coulgauss/long command :h3
+
+[Syntax:]
+
+pair_style style args :pre
+
+style = {mm3/switch3/coulgauss/long}
+args = list of arguments for a particular style :ul
+  {mm3/switch3/coulgauss/long} args = cutoff (cutoff2) width
+    cutoff  = global cutoff for MM3 (and Coulombic if only 1 arg) (distance units)
+    cutoff2 = global cutoff for Coulombic (optional) (distance units)
+    width  = width parameter of the smoothing function (distance units) :pre
+
+[Examples:]
+
+pair_style mm3/switch3/coulgauss/long    12.0 3.0
+pair_coeff 1  0.2 2.5 1.2 :pre
+
+pair_style mm3/switch3/coulgauss/long   12.0 10.0 3.0
+pair_coeff 1  0.2 2.5 1.2 :pre
+
+[Description:]
+
+The {mm3/switch3/coulgauss} style evaluates the MM3
+vdW potential "(Allinger)"_#mm3-allinger1989
+
+:c,image(Eqs/pair_mm3_switch3.jpg)
+
+, which goes smoothly to zero at the cutoff r_c as defined
+by the switching function
+
+:c,image(Eqs/pair_switch3.jpg)
+
+where w is the width defined in the arguments. This potential
+is combined with Coulomb interaction between Gaussian charge densities:
+
+:c,image(Eqs/pair_coulgauss.jpg)
+
+where qi and qj are the
+charges on the 2 atoms, epsilon is the dielectric constant which
+can be set by the "dielectric"_dielectric.html command, gamma_i and gamma_j
+are the widths of the Gaussian charge distribution and erf() is the error-function.
+This style has to be used in conjunction with the "kspace_style"_kspace_style.html command
+
+If one cutoff is specified it is used for both the vdW and Coulomb
+terms.  If two cutoffs are specified, the first is used as the cutoff
+for the vdW terms, and the second is the cutoff for the Coulombic term.
+
+The following coefficients must be defined for each pair of atoms
+types via the "pair_coeff"_pair_coeff.html command as in the examples
+above, or in the data file or restart files read by the
+"read_data"_read_data.html or "read_restart"_read_restart.html
+commands:
+
+epsilon (energy)
+r_v (distance)
+gamma (distance) :ul
+
+:line
+
+[Mixing, shift, table, tail correction, restart, rRESPA info]:
+
+Mixing rules are fixed for this style as defined above. 
+
+Shifting the potential energy is not necessary because the switching
+function ensures that the potential is zero at the cut-off.
+
+
+[Restrictions:]
+
+These styles are part of the USER-YAFF package.  They are only
+enabled if LAMMPS was built with that package.  See the "Build
+package"_Build_package.html doc page for more info.
+
+[Related commands:]
+
+"pair_coeff"_pair_coeff.html
+
+[Default:] none
+
diff --git a/doc/src/pair_style.txt b/doc/src/pair_style.txt
index 714ec55d2e115a9affe382f2a6aca1e8b44b2a0b..978277245607446d9a1abb3214dfbc6949035276 100644
--- a/doc/src/pair_style.txt
+++ b/doc/src/pair_style.txt
@@ -220,6 +220,7 @@ accelerated styles exist.
 "lj/sf/dipole/sf"_pair_dipole.html - LJ with dipole interaction with shifted forces
 "lj/smooth"_pair_lj_smooth.html - smoothed Lennard-Jones potential
 "lj/smooth/linear"_pair_lj_smooth_linear.html - linear smoothed LJ potential
+"lj/switch3/coulgauss"_pair_lj_switch3_coulgauss - smoothed LJ vdW potential with Gaussian electrostatics
 "lj96/cut"_pair_lj96.html - Lennard-Jones 9/6 potential
 "lubricate"_pair_lubricate.html - hydrodynamic lubrication forces
 "lubricate/poly"_pair_lubricate.html - hydrodynamic lubrication forces with polydispersity
@@ -232,6 +233,7 @@ accelerated styles exist.
 "meam/sw/spline"_pair_meam_sw_spline.html - splined version of MEAM with a Stillinger-Weber term
 "mgpt"_pair_mgpt.html - simplified model generalized pseudopotential theory (MGPT) potential
 "mie/cut"_pair_mie.html - Mie potential
+"mm3/switch3/coulgauss"_pair_mm3_switch3_coulgauss - smoothed MM3 vdW potential with Gaussian electrostatics
 "momb"_pair_momb.html - Many-Body Metal-Organic (MOMB) force field
 "morse"_pair_morse.html - Morse potential
 "morse/smooth/linear"_pair_morse.html - linear smoothed Morse potential
diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt
index 281025240246728ab73f4f244dbefa5e63e1d1aa..62cbb7f56d018662c260feae935e7343994b1453 100644
--- a/doc/src/pairs.txt
+++ b/doc/src/pairs.txt
@@ -61,6 +61,7 @@ Pair Styles :h1
    pair_lj_smooth
    pair_lj_smooth_linear
    pair_lj_soft
+   pair_lj_switch3_coulgauss
    pair_lubricate
    pair_lubricateU
    pair_mdf
@@ -70,6 +71,7 @@ Pair Styles :h1
    pair_meso
    pair_mgpt
    pair_mie
+   pair_mm3_switch3_coulgauss
    pair_momb
    pair_morse
    pair_multi_lucy
diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt
index 5c44bf8afacabf5f89be643111740ec4f2a7279f..8807b2d680766839db90849a37662f5f53d02b6d 100644
--- a/doc/utils/sphinx-config/false_positives.txt
+++ b/doc/utils/sphinx-config/false_positives.txt
@@ -60,6 +60,7 @@ Alejandre
 alessandro
 Alessandro
 aliceblue
+Allinger
 allocaters
 allosws
 AlO
@@ -410,6 +411,7 @@ cossq
 costheta
 Couette
 coul
+coulgauss
 coulombic
 Coulombic
 Coulombics
@@ -566,6 +568,7 @@ discretized
 disp
 dissipative
 Dissipative
+distharm
 dl
 dlambda
 DLAMMPS
@@ -2493,6 +2496,7 @@ Springer
 springgreen
 spx
 spz
+sqdistharm
 sqrt
 src
 srd
@@ -2801,6 +2805,8 @@ Valone
 valuev
 Valuev
 Vanden
+Vandenbrande
+Vanduyfhuys
 varavg
 Varshalovich
 Varshney
@@ -2958,6 +2964,8 @@ xy
 xyz
 xz
 xzhou
+YAFF
+yaff
 Yamada
 Yazdani
 Ybar
@@ -2976,6 +2984,7 @@ ys
 ysu
 yu
 Yu
+Yuh
 yukawa
 Yukawa
 Yusof
diff --git a/examples/USER/misc/entropy/log.entropy b/examples/USER/misc/entropy/log.entropy
index c380c62a731b77c6c83d3a36fc822b52843f8c17..333214ada8839480c975a1fc57ca6b9a5758640f 100644
--- a/examples/USER/misc/entropy/log.entropy
+++ b/examples/USER/misc/entropy/log.entropy
@@ -1,4 +1,4 @@
-LAMMPS (30 Mar 2018)
+LAMMPS (4 Jan 2019)
 
 units		metal
 atom_style	full
@@ -45,10 +45,10 @@ fix             1 all nph x 1. 1. 10.
 fix             2 all temp/csvr 350. 350. 0.1 64582
 
 run             1000
-WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:138)
-WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:138)
-WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:138)
-WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:138)
+WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:139)
+WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:139)
+WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:139)
+WARNING: More than one compute entropy/atom (../compute_entropy_atom.cpp:139)
 Neighbor list info ...
   update every 1 steps, delay 10 steps, check yes
   max neighbors/atom: 2000, page size: 100000
@@ -56,27 +56,27 @@ Neighbor list info ...
   ghost atom cutoff = 13.2
   binsize = 6.6, bins = 21 6 6
   5 neighbor lists, perpetual/occasional/extra = 5 0 0
-  (1) pair eam/fs, perpetual
+  (1) pair eam/fs, perpetual, half/full from (2)
       attributes: half, newton on
-      pair build: half/bin/newton/tri
-      stencil: half/bin/3d/newton/tri
-      bin: standard
+      pair build: halffull/newton
+      stencil: none
+      bin: none
   (2) compute entropy/atom, perpetual
-      attributes: full, newton on, ghost
-      pair build: full/bin/ghost
-      stencil: full/ghost/bin/3d
+      attributes: full, newton on
+      pair build: full/bin
+      stencil: full/bin/3d
       bin: standard
   (3) compute entropy/atom, perpetual, copy from (2)
-      attributes: full, newton on, ghost
+      attributes: full, newton on
       pair build: copy
       stencil: none
       bin: none
-  (4) compute entropy/atom, perpetual, copy from (2)
+  (4) compute entropy/atom, perpetual
       attributes: full, newton on, ghost
-      pair build: copy
-      stencil: none
-      bin: none
-  (5) compute entropy/atom, perpetual, copy from (2)
+      pair build: full/bin/ghost
+      stencil: full/ghost/bin/3d
+      bin: standard
+  (5) compute entropy/atom, perpetual, copy from (4)
       attributes: full, newton on, ghost
       pair build: copy
       stencil: none
@@ -85,34 +85,34 @@ Setting up Verlet run ...
   Unit style    : metal
   Current step  : 0
   Time step     : 0.002
-Per MPI rank memory allocation (min/avg/max) = 25.68 | 25.69 | 25.69 Mbytes
+Per MPI rank memory allocation (min/avg/max) = 19.6 | 19.6 | 19.6 Mbytes
 Step Temp E_pair E_mol TotEng Press Volume 
        0    346.29871    -4285.222            0   -4101.9191    594.65353    165399.75 
-     500    359.33758    -4285.247            0   -4095.0423    471.98587    165847.18 
-    1000    348.99659   -4276.2274            0   -4091.4964    149.27188    166966.18 
-Loop time of 5.3437 on 4 procs for 1000 steps with 4096 atoms
+     500    359.33769   -4285.2472            0   -4095.0424    472.02043    165847.09 
+    1000    348.99683   -4276.2282            0   -4091.4971    149.38771    166965.86 
+Loop time of 4.4394 on 4 procs for 1000 steps with 4096 atoms
 
-Performance: 32.337 ns/day, 0.742 hours/ns, 187.136 timesteps/s
-99.8% CPU use with 4 MPI tasks x no OpenMP threads
+Performance: 38.924 ns/day, 0.617 hours/ns, 225.256 timesteps/s
+99.5% CPU use with 4 MPI tasks x no OpenMP threads
 
 MPI task timing breakdown:
 Section |  min time  |  avg time  |  max time  |%varavg| %total
 ---------------------------------------------------------------
-Pair    | 4.2832     | 4.3257     | 4.3839     |   1.8 | 80.95
-Bond    | 0.00018309 | 0.00019825 | 0.00021418 |   0.0 |  0.00
-Neigh   | 0.42195    | 0.42512    | 0.42739    |   0.3 |  7.96
-Comm    | 0.051679   | 0.1101     | 0.14916    |  10.8 |  2.06
-Output  | 0.40909    | 0.4091     | 0.40911    |   0.0 |  7.66
-Modify  | 0.060869   | 0.061921   | 0.06327    |   0.4 |  1.16
-Other   |            | 0.01161    |            |       |  0.22
+Pair    | 3.5298     | 3.5931     | 3.6669     |   2.6 | 80.94
+Bond    | 8.2099e-05 | 0.00011444 | 0.00014673 |   0.0 |  0.00
+Neigh   | 0.43384    | 0.4445     | 0.45558    |   1.4 | 10.01
+Comm    | 0.048904   | 0.11122    | 0.16728    |  12.7 |  2.51
+Output  | 0.22595    | 0.22595    | 0.22596    |   0.0 |  5.09
+Modify  | 0.053103   | 0.053795   | 0.054549   |   0.3 |  1.21
+Other   |            | 0.01068    |            |       |  0.24
 
 Nlocal:    1024 ave 1040 max 1001 min
 Histogram: 1 0 0 0 0 0 2 0 0 1
 Nghost:    4614.25 ave 4700 max 4540 min
 Histogram: 1 1 0 0 0 0 0 1 0 1
-Neighs:    121747 ave 126398 max 116931 min
+Neighs:    121747 ave 126398 max 116930 min
 Histogram: 1 0 0 1 0 0 1 0 0 1
-FullNghs:  243494 ave 252523 max 233842 min
+FullNghs:  243494 ave 252523 max 233841 min
 Histogram: 1 0 0 1 0 0 1 0 0 1
 
 Total # of neighbors = 973974
@@ -121,4 +121,4 @@ Ave special neighs/atom = 0
 Neighbor list builds = 13
 Dangerous builds = 0
 
-Total wall time: 0:00:05
+Total wall time: 0:00:04
diff --git a/examples/USER/yaff/README b/examples/USER/yaff/README
new file mode 100644
index 0000000000000000000000000000000000000000..af43a61e0842c6e80369daab2d997ad1f54677dc
--- /dev/null
+++ b/examples/USER/yaff/README
@@ -0,0 +1,7 @@
+mof5:
+    NPT simulation of MOF5 using a QuickFF force field
+
+mil53al:
+    NPT simulation of MIL-53(Al) using a QuickFF force field.
+    If the pressure is high enough (for instance 2000 atm),
+    a phase transition from large pore to narrow pore is observed
diff --git a/examples/USER/yaff/mil53al/lammps.data b/examples/USER/yaff/mil53al/lammps.data
new file mode 100644
index 0000000000000000000000000000000000000000..7b73c99357e3caa3472acc08ebf4d33a324e935b
--- /dev/null
+++ b/examples/USER/yaff/mil53al/lammps.data
@@ -0,0 +1,1545 @@
+Generated by yaff2lammps
+
+                 152 atoms
+                 184 bonds
+                 736 angles 
+                 288 dihedrals
+                  64 impropers
+
+                   8 atom types
+                   8 bond types
+                  34 angle types
+                   9 dihedral types
+                   3 improper types
+
+    0.0000000000000000000000000000000000    13.3259954452999984653160936431959271 xlo xhi
+    0.0000000000000000000000000000000000    17.0769005354000000806991010904312134 ylo yhi
+    0.0000000000000000000000000000000000    12.5451650575000002163505996577441692 zlo zhi
+    0.2406519637999999794431005284423009    -0.0003290864999999999263892436207612     0.0000597691999999999968857904153463 xy xz yz
+
+Masses
+
+    1     15.99940000 #            O_HY
+    2     15.99940000 #            O_CA
+    3      1.00794000 #            H_HY
+    4      1.00794000 #            H_PH
+    5     26.98153860 #              AL
+    6     12.01070000 #            C_PH
+    7     12.01070000 #            C_PC
+    8     12.01070000 #            C_CA
+
+Bond Coeffs
+
+       1    567.89714613      0.99006574
+       2    149.93642745      1.86984652
+       3    111.04240192      1.91161348
+       4    389.90538840      1.09141352
+       5    491.67603879      1.38895490
+       6    451.37211172      1.40304450
+       7    668.04674737      1.27972749
+       8    320.55756064      1.49110450
+
+Angle Coeffs
+
+       1     cosine/periodic     2.83639133     1     4
+       2               cross      6.00819953     13.51503788     20.21646410      1.85789452      0.98840688    111.64709450
+       3               cross      6.00819953     20.21646410     13.51503788      0.98840688      1.85789452    111.64709450
+       4               cross     44.73850113     10.65965583     10.65965583      1.85789452      1.85789452    128.05371526
+       5               cross     79.26686011     18.67531488     42.84377495      1.90495331      1.27905582    132.82471928
+       6               cross     79.26686011     42.84377495     18.67531488      1.27905582      1.90495331    132.82471928
+       7               cross     -6.85938357      0.00000000      0.00000000      1.85789452      1.85789452      0.00000000
+       8               cross     20.15880651     47.33122583     34.90884408      1.90495331      1.85789452     89.96038503
+       9               cross     20.15880651     34.90884408     47.33122583      1.85789452      1.90495331     89.96038503
+      10               cross     26.34746514      0.00000000      0.00000000      1.90495331      1.90495331      0.00000000
+      11               cross     29.49811022     32.88373608     17.10597622      1.09150478      1.40308083    119.48992692
+      12               cross     29.49811022     17.10597622     32.88373608      1.40308083      1.09150478    119.48992692
+      13               cross    130.12394367      9.80817840     18.96121618      1.40308083      1.38855980    120.04435536
+      14               cross    130.12394367     18.96121618      9.80817840      1.38855980      1.40308083    120.04435536
+      15               cross     26.93982909     21.36148219     26.91818347      1.38855980      1.09150478    120.51713090
+      16               cross     26.93982909     26.91818347     21.36148219      1.09150478      1.38855980    120.51713090
+      17               cross     69.39565871     31.02625485     12.91121121      1.49380304      1.40308083    120.04236743
+      18               cross     69.39565871     12.91121121     31.02625485      1.40308083      1.49380304    120.04236743
+      19               cross    132.39591455      8.36520076      8.36520076      1.40308083      1.40308083    119.90683966
+      20               cross    101.87765421    105.70691653     47.75221042      1.27905582      1.49380304    117.59476167
+      21               cross    101.87765421     47.75221042    105.70691653      1.49380304      1.27905582    117.59476167
+      22               cross    183.45287073     91.94550669     91.94550669      1.27905582      1.27905582    124.82435184
+      23            harmonic     16.58040240    109.62517017
+      24            harmonic     17.35339453    114.44875517
+      25            harmonic     17.77569321    132.30806010
+      26            harmonic     31.05808424     89.91290461
+      27            harmonic     35.90327756    119.61990442
+      28            harmonic     65.78425626    120.00645318
+      29            harmonic     31.59874504    120.45871258
+      30            harmonic     43.33676649    120.04493381
+      31            harmonic     62.87326877    119.94842490
+      32            harmonic     75.47920221    117.59298491
+      33            harmonic     76.76979213    124.86144100
+      34      cosine/squared  1689.15160421    180.00000000
+
+Dihedral Coeffs
+
+       1    1      3.73165017     2   -180.00000000
+       2    1      2.24530337     2   -180.00000000
+       3    1      4.66917332     2   -180.00000000
+       4    1      3.98899930     2   -180.00000000
+       5    1      3.29635668     2   -180.00000000
+       6    1      1.54619053     2   -180.00000000
+       7    1      3.86252462     2   -180.00000000
+       8    1      2.05124797     2   -180.00000000
+       9    1      2.35456853     2   -180.00000000
+
+Improper Coeffs
+
+       1      9.10278571      0.00000000
+       2    167.11786187      0.00000000
+       3     18.17859622      0.00000000
+
+Pair Coeffs
+
+    1       0.059000000000       1.820000000000       1.132500000000 #            O_HY
+    2       0.059000000000       1.820000000000       1.132500000000 #            O_CA
+    3       0.016000000000       1.600000000000       0.730800000000 #            H_HY
+    4       0.020000000000       1.620000000000       0.730800000000 #            H_PH
+    5       0.116000000000       2.360000000000       1.674200000000 #              AL
+    6       0.056000000000       1.940000000000       1.170300000000 #            C_PH
+    7       0.056000000000       1.940000000000       1.170300000000 #            C_PC
+    8       0.056000000000       1.940000000000       1.170300000000 #            C_CA
+
+Atoms
+
+    1   1   1    -1.2098756939999999460155777342151850     6.7153870720493431534237060986924917     4.2828041318282634719594170746859163     8.5866133816897338704166031675413251
+    2   1   1    -1.2098756939999999460155777342151850    13.3783843949194771738575582276098430     4.2828041318282634719594170746859163     8.5866133816897338704166031675413251
+    3   1   1    -1.2098756939999999460155777342151850     3.5035237129981489090368995675817132    12.8223120918310673488349493709392846     2.3141018836642901490563417610246688
+    4   1   1    -1.2098756939999999460155777342151850    10.1665216355380785273609944852069020    12.8223120918310673488349493709392846     2.3141018836642901490563417610246688
+    5   1   1    -1.2098756939999999460155777342151850     6.8349996196255871083735655702184886    12.8213427865959719298416530364193022     3.9586200971404887916094139654887840
+    6   1   1    -1.2098756939999999460155777342151850    13.4979977420554568823263252852484584    12.8213427865959701534848136361688375     3.9586200971404887916094139654887840
+    7   1   1    -1.2098756939999999460155777342151850     3.3839079367670850118088310409802943     4.2840038831740319125174210057593882    10.2311117738051464698401105124503374
+    8   1   1    -1.2098756939999999460155777342151850    10.0469052596372208085995225701481104     4.2840038831740310243390013056341559    10.2311117738051464698401105124503374
+    9   1   2    -0.7445643530000000120949721349461470     1.2589905770693332609511116970679723    14.0689460511913626561408818815834820     1.8089686548556627165851296012988314
+   10   1   2    -0.7445643530000000120949721349461470     7.9219883930013077488752060162369162    14.0689460511913626561408818815834820     1.8089686548556627165851296012988314
+   11   1   2    -0.7445643530000000120949721349461470     4.4707674159202488439746048243250698     5.5288543253806796684557411936111748     8.0795827217564895050827544764615595
+   12   1   2    -0.7445643530000000120949721349461470    11.1337651385702471884542319457978010     5.5288543253806796684557411936111748     8.0795827217564895050827544764615595
+   13   1   2    -0.7445643530000000120949721349461470     1.2229986327132931211991717646014877     2.7734064633669284205552685307338834    10.4955229434339933902720076730474830
+   14   1   2    -0.7445643530000000120949721349461470     7.8859965552532269583707602578215301     2.7734064633669279764660586806712672    10.4955229434339933902720076730474830
+   15   1   2    -0.7445643530000000120949721349461470     4.6742044121247552368458855198696256    11.3101997821180297876253462163731456     4.2205434978126090683758775412570685
+   16   1   2    -0.7445643530000000120949721349461470    11.3372021347747544695039323414675891    11.3101997821180297876253462163731456     4.2205434978126090683758775412570685
+   17   1   2    -0.7445643530000000120949721349461470     5.5525225224355230224659862869884819     5.7375722500320405217166808142792434    10.5597464481615510578649264061823487
+   18   1   2    -0.7445643530000000120949721349461470    12.2155206315393947136271890485659242     5.7375722500320396335382611141540110    10.5597464481615510578649264061823487
+   19   1   2    -0.7445643530000000120949721349461470     2.3407580474861306996103849087376148    14.2746180205582611222325795097276568     4.2891813575851065465371902973856777
+   20   1   2    -0.7445643530000000120949721349461470     9.0037557701361325968036908307112753    14.2746180205582593458757401094771922     4.2891813575851065465371902973856777
+   21   1   2    -0.7445643530000000120949721349461470     5.7700538186296190801272132375743240    11.5405550825335865283705061301589012     1.8195962287082991792885877657681704
+   22   1   2    -0.7445643530000000120949721349461470    12.4330511414997584296315835672430694    11.5405550825335865283705061301589012     1.8195962287082991792885877657681704
+   23   1   2    -0.7445643530000000120949721349461470     2.3187182063798501552298603201052174     3.0004106930250986629005183203844354     8.0941017932647998378570264321751893
+   24   1   2    -0.7445643530000000120949721349461470     8.9817157424659139763889470486901700     3.0004106930250982188113084703218192     8.0941017932647998378570264321751893
+   25   1   2    -0.7445643530000000120949721349461470     5.6502316143841939677372465666849166     3.0020828644755410685718288732459769    10.7252833635608215701040535350330174
+   26   1   2    -0.7445643530000000120949721349461470    12.3132293370342029703579100896604359     3.0020828644755406244826190231833607    10.7252833635608215701040535350330174
+   27   1   2    -0.7445643530000000120949721349461470     2.4385834497316842828240623930469155    11.5390906922377300958260093466378748     4.4515765998441914064187585609033704
+   28   1   2    -0.7445643530000000120949721349461470     9.1015815721615513922415630077011883    11.5390906922377300958260093466378748     4.4515765998441914064187585609033704
+   29   1   2    -0.7445643530000000120949721349461470     5.6722249356407399289992099511437118    14.2759679355859336880030241445638239     1.9851114660623476737555392901413143
+   30   1   2    -0.7445643530000000120949721349461470    12.3352230580706052620598711655475199    14.2759679355859336880030241445638239     1.9851114660623476737555392901413143
+   31   1   2    -0.7445643530000000120949721349461470     2.2210375988136932257077660324284807     5.7360095476548309534337022341787815     8.2560278212604032432864187285304070
+   32   1   2    -0.7445643530000000120949721349461470     8.8840349216838294665876674116589129     5.7360095476548309534337022341787815     8.2560278212604032432864187285304070
+   33   1   2    -0.7445643530000000120949721349461470     1.3426929459297589630750735523179173    11.3116032563078015016344579635187984     2.0503536005570812683629355888115242
+   34   1   2    -0.7445643530000000120949721349461470     8.0056903754078607704514070064760745    11.3116032563078015016344579635187984     2.0503536005570812683629355888115242
+   35   1   2    -0.7445643530000000120949721349461470     4.5544349664199854643698017753195018     2.7717800127098115581247839145362377     8.3243804039794877525082483771257102
+   36   1   2    -0.7445643530000000120949721349461470    11.2174326890699891379199470975436270     2.7717800127098111140355740644736215     8.3243804039794877525082483771257102
+   37   1   2    -0.7445643530000000120949721349461470     1.1392762498379640501156018217443489     5.5307225590439976770085195312276483    10.7363410985781104756142667611129582
+   38   1   2    -0.7445643530000000120949721349461470     7.8022735727081062861998361768200994     5.5307225590439967888300998311024159    10.7363410985781104756142667611129582
+   39   1   2    -0.7445643530000000120949721349461470     4.5904838756409240829725604271516204    14.0673016329479629860088607529178262     4.4653546409977158404558394977357239
+   40   1   2    -0.7445643530000000120949721349461470    11.2534815982909286447011254495009780    14.0673016329479629860088607529178262     4.4653546409977158404558394977357239
+   41   1   3     0.5185263799999999534406924794893712     6.7033022636923433879019285086542368     4.6749920341423978342731970769818872     7.7032864563136307367585686733946204
+   42   1   3     0.5185263799999999534406924794893712    13.3662995865624836255847185384482145     4.6749920341423969460947773768566549     7.7032864563136307367585686733946204
+   43   1   3     0.5185263799999999534406924794893712     3.4911946343224471434041333850473166    13.2152028467359965446803471422754228     1.4310936932968010282252180331852287
+   44   1   3     0.5185263799999999534406924794893712    10.1541925435363875607208683504723012    13.2152028467359947683235077420249581     1.4310936932968010282252180331852287
+   45   1   3     0.5185263799999999534406924794893712     6.8226445109087379137235984671860933    13.2137951050594022461837084847502410     4.8418266265675384829592076130211353
+   46   1   3     0.5185263799999999534406924794893712    13.4856422335587406990953240892849863    13.2137951050594004698268690844997764     4.8418266265675384829592076130211353
+   47   1   3     0.5185263799999999534406924794893712     3.3718390257973132051461107039358467     4.6776567735304457329448268865235150    11.1137888972667671083627283223904669
+   48   1   3     0.5185263799999999534406924794893712    10.0348367484473133259825772256590426     4.6776567735304457329448268865235150    11.1137888972667671083627283223904669
+   49   1   4     0.1519691589999999925542084611151950     2.3150111389406484718733736372087151    15.7561391408537811997803146368823946     0.3851155792041089376276374878216302
+   50   1   4     0.1519691589999999925542084611151950     8.9780090614805825310895670554600656    15.7561391408537811997803146368823946     0.3851155792041089376276374878216302
+   51   1   4     0.1519691589999999925542084611151950     5.5251997890205615249215043149888515     7.2122227707358952386584860505536199     6.6487285031154712555689911823719740
+   52   1   4     0.1519691589999999925542084611151950    12.1881975116705607575795511365868151     7.2122227707358943504800663504283875     6.6487285031154712555689911823719740
+   53   1   4     0.1519691589999999925542084611151950     2.1513768927132632668985934287775308     0.7793385220131339163884831577888690    11.5512885193109173798120536957867444
+   54   1   4     0.1519691589999999925542084611151950     8.8143748152531955497579474467784166     0.7793385220131333612769708452105988    11.5512885193109173798120536957867444
+   55   1   4     0.1519691589999999925542084611151950     5.6018395825408164867553750809747726     9.3122840258958383685694570885971189     5.2698941286277101170298919896595180
+   56   1   4     0.1519691589999999925542084611151950    12.2648377049706844843512953957542777     9.3122840258958365922126176883466542     5.2698941286277101170298919896595180
+   57   1   4     0.1519691589999999925542084611151950     4.6402743945654769675002171425148845     7.7570678771031307263683629571460187    11.5742489313024528030382498400285840
+   58   1   4     0.1519691589999999925542084611151950    11.3032725036693442177693214034661651     7.7570678771031298381899432570207864    11.5742489313024528030382498400285840
+   59   1   4     0.1519691589999999925542084611151950     1.4289916763510370767420454285456799    16.2937782613533990172527410322800279     5.3045340265619520536688469292130321
+   60   1   4     0.1519691589999999925542084611151950     8.0919889992211722073989221826195717    16.2937782613533954645390622317790985     5.3045340265619520536688469292130321
+   61   1   4     0.1519691589999999925542084611151950     4.7188867445007129930445444188080728     9.8576336883462030158398192725144327     0.4106092614660375450519325113418745
+   62   1   4     0.1519691589999999925542084611151950    11.3818848669305765497483662329614162     9.8576336883462012394829798722639680     0.4106092614660375450519325113418745
+   63   1   4     0.1519691589999999925542084611151950     1.2672446555857233008168805099558085     1.3174924965356069606059463694691658     6.6860210385656291265377149102278054
+   64   1   4     0.1519691589999999925542084611151950     7.9302420850638259963716336642391980     1.3174924965356062944721315943752415     6.6860210385656291265377149102278054
+   65   1   4     0.1519691589999999925542084611151950     4.5976454677133533621713468164671212     1.3167699335050779829714429070008919    12.1295236794261001023187418468296528
+   66   1   4     0.1519691589999999925542084611151950    11.2606431903633534830078133381903172     1.3167699335050770947930232068756595    12.1295236794261001023187418468296528
+   67   1   4     0.1519691589999999925542084611151950     1.3874618992261169569957246494595893     9.8559985125562405983146163634955883     5.8599964503548598315774142974987626
+   68   1   4     0.1519691589999999925542084611151950     8.0504595152681570624508822220377624     9.8559985125562370456009375629946589     5.8599964503548598315774142974987626
+   69   1   4     0.1519691589999999925542084611151950     4.7594768289705067232375768071506172    16.2928537268444415531121194362640381     0.9657755315474335633396663070016075
+   70   1   4     0.1519691589999999925542084611151950    11.4224745516205032913603645283728838    16.2928537268444380003984406357631087     0.9657755315474335633396663070016075
+   71   1   4     0.1519691589999999925542084611151950     1.3090438015508472080483670652029105     7.7552807308893543236649747996125370     7.2413518635770861564537881349679083
+   72   1   4     0.1519691589999999925542084611151950     7.9720419239807123190644233545754105     7.7552807308893543236649747996125370     7.2413518635770861564537881349679083
+   73   1   4     0.1519691589999999925542084611151950     2.2705998288829158937573993171099573     9.3150495706767486581156845204532146     0.9992716491478911278178998145449441
+   74   1   4     0.1519691589999999925542084611151950     8.9335973516429838525709783425554633     9.3150495706767468817588451202027500     0.9992716491478911278178998145449441
+   75   1   4     0.1519691589999999925542084611151950     5.4818417666741723337509029079228640     0.7738074986951422040704073879169300     7.2745362714613577281852485612034798
+   76   1   4     0.1519691589999999925542084611151950    12.1448398891040394431684035225771368     0.7738074986951416489588950753386598     7.2745362714613577281852485612034798
+   77   1   4     0.1519691589999999925542084611151950     2.1937673007028561933395849337102845     7.2151514782616867904607715900056064    12.1654336247804373272174416342750192
+   78   1   4     0.1519691589999999925542084611151950     8.8567648234629228198855344089679420     7.2151514782616867904607715900056064    12.1654336247804373272174416342750192
+   79   1   4     0.1519691589999999925542084611151950     5.6453609802319695276651145832147449    15.7507340863305405065375452977605164     5.8955942218219092865183483809232712
+   80   1   4     0.1519691589999999925542084611151950    12.3083583031021088771694849128834903    15.7507340863305387301807058975100517     5.8955942218219092865183483809232712
+   81   1   5     2.0909989460000000249806362262461334     1.7220884276321977157664377955370583     4.2577041896622827010787659673951566     9.3989182512193298890679216128773987
+   82   1   5     2.0909989460000000249806362262461334     8.3850859503922716697843497968278825     4.2577041896622818129003462672699243     9.3989182512193298890679216128773987
+   83   1   5     2.0909989460000000249806362262461334     5.1732895332567778723387164063751698    12.7961141377704930022218832164071500     3.1261246626124026271043021552031860
+   84   1   5     2.0909989460000000249806362262461334    11.8362872559067771049967632279731333    12.7961141377704930022218832164071500     3.1261246626124026271043021552031860
+   85   1   5     2.0909989460000000249806362262461334     1.8417926657907308651829225709661841    12.7961386721601790839031309587880969     3.1465567471285815770443150540813804
+   86   1   5     2.0909989460000000249806362262461334     8.5047905883306658125775356893427670    12.7961386721601773075462915585376322     3.1465567471285815770443150540813804
+   87   1   5     2.0909989460000000249806362262461334     5.0535778772553525683974839921575040     4.2576796083468551046280481386929750     9.4188173794883720546522454242222011
+   88   1   5     2.0909989460000000249806362262461334    11.7165752001254901415450149215757847     4.2576796083468533282712087384425104     9.4188173794883720546522454242222011
+   89   1   6    -0.1065741179999999954652878386696102     1.4141707527268658761698816306306981    16.3400809537558444617388886399567127     0.2022529879698692911738078237249283
+   90   1   6    -0.1065741179999999954652878386696102     8.0771686752667974928954208735376596    16.3400809537558444617388886399567127     0.2022529879698692911738078237249283
+   91   1   6    -0.1065741179999999954652878386696102     4.6246955781035241628273979586083442     7.7975351373134911270312841224949807     6.4685670866407551926613450632430613
+   92   1   6    -0.1065741179999999954652878386696102    11.2876933007535207309501856798306108     7.7975351373134911270312841224949807     6.4685670866407551926613450632430613
+   93   1   6    -0.1065741179999999954652878386696102     1.2180418815135878318756113003473729     0.4262156085319599996275030662218342    11.9882078772904936414533949573524296
+   94   1   6    -0.1065741179999999954652878386696102     7.8810392976656951091740666015539318     0.4262156085319593334936882911279099    11.9882078772904936414533949573524296
+   95   1   6    -0.1065741179999999954652878386696102     4.6691704987195228326868345902767032     8.9605484349032789026523460051976144     5.7093670549547432813142222585156560
+   96   1   6    -0.1065741179999999954652878386696102    11.3321682213695300589506587130017579     8.9605484349032771262955066049471498     5.7093670549547432813142222585156560
+   97   1   6    -0.1065741179999999954652878386696102     5.5731262922007358540099630772601813     8.1037524473176567596510722069069743    12.0169282136407069572214822983369231
+   98   1   6    -0.1065741179999999954652878386696102    12.2361240148507377512032689992338419     8.1037524473176549832942328066565096    12.0169282136407069572214822983369231
+   99   1   6    -0.1065741179999999954652878386696102     2.3619457998798174536148053448414430    16.6401915820548325086747354362159967     5.7472080650212156172074173809960485
+  100   1   6    -0.1065741179999999954652878386696102     9.0249439223096850071215158095583320    16.6401915820548325086747354362159967     5.7472080650212156172074173809960485
+  101   1   6    -0.1065741179999999954652878386696102     5.6164918446169611598861592938192189     9.2670862695492175475919793825596571     0.2304860073834236744438896948850015
+  102   1   6    -0.1065741179999999954652878386696102    12.2794899670468264929468205082230270     9.2670862695492157712351399823091924     0.2304860073834236744438896948850015
+  103   1   6    -0.1065741179999999954652878386696102     2.1646735340058396168672061321558431     0.7266775681237089834496600815327838     6.5059044961463232681353474617935717
+  104   1   6    -0.1065741179999999954652878386696102     8.8276710567659080197699950076639652     0.7266775681237084283381477689545136     6.5059044961463232681353474617935717
+  105   1   6    -0.1065741179999999954652878386696102     5.4954840105190072563345893286168575     0.7272885255903810408639742490777280    12.3119305800847929077690423582680523
+  106   1   6    -0.1065741179999999954652878386696102    12.1584817331690135944199937512166798     0.7272885255903803747301594739838038    12.3119305800847929077690423582680523
+  107   1   6    -0.1065741179999999954652878386696102     2.2849532575684836643858943716622889     9.2651606566280424459591813501901925     6.0397320212017060470088836154900491
+  108   1   6    -0.1065741179999999954652878386696102     8.9479509802184900024712987942621112     9.2651606566280424459591813501901925     6.0397320212017060470088836154900491
+  109   1   6    -0.1065741179999999954652878386696102     5.6929776458884013834449433488771319    16.6407061629956416481945780105888844     0.5254053499251585268581266063847579
+  110   1   6    -0.1065741179999999954652878386696102    12.3559757549922686337140476098284125    16.6407061629956380954808992100879550     0.5254053499251585268581266063847579
+  111   1   6    -0.1065741179999999954652878386696102     2.2418392805257347788483457406982780     8.1017188456549362740588549058884382     6.7983615238712307160540149197913706
+  112   1   6    -0.1065741179999999954652878386696102     8.9048370031757357878632319625467062     8.1017188456549362740588549058884382     6.7983615238712307160540149197913706
+  113   1   6    -0.1065741179999999954652878386696102     1.3378988445639905524586765750427730     8.9631021552237744032254340709187090     0.5600409072322938275334536228911020
+  114   1   6    -0.1065741179999999954652878386696102     8.0008963673240636182981688762083650     8.9631021552237744032254340709187090     0.5600409072322938275334536228911020
+  115   1   6    -0.1065741179999999954652878386696102     4.5490129888977781646985931729432195     0.4220911682453661883940299048845191     6.8353863705893926905332591559272259
+  116   1   6    -0.1065741179999999954652878386696102    11.2120103117679210669166423031128943     0.4220911682453655777713663610484218     6.8353863705893926905332591559272259
+  117   1   6    -0.1065741179999999954652878386696102     1.2931697223744265112799212147365324     7.8002126371303779350796503422316164    12.3459248034638537916407585726119578
+  118   1   6    -0.1065741179999999954652878386696102     7.9561673517424651436158455908298492     7.8002126371303779350796503422316164    12.3459248034638537916407585726119578
+  119   1   6    -0.1065741179999999954652878386696102     4.7449200366800932116007061267737299    16.3360242466580523057473328663036227     6.0761321312451688214650857844389975
+  120   1   6    -0.1065741179999999954652878386696102    11.4079181457839649027619088883511722    16.3360242466580523057473328663036227     6.0761321312451688214650857844389975
+  121   1   7    -0.1475182609999999838734652257699054     6.8625612135502791488761431537568569    15.8993490470899345723410078790038824     0.7462376897096898442640622306498699
+  122   1   7    -0.1475182609999999838734652257699054    13.5255589362002837106047081761062145    15.8993490470899345723410078790038824     0.7462376897096898442640622306498699
+  123   1   7    -0.1475182609999999838734652257699054     3.4109618177191207699650021822890267     7.3586684715520229715934874548111111     7.0160031640105362527037868858315051
+  124   1   7    -0.1475182609999999838734652257699054    10.0739595403691204467122588539496064     7.3586684715520220834150677546858788     7.0160031640105362527037868858315051
+  125   1   7    -0.1475182609999999838734652257699054     0.0473415571287404482458960330859554     1.1642431334386127428359714031103067    11.7662756401595451904995570657774806
+  126   1   7    -0.1475182609999999838734652257699054     6.7103393197567315908713680983055383     1.1642431334386122987467615530476905    11.7662756401595451904995570657774806
+  127   1   7    -0.1475182609999999838734652257699054     3.4989796446374041849480818200390786     9.7004408763167386808845549239777029     5.4908995164190423921013461949769408
+  128   1   7    -0.1475182609999999838734652257699054    10.1619773672874043057845483417622745     9.7004408763167351281708761234767735     5.4908995164190423921013461949769408
+  129   1   7    -0.1475182609999999838734652257699054     6.7423569930703077801581457606516778     7.3609697445742119370493128371890634    11.7989650409209776427132965181954205
+  130   1   7    -0.1475182609999999838734652257699054    13.4053547157203087891730319825001061     7.3609697445742101606924734369385988    11.7989650409209776427132965181954205
+  131   1   7    -0.1475182609999999838734652257699054     3.5309961971541143910258142568636686    15.8971691701905903926217433763667941     5.5291046875368072832657162507530302
+  132   1   7    -0.1475182609999999838734652257699054    10.1939941196940502265988470753654838    15.8971691701905903926217433763667941     5.5291046875368072832657162507530302
+  133   1   7    -0.1475182609999999838734652257699054     0.1675527733465424773395824331601034     9.7025773236021279899432556703686714     0.7790777077228052682755787827773020
+  134   1   7    -0.1475182609999999838734652257699054     6.8305507092124733148352788703050464     9.7025773236021279899432556703686714     0.7790777077228052682755787827773020
+  135   1   7    -0.1475182609999999838734652257699054     3.3788922890951527122638253786135465     1.1619455116749999312730778910918161     7.0543290948871408829745632829144597
+  136   1   7    -0.1475182609999999838734652257699054    10.0418900117451528331002919003367424     1.1619455116749990430946581909665838     7.0543290948871408829745632829144597
+  137   1   8     0.8460320690000000531938439962686971     6.8158435147629843342542699247132987    14.6566180822766263247558526927605271     1.5740911748083665777642181637929752
+  138   1   8     0.8460320690000000531938439962686971    13.4788412374129844550907364464364946    14.6566180822766263247558526927605271     1.5740911748083665777642181637929752
+  139   1   8     0.8460320690000000531938439962686971     3.3645677309728028170354718895396218     6.1163711265005069606104370905086398     7.8445080317144935122541937744244933
+  140   1   8     0.8460320690000000531938439962686971    10.0275656535127346558056160574778914     6.1163711265005060724320173903834075     7.8445080317144935122541937744244933
+  141   1   8     0.8460320690000000531938439962686971     0.0895185086047598360670107808800822     2.4034399294411441516672311990987509    10.9344634655011496704446471994742751
+  142   1   8     0.8460320690000000531938439962686971     6.7525164044927041828714209259487689     2.4034399294411437075780213490361348    10.9344634655011496704446471994742751
+  143   1   8     0.8460320690000000531938439962686971     3.5408813332418129782297455676598474    10.9401060095762083790305041475221515     4.6597715425177188564020980265922844
+  144   1   8     0.8460320690000000531938439962686971    10.2038790558918126549770022393204272    10.9401060095762083790305041475221515     4.6597715425177188564020980265922844
+  145   1   8     0.8460320690000000531938439962686971     6.6960210710517644727701735973823816     6.1182853663466376659130219195503742    10.9710262110644158894956490257754922
+  146   1   8     0.8460320690000000531938439962686971    13.3590187937017663699634795193560421     6.1182853663466376659130219195503742    10.9710262110644158894956490257754922
+  147   1   8     0.8460320690000000531938439962686971     3.4843639165565232218568780808709562    14.6549005775032945564362307777628303     4.7005710286790414187407805002294481
+  148   1   8     0.8460320690000000531938439962686971    10.1473614393165885161351980059407651    14.6549005775032945564362307777628303     4.7005710286790414187407805002294481
+  149   1   8     0.8460320690000000531938439962686971     0.2093718873377909683863862255748245    10.9417709628228116969239636091515422     1.6109077843317383127441644319333136
+  150   1   8     0.8460320690000000531938439962686971     6.8723694634018412941145470540504903    10.9417709628228116969239636091515422     1.6109077843317383127441644319333136
+  151   1   8     0.8460320690000000531938439962686971     3.4210085616731804591950094618368894     2.4015655238668487392317274498054758     7.8855124055115330961029940226580948
+  152   1   8     0.8460320690000000531938439962686971    10.0840062843231805800314759835600853     2.4015655238668482951425175997428596     7.8855124055115330961029940226580948
+
+Bonds
+
+    1     1    41     1
+    2     1    42     2
+    3     1    43     3
+    4     1    44     4
+    5     1    45     5
+    6     1    46     6
+    7     1    47     7
+    8     1    48     8
+    9     2    81     2
+   10     2    81     7
+   11     3    81    13
+   12     3    81    23
+   13     3    81    31
+   14     3    81    37
+   15     2    82     1
+   16     2    82     8
+   17     3    82    14
+   18     3    82    24
+   19     3    82    32
+   20     3    82    38
+   21     2    83     3
+   22     2    83     5
+   23     3    83    15
+   24     3    83    21
+   25     3    83    29
+   26     3    83    39
+   27     2    84     4
+   28     2    84     6
+   29     3    84    16
+   30     3    84    22
+   31     3    84    30
+   32     3    84    40
+   33     2    85     3
+   34     2    85     6
+   35     3    85     9
+   36     3    85    19
+   37     3    85    27
+   38     3    85    33
+   39     2    86     4
+   40     2    86     5
+   41     3    86    10
+   42     3    86    20
+   43     3    86    28
+   44     3    86    34
+   45     2    87     1
+   46     2    87     7
+   47     3    87    11
+   48     3    87    17
+   49     3    87    25
+   50     3    87    35
+   51     2    88     2
+   52     2    88     8
+   53     3    88    12
+   54     3    88    18
+   55     3    88    26
+   56     3    88    36
+   57     4    89    49
+   58     4    90    50
+   59     4    91    51
+   60     4    92    52
+   61     4    93    53
+   62     5    93    89
+   63     4    94    54
+   64     5    94    90
+   65     4    95    55
+   66     5    95    91
+   67     4    96    56
+   68     5    96    92
+   69     4    97    57
+   70     4    98    58
+   71     4    99    59
+   72     4   100    60
+   73     4   101    61
+   74     5   101    97
+   75     4   102    62
+   76     5   102    98
+   77     4   103    63
+   78     5   103    99
+   79     4   104    64
+   80     5   104   100
+   81     4   105    65
+   82     4   106    66
+   83     4   107    67
+   84     4   108    68
+   85     4   109    69
+   86     5   109   105
+   87     4   110    70
+   88     5   110   106
+   89     4   111    71
+   90     5   111   107
+   91     4   112    72
+   92     5   112   108
+   93     4   113    73
+   94     4   114    74
+   95     4   115    75
+   96     4   116    76
+   97     4   117    77
+   98     5   117   113
+   99     4   118    78
+  100     5   118   114
+  101     4   119    79
+  102     5   119   115
+  103     4   120    80
+  104     5   120   116
+  105     6   121    90
+  106     6   121   109
+  107     6   122    89
+  108     6   122   110
+  109     6   123    91
+  110     6   123   111
+  111     6   124    92
+  112     6   124   112
+  113     6   125    93
+  114     6   125   106
+  115     6   126    94
+  116     6   126   105
+  117     6   127    95
+  118     6   127   107
+  119     6   128    96
+  120     6   128   108
+  121     6   129    97
+  122     6   129   118
+  123     6   130    98
+  124     6   130   117
+  125     6   131    99
+  126     6   131   119
+  127     6   132   100
+  128     6   132   120
+  129     6   133   102
+  130     6   133   113
+  131     6   134   101
+  132     6   134   114
+  133     6   135   103
+  134     6   135   115
+  135     6   136   104
+  136     6   136   116
+  137     7   137    10
+  138     7   137    29
+  139     8   137   121
+  140     7   138     9
+  141     7   138    30
+  142     8   138   122
+  143     7   139    11
+  144     7   139    31
+  145     8   139   123
+  146     7   140    12
+  147     7   140    32
+  148     8   140   124
+  149     7   141    13
+  150     7   141    26
+  151     8   141   125
+  152     7   142    14
+  153     7   142    25
+  154     8   142   126
+  155     7   143    15
+  156     7   143    27
+  157     8   143   127
+  158     7   144    16
+  159     7   144    28
+  160     8   144   128
+  161     7   145    17
+  162     7   145    38
+  163     8   145   129
+  164     7   146    18
+  165     7   146    37
+  166     8   146   130
+  167     7   147    19
+  168     7   147    39
+  169     8   147   131
+  170     7   148    20
+  171     7   148    40
+  172     8   148   132
+  173     7   149    22
+  174     7   149    33
+  175     8   149   133
+  176     7   150    21
+  177     7   150    34
+  178     8   150   134
+  179     7   151    23
+  180     7   151    35
+  181     8   151   135
+  182     7   152    24
+  183     7   152    36
+  184     8   152   136
+
+Angles
+
+    1     1    37    81    13
+    2     1    37    81    23
+    3     1    37    81    31
+    4     1    23    81    13
+    5     1    31    81    13
+    6     1    31    81    23
+    7     1    38    82    14
+    8     1    38    82    24
+    9     1    38    82    32
+   10     1    24    82    14
+   11     1    32    82    14
+   12     1    32    82    24
+   13     1    39    83    15
+   14     1    39    83    21
+   15     1    39    83    29
+   16     1    21    83    15
+   17     1    29    83    15
+   18     1    29    83    21
+   19     1    40    84    16
+   20     1    40    84    22
+   21     1    40    84    30
+   22     1    22    84    16
+   23     1    30    84    16
+   24     1    30    84    22
+   25     1    33    85     9
+   26     1    33    85    19
+   27     1    33    85    27
+   28     1    19    85     9
+   29     1    27    85     9
+   30     1    27    85    19
+   31     1    34    86    10
+   32     1    34    86    20
+   33     1    34    86    28
+   34     1    20    86    10
+   35     1    28    86    10
+   36     1    28    86    20
+   37     1    35    87    11
+   38     1    35    87    17
+   39     1    35    87    25
+   40     1    17    87    11
+   41     1    25    87    11
+   42     1    25    87    17
+   43     1    36    88    12
+   44     1    36    88    18
+   45     1    36    88    26
+   46     1    18    88    12
+   47     1    26    88    12
+   48     1    26    88    18
+   49     2    82     1    41
+   50     2    87     1    41
+   51     4    87     1    82
+   52     2    81     2    42
+   53     4    88     2    81
+   54     2    88     2    42
+   55     2    85     3    43
+   56     4    85     3    83
+   57     2    83     3    43
+   58     2    84     4    44
+   59     4    86     4    84
+   60     2    86     4    44
+   61     2    83     5    45
+   62     4    86     5    83
+   63     2    86     5    45
+   64     2    84     6    46
+   65     4    85     6    84
+   66     2    85     6    46
+   67     2    81     7    47
+   68     4    87     7    81
+   69     2    87     7    47
+   70     2    82     8    48
+   71     4    88     8    82
+   72     2    88     8    48
+   73     6   138     9    85
+   74     6   137    10    86
+   75     6   139    11    87
+   76     6   140    12    88
+   77     6   141    13    81
+   78     6   142    14    82
+   79     6   143    15    83
+   80     6   144    16    84
+   81     6   145    17    87
+   82     6   146    18    88
+   83     6   147    19    85
+   84     6   148    20    86
+   85     6   150    21    83
+   86     6   149    22    84
+   87     6   151    23    81
+   88     6   152    24    82
+   89     6   142    25    87
+   90     6   141    26    88
+   91     6   143    27    85
+   92     6   144    28    86
+   93     6   137    29    83
+   94     6   138    30    84
+   95     6   139    31    81
+   96     6   140    32    82
+   97     6   149    33    85
+   98     6   150    34    86
+   99     6   151    35    87
+  100     6   152    36    88
+  101     6   146    37    81
+  102     6   145    38    82
+  103     6   147    39    83
+  104     6   148    40    84
+  105     8    37    81     2
+  106     8    37    81     7
+  107    10    37    81    13
+  108    10    37    81    23
+  109    10    37    81    31
+  110     7     7    81     2
+  111     8    13    81     2
+  112     8    13    81     7
+  113     8    23    81     2
+  114     8    23    81     7
+  115    10    23    81    13
+  116     8    31    81     2
+  117     8    31    81     7
+  118    10    31    81    13
+  119    10    31    81    23
+  120     8    38    82     1
+  121     8    38    82     8
+  122    10    38    82    14
+  123    10    38    82    24
+  124    10    38    82    32
+  125     7     8    82     1
+  126     8    14    82     1
+  127     8    14    82     8
+  128     8    24    82     1
+  129     8    24    82     8
+  130    10    24    82    14
+  131     8    32    82     1
+  132     8    32    82     8
+  133    10    32    82    14
+  134    10    32    82    24
+  135     7     5    83     3
+  136     8    39    83     3
+  137     8    39    83     5
+  138    10    39    83    15
+  139    10    39    83    21
+  140    10    39    83    29
+  141     8    15    83     3
+  142     8    15    83     5
+  143     8    21    83     3
+  144     8    21    83     5
+  145    10    21    83    15
+  146     8    29    83     3
+  147     8    29    83     5
+  148    10    29    83    15
+  149    10    29    83    21
+  150     7     6    84     4
+  151     8    40    84     4
+  152     8    40    84     6
+  153    10    40    84    16
+  154    10    40    84    22
+  155    10    40    84    30
+  156     8    16    84     4
+  157     8    16    84     6
+  158     8    22    84     4
+  159     8    22    84     6
+  160    10    22    84    16
+  161     8    30    84     4
+  162     8    30    84     6
+  163    10    30    84    16
+  164    10    30    84    22
+  165     8    33    85     3
+  166     8    33    85     6
+  167    10    33    85     9
+  168    10    33    85    19
+  169    10    33    85    27
+  170     7     6    85     3
+  171     8     9    85     3
+  172     8     9    85     6
+  173     8    19    85     3
+  174     8    19    85     6
+  175    10    19    85     9
+  176     8    27    85     3
+  177     8    27    85     6
+  178    10    27    85     9
+  179    10    27    85    19
+  180     8    34    86     4
+  181     8    34    86     5
+  182    10    34    86    10
+  183    10    34    86    20
+  184    10    34    86    28
+  185     7     5    86     4
+  186     8    10    86     4
+  187     8    10    86     5
+  188     8    20    86     4
+  189     8    20    86     5
+  190    10    20    86    10
+  191     8    28    86     4
+  192     8    28    86     5
+  193    10    28    86    10
+  194    10    28    86    20
+  195     8    35    87     1
+  196     8    35    87     7
+  197    10    35    87    11
+  198    10    35    87    17
+  199    10    35    87    25
+  200     7     7    87     1
+  201     8    11    87     1
+  202     8    11    87     7
+  203     8    17    87     1
+  204     8    17    87     7
+  205    10    17    87    11
+  206     8    25    87     1
+  207     8    25    87     7
+  208    10    25    87    11
+  209    10    25    87    17
+  210     8    36    88     2
+  211     8    36    88     8
+  212    10    36    88    12
+  213    10    36    88    18
+  214    10    36    88    26
+  215     7     8    88     2
+  216     8    12    88     2
+  217     8    12    88     8
+  218     8    18    88     2
+  219     8    18    88     8
+  220    10    18    88    12
+  221     8    26    88     2
+  222     8    26    88     8
+  223    10    26    88    12
+  224    10    26    88    18
+  225    12   122    89    49
+  226    13   122    89    93
+  227    15    93    89    49
+  228    12   121    90    50
+  229    13   121    90    94
+  230    15    94    90    50
+  231    12   123    91    51
+  232    13   123    91    95
+  233    15    95    91    51
+  234    12   124    92    52
+  235    13   124    92    96
+  236    15    96    92    52
+  237    15    89    93    53
+  238    13   125    93    89
+  239    12   125    93    53
+  240    15    90    94    54
+  241    13   126    94    90
+  242    12   126    94    54
+  243    15    91    95    55
+  244    13   127    95    91
+  245    12   127    95    55
+  246    13   128    96    92
+  247    12   128    96    56
+  248    15    92    96    56
+  249    12   129    97    57
+  250    13   129    97   101
+  251    15   101    97    57
+  252    15   102    98    58
+  253    12   130    98    58
+  254    13   130    98   102
+  255    12   131    99    59
+  256    13   131    99   103
+  257    15   103    99    59
+  258    12   132   100    60
+  259    13   132   100   104
+  260    15   104   100    60
+  261    15    97   101    61
+  262    13   134   101    97
+  263    12   134   101    61
+  264    15    98   102    62
+  265    13   133   102    98
+  266    12   133   102    62
+  267    15    99   103    63
+  268    13   135   103    99
+  269    12   135   103    63
+  270    15   100   104    64
+  271    13   136   104   100
+  272    12   136   104    64
+  273    15   109   105    65
+  274    12   126   105    65
+  275    13   126   105   109
+  276    12   125   106    66
+  277    13   125   106   110
+  278    15   110   106    66
+  279    12   127   107    67
+  280    13   127   107   111
+  281    15   111   107    67
+  282    12   128   108    68
+  283    13   128   108   112
+  284    15   112   108    68
+  285    15   105   109    69
+  286    13   121   109   105
+  287    12   121   109    69
+  288    15   106   110    70
+  289    13   122   110   106
+  290    12   122   110    70
+  291    15   107   111    71
+  292    13   123   111   107
+  293    12   123   111    71
+  294    13   124   112   108
+  295    12   124   112    72
+  296    15   108   112    72
+  297    12   133   113    73
+  298    13   133   113   117
+  299    15   117   113    73
+  300    15   118   114    74
+  301    12   134   114    74
+  302    13   134   114   118
+  303    12   135   115    75
+  304    13   135   115   119
+  305    15   119   115    75
+  306    12   136   116    76
+  307    13   136   116   120
+  308    15   120   116    76
+  309    15   113   117    77
+  310    13   130   117   113
+  311    12   130   117    77
+  312    13   129   118   114
+  313    12   129   118    78
+  314    15   114   118    78
+  315    15   115   119    79
+  316    13   131   119   115
+  317    12   131   119    79
+  318    15   116   120    80
+  319    13   132   120   116
+  320    12   132   120    80
+  321    17   137   121    90
+  322    17   137   121   109
+  323    19   109   121    90
+  324    17   138   122    89
+  325    17   138   122   110
+  326    19   110   122    89
+  327    17   139   123    91
+  328    17   139   123   111
+  329    19   111   123    91
+  330    17   140   124    92
+  331    17   140   124   112
+  332    19   112   124    92
+  333    19   106   125    93
+  334    17   141   125   106
+  335    17   141   125    93
+  336    19   105   126    94
+  337    17   142   126   105
+  338    17   142   126    94
+  339    19   107   127    95
+  340    17   143   127   107
+  341    17   143   127    95
+  342    19   108   128    96
+  343    17   144   128   108
+  344    17   144   128    96
+  345    17   145   129    97
+  346    17   145   129   118
+  347    19   118   129    97
+  348    19   117   130    98
+  349    17   146   130    98
+  350    17   146   130   117
+  351    17   147   131    99
+  352    17   147   131   119
+  353    19   119   131    99
+  354    17   148   132   100
+  355    17   148   132   120
+  356    19   120   132   100
+  357    19   113   133   102
+  358    17   149   133   113
+  359    17   149   133   102
+  360    19   114   134   101
+  361    17   150   134   114
+  362    17   150   134   101
+  363    19   115   135   103
+  364    17   151   135   115
+  365    17   151   135   103
+  366    19   116   136   104
+  367    17   152   136   116
+  368    17   152   136   104
+  369    21   121   137    10
+  370    21   121   137    29
+  371    22    29   137    10
+  372    21   122   138     9
+  373    21   122   138    30
+  374    22    30   138     9
+  375    21   123   139    11
+  376    21   123   139    31
+  377    22    31   139    11
+  378    21   124   140    12
+  379    21   124   140    32
+  380    22    32   140    12
+  381    22    26   141    13
+  382    21   125   141    26
+  383    21   125   141    13
+  384    22    25   142    14
+  385    21   126   142    25
+  386    21   126   142    14
+  387    22    27   143    15
+  388    21   127   143    27
+  389    21   127   143    15
+  390    21   128   144    28
+  391    21   128   144    16
+  392    22    28   144    16
+  393    21   129   145    17
+  394    21   129   145    38
+  395    22    38   145    17
+  396    22    37   146    18
+  397    21   130   146    18
+  398    21   130   146    37
+  399    21   131   147    19
+  400    21   131   147    39
+  401    22    39   147    19
+  402    21   132   148    20
+  403    21   132   148    40
+  404    22    40   148    20
+  405    22    33   149    22
+  406    21   133   149    33
+  407    21   133   149    22
+  408    22    34   150    21
+  409    21   134   150    34
+  410    21   134   150    21
+  411    22    35   151    23
+  412    21   135   151    35
+  413    21   135   151    23
+  414    22    36   152    24
+  415    21   136   152    36
+  416    21   136   152    24
+  417    23    82     1    41
+  418    23    87     1    41
+  419    24    87     1    82
+  420    23    81     2    42
+  421    24    88     2    81
+  422    23    88     2    42
+  423    23    85     3    43
+  424    24    85     3    83
+  425    23    83     3    43
+  426    23    84     4    44
+  427    24    86     4    84
+  428    23    86     4    44
+  429    23    83     5    45
+  430    24    86     5    83
+  431    23    86     5    45
+  432    23    84     6    46
+  433    24    85     6    84
+  434    23    85     6    46
+  435    23    81     7    47
+  436    24    87     7    81
+  437    23    87     7    47
+  438    23    82     8    48
+  439    24    88     8    82
+  440    23    88     8    48
+  441    25   138     9    85
+  442    25   137    10    86
+  443    25   139    11    87
+  444    25   140    12    88
+  445    25   141    13    81
+  446    25   142    14    82
+  447    25   143    15    83
+  448    25   144    16    84
+  449    25   145    17    87
+  450    25   146    18    88
+  451    25   147    19    85
+  452    25   148    20    86
+  453    25   150    21    83
+  454    25   149    22    84
+  455    25   151    23    81
+  456    25   152    24    82
+  457    25   142    25    87
+  458    25   141    26    88
+  459    25   143    27    85
+  460    25   144    28    86
+  461    25   137    29    83
+  462    25   138    30    84
+  463    25   139    31    81
+  464    25   140    32    82
+  465    25   149    33    85
+  466    25   150    34    86
+  467    25   151    35    87
+  468    25   152    36    88
+  469    25   146    37    81
+  470    25   145    38    82
+  471    25   147    39    83
+  472    25   148    40    84
+  473    26    37    81     2
+  474    26    37    81     7
+  475    26    13    81     2
+  476    26    13    81     7
+  477    26    23    81     2
+  478    26    23    81     7
+  479    26    31    81     2
+  480    26    31    81     7
+  481    26    38    82     1
+  482    26    38    82     8
+  483    26    14    82     1
+  484    26    14    82     8
+  485    26    24    82     1
+  486    26    24    82     8
+  487    26    32    82     1
+  488    26    32    82     8
+  489    26    39    83     3
+  490    26    39    83     5
+  491    26    15    83     3
+  492    26    15    83     5
+  493    26    21    83     3
+  494    26    21    83     5
+  495    26    29    83     3
+  496    26    29    83     5
+  497    26    40    84     4
+  498    26    40    84     6
+  499    26    16    84     4
+  500    26    16    84     6
+  501    26    22    84     4
+  502    26    22    84     6
+  503    26    30    84     4
+  504    26    30    84     6
+  505    26    33    85     3
+  506    26    33    85     6
+  507    26     9    85     3
+  508    26     9    85     6
+  509    26    19    85     3
+  510    26    19    85     6
+  511    26    27    85     3
+  512    26    27    85     6
+  513    26    34    86     4
+  514    26    34    86     5
+  515    26    10    86     4
+  516    26    10    86     5
+  517    26    20    86     4
+  518    26    20    86     5
+  519    26    28    86     4
+  520    26    28    86     5
+  521    26    35    87     1
+  522    26    35    87     7
+  523    26    11    87     1
+  524    26    11    87     7
+  525    26    17    87     1
+  526    26    17    87     7
+  527    26    25    87     1
+  528    26    25    87     7
+  529    26    36    88     2
+  530    26    36    88     8
+  531    26    12    88     2
+  532    26    12    88     8
+  533    26    18    88     2
+  534    26    18    88     8
+  535    26    26    88     2
+  536    26    26    88     8
+  537    27   122    89    49
+  538    28   122    89    93
+  539    29    93    89    49
+  540    27   121    90    50
+  541    28   121    90    94
+  542    29    94    90    50
+  543    27   123    91    51
+  544    28   123    91    95
+  545    29    95    91    51
+  546    27   124    92    52
+  547    28   124    92    96
+  548    29    96    92    52
+  549    29    89    93    53
+  550    28   125    93    89
+  551    27   125    93    53
+  552    29    90    94    54
+  553    28   126    94    90
+  554    27   126    94    54
+  555    29    91    95    55
+  556    28   127    95    91
+  557    27   127    95    55
+  558    28   128    96    92
+  559    27   128    96    56
+  560    29    92    96    56
+  561    27   129    97    57
+  562    28   129    97   101
+  563    29   101    97    57
+  564    29   102    98    58
+  565    27   130    98    58
+  566    28   130    98   102
+  567    27   131    99    59
+  568    28   131    99   103
+  569    29   103    99    59
+  570    27   132   100    60
+  571    28   132   100   104
+  572    29   104   100    60
+  573    29    97   101    61
+  574    28   134   101    97
+  575    27   134   101    61
+  576    29    98   102    62
+  577    28   133   102    98
+  578    27   133   102    62
+  579    29    99   103    63
+  580    28   135   103    99
+  581    27   135   103    63
+  582    29   100   104    64
+  583    28   136   104   100
+  584    27   136   104    64
+  585    29   109   105    65
+  586    27   126   105    65
+  587    28   126   105   109
+  588    27   125   106    66
+  589    28   125   106   110
+  590    29   110   106    66
+  591    27   127   107    67
+  592    28   127   107   111
+  593    29   111   107    67
+  594    27   128   108    68
+  595    28   128   108   112
+  596    29   112   108    68
+  597    29   105   109    69
+  598    28   121   109   105
+  599    27   121   109    69
+  600    29   106   110    70
+  601    28   122   110   106
+  602    27   122   110    70
+  603    29   107   111    71
+  604    28   123   111   107
+  605    27   123   111    71
+  606    28   124   112   108
+  607    27   124   112    72
+  608    29   108   112    72
+  609    27   133   113    73
+  610    28   133   113   117
+  611    29   117   113    73
+  612    29   118   114    74
+  613    27   134   114    74
+  614    28   134   114   118
+  615    27   135   115    75
+  616    28   135   115   119
+  617    29   119   115    75
+  618    27   136   116    76
+  619    28   136   116   120
+  620    29   120   116    76
+  621    29   113   117    77
+  622    28   130   117   113
+  623    27   130   117    77
+  624    28   129   118   114
+  625    27   129   118    78
+  626    29   114   118    78
+  627    29   115   119    79
+  628    28   131   119   115
+  629    27   131   119    79
+  630    29   116   120    80
+  631    28   132   120   116
+  632    27   132   120    80
+  633    30   137   121    90
+  634    30   137   121   109
+  635    31   109   121    90
+  636    30   138   122    89
+  637    30   138   122   110
+  638    31   110   122    89
+  639    30   139   123    91
+  640    30   139   123   111
+  641    31   111   123    91
+  642    30   140   124    92
+  643    30   140   124   112
+  644    31   112   124    92
+  645    31   106   125    93
+  646    30   141   125   106
+  647    30   141   125    93
+  648    31   105   126    94
+  649    30   142   126   105
+  650    30   142   126    94
+  651    31   107   127    95
+  652    30   143   127   107
+  653    30   143   127    95
+  654    31   108   128    96
+  655    30   144   128   108
+  656    30   144   128    96
+  657    30   145   129    97
+  658    30   145   129   118
+  659    31   118   129    97
+  660    31   117   130    98
+  661    30   146   130    98
+  662    30   146   130   117
+  663    30   147   131    99
+  664    30   147   131   119
+  665    31   119   131    99
+  666    30   148   132   100
+  667    30   148   132   120
+  668    31   120   132   100
+  669    31   113   133   102
+  670    30   149   133   113
+  671    30   149   133   102
+  672    31   114   134   101
+  673    30   150   134   114
+  674    30   150   134   101
+  675    31   115   135   103
+  676    30   151   135   115
+  677    30   151   135   103
+  678    31   116   136   104
+  679    30   152   136   116
+  680    30   152   136   104
+  681    32   121   137    10
+  682    32   121   137    29
+  683    33    29   137    10
+  684    32   122   138     9
+  685    32   122   138    30
+  686    33    30   138     9
+  687    32   123   139    11
+  688    32   123   139    31
+  689    33    31   139    11
+  690    32   124   140    12
+  691    32   124   140    32
+  692    33    32   140    12
+  693    33    26   141    13
+  694    32   125   141    26
+  695    32   125   141    13
+  696    33    25   142    14
+  697    32   126   142    25
+  698    32   126   142    14
+  699    33    27   143    15
+  700    32   127   143    27
+  701    32   127   143    15
+  702    32   128   144    28
+  703    32   128   144    16
+  704    33    28   144    16
+  705    32   129   145    17
+  706    32   129   145    38
+  707    33    38   145    17
+  708    33    37   146    18
+  709    32   130   146    18
+  710    32   130   146    37
+  711    32   131   147    19
+  712    32   131   147    39
+  713    33    39   147    19
+  714    32   132   148    20
+  715    32   132   148    40
+  716    33    40   148    20
+  717    33    33   149    22
+  718    32   133   149    33
+  719    32   133   149    22
+  720    33    34   150    21
+  721    32   134   150    34
+  722    32   134   150    21
+  723    33    35   151    23
+  724    32   135   151    35
+  725    32   135   151    23
+  726    33    36   152    24
+  727    32   136   152    36
+  728    32   136   152    24
+  729    34     7    81     2
+  730    34     8    82     1
+  731    34     5    83     3
+  732    34     6    84     4
+  733    34     6    85     3
+  734    34     5    86     4
+  735    34     7    87     1
+  736    34     8    88     2
+
+Dihedrals
+
+    1     4   125    93    89    49
+    2     7   125    93    89   122
+    3     8    53    93    89    49
+    4     4    53    93    89   122
+    5     4    54    94    90   121
+    6     8    54    94    90    50
+    7     7   126    94    90   121
+    8     4   126    94    90    50
+    9     4   127    95    91    51
+   10     7   127    95    91   123
+   11     8    55    95    91    51
+   12     4    55    95    91   123
+   13     7   128    96    92   124
+   14     4   128    96    92    52
+   15     4    56    96    92   124
+   16     8    56    96    92    52
+   17     8    61   101    97    57
+   18     4    61   101    97   129
+   19     4   134   101    97    57
+   20     7   134   101    97   129
+   21     4   133   102    98    58
+   22     7   133   102    98   130
+   23     8    62   102    98    58
+   24     4    62   102    98   130
+   25     4   135   103    99    59
+   26     7   135   103    99   131
+   27     8    63   103    99    59
+   28     4    63   103    99   131
+   29     4   136   104   100    60
+   30     7   136   104   100   132
+   31     8    64   104   100    60
+   32     4    64   104   100   132
+   33     4   121   109   105    65
+   34     7   121   109   105   126
+   35     8    69   109   105    65
+   36     4    69   109   105   126
+   37     8    70   110   106    66
+   38     4    70   110   106   125
+   39     4   122   110   106    66
+   40     7   122   110   106   125
+   41     4   123   111   107    67
+   42     7   123   111   107   127
+   43     8    71   111   107    67
+   44     4    71   111   107   127
+   45     7   124   112   108   128
+   46     4   124   112   108    68
+   47     4    72   112   108   128
+   48     8    72   112   108    68
+   49     4   130   117   113    73
+   50     7   130   117   113   133
+   51     8    77   117   113    73
+   52     4    77   117   113   133
+   53     4   129   118   114    74
+   54     7   129   118   114   134
+   55     8    78   118   114    74
+   56     4    78   118   114   134
+   57     4   131   119   115    75
+   58     7   131   119   115   135
+   59     8    79   119   115    75
+   60     4    79   119   115   135
+   61     4   132   120   116    76
+   62     7   132   120   116   136
+   63     8    80   120   116    76
+   64     4    80   120   116   136
+   65     2   137   121    90    50
+   66     3   137   121    90    94
+   67     5   109   121    90    50
+   68     1   109   121    90    94
+   69     3   137   121   109   105
+   70     2   137   121   109    69
+   71     1    90   121   109   105
+   72     5    90   121   109    69
+   73     2   138   122    89    49
+   74     3   138   122    89    93
+   75     5   110   122    89    49
+   76     1   110   122    89    93
+   77     1    89   122   110   106
+   78     5    89   122   110    70
+   79     3   138   122   110   106
+   80     2   138   122   110    70
+   81     2   139   123    91    51
+   82     3   139   123    91    95
+   83     5   111   123    91    51
+   84     1   111   123    91    95
+   85     1    91   123   111   107
+   86     5    91   123   111    71
+   87     3   139   123   111   107
+   88     2   139   123   111    71
+   89     2   140   124    92    52
+   90     3   140   124    92    96
+   91     5   112   124    92    52
+   92     1   112   124    92    96
+   93     1    92   124   112   108
+   94     5    92   124   112    72
+   95     3   140   124   112   108
+   96     2   140   124   112    72
+   97     1   106   125    93    89
+   98     5   106   125    93    53
+   99     3   141   125    93    89
+  100     2   141   125    93    53
+  101     2   141   125   106    66
+  102     3   141   125   106   110
+  103     5    93   125   106    66
+  104     1    93   125   106   110
+  105     1   105   126    94    90
+  106     5   105   126    94    54
+  107     3   142   126    94    90
+  108     2   142   126    94    54
+  109     5    94   126   105    65
+  110     1    94   126   105   109
+  111     2   142   126   105    65
+  112     3   142   126   105   109
+  113     1   107   127    95    91
+  114     5   107   127    95    55
+  115     3   143   127    95    91
+  116     2   143   127    95    55
+  117     2   143   127   107    67
+  118     3   143   127   107   111
+  119     5    95   127   107    67
+  120     1    95   127   107   111
+  121     1   108   128    96    92
+  122     5   108   128    96    56
+  123     3   144   128    96    92
+  124     2   144   128    96    56
+  125     2   144   128   108    68
+  126     3   144   128   108   112
+  127     5    96   128   108    68
+  128     1    96   128   108   112
+  129     2   145   129    97    57
+  130     3   145   129    97   101
+  131     5   118   129    97    57
+  132     1   118   129    97   101
+  133     1    97   129   118   114
+  134     5    97   129   118    78
+  135     3   145   129   118   114
+  136     2   145   129   118    78
+  137     5   117   130    98    58
+  138     1   117   130    98   102
+  139     2   146   130    98    58
+  140     3   146   130    98   102
+  141     1    98   130   117   113
+  142     5    98   130   117    77
+  143     3   146   130   117   113
+  144     2   146   130   117    77
+  145     2   147   131    99    59
+  146     3   147   131    99   103
+  147     5   119   131    99    59
+  148     1   119   131    99   103
+  149     1    99   131   119   115
+  150     5    99   131   119    79
+  151     3   147   131   119   115
+  152     2   147   131   119    79
+  153     2   148   132   100    60
+  154     3   148   132   100   104
+  155     5   120   132   100    60
+  156     1   120   132   100   104
+  157     1   100   132   120   116
+  158     5   100   132   120    80
+  159     3   148   132   120   116
+  160     2   148   132   120    80
+  161     1   113   133   102    98
+  162     5   113   133   102    62
+  163     3   149   133   102    98
+  164     2   149   133   102    62
+  165     2   149   133   113    73
+  166     3   149   133   113   117
+  167     5   102   133   113    73
+  168     1   102   133   113   117
+  169     1   114   134   101    97
+  170     5   114   134   101    61
+  171     3   150   134   101    97
+  172     2   150   134   101    61
+  173     5   101   134   114    74
+  174     1   101   134   114   118
+  175     2   150   134   114    74
+  176     3   150   134   114   118
+  177     1   115   135   103    99
+  178     5   115   135   103    63
+  179     3   151   135   103    99
+  180     2   151   135   103    63
+  181     2   151   135   115    75
+  182     3   151   135   115   119
+  183     5   103   135   115    75
+  184     1   103   135   115   119
+  185     1   116   136   104   100
+  186     5   116   136   104    64
+  187     3   152   136   104   100
+  188     2   152   136   104    64
+  189     2   152   136   116    76
+  190     3   152   136   116   120
+  191     5   104   136   116    76
+  192     1   104   136   116   120
+  193     9   121   137    10    86
+  194     9   121   137    29    83
+  195     6    10   137   121    90
+  196     6    10   137   121   109
+  197     6    29   137   121    90
+  198     6    29   137   121   109
+  199     9   122   138     9    85
+  200     9   122   138    30    84
+  201     6     9   138   122    89
+  202     6     9   138   122   110
+  203     6    30   138   122    89
+  204     6    30   138   122   110
+  205     9   123   139    11    87
+  206     9   123   139    31    81
+  207     6    11   139   123    91
+  208     6    11   139   123   111
+  209     6    31   139   123    91
+  210     6    31   139   123   111
+  211     9   124   140    12    88
+  212     9   124   140    32    82
+  213     6    12   140   124    92
+  214     6    12   140   124   112
+  215     6    32   140   124    92
+  216     6    32   140   124   112
+  217     9   125   141    13    81
+  218     9   125   141    26    88
+  219     6    26   141   125   106
+  220     6    26   141   125    93
+  221     6    13   141   125   106
+  222     6    13   141   125    93
+  223     9   126   142    14    82
+  224     9   126   142    25    87
+  225     6    25   142   126   105
+  226     6    25   142   126    94
+  227     6    14   142   126   105
+  228     6    14   142   126    94
+  229     9   127   143    15    83
+  230     9   127   143    27    85
+  231     6    27   143   127   107
+  232     6    27   143   127    95
+  233     6    15   143   127   107
+  234     6    15   143   127    95
+  235     9   128   144    16    84
+  236     9   128   144    28    86
+  237     6    28   144   128   108
+  238     6    28   144   128    96
+  239     6    16   144   128   108
+  240     6    16   144   128    96
+  241     9   129   145    17    87
+  242     9   129   145    38    82
+  243     6    17   145   129    97
+  244     6    17   145   129   118
+  245     6    38   145   129    97
+  246     6    38   145   129   118
+  247     9   130   146    18    88
+  248     9   130   146    37    81
+  249     6    18   146   130    98
+  250     6    18   146   130   117
+  251     6    37   146   130    98
+  252     6    37   146   130   117
+  253     9   131   147    19    85
+  254     9   131   147    39    83
+  255     6    19   147   131    99
+  256     6    19   147   131   119
+  257     6    39   147   131    99
+  258     6    39   147   131   119
+  259     9   132   148    20    86
+  260     9   132   148    40    84
+  261     6    20   148   132   100
+  262     6    20   148   132   120
+  263     6    40   148   132   100
+  264     6    40   148   132   120
+  265     9   133   149    22    84
+  266     9   133   149    33    85
+  267     6    33   149   133   113
+  268     6    33   149   133   102
+  269     6    22   149   133   113
+  270     6    22   149   133   102
+  271     9   134   150    21    83
+  272     9   134   150    34    86
+  273     6    34   150   134   114
+  274     6    34   150   134   101
+  275     6    21   150   134   114
+  276     6    21   150   134   101
+  277     9   135   151    23    81
+  278     9   135   151    35    87
+  279     6    35   151   135   115
+  280     6    35   151   135   103
+  281     6    23   151   135   115
+  282     6    23   151   135   103
+  283     9   136   152    24    82
+  284     9   136   152    36    88
+  285     6    36   152   136   116
+  286     6    36   152   136   104
+  287     6    24   152   136   116
+  288     6    24   152   136   104
+
+Impropers
+
+    1     3    89    49   122    93
+    2     3    90   121    50    94
+    3     3    91    51   123    95
+    4     3    92   124    52    96
+    5     3    93    89   125    53
+    6     3    94    90    54   126
+    7     3    95    91   127    55
+    8     3    96   128    92    56
+    9     3    97    57   129   101
+   10     3    98    58   102   130
+   11     3    99    59   131   103
+   12     3   100    60   132   104
+   13     3   101    97    61   134
+   14     3   102    98   133    62
+   15     3   103    99   135    63
+   16     3   104   100   136    64
+   17     3   105    65   109   126
+   18     3   106    66   125   110
+   19     3   107    67   127   111
+   20     3   108   128    68   112
+   21     3   109   105   121    69
+   22     3   110   106    70   122
+   23     3   111   107   123    71
+   24     3   112   124   108    72
+   25     3   113    73   133   117
+   26     3   114    74   118   134
+   27     3   115    75   135   119
+   28     3   116    76   136   120
+   29     3   117   113   130    77
+   30     3   118   129   114    78
+   31     3   119   115   131    79
+   32     3   120   116   132    80
+   33     1   121   137    90   109
+   34     1   122    89   138   110
+   35     1   123    91   139   111
+   36     1   124    92   140   112
+   37     1   125   106   141    93
+   38     1   126   105    94   142
+   39     1   127   107   143    95
+   40     1   128   108   144    96
+   41     1   129    97   145   118
+   42     1   130    98   117   146
+   43     1   131    99   147   119
+   44     1   132   100   148   120
+   45     1   133   113   149   102
+   46     1   134   114   101   150
+   47     1   135   115   151   103
+   48     1   136   116   152   104
+   49     2   137   121    10    29
+   50     2   138     9   122    30
+   51     2   139    11   123    31
+   52     2   140   124    12    32
+   53     2   141    26    13   125
+   54     2   142    25    14   126
+   55     2   143    27   127    15
+   56     2   144   128    28    16
+   57     2   145    17   129    38
+   58     2   146    18    37   130
+   59     2   147    19   131    39
+   60     2   148    20   132    40
+   61     2   149    33   133    22
+   62     2   150    34    21   134
+   63     2   151    35   135    23
+   64     2   152    36   136    24
diff --git a/examples/USER/yaff/mil53al/lammps.in b/examples/USER/yaff/mil53al/lammps.in
new file mode 100644
index 0000000000000000000000000000000000000000..a2b6329bbdfe433d858a1e29591e1f8f4d45447e
--- /dev/null
+++ b/examples/USER/yaff/mil53al/lammps.in
@@ -0,0 +1,42 @@
+#########################################
+#General settings
+#########################################
+units           real
+atom_style      full
+boundary        p p p
+dielectric      1
+
+#########################################
+#Force field and system specification
+#########################################
+special_bonds   lj 0.000000 0.000000 1.000000 coul 1.000000 1.000000 1.000000
+pair_style      mm3/switch3/coulgauss/long  12.0000  4.0000
+pair_modify     table 16 # Accuracy of the table used for real space electrostatics
+pair_modify     mix arithmetic
+pair_modify     tail no
+bond_style      harmonic
+angle_style     hybrid cosine/periodic cross harmonic cosine/squared
+dihedral_style  fourier
+improper_style  distharm
+box tilt large
+
+read_data       lammps.data       # Data file location
+kspace_style    pppm 0.0000001      # Ewald accuracy
+neighbor        2.0 multi
+neigh_modify    every 2 delay 4 check yes
+
+#########################################
+#Output settings
+#########################################
+thermo 100       # Provide output every n steps
+thermo_style 	custom step time etotal ke temp pe emol evdwl ecoul elong etail vol press
+thermo_modify	line multi format float %20.12f
+
+#########################################
+#Sampling options
+#########################################
+timestep 0.5 # in femtosecond
+velocity all create 0.0 5 # initial temperature in Kelvin and random seed
+fix 1 all npt temp 300.0 300.0 100.0 tri 2000.0 2000.0 1000.0 tchain 3 mtk yes nreset 1000
+fix_modify 1 energy yes # Add thermo/barostat contributions to energy
+run 10000
diff --git a/examples/USER/yaff/mof5/lammps.data b/examples/USER/yaff/mof5/lammps.data
new file mode 100644
index 0000000000000000000000000000000000000000..acc6f7d3d22392d1a958101adb3f65dd2811888f
--- /dev/null
+++ b/examples/USER/yaff/mof5/lammps.data
@@ -0,0 +1,4315 @@
+Generated by yaff2lammps
+
+                 424 atoms
+                 512 bonds
+                1824 angles 
+                1248 dihedrals
+                 192 impropers
+
+                   7 atom types
+                   7 bond types
+                  29 angle types
+                  11 dihedral types
+                   3 improper types
+
+    0.0000000000000000000000000000000000    26.4070248643267468935391661943867803 xlo xhi
+    0.0000000000000000000000000000000000    26.4070252891212220447414438240230083 ylo yhi
+    0.0000000000000000000000000000000000    26.4070257154843517355402582325041294 zlo zhi
+   -0.0000000007111492372846892652846758    -0.0000000000659408828932501509572980    -0.0000000000464737531820980317620204 xy xz yz
+
+Masses
+
+    1     65.40900000 #              Zn
+    2     15.99940000 #            O_CE
+    3     15.99940000 #            O_CA
+    4     12.01070000 #            C_CA
+    5     12.01070000 #            C_PH
+    6     12.01070000 #            C_PC
+    7      1.00794000 #            H_PH
+
+Bond Coeffs
+
+       1    682.36094515      1.27102391
+       2    499.48089314      1.38650552
+       3    328.64606795      1.49449724
+       4    465.15110963      1.39880394
+       5    406.68075027      1.08330871
+       6    107.02127303      2.03268653
+       7    113.67644184      1.98848069
+
+Angle Coeffs
+
+       1               cross    193.48062339    101.27328163    101.27328163      1.27218805      1.27218805    123.91120600
+       2               cross     90.86010618    104.60333096     43.56504880      1.27186911      1.49086906    118.21448172
+       3               cross     90.86010618     43.56504880    104.60333096      1.49086906      1.27186911    118.21448172
+       4               cross    130.81104940     12.67739461     16.17645862      1.39837427      1.38759779    120.07946149
+       5               cross    130.81104940     16.17645862     12.67739461      1.38759779      1.39837427    120.07946149
+       6               cross     11.41676921     30.63883886     25.17734414      1.08331485      1.39837427    119.52155527
+       7               cross     11.41676921     25.17734414     30.63883886      1.39837427      1.08331485    119.52155527
+       8               cross     12.44667401     28.35704887     28.27577085      1.38759779      1.08331485    120.41324047
+       9               cross     12.44667401     28.27577085     28.35704887      1.08331485      1.38759779    120.41324047
+      10               cross     75.95522848     37.17414513     10.05189907      1.49086906      1.39837427    119.94754556
+      11               cross     75.95522848     10.05189907     37.17414513      1.39837427      1.49086906    119.94754556
+      12               cross    144.65705708     -7.34407121     -7.34407121      1.39837427      1.39837427    119.90241395
+      13               cross     20.17000841      2.28355442     -7.92322284      1.98727825      2.03828701    109.42277782
+      14               cross     20.17000841     -7.92322284      2.28355442      2.03828701      1.98727825    109.42277782
+      15               cross     22.09014578     27.25520258     27.25520258      1.98727825      1.98727825    108.41474547
+      16               cross     35.09855972     13.51120456     13.51120456      2.03828701      2.03828701    110.23699695
+      17               cross     60.09401332      6.52883112      6.33031133      1.27250698      1.98727825    133.24307044
+      18               cross     60.09401332      6.33031133      6.52883112      1.98727825      1.27250698    133.24307044
+      19                 mm3     89.55892156    124.04066786
+      20                 mm3     66.99975548    120.08429731
+      21                 mm3     36.80738383    120.34964823
+      22                 mm3     78.98317285    118.11635047
+      23                 mm3     45.56202376    120.27481067
+      24                 mm3     38.05295940    119.66571944
+      25                 mm3     69.51816469    119.99726194
+      26                 mm3     10.37923783    135.02173615
+      27                 mm3      7.08946285    108.92035063
+      28                 mm3      9.10447143    107.51166462
+      29                 mm3     29.71892770    109.45766072
+
+Dihedral Coeffs
+
+       1    1      3.64767899     2   -180.00000000
+       2    1      2.35495004     2   -180.00000000
+       3    1      0.77392291     2   -180.00000000
+       4    1      4.23729765     2   -180.00000000
+       5    1      3.96491674     2   -180.00000000
+       6    1      3.27183804     2   -180.00000000
+       7    1      2.21748040     2   -180.00000000
+       8    1      5.15273943     2   -180.00000000
+       9    1      0.07197799     2   -180.00000000
+      10    1      1.18073306     2   -180.00000000
+      11    1      0.13801067     3   -180.00000000
+
+Improper Coeffs
+
+       1     27.54315214      0.30000000
+       2    196.72513766      0.20000000
+       3     21.31242806      0.10000000
+
+Pair Coeffs
+
+    1       0.276000000000       2.290000000000       2.073000000000 #              Zn
+    2       0.059000000000       1.820000000000       1.132500000000 #            O_CE
+    3       0.059000000000       1.820000000000       1.132500000000 #            O_CA
+    4       0.056000000000       1.940000000000       1.164600000000 #            C_CA
+    5       0.056000000000       1.960000000000       1.164600000000 #            C_PH
+    6       0.056000000000       1.960000000000       1.164600000000 #            C_PC
+    7       0.020000000000       1.620000000000       0.730900000000 #            H_PH
+
+Atoms
+
+    1   1   1     1.1385908011000001049950469678151421     7.7681655356393379818769062694627792     5.4353470464458997213341717724688351     5.4353481400207055429518732125870883
+    2   1   1     1.1385908011000001049950469678151421    18.6388604818900276427484641317278147    20.9716793824397242929080675821751356    20.9716786980636094028795923804864287
+    3   1   1     1.1385908011000001049950469678151421    18.6388604828091395404499053256586194    20.9716793882223804246223153313621879     5.4353481469762670030831941403448582
+    4   1   1     1.1385908011000001049950469678151421     7.7681655364778690042726339015644044     5.4353470521724522868112217111047357    20.9716787050184301222088834038004279
+    5   1   1     1.1385908011000001049950469678151421    18.6388604820358487756948306923732162     5.4353470549395410671422723680734634    20.9716787022728006206762074725702405
+    6   1   1     1.1385908011000001049950469678151421     7.7681655348670091143503668718039989    20.9716793909088075054114597151055932     5.4353481442725533057114262192044407
+    7   1   1     1.1385908011000001049950469678151421     7.7681655357115895199626720568630844    20.9716793851271745552367065101861954    20.9716787007712568424722121562808752
+    8   1   1     1.1385908011000001049950469678151421    18.6388604829732216217053064610809088     5.4353470492259390312028699554502964     5.4353481427881851217875919246580452
+    9   1   1     1.1385908011000001049950469678151421     5.4353480335349191321370199148077518     7.7681659778904474933369783684611320     5.4353473910968492788242656388320029
+   10   1   1     1.1385908011000001049950469678151421    20.9716779882094357390087679959833622    18.6388604499221948174181306967511773    20.9716794503401686711185902822762728
+   11   1   1     1.1385908011000001049950469678151421     5.4353480418414452657316360273398459    18.6388604476287227385000733193010092    20.9716794526507896989642176777124405
+   12   1   1     1.1385908011000001049950469678151421    20.9716779971001834326216339832171798     7.7681659755144787382619142590556294     5.4353473934498337527543299074750394
+   13   1   1     1.1385908011000001049950469678151421    20.9716779939941133648062532301992178    18.6388604508393349590278376126661897     5.4353473947126449417055482626892626
+   14   1   1     1.1385908011000001049950469678151421     5.4353480392393134223993911291472614     7.7681659787512575832124639418907464    20.9716794539569519884025794453918934
+   15   1   1     1.1385908011000001049950469678151421    20.9716779912964526033647416625171900     7.7681659763617938452284761297050864    20.9716794515814761723504489054903388
+   16   1   1     1.1385908011000001049950469678151421     5.4353480361288601940827902581077069    18.6388604485427613610681873979046941     5.4353473923970669900995744683314115
+   17   1   1     1.1385908011000001049950469678151421     5.4353473615433571808353008236736059     5.4353484119468289392784754454623908     7.7681665390863825493283911782782525
+   18   1   1     1.1385908011000001049950469678151421    20.9716786635264433868997002718970180    20.9716780214450366770506661850959063    18.6388602999156418604798091109842062
+   19   1   1     1.1385908011000001049950469678151421    20.9716786678593969384110096143558621     5.4353484156213465183782318490557373    18.6388602987394449428393272683024406
+   20   1   1     1.1385908011000001049950469678151421     5.4353473649551853341677087882999331    20.9716780252386136851328046759590507     7.7681665379556230632829283422324806
+   21   1   1     1.1385908011000001049950469678151421     5.4353473663194220577565829444210976    20.9716780238284776771706674480810761    18.6388602975496908698005427140742540
+   22   1   1     1.1385908011000001049950469678151421    20.9716786692716929962898575467988849     5.4353484142481827134929517342243344     7.7681665367625623019876002217642963
+   23   1   1     1.1385908011000001049950469678151421    20.9716786649501152339780674083158374    20.9716780228583630218963662628084421     7.7681665355948394946494772739242762
+   24   1   1     1.1385908011000001049950469678151421     5.4353473629214468232362378330435604     5.4353484133301899206003326980862767    18.6388602964345366785892110783606768
+   25   1   1     1.1385908011000001049950469678151421     7.7681661448906043077045069367159158    18.6388603674339208282617619261145592    18.6388609743165929444330686237663031
+   26   1   1     1.1385908011000001049950469678151421    18.6388598649385599514971545431762934     7.7681660573387638635267649078741670     7.7681658552096362058136946870945394
+   27   1   1     1.1385908011000001049950469678151421    18.6388598693962634911258646752685308     7.7681660528421563327583498903550208    18.6388609736337329536581819411367178
+   28   1   1     1.1385908011000001049950469678151421     7.7681661493951921215739275794476271    18.6388603629757554358548077289015055     7.7681658545225156231595065037254244
+   29   1   1     1.1385908011000001049950469678151421    18.6388598684865343102501356042921543    18.6388603657511033873106498504057527     7.7681658517638823013840010389685631
+   30   1   1     1.1385908011000001049950469678151421     7.7681661489359852268421491316985339     7.7681660555329976602934038965031505    18.6388609709207209164105734089389443
+   31   1   1     1.1385908011000001049950469678151421     7.7681661534287194115222519030794501     7.7681660600201682953525050834286958     7.7681658579038215250989196647424251
+   32   1   1     1.1385908011000001049950469678151421    18.6388598729334624692910438170656562    18.6388603702083806012979039223864675    18.6388609770715056868084502639248967
+   33   1   2    -1.1996262903999999060999925859505311     6.6017567794254068402892698941286653     6.6017568805824877742338685493450612     6.6017569851852506701561651425436139
+   34   1   2    -1.1996262903999999060999925859505311    19.8052692450136689217288221698254347    19.8052695509050984412624529795721173    19.8052698542058642772190069081261754
+   35   1   2    -1.1996262903999999060999925859505311    19.8052692451266771911377873038873076    19.8052695509947689345153776230290532     6.6017569850626030003581945493351668
+   36   1   2    -1.1996262903999999060999925859505311     6.6017567794610032549940115131903440     6.6017568806120694446804009203333408    19.8052698540833276297234988305717707
+   37   1   2    -1.1996262903999999060999925859505311    19.8052692455747880728722520871087909     6.6017568806341531129078248341102153    19.8052698541859548697630089009180665
+   38   1   2    -1.1996262903999999060999925859505311     6.6017567792593823128299845848232508    19.8052695509999701073411415563896298     6.6017569849619262001283459539990872
+   39   1   2    -1.1996262903999999060999925859505311     6.6017567793064513281819927215110511    19.8052695509013538810449972515925765    19.8052698543089888971735490486025810
+   40   1   2    -1.1996262903999999060999925859505311    19.8052692456725587533128418726846576     6.6017568805577271362494684581179172     6.6017569850833739408813016780186445
+   41   1   3    -0.6614125480999999417974777315976098     7.3942181733283014466451277257874608     5.8092937865263580832220213778782636     3.5019658020624895300443313317373395
+   42   1   3    -0.6614125480999999417974777315976098    19.0128078425525721684152813395485282    20.5977326425952682598108367528766394    22.9050610423764169354399200528860092
+   43   1   3    -0.6614125480999999417974777315976098    19.0128078411376932876919454429298639    20.5977326418579700373356899945065379     3.5019658064874317204839826445095241
+   44   1   3    -0.6614125480999999417974777315976098     7.3942181718381911892379321216139942     5.8092937857008299928907035791780800    22.9050610467861481822637870209291577
+   45   1   3    -0.6614125480999999417974777315976098    19.0128078564215385881652764510363340     5.8092937813638991784159770759288222    22.9050610450410161433865141589194536
+   46   1   3    -0.6614125480999999417974777315976098     7.3942181862512610379667421511840075    20.5977326373507381163108220789581537     3.5019658046746764412660013476852328
+   47   1   3    -0.6614125480999999417974777315976098     7.3942181846366104025491949869319797    20.5977326379863434624439832987263799    22.9050610442565165669748239452019334
+   48   1   3    -0.6614125480999999417974777315976098    19.0128078545243539565490209497511387     5.8092937816891616620296190376393497     3.5019658041565966399844000989105552
+   49   1   3    -0.6614125480999999417974777315976098     3.5019657909495807146527113218326122     7.3942187212764647341600721119903028     5.8092944677925419938446793821640313
+   50   1   3    -0.6614125480999999417974777315976098    22.9050602369784179757061792770400643    19.0128076948782052113529061898589134    20.5977323618679157846145244548097253
+   51   1   3    -0.6614125480999999417974777315976098     3.5019657972852078486880600394215435    19.0128076933941407844486093381419778    20.5977323633455640106149076018482447
+   52   1   3    -0.6614125480999999417974777315976098    22.9050602427862557419757649768143892     7.3942187215476389283708158473018557     5.8092944675320916658733949589077383
+   53   1   3    -0.6614125480999999417974777315976098    22.9050602407389938264259399147704244    19.0128077137566151577630080282688141     5.8092944665556016659024862747173756
+   54   1   3    -0.6614125480999999417974777315976098     3.5019657945506681429037598718423396     7.3942187399778358525281873880885541    20.5977323605050735011445794953033328
+   55   1   3    -0.6614125480999999417974777315976098    22.9050602387797610504094336647540331     7.3942187407221728889794576389249414    20.5977323612425990972951694857329130
+   56   1   3    -0.6614125480999999417974777315976098     3.5019657935145551697075916308676824    19.0128077123963770134196238359436393     5.8092944652027505014757480239495635
+   57   1   3    -0.6614125480999999417974777315976098     5.8092942248463375065625768911559135     3.5019659445057245150678681966383010     7.3942200042889165700898956856690347
+   58   1   3    -0.6614125480999999417974777315976098    20.5977317920127909189886850072070956    22.9050604931258803276250546332448721    19.0128068387566280250666750362142920
+   59   1   3    -0.6614125480999999417974777315976098    20.5977317911533504002363770268857479     3.5019659473096780288869922515004873    19.0128068375803138678747927770018578
+   60   1   3    -0.6614125480999999417974777315976098     5.8092942247353196449921597377397120    22.9050604972263194269999075913801789     7.3942200013357615162590263935271651
+   61   1   3    -0.6614125480999999417974777315976098     5.8092942250240371393488203466404229    22.9050604954516501265970873646438122    19.0128068461052670556910015875473619
+   62   1   3    -0.6614125480999999417974777315976098    20.5977317913448167985279724234715104     3.5019659454737896986387113429373130     7.3942200097043766504611994605511427
+   63   1   3    -0.6614125480999999417974777315976098    20.5977317923231417751139815663918853    22.9050604949299945189977734116837382     7.3942200086482570142720760486554354
+   64   1   3    -0.6614125480999999417974777315976098     5.8092942249925405562294145056512207     3.5019659463469063886975618515862152    19.0128068430089136597871402045711875
+   65   1   3    -0.6614125480999999417974777315976098     5.8092960785327898420860037731472403     7.3942182075750313430262394831515849    22.9050614002890959852720698108896613
+   66   1   3    -0.6614125480999999417974777315976098    20.5977299401312841098388162208721042    19.0128082239953606347171444213017821     3.5019654517842653262960084248334169
+   67   1   3    -0.6614125480999999417974777315976098    20.5977299405712770408172218594700098    19.0128082257082873240960907423868775    22.9050613972744407931259047472849488
+   68   1   3    -0.6614125480999999417974777315976098     5.8092960790514895919045557093340904     7.3942182093726591673998882470186800     3.5019654487820419674903860141057521
+   69   1   3    -0.6614125480999999417974777315976098     5.8092960762463938806376972934231162    19.0128082304078702691185753792524338     3.5019654501479484665082964056637138
+   70   1   3    -0.6614125480999999417974777315976098    20.5977299386054824026359710842370987     7.3942182142183732196372147882357240    22.9050613984380468934887176146730781
+   71   1   3    -0.6614125480999999417974777315976098    20.5977299376820504051011084811761975     7.3942182155180562475038641423452646     3.5019654502855197542032783530885354
+   72   1   3    -0.6614125480999999417974777315976098     5.8092960756012583800611537299118936    19.0128082320136755356543289963155985    22.9050613988376525753665191587060690
+   73   1   3    -0.6614125480999999417974777315976098     7.3942172056483563835627137450501323     3.5019653161967823074007810646435246    20.5977303905757622715100296773016453
+   74   1   3    -0.6614125480999999417974777315976098    19.0128088409146194237564486684277654    22.9050611265415646755627676611766219     5.8092964336224230947891555842943490
+   75   1   3    -0.6614125480999999417974777315976098    19.0128088404674606692879024194553494     3.5019653150334657532027904380811378     5.8092964323469908904939984495285898
+   76   1   3    -0.6614125480999999417974777315976098     7.3942172062134545740264002233743668    22.9050611238859431750825024209916592    20.5977303913429352633102098479866982
+   77   1   3    -0.6614125480999999417974777315976098    19.0128088218691964073059352813288569    22.9050611226776190676446276484057307    20.5977303949553345319145591929554939
+   78   1   3    -0.6614125480999999417974777315976098     7.3942171867826607112306191993411630     3.5019653124559817491956437152111903     5.8092964378953917403691775689367205
+   79   1   3    -0.6614125480999999417974777315976098     7.3942171872283024569583176344167441    22.9050611277551752209546975791454315     5.8092964372482214230331010185182095
+   80   1   3    -0.6614125480999999417974777315976098    19.0128088215761614776511123636737466     3.5019653187266461813464957231190056    20.5977303960754589695625327294692397
+   81   1   3    -0.6614125480999999417974777315976098     3.5019654779337230365854338742792606     5.8092967237013635184439408476464450    19.0128078412212566661310120252892375
+   82   1   3    -0.6614125480999999417974777315976098    22.9050605550011709965474437922239304    20.5977296963806075780212268000468612     7.3942190175944446650646568741649389
+   83   1   3    -0.6614125480999999417974777315976098     3.5019654778984468102009941503638402    20.5977296959421032340742385713383555     7.3942190171633228601422160863876343
+   84   1   3    -0.6614125480999999417974777315976098    22.9050605571640275570644007530063391     5.8092967253534926186375741963274777    19.0128078428666391630486032227054238
+   85   1   3    -0.6614125480999999417974777315976098    22.9050605588242035537405172362923622     5.8092967248778739630665768345352262     7.3942190047566755950469996605534106
+   86   1   3    -0.6614125480999999417974777315976098     3.5019654796467700741402495623333380    20.5977296956396678240253095282241702    19.0128078302438510149841022212058306
+   87   1   3    -0.6614125480999999417974777315976098    22.9050605531062210218351538060232997    20.5977296962075158148763875942677259    19.0128078296824511994600470643490553
+   88   1   3    -0.6614125480999999417974777315976098     3.5019654760072134180859393381979316     5.8092967236924213381143999868072569     7.3942190059313750438718670920934528
+   89   1   3    -0.6614125480999999417974777315976098     7.3942189816897174736709530407097191    19.0128074720672763930906512541696429    16.7054786480276398208388854982331395
+   90   1   3    -0.6614125480999999417974777315976098    19.0128070348148447976655006641522050     7.3942189561113034201866867078933865     9.7015481798496168153178587090224028
+   91   1   3    -0.6614125480999999417974777315976098    19.0128070398263808726824208861216903     7.3942189510663363094522537721786648    16.7054786479772090501683123875409365
+   92   1   3    -0.6614125480999999417974777315976098     7.3942189868229606375393814232666045    19.0128074669634301585574576165527105     9.7015481797389462315095443045720458
+   93   1   3    -0.6614125480999999417974777315976098    19.0128070404677238514068449148908257    19.0128074623046927627001423388719559     9.7015481777709826616273858235217631
+   94   1   3    -0.6614125480999999417974777315976098     7.3942189879737281188454289804212749     7.3942189463278769068210749537684023    16.7054786460043480644799274159595370
+   95   1   3    -0.6614125480999999417974777315976098     7.3942189934460786915337848768103868     7.3942189517942757959190203109756112     9.7015481815281976452070011873729527
+   96   1   3    -0.6614125480999999417974777315976098    19.0128070456709394875360885635018349    19.0128074675123386327868502121418715    16.7054786499265404131620016414672136
+   97   1   3    -0.6614125480999999417974777315976098     5.8092958879240672587229710188694298    16.7054783005063463008355029160156846    20.5977324335008376010591746307909489
+   98   1   3    -0.6614125480999999417974777315976098    20.5977301425774470544638461433351040     9.7015481188062686612738616531714797     5.8092944042885532596187658782582730
+   99   1   3    -0.6614125480999999417974777315976098    20.5977301400728656233241053996607661    16.7054783015092667142198479268699884     5.8092943997067569839032330492045730
+  100   1   3    -0.6614125480999999417974777315976098     5.8092958876427820413823610579129308     9.7015481210446257165358474594540894    20.5977324270892765412099834065884352
+  101   1   3    -0.6614125480999999417974777315976098     5.8092958752098597940971558273304254     9.7015481211045688780814089113846421     5.8092944116117468666971035418100655
+  102   1   3    -0.6614125480999999417974777315976098    20.5977301274566038102875609183683991    16.7054783014434455878927110461518168    20.5977324388839591051691968459635973
+  103   1   3    -0.6614125480999999417974777315976098    20.5977301301355062435050058411434293     9.7015481186871035390595352509990335    20.5977324344775460929213295457884669
+  104   1   3    -0.6614125480999999417974777315976098     5.8092958754208696703358327795285732    16.7054783005406477514043217524886131     5.8092944051289316931274697708431631
+  105   1   3    -0.6614125480999999417974777315976098     5.8092949017410688838936039246618748    20.5977298991426849283925548661500216     9.7015485084123813663836699561215937
+  106   1   3    -0.6614125480999999417974777315976098    20.5977311254701582754478295100852847     5.8092965212149643150496558519080281    16.7054783203509877864689769921824336
+  107   1   3    -0.6614125480999999417974777315976098    20.5977311213527762845387769630178809     5.8092965253640072020857587631326169     9.7015485077352501264158490812405944
+  108   1   3    -0.6614125480999999417974777315976098     5.8092948975013145584966878232080489    20.5977299033513006065732042770832777    16.7054783197338672096066147787496448
+  109   1   3    -0.6614125480999999417974777315976098     5.8092948913148871881162449426483363     5.8092965273910293078074573713820428    16.7054783188796989179536467418074608
+  110   1   3    -0.6614125480999999417974777315976098    20.5977311144287682509457226842641830    20.5977299054634386266116052865982056     9.7015485067859241752330490271560848
+  111   1   3    -0.6614125480999999417974777315976098    20.5977311187387677193783019902184606    20.5977299097761239465853577712550759    16.7054783214311690642261964967474341
+  112   1   3    -0.6614125480999999417974777315976098     5.8092948958969143902208998042624444     5.8092965319653133704491665412206203     9.7015485095041622543021730962209404
+  113   1   3    -0.6614125480999999417974777315976098     7.3942187611208280983987606305163354    16.7054782673867414644064410822466016     7.3942180412462903404957614839076996
+  114   1   3    -0.6614125480999999417974777315976098    19.0128072665808041108448378508910537     9.7015481487976540364570610108785331    19.0128087749036005504876811755821109
+  115   1   3    -0.6614125480999999417974777315976098    19.0128072637524319077328982530161738    16.7054782725891541872442758176475763    19.0128087808776520262199483113363385
+  116   1   3    -0.6614125480999999417974777315976098     7.3942187607602267718220900860615075     9.7015481525794484696234576404094696     7.3942180492968132554665317002218217
+  117   1   3    -0.6614125480999999417974777315976098    19.0128072681088831075157941086217761     9.7015481513881791642006646725349128     7.3942180528998298072451689222361892
+  118   1   3    -0.6614125480999999417974777315976098     7.3942187627146598316585368593223393    16.7054782700166448705658694962039590    19.0128087864319539335156150627881289
+  119   1   3    -0.6614125480999999417974777315976098     7.3942187622570276772648867336101830     9.7015481499845694912664839648641646    19.0128087784795489767475373810157180
+  120   1   3    -0.6614125480999999417974777315976098    19.0128072654169599786655453499406576    16.7054782699551758184952632291242480     7.3942180467881630789861446828581393
+  121   1   3    -0.6614125480999999417974777315976098    16.7054779462080809082635823870077729     7.3942181373565327717756190395448357    19.0128089291277326822182658361271024
+  122   1   3    -0.6614125480999999417974777315976098     9.7015480683850832122061547124758363    19.0128083000016694370515324408188462     7.3942179110456356383451748115476221
+  123   1   3    -0.6614125480999999417974777315976098    16.7054779464473988070949417306110263    19.0128082993325300265041732927784324     7.3942179117071376026615325827151537
+  124   1   3    -0.6614125480999999417974777315976098     9.7015480679456729262710723560303450     7.3942181384685099487796833273023367    19.0128089280246150849507102975621819
+  125   1   3    -0.6614125480999999417974777315976098     9.7015480657450723356305388733744621    19.0128082984084976203575934050604701    19.0128089166837881407445820514112711
+  126   1   3    -0.6614125480999999417974777315976098    16.7054779434552109762535110348835588     7.3942181355549658761106002202723175     7.3942178983506563483274476311635226
+  127   1   3    -0.6614125480999999417974777315976098     9.7015480704414240875621544546447694     7.3942181371201511907997883099596947     7.3942178999110481640855141449719667
+  128   1   3    -0.6614125480999999417974777315976098    16.7054779489779363643719989340752363    19.0128082978158339244600938400253654    19.0128089161001945228690601652488112
+  129   1   3    -0.6614125480999999417974777315976098    16.7054782227603837441165524069219828     5.8092939274234378643768650363199413     5.8092955786821107722062151879072189
+  130   1   3    -0.6614125480999999417974777315976098     9.7015477910991965160292238579131663    20.5977324837256219325354322791099548    20.5977312604598665757293929345905781
+  131   1   3    -0.6614125480999999417974777315976098    16.7054782222166835481402813456952572    20.5977324824371059719396725995466113    20.5977312591786052564657438779249787
+  132   1   3    -0.6614125480999999417974777315976098     9.7015477929291300540626252768561244     5.8092939282851405735641492356080562     5.8092955795372036575940910552162677
+  133   1   3    -0.6614125480999999417974777315976098     9.7015477927467053120835771551355720     5.8092939405732488822309278475586325    20.5977312593216446146016096463426948
+  134   1   3    -0.6614125480999999417974777315976098    16.7054782221912674344821425620466471    20.5977324948995530462525493931025267     5.8092955795570091481749841477721930
+  135   1   3    -0.6614125480999999417974777315976098     9.7015477911436871494288425310514867    20.5977324962684740228269220096990466     5.8092955781939252801748807542026043
+  136   1   3    -0.6614125480999999417974777315976098    16.7054782225499032222160167293623090     5.8092939401670777854747029778081924    20.5977312597170971741888934047892690
+  137   1   4     0.8023877470999999372835986832797062     6.6017571969835175949015138030517846     6.6017559437386283960336186282802373     2.9116401488184662227354237984400243
+  138   1   4     0.8023877470999999372835986832797062    19.8052688195818298311223770724609494    19.8052704863584274619370262371376157    23.4953866980199528313733026152476668
+  139   1   4     0.8023877470999999372835986832797062    19.8052688183239204988694837084040046    19.8052704856782035847118095261976123     2.9116401520553725212892004492459819
+  140   1   4     0.8023877470999999372835986832797062     6.6017571955836666930395040253642946     6.6017559430250853935717714193742722    23.4953867012559136639993084827437997
+  141   1   4     0.8023877470999999372835986832797062    19.8052688258025213485780113842338324     6.6017559439238882035283495497424155    23.4953866997633120661248540272936225
+  142   1   4     0.8023877470999999372835986832797062     6.6017572028717568244360336393583566    19.8052704869948463795026327716186643     2.9116401505074249733695523900678381
+  143   1   4     0.8023877470999999372835986832797062     6.6017572017339434253813124087173492    19.8052704878974275004566152347251773    23.4953866995706448506098240613937378
+  144   1   4     0.8023877470999999372835986832797062    19.8052688255519200311027816496789455     6.6017559456832000108761349110864103     2.9116401503125768357449487666599452
+  145   1   4     0.8023877470999999372835986832797062     2.9116401612969129431007786479312927     6.6017578088235699951269452867563814     6.6017567029365027408971400291193277
+  146   1   4     0.8023877470999999372835986832797062    23.4953858693740684771000815089792013    19.8052686062430218782992596970871091    19.8052701278573941578997619217261672
+  147   1   4     0.8023877470999999372835986832797062     2.9116401653847452379864080285187811    19.8052686083734208466466952813789248    19.8052701257283985114554525353014469
+  148   1   4     0.8023877470999999372835986832797062    23.4953858742513190804857003968209028     6.6017578073222944468056994082871825     6.6017567044375065066219576692674309
+  149   1   4     0.8023877470999999372835986832797062    23.4953858717166710334822710137814283    19.8052686176479504354119853815063834     6.6017567090324922318700373580213636
+  150   1   4     0.8023877470999999372835986832797062     2.9116401635720716711830391432158649     6.6017578204409961273313456331379712    19.8052701342124066741234855726361275
+  151   1   4     0.8023877470999999372835986832797062    23.4953858719134451860099943587556481     6.6017578179544464944683568319305778    19.8052701317253472268475888995453715
+  152   1   4     0.8023877470999999372835986832797062     2.9116401631070232269848929718136787    19.8052686195107732203268824378028512     6.6017567108934578357093414524570107
+  153   1   4     0.8023877470999999372835986832797062     6.6017556091303815080095773737411946     2.9116401529908246814670746971387416     6.6017583561851527207409162656404078
+  154   1   4     0.8023877470999999372835986832797062    19.8052704016008718213015526998788118    23.4953862854585153741027170326560736    19.8052684797876885625100840115919709
+  155   1   4     0.8023877470999999372835986832797062    19.8052704036894162697990395827218890     2.9116401567873730904523199569666758    19.8052684772410430014133453369140625
+  156   1   4     0.8023877470999999372835986832797062     6.6017556064066349463814731279853731    23.4953862892921669924817251740023494     6.6017583573405733687877727788873017
+  157   1   4     0.8023877470999999372835986832797062     6.6017556174052440809418840217404068    23.4953862869670899726770585402846336    19.8052684791960373900110425893217325
+  158   1   4     0.8023877470999999372835986832797062    19.8052704150917406877852044999599457     2.9116401544995409444993583747418597     6.6017583596334485918077916721813381
+  159   1   4     0.8023877470999999372835986832797062    19.8052704127173413439777505118399858    23.4953862877626882266213215189054608     6.6017583568007758287876640679314733
+  160   1   4     0.8023877470999999372835986832797062     6.6017556204024048227552157186437398     2.9116401552464652446872150903800502    19.8052684806248606719236704520881176
+  161   1   4     0.8023877470999999372835986832797062     6.6017569871427506100758364482317120    19.8052686155319364047500130254775286    16.1151530027094409547316899988800287
+  162   1   4     0.8023877470999999372835986832797062    19.8052690279446146348618640331551433     6.6017578126316776021553778264205903    10.2918738240178040399541714577935636
+  163   1   4     0.8023877470999999372835986832797062    19.8052690337015597776826325571164489     6.6017578068506432842355025059077889    16.1151530029257905596296041039749980
+  164   1   4     0.8023877470999999372835986832797062     6.6017569927509436311652279982808977    19.8052686099487900150961650069802999    10.2918738242353455802913231309503317
+  165   1   4     0.8023877470999999372835986832797062    19.8052690286696808641409006668254733    19.8052686115258715915388165740296245    10.2918738227387400741008605109527707
+  166   1   4     0.8023877470999999372835986832797062     6.6017569886354863228916656225919724     6.6017578086619037591731284919660538    16.1151530013772017468909325543791056
+  167   1   4     0.8023877470999999372835986832797062     6.6017569935325024488292910973541439     6.6017578135548173889901590882800519    10.2918738255669737213793268892914057
+  168   1   4     0.8023877470999999372835986832797062    19.8052690340270665103616920532658696    19.8052686168877833949863997986540198    16.1151530042017192556613736087456346
+  169   1   4     0.8023877470999999372835986832797062     6.6017573607993993434206458914559335    16.1151528052077495090088632423430681    19.8052706494171779638691077707335353
+  170   1   4     0.8023877470999999372835986832797062    19.8052686681010499114563572220504284    10.2918736136625295074509267578832805     6.6017561876353383354398829396814108
+  171   1   4     0.8023877470999999372835986832797062    19.8052686692267663204347627470269799    16.1151528056969297608702618163079023     6.6017561797337460660628494224511087
+  172   1   4     0.8023877470999999372835986832797062     6.6017573584041384648912753618787974    10.2918736141181028642677119933068752    19.8052706453486599968982773134484887
+  173   1   4     0.8023877470999999372835986832797062     6.6017573516964329627398910815827549    10.2918736152040821707487339153885841     6.6017561870587400107979192398488522
+  174   1   4     0.8023877470999999372835986832797062    19.8052686626823195581437175860628486    16.1151528067376936803611897630617023    19.8052706529029336479652556590735912
+  175   1   4     0.8023877470999999372835986832797062    19.8052686612313095793069805949926376    10.2918736126082421833416447043418884    19.8052706446759039238258992554619908
+  176   1   4     0.8023877470999999372835986832797062     6.6017573542667236097258864901959896    16.1151528041889378073392435908317566     6.6017561831653850390466686803847551
+  177   1   4     0.8023877470999999372835986832797062    16.1151526067618817705806577578186989     6.6017559759992918699822439521085471    19.8052701376361355301014555152505636
+  178   1   4     0.8023877470999999372835986832797062    10.2918734059065446473368865554220974    19.8052704597004378683777758851647377     6.6017567011958844247487832035403699
+  179   1   4     0.8023877470999999372835986832797062    16.1151526067073120884742820635437965    19.8052704618172157324806903488934040     6.6017566990795506498557188024278730
+  180   1   4     0.8023877470999999372835986832797062    10.2918734065027450697016320191323757     6.6017559744341305361103877658024430    19.8052701392002177271933760493993759
+  181   1   4     0.8023877470999999372835986832797062    10.2918734048056492724754207301884890    19.8052704530323850917739036958664656    19.8052701313082444301016948884353042
+  182   1   4     0.8023877470999999372835986832797062    16.1151526057216081255774042801931500     6.6017559699027463793186143448110670     6.6017566953932256268444689339958131
+  183   1   4     0.8023877470999999372835986832797062    10.2918734076050899517440484487451613     6.6017559673846424317389391944743693     6.6017566928753890209691235213540494
+  184   1   4     0.8023877470999999372835986832797062    16.1151526077415532256509322905912995    19.8052704549817875090411689598113298    19.8052701332566059022610716056078672
+  185   1   5    -0.1059498145999999973998484392723185     7.4580708971362907888646986975800246     5.7454397499282556793787080096080899     0.6950441809839732476561380281054880
+  186   1   5    -0.1059498145999999973998484392723185    18.9489551150479549335159390466287732    20.6615866757037238699012959841638803    25.7119826716055186466292070690542459
+  187   1   5    -0.1059498145999999973998484392723185    18.9489551141377923215713963145390153    20.6615866760237167909508571028709412     0.6950441813029240023524835123680532
+  188   1   5    -0.1059498145999999973998484392723185     7.4580708960956281217136165651027113     5.7454397501657616942338790977373719    25.7119826719217101640424516517668962
+  189   1   5    -0.1059498145999999973998484392723185    18.9489552061429051832419645506888628     5.7454396712088087184611140401102602    25.7119826717282329298086551716551185
+  190   1   5    -0.1059498145999999973998484392723185     7.4580709874804735903808250441215932    20.6615865971249483834526472492143512     0.6950441811858094620646397743257694
+  191   1   5    -0.1059498145999999973998484392723185     7.4580709864703598199753287190105766    20.6615865968299345922787324525415897    25.7119826717274975180771434679627419
+  192   1   5    -0.1059498145999999973998484392723185    18.9489552053725631708402943331748247     5.7454396711167001754461125528905541     0.6950441811556488103107653842016589
+  193   1   5    -0.1059498145999999973998484392723185     0.6950442013570656829557492528692819     7.4580714055883348123643372673541307     5.7454404384383632731214675004594028
+  194   1   5    -0.1059498145999999973998484392723185    25.7119818361682952456703787902370095    18.9489550041569643212824303191155195    20.6615863853566459340527217136695981
+  195   1   5    -0.1059498145999999973998484392723185     0.6950442013678133079679355432745069    18.9489550038616485494458174798637629    20.6615863856523027664024994010105729
+  196   1   5    -0.1059498145999999973998484392723185    25.7119818370475208268999267602339387     7.4580714047603722249846214253921062     5.7454404392666607037654102896340191
+  197   1   5    -0.1059498145999999973998484392723185    25.7119818364503593954850657610222697    18.9489551023581306310461513930931687     5.7454403654191388284289132570847869
+  198   1   5    -0.1059498145999999973998484392723185     0.6950442015629493264228244697733317     7.4580715037794869104459394293371588    20.6615863123799385903112124651670456
+  199   1   5    -0.1059498145999999973998484392723185    25.7119818367882828624715330079197884     7.4580715028148123479923015111126006    20.6615863114149362900207052007317543
+  200   1   5    -0.1059498145999999973998484392723185     0.6950442011640962647334163193590939    18.9489551020285560412048653233796358     5.7454403650892471588917942426633090
+  201   1   5    -0.1059498145999999973998484392723185     5.7454408619173022998438682407140732     0.6950441931181976507048148050671443     7.4580736949951553782511837198399007
+  202   1   5    -0.1059498145999999973998484392723185    20.6615851428490451269226468866690993    25.7119822508355113654943124856799841    18.9489531389739340738742612302303314
+  203   1   5    -0.1059498145999999973998484392723185    20.6615851440200444244510435964912176     0.6950441935380002878019922718522139    18.9489531381121594222349813207983971
+  204   1   5    -0.1059498145999999973998484392723185     5.7454408611923186711578637186903507    25.7119822511307773993394221179187298     7.4580736946819214949755405541509390
+  205   1   5    -0.1059498145999999973998484392723185     5.7454407944009684428010586998425424    25.7119822508835156327222648542374372    18.9489532224887504696653195424005389
+  206   1   5    -0.1059498145999999973998484392723185    20.6615850773308729060318000847473741     0.6950441933570803421105210873065516     7.4580737791033016037545166909694672
+  207   1   5    -0.1059498145999999973998484392723185    20.6615850761211738984002295183017850    25.7119822510679902904939808649942279     7.4580737782028174720494462235365063
+  208   1   5    -0.1059498145999999973998484392723185     5.7454407951667132437023610691539943     0.6950441933110265146922301937593147    18.9489532222162786467833939241245389
+  209   1   5    -0.1059498145999999973998484392723185     5.7454437639006101790073444135487080     7.4580719652853399992409322294406593    25.7119826765996606354747200384736061
+  210   1   5    -0.1059498145999999973998484392723185    20.6615822465654090933639963623136282    18.9489544609573954403458628803491592     0.6950441766027186663023940127459355
+  211   1   5    -0.1059498145999999973998484392723185    20.6615822463033431688472774112597108    18.9489544618096878991764242528006434    25.7119826763005541181428270647302270
+  212   1   5    -0.1059498145999999973998484392723185     5.7454437637728386079061237978748977     7.4580719662163321714842822984792292     0.6950441762923532662554748640104663
+  213   1   5    -0.1059498145999999973998484392723185     5.7454436914262831948008170002140105    18.9489545447594629479226568946614861     0.6950441764820020074111539543082472
+  214   1   5    -0.1059498145999999973998484392723185    20.6615821745183616542362869950011373     7.4580720490207008666061483381781727    25.7119826764425347676024102838709950
+  215   1   5    -0.1059498145999999973998484392723185    20.6615821749186423517130606342107058     7.4580720500992896404568455182015896     0.6950441764837008706834353688464034
+  216   1   5    -0.1059498145999999973998484392723185     5.7454436915829996124216449970845133    18.9489545456313450699781242292374372    25.7119826764082297643199126468971372
+  217   1   5    -0.1059498145999999973998484392723185     7.4580701279839782813496640301309526     0.6950441826629887298594212552416138    20.6615832383025335161619295831769705
+  218   1   5    -0.1059498145999999973998484392723185    18.9489560729071442324311647098511457    25.7119822631230405818314466159790754     5.7454434339951694354908795503433794
+  219   1   5    -0.1059498145999999973998484392723185    18.9489560731493433820560312597081065     0.6950441825116903116210664848040324     5.7454434338960593819933819759171456
+  220   1   5    -0.1059498145999999973998484392723185     7.4580701262156781083945134014356881    25.7119822631029819604009389877319336    20.6615832375403520870804641162976623
+  221   1   5    -0.1059498145999999973998484392723185    18.9489559747363998098990123253315687    25.7119822628628753591328859329223633    20.6615833167373317280635092174634337
+  222   1   5    -0.1059498145999999973998484392723185     7.4580700298500319789241075341124088     0.6950441824498451159897172146884259     5.7454435124676823676281856023706496
+  223   1   5    -0.1059498145999999973998484392723185     7.4580700281226466330508628743700683    25.7119822633614525386747118318453431     5.7454435131889471932709057000465691
+  224   1   5    -0.1059498145999999973998484392723185    18.9489559749332450167003116803243756     0.6950441827270334993471578854951076    20.6615833168818028298119315877556801
+  225   1   5    -0.1059498145999999973998484392723185     0.6950441927525650154251479762024246     5.7454444429621238654704029613640159    18.9489540248361194585413613822311163
+  226   1   5    -0.1059498145999999973998484392723185    25.7119818452198529712404706515371799    20.6615818308195287045236909762024879     7.4580729829961649457459316181484610
+  227   1   5    -0.1059498145999999973998484392723185     0.6950441924748893551821993241901509    20.6615818317253463476390606956556439     7.4580729839017072535511942987795919
+  228   1   5    -0.1059498145999999973998484392723185    25.7119818454976538646405970212072134     5.7454444431846685148457254399545491    18.9489540250583878844281571218743920
+  229   1   5    -0.1059498145999999973998484392723185    25.7119818457634998765115597052499652     5.7454445100197322204849115223623812     7.4580728920647079149830460664816201
+  230   1   5    -0.1059498145999999973998484392723185     0.6950441926439864248621347542211879    20.6615818984543473391113366233184934    18.9489539332869867394038010388612747
+  231   1   5    -0.1059498145999999973998484392723185    25.7119818449816754935000062687322497    20.6615818975234937227014597738161683    18.9489539342175454805783374467864633
+  232   1   5    -0.1059498145999999973998484392723185     0.6950441925743315874086647454532795     5.7454445096577941853865922894328833     7.4580728924263581802733824588358402
+  233   1   5    -0.1059498145999999973998484392723185     7.4580729302309380912561209697742015    18.9489547151559953874766506487503648    13.8985570305491759057758827111683786
+  234   1   5    -0.1059498145999999973998484392723185    18.9489532010598011879665136802941561     7.4580718211063397049542800232302397    12.5084697972563194667827701778151095
+  235   1   5    -0.1059498145999999973998484392723185    18.9489532033959946488721470814198256     7.4580718187641892313877178821712732    13.8985570305666872314986903802491724
+  236   1   5    -0.1059498145999999973998484392723185     7.4580729325472310264899533649440855    18.9489547128455839697380724828690290    12.5084697972855973802097651059739292
+  237   1   5    -0.1059498145999999973998484392723185    18.9489531691363914944759017089381814    18.9489546339782002348783862544223666    12.5084697971020268880693038227036595
+  238   1   5    -0.1059498145999999973998484392723185     7.4580728989384033056353473511990160     7.4580717399356037944357922242488712    13.8985570304538210706368772662244737
+  239   1   5    -0.1059498145999999973998484392723185     7.4580729011568465125492366496473551     7.4580717421530522415196173824369907    12.5084697974000942366501476499252021
+  240   1   5    -0.1059498145999999973998484392723185    18.9489531714208681023592362180352211    18.9489546362637106824422517092898488    13.8985570307178303295359000912867486
+  241   1   5    -0.1059498145999999973998484392723185     5.7454428646167983174564142245799303    13.8985568174475098146558593725785613    20.6615858710343189841296407394111156
+  242   1   5    -0.1059498145999999973998484392723185    20.6615830426312960810264485189691186    12.5084695981625877436727023450657725     5.7454408383688111428000411251559854
+  243   1   5    -0.1059498145999999973998484392723185    20.6615830429396645229189743986353278    13.8985568176175284804685361450538039     5.7454408362793127906797963078133762
+  244   1   5    -0.1059498145999999973998484392723185     5.7454428644178960894350893795490265    12.5084695981115139318262663437053561    20.6615858695269452027787338010966778
+  245   1   5    -0.1059498145999999973998484392723185     5.7454428953876659491584177885670215    12.5084695982135318814698621281422675     5.7454409218753008659064107632730156
+  246   1   5    -0.1059498145999999973998484392723185    20.6615830738697674462400755146518350    13.8985568176802480877540801884606481    20.6615859551577614183770492672920227
+  247   1   5    -0.1059498145999999973998484392723185    20.6615830735143930496633402071893215    12.5084695980550915095363961881957948    20.6615859530212446770747192203998566
+  248   1   5    -0.1059498145999999973998484392723185     5.7454428956132863604011618008371443    13.8985568173849394213448249502107501     5.7454409203946585904532184940762818
+  249   1   5    -0.1059498145999999973998484392723185     5.7454411757135526173101425229106098    20.6615822998266018828417145414277911    12.5084698058763432726436803932301700
+  250   1   5    -0.1059498145999999973998484392723185    20.6615847275626762780120770912617445     5.7454440012910703572401871497277170    13.8985570156510167549868128844536841
+  251   1   5    -0.1059498145999999973998484392723185    20.6615847262415677221270016161724925     5.7454440026181039513630821602419019    12.5084698058594128156073566060513258
+  252   1   5    -0.1059498145999999973998484392723185     5.7454411744114439741792921267915517    20.6615823011227952576973621034994721    13.8985570156290538790244681877084076
+  253   1   5    -0.1059498145999999973998484392723185     5.7454412111429027376630074286367744     5.7454440851618375774023661506362259    13.8985570155367987865702161798253655
+  254   1   5    -0.1059498145999999973998484392723185    20.6615847621490651420117501402273774    20.6615823836508631927699752850458026    12.5084698056968157686696940800175071
+  255   1   5    -0.1059498145999999973998484392723185    20.6615847634246385666756395949050784    20.6615823849274420354049652814865112    13.8985570158108124871887412155047059
+  256   1   5    -0.1059498145999999973998484392723185     5.7454412123454199345928827824536711     5.7454440863633191582948711584322155    12.5084698059560448513138908310793340
+  257   1   5    -0.1059498145999999973998484392723185     7.4580719115339624281091346347238868    13.8985568228728926243320529465563595     7.4580712427149853382957189751323313
+  258   1   5    -0.1059498145999999973998484392723185    18.9489541459341523932380368933081627    12.5084695956380489434422997874207795    18.9489555442818513597558194305747747
+  259   1   5    -0.1059498145999999973998484392723185    18.9489541462100135049695381894707680    13.8985568230439433534684212645515800    18.9489555463615104713426262605935335
+  260   1   5    -0.1059498145999999973998484392723185     7.4580719112295534856116319133434445    12.5084695960381839796582426060922444     7.4580712441395098366569982317741960
+  261   1   5    -0.1059498145999999973998484392723185    18.9489541905043772374028776539489627    12.5084695958021132611293069203384221     7.4580713233278546070437187154311687
+  262   1   5    -0.1059498145999999973998484392723185     7.4580719560075552365674411703366786    13.8985568229809732798685217858292162    18.9489556249339727855840465053915977
+  263   1   5    -0.1059498145999999973998484392723185     7.4580719557308325917688307526987046    12.5084695958879006383313026162795722    18.9489556234817513313828385435044765
+  264   1   5    -0.1059498145999999973998484392723185    18.9489541907326355385521310381591320    13.8985568229323952493814431363716722     7.4580713212957965296823203971143812
+  265   1   5    -0.1059498145999999973998484392723185    13.8985566159234270600109084625728428     7.4580718594840762492026442487258464    18.9489565485389412913264095550402999
+  266   1   5    -0.1059498145999999973998484392723185    12.5084693947678626813058144762180746    18.9489546986920451843161572469398379     7.4580704108624340520350415317807347
+  267   1   5    -0.1059498145999999973998484392723185    13.8985566155832493961952422978356481    18.9489546989794241937943297671154141     7.4580704105749866528185521019622684
+  268   1   5    -0.1059498145999999973998484392723185    12.5084693951526784161387695348821580     7.4580718592240327069475824828259647    18.9489565487989040093452786095440388
+  269   1   5    -0.1059498145999999973998484392723185    12.5084693945937761583309111301787198    18.9489546541589071182443149155005813    18.9489564567750505830190377309918404
+  270   1   5    -0.1059498145999999973998484392723185    13.8985566158405600134528867783956230     7.4580718150593412474336219020187855     7.4580703191665032036894444900099188
+  271   1   5    -0.1059498145999999973998484392723185    12.5084693953141758981928433058783412     7.4580718146667299706109588441904634     7.4580703187739700865677150432020426
+  272   1   5    -0.1059498145999999973998484392723185    13.8985566156998032738556503318250179    18.9489546544273181893913715612143278    18.9489564570435646828627795912325382
+  273   1   5    -0.1059498145999999973998484392723185    13.8985566194613703316917963093146682     5.7454398949302953880646782636176795     5.7454429050832018788241839502006769
+  274   1   5    -0.1059498145999999973998484392723185    12.5084693910432065422355663031339645    20.6615864785719303142741409828886390    20.6615839648224124402986490167677402
+  275   1   5    -0.1059498145999999973998484392723185    13.8985566193143501578788345796056092    20.6615864788959946451996074756607413    20.6615839651465549309250491205602884
+  276   1   5    -0.1059498145999999973998484392723185    12.5084693915699141086861345684155822     5.7454398945650346774982608621940017     5.7454429047180015643903061572927982
+  277   1   5    -0.1059498145999999973998484392723185    12.5084693914548790161234137485735118     5.7454398636567773905881040263921022    20.6615838866345065127916313940659165
+  278   1   5    -0.1059498145999999973998484392723185    13.8985566192695042531113358563743532    20.6615864479913255991050391457974911     5.7454428262548882244686865305993706
+  279   1   5    -0.1059498145999999973998484392723185    12.5084693911513404884772171499207616    20.6615864476536295057940151309594512     5.7454428265926145158459803496953100
+  280   1   5    -0.1059498145999999973998484392723185    13.8985566195294705238438837113790214     5.7454398638876575944323121802881360    20.6615838864036760469389264471828938
+  281   1   6    -0.1322994435000000024160726752597839     6.6017573175543917685104133852291852     6.6017558544204808512745330517645925     1.4058275047511632482866161808487959
+  282   1   6    -0.1322994435000000024160726752597839    19.8052686946648925925273942993953824    19.8052705736806338165933993877843022    25.0011993450795593219027068698778749
+  283   1   6    -0.1322994435000000024160726752597839    19.8052686940967994644324789987877011    19.8052705729717573035486566368490458     1.4058275063938752147407740267226472
+  284   1   6    -0.1322994435000000024160726752597839     6.6017573168733187927159633545670658     6.6017558536237483934883130132220685    25.0011993467347437558601086493581533
+  285   1   6    -0.1322994435000000024160726752597839    19.8052687039226142928782792296260595     6.6017558559186682032304815948009491    25.0011993459617194446309440536424518
+  286   1   6    -0.1322994435000000024160726752597839     6.6017573260327626627486097277142107    19.8052705751936350964115263195708394     1.4058275055949498444363143789814785
+  287   1   6    -0.1322994435000000024160726752597839     6.6017573252913637205097074911464006    19.8052705758471532249131996650248766    25.0011993458844692383991059614345431
+  288   1   6    -0.1322994435000000024160726752597839    19.8052687031588767752054991433396935     6.6017558565150649130259807861875743     1.4058275055127387176412412372883409
+  289   1   6    -0.1322994435000000024160726752597839     1.4058275221485234673934883176116273     6.6017579463754652024931601772550493     6.6017566583158551196675034589134157
+  290   1   6    -0.1322994435000000024160726752597839    25.0011985121456312697318935533985496    19.8052684635848095240362454205751419    19.8052701681534024658049020217731595
+  291   1   6    -0.1322994435000000024160726752597839     1.4058275241037234692953461490105838    19.8052684632012230281361553352326155    19.8052701685373335749318357557058334
+  292   1   6    -0.1322994435000000024160726752597839    25.0011985148417004154453024966642261     6.6017579466357920736641062831040472     6.6017566580564679412646000855602324
+  293   1   6    -0.1322994435000000024160726752597839    25.0011985133830023642076412215828896    19.8052684784341188617418083595111966     6.6017566665979003914799250196665525
+  294   1   6    -0.1322994435000000024160726752597839     1.4058275233275152604761615293682553     6.6017579611291949959195335395634174    19.8052701763863190365100308554247022
+  295   1   6    -0.1322994435000000024160726752597839    25.0011985136042547139823000179603696     6.6017579615792678637831158994231373    19.8052701768356378408952878089621663
+  296   1   6    -0.1322994435000000024160726752597839     1.4058275229200425382458661260898225    19.8052684781102321665002818917855620     6.6017566662737454663556491141207516
+  297   1   6    -0.1322994435000000024160726752597839     6.6017554472336872350979319890029728     1.4058275131037145655454878578893840     6.6017585859901428690932334575336426
+  298   1   6    -0.1322994435000000024160726752597839    19.8052705590306814542600477579981089    25.0011989284290727653115027351304889    19.8052682465632727826232439838349819
+  299   1   6    -0.1322994435000000024160726752597839    19.8052705586119621727902995189651847     1.4058275150752024273970164358615875    19.8052682469281648991454858332872391
+  300   1   6    -0.1322994435000000024160726752597839     6.6017554461989043090852646855637431    25.0011989304518777998964651487767696     6.6017585857008196370543373632244766
+  301   1   6    -0.1322994435000000024160726752597839     6.6017554610600033271339270868338645    25.0011989292222516212405025726184249    19.8052682491153184685117594199255109
+  302   1   6    -0.1322994435000000024160726752597839    19.8052705734770455592297366820275784     1.4058275138837339479636057149036787     6.6017585878259819054392210091464221
+  303   1   6    -0.1322994435000000024160726752597839    19.8052705739498335901771497447043657    25.0011989296662200388254859717562795     6.6017585882449978385011490900069475
+  304   1   6    -0.1322994435000000024160726752597839     6.6017554620446778912423724250402302     1.4058275142965284132401393435429782    19.8052682487758815454981231596320868
+  305   1   6    -0.1322994435000000024160726752597839     6.6017570540865415651410330610815436    19.8052685071528102866977860685437918    14.6093403541877062679077425855211914
+  306   1   6    -0.1322994435000000024160726752597839    19.8052689611235734901129035279154778     6.6017579152870942138520149455871433    11.7976864712139608570851123658940196
+  307   1   6    -0.1322994435000000024160726752597839    19.8052689645113488836614124011248350     6.6017579118871658749867492588236928    14.6093403543113797837804668233729899
+  308   1   6    -0.1322994435000000024160726752597839     6.6017570575187463077782012987881899    19.8052685037325524319840042153373361    11.7976864713313140953232505125924945
+  309   1   6    -0.1322994435000000024160726752597839    19.8052689624988467187449714401736856    19.8052685058938955364737921627238393    11.7976864705712731762332623475231230
+  310   1   6    -0.1322994435000000024160726752597839     6.6017570561619747238069066952448338     6.6017579140072291110641344857867807    14.6093403535029207063189460313878953
+  311   1   6    -0.1322994435000000024160726752597839     6.6017570597341110882894099631812423     6.6017579175772374000530362536665052    11.7976864720094543059758507297374308
+  312   1   6    -0.1322994435000000024160726752597839    19.8052689659718019754564011236652732    19.8052685093688829454094957327470183    14.6093403549617697478879563277587295
+  313   1   6    -0.1322994435000000024160726752597839     6.6017574053606518091896759869996458    14.6093401542632186362880020169541240    19.8052707352231784909690759377554059
+  314   1   6    -0.1322994435000000024160726752597839    19.8052686221762392904111038660630584    11.7976862640312685215349119971506298     6.6017560960608232534241324174217880
+  315   1   6    -0.1322994435000000024160726752597839    19.8052686217338376195584714878350496    14.6093401544842080852504295762628317     6.6017560928600182990066969068720937
+  316   1   6    -0.1322994435000000024160726752597839     6.6017574057480166160871704050805420    11.7976862641974857837112722336314619    19.8052707313446134662626718636602163
+  317   1   6    -0.1322994435000000024160726752597839     6.6017573986869475533012519008480012    11.7976862648172424741233044187538326     6.6017560986098740016814190312288702
+  318   1   6    -0.1322994435000000024160726752597839    19.8052686145630616465496132150292397    14.6093401550498427354796149302273989    19.8052707370506801964893384138122201
+  319   1   6    -0.1322994435000000024160726752597839    19.8052686150676784393453999655321240    11.7976862634185888367710504098795354    19.8052707339121276675086846807971597
+  320   1   6    -0.1322994435000000024160726752597839     6.6017573982674679911042403546161950    14.6093401536980831423306881333701313     6.6017560946991507009329325228463858
+  321   1   6    -0.1322994435000000024160726752597839    14.6093399536505863522961590206250548     6.6017558691514413027334740036167204    19.8052702109229663562928180908784270
+  322   1   6    -0.1322994435000000024160726752597839    11.7976860582093170393136460916139185    19.8052705662532773089878901373594999     6.6017566256458914963900497241411358
+  323   1   6    -0.1322994435000000024160726752597839    14.6093399534383561189088140963576734    19.8052705658612886452374368673190475     6.6017566260375746267641261511016637
+  324   1   6    -0.1322994435000000024160726752597839    11.7976860586379057593831021222285926     6.6017558694113231965161503467243165    19.8052702106633340406460774829611182
+  325   1   6    -0.1322994435000000024160726752597839    11.7976860575862900759602780453860760    19.8052705591102977678019669838249683    19.8052702042829906758925062604248524
+  326   1   6    -0.1322994435000000024160726752597839    14.6093399530987824164185440167784691     6.6017558619617942028412471699994057     6.6017566189127236953027022536844015
+  327   1   6    -0.1322994435000000024160726752597839    11.7976860592617303069573608809150755     6.6017558624057777194593654712662101     6.6017566193566379340040839451830834
+  328   1   6    -0.1322994435000000024160726752597839    14.6093399539863870728595429682172835    19.8052705587580994972540793241932988    19.8052702039311974147040018578991294
+  329   1   7     0.1527568014000000029550818680945667     8.1234662164874187340046773897483945     5.0800424375191806092288970830850303     1.2305547890469650251787925299140625
+  330   1   7     0.1527568014000000029550818680945667    18.2835597943903565010259626433253288    21.3269839897042778886770975077524781    25.1764720648117439338875556131824851
+  331   1   7     0.1527568014000000029550818680945667    18.2835597944790855251540051540359855    21.3269839884136942487202759366482496     1.2305547891325354648017764702672139
+  332   1   7     0.1527568014000000029550818680945667     8.1234662164589153121596609707921743     5.0800424361419915797455360007006675    25.1764720648963944427123351488262415
+  333   1   7     0.1527568014000000029550818680945667    18.2835599509758424119354458525776863     5.0800422920921723957121685089077801    25.1764720649007145425457565579563379
+  334   1   7     0.1527568014000000029550818680945667     8.1234663721610136377648814232088625    21.3269838443247117254486511228606105     1.2305547891069947841202747440547682
+  335   1   7     0.1527568014000000029550818680945667     8.1234663721306521466658523422665894    21.3269838456157394546153227565810084    25.1764720648352771092959301313385367
+  336   1   7     0.1527568014000000029550818680945667    18.2835599510212958307420194614678621     5.0800422934237152716718810552265495     1.2305547890707619895778179852641188
+  337   1   7     0.1527568014000000029550818680945667     1.2305548093251283958693420572672039     8.1234666201886813752253146958537400     5.0800430232485380699358756828587502
+  338   1   7     0.1527568014000000029550818680945667    25.1764712297716108935219381237402558    18.2835597877724005400068563176319003    21.3269838016725756801861280109733343
+  339   1   7     0.1527568014000000029550818680945667     1.2305548091296751866963177235447802    18.2835597883457232626369659556075931    21.3269838010998995514455600641667843
+  340   1   7     0.1527568014000000029550818680945667    25.1764712300543322953672031871974468     8.1234666209768970901450302335433662     5.0800430224609334217689138313289732
+  341   1   7     0.1527568014000000029550818680945667    25.1764712298965704917463881429284811    18.2835599523264420440682442858815193     5.0800428829041432976509895524941385
+  342   1   7     0.1527568014000000029550818680945667     1.2305548093595208847261801565764472     8.1234667846695103321508213412016630    21.3269836613121519519609137205407023
+  343   1   7     0.1527568014000000029550818680945667    25.1764712299123694094760139705613256     8.1234667855004651926265069050714374    21.3269836621424495604060211917385459
+  344   1   7     0.1527568014000000029550818680945667     1.2305548090829721008532260384527035    18.2835599529054704248665075283497572     5.0800428834825011037423792004119605
+  345   1   7     0.1527568014000000029550818680945667     5.0800447501318544141213351394981146     1.2305548158821781878913270702469163     8.1234702051540548239927375107072294
+  346   1   7     0.1527568014000000029550818680945667    21.3269812561375502468763443175703287    25.1764716303616218340266641462221742    18.2835566289172781750949070556089282
+  347   1   7     0.1527568014000000029550818680945667    21.3269812561999891897812631214037538     1.2305548156421328709342333240783773    18.2835566288200723761292465496808290
+  348   1   7     0.1527568014000000029550818680945667     5.0800447491239753006198043294716626    25.1764716303083702086951234377920628     8.1234702048374369809380368678830564
+  349   1   7     0.1527568014000000029550818680945667     5.0800446164042396546278723690193146    25.1764716304291695792016980703920126    18.2835567781084975536032288800925016
+  350   1   7     0.1527568014000000029550818680945667    21.3269811235125388293454307131469250     1.2305548157849168777744353064917959     8.1234703541073915999959353939630091
+  351   1   7     0.1527568014000000029550818680945667    21.3269811234640300767750886734575033    25.1764716302444888640366116305813193     8.1234703540241088859374940511770546
+  352   1   7     0.1527568014000000029550818680945667     5.0800446173962248153088694380130619     1.2305548157365484573944058865890838    18.2835567777759742114085383946076035
+  353   1   7     0.1527568014000000029550818680945667     5.0800484434481720796838999376632273     8.1234693038446419421916289138607681    25.1764721038813696907254779944196343
+  354   1   7     0.1527568014000000029550818680945667    21.3269775654580087120848475024104118    18.2835571230022146949067973764613271     1.2305547499882476536470221617491916
+  355   1   7     0.1527568014000000029550818680945667    21.3269775667131327168135612737387419    18.2835571229490980726950510870665312    25.1764721039650112288654781877994537
+  356   1   7     0.1527568014000000029550818680945667     5.0800484448162794848258272395469248     8.1234693038824037358835994382388890     1.2305547500776741198791341957985424
+  357   1   7     0.1527568014000000029550818680945667     5.0800483074245814663072451367042959    18.2835572720775658694947196636348963     1.2305547499989717419310863988357596
+  358   1   7     0.1527568014000000029550818680945667    21.3269774298730361294929025461897254     8.1234694529309372512670961441472173    25.1764721038875443070992332650348544
+  359   1   7     0.1527568014000000029550818680945667    21.3269774285756028575633536092936993     8.1234694529197408741083563654683530     1.2305547500393503312920984171796590
+  360   1   7     0.1527568014000000029550818680945667     5.0800483060541701263446157099679112    18.2835572720287125036975339753553271    25.1764721039599486118731874739751220
+  361   1   7     0.1527568014000000029550818680945667     8.1234663260082982105814153328537941     1.2305547460118095859371578626451083    21.3269797029151391143386717885732651
+  362   1   7     0.1527568014000000029550818680945667    18.2835600047053787875483976677060127    25.1764717001975633081656269496306777     5.0800468361130022287852625595405698
+  363   1   7     0.1527568014000000029550818680945667    18.2835600060640111053089640336111188     1.2305547460594801201239079091465101     5.0800468374513076952325718593783677
+  364   1   7     0.1527568014000000029550818680945667     8.1234663263394395471550524234771729    25.1764717000100652910532517125830054    21.3269797045156757064887642627581954
+  365   1   7     0.1527568014000000029550818680945667    18.2835598401287739989129477180540562    25.1764717000774496113990608137100935    21.3269798484736092802904749987646937
+  366   1   7     0.1527568014000000029550818680945667     8.1234661615275598478547181002795696     1.2305547459579990743350208504125476     5.0800469816567543901442149945069104
+  367   1   7     0.1527568014000000029550818680945667     8.1234661618438899211014359025284648    25.1764717001308504507051111431792378     5.0800469800710317258563009090721607
+  368   1   7     0.1527568014000000029550818680945667    18.2835598415031270747022063005715609     1.2305547461128862885004764393670484    21.3269798471195883848849916830658913
+  369   1   7     0.1527568014000000029550818680945667     1.2305547746802600883597733627539128     5.0800491445769422327316533483099192    18.2835566718044582046331925084814429
+  370   1   7     0.1527568014000000029550818680945667    25.1764712643219716881048952927812934    21.3269769983760397735750302672386169     8.1234704693002210973418186767958105
+  371   1   7     0.1527568014000000029550818680945667     1.2305547743122786652492095527122729    21.3269769975588978638825210509821773     8.1234704684825231879585771821439266
+  372   1   7     0.1527568014000000029550818680945667    25.1764712649626147822345956228673458     5.0800491440310393542745259765069932    18.2835566712580224191242450615391135
+  373   1   7     0.1527568014000000029550818680945667    25.1764712648394421989905822556465864     5.0800492767299694207849825033918023     8.1234703117067788014082907466217875
+  374   1   7     0.1527568014000000029550818680945667     1.2305547741593705346474507678067312    21.3269771302500146248348755761981010    18.2835565144543181759217986837029457
+  375   1   7     0.1527568014000000029550818680945667    25.1764712644278390030194714199751616    21.3269771310660516405732778366655111    18.2835565136377447004178975475952029
+  376   1   7     0.1527568014000000029550818680945667     1.2305547748244056727173756371485069     5.0800492773214962483052659081295133     8.1234703111147688048276904737576842
+  377   1   7     0.1527568014000000029550818680945667     8.1234700791120957319435547105967999    18.2835592280439982459938619285821915    14.4340676331327095738288335269317031
+  378   1   7     0.1527568014000000029550818680945667    18.2835561449390553434568573720753193     8.1234674003718154722264443989843130    11.9729591969889987979058787459507585
+  379   1   7     0.1527568014000000029550818680945667    18.2835561469672960299703845521435142     8.1234673983330001334479675278998911    14.4340676330866450882695062318816781
+  380   1   7     0.1527568014000000029550818680945667     8.1234700811642444051585698616690934    18.2835592260022181676504260394722223    11.9729591969345126045709548634476960
+  381   1   7     0.1527568014000000029550818680945667    18.2835560856033865206882182974368334    18.2835590819295070730277075199410319    11.9729591969257391781411570264026523
+  382   1   7     0.1527568014000000029550818680945667     8.1234700203008607388710515806451440     8.1234672542258863359165843576192856    14.4340676330501924695681736920960248
+  383   1   7     0.1527568014000000029550818680945667     8.1234700223832394527789801941253245     8.1234672563065881689681191346608102    11.9729591969975377452328757499344647
+  384   1   7     0.1527568014000000029550818680945667    18.2835560876409388697538815904408693    18.2835590839690240727577474899590015    14.4340676331463075854344424442388117
+  385   1   7     0.1527568014000000029550818680945667     5.0800467587774100763908791122958064    14.4340674105820863104554518940858543    21.3269824103176013352367590414360166
+  386   1   7     0.1527568014000000029550818680945667    21.3269790526968279209540924057364464    11.9729590021614349382161890389397740     5.0800442046448948119063970807474107
+  387   1   7     0.1527568014000000029550818680945667    21.3269790526054734414174163248389959    14.4340674106636779328027841984294355     5.0800442015968716447105180122889578
+  388   1   7     0.1527568014000000029550818680945667     5.0800467590507274451283592497929931    11.9729590023444210089564876398071647    21.3269824070374340863054385408759117
+  389   1   7     0.1527568014000000029550818680945667     5.0800468206247586522295023314654827    11.9729590022308638452841478283517063     5.0800443538371116147800421458669007
+  390   1   7     0.1527568014000000029550818680945667    21.3269791140840681009649415500462055    14.4340674104829957968831877224147320    21.3269825592633637256767542567104101
+  391   1   7     0.1527568014000000029550818680945667    21.3269791141909195175685454159975052    11.9729590022756013922844431363046169    21.3269825562308312782988650724291801
+  392   1   7     0.1527568014000000029550818680945667     5.0800468203397723954140019486658275    14.4340674107620561272824488696642220     5.0800443505452790304843802005052567
+  393   1   7     0.1527568014000000029550818680945667     5.0800440305369587434825007221661508    21.3269778095012050300738337682560086    11.9729592262242476863320916891098022
+  394   1   7     0.1527568014000000029550818680945667    21.3269817817583877683773607714101672     5.0800483969396159622533559740986675    14.4340675911214173510188629734329879
+  395   1   7     0.1527568014000000029550818680945667    21.3269817786478057541899033822119236     5.0800484000606571655112020380329341    11.9729592261769060002052356139756739
+  396   1   7     0.1527568014000000029550818680945667     5.0800440274041411825578506977763027    21.3269778126235358683970844140276313    14.4340675910804172588086657924577594
+  397   1   7     0.1527568014000000029550818680945667     5.0800440917554050557214395666960627     5.0800485460013824479119648458436131    14.4340675911393816477357177063822746
+  398   1   7     0.1527568014000000029550818680945667    21.3269818421154617738011438632383943    21.3269779585643668440297915367409587    11.9729592262467061658526290557347238
+  399   1   7     0.1527568014000000029550818680945667    21.3269818452339769976333627710118890    21.3269779616847436898297019070014358    14.4340675910554825378540044766850770
+  400   1   7     0.1527568014000000029550818680945667     5.0800440949178700122956797713413835     5.0800485491620497313647319970186800    11.9729592261832049615577489021234214
+  401   1   7     0.1527568014000000029550818680945667     8.1234679678826786641820945078507066    14.4340674098193613161811299505643547     8.1234678319500961407584327389486134
+  402   1   7     0.1527568014000000029550818680945667    18.2835581248168743684345827205106616    11.9729590092902942188857196015305817    18.2835589194050704975325061241164804
+  403   1   7     0.1527568014000000029550818680945667    18.2835581239965421218585106544196606    14.4340674100557286863022454781457782    18.2835589217760912106314208358526230
+  404   1   7     0.1527568014000000029550818680945667     8.1234679674536902638237734208814800    11.9729590093856668175931190489791334     8.1234678345799178345032487413845956
+  405   1   7     0.1527568014000000029550818680945667    18.2835581997841885026900854427367449    11.9729590094502089669958877493627369     8.1234679785396597395674689323641360
+  406   1   7     0.1527568014000000029550818680945667     8.1234680428147196806776264565996826    14.4340674099542010111463241628371179    18.2835590659791691336977237369865179
+  407   1   7     0.1527568014000000029550818680945667     8.1234680423760341483330194023437798    11.9729590092205189222340777632780373    18.2835590633590214793002814985811710
+  408   1   7     0.1527568014000000029550818680945667    18.2835581989807067770925641525536776    14.4340674099197290303209229023195803     8.1234679761517902818468428449705243
+  409   1   7     0.1527568014000000029550818680945667    14.4340671937266300517421768745407462     8.1234691122903122106890805298462510    18.2835611475922235058533260598778725
+  410   1   7     0.1527568014000000029550818680945667    11.9729588157896067457386379828676581    18.2835575448122682473695022054016590     8.1234659099391173242565855616703629
+  411   1   7     0.1527568014000000029550818680945667    14.4340671935036741757585332379676402    18.2835575443324422906243853503838181     8.1234659104187514344630471896380186
+  412   1   7     0.1527568014000000029550818680945667    11.9729588159131683511304800049401820     8.1234691120287649823694664519280195    18.2835611478535540186385333072394133
+  413   1   7     0.1527568014000000029550818680945667    11.9729588156179893587705009849742055    18.2835574698449541131139994831755757    18.2835609879965765856013604206964374
+  414   1   7     0.1527568014000000029550818680945667    14.4340671935872855158322636270895600     8.1234690373326721157809515716508031     8.1234657503173810511043484439142048
+  415   1   7     0.1527568014000000029550818680945667    11.9729588160773694482941209571436048     8.1234690371126259123002455453388393     8.1234657500975000488097066408954561
+  416   1   7     0.1527568014000000029550818680945667    14.4340671936249371754001913359388709    18.2835574693658848843824671348556876    18.2835609875176743344127316959202290
+  417   1   7     0.1527568014000000029550818680945667    14.4340672248044246117615330149419606     5.0800426926251791570621207938529551     5.0800474724727893161002612032461911
+  418   1   7     0.1527568014000000029550818680945667    11.9729587849237368857302499236539006    21.3269836429592629656326607801020145    21.3269794346884857816348812775686383
+  419   1   7     0.1527568014000000029550818680945667    14.4340672239817529032279708189889789    21.3269836432067130260747944703325629    21.3269794349360530816284153843298554
+  420   1   7     0.1527568014000000029550818680945667    11.9729587852454653074119050870649517     5.0800426931468978253292334557045251     5.0800474729946198948482560808770359
+  421   1   7     0.1527568014000000029550818680945667    11.9729587853397987373682553879916668     5.0800426315729367843232466839253902    21.3269792878931276902676472673192620
+  422   1   7     0.1527568014000000029550818680945667    14.4340672241701959421789069892838597    21.3269835817097721530899434583261609     5.0800473259318437158071901649236679
+  423   1   7     0.1527568014000000029550818680945667    11.9729587848212428724536948720924556    21.3269835814587374045459000626578927     5.0800473261830250137904840812552720
+  424   1   7     0.1527568014000000029550818680945667    14.4340672246009731338745041284710169     5.0800426310946580343852474470622838    21.3269792883715645359643531264737248
+
+Bonds
+
+    1     2   229   232
+    2     1   145    49
+    3     1   145    88
+    4     3   289   145
+    5     4   289   193
+    6     4   289   232
+    7     7    49     9
+    8     7    17    88
+    9     3   183   327
+   10     2   270   271
+   11     2   273   276
+   12     4   326   270
+   13     4   273   326
+   14     4   271   327
+   15     4   276   327
+   16     5   414   270
+   17     5   271   415
+   18     3   326   182
+   19     5   339   195
+   20     5   216   360
+   21     6     5    37
+   22     6    37    15
+   23     6    19    37
+   24     6    27    37
+   25     7    91    27
+   26     7    15   103
+   27     7   106    19
+   28     7   114    27
+   29     7   121    27
+   30     7     5   136
+   31     1   163    91
+   32     1   106   163
+   33     1   103   175
+   34     1   114   175
+   35     1   177   121
+   36     1   177   136
+   37     7     7    47
+   38     7    11    72
+   39     2   190   191
+   40     2   213   216
+   41     1    47   143
+   42     1   143    72
+   43     3   143   287
+   44     4   191   287
+   45     4   287   216
+   46     7    50    10
+   47     7    18    87
+   48     1   146    50
+   49     1   146    87
+   50     3   290   146
+   51     4   290   194
+   52     4   290   231
+   53     2   230   231
+   54     5   422   278
+   55     5   279   423
+   56     1   153    57
+   57     1   153    78
+   58     3   297   153
+   59     4   297   201
+   60     4   297   222
+   61     7    57    17
+   62     7     1    78
+   63     3   324   180
+   64     2   265   268
+   65     2   277   280
+   66     4   321   265
+   67     4   321   280
+   68     4   268   324
+   69     4   324   277
+   70     5   409   265
+   71     5   268   412
+   72     3   321   177
+   73     5   398   254
+   74     5   255   399
+   75     5   366   222
+   76     5   329   185
+   77     7    42     2
+   78     7    10    67
+   79     2   210   211
+   80     1   138    42
+   81     1   138    67
+   82     3   282   138
+   83     4   282   186
+   84     4   282   211
+   85     7     5    45
+   86     7    70    15
+   87     1    45   141
+   88     1   141    70
+   89     3   141   285
+   90     4   189   285
+   91     4   285   214
+   92     3   181   325
+   93     2   269   272
+   94     2   274   275
+   95     4   269   325
+   96     4   274   325
+   97     4   272   328
+   98     4   275   328
+   99     5   269   413
+  100     5   272   416
+  101     3   184   328
+  102     3   175   319
+  103     2   246   247
+  104     2   258   259
+  105     4   318   246
+  106     4   259   318
+  107     4   247   319
+  108     4   258   319
+  109     5   402   258
+  110     5   403   259
+  111     3   318   174
+  112     3   167   311
+  113     3   310   166
+  114     2   238   239
+  115     2   253   256
+  116     4   310   238
+  117     4   253   310
+  118     4   239   311
+  119     4   311   256
+  120     5   382   238
+  121     5   239   383
+  122     5   245   389
+  123     5   248   392
+  124     5   354   210
+  125     5   197   341
+  126     6     4    36
+  127     6    36    14
+  128     6    36    24
+  129     6    36    30
+  130     7    94    30
+  131     7   100    14
+  132     7   109    24
+  133     7    30   119
+  134     7   124    30
+  135     7     4   133
+  136     1   166    94
+  137     1   109   166
+  138     1   100   172
+  139     1   172   119
+  140     1   124   180
+  141     1   180   133
+  142     5   191   335
+  143     5   364   220
+  144     5   369   225
+  145     5   208   352
+  146     5   390   246
+  147     5   247   391
+  148     5   394   250
+  149     5   395   251
+  150     5   350   206
+  151     5   229   373
+  152     7    15    55
+  153     7    19    84
+  154     1    55   151
+  155     1    84   151
+  156     3   151   295
+  157     4   199   295
+  158     4   228   295
+  159     2   198   199
+  160     2   225   228
+  161     2   194   195
+  162     1   147    51
+  163     1   147    86
+  164     3   291   147
+  165     4   291   195
+  166     4   291   230
+  167     7    51    11
+  168     7    21    86
+  169     5   417   273
+  170     5   276   420
+  171     6     7    39
+  172     6    11    39
+  173     6    21    39
+  174     6    25    39
+  175     7    89    25
+  176     7    97    11
+  177     7   108    21
+  178     7    25   118
+  179     7    25   125
+  180     7   130     7
+  181     1   161    89
+  182     1   161   108
+  183     1   169    97
+  184     1   169   118
+  185     1   125   181
+  186     1   130   181
+  187     2   218   219
+  188     1   158    62
+  189     1    75   158
+  190     3   302   158
+  191     4   302   206
+  192     4   219   302
+  193     7    62    22
+  194     7    75     8
+  195     5   371   227
+  196     5   348   204
+  197     5   393   249
+  198     5   396   252
+  199     5   342   198
+  200     5   353   209
+  201     5   363   219
+  202     5   192   336
+  203     5   347   203
+  204     5   372   228
+  205     3   316   172
+  206     2   241   244
+  207     2   262   263
+  208     4   313   241
+  209     4   313   262
+  210     4   316   244
+  211     4   316   263
+  212     5   406   262
+  213     5   263   407
+  214     3   313   169
+  215     7    23    63
+  216     7    74     3
+  217     1    63   159
+  218     1    74   159
+  219     3   159   303
+  220     4   207   303
+  221     4   218   303
+  222     2   206   207
+  223     5   207   351
+  224     5   370   226
+  225     7    20    60
+  226     7     6    79
+  227     1    60   156
+  228     1   156    79
+  229     3   300   156
+  230     4   300   204
+  231     4   300   223
+  232     2   201   204
+  233     2   222   223
+  234     5   346   202
+  235     5   231   375
+  236     3   173   317
+  237     2   245   248
+  238     2   257   260
+  239     4   245   317
+  240     4   260   317
+  241     4   248   320
+  242     4   257   320
+  243     5   401   257
+  244     5   260   404
+  245     3   176   320
+  246     7    21    61
+  247     7    76     7
+  248     1    61   157
+  249     1    76   157
+  250     3   157   301
+  251     4   205   301
+  252     4   220   301
+  253     2   217   220
+  254     5   224   368
+  255     5   189   333
+  256     5   355   211
+  257     5   338   194
+  258     5   253   397
+  259     5   256   400
+  260     3   165   309
+  261     3   168   312
+  262     2   237   240
+  263     2   254   255
+  264     4   237   309
+  265     4   309   254
+  266     4   240   312
+  267     4   255   312
+  268     5   237   381
+  269     5   240   384
+  270     5   361   217
+  271     5   332   188
+  272     2   202   203
+  273     2   221   224
+  274     1   155    59
+  275     1   155    80
+  276     3   299   155
+  277     4   299   203
+  278     4   299   224
+  279     7    59    19
+  280     7     5    80
+  281     5   232   376
+  282     5   345   201
+  283     2   197   200
+  284     2   226   227
+  285     1    56   152
+  286     1    83   152
+  287     3   152   296
+  288     4   200   296
+  289     4   227   296
+  290     7    16    56
+  291     7    83    20
+  292     3   306   162
+  293     3   307   163
+  294     2   234   235
+  295     2   250   251
+  296     4   306   234
+  297     4   306   251
+  298     4   307   235
+  299     4   250   307
+  300     5   378   234
+  301     5   379   235
+  302     7     4    44
+  303     7    65    14
+  304     2   185   188
+  305     1    44   140
+  306     1    65   140
+  307     3   284   140
+  308     4   284   188
+  309     4   209   284
+  310     5   200   344
+  311     5   213   357
+  312     5   331   187
+  313     5   362   218
+  314     3   322   178
+  315     2   266   267
+  316     2   278   279
+  317     4   322   266
+  318     4   322   279
+  319     4   323   267
+  320     4   323   278
+  321     5   410   266
+  322     5   411   267
+  323     3   323   179
+  324     6    33     1
+  325     6    33     9
+  326     6    33    17
+  327     6    33    31
+  328     7    31    95
+  329     7     9   101
+  330     7    17   112
+  331     7   116    31
+  332     7    31   127
+  333     7     1   132
+  334     1    95   167
+  335     1   167   112
+  336     1   101   173
+  337     1   116   173
+  338     1   127   183
+  339     1   132   183
+  340     5   418   274
+  341     5   419   275
+  342     5   277   421
+  343     5   280   424
+  344     5   374   230
+  345     5   205   349
+  346     2   189   192
+  347     2   214   215
+  348     7     8    48
+  349     7    12    71
+  350     1    48   144
+  351     1    71   144
+  352     3   144   288
+  353     4   192   288
+  354     4   215   288
+  355     2   209   212
+  356     7    41     1
+  357     7     9    68
+  358     1   137    41
+  359     1   137    68
+  360     3   281   137
+  361     4   281   185
+  362     4   281   212
+  363     5   358   214
+  364     5   199   343
+  365     5   385   241
+  366     5   388   244
+  367     3   314   170
+  368     2   242   243
+  369     2   261   264
+  370     4   314   242
+  371     4   314   261
+  372     4   315   243
+  373     4   315   264
+  374     5   261   405
+  375     5   264   408
+  376     3   315   171
+  377     6     8    40
+  378     6    12    40
+  379     6    22    40
+  380     6    26    40
+  381     7    90    26
+  382     7    98    12
+  383     7   107    22
+  384     7    26   117
+  385     7    26   126
+  386     7   129     8
+  387     1   162    90
+  388     1   162   107
+  389     1   170    98
+  390     1   170   117
+  391     1   182   126
+  392     1   129   182
+  393     6    35     3
+  394     6    35    13
+  395     6    35    23
+  396     6    35    29
+  397     7    29    93
+  398     7    99    13
+  399     7   110    23
+  400     7    29   120
+  401     7   123    29
+  402     7     3   134
+  403     1    93   165
+  404     1   165   110
+  405     1   171    99
+  406     1   171   120
+  407     1   179   123
+  408     1   179   134
+  409     3   308   164
+  410     3   305   161
+  411     2   233   236
+  412     2   249   252
+  413     4   305   233
+  414     4   305   252
+  415     4   308   236
+  416     4   249   308
+  417     5   377   233
+  418     5   380   236
+  419     7    12    52
+  420     7    85    22
+  421     1    52   148
+  422     1   148    85
+  423     3   292   148
+  424     4   292   196
+  425     4   292   229
+  426     2   193   196
+  427     2   205   208
+  428     1    64   160
+  429     1    73   160
+  430     3   160   304
+  431     4   208   304
+  432     4   217   304
+  433     7    24    64
+  434     7    73     4
+  435     7    46     6
+  436     7    69    16
+  437     1   142    46
+  438     1    69   142
+  439     3   286   142
+  440     4   286   190
+  441     4   213   286
+  442     2   186   187
+  443     7    43     3
+  444     7    66    13
+  445     1   139    43
+  446     1    66   139
+  447     3   283   139
+  448     4   283   187
+  449     4   210   283
+  450     5   330   186
+  451     5   221   365
+  452     7    13    53
+  453     7    82    23
+  454     1    53   149
+  455     1    82   149
+  456     3   149   293
+  457     4   197   293
+  458     4   226   293
+  459     6    38     6
+  460     6    38    16
+  461     6    20    38
+  462     6    28    38
+  463     7    28    92
+  464     7    16   104
+  465     7   105    20
+  466     7   113    28
+  467     7   122    28
+  468     7     6   135
+  469     1    92   164
+  470     1   105   164
+  471     1   104   176
+  472     1   113   176
+  473     1   178   122
+  474     1   178   135
+  475     5   215   359
+  476     5   340   196
+  477     5   334   190
+  478     5   223   367
+  479     5   337   193
+  480     5   356   212
+  481     5   386   242
+  482     5   387   243
+  483     1   150    54
+  484     1    81   150
+  485     3   294   150
+  486     4   294   198
+  487     4   225   294
+  488     7    54    14
+  489     7    81    24
+  490     7    58    18
+  491     7     2    77
+  492     1   154    58
+  493     1   154    77
+  494     3   298   154
+  495     4   298   202
+  496     4   298   221
+  497     6    34     2
+  498     6    34    10
+  499     6    34    18
+  500     6    34    32
+  501     7    32    96
+  502     7    10   102
+  503     7    18   111
+  504     7   115    32
+  505     7    32   128
+  506     7     2   131
+  507     1    96   168
+  508     1   111   168
+  509     1   174   102
+  510     1   115   174
+  511     1   128   184
+  512     1   131   184
+
+Angles
+
+    1    13    41     1    33
+    2    13   132     1    33
+    3    15   132     1    41
+    4    15   132     1    78
+    5    13    78     1    33
+    6    15    78     1    41
+    7    13    42     2    34
+    8    15   131     2    42
+    9    15   131     2    77
+   10    13   131     2    34
+   11    15    77     2    42
+   12    13    77     2    34
+   13    13    74     3    35
+   14    15    74     3    43
+   15    13    43     3    35
+   16    15   134     3    74
+   17    13   134     3    35
+   18    15   134     3    43
+   19    15    73     4    44
+   20    13    73     4    36
+   21    13    44     4    36
+   22    15   133     4    73
+   23    15   133     4    44
+   24    13   133     4    36
+   25    13    45     5    37
+   26    15    80     5    45
+   27    13    80     5    37
+   28    15   136     5    45
+   29    15   136     5    80
+   30    13   136     5    37
+   31    15   135     6    46
+   32    15   135     6    79
+   33    13   135     6    38
+   34    13    46     6    38
+   35    15    79     6    46
+   36    13    79     6    38
+   37    15   130     7    76
+   38    13   130     7    39
+   39    15   130     7    47
+   40    13    76     7    39
+   41    15    76     7    47
+   42    13    47     7    39
+   43    15   129     8    75
+   44    13   129     8    40
+   45    15   129     8    48
+   46    13    75     8    40
+   47    15    75     8    48
+   48    13    48     8    40
+   49    13    49     9    33
+   50    15    68     9    49
+   51    13    68     9    33
+   52    15   101     9    49
+   53    13   101     9    33
+   54    15   101     9    68
+   55    13    50    10    34
+   56    15    67    10    50
+   57    13    67    10    34
+   58    15   102    10    50
+   59    15   102    10    67
+   60    13   102    10    34
+   61    15    97    11    51
+   62    13    97    11    39
+   63    15    97    11    72
+   64    13    51    11    39
+   65    15    72    11    51
+   66    13    72    11    39
+   67    15    98    12    52
+   68    15    98    12    71
+   69    13    98    12    40
+   70    13    52    12    40
+   71    15    71    12    52
+   72    13    71    12    40
+   73    13    66    13    35
+   74    15    66    13    53
+   75    13    53    13    35
+   76    15    99    13    66
+   77    13    99    13    35
+   78    15    99    13    53
+   79    15   100    14    65
+   80    13   100    14    36
+   81    15   100    14    54
+   82    13    65    14    36
+   83    15    65    14    54
+   84    13    54    14    36
+   85    13    55    15    37
+   86    15    70    15    55
+   87    13    70    15    37
+   88    15   103    15    55
+   89    13   103    15    37
+   90    15   103    15    70
+   91    15   104    16    69
+   92    13   104    16    38
+   93    15   104    16    56
+   94    13    69    16    38
+   95    15    69    16    56
+   96    13    56    16    38
+   97    13    57    17    33
+   98    15   112    17    57
+   99    13   112    17    33
+  100    15   112    17    88
+  101    15    88    17    57
+  102    13    88    17    33
+  103    13    58    18    34
+  104    15   111    18    58
+  105    15   111    18    87
+  106    13   111    18    34
+  107    15    87    18    58
+  108    13    87    18    34
+  109    15   106    19    59
+  110    15   106    19    84
+  111    13   106    19    37
+  112    13    59    19    37
+  113    15    84    19    59
+  114    13    84    19    37
+  115    15   105    20    83
+  116    15   105    20    60
+  117    13   105    20    38
+  118    15    83    20    60
+  119    13    83    20    38
+  120    13    60    20    38
+  121    15   108    21    61
+  122    15   108    21    86
+  123    13   108    21    39
+  124    13    61    21    39
+  125    15    86    21    61
+  126    13    86    21    39
+  127    15   107    22    85
+  128    15   107    22    62
+  129    13   107    22    40
+  130    15    85    22    62
+  131    13    85    22    40
+  132    13    62    22    40
+  133    13    82    23    35
+  134    15    82    23    63
+  135    15   110    23    82
+  136    13   110    23    35
+  137    15   110    23    63
+  138    13    63    23    35
+  139    13    81    24    36
+  140    15    81    24    64
+  141    15   109    24    81
+  142    13   109    24    36
+  143    15   109    24    64
+  144    13    64    24    36
+  145    13    89    25    39
+  146    15   125    25    89
+  147    15   125    25   118
+  148    13   125    25    39
+  149    15   118    25    89
+  150    13   118    25    39
+  151    13    90    26    40
+  152    15   117    26    90
+  153    13   117    26    40
+  154    15   126    26    90
+  155    15   126    26   117
+  156    13   126    26    40
+  157    15   121    27   114
+  158    15   121    27    91
+  159    13   121    27    37
+  160    15   114    27    91
+  161    13   114    27    37
+  162    13    91    27    37
+  163    15   113    28    92
+  164    13   113    28    38
+  165    15   122    28   113
+  166    15   122    28    92
+  167    13   122    28    38
+  168    13    92    28    38
+  169    13    93    29    35
+  170    13   123    29    35
+  171    15   123    29    93
+  172    15   123    29   120
+  173    13   120    29    35
+  174    15   120    29    93
+  175    13   124    30    36
+  176    15   124    30    94
+  177    15   124    30   119
+  178    13    94    30    36
+  179    13   119    30    36
+  180    15   119    30    94
+  181    13   116    31    33
+  182    15   116    31    95
+  183    13   127    31    33
+  184    15   127    31   116
+  185    15   127    31    95
+  186    13    95    31    33
+  187    13   115    32    34
+  188    15   115    32    96
+  189    13   128    32    34
+  190    15   128    32   115
+  191    15   128    32    96
+  192    13    96    32    34
+  193    16     9    33     1
+  194    16    31    33     1
+  195    16    31    33     9
+  196    16    31    33    17
+  197    16    17    33     1
+  198    16    17    33     9
+  199    16    32    34     2
+  200    16    32    34    18
+  201    16    32    34    10
+  202    16    18    34     2
+  203    16    18    34    10
+  204    16    10    34     2
+  205    16    29    35     3
+  206    16    29    35    13
+  207    16    29    35    23
+  208    16    13    35     3
+  209    16    23    35     3
+  210    16    23    35    13
+  211    16    30    36     4
+  212    16    30    36    14
+  213    16    30    36    24
+  214    16    14    36     4
+  215    16    24    36     4
+  216    16    24    36    14
+  217    16    19    37     5
+  218    16    19    37    15
+  219    16    27    37    19
+  220    16    27    37     5
+  221    16    27    37    15
+  222    16    15    37     5
+  223    16    28    38    20
+  224    16    28    38     6
+  225    16    28    38    16
+  226    16    20    38     6
+  227    16    20    38    16
+  228    16    16    38     6
+  229    16    25    39    11
+  230    16    25    39    21
+  231    16    25    39     7
+  232    16    11    39     7
+  233    16    21    39    11
+  234    16    21    39     7
+  235    16    26    40    12
+  236    16    26    40    22
+  237    16    26    40     8
+  238    16    12    40     8
+  239    16    22    40    12
+  240    16    22    40     8
+  241    17   137    41     1
+  242    17   138    42     2
+  243    17   139    43     3
+  244    17   140    44     4
+  245    17   141    45     5
+  246    17   142    46     6
+  247    17   143    47     7
+  248    17   144    48     8
+  249    17   145    49     9
+  250    17   146    50    10
+  251    17   147    51    11
+  252    17   148    52    12
+  253    17   149    53    13
+  254    17   150    54    14
+  255    17   151    55    15
+  256    17   152    56    16
+  257    17   153    57    17
+  258    17   154    58    18
+  259    17   155    59    19
+  260    17   156    60    20
+  261    17   157    61    21
+  262    17   158    62    22
+  263    17   159    63    23
+  264    17   160    64    24
+  265    17   140    65    14
+  266    17   139    66    13
+  267    17   138    67    10
+  268    17   137    68     9
+  269    17   142    69    16
+  270    17   141    70    15
+  271    17   144    71    12
+  272    17   143    72    11
+  273    17   160    73     4
+  274    17   159    74     3
+  275    17   158    75     8
+  276    17   157    76     7
+  277    17   154    77     2
+  278    17   153    78     1
+  279    17   156    79     6
+  280    17   155    80     5
+  281    17   150    81    24
+  282    17   149    82    23
+  283    17   152    83    20
+  284    17   151    84    19
+  285    17   148    85    22
+  286    17   147    86    21
+  287    17   146    87    18
+  288    17   145    88    17
+  289    17   161    89    25
+  290    17   162    90    26
+  291    17   163    91    27
+  292    17   164    92    28
+  293    17   165    93    29
+  294    17   166    94    30
+  295    17   167    95    31
+  296    17   168    96    32
+  297    17   169    97    11
+  298    17   170    98    12
+  299    17   171    99    13
+  300    17   172   100    14
+  301    17   173   101     9
+  302    17   174   102    10
+  303    17   175   103    15
+  304    17   176   104    16
+  305    17   164   105    20
+  306    17   163   106    19
+  307    17   162   107    22
+  308    17   161   108    21
+  309    17   166   109    24
+  310    17   165   110    23
+  311    17   168   111    18
+  312    17   167   112    17
+  313    17   176   113    28
+  314    17   175   114    27
+  315    17   174   115    32
+  316    17   173   116    31
+  317    17   170   117    26
+  318    17   169   118    25
+  319    17   172   119    30
+  320    17   171   120    29
+  321    17   177   121    27
+  322    17   178   122    28
+  323    17   179   123    29
+  324    17   180   124    30
+  325    17   181   125    25
+  326    17   182   126    26
+  327    17   183   127    31
+  328    17   184   128    32
+  329    17   182   129     8
+  330    17   181   130     7
+  331    17   184   131     2
+  332    17   183   132     1
+  333    17   180   133     4
+  334    17   179   134     3
+  335    17   178   135     6
+  336    17   177   136     5
+  337     3   281   137    41
+  338     3   281   137    68
+  339     1    68   137    41
+  340     1    67   138    42
+  341     3   282   138    42
+  342     3   282   138    67
+  343     1    66   139    43
+  344     3   283   139    66
+  345     3   283   139    43
+  346     1    65   140    44
+  347     3   284   140    65
+  348     3   284   140    44
+  349     3   285   141    45
+  350     3   285   141    70
+  351     1    70   141    45
+  352     1    69   142    46
+  353     3   286   142    69
+  354     3   286   142    46
+  355     3   287   143    47
+  356     3   287   143    72
+  357     1    72   143    47
+  358     3   288   144    71
+  359     3   288   144    48
+  360     1    71   144    48
+  361     3   289   145    49
+  362     3   289   145    88
+  363     1    88   145    49
+  364     1    87   146    50
+  365     3   290   146    50
+  366     3   290   146    87
+  367     3   291   147    51
+  368     3   291   147    86
+  369     1    86   147    51
+  370     3   292   148    52
+  371     3   292   148    85
+  372     1    85   148    52
+  373     1    82   149    53
+  374     3   293   149    82
+  375     3   293   149    53
+  376     1    81   150    54
+  377     3   294   150    81
+  378     3   294   150    54
+  379     1    84   151    55
+  380     3   295   151    84
+  381     3   295   151    55
+  382     1    83   152    56
+  383     3   296   152    83
+  384     3   296   152    56
+  385     3   297   153    57
+  386     3   297   153    78
+  387     1    78   153    57
+  388     1    77   154    58
+  389     3   298   154    58
+  390     3   298   154    77
+  391     3   299   155    59
+  392     3   299   155    80
+  393     1    80   155    59
+  394     3   300   156    60
+  395     3   300   156    79
+  396     1    79   156    60
+  397     3   301   157    76
+  398     3   301   157    61
+  399     1    76   157    61
+  400     1    75   158    62
+  401     3   302   158    75
+  402     3   302   158    62
+  403     1    74   159    63
+  404     3   303   159    74
+  405     3   303   159    63
+  406     1    73   160    64
+  407     3   304   160    73
+  408     3   304   160    64
+  409     3   305   161    89
+  410     3   305   161   108
+  411     1   108   161    89
+  412     3   306   162   107
+  413     3   306   162    90
+  414     1   107   162    90
+  415     1   106   163    91
+  416     3   307   163   106
+  417     3   307   163    91
+  418     1   105   164    92
+  419     3   308   164   105
+  420     3   308   164    92
+  421     3   309   165    93
+  422     3   309   165   110
+  423     1   110   165    93
+  424     1   109   166    94
+  425     3   310   166   109
+  426     3   310   166    94
+  427     3   311   167    95
+  428     3   311   167   112
+  429     1   112   167    95
+  430     1   111   168    96
+  431     3   312   168    96
+  432     3   312   168   111
+  433     3   313   169    97
+  434     3   313   169   118
+  435     1   118   169    97
+  436     3   314   170   117
+  437     3   314   170    98
+  438     1   117   170    98
+  439     3   315   171    99
+  440     3   315   171   120
+  441     1   120   171    99
+  442     3   316   172   100
+  443     3   316   172   119
+  444     1   119   172   100
+  445     1   116   173   101
+  446     3   317   173   101
+  447     3   317   173   116
+  448     1   115   174   102
+  449     3   318   174   115
+  450     3   318   174   102
+  451     1   114   175   103
+  452     3   319   175   114
+  453     3   319   175   103
+  454     1   113   176   104
+  455     3   320   176   113
+  456     3   320   176   104
+  457     3   321   177   121
+  458     3   321   177   136
+  459     1   136   177   121
+  460     3   322   178   135
+  461     3   322   178   122
+  462     1   135   178   122
+  463     3   323   179   123
+  464     3   323   179   134
+  465     1   134   179   123
+  466     3   324   180   124
+  467     3   324   180   133
+  468     1   133   180   124
+  469     3   325   181   125
+  470     3   325   181   130
+  471     1   130   181   125
+  472     1   129   182   126
+  473     3   326   182   129
+  474     3   326   182   126
+  475     1   132   183   127
+  476     3   327   183   132
+  477     3   327   183   127
+  478     1   131   184   128
+  479     3   328   184   131
+  480     3   328   184   128
+  481     6   329   185   281
+  482     9   329   185   188
+  483     4   281   185   188
+  484     4   282   186   187
+  485     6   330   186   282
+  486     9   330   186   187
+  487     9   331   187   186
+  488     6   331   187   283
+  489     4   283   187   186
+  490     4   284   188   185
+  491     9   332   188   185
+  492     6   332   188   284
+  493     6   333   189   285
+  494     9   333   189   192
+  495     4   285   189   192
+  496     4   286   190   191
+  497     6   334   190   286
+  498     9   334   190   191
+  499     9   335   191   190
+  500     6   335   191   287
+  501     4   287   191   190
+  502     4   288   192   189
+  503     6   336   192   288
+  504     9   336   192   189
+  505     4   289   193   196
+  506     6   337   193   289
+  507     9   337   193   196
+  508     4   290   194   195
+  509     6   338   194   290
+  510     9   338   194   195
+  511     9   339   195   194
+  512     6   339   195   291
+  513     4   291   195   194
+  514     9   340   196   193
+  515     6   340   196   292
+  516     4   292   196   193
+  517     4   293   197   200
+  518     6   341   197   293
+  519     9   341   197   200
+  520     9   342   198   199
+  521     6   342   198   294
+  522     4   294   198   199
+  523     9   343   199   198
+  524     6   343   199   295
+  525     4   295   199   198
+  526     9   344   200   197
+  527     6   344   200   296
+  528     4   296   200   197
+  529     4   297   201   204
+  530     6   345   201   297
+  531     9   345   201   204
+  532     9   346   202   203
+  533     6   346   202   298
+  534     4   298   202   203
+  535     9   347   203   202
+  536     6   347   203   299
+  537     4   299   203   202
+  538     4   300   204   201
+  539     9   348   204   201
+  540     6   348   204   300
+  541     6   349   205   301
+  542     9   349   205   208
+  543     4   301   205   208
+  544     9   350   206   207
+  545     6   350   206   302
+  546     4   302   206   207
+  547     9   351   207   206
+  548     6   351   207   303
+  549     4   303   207   206
+  550     4   304   208   205
+  551     6   352   208   304
+  552     9   352   208   205
+  553     6   353   209   284
+  554     9   353   209   212
+  555     4   284   209   212
+  556     9   354   210   211
+  557     6   354   210   283
+  558     4   283   210   211
+  559     9   355   211   210
+  560     6   355   211   282
+  561     4   282   211   210
+  562     4   281   212   209
+  563     9   356   212   209
+  564     6   356   212   281
+  565     6   357   213   286
+  566     9   357   213   216
+  567     4   286   213   216
+  568     4   285   214   215
+  569     6   358   214   285
+  570     9   358   214   215
+  571     9   359   215   214
+  572     6   359   215   288
+  573     4   288   215   214
+  574     4   287   216   213
+  575     9   360   216   213
+  576     6   360   216   287
+  577     9   361   217   220
+  578     6   361   217   304
+  579     4   304   217   220
+  580     9   362   218   219
+  581     6   362   218   303
+  582     4   303   218   219
+  583     9   363   219   218
+  584     6   363   219   302
+  585     4   302   219   218
+  586     9   364   220   217
+  587     6   364   220   301
+  588     4   301   220   217
+  589     4   298   221   224
+  590     6   365   221   298
+  591     9   365   221   224
+  592     4   297   222   223
+  593     6   366   222   297
+  594     9   366   222   223
+  595     4   300   223   222
+  596     6   367   223   300
+  597     9   367   223   222
+  598     4   299   224   221
+  599     6   368   224   299
+  600     9   368   224   221
+  601     9   369   225   228
+  602     6   369   225   294
+  603     4   294   225   228
+  604     9   370   226   227
+  605     6   370   226   293
+  606     4   293   226   227
+  607     9   371   227   226
+  608     6   371   227   296
+  609     4   296   227   226
+  610     9   372   228   225
+  611     6   372   228   295
+  612     4   295   228   225
+  613     4   292   229   232
+  614     6   373   229   292
+  615     9   373   229   232
+  616     4   291   230   231
+  617     6   374   230   291
+  618     9   374   230   231
+  619     4   290   231   230
+  620     6   375   231   290
+  621     9   375   231   230
+  622     4   289   232   229
+  623     6   376   232   289
+  624     9   376   232   229
+  625     4   305   233   236
+  626     6   377   233   305
+  627     9   377   233   236
+  628     4   306   234   235
+  629     6   378   234   306
+  630     9   378   234   235
+  631     4   307   235   234
+  632     9   379   235   234
+  633     6   379   235   307
+  634     9   380   236   233
+  635     6   380   236   308
+  636     4   308   236   233
+  637     6   381   237   309
+  638     9   381   237   240
+  639     4   309   237   240
+  640     4   310   238   239
+  641     6   382   238   310
+  642     9   382   238   239
+  643     9   383   239   238
+  644     6   383   239   311
+  645     4   311   239   238
+  646     9   384   240   237
+  647     6   384   240   312
+  648     4   312   240   237
+  649     4   313   241   244
+  650     6   385   241   313
+  651     9   385   241   244
+  652     4   314   242   243
+  653     6   386   242   314
+  654     9   386   242   243
+  655     4   315   243   242
+  656     9   387   243   242
+  657     6   387   243   315
+  658     4   316   244   241
+  659     9   388   244   241
+  660     6   388   244   316
+  661     4   317   245   248
+  662     6   389   245   317
+  663     9   389   245   248
+  664     4   318   246   247
+  665     6   390   246   318
+  666     9   390   246   247
+  667     4   319   247   246
+  668     9   391   247   246
+  669     6   391   247   319
+  670     4   320   248   245
+  671     6   392   248   320
+  672     9   392   248   245
+  673     6   393   249   308
+  674     9   393   249   252
+  675     4   308   249   252
+  676     9   394   250   251
+  677     6   394   250   307
+  678     4   307   250   251
+  679     9   395   251   250
+  680     6   395   251   306
+  681     4   306   251   250
+  682     4   305   252   249
+  683     9   396   252   249
+  684     6   396   252   305
+  685     6   397   253   310
+  686     9   397   253   256
+  687     4   310   253   256
+  688     4   309   254   255
+  689     6   398   254   309
+  690     9   398   254   255
+  691     9   399   255   254
+  692     6   399   255   312
+  693     4   312   255   254
+  694     4   311   256   253
+  695     9   400   256   253
+  696     6   400   256   311
+  697     9   401   257   260
+  698     6   401   257   320
+  699     4   320   257   260
+  700     9   402   258   259
+  701     6   402   258   319
+  702     4   319   258   259
+  703     9   403   259   258
+  704     6   403   259   318
+  705     4   318   259   258
+  706     9   404   260   257
+  707     6   404   260   317
+  708     4   317   260   257
+  709     4   314   261   264
+  710     6   405   261   314
+  711     9   405   261   264
+  712     4   313   262   263
+  713     6   406   262   313
+  714     9   406   262   263
+  715     4   316   263   262
+  716     6   407   263   316
+  717     9   407   263   262
+  718     4   315   264   261
+  719     6   408   264   315
+  720     9   408   264   261
+  721     4   321   265   268
+  722     6   409   265   321
+  723     9   409   265   268
+  724     4   322   266   267
+  725     6   410   266   322
+  726     9   410   266   267
+  727     4   323   267   266
+  728     9   411   267   266
+  729     6   411   267   323
+  730     4   324   268   265
+  731     9   412   268   265
+  732     6   412   268   324
+  733     6   413   269   325
+  734     9   413   269   272
+  735     4   325   269   272
+  736     4   326   270   271
+  737     6   414   270   326
+  738     9   414   270   271
+  739     4   327   271   270
+  740     9   415   271   270
+  741     6   415   271   327
+  742     9   416   272   269
+  743     6   416   272   328
+  744     4   328   272   269
+  745     9   417   273   276
+  746     6   417   273   326
+  747     4   326   273   276
+  748     9   418   274   275
+  749     6   418   274   325
+  750     4   325   274   275
+  751     9   419   275   274
+  752     6   419   275   328
+  753     4   328   275   274
+  754     9   420   276   273
+  755     6   420   276   327
+  756     4   327   276   273
+  757     4   324   277   280
+  758     6   421   277   324
+  759     9   421   277   280
+  760     4   323   278   279
+  761     6   422   278   323
+  762     9   422   278   279
+  763     4   322   279   278
+  764     6   423   279   322
+  765     9   423   279   278
+  766     4   321   280   277
+  767     6   424   280   321
+  768     9   424   280   277
+  769    11   185   281   137
+  770    11   212   281   137
+  771    12   212   281   185
+  772    11   211   282   138
+  773    12   211   282   186
+  774    11   186   282   138
+  775    11   210   283   139
+  776    12   210   283   187
+  777    11   187   283   139
+  778    11   209   284   140
+  779    12   209   284   188
+  780    11   188   284   140
+  781    11   189   285   141
+  782    12   214   285   189
+  783    11   214   285   141
+  784    11   213   286   142
+  785    12   213   286   190
+  786    11   190   286   142
+  787    11   191   287   143
+  788    12   216   287   191
+  789    11   216   287   143
+  790    11   192   288   144
+  791    12   215   288   192
+  792    11   215   288   144
+  793    11   193   289   145
+  794    11   232   289   145
+  795    12   232   289   193
+  796    11   231   290   146
+  797    12   231   290   194
+  798    11   194   290   146
+  799    11   195   291   147
+  800    11   230   291   147
+  801    12   230   291   195
+  802    11   229   292   148
+  803    12   229   292   196
+  804    11   196   292   148
+  805    11   197   293   149
+  806    12   226   293   197
+  807    11   226   293   149
+  808    11   225   294   150
+  809    12   225   294   198
+  810    11   198   294   150
+  811    12   228   295   199
+  812    11   228   295   151
+  813    11   199   295   151
+  814    12   227   296   200
+  815    11   227   296   152
+  816    11   200   296   152
+  817    11   201   297   153
+  818    11   222   297   153
+  819    12   222   297   201
+  820    11   221   298   154
+  821    12   221   298   202
+  822    11   202   298   154
+  823    11   203   299   155
+  824    11   224   299   155
+  825    12   224   299   203
+  826    11   223   300   156
+  827    12   223   300   204
+  828    11   204   300   156
+  829    11   205   301   157
+  830    12   220   301   205
+  831    11   220   301   157
+  832    11   219   302   158
+  833    12   219   302   206
+  834    11   206   302   158
+  835    12   218   303   207
+  836    11   218   303   159
+  837    11   207   303   159
+  838    12   217   304   208
+  839    11   217   304   160
+  840    11   208   304   160
+  841    11   233   305   161
+  842    11   252   305   161
+  843    12   252   305   233
+  844    11   251   306   162
+  845    12   251   306   234
+  846    11   234   306   162
+  847    11   250   307   163
+  848    12   250   307   235
+  849    11   235   307   163
+  850    11   249   308   164
+  851    12   249   308   236
+  852    11   236   308   164
+  853    11   237   309   165
+  854    12   254   309   237
+  855    11   254   309   165
+  856    11   253   310   166
+  857    12   253   310   238
+  858    11   238   310   166
+  859    11   239   311   167
+  860    12   256   311   239
+  861    11   256   311   167
+  862    11   240   312   168
+  863    12   255   312   240
+  864    11   255   312   168
+  865    11   241   313   169
+  866    12   262   313   241
+  867    11   262   313   169
+  868    11   261   314   170
+  869    12   261   314   242
+  870    11   242   314   170
+  871    11   243   315   171
+  872    12   264   315   243
+  873    11   264   315   171
+  874    11   263   316   172
+  875    12   263   316   244
+  876    11   244   316   172
+  877    11   245   317   173
+  878    12   260   317   245
+  879    11   260   317   173
+  880    12   259   318   246
+  881    11   259   318   174
+  882    11   246   318   174
+  883    12   258   319   247
+  884    11   258   319   175
+  885    11   247   319   175
+  886    11   257   320   176
+  887    12   257   320   248
+  888    11   248   320   176
+  889    11   265   321   177
+  890    12   280   321   265
+  891    11   280   321   177
+  892    11   279   322   178
+  893    12   279   322   266
+  894    11   266   322   178
+  895    11   267   323   179
+  896    12   278   323   267
+  897    11   278   323   179
+  898    11   268   324   180
+  899    12   277   324   268
+  900    11   277   324   180
+  901    11   269   325   181
+  902    12   274   325   269
+  903    11   274   325   181
+  904    12   273   326   270
+  905    11   273   326   182
+  906    11   270   326   182
+  907    12   276   327   271
+  908    11   276   327   183
+  909    11   271   327   183
+  910    11   275   328   184
+  911    12   275   328   272
+  912    11   272   328   184
+  913    27    41     1    33
+  914    27   132     1    33
+  915    28   132     1    41
+  916    28   132     1    78
+  917    27    78     1    33
+  918    28    78     1    41
+  919    27    42     2    34
+  920    28   131     2    42
+  921    28   131     2    77
+  922    27   131     2    34
+  923    28    77     2    42
+  924    27    77     2    34
+  925    27    74     3    35
+  926    28    74     3    43
+  927    27    43     3    35
+  928    28   134     3    74
+  929    27   134     3    35
+  930    28   134     3    43
+  931    28    73     4    44
+  932    27    73     4    36
+  933    27    44     4    36
+  934    28   133     4    73
+  935    28   133     4    44
+  936    27   133     4    36
+  937    27    45     5    37
+  938    28    80     5    45
+  939    27    80     5    37
+  940    28   136     5    45
+  941    28   136     5    80
+  942    27   136     5    37
+  943    28   135     6    46
+  944    28   135     6    79
+  945    27   135     6    38
+  946    27    46     6    38
+  947    28    79     6    46
+  948    27    79     6    38
+  949    28   130     7    76
+  950    27   130     7    39
+  951    28   130     7    47
+  952    27    76     7    39
+  953    28    76     7    47
+  954    27    47     7    39
+  955    28   129     8    75
+  956    27   129     8    40
+  957    28   129     8    48
+  958    27    75     8    40
+  959    28    75     8    48
+  960    27    48     8    40
+  961    27    49     9    33
+  962    28    68     9    49
+  963    27    68     9    33
+  964    28   101     9    49
+  965    27   101     9    33
+  966    28   101     9    68
+  967    27    50    10    34
+  968    28    67    10    50
+  969    27    67    10    34
+  970    28   102    10    50
+  971    28   102    10    67
+  972    27   102    10    34
+  973    28    97    11    51
+  974    27    97    11    39
+  975    28    97    11    72
+  976    27    51    11    39
+  977    28    72    11    51
+  978    27    72    11    39
+  979    28    98    12    52
+  980    28    98    12    71
+  981    27    98    12    40
+  982    27    52    12    40
+  983    28    71    12    52
+  984    27    71    12    40
+  985    27    66    13    35
+  986    28    66    13    53
+  987    27    53    13    35
+  988    28    99    13    66
+  989    27    99    13    35
+  990    28    99    13    53
+  991    28   100    14    65
+  992    27   100    14    36
+  993    28   100    14    54
+  994    27    65    14    36
+  995    28    65    14    54
+  996    27    54    14    36
+  997    27    55    15    37
+  998    28    70    15    55
+  999    27    70    15    37
+ 1000    28   103    15    55
+ 1001    27   103    15    37
+ 1002    28   103    15    70
+ 1003    28   104    16    69
+ 1004    27   104    16    38
+ 1005    28   104    16    56
+ 1006    27    69    16    38
+ 1007    28    69    16    56
+ 1008    27    56    16    38
+ 1009    27    57    17    33
+ 1010    28   112    17    57
+ 1011    27   112    17    33
+ 1012    28   112    17    88
+ 1013    28    88    17    57
+ 1014    27    88    17    33
+ 1015    27    58    18    34
+ 1016    28   111    18    58
+ 1017    28   111    18    87
+ 1018    27   111    18    34
+ 1019    28    87    18    58
+ 1020    27    87    18    34
+ 1021    28   106    19    59
+ 1022    28   106    19    84
+ 1023    27   106    19    37
+ 1024    27    59    19    37
+ 1025    28    84    19    59
+ 1026    27    84    19    37
+ 1027    28   105    20    83
+ 1028    28   105    20    60
+ 1029    27   105    20    38
+ 1030    28    83    20    60
+ 1031    27    83    20    38
+ 1032    27    60    20    38
+ 1033    28   108    21    61
+ 1034    28   108    21    86
+ 1035    27   108    21    39
+ 1036    27    61    21    39
+ 1037    28    86    21    61
+ 1038    27    86    21    39
+ 1039    28   107    22    85
+ 1040    28   107    22    62
+ 1041    27   107    22    40
+ 1042    28    85    22    62
+ 1043    27    85    22    40
+ 1044    27    62    22    40
+ 1045    27    82    23    35
+ 1046    28    82    23    63
+ 1047    28   110    23    82
+ 1048    27   110    23    35
+ 1049    28   110    23    63
+ 1050    27    63    23    35
+ 1051    27    81    24    36
+ 1052    28    81    24    64
+ 1053    28   109    24    81
+ 1054    27   109    24    36
+ 1055    28   109    24    64
+ 1056    27    64    24    36
+ 1057    27    89    25    39
+ 1058    28   125    25    89
+ 1059    28   125    25   118
+ 1060    27   125    25    39
+ 1061    28   118    25    89
+ 1062    27   118    25    39
+ 1063    27    90    26    40
+ 1064    28   117    26    90
+ 1065    27   117    26    40
+ 1066    28   126    26    90
+ 1067    28   126    26   117
+ 1068    27   126    26    40
+ 1069    28   121    27   114
+ 1070    28   121    27    91
+ 1071    27   121    27    37
+ 1072    28   114    27    91
+ 1073    27   114    27    37
+ 1074    27    91    27    37
+ 1075    28   113    28    92
+ 1076    27   113    28    38
+ 1077    28   122    28   113
+ 1078    28   122    28    92
+ 1079    27   122    28    38
+ 1080    27    92    28    38
+ 1081    27    93    29    35
+ 1082    27   123    29    35
+ 1083    28   123    29    93
+ 1084    28   123    29   120
+ 1085    27   120    29    35
+ 1086    28   120    29    93
+ 1087    27   124    30    36
+ 1088    28   124    30    94
+ 1089    28   124    30   119
+ 1090    27    94    30    36
+ 1091    27   119    30    36
+ 1092    28   119    30    94
+ 1093    27   116    31    33
+ 1094    28   116    31    95
+ 1095    27   127    31    33
+ 1096    28   127    31   116
+ 1097    28   127    31    95
+ 1098    27    95    31    33
+ 1099    27   115    32    34
+ 1100    28   115    32    96
+ 1101    27   128    32    34
+ 1102    28   128    32   115
+ 1103    28   128    32    96
+ 1104    27    96    32    34
+ 1105    29     9    33     1
+ 1106    29    31    33     1
+ 1107    29    31    33     9
+ 1108    29    31    33    17
+ 1109    29    17    33     1
+ 1110    29    17    33     9
+ 1111    29    32    34     2
+ 1112    29    32    34    18
+ 1113    29    32    34    10
+ 1114    29    18    34     2
+ 1115    29    18    34    10
+ 1116    29    10    34     2
+ 1117    29    29    35     3
+ 1118    29    29    35    13
+ 1119    29    29    35    23
+ 1120    29    13    35     3
+ 1121    29    23    35     3
+ 1122    29    23    35    13
+ 1123    29    30    36     4
+ 1124    29    30    36    14
+ 1125    29    30    36    24
+ 1126    29    14    36     4
+ 1127    29    24    36     4
+ 1128    29    24    36    14
+ 1129    29    19    37     5
+ 1130    29    19    37    15
+ 1131    29    27    37    19
+ 1132    29    27    37     5
+ 1133    29    27    37    15
+ 1134    29    15    37     5
+ 1135    29    28    38    20
+ 1136    29    28    38     6
+ 1137    29    28    38    16
+ 1138    29    20    38     6
+ 1139    29    20    38    16
+ 1140    29    16    38     6
+ 1141    29    25    39    11
+ 1142    29    25    39    21
+ 1143    29    25    39     7
+ 1144    29    11    39     7
+ 1145    29    21    39    11
+ 1146    29    21    39     7
+ 1147    29    26    40    12
+ 1148    29    26    40    22
+ 1149    29    26    40     8
+ 1150    29    12    40     8
+ 1151    29    22    40    12
+ 1152    29    22    40     8
+ 1153    26   137    41     1
+ 1154    26   138    42     2
+ 1155    26   139    43     3
+ 1156    26   140    44     4
+ 1157    26   141    45     5
+ 1158    26   142    46     6
+ 1159    26   143    47     7
+ 1160    26   144    48     8
+ 1161    26   145    49     9
+ 1162    26   146    50    10
+ 1163    26   147    51    11
+ 1164    26   148    52    12
+ 1165    26   149    53    13
+ 1166    26   150    54    14
+ 1167    26   151    55    15
+ 1168    26   152    56    16
+ 1169    26   153    57    17
+ 1170    26   154    58    18
+ 1171    26   155    59    19
+ 1172    26   156    60    20
+ 1173    26   157    61    21
+ 1174    26   158    62    22
+ 1175    26   159    63    23
+ 1176    26   160    64    24
+ 1177    26   140    65    14
+ 1178    26   139    66    13
+ 1179    26   138    67    10
+ 1180    26   137    68     9
+ 1181    26   142    69    16
+ 1182    26   141    70    15
+ 1183    26   144    71    12
+ 1184    26   143    72    11
+ 1185    26   160    73     4
+ 1186    26   159    74     3
+ 1187    26   158    75     8
+ 1188    26   157    76     7
+ 1189    26   154    77     2
+ 1190    26   153    78     1
+ 1191    26   156    79     6
+ 1192    26   155    80     5
+ 1193    26   150    81    24
+ 1194    26   149    82    23
+ 1195    26   152    83    20
+ 1196    26   151    84    19
+ 1197    26   148    85    22
+ 1198    26   147    86    21
+ 1199    26   146    87    18
+ 1200    26   145    88    17
+ 1201    26   161    89    25
+ 1202    26   162    90    26
+ 1203    26   163    91    27
+ 1204    26   164    92    28
+ 1205    26   165    93    29
+ 1206    26   166    94    30
+ 1207    26   167    95    31
+ 1208    26   168    96    32
+ 1209    26   169    97    11
+ 1210    26   170    98    12
+ 1211    26   171    99    13
+ 1212    26   172   100    14
+ 1213    26   173   101     9
+ 1214    26   174   102    10
+ 1215    26   175   103    15
+ 1216    26   176   104    16
+ 1217    26   164   105    20
+ 1218    26   163   106    19
+ 1219    26   162   107    22
+ 1220    26   161   108    21
+ 1221    26   166   109    24
+ 1222    26   165   110    23
+ 1223    26   168   111    18
+ 1224    26   167   112    17
+ 1225    26   176   113    28
+ 1226    26   175   114    27
+ 1227    26   174   115    32
+ 1228    26   173   116    31
+ 1229    26   170   117    26
+ 1230    26   169   118    25
+ 1231    26   172   119    30
+ 1232    26   171   120    29
+ 1233    26   177   121    27
+ 1234    26   178   122    28
+ 1235    26   179   123    29
+ 1236    26   180   124    30
+ 1237    26   181   125    25
+ 1238    26   182   126    26
+ 1239    26   183   127    31
+ 1240    26   184   128    32
+ 1241    26   182   129     8
+ 1242    26   181   130     7
+ 1243    26   184   131     2
+ 1244    26   183   132     1
+ 1245    26   180   133     4
+ 1246    26   179   134     3
+ 1247    26   178   135     6
+ 1248    26   177   136     5
+ 1249    22   281   137    41
+ 1250    22   281   137    68
+ 1251    19    68   137    41
+ 1252    19    67   138    42
+ 1253    22   282   138    42
+ 1254    22   282   138    67
+ 1255    19    66   139    43
+ 1256    22   283   139    66
+ 1257    22   283   139    43
+ 1258    19    65   140    44
+ 1259    22   284   140    65
+ 1260    22   284   140    44
+ 1261    22   285   141    45
+ 1262    22   285   141    70
+ 1263    19    70   141    45
+ 1264    19    69   142    46
+ 1265    22   286   142    69
+ 1266    22   286   142    46
+ 1267    22   287   143    47
+ 1268    22   287   143    72
+ 1269    19    72   143    47
+ 1270    22   288   144    71
+ 1271    22   288   144    48
+ 1272    19    71   144    48
+ 1273    22   289   145    49
+ 1274    22   289   145    88
+ 1275    19    88   145    49
+ 1276    19    87   146    50
+ 1277    22   290   146    50
+ 1278    22   290   146    87
+ 1279    22   291   147    51
+ 1280    22   291   147    86
+ 1281    19    86   147    51
+ 1282    22   292   148    52
+ 1283    22   292   148    85
+ 1284    19    85   148    52
+ 1285    19    82   149    53
+ 1286    22   293   149    82
+ 1287    22   293   149    53
+ 1288    19    81   150    54
+ 1289    22   294   150    81
+ 1290    22   294   150    54
+ 1291    19    84   151    55
+ 1292    22   295   151    84
+ 1293    22   295   151    55
+ 1294    19    83   152    56
+ 1295    22   296   152    83
+ 1296    22   296   152    56
+ 1297    22   297   153    57
+ 1298    22   297   153    78
+ 1299    19    78   153    57
+ 1300    19    77   154    58
+ 1301    22   298   154    58
+ 1302    22   298   154    77
+ 1303    22   299   155    59
+ 1304    22   299   155    80
+ 1305    19    80   155    59
+ 1306    22   300   156    60
+ 1307    22   300   156    79
+ 1308    19    79   156    60
+ 1309    22   301   157    76
+ 1310    22   301   157    61
+ 1311    19    76   157    61
+ 1312    19    75   158    62
+ 1313    22   302   158    75
+ 1314    22   302   158    62
+ 1315    19    74   159    63
+ 1316    22   303   159    74
+ 1317    22   303   159    63
+ 1318    19    73   160    64
+ 1319    22   304   160    73
+ 1320    22   304   160    64
+ 1321    22   305   161    89
+ 1322    22   305   161   108
+ 1323    19   108   161    89
+ 1324    22   306   162   107
+ 1325    22   306   162    90
+ 1326    19   107   162    90
+ 1327    19   106   163    91
+ 1328    22   307   163   106
+ 1329    22   307   163    91
+ 1330    19   105   164    92
+ 1331    22   308   164   105
+ 1332    22   308   164    92
+ 1333    22   309   165    93
+ 1334    22   309   165   110
+ 1335    19   110   165    93
+ 1336    19   109   166    94
+ 1337    22   310   166   109
+ 1338    22   310   166    94
+ 1339    22   311   167    95
+ 1340    22   311   167   112
+ 1341    19   112   167    95
+ 1342    19   111   168    96
+ 1343    22   312   168    96
+ 1344    22   312   168   111
+ 1345    22   313   169    97
+ 1346    22   313   169   118
+ 1347    19   118   169    97
+ 1348    22   314   170   117
+ 1349    22   314   170    98
+ 1350    19   117   170    98
+ 1351    22   315   171    99
+ 1352    22   315   171   120
+ 1353    19   120   171    99
+ 1354    22   316   172   100
+ 1355    22   316   172   119
+ 1356    19   119   172   100
+ 1357    19   116   173   101
+ 1358    22   317   173   101
+ 1359    22   317   173   116
+ 1360    19   115   174   102
+ 1361    22   318   174   115
+ 1362    22   318   174   102
+ 1363    19   114   175   103
+ 1364    22   319   175   114
+ 1365    22   319   175   103
+ 1366    19   113   176   104
+ 1367    22   320   176   113
+ 1368    22   320   176   104
+ 1369    22   321   177   121
+ 1370    22   321   177   136
+ 1371    19   136   177   121
+ 1372    22   322   178   135
+ 1373    22   322   178   122
+ 1374    19   135   178   122
+ 1375    22   323   179   123
+ 1376    22   323   179   134
+ 1377    19   134   179   123
+ 1378    22   324   180   124
+ 1379    22   324   180   133
+ 1380    19   133   180   124
+ 1381    22   325   181   125
+ 1382    22   325   181   130
+ 1383    19   130   181   125
+ 1384    19   129   182   126
+ 1385    22   326   182   129
+ 1386    22   326   182   126
+ 1387    19   132   183   127
+ 1388    22   327   183   132
+ 1389    22   327   183   127
+ 1390    19   131   184   128
+ 1391    22   328   184   131
+ 1392    22   328   184   128
+ 1393    24   329   185   281
+ 1394    21   329   185   188
+ 1395    25   281   185   188
+ 1396    25   282   186   187
+ 1397    24   330   186   282
+ 1398    21   330   186   187
+ 1399    21   331   187   186
+ 1400    24   331   187   283
+ 1401    25   283   187   186
+ 1402    25   284   188   185
+ 1403    21   332   188   185
+ 1404    24   332   188   284
+ 1405    24   333   189   285
+ 1406    21   333   189   192
+ 1407    25   285   189   192
+ 1408    25   286   190   191
+ 1409    24   334   190   286
+ 1410    21   334   190   191
+ 1411    21   335   191   190
+ 1412    24   335   191   287
+ 1413    25   287   191   190
+ 1414    25   288   192   189
+ 1415    24   336   192   288
+ 1416    21   336   192   189
+ 1417    25   289   193   196
+ 1418    24   337   193   289
+ 1419    21   337   193   196
+ 1420    25   290   194   195
+ 1421    24   338   194   290
+ 1422    21   338   194   195
+ 1423    21   339   195   194
+ 1424    24   339   195   291
+ 1425    25   291   195   194
+ 1426    21   340   196   193
+ 1427    24   340   196   292
+ 1428    25   292   196   193
+ 1429    25   293   197   200
+ 1430    24   341   197   293
+ 1431    21   341   197   200
+ 1432    21   342   198   199
+ 1433    24   342   198   294
+ 1434    25   294   198   199
+ 1435    21   343   199   198
+ 1436    24   343   199   295
+ 1437    25   295   199   198
+ 1438    21   344   200   197
+ 1439    24   344   200   296
+ 1440    25   296   200   197
+ 1441    25   297   201   204
+ 1442    24   345   201   297
+ 1443    21   345   201   204
+ 1444    21   346   202   203
+ 1445    24   346   202   298
+ 1446    25   298   202   203
+ 1447    21   347   203   202
+ 1448    24   347   203   299
+ 1449    25   299   203   202
+ 1450    25   300   204   201
+ 1451    21   348   204   201
+ 1452    24   348   204   300
+ 1453    24   349   205   301
+ 1454    21   349   205   208
+ 1455    25   301   205   208
+ 1456    21   350   206   207
+ 1457    24   350   206   302
+ 1458    25   302   206   207
+ 1459    21   351   207   206
+ 1460    24   351   207   303
+ 1461    25   303   207   206
+ 1462    25   304   208   205
+ 1463    24   352   208   304
+ 1464    21   352   208   205
+ 1465    24   353   209   284
+ 1466    21   353   209   212
+ 1467    25   284   209   212
+ 1468    21   354   210   211
+ 1469    24   354   210   283
+ 1470    25   283   210   211
+ 1471    21   355   211   210
+ 1472    24   355   211   282
+ 1473    25   282   211   210
+ 1474    25   281   212   209
+ 1475    21   356   212   209
+ 1476    24   356   212   281
+ 1477    24   357   213   286
+ 1478    21   357   213   216
+ 1479    25   286   213   216
+ 1480    25   285   214   215
+ 1481    24   358   214   285
+ 1482    21   358   214   215
+ 1483    21   359   215   214
+ 1484    24   359   215   288
+ 1485    25   288   215   214
+ 1486    25   287   216   213
+ 1487    21   360   216   213
+ 1488    24   360   216   287
+ 1489    21   361   217   220
+ 1490    24   361   217   304
+ 1491    25   304   217   220
+ 1492    21   362   218   219
+ 1493    24   362   218   303
+ 1494    25   303   218   219
+ 1495    21   363   219   218
+ 1496    24   363   219   302
+ 1497    25   302   219   218
+ 1498    21   364   220   217
+ 1499    24   364   220   301
+ 1500    25   301   220   217
+ 1501    25   298   221   224
+ 1502    24   365   221   298
+ 1503    21   365   221   224
+ 1504    25   297   222   223
+ 1505    24   366   222   297
+ 1506    21   366   222   223
+ 1507    25   300   223   222
+ 1508    24   367   223   300
+ 1509    21   367   223   222
+ 1510    25   299   224   221
+ 1511    24   368   224   299
+ 1512    21   368   224   221
+ 1513    21   369   225   228
+ 1514    24   369   225   294
+ 1515    25   294   225   228
+ 1516    21   370   226   227
+ 1517    24   370   226   293
+ 1518    25   293   226   227
+ 1519    21   371   227   226
+ 1520    24   371   227   296
+ 1521    25   296   227   226
+ 1522    21   372   228   225
+ 1523    24   372   228   295
+ 1524    25   295   228   225
+ 1525    25   292   229   232
+ 1526    24   373   229   292
+ 1527    21   373   229   232
+ 1528    25   291   230   231
+ 1529    24   374   230   291
+ 1530    21   374   230   231
+ 1531    25   290   231   230
+ 1532    24   375   231   290
+ 1533    21   375   231   230
+ 1534    25   289   232   229
+ 1535    24   376   232   289
+ 1536    21   376   232   229
+ 1537    25   305   233   236
+ 1538    24   377   233   305
+ 1539    21   377   233   236
+ 1540    25   306   234   235
+ 1541    24   378   234   306
+ 1542    21   378   234   235
+ 1543    25   307   235   234
+ 1544    21   379   235   234
+ 1545    24   379   235   307
+ 1546    21   380   236   233
+ 1547    24   380   236   308
+ 1548    25   308   236   233
+ 1549    24   381   237   309
+ 1550    21   381   237   240
+ 1551    25   309   237   240
+ 1552    25   310   238   239
+ 1553    24   382   238   310
+ 1554    21   382   238   239
+ 1555    21   383   239   238
+ 1556    24   383   239   311
+ 1557    25   311   239   238
+ 1558    21   384   240   237
+ 1559    24   384   240   312
+ 1560    25   312   240   237
+ 1561    25   313   241   244
+ 1562    24   385   241   313
+ 1563    21   385   241   244
+ 1564    25   314   242   243
+ 1565    24   386   242   314
+ 1566    21   386   242   243
+ 1567    25   315   243   242
+ 1568    21   387   243   242
+ 1569    24   387   243   315
+ 1570    25   316   244   241
+ 1571    21   388   244   241
+ 1572    24   388   244   316
+ 1573    25   317   245   248
+ 1574    24   389   245   317
+ 1575    21   389   245   248
+ 1576    25   318   246   247
+ 1577    24   390   246   318
+ 1578    21   390   246   247
+ 1579    25   319   247   246
+ 1580    21   391   247   246
+ 1581    24   391   247   319
+ 1582    25   320   248   245
+ 1583    24   392   248   320
+ 1584    21   392   248   245
+ 1585    24   393   249   308
+ 1586    21   393   249   252
+ 1587    25   308   249   252
+ 1588    21   394   250   251
+ 1589    24   394   250   307
+ 1590    25   307   250   251
+ 1591    21   395   251   250
+ 1592    24   395   251   306
+ 1593    25   306   251   250
+ 1594    25   305   252   249
+ 1595    21   396   252   249
+ 1596    24   396   252   305
+ 1597    24   397   253   310
+ 1598    21   397   253   256
+ 1599    25   310   253   256
+ 1600    25   309   254   255
+ 1601    24   398   254   309
+ 1602    21   398   254   255
+ 1603    21   399   255   254
+ 1604    24   399   255   312
+ 1605    25   312   255   254
+ 1606    25   311   256   253
+ 1607    21   400   256   253
+ 1608    24   400   256   311
+ 1609    21   401   257   260
+ 1610    24   401   257   320
+ 1611    25   320   257   260
+ 1612    21   402   258   259
+ 1613    24   402   258   319
+ 1614    25   319   258   259
+ 1615    21   403   259   258
+ 1616    24   403   259   318
+ 1617    25   318   259   258
+ 1618    21   404   260   257
+ 1619    24   404   260   317
+ 1620    25   317   260   257
+ 1621    25   314   261   264
+ 1622    24   405   261   314
+ 1623    21   405   261   264
+ 1624    25   313   262   263
+ 1625    24   406   262   313
+ 1626    21   406   262   263
+ 1627    25   316   263   262
+ 1628    24   407   263   316
+ 1629    21   407   263   262
+ 1630    25   315   264   261
+ 1631    24   408   264   315
+ 1632    21   408   264   261
+ 1633    25   321   265   268
+ 1634    24   409   265   321
+ 1635    21   409   265   268
+ 1636    25   322   266   267
+ 1637    24   410   266   322
+ 1638    21   410   266   267
+ 1639    25   323   267   266
+ 1640    21   411   267   266
+ 1641    24   411   267   323
+ 1642    25   324   268   265
+ 1643    21   412   268   265
+ 1644    24   412   268   324
+ 1645    24   413   269   325
+ 1646    21   413   269   272
+ 1647    25   325   269   272
+ 1648    25   326   270   271
+ 1649    24   414   270   326
+ 1650    21   414   270   271
+ 1651    25   327   271   270
+ 1652    21   415   271   270
+ 1653    24   415   271   327
+ 1654    21   416   272   269
+ 1655    24   416   272   328
+ 1656    25   328   272   269
+ 1657    21   417   273   276
+ 1658    24   417   273   326
+ 1659    25   326   273   276
+ 1660    21   418   274   275
+ 1661    24   418   274   325
+ 1662    25   325   274   275
+ 1663    21   419   275   274
+ 1664    24   419   275   328
+ 1665    25   328   275   274
+ 1666    21   420   276   273
+ 1667    24   420   276   327
+ 1668    25   327   276   273
+ 1669    25   324   277   280
+ 1670    24   421   277   324
+ 1671    21   421   277   280
+ 1672    25   323   278   279
+ 1673    24   422   278   323
+ 1674    21   422   278   279
+ 1675    25   322   279   278
+ 1676    24   423   279   322
+ 1677    21   423   279   278
+ 1678    25   321   280   277
+ 1679    24   424   280   321
+ 1680    21   424   280   277
+ 1681    23   185   281   137
+ 1682    23   212   281   137
+ 1683    20   212   281   185
+ 1684    23   211   282   138
+ 1685    20   211   282   186
+ 1686    23   186   282   138
+ 1687    23   210   283   139
+ 1688    20   210   283   187
+ 1689    23   187   283   139
+ 1690    23   209   284   140
+ 1691    20   209   284   188
+ 1692    23   188   284   140
+ 1693    23   189   285   141
+ 1694    20   214   285   189
+ 1695    23   214   285   141
+ 1696    23   213   286   142
+ 1697    20   213   286   190
+ 1698    23   190   286   142
+ 1699    23   191   287   143
+ 1700    20   216   287   191
+ 1701    23   216   287   143
+ 1702    23   192   288   144
+ 1703    20   215   288   192
+ 1704    23   215   288   144
+ 1705    23   193   289   145
+ 1706    23   232   289   145
+ 1707    20   232   289   193
+ 1708    23   231   290   146
+ 1709    20   231   290   194
+ 1710    23   194   290   146
+ 1711    23   195   291   147
+ 1712    23   230   291   147
+ 1713    20   230   291   195
+ 1714    23   229   292   148
+ 1715    20   229   292   196
+ 1716    23   196   292   148
+ 1717    23   197   293   149
+ 1718    20   226   293   197
+ 1719    23   226   293   149
+ 1720    23   225   294   150
+ 1721    20   225   294   198
+ 1722    23   198   294   150
+ 1723    20   228   295   199
+ 1724    23   228   295   151
+ 1725    23   199   295   151
+ 1726    20   227   296   200
+ 1727    23   227   296   152
+ 1728    23   200   296   152
+ 1729    23   201   297   153
+ 1730    23   222   297   153
+ 1731    20   222   297   201
+ 1732    23   221   298   154
+ 1733    20   221   298   202
+ 1734    23   202   298   154
+ 1735    23   203   299   155
+ 1736    23   224   299   155
+ 1737    20   224   299   203
+ 1738    23   223   300   156
+ 1739    20   223   300   204
+ 1740    23   204   300   156
+ 1741    23   205   301   157
+ 1742    20   220   301   205
+ 1743    23   220   301   157
+ 1744    23   219   302   158
+ 1745    20   219   302   206
+ 1746    23   206   302   158
+ 1747    20   218   303   207
+ 1748    23   218   303   159
+ 1749    23   207   303   159
+ 1750    20   217   304   208
+ 1751    23   217   304   160
+ 1752    23   208   304   160
+ 1753    23   233   305   161
+ 1754    23   252   305   161
+ 1755    20   252   305   233
+ 1756    23   251   306   162
+ 1757    20   251   306   234
+ 1758    23   234   306   162
+ 1759    23   250   307   163
+ 1760    20   250   307   235
+ 1761    23   235   307   163
+ 1762    23   249   308   164
+ 1763    20   249   308   236
+ 1764    23   236   308   164
+ 1765    23   237   309   165
+ 1766    20   254   309   237
+ 1767    23   254   309   165
+ 1768    23   253   310   166
+ 1769    20   253   310   238
+ 1770    23   238   310   166
+ 1771    23   239   311   167
+ 1772    20   256   311   239
+ 1773    23   256   311   167
+ 1774    23   240   312   168
+ 1775    20   255   312   240
+ 1776    23   255   312   168
+ 1777    23   241   313   169
+ 1778    20   262   313   241
+ 1779    23   262   313   169
+ 1780    23   261   314   170
+ 1781    20   261   314   242
+ 1782    23   242   314   170
+ 1783    23   243   315   171
+ 1784    20   264   315   243
+ 1785    23   264   315   171
+ 1786    23   263   316   172
+ 1787    20   263   316   244
+ 1788    23   244   316   172
+ 1789    23   245   317   173
+ 1790    20   260   317   245
+ 1791    23   260   317   173
+ 1792    20   259   318   246
+ 1793    23   259   318   174
+ 1794    23   246   318   174
+ 1795    20   258   319   247
+ 1796    23   258   319   175
+ 1797    23   247   319   175
+ 1798    23   257   320   176
+ 1799    20   257   320   248
+ 1800    23   248   320   176
+ 1801    23   265   321   177
+ 1802    20   280   321   265
+ 1803    23   280   321   177
+ 1804    23   279   322   178
+ 1805    20   279   322   266
+ 1806    23   266   322   178
+ 1807    23   267   323   179
+ 1808    20   278   323   267
+ 1809    23   278   323   179
+ 1810    23   268   324   180
+ 1811    20   277   324   268
+ 1812    23   277   324   180
+ 1813    23   269   325   181
+ 1814    20   274   325   269
+ 1815    23   274   325   181
+ 1816    20   273   326   270
+ 1817    23   273   326   182
+ 1818    23   270   326   182
+ 1819    20   276   327   271
+ 1820    23   276   327   183
+ 1821    23   271   327   183
+ 1822    23   275   328   184
+ 1823    20   275   328   272
+ 1824    23   272   328   184
+
+Dihedrals
+
+    1     4   292   229   232   289
+    2     5   292   229   232   376
+    3     5   373   229   232   289
+    4     7   373   229   232   376
+    5    10   289   145    49     9
+    6     9    88   145    49     9
+    7     9    49   145    88    17
+    8    10   289   145    88    17
+    9     3   193   289   145    49
+   10     3   193   289   145    88
+   11     3   232   289   145    49
+   12     3   232   289   145    88
+   13     2   145   289   193   337
+   14     8   145   289   193   196
+   15     6   232   289   193   337
+   16     1   232   289   193   196
+   17     8   145   289   232   229
+   18     2   145   289   232   376
+   19     1   193   289   232   229
+   20     6   193   289   232   376
+   21     3   132   183   327   276
+   22     3   132   183   327   271
+   23     3   127   183   327   276
+   24     3   127   183   327   271
+   25     4   326   270   271   327
+   26     5   326   270   271   415
+   27     5   414   270   271   327
+   28     7   414   270   271   415
+   29     7   417   273   276   420
+   30     5   417   273   276   327
+   31     5   326   273   276   420
+   32     4   326   273   276   327
+   33     1   273   326   270   271
+   34     6   273   326   270   414
+   35     8   182   326   270   271
+   36     2   182   326   270   414
+   37     6   417   273   326   270
+   38     2   417   273   326   182
+   39     1   276   273   326   270
+   40     8   276   273   326   182
+   41     1   270   271   327   276
+   42     8   270   271   327   183
+   43     6   415   271   327   276
+   44     2   415   271   327   183
+   45     1   273   276   327   271
+   46     8   273   276   327   183
+   47     6   420   276   327   271
+   48     2   420   276   327   183
+   49     3   273   326   182   129
+   50     3   273   326   182   126
+   51     3   270   326   182   129
+   52     3   270   326   182   126
+   53    11    45     5    37    19
+   54    11    45     5    37    27
+   55    11    45     5    37    15
+   56    11    80     5    37    19
+   57    11    80     5    37    27
+   58    11    80     5    37    15
+   59    11   136     5    37    19
+   60    11   136     5    37    27
+   61    11   136     5    37    15
+   62    11    19    37    15    55
+   63    11    19    37    15    70
+   64    11    19    37    15   103
+   65    11     5    37    15    55
+   66    11     5    37    15    70
+   67    11     5    37    15   103
+   68    11    27    37    15    55
+   69    11    27    37    15    70
+   70    11    27    37    15   103
+   71    11   106    19    37     5
+   72    11   106    19    37    27
+   73    11   106    19    37    15
+   74    11    59    19    37     5
+   75    11    59    19    37    27
+   76    11    59    19    37    15
+   77    11    84    19    37     5
+   78    11    84    19    37    27
+   79    11    84    19    37    15
+   80    11   121    27    37    19
+   81    11   121    27    37     5
+   82    11   121    27    37    15
+   83    11   114    27    37    19
+   84    11   114    27    37     5
+   85    11   114    27    37    15
+   86    11    91    27    37    19
+   87    11    91    27    37     5
+   88    11    91    27    37    15
+   89     9   106   163    91    27
+   90    10   307   163    91    27
+   91     9    19   106   163    91
+   92    10    19   106   163   307
+   93     9    15   103   175   114
+   94    10    15   103   175   319
+   95    10    27   114   175   319
+   96     9    27   114   175   103
+   97    10   321   177   121    27
+   98     9   136   177   121    27
+   99     9   121   177   136     5
+  100    10   321   177   136     5
+  101     5   286   190   191   335
+  102     4   286   190   191   287
+  103     7   334   190   191   335
+  104     5   334   190   191   287
+  105     5   357   213   216   287
+  106     7   357   213   216   360
+  107     4   286   213   216   287
+  108     5   286   213   216   360
+  109    10     7    47   143   287
+  110     9     7    47   143    72
+  111    10   287   143    72    11
+  112     9    47   143    72    11
+  113     3    47   143   287   191
+  114     3    47   143   287   216
+  115     3    72   143   287   191
+  116     3    72   143   287   216
+  117     2   335   191   287   143
+  118     6   335   191   287   216
+  119     8   190   191   287   143
+  120     1   190   191   287   216
+  121     1   191   287   216   213
+  122     6   191   287   216   360
+  123     8   143   287   216   213
+  124     2   143   287   216   360
+  125     9    87   146    50    10
+  126    10   290   146    50    10
+  127     9    50   146    87    18
+  128    10   290   146    87    18
+  129     3   231   290   146    50
+  130     3   231   290   146    87
+  131     3   194   290   146    50
+  132     3   194   290   146    87
+  133     8   146   290   194   195
+  134     2   146   290   194   338
+  135     1   231   290   194   195
+  136     6   231   290   194   338
+  137     8   146   290   231   230
+  138     2   146   290   231   375
+  139     1   194   290   231   230
+  140     6   194   290   231   375
+  141     4   291   230   231   290
+  142     5   291   230   231   375
+  143     5   374   230   231   290
+  144     7   374   230   231   375
+  145    10   297   153    57    17
+  146     9    78   153    57    17
+  147     9    57   153    78     1
+  148    10   297   153    78     1
+  149     3   201   297   153    57
+  150     3   201   297   153    78
+  151     3   222   297   153    57
+  152     3   222   297   153    78
+  153     2   153   297   201   345
+  154     8   153   297   201   204
+  155     6   222   297   201   345
+  156     1   222   297   201   204
+  157     2   153   297   222   366
+  158     8   153   297   222   223
+  159     6   201   297   222   366
+  160     1   201   297   222   223
+  161     3   268   324   180   124
+  162     3   268   324   180   133
+  163     3   277   324   180   124
+  164     3   277   324   180   133
+  165     4   321   265   268   324
+  166     5   321   265   268   412
+  167     5   409   265   268   324
+  168     7   409   265   268   412
+  169     4   324   277   280   321
+  170     5   324   277   280   424
+  171     5   421   277   280   321
+  172     7   421   277   280   424
+  173     2   177   321   265   409
+  174     8   177   321   265   268
+  175     6   280   321   265   409
+  176     1   280   321   265   268
+  177     1   265   321   280   277
+  178     6   265   321   280   424
+  179     8   177   321   280   277
+  180     2   177   321   280   424
+  181     8   265   268   324   180
+  182     1   265   268   324   277
+  183     2   412   268   324   180
+  184     6   412   268   324   277
+  185     6   268   324   277   421
+  186     1   268   324   277   280
+  187     2   180   324   277   421
+  188     8   180   324   277   280
+  189     3   265   321   177   121
+  190     3   265   321   177   136
+  191     3   280   321   177   121
+  192     3   280   321   177   136
+  193     7   354   210   211   355
+  194     5   354   210   211   282
+  195     5   283   210   211   355
+  196     4   283   210   211   282
+  197     9    67   138    42     2
+  198    10   282   138    42     2
+  199     9    42   138    67    10
+  200    10   282   138    67    10
+  201     3   211   282   138    42
+  202     3   211   282   138    67
+  203     3   186   282   138    42
+  204     3   186   282   138    67
+  205     8   138   282   186   187
+  206     2   138   282   186   330
+  207     1   211   282   186   187
+  208     6   211   282   186   330
+  209     8   138   282   211   210
+  210     2   138   282   211   355
+  211     1   186   282   211   210
+  212     6   186   282   211   355
+  213    10     5    45   141   285
+  214     9     5    45   141    70
+  215    10   285   141    70    15
+  216     9    45   141    70    15
+  217     3    45   141   285   189
+  218     3    45   141   285   214
+  219     3    70   141   285   189
+  220     3    70   141   285   214
+  221     2   333   189   285   141
+  222     6   333   189   285   214
+  223     8   192   189   285   141
+  224     1   192   189   285   214
+  225     6   189   285   214   358
+  226     1   189   285   214   215
+  227     2   141   285   214   358
+  228     8   141   285   214   215
+  229     3   125   181   325   269
+  230     3   125   181   325   274
+  231     3   130   181   325   269
+  232     3   130   181   325   274
+  233     7   413   269   272   416
+  234     5   413   269   272   328
+  235     5   325   269   272   416
+  236     4   325   269   272   328
+  237     7   418   274   275   419
+  238     5   418   274   275   328
+  239     5   325   274   275   419
+  240     4   325   274   275   328
+  241     2   413   269   325   181
+  242     6   413   269   325   274
+  243     8   272   269   325   181
+  244     1   272   269   325   274
+  245     6   418   274   325   269
+  246     2   418   274   325   181
+  247     1   275   274   325   269
+  248     8   275   274   325   181
+  249     6   416   272   328   275
+  250     2   416   272   328   184
+  251     1   269   272   328   275
+  252     8   269   272   328   184
+  253     8   274   275   328   184
+  254     1   274   275   328   272
+  255     2   419   275   328   184
+  256     6   419   275   328   272
+  257     3   131   184   328   275
+  258     3   131   184   328   272
+  259     3   128   184   328   275
+  260     3   128   184   328   272
+  261     3   114   175   319   258
+  262     3   114   175   319   247
+  263     3   103   175   319   258
+  264     3   103   175   319   247
+  265     4   318   246   247   319
+  266     5   318   246   247   391
+  267     5   390   246   247   319
+  268     7   390   246   247   391
+  269     7   402   258   259   403
+  270     5   402   258   259   318
+  271     5   319   258   259   403
+  272     4   319   258   259   318
+  273     1   259   318   246   247
+  274     6   259   318   246   390
+  275     8   174   318   246   247
+  276     2   174   318   246   390
+  277     1   258   259   318   246
+  278     8   258   259   318   174
+  279     6   403   259   318   246
+  280     2   403   259   318   174
+  281     1   246   247   319   258
+  282     8   246   247   319   175
+  283     6   391   247   319   258
+  284     2   391   247   319   175
+  285     6   402   258   319   247
+  286     2   402   258   319   175
+  287     1   259   258   319   247
+  288     8   259   258   319   175
+  289     3   259   318   174   115
+  290     3   259   318   174   102
+  291     3   246   318   174   115
+  292     3   246   318   174   102
+  293     3    95   167   311   239
+  294     3    95   167   311   256
+  295     3   112   167   311   239
+  296     3   112   167   311   256
+  297     3   253   310   166   109
+  298     3   253   310   166    94
+  299     3   238   310   166   109
+  300     3   238   310   166    94
+  301     5   310   238   239   383
+  302     4   310   238   239   311
+  303     7   382   238   239   383
+  304     5   382   238   239   311
+  305     5   397   253   256   311
+  306     7   397   253   256   400
+  307     4   310   253   256   311
+  308     5   310   253   256   400
+  309     1   253   310   238   239
+  310     6   253   310   238   382
+  311     8   166   310   238   239
+  312     2   166   310   238   382
+  313     2   397   253   310   166
+  314     6   397   253   310   238
+  315     8   256   253   310   166
+  316     1   256   253   310   238
+  317     2   383   239   311   167
+  318     6   383   239   311   256
+  319     8   238   239   311   167
+  320     1   238   239   311   256
+  321     1   239   311   256   253
+  322     6   239   311   256   400
+  323     8   167   311   256   253
+  324     2   167   311   256   400
+  325    11    73     4    36    30
+  326    11    73     4    36    14
+  327    11    73     4    36    24
+  328    11    44     4    36    30
+  329    11    44     4    36    14
+  330    11    44     4    36    24
+  331    11   133     4    36    30
+  332    11   133     4    36    14
+  333    11   133     4    36    24
+  334    11     4    36    14   100
+  335    11     4    36    14    65
+  336    11     4    36    14    54
+  337    11    30    36    14   100
+  338    11    30    36    14    65
+  339    11    30    36    14    54
+  340    11    24    36    14   100
+  341    11    24    36    14    65
+  342    11    24    36    14    54
+  343    11     4    36    24    81
+  344    11     4    36    24   109
+  345    11     4    36    24    64
+  346    11    30    36    24    81
+  347    11    30    36    24   109
+  348    11    30    36    24    64
+  349    11    14    36    24    81
+  350    11    14    36    24   109
+  351    11    14    36    24    64
+  352    11     4    36    30   124
+  353    11     4    36    30    94
+  354    11     4    36    30   119
+  355    11    14    36    30   124
+  356    11    14    36    30    94
+  357    11    14    36    30   119
+  358    11    24    36    30   124
+  359    11    24    36    30    94
+  360    11    24    36    30   119
+  361     9   109   166    94    30
+  362    10   310   166    94    30
+  363    10    24   109   166   310
+  364     9    24   109   166    94
+  365    10    14   100   172   316
+  366     9    14   100   172   119
+  367    10   316   172   119    30
+  368     9   100   172   119    30
+  369    10    30   124   180   324
+  370     9    30   124   180   133
+  371     9   124   180   133     4
+  372    10   324   180   133     4
+  373     9    15    55   151    84
+  374    10    15    55   151   295
+  375    10    19    84   151   295
+  376     9    19    84   151    55
+  377     3    84   151   295   228
+  378     3    84   151   295   199
+  379     3    55   151   295   228
+  380     3    55   151   295   199
+  381     6   343   199   295   228
+  382     2   343   199   295   151
+  383     1   198   199   295   228
+  384     8   198   199   295   151
+  385     1   225   228   295   199
+  386     8   225   228   295   151
+  387     6   372   228   295   199
+  388     2   372   228   295   151
+  389     7   342   198   199   343
+  390     5   342   198   199   295
+  391     5   294   198   199   343
+  392     4   294   198   199   295
+  393     7   369   225   228   372
+  394     5   369   225   228   295
+  395     5   294   225   228   372
+  396     4   294   225   228   295
+  397     5   290   194   195   339
+  398     4   290   194   195   291
+  399     7   338   194   195   339
+  400     5   338   194   195   291
+  401    10   291   147    51    11
+  402     9    86   147    51    11
+  403     9    51   147    86    21
+  404    10   291   147    86    21
+  405     3   195   291   147    51
+  406     3   195   291   147    86
+  407     3   230   291   147    51
+  408     3   230   291   147    86
+  409     8   147   291   195   194
+  410     2   147   291   195   339
+  411     1   230   291   195   194
+  412     6   230   291   195   339
+  413     2   147   291   230   374
+  414     8   147   291   230   231
+  415     6   195   291   230   374
+  416     1   195   291   230   231
+  417    11   130     7    39    25
+  418    11   130     7    39    11
+  419    11   130     7    39    21
+  420    11    76     7    39    25
+  421    11    76     7    39    11
+  422    11    76     7    39    21
+  423    11    47     7    39    25
+  424    11    47     7    39    11
+  425    11    47     7    39    21
+  426    11    97    11    39    25
+  427    11    97    11    39    21
+  428    11    97    11    39     7
+  429    11    51    11    39    25
+  430    11    51    11    39    21
+  431    11    51    11    39     7
+  432    11    72    11    39    25
+  433    11    72    11    39    21
+  434    11    72    11    39     7
+  435    11   108    21    39    25
+  436    11   108    21    39    11
+  437    11   108    21    39     7
+  438    11    61    21    39    25
+  439    11    61    21    39    11
+  440    11    61    21    39     7
+  441    11    86    21    39    25
+  442    11    86    21    39    11
+  443    11    86    21    39     7
+  444    11    89    25    39    11
+  445    11    89    25    39    21
+  446    11    89    25    39     7
+  447    11   125    25    39    11
+  448    11   125    25    39    21
+  449    11   125    25    39     7
+  450    11   118    25    39    11
+  451    11   118    25    39    21
+  452    11   118    25    39     7
+  453    10   305   161    89    25
+  454     9   108   161    89    25
+  455     9    89   161   108    21
+  456    10   305   161   108    21
+  457    10   313   169    97    11
+  458     9   118   169    97    11
+  459     9    97   169   118    25
+  460    10   313   169   118    25
+  461    10    25   125   181   325
+  462     9    25   125   181   130
+  463     9     7   130   181   125
+  464    10     7   130   181   325
+  465     7   362   218   219   363
+  466     5   362   218   219   302
+  467     5   303   218   219   363
+  468     4   303   218   219   302
+  469     9    75   158    62    22
+  470    10   302   158    62    22
+  471     9     8    75   158    62
+  472    10     8    75   158   302
+  473     3   219   302   158    75
+  474     3   219   302   158    62
+  475     3   206   302   158    75
+  476     3   206   302   158    62
+  477     6   219   302   206   350
+  478     1   219   302   206   207
+  479     2   158   302   206   350
+  480     8   158   302   206   207
+  481     8   218   219   302   158
+  482     1   218   219   302   206
+  483     2   363   219   302   158
+  484     6   363   219   302   206
+  485     3   263   316   172   100
+  486     3   263   316   172   119
+  487     3   244   316   172   100
+  488     3   244   316   172   119
+  489     4   313   241   244   316
+  490     5   313   241   244   388
+  491     5   385   241   244   316
+  492     7   385   241   244   388
+  493     4   313   262   263   316
+  494     5   313   262   263   407
+  495     5   406   262   263   316
+  496     7   406   262   263   407
+  497     2   169   313   241   385
+  498     8   169   313   241   244
+  499     6   262   313   241   385
+  500     1   262   313   241   244
+  501     6   241   313   262   406
+  502     1   241   313   262   263
+  503     2   169   313   262   406
+  504     8   169   313   262   263
+  505     8   172   316   244   241
+  506     2   172   316   244   388
+  507     1   263   316   244   241
+  508     6   263   316   244   388
+  509     8   172   316   263   262
+  510     2   172   316   263   407
+  511     1   244   316   263   262
+  512     6   244   316   263   407
+  513     3   241   313   169    97
+  514     3   241   313   169   118
+  515     3   262   313   169    97
+  516     3   262   313   169   118
+  517     9    23    63   159    74
+  518    10    23    63   159   303
+  519    10     3    74   159   303
+  520     9     3    74   159    63
+  521     3    74   159   303   218
+  522     3    74   159   303   207
+  523     3    63   159   303   218
+  524     3    63   159   303   207
+  525     6   351   207   303   218
+  526     2   351   207   303   159
+  527     1   206   207   303   218
+  528     8   206   207   303   159
+  529     6   362   218   303   207
+  530     2   362   218   303   159
+  531     1   219   218   303   207
+  532     8   219   218   303   159
+  533     7   350   206   207   351
+  534     5   350   206   207   303
+  535     5   302   206   207   351
+  536     4   302   206   207   303
+  537    10    20    60   156   300
+  538     9    20    60   156    79
+  539    10   300   156    79     6
+  540     9    60   156    79     6
+  541     3   223   300   156    60
+  542     3   223   300   156    79
+  543     3   204   300   156    60
+  544     3   204   300   156    79
+  545     8   156   300   204   201
+  546     2   156   300   204   348
+  547     1   223   300   204   201
+  548     6   223   300   204   348
+  549     8   156   300   223   222
+  550     2   156   300   223   367
+  551     1   204   300   223   222
+  552     6   204   300   223   367
+  553     4   297   201   204   300
+  554     5   297   201   204   348
+  555     5   345   201   204   300
+  556     7   345   201   204   348
+  557     4   297   222   223   300
+  558     5   297   222   223   367
+  559     5   366   222   223   300
+  560     7   366   222   223   367
+  561     3   101   173   317   245
+  562     3   101   173   317   260
+  563     3   116   173   317   245
+  564     3   116   173   317   260
+  565     4   317   245   248   320
+  566     5   317   245   248   392
+  567     5   389   245   248   320
+  568     7   389   245   248   392
+  569     7   401   257   260   404
+  570     5   401   257   260   317
+  571     5   320   257   260   404
+  572     4   320   257   260   317
+  573     6   389   245   317   260
+  574     2   389   245   317   173
+  575     1   248   245   317   260
+  576     8   248   245   317   173
+  577     1   257   260   317   245
+  578     8   257   260   317   173
+  579     6   404   260   317   245
+  580     2   404   260   317   173
+  581     1   245   248   320   257
+  582     8   245   248   320   176
+  583     6   392   248   320   257
+  584     2   392   248   320   176
+  585     2   401   257   320   176
+  586     6   401   257   320   248
+  587     8   260   257   320   176
+  588     1   260   257   320   248
+  589     3   113   176   320   257
+  590     3   113   176   320   248
+  591     3   104   176   320   257
+  592     3   104   176   320   248
+  593    10    21    61   157   301
+  594     9    21    61   157    76
+  595    10     7    76   157   301
+  596     9     7    76   157    61
+  597     3    76   157   301   205
+  598     3    76   157   301   220
+  599     3    61   157   301   205
+  600     3    61   157   301   220
+  601     6   349   205   301   220
+  602     2   349   205   301   157
+  603     1   208   205   301   220
+  604     8   208   205   301   157
+  605     1   217   220   301   205
+  606     8   217   220   301   157
+  607     6   364   220   301   205
+  608     2   364   220   301   157
+  609     7   361   217   220   364
+  610     5   361   217   220   301
+  611     5   304   217   220   364
+  612     4   304   217   220   301
+  613     3    93   165   309   237
+  614     3    93   165   309   254
+  615     3   110   165   309   237
+  616     3   110   165   309   254
+  617     3    96   168   312   240
+  618     3    96   168   312   255
+  619     3   111   168   312   240
+  620     3   111   168   312   255
+  621     7   381   237   240   384
+  622     5   381   237   240   312
+  623     5   309   237   240   384
+  624     4   309   237   240   312
+  625     5   309   254   255   399
+  626     4   309   254   255   312
+  627     7   398   254   255   399
+  628     5   398   254   255   312
+  629     2   381   237   309   165
+  630     6   381   237   309   254
+  631     8   240   237   309   165
+  632     1   240   237   309   254
+  633     6   237   309   254   398
+  634     1   237   309   254   255
+  635     2   165   309   254   398
+  636     8   165   309   254   255
+  637     6   384   240   312   255
+  638     2   384   240   312   168
+  639     1   237   240   312   255
+  640     8   237   240   312   168
+  641     1   254   255   312   240
+  642     8   254   255   312   168
+  643     6   399   255   312   240
+  644     2   399   255   312   168
+  645     7   346   202   203   347
+  646     5   346   202   203   299
+  647     5   298   202   203   347
+  648     4   298   202   203   299
+  649     4   298   221   224   299
+  650     5   298   221   224   368
+  651     5   365   221   224   299
+  652     7   365   221   224   368
+  653    10   299   155    59    19
+  654     9    80   155    59    19
+  655     9    59   155    80     5
+  656    10   299   155    80     5
+  657     3   203   299   155    59
+  658     3   203   299   155    80
+  659     3   224   299   155    59
+  660     3   224   299   155    80
+  661     8   155   299   203   202
+  662     2   155   299   203   347
+  663     1   224   299   203   202
+  664     6   224   299   203   347
+  665     8   155   299   224   221
+  666     2   155   299   224   368
+  667     1   203   299   224   221
+  668     6   203   299   224   368
+  669     5   293   197   200   344
+  670     4   293   197   200   296
+  671     7   341   197   200   344
+  672     5   341   197   200   296
+  673     7   370   226   227   371
+  674     5   370   226   227   296
+  675     5   293   226   227   371
+  676     4   293   226   227   296
+  677     9    16    56   152    83
+  678    10    16    56   152   296
+  679    10    20    83   152   296
+  680     9    20    83   152    56
+  681     3    83   152   296   227
+  682     3    83   152   296   200
+  683     3    56   152   296   227
+  684     3    56   152   296   200
+  685     6   344   200   296   227
+  686     2   344   200   296   152
+  687     1   197   200   296   227
+  688     8   197   200   296   152
+  689     1   226   227   296   200
+  690     8   226   227   296   152
+  691     6   371   227   296   200
+  692     2   371   227   296   152
+  693     3   251   306   162   107
+  694     3   251   306   162    90
+  695     3   234   306   162   107
+  696     3   234   306   162    90
+  697     3   250   307   163   106
+  698     3   250   307   163    91
+  699     3   235   307   163   106
+  700     3   235   307   163    91
+  701     4   306   234   235   307
+  702     5   306   234   235   379
+  703     5   378   234   235   307
+  704     7   378   234   235   379
+  705     7   394   250   251   395
+  706     5   394   250   251   306
+  707     5   307   250   251   395
+  708     4   307   250   251   306
+  709     8   162   306   234   235
+  710     2   162   306   234   378
+  711     1   251   306   234   235
+  712     6   251   306   234   378
+  713     8   162   306   251   250
+  714     2   162   306   251   395
+  715     1   234   306   251   250
+  716     6   234   306   251   395
+  717     1   250   307   235   234
+  718     6   250   307   235   379
+  719     8   163   307   235   234
+  720     2   163   307   235   379
+  721     2   394   250   307   163
+  722     6   394   250   307   235
+  723     8   251   250   307   163
+  724     1   251   250   307   235
+  725     5   329   185   188   284
+  726     7   329   185   188   332
+  727     4   281   185   188   284
+  728     5   281   185   188   332
+  729     9     4    44   140    65
+  730    10     4    44   140   284
+  731    10    14    65   140   284
+  732     9    14    65   140    44
+  733     3   209   284   140    65
+  734     3   209   284   140    44
+  735     3   188   284   140    65
+  736     3   188   284   140    44
+  737     1   209   284   188   185
+  738     6   209   284   188   332
+  739     8   140   284   188   185
+  740     2   140   284   188   332
+  741     2   353   209   284   140
+  742     6   353   209   284   188
+  743     8   212   209   284   140
+  744     1   212   209   284   188
+  745     3   279   322   178   135
+  746     3   279   322   178   122
+  747     3   266   322   178   135
+  748     3   266   322   178   122
+  749     4   322   266   267   323
+  750     5   322   266   267   411
+  751     5   410   266   267   323
+  752     7   410   266   267   411
+  753     4   323   278   279   322
+  754     5   323   278   279   423
+  755     5   422   278   279   322
+  756     7   422   278   279   423
+  757     8   178   322   266   267
+  758     2   178   322   266   410
+  759     1   279   322   266   267
+  760     6   279   322   266   410
+  761     8   178   322   279   278
+  762     2   178   322   279   423
+  763     1   266   322   279   278
+  764     6   266   322   279   423
+  765     1   278   323   267   266
+  766     6   278   323   267   411
+  767     8   179   323   267   266
+  768     2   179   323   267   411
+  769     6   267   323   278   422
+  770     1   267   323   278   279
+  771     2   179   323   278   422
+  772     8   179   323   278   279
+  773     3   267   323   179   123
+  774     3   267   323   179   134
+  775     3   278   323   179   123
+  776     3   278   323   179   134
+  777    11     9    33     1    41
+  778    11     9    33     1   132
+  779    11     9    33     1    78
+  780    11    31    33     1    41
+  781    11    31    33     1   132
+  782    11    31    33     1    78
+  783    11    17    33     1    41
+  784    11    17    33     1   132
+  785    11    17    33     1    78
+  786    11     1    33     9    49
+  787    11     1    33     9    68
+  788    11     1    33     9   101
+  789    11    31    33     9    49
+  790    11    31    33     9    68
+  791    11    31    33     9   101
+  792    11    17    33     9    49
+  793    11    17    33     9    68
+  794    11    17    33     9   101
+  795    11     1    33    17    57
+  796    11     1    33    17   112
+  797    11     1    33    17    88
+  798    11     9    33    17    57
+  799    11     9    33    17   112
+  800    11     9    33    17    88
+  801    11    31    33    17    57
+  802    11    31    33    17   112
+  803    11    31    33    17    88
+  804    11     1    33    31   116
+  805    11     1    33    31   127
+  806    11     1    33    31    95
+  807    11     9    33    31   116
+  808    11     9    33    31   127
+  809    11     9    33    31    95
+  810    11    17    33    31   116
+  811    11    17    33    31   127
+  812    11    17    33    31    95
+  813    10    31    95   167   311
+  814     9    31    95   167   112
+  815     9    95   167   112    17
+  816    10   311   167   112    17
+  817     9     9   101   173   116
+  818    10     9   101   173   317
+  819     9    31   116   173   101
+  820    10    31   116   173   317
+  821     9    31   127   183   132
+  822    10    31   127   183   327
+  823     9     1   132   183   127
+  824    10     1   132   183   327
+  825     5   333   189   192   288
+  826     7   333   189   192   336
+  827     4   285   189   192   288
+  828     5   285   189   192   336
+  829     5   285   214   215   359
+  830     4   285   214   215   288
+  831     7   358   214   215   359
+  832     5   358   214   215   288
+  833    10     8    48   144   288
+  834     9     8    48   144    71
+  835    10    12    71   144   288
+  836     9    12    71   144    48
+  837     3    71   144   288   192
+  838     3    71   144   288   215
+  839     3    48   144   288   192
+  840     3    48   144   288   215
+  841     1   189   192   288   215
+  842     8   189   192   288   144
+  843     6   336   192   288   215
+  844     2   336   192   288   144
+  845     1   214   215   288   192
+  846     8   214   215   288   144
+  847     6   359   215   288   192
+  848     2   359   215   288   144
+  849     5   353   209   212   281
+  850     7   353   209   212   356
+  851     4   284   209   212   281
+  852     5   284   209   212   356
+  853    10   281   137    41     1
+  854     9    68   137    41     1
+  855     9    41   137    68     9
+  856    10   281   137    68     9
+  857     3   185   281   137    41
+  858     3   185   281   137    68
+  859     3   212   281   137    41
+  860     3   212   281   137    68
+  861     2   137   281   185   329
+  862     8   137   281   185   188
+  863     6   212   281   185   329
+  864     1   212   281   185   188
+  865     8   137   281   212   209
+  866     2   137   281   212   356
+  867     1   185   281   212   209
+  868     6   185   281   212   356
+  869     3   261   314   170   117
+  870     3   261   314   170    98
+  871     3   242   314   170   117
+  872     3   242   314   170    98
+  873     4   314   242   243   315
+  874     5   314   242   243   387
+  875     5   386   242   243   315
+  876     7   386   242   243   387
+  877     4   314   261   264   315
+  878     5   314   261   264   408
+  879     5   405   261   264   315
+  880     7   405   261   264   408
+  881     8   170   314   242   243
+  882     2   170   314   242   386
+  883     1   261   314   242   243
+  884     6   261   314   242   386
+  885     2   170   314   261   405
+  886     8   170   314   261   264
+  887     6   242   314   261   405
+  888     1   242   314   261   264
+  889     8   171   315   243   242
+  890     2   171   315   243   387
+  891     1   264   315   243   242
+  892     6   264   315   243   387
+  893     1   243   315   264   261
+  894     6   243   315   264   408
+  895     8   171   315   264   261
+  896     2   171   315   264   408
+  897     3   243   315   171    99
+  898     3   243   315   171   120
+  899     3   264   315   171    99
+  900     3   264   315   171   120
+  901    11   129     8    40    26
+  902    11   129     8    40    12
+  903    11   129     8    40    22
+  904    11    75     8    40    26
+  905    11    75     8    40    12
+  906    11    75     8    40    22
+  907    11    48     8    40    26
+  908    11    48     8    40    12
+  909    11    48     8    40    22
+  910    11    98    12    40    26
+  911    11    98    12    40    22
+  912    11    98    12    40     8
+  913    11    52    12    40    26
+  914    11    52    12    40    22
+  915    11    52    12    40     8
+  916    11    71    12    40    26
+  917    11    71    12    40    22
+  918    11    71    12    40     8
+  919    11   107    22    40    26
+  920    11   107    22    40    12
+  921    11   107    22    40     8
+  922    11    85    22    40    26
+  923    11    85    22    40    12
+  924    11    85    22    40     8
+  925    11    62    22    40    26
+  926    11    62    22    40    12
+  927    11    62    22    40     8
+  928    11    90    26    40    12
+  929    11    90    26    40    22
+  930    11    90    26    40     8
+  931    11   117    26    40    12
+  932    11   117    26    40    22
+  933    11   117    26    40     8
+  934    11   126    26    40    12
+  935    11   126    26    40    22
+  936    11   126    26    40     8
+  937    10   306   162    90    26
+  938     9   107   162    90    26
+  939    10   306   162   107    22
+  940     9    90   162   107    22
+  941    10   314   170    98    12
+  942     9   117   170    98    12
+  943    10   314   170   117    26
+  944     9    98   170   117    26
+  945     9   129   182   126    26
+  946    10   326   182   126    26
+  947    10     8   129   182   326
+  948     9     8   129   182   126
+  949    11    29    35     3    74
+  950    11    29    35     3    43
+  951    11    29    35     3   134
+  952    11    13    35     3    74
+  953    11    13    35     3    43
+  954    11    13    35     3   134
+  955    11    23    35     3    74
+  956    11    23    35     3    43
+  957    11    23    35     3   134
+  958    11    29    35    13    66
+  959    11    29    35    13    53
+  960    11    29    35    13    99
+  961    11     3    35    13    66
+  962    11     3    35    13    53
+  963    11     3    35    13    99
+  964    11    23    35    13    66
+  965    11    23    35    13    53
+  966    11    23    35    13    99
+  967    11    29    35    23    82
+  968    11    29    35    23   110
+  969    11    29    35    23    63
+  970    11     3    35    23    82
+  971    11     3    35    23   110
+  972    11     3    35    23    63
+  973    11    13    35    23    82
+  974    11    13    35    23   110
+  975    11    13    35    23    63
+  976    11     3    35    29    93
+  977    11     3    35    29   123
+  978    11     3    35    29   120
+  979    11    13    35    29    93
+  980    11    13    35    29   123
+  981    11    13    35    29   120
+  982    11    23    35    29    93
+  983    11    23    35    29   123
+  984    11    23    35    29   120
+  985    10    29    93   165   309
+  986     9    29    93   165   110
+  987     9    93   165   110    23
+  988    10   309   165   110    23
+  989    10   315   171    99    13
+  990     9   120   171    99    13
+  991    10   315   171   120    29
+  992     9    99   171   120    29
+  993    10   323   179   123    29
+  994     9   134   179   123    29
+  995    10   323   179   134     3
+  996     9   123   179   134     3
+  997     3   249   308   164   105
+  998     3   249   308   164    92
+  999     3   236   308   164   105
+ 1000     3   236   308   164    92
+ 1001     3   233   305   161    89
+ 1002     3   233   305   161   108
+ 1003     3   252   305   161    89
+ 1004     3   252   305   161   108
+ 1005     5   305   233   236   380
+ 1006     4   305   233   236   308
+ 1007     7   377   233   236   380
+ 1008     5   377   233   236   308
+ 1009     5   393   249   252   305
+ 1010     7   393   249   252   396
+ 1011     4   308   249   252   305
+ 1012     5   308   249   252   396
+ 1013     2   161   305   233   377
+ 1014     8   161   305   233   236
+ 1015     6   252   305   233   377
+ 1016     1   252   305   233   236
+ 1017     8   161   305   252   249
+ 1018     2   161   305   252   396
+ 1019     1   233   305   252   249
+ 1020     6   233   305   252   396
+ 1021     1   249   308   236   233
+ 1022     6   249   308   236   380
+ 1023     8   164   308   236   233
+ 1024     2   164   308   236   380
+ 1025     2   393   249   308   164
+ 1026     6   393   249   308   236
+ 1027     8   252   249   308   164
+ 1028     1   252   249   308   236
+ 1029    10    12    52   148   292
+ 1030     9    12    52   148    85
+ 1031    10   292   148    85    22
+ 1032     9    52   148    85    22
+ 1033     3   229   292   148    52
+ 1034     3   229   292   148    85
+ 1035     3   196   292   148    52
+ 1036     3   196   292   148    85
+ 1037     8   148   292   196   193
+ 1038     2   148   292   196   340
+ 1039     1   229   292   196   193
+ 1040     6   229   292   196   340
+ 1041     2   148   292   229   373
+ 1042     8   148   292   229   232
+ 1043     6   196   292   229   373
+ 1044     1   196   292   229   232
+ 1045     5   289   193   196   340
+ 1046     4   289   193   196   292
+ 1047     7   337   193   196   340
+ 1048     5   337   193   196   292
+ 1049     5   349   205   208   304
+ 1050     7   349   205   208   352
+ 1051     4   301   205   208   304
+ 1052     5   301   205   208   352
+ 1053     9    24    64   160    73
+ 1054    10    24    64   160   304
+ 1055    10     4    73   160   304
+ 1056     9     4    73   160    64
+ 1057     3    73   160   304   217
+ 1058     3    73   160   304   208
+ 1059     3    64   160   304   217
+ 1060     3    64   160   304   208
+ 1061     1   205   208   304   217
+ 1062     8   205   208   304   160
+ 1063     6   352   208   304   217
+ 1064     2   352   208   304   160
+ 1065     6   361   217   304   208
+ 1066     2   361   217   304   160
+ 1067     1   220   217   304   208
+ 1068     8   220   217   304   160
+ 1069     9    69   142    46     6
+ 1070    10   286   142    46     6
+ 1071     9    16    69   142    46
+ 1072    10    16    69   142   286
+ 1073     3   213   286   142    69
+ 1074     3   213   286   142    46
+ 1075     3   190   286   142    69
+ 1076     3   190   286   142    46
+ 1077     1   213   286   190   191
+ 1078     6   213   286   190   334
+ 1079     8   142   286   190   191
+ 1080     2   142   286   190   334
+ 1081     2   357   213   286   142
+ 1082     6   357   213   286   190
+ 1083     8   216   213   286   142
+ 1084     1   216   213   286   190
+ 1085     5   282   186   187   331
+ 1086     4   282   186   187   283
+ 1087     7   330   186   187   331
+ 1088     5   330   186   187   283
+ 1089     9    66   139    43     3
+ 1090    10   283   139    43     3
+ 1091     9    13    66   139    43
+ 1092    10    13    66   139   283
+ 1093     3   210   283   139    66
+ 1094     3   210   283   139    43
+ 1095     3   187   283   139    66
+ 1096     3   187   283   139    43
+ 1097     1   210   283   187   186
+ 1098     6   210   283   187   331
+ 1099     8   139   283   187   186
+ 1100     2   139   283   187   331
+ 1101     2   354   210   283   139
+ 1102     6   354   210   283   187
+ 1103     8   211   210   283   139
+ 1104     1   211   210   283   187
+ 1105     9    13    53   149    82
+ 1106    10    13    53   149   293
+ 1107     9    23    82   149    53
+ 1108    10    23    82   149   293
+ 1109     3    82   149   293   197
+ 1110     3    82   149   293   226
+ 1111     3    53   149   293   197
+ 1112     3    53   149   293   226
+ 1113     2   341   197   293   149
+ 1114     6   341   197   293   226
+ 1115     8   200   197   293   149
+ 1116     1   200   197   293   226
+ 1117     6   370   226   293   197
+ 1118     2   370   226   293   149
+ 1119     1   227   226   293   197
+ 1120     8   227   226   293   149
+ 1121    11    28    38     6   135
+ 1122    11    28    38     6    46
+ 1123    11    28    38     6    79
+ 1124    11    20    38     6   135
+ 1125    11    20    38     6    46
+ 1126    11    20    38     6    79
+ 1127    11    16    38     6   135
+ 1128    11    16    38     6    46
+ 1129    11    16    38     6    79
+ 1130    11    28    38    16   104
+ 1131    11    28    38    16    69
+ 1132    11    28    38    16    56
+ 1133    11    20    38    16   104
+ 1134    11    20    38    16    69
+ 1135    11    20    38    16    56
+ 1136    11     6    38    16   104
+ 1137    11     6    38    16    69
+ 1138    11     6    38    16    56
+ 1139    11   105    20    38    28
+ 1140    11   105    20    38     6
+ 1141    11   105    20    38    16
+ 1142    11    83    20    38    28
+ 1143    11    83    20    38     6
+ 1144    11    83    20    38    16
+ 1145    11    60    20    38    28
+ 1146    11    60    20    38     6
+ 1147    11    60    20    38    16
+ 1148    11   113    28    38    20
+ 1149    11   113    28    38     6
+ 1150    11   113    28    38    16
+ 1151    11   122    28    38    20
+ 1152    11   122    28    38     6
+ 1153    11   122    28    38    16
+ 1154    11    92    28    38    20
+ 1155    11    92    28    38     6
+ 1156    11    92    28    38    16
+ 1157     9    28    92   164   105
+ 1158    10    28    92   164   308
+ 1159     9    20   105   164    92
+ 1160    10    20   105   164   308
+ 1161     9    16   104   176   113
+ 1162    10    16   104   176   320
+ 1163     9    28   113   176   104
+ 1164    10    28   113   176   320
+ 1165    10   322   178   122    28
+ 1166     9   135   178   122    28
+ 1167    10   322   178   135     6
+ 1168     9   122   178   135     6
+ 1169     9    81   150    54    14
+ 1170    10   294   150    54    14
+ 1171     9    24    81   150    54
+ 1172    10    24    81   150   294
+ 1173     3   225   294   150    81
+ 1174     3   225   294   150    54
+ 1175     3   198   294   150    81
+ 1176     3   198   294   150    54
+ 1177     6   225   294   198   342
+ 1178     1   225   294   198   199
+ 1179     2   150   294   198   342
+ 1180     8   150   294   198   199
+ 1181     2   369   225   294   150
+ 1182     6   369   225   294   198
+ 1183     8   228   225   294   150
+ 1184     1   228   225   294   198
+ 1185     9    77   154    58    18
+ 1186    10   298   154    58    18
+ 1187     9    58   154    77     2
+ 1188    10   298   154    77     2
+ 1189     3   221   298   154    58
+ 1190     3   221   298   154    77
+ 1191     3   202   298   154    58
+ 1192     3   202   298   154    77
+ 1193     2   154   298   202   346
+ 1194     8   154   298   202   203
+ 1195     6   221   298   202   346
+ 1196     1   221   298   202   203
+ 1197     2   154   298   221   365
+ 1198     8   154   298   221   224
+ 1199     6   202   298   221   365
+ 1200     1   202   298   221   224
+ 1201    11    32    34     2    42
+ 1202    11    32    34     2   131
+ 1203    11    32    34     2    77
+ 1204    11    18    34     2    42
+ 1205    11    18    34     2   131
+ 1206    11    18    34     2    77
+ 1207    11    10    34     2    42
+ 1208    11    10    34     2   131
+ 1209    11    10    34     2    77
+ 1210    11     2    34    10    50
+ 1211    11     2    34    10    67
+ 1212    11     2    34    10   102
+ 1213    11    32    34    10    50
+ 1214    11    32    34    10    67
+ 1215    11    32    34    10   102
+ 1216    11    18    34    10    50
+ 1217    11    18    34    10    67
+ 1218    11    18    34    10   102
+ 1219    11     2    34    18    58
+ 1220    11     2    34    18   111
+ 1221    11     2    34    18    87
+ 1222    11    32    34    18    58
+ 1223    11    32    34    18   111
+ 1224    11    32    34    18    87
+ 1225    11    10    34    18    58
+ 1226    11    10    34    18   111
+ 1227    11    10    34    18    87
+ 1228    11     2    34    32   115
+ 1229    11     2    34    32   128
+ 1230    11     2    34    32    96
+ 1231    11    18    34    32   115
+ 1232    11    18    34    32   128
+ 1233    11    18    34    32    96
+ 1234    11    10    34    32   115
+ 1235    11    10    34    32   128
+ 1236    11    10    34    32    96
+ 1237     9    32    96   168   111
+ 1238    10    32    96   168   312
+ 1239     9    18   111   168    96
+ 1240    10    18   111   168   312
+ 1241     9   115   174   102    10
+ 1242    10   318   174   102    10
+ 1243    10    32   115   174   318
+ 1244     9    32   115   174   102
+ 1245     9    32   128   184   131
+ 1246    10    32   128   184   328
+ 1247     9     2   131   184   128
+ 1248    10     2   131   184   328
+
+Impropers
+
+    1     2   137    41   281    68
+    2     2   138    42    67   282
+    3     2   139    66    43   283
+    4     2   140    65   284    44
+    5     2   141   285    45    70
+    6     2   142    69    46   286
+    7     2   143   287    47    72
+    8     2   144   288    71    48
+    9     2   145    49   289    88
+   10     2   146    50    87   290
+   11     2   147    51   291    86
+   12     2   148   292    52    85
+   13     2   149    82    53   293
+   14     2   150    81    54   294
+   15     2   151    84   295    55
+   16     2   152    83   296    56
+   17     2   153    57   297    78
+   18     2   154    58    77   298
+   19     2   155    59   299    80
+   20     2   156   300    60    79
+   21     2   157   301    76    61
+   22     2   158    75    62   302
+   23     2   159    74   303    63
+   24     2   160    73   304    64
+   25     2   161    89   305   108
+   26     2   162   306   107    90
+   27     2   163   106    91   307
+   28     2   164   105    92   308
+   29     2   165    93   309   110
+   30     2   166   109   310    94
+   31     2   167    95   311   112
+   32     2   168    96   111   312
+   33     2   169    97   313   118
+   34     2   170   314   117    98
+   35     2   171   315    99   120
+   36     2   172   316   100   119
+   37     2   173   101   116   317
+   38     2   174   115   318   102
+   39     2   175   114   319   103
+   40     2   176   113   104   320
+   41     2   177   121   321   136
+   42     2   178   322   135   122
+   43     2   179   323   123   134
+   44     2   180   124   324   133
+   45     2   181   125   325   130
+   46     2   182   129   326   126
+   47     2   183   132   127   327
+   48     2   184   131   128   328
+   49     3   185   329   281   188
+   50     3   186   282   187   330
+   51     3   187   186   331   283
+   52     3   188   185   284   332
+   53     3   189   333   285   192
+   54     3   190   286   191   334
+   55     3   191   335   190   287
+   56     3   192   288   189   336
+   57     3   193   289   337   196
+   58     3   194   290   195   338
+   59     3   195   194   339   291
+   60     3   196   193   340   292
+   61     3   197   293   341   200
+   62     3   198   342   199   294
+   63     3   199   343   198   295
+   64     3   200   344   197   296
+   65     3   201   297   345   204
+   66     3   202   346   203   298
+   67     3   203   202   347   299
+   68     3   204   201   300   348
+   69     3   205   349   301   208
+   70     3   206   350   207   302
+   71     3   207   351   206   303
+   72     3   208   304   205   352
+   73     3   209   353   284   212
+   74     3   210   354   211   283
+   75     3   211   210   355   282
+   76     3   212   209   281   356
+   77     3   213   357   286   216
+   78     3   214   285   358   215
+   79     3   215   214   359   288
+   80     3   216   213   287   360
+   81     3   217   361   220   304
+   82     3   218   362   219   303
+   83     3   219   218   363   302
+   84     3   220   217   364   301
+   85     3   221   298   365   224
+   86     3   222   297   366   223
+   87     3   223   300   222   367
+   88     3   224   299   221   368
+   89     3   225   369   228   294
+   90     3   226   370   227   293
+   91     3   227   226   371   296
+   92     3   228   225   372   295
+   93     3   229   292   373   232
+   94     3   230   291   374   231
+   95     3   231   290   230   375
+   96     3   232   289   229   376
+   97     3   233   305   377   236
+   98     3   234   306   235   378
+   99     3   235   234   307   379
+  100     3   236   233   380   308
+  101     3   237   381   309   240
+  102     3   238   310   239   382
+  103     3   239   383   238   311
+  104     3   240   384   237   312
+  105     3   241   313   385   244
+  106     3   242   314   243   386
+  107     3   243   242   315   387
+  108     3   244   241   316   388
+  109     3   245   317   389   248
+  110     3   246   318   247   390
+  111     3   247   246   319   391
+  112     3   248   320   245   392
+  113     3   249   393   308   252
+  114     3   250   394   251   307
+  115     3   251   250   395   306
+  116     3   252   249   305   396
+  117     3   253   397   310   256
+  118     3   254   309   398   255
+  119     3   255   254   399   312
+  120     3   256   253   311   400
+  121     3   257   401   260   320
+  122     3   258   402   259   319
+  123     3   259   258   403   318
+  124     3   260   257   404   317
+  125     3   261   314   405   264
+  126     3   262   313   406   263
+  127     3   263   316   262   407
+  128     3   264   315   261   408
+  129     3   265   321   409   268
+  130     3   266   322   267   410
+  131     3   267   266   323   411
+  132     3   268   265   324   412
+  133     3   269   413   325   272
+  134     3   270   326   271   414
+  135     3   271   270   327   415
+  136     3   272   416   269   328
+  137     3   273   417   276   326
+  138     3   274   418   275   325
+  139     3   275   274   419   328
+  140     3   276   273   420   327
+  141     3   277   324   421   280
+  142     3   278   323   422   279
+  143     3   279   322   278   423
+  144     3   280   321   277   424
+  145     1   281   137   185   212
+  146     1   282   138   211   186
+  147     1   283   210   139   187
+  148     1   284   209   140   188
+  149     1   285   189   141   214
+  150     1   286   213   142   190
+  151     1   287   191   143   216
+  152     1   288   192   215   144
+  153     1   289   145   193   232
+  154     1   290   146   231   194
+  155     1   291   147   195   230
+  156     1   292   148   229   196
+  157     1   293   197   149   226
+  158     1   294   225   150   198
+  159     1   295   228   199   151
+  160     1   296   227   200   152
+  161     1   297   153   201   222
+  162     1   298   154   221   202
+  163     1   299   155   203   224
+  164     1   300   156   223   204
+  165     1   301   205   220   157
+  166     1   302   219   158   206
+  167     1   303   218   207   159
+  168     1   304   217   208   160
+  169     1   305   161   233   252
+  170     1   306   162   251   234
+  171     1   307   250   163   235
+  172     1   308   249   164   236
+  173     1   309   237   165   254
+  174     1   310   253   166   238
+  175     1   311   239   167   256
+  176     1   312   240   255   168
+  177     1   313   241   169   262
+  178     1   314   170   261   242
+  179     1   315   243   171   264
+  180     1   316   172   263   244
+  181     1   317   245   260   173
+  182     1   318   259   246   174
+  183     1   319   258   247   175
+  184     1   320   257   176   248
+  185     1   321   265   177   280
+  186     1   322   178   279   266
+  187     1   323   267   278   179
+  188     1   324   268   180   277
+  189     1   325   269   181   274
+  190     1   326   273   270   182
+  191     1   327   276   271   183
+  192     1   328   275   184   272
diff --git a/examples/USER/yaff/mof5/lammps.in b/examples/USER/yaff/mof5/lammps.in
new file mode 100644
index 0000000000000000000000000000000000000000..1decfd77e4d67fea6a4b3ff9019ecf0a8641425e
--- /dev/null
+++ b/examples/USER/yaff/mof5/lammps.in
@@ -0,0 +1,42 @@
+#########################################
+#General settings
+#########################################
+units           real
+atom_style      full
+boundary        p p p
+dielectric      1
+
+#########################################
+#Force field and system specification
+#########################################
+special_bonds   lj 0.000000 0.000000 1.000000 coul 1.000000 1.000000 1.000000
+pair_style      mm3/switch3/coulgauss/long  12.0000  4.0000
+pair_modify     table 16 # Accuracy of the table used for real space electrostatics
+pair_modify     mix arithmetic
+pair_modify     tail no
+bond_style      mm3
+angle_style     hybrid cross mm3
+dihedral_style  fourier
+improper_style  distharm
+box tilt large
+
+read_data       lammps.data       # Data file location
+kspace_style    pppm 0.0000001      # Ewald accuracy
+neighbor        2.0 multi
+neigh_modify    every 2 delay 4 check yes
+
+#########################################
+#Output settings
+#########################################
+thermo 10       # Provide output every n steps
+thermo_style 	custom step time etotal ke temp pe emol evdwl ecoul elong etail vol press
+thermo_modify	line multi format float %20.12f
+
+#########################################
+#Sampling options
+#########################################
+timestep 0.5 # in femtosecond
+velocity all create 0.0 5 # initial temperature in Kelvin and random seed
+fix 1 all npt temp 300.0 300.0 100.0 tri 1.0 1.0 1000.0 tchain 3 mtk yes nreset 1000
+fix_modify 1 energy yes # Add thermo/barostat contributions to energy
+run 100
diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h
index c452042cfecbd5730a2a35cfda2c5fc64e5eaecf..998e75fabe80ffa69b54c655ee42917ff47b0fc4 100644
--- a/src/KOKKOS/pair_snap_kokkos_impl.h
+++ b/src/KOKKOS/pair_snap_kokkos_impl.h
@@ -256,7 +256,6 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
 
   if (vflag_fdotr) pair_virial_fdotr_compute(this);
 
-
   if (eflag_atom) {
     k_eatom.template modify<DeviceType>();
     k_eatom.template sync<LMPHostType>();
@@ -275,8 +274,8 @@ void PairSNAPKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
 
   // free duplicated memory
   if (need_dup) {
-    dup_f            = decltype(dup_f)();
-    dup_vatom        = decltype(dup_vatom)();
+    dup_f     = decltype(dup_f)();
+    dup_vatom = decltype(dup_vatom)();
   }
 }
 
@@ -453,6 +452,13 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
   //t4 += timer.seconds(); timer.reset();
   team.team_barrier();
 
+  if (quadraticflag) {
+    my_sna.compute_bi(team);
+    team.team_barrier();
+    my_sna.copy_bi2bvec(team);
+    team.team_barrier();
+  }
+
   // for neighbors of I within cutoff:
   // compute dUi/drj and dBi/drj
   // Fij = dEi/dRj = -dEi/dRi => add to Fi, subtract from Fj
@@ -472,10 +478,6 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
     my_sna.compute_dbidrj(team);
     //t7 += timer2.seconds(); timer2.reset();
     my_sna.copy_dbi2dbvec(team);
-    if (quadraticflag) {
-      my_sna.compute_bi(team);
-      my_sna.copy_bi2bvec(team);
-    }
 
     Kokkos::single(Kokkos::PerThread(team), [&] (){
     F_FLOAT fij[3];
@@ -536,10 +538,10 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
     a_f(j,1) -= fij[1];
     a_f(j,2) -= fij[2];
 
-    // tally per-atom virial contribution
+    // tally global and per-atom virial contribution
 
     if (EVFLAG) {
-      if (vflag) {
+      if (vflag_either) {
         v_tally_xyz<NEIGHFLAG>(ev,i,j,
           fij[0],fij[1],fij[2],
           -my_sna.rij(jj,0),-my_sna.rij(jj,1),
@@ -554,11 +556,13 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
   // tally energy contribution
 
   if (EVFLAG) {
-    if (eflag) {
+    if (eflag_either) {
 
       if (!quadraticflag) {
         my_sna.compute_bi(team);
+        team.team_barrier();
         my_sna.copy_bi2bvec(team);
+        team.team_barrier();
       }
 
       // E = beta.B + 0.5*B^t.alpha.B
@@ -566,14 +570,15 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
       // coeff[k] = alpha_ii or
       // coeff[k] = alpha_ij = alpha_ji, j != i
 
-      if (team.team_rank() == 0)
-      Kokkos::single(Kokkos::PerThread(team), [&] () {
+      Kokkos::single(Kokkos::PerTeam(team), [&] () {
+
+        // evdwl = energy of atom I, sum over coeffs_k * Bi_k
 
-      // evdwl = energy of atom I, sum over coeffs_k * Bi_k
+        double evdwl = d_coeffi[0];
 
-      double evdwl = d_coeffi[0];
+        // linear contributions
+        // could use thread vector range on this loop
 
-      // linear contributions
         for (int k = 1; k <= ncoeff; k++)
           evdwl += d_coeffi[k]*my_sna.bvec[k-1];
 
@@ -589,11 +594,10 @@ void PairSNAPKokkos<DeviceType>::operator() (TagPairSNAP<NEIGHFLAG,EVFLAG>,const
             }
           }
         }
-//        ev_tally_full(i,2.0*evdwl,0.0,0.0,0.0,0.0,0.0);
-        if (eflag_either) {
-          if (eflag_global) ev.evdwl += evdwl;
-          if (eflag_atom) d_eatom[i] += evdwl;
-        }
+
+        //ev_tally_full(i,2.0*evdwl,0.0,0.0,0.0,0.0,0.0);
+        if (eflag_global) ev.evdwl += evdwl;
+        if (eflag_atom) d_eatom[i] += evdwl;
       });
     }
   }
diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h
index 25561fef5d0decf60f4ab6d74d3e8cf20693c9ff..6a19c578293665060cc38a8eec41a10a7747b3c0 100644
--- a/src/KOKKOS/sna_kokkos_impl.h
+++ b/src/KOKKOS/sna_kokkos_impl.h
@@ -327,29 +327,40 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
   clock_gettime(CLOCK_REALTIME, &starttime);
 #endif
 
-  Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,idxj_max),
+  Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxj_full_max),
       [&] (const int& idx) {
-    const int j1 = idxj(idx).j1;
-    const int j2 = idxj(idx).j2;
-    const int j =  idxj(idx).j;
-    double b_j1_j2_j = 0.0;
+    const int j1 = idxj_full(idx).j1;
+    const int j2 = idxj_full(idx).j2;
+    const int j =  idxj_full(idx).j;
 
-    for(int mb = 0; 2*mb < j; mb++)
-      for(int ma = 0; ma <= j; ma++) {
-        b_j1_j2_j +=
+    const int bound = (j+2)/2;
+    double b_j1_j2_j = 0.0;
+    double b_j1_j2_j_temp = 0.0;
+    Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team,(j+1)*bound),
+        [&] (const int mbma, double& sum) {
+        //for(int mb = 0; 2*mb <= j; mb++)
+          //for(int ma = 0; ma <= j; ma++) {
+        const int ma = mbma%(j+1);
+        const int mb = mbma/(j+1);
+        if (2*mb == j) return;
+        sum +=
           uarraytot_r(j,ma,mb) * zarray_r(j1,j2,j,mb,ma) +
           uarraytot_i(j,ma,mb) * zarray_i(j1,j2,j,mb,ma);
-      } // end loop over ma, mb
+      },b_j1_j2_j_temp); // end loop over ma, mb
+      b_j1_j2_j += b_j1_j2_j_temp;
 
     // For j even, special treatment for middle column
 
     if (j%2 == 0) {
       const int mb = j/2;
-      for(int ma = 0; ma < mb; ma++) {
-        b_j1_j2_j +=
+      Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team, mb),
+          [&] (const int ma, double& sum) {
+      //for(int ma = 0; ma < mb; ma++) {
+        sum +=
           uarraytot_r(j,ma,mb) * zarray_r(j1,j2,j,mb,ma) +
           uarraytot_i(j,ma,mb) * zarray_i(j1,j2,j,mb,ma);
-      }
+      },b_j1_j2_j_temp); // end loop over ma
+      b_j1_j2_j += b_j1_j2_j_temp;
 
       const int ma = mb;
       b_j1_j2_j +=
@@ -357,11 +368,13 @@ void SNAKokkos<DeviceType>::compute_bi(const typename Kokkos::TeamPolicy<DeviceT
          uarraytot_i(j,ma,mb) * zarray_i(j1,j2,j,mb,ma))*0.5;
     }
 
-    b_j1_j2_j *= 2.0;
-    if (bzero_flag)
-      b_j1_j2_j -= bzero[j];
+    Kokkos::single(Kokkos::PerThread(team), [&] () {
+      b_j1_j2_j *= 2.0;
+      if (bzero_flag)
+        b_j1_j2_j -= bzero[j];
 
-    barray(j1,j2,j) = b_j1_j2_j;
+      barray(j1,j2,j) = b_j1_j2_j;
+    });
   });
       //} // end loop over j
     //} // end loop over j1, j2
@@ -1028,6 +1041,8 @@ void SNAKokkos<DeviceType>::create_team_scratch_arrays(const typename Kokkos::Te
   uarraytot_i_a = uarraytot_i = t_sna_3d(team.team_scratch(1),jdim,jdim,jdim);
   zarray_r = t_sna_5d(team.team_scratch(1),jdim,jdim,jdim,jdim,jdim);
   zarray_i = t_sna_5d(team.team_scratch(1),jdim,jdim,jdim,jdim,jdim);
+  bvec = Kokkos::View<double*, Kokkos::LayoutRight, DeviceType>(team.team_scratch(1),ncoeff);
+  barray = t_sna_3d(team.team_scratch(1),jdim,jdim,jdim);
 
   rij = t_sna_2d(team.team_scratch(1),nmax,3);
   rcutij = t_sna_1d(team.team_scratch(1),nmax);
@@ -1046,6 +1061,8 @@ T_INT SNAKokkos<DeviceType>::size_team_scratch_arrays() {
   size += t_sna_3d::shmem_size(jdim,jdim,jdim); // uarraytot_i_a
   size += t_sna_5d::shmem_size(jdim,jdim,jdim,jdim,jdim); // zarray_r
   size += t_sna_5d::shmem_size(jdim,jdim,jdim,jdim,jdim); // zarray_i
+  size += Kokkos::View<double*, Kokkos::LayoutRight, DeviceType>::shmem_size(ncoeff); // bvec
+  size += t_sna_3d::shmem_size(jdim,jdim,jdim); // barray
 
   size += t_sna_2d::shmem_size(nmax,3); // rij
   size += t_sna_1d::shmem_size(nmax); // rcutij
@@ -1062,8 +1079,6 @@ KOKKOS_INLINE_FUNCTION
 void SNAKokkos<DeviceType>::create_thread_scratch_arrays(const typename Kokkos::TeamPolicy<DeviceType>::member_type& team)
 {
   int jdim = twojmax + 1;
-  bvec = Kokkos::View<double*, Kokkos::LayoutRight, DeviceType>(team.thread_scratch(1),ncoeff);
-  barray = t_sna_3d(team.thread_scratch(1),jdim,jdim,jdim);
 
   dbvec = Kokkos::View<double*[3], Kokkos::LayoutRight, DeviceType>(team.thread_scratch(1),ncoeff);
   dbarray = t_sna_4d(team.thread_scratch(1),jdim,jdim,jdim);
@@ -1079,8 +1094,6 @@ inline
 T_INT SNAKokkos<DeviceType>::size_thread_scratch_arrays() {
   T_INT size = 0;
   int jdim = twojmax + 1;
-  size += Kokkos::View<double*, Kokkos::LayoutRight, DeviceType>::shmem_size(ncoeff); // bvec
-  size += t_sna_3d::shmem_size(jdim,jdim,jdim); // barray
 
   size += Kokkos::View<double*[3], Kokkos::LayoutRight, DeviceType>::shmem_size(ncoeff); // dbvec
   size += t_sna_4d::shmem_size(jdim,jdim,jdim); // dbarray
diff --git a/src/MOLECULE/improper_umbrella.cpp b/src/MOLECULE/improper_umbrella.cpp
index 31d7cba54dca313ae2016fe477b9882e0787f515..8ed3d3a84cd6437a6c0894f9d7140c231234aa75 100644
--- a/src/MOLECULE/improper_umbrella.cpp
+++ b/src/MOLECULE/improper_umbrella.cpp
@@ -189,17 +189,17 @@ void ImproperUmbrella::compute(int eflag, int vflag)
     dahy = ary-c*hry;
     dahz = arz-c*hrz;
 
-    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
-    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
-    f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
+    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
+    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
+    f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;
 
-    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
-    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
-    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
+    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
+    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
+    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;
 
-    f4[0] = dahx*rhr;
-    f4[1] = dahy*rhr;
-    f4[2] = dahz*rhr;
+    f4[0] = dahx*rhr*a;
+    f4[1] = dahy*rhr*a;
+    f4[2] = dahz*rhr*a;
 
     f1[0] = -(f2[0] + f3[0] + f4[0]);
     f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -208,27 +208,27 @@ void ImproperUmbrella::compute(int eflag, int vflag)
     // apply force to each of 4 atoms
 
     if (newton_bond || i1 < nlocal) {
-      f[i1][0] += f1[0]*a;
-      f[i1][1] += f1[1]*a;
-      f[i1][2] += f1[2]*a;
+      f[i1][0] += f1[0];
+      f[i1][1] += f1[1];
+      f[i1][2] += f1[2];
     }
 
     if (newton_bond || i2 < nlocal) {
-      f[i2][0] += f3[0]*a;
-      f[i2][1] += f3[1]*a;
-      f[i2][2] += f3[2]*a;
+      f[i2][0] += f3[0];
+      f[i2][1] += f3[1];
+      f[i2][2] += f3[2];
     }
 
     if (newton_bond || i3 < nlocal) {
-      f[i3][0] += f2[0]*a;
-      f[i3][1] += f2[1]*a;
-      f[i3][2] += f2[2]*a;
+      f[i3][0] += f2[0];
+      f[i3][1] += f2[1];
+      f[i3][2] += f2[2];
     }
 
     if (newton_bond || i4 < nlocal) {
-      f[i4][0] += f4[0]*a;
-      f[i4][1] += f4[1]*a;
-      f[i4][2] += f4[2]*a;
+      f[i4][0] += f4[0];
+      f[i4][1] += f4[1];
+      f[i4][2] += f4[2];
     }
 
     if (evflag) {
@@ -247,7 +247,7 @@ void ImproperUmbrella::compute(int eflag, int vflag)
       vb3y = x[i4][1] - x[i3][1];
       vb3z = x[i4][2] - x[i3][2];
 
-      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f3,f4,
+      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f2,f4,
                vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
     }
   }
diff --git a/src/Makefile b/src/Makefile
index d7b5a9e702d439f9e591364c9561fd9da10fa917..1f0a294e8a71ecb494d885583270db0f8359e5e5 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -64,7 +64,7 @@ PACKUSER = user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-colvars \
 	   user-mgpt user-misc user-mofff user-molfile \
 	   user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm \
 	   user-qtb user-quip user-reaxc user-scafacos user-smd user-smtbq \
-	   user-sdpd user-sph user-tally user-uef user-vtk
+	   user-sdpd user-sph user-tally user-uef user-vtk user-yaff
 
 PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems \
 	  python voronoi \
diff --git a/src/USER-CGDNA/README b/src/USER-CGDNA/README
index d71f3b7a43acc9df6f7c56f1077a991ce7e762e0..8e3f16372c99321c631aa98d8efca39c778f6d2e 100644
--- a/src/USER-CGDNA/README
+++ b/src/USER-CGDNA/README
@@ -74,10 +74,10 @@ pair_oxdna_coaxstk.cpp:  coaxial stacking interaction between nucleotides
 
 
 pair_oxdna2_excv.cpp, pair_oxdna2_stk.cpp, pair_oxdna2_coaxstk.cpp:
-		     corresponding pair styles in oxDNA2 (see [3])
+                     corresponding pair styles in oxDNA2 (see [3])
 
 pair_oxdna2_dh.cpp:  Debye-Hueckel electrostatic interaction between backbone
-		     sites
+                     sites
 
 ** Fixes provided by this package:
 
diff --git a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
index ce5d3a92a9002af04c1e3cbae013bc0c605424a9..f9da40dfb9888e6ccfd12768f202d040a61b5445 100644
--- a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
+++ b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
@@ -683,7 +683,7 @@ void *PairLJCutTholeLong::extract(const char *str, int &dim)
 {
   dim = 0;
   if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul;
-  dim = 6;
+  dim = 2;
   if (strcmp(str,"epsilon") == 0) return (void *) epsilon;
   if (strcmp(str,"sigma") == 0) return (void *) sigma;
   if (strcmp(str,"scale") == 0) return (void *) scale;
diff --git a/src/USER-DRUDE/pair_thole.cpp b/src/USER-DRUDE/pair_thole.cpp
index 6901ad1f2d6e64ae3686c4eb381730f099d6347d..5a518d819bb9248eebe284a1decd4a1f1678dcdd 100644
--- a/src/USER-DRUDE/pair_thole.cpp
+++ b/src/USER-DRUDE/pair_thole.cpp
@@ -414,7 +414,7 @@ double PairThole::single(int i, int j, int itype, int jtype,
 
 void *PairThole::extract(const char *str, int &dim)
 {
-  dim = 4;
+  dim = 2;
   if (strcmp(str,"scale") == 0) return (void *) scale;
   if (strcmp(str,"polar") == 0) return (void *) polar;
   if (strcmp(str,"thole") == 0) return (void *) thole;
diff --git a/src/USER-MISC/compute_entropy_atom.cpp b/src/USER-MISC/compute_entropy_atom.cpp
index 4946bc437e7960bba7e9f054d298d191c69f2711..0367d7fe6d9e7605186e79fe0cdac4c05352f2c6 100644
--- a/src/USER-MISC/compute_entropy_atom.cpp
+++ b/src/USER-MISC/compute_entropy_atom.cpp
@@ -65,6 +65,7 @@ ComputeEntropyAtom(LAMMPS *lmp, int narg, char **arg) :
   if (cutoff <= 0.0) error->all(FLERR,"Illegal compute entropy/atom"
                                " command; cutoff must be positive");
 
+  cutoff2 = 0.;
   avg_flag = 0;
   local_flag = 0;
 
@@ -137,15 +138,20 @@ void ComputeEntropyAtom::init()
   if (count > 1 && comm->me == 0)
     error->warning(FLERR,"More than one compute entropy/atom");
 
-  // need a full neighbor list with neighbors of the ghost atoms
-
+  // Request neighbor list
   int irequest = neighbor->request(this,instance_me);
   neighbor->requests[irequest]->pair = 0;
   neighbor->requests[irequest]->compute = 1;
   neighbor->requests[irequest]->half = 0;
   neighbor->requests[irequest]->full = 1;
   neighbor->requests[irequest]->occasional = 0;
-  neighbor->requests[irequest]->ghost = 1;
+  if (avg_flag) {
+    // need a full neighbor list with neighbors of the ghost atoms
+    neighbor->requests[irequest]->ghost = 1;
+  } else {
+    // need a full neighbor list
+    neighbor->requests[irequest]->ghost = 0;
+  }
 
 }
 
diff --git a/src/USER-MISC/fix_bond_react.cpp b/src/USER-MISC/fix_bond_react.cpp
index d705cba1cabbe3bb1a4b0d39bd724e6d1b629265..b9c357f3635abe9bf81bfcacb64491acb440e6fe 100644
--- a/src/USER-MISC/fix_bond_react.cpp
+++ b/src/USER-MISC/fix_bond_react.cpp
@@ -58,7 +58,8 @@ static const char cite_fix_bond_react[] =
 #define BIG 1.0e20
 #define DELTA 16
 #define MAXLINE 256
-#define MAXGUESS 20
+#define MAXGUESS 20 // max # of guesses allowed by superimpose algorithm
+#define MAXCONARGS 5 // max # of arguments for any type of constraint
 
 // various statuses of superimpose algorithm:
 // ACCEPT: site successfully matched to pre-reacted template
@@ -161,10 +162,15 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
   memory->create(unreacted_mol,nreacts,"bond/react:unreacted_mol");
   memory->create(reacted_mol,nreacts,"bond/react:reacted_mol");
   memory->create(fraction,nreacts,"bond/react:fraction");
+  memory->create(max_rxn,nreacts,"bond/react:max_rxn");
+  memory->create(nlocalskips,nreacts,"bond/react:nlocalskips");
+  memory->create(nghostlyskips,nreacts,"bond/react:nghostlyskips");
   memory->create(seed,nreacts,"bond/react:seed");
   memory->create(limit_duration,nreacts,"bond/react:limit_duration");
   memory->create(stabilize_steps_flag,nreacts,"bond/react:stabilize_steps_flag");
   memory->create(update_edges_flag,nreacts,"bond/react:update_edges_flag");
+  memory->create(nconstraints,nreacts,"bond/react:nconstraints");
+  memory->create(constraints,nreacts,MAXCONARGS,"bond/react:constraints");
   memory->create(iatomtype,nreacts,"bond/react:iatomtype");
   memory->create(jatomtype,nreacts,"bond/react:jatomtype");
   memory->create(ibonding,nreacts,"bond/react:ibonding");
@@ -179,8 +185,10 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
   for (int i = 0; i < nreacts; i++) {
     fraction[i] = 1;
     seed[i] = 12345;
+    max_rxn[i] = INT_MAX;
     stabilize_steps_flag[i] = 0;
     update_edges_flag[i] = 0;
+    nconstraints[i] = 0;
     // set default limit duration to 60 timesteps
     limit_duration[i] = 60;
     reaction_count[i] = 0;
@@ -244,6 +252,13 @@ FixBondReact::FixBondReact(LAMMPS *lmp, int narg, char **arg) :
         if (seed[rxn] <= 0) error->all(FLERR,"Illegal fix bond/react command: "
                                        "probability seed must be positive");
         iarg += 3;
+      } else if (strcmp(arg[iarg],"max_rxn") == 0) {
+	      if (iarg+2 > narg) error->all(FLERR,"Illegal fix bond/react command: "
+	      			                        "'max_rxn' has too few arguments");
+	      max_rxn[rxn] = force->inumeric(FLERR,arg[iarg+1]);
+	      if (max_rxn[rxn] < 0) error->all(FLERR,"Illegal fix bond/react command: "
+	      				                         "'max_rxn' cannot be negative");
+	      iarg += 2;
       } else if (strcmp(arg[iarg],"stabilize_steps") == 0) {
         if (stabilization_flag == 0) error->all(FLERR,"Stabilize_steps keyword "
                                                 "used without stabilization keyword");
@@ -403,6 +418,9 @@ FixBondReact::~FixBondReact()
   memory->destroy(reacted_mol);
   memory->destroy(fraction);
   memory->destroy(seed);
+  memory->destroy(max_rxn);
+  memory->destroy(nlocalskips);
+  memory->destroy(nghostlyskips);
   memory->destroy(limit_duration);
   memory->destroy(stabilize_steps_flag);
   memory->destroy(update_edges_flag);
@@ -674,6 +692,8 @@ void FixBondReact::post_integrate()
     reaction_count[i] = 0;
     local_rxn_count[i] = 0;
     ghostly_rxn_count[i] = 0;
+    nlocalskips[i] = 0;
+    nghostlyskips[i] = 0;
   }
 
   if (nevery_check) {
@@ -745,6 +765,7 @@ void FixBondReact::post_integrate()
 
   int j;
   for (rxnID = 0; rxnID < nreacts; rxnID++) {
+    if (max_rxn[rxnID] <= reaction_count_total[rxnID]) continue;
     for (int ii = 0; ii < nall; ii++) {
       partner[ii] = 0;
       finalpartner[ii] = 0;
@@ -941,6 +962,7 @@ void FixBondReact::far_partner()
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
+      domain->minimum_image(delx,dely,delz); // ghost location fix
       rsq = delx*delx + dely*dely + delz*delz;
 
       if (rsq >= cutsq[rxnID][1] || rsq <= cutsq[rxnID][0]) {
@@ -1122,7 +1144,7 @@ void FixBondReact::superimpose_algorithm()
           }
         }
 
-        if (status == ACCEPT) { // reaction site found successfully!
+        if (status == ACCEPT && check_constraints()) { // reaction site found successfully!
           glove_ghostcheck();
         }
         hang_catch++;
@@ -1142,14 +1164,43 @@ void FixBondReact::superimpose_algorithm()
 
   MPI_Allreduce(&local_rxn_count[0],&reaction_count[0],nreacts,MPI_INT,MPI_SUM,world);
 
-  for (int i = 0; i < nreacts; i++)
-    reaction_count_total[i] += reaction_count[i];
-
-  // this assumes compute_vector is called from process 0
-  // ...so doesn't bother to bcast ghostly_rxn_count
   if (me == 0)
     for (int i = 0; i < nreacts; i++)
-      reaction_count_total[i] += ghostly_rxn_count[i];
+      reaction_count_total[i] += reaction_count[i] + ghostly_rxn_count[i];
+
+  MPI_Bcast(&reaction_count_total[0], nreacts, MPI_INT, 0, world);
+
+  // check if we overstepped our reaction limit
+  for (int i = 0; i < nreacts; i++) {
+    if (reaction_count_total[i] > max_rxn[i]) {
+      // let's randomly choose rxns to skip, unbiasedly from local and ghostly
+      int local_rxncounts[nprocs];
+      int all_localskips[nprocs];
+      MPI_Gather(&local_rxn_count[i],1,MPI_INT,local_rxncounts,1,MPI_INT,0,world);
+      if (me == 0) {
+        int overstep = reaction_count_total[i] - max_rxn[i];
+        int delta_rxn = reaction_count[i] + ghostly_rxn_count[i];
+        int rxn_by_proc[delta_rxn];
+        for (int j = 0; j < delta_rxn; j++)
+          rxn_by_proc[j] = -1; // corresponds to ghostly
+        int itemp = 0;
+        for (int j = 0; j < nprocs; j++)
+          for (int k = 0; k < local_rxn_count[j]; k++)
+            rxn_by_proc[itemp++] = j;
+        std::random_shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn]);
+        for (int j = 0; j < nprocs; j++)
+          all_localskips[j] = 0;
+        nghostlyskips[i] = 0;
+        for (int j = 0; j < overstep; j++) {
+          if (rxn_by_proc[j] == -1) nghostlyskips[i]++;
+          else all_localskips[rxn_by_proc[j]]++;
+        }
+      }
+      reaction_count_total[i] = max_rxn[i];
+      MPI_Scatter(&all_localskips[0],1,MPI_INT,&nlocalskips[i],1,MPI_INT,0,world);
+      MPI_Bcast(&nghostlyskips[i],1,MPI_INT,0,world);
+    }
+  }
 
   // this updates topology next step
   next_reneighbor = update->ntimestep;
@@ -1526,6 +1577,32 @@ void FixBondReact::ring_check()
   }
 }
 
+/* ----------------------------------------------------------------------
+evaluate constraints: return 0 if any aren't satisfied
+------------------------------------------------------------------------- */
+
+int FixBondReact::check_constraints()
+{
+  tagint atom1,atom2;
+  double delx,dely,delz,rsq;
+
+  double **x = atom->x;
+
+  for (int i = 0; i < nconstraints[rxnID]; i++) {
+    if (constraints[rxnID][0] == 0) { // 'distance' type
+      atom1 = atom->map(glove[(int) constraints[rxnID][1]-1][1]);
+      atom2 = atom->map(glove[(int) constraints[rxnID][2]-1][1]);
+      delx = x[atom1][0] - x[atom2][0];
+      dely = x[atom1][1] - x[atom2][1];
+      delz = x[atom1][2] - x[atom2][2];
+      domain->minimum_image(delx,dely,delz); // ghost location fix
+      rsq = delx*delx + dely*dely + delz*delz;
+      if (rsq < constraints[rxnID][3] || rsq > constraints[rxnID][4]) return 0;
+    }
+  }
+  return 1;
+}
+
 /* ----------------------------------------------------------------------
   Get xspecials for current molecule templates
 ------------------------------------------------------------------------- */
@@ -1945,19 +2022,19 @@ void FixBondReact::glove_ghostcheck()
   // 'ghosts of another' indication taken from comm->sendlist
 
   int ghostly = 0;
-  if (comm->style == 0) {
-    for (int i = 0; i < onemol->natoms; i++) {
-      int ilocal = atom->map(glove[i][1]);
-      if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) {
-        ghostly = 1;
-        break;
+  #if !defined(MPI_STUBS)
+    if (comm->style == 0) {
+      for (int i = 0; i < onemol->natoms; i++) {
+        int ilocal = atom->map(glove[i][1]);
+        if (ilocal >= atom->nlocal || localsendlist[ilocal] == 1) {
+          ghostly = 1;
+          break;
+        }
       }
-    }
-  } else {
-    #if !defined(MPI_STUBS)
+    } else {
       ghostly = 1;
-    #endif
-  }
+    }
+  #endif
 
   if (ghostly == 1) {
     ghostly_mega_glove[0][ghostly_num_mega] = rxnID;
@@ -2092,18 +2169,26 @@ void FixBondReact::update_everything()
   memory->create(update_mega_glove,max_natoms+1,MAX(local_num_mega,global_megasize),"bond/react:update_mega_glove");
 
   for (int pass = 0; pass < 2; pass++) {
-
+    update_num_mega = 0;
+    int iskip[nreacts];
+    for (int i = 0; i < nreacts; i++) iskip[i] = 0;
     if (pass == 0) {
-      update_num_mega = local_num_mega;
-      for (int i = 0; i < update_num_mega; i++) {
+      for (int i = 0; i < local_num_mega; i++) {
+        rxnID = local_mega_glove[0][i];
+        // reactions already shuffled from dedup procedure, so can skip first N
+        if (iskip[rxnID]++ < nlocalskips[rxnID]) continue;
         for (int j = 0; j < max_natoms+1; j++)
-          update_mega_glove[j][i] = local_mega_glove[j][i];
+          update_mega_glove[j][update_num_mega] = local_mega_glove[j][i];
+        update_num_mega++;
       }
     } else if (pass == 1) {
-      update_num_mega = global_megasize;
       for (int i = 0; i < global_megasize; i++) {
+        rxnID = global_mega_glove[0][i];
+        // reactions already shuffled from dedup procedure, so can skip first N
+        if (iskip[rxnID]++ < nghostlyskips[rxnID]) continue;
         for (int j = 0; j < max_natoms+1; j++)
-          update_mega_glove[j][i] = global_mega_glove[j][i];
+          update_mega_glove[j][update_num_mega] = global_mega_glove[j][i];
+        update_num_mega++;
       }
     }
 
@@ -2623,6 +2708,7 @@ void FixBondReact::read(int myrxn)
     else if (strstr(line,"equivalences")) sscanf(line,"%d",&nequivalent);
     else if (strstr(line,"customIDs")) sscanf(line,"%d",&ncustom);
     else if (strstr(line,"deleteIDs")) sscanf(line,"%d",&ndelete);
+    else if (strstr(line,"constraints")) sscanf(line,"%d",&nconstraints[myrxn]);
     else break;
   }
 
@@ -2654,6 +2740,8 @@ void FixBondReact::read(int myrxn)
       CustomEdges(line, myrxn);
     } else if (strcmp(keyword,"DeleteIDs") == 0) {
       DeleteAtoms(line, myrxn);
+    } else if (strcmp(keyword,"Constraints") == 0) {
+      Constraints(line, myrxn);
     } else error->one(FLERR,"Unknown section in superimpose file");
 
     parse_keyword(1,line,keyword);
@@ -2729,6 +2817,27 @@ void FixBondReact::DeleteAtoms(char *line, int myrxn)
   }
 }
 
+void FixBondReact::Constraints(char *line, int myrxn)
+{
+  double tmp[MAXCONARGS];
+  int n = strlen("distance") + 1;
+  char *constraint_type = new char[n];
+  for (int i = 0; i < nconstraints[myrxn]; i++) {
+    readline(line);
+    sscanf(line,"%s",constraint_type);
+    if (strcmp(constraint_type,"distance") == 0) {
+      constraints[myrxn][0] = 0; // 0 = 'distance' ...maybe use another enum eventually
+      sscanf(line,"%*s %lg %lg %lg %lg",&tmp[0],&tmp[1],&tmp[2],&tmp[3]);
+      constraints[myrxn][1] = tmp[0];
+      constraints[myrxn][2] = tmp[1];
+      constraints[myrxn][3] = tmp[2]*tmp[2]; // using square of distance
+      constraints[myrxn][4] = tmp[3]*tmp[3];
+    } else
+      error->one(FLERR,"Illegal constraint type in 'Constraints' section of map file");
+  }
+  delete [] constraint_type;
+}
+
 void FixBondReact::open(char *file)
 {
   fp = fopen(file,"r");
diff --git a/src/USER-MISC/fix_bond_react.h b/src/USER-MISC/fix_bond_react.h
index d6e7b785e7f8662d8d4eca52d5171d3a7a77be3c..74d53b8f21265ff7726ee3971001a64e6de49a11 100644
--- a/src/USER-MISC/fix_bond_react.h
+++ b/src/USER-MISC/fix_bond_react.h
@@ -55,11 +55,14 @@ class FixBondReact : public Fix {
   int *iatomtype,*jatomtype;
   int *seed;
   double **cutsq,*fraction;
+  int *max_rxn,*nlocalskips,*nghostlyskips;
   tagint lastcheck;
   int stabilization_flag;
   int custom_exclude_flag;
   int *stabilize_steps_flag;
   int *update_edges_flag;
+  int *nconstraints;
+  double **constraints;
   int status;
   int *groupbits;
 
@@ -140,6 +143,7 @@ class FixBondReact : public Fix {
   void Equivalences(char *,int);
   void CustomEdges(char *,int);
   void DeleteAtoms(char *,int);
+  void Constraints(char *,int);
 
   void make_a_guess ();
   void neighbor_loop();
@@ -147,6 +151,7 @@ class FixBondReact : public Fix {
   void crosscheck_the_neighbor();
   void inner_crosscheck_loop();
   void ring_check();
+  int check_constraints();
 
   void open(char *);
   void readline(char *);
diff --git a/src/USER-MISC/improper_fourier.cpp b/src/USER-MISC/improper_fourier.cpp
index 11478d08eab135f70baa9ab6d69a762b4a302672..927478fa1a9245f640e40562d84033001bd2afba 100644
--- a/src/USER-MISC/improper_fourier.cpp
+++ b/src/USER-MISC/improper_fourier.cpp
@@ -206,17 +206,17 @@ void ImproperFourier::addone(const int &i1,const int &i2,const int &i3,const int
   dahy = ary-c*hry;
   dahz = arz-c*hrz;
 
-  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
-  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
-  f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
+  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
+  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
+  f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;
 
-  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
-  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
-  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
+  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
+  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
+  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;
 
-  f4[0] = dahx*rhr;
-  f4[1] = dahy*rhr;
-  f4[2] = dahz*rhr;
+  f4[0] = dahx*rhr*a;
+  f4[1] = dahy*rhr*a;
+  f4[2] = dahz*rhr*a;
 
   f1[0] = -(f2[0] + f3[0] + f4[0]);
   f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -225,32 +225,32 @@ void ImproperFourier::addone(const int &i1,const int &i2,const int &i3,const int
   // apply force to each of 4 atoms
 
   if (newton_bond || i1 < nlocal) {
-    f[i1][0] += f1[0]*a;
-    f[i1][1] += f1[1]*a;
-    f[i1][2] += f1[2]*a;
+    f[i1][0] += f1[0];
+    f[i1][1] += f1[1];
+    f[i1][2] += f1[2];
   }
 
   if (newton_bond || i2 < nlocal) {
-    f[i2][0] += f3[0]*a;
-    f[i2][1] += f3[1]*a;
-    f[i2][2] += f3[2]*a;
+    f[i2][0] += f3[0];
+    f[i2][1] += f3[1];
+    f[i2][2] += f3[2];
   }
 
   if (newton_bond || i3 < nlocal) {
-    f[i3][0] += f2[0]*a;
-    f[i3][1] += f2[1]*a;
-    f[i3][2] += f2[2]*a;
+    f[i3][0] += f2[0];
+    f[i3][1] += f2[1];
+    f[i3][2] += f2[2];
   }
 
   if (newton_bond || i4 < nlocal) {
-    f[i4][0] += f4[0]*a;
-    f[i4][1] += f4[1]*a;
-    f[i4][2] += f4[2]*a;
+    f[i4][0] += f4[0];
+    f[i4][1] += f4[1];
+    f[i4][2] += f4[2];
   }
 
   if (evflag)
-    ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f3,f4,
-             vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
+      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f2,f4,
+               -vb1x,-vb1y,-vb1z,vb2x-vb1x,vb2y-vb1y,vb2z-vb1z,vb3x-vb2x,vb3y-vb2y,vb3z-vb2z);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/USER-NETCDF/dump_netcdf.cpp b/src/USER-NETCDF/dump_netcdf.cpp
index e4c0115793482efc11e54bd784f664bea89293d9..f297ef45eb8a175084d8d31dac499958a078603a 100644
--- a/src/USER-NETCDF/dump_netcdf.cpp
+++ b/src/USER-NETCDF/dump_netcdf.cpp
@@ -281,6 +281,9 @@ void DumpNetCDF::openfile()
 
   // get total number of atoms
   ntotalgr = group->count(igroup);
+  for (int i = 0; i < DUMP_NC_MAX_DIMS; i++) {
+    vector_dim[i] = -1;
+  }
 
   if (filewriter) {
     if (append_flag && !multifile && access(filecurrent, F_OK) != -1) {
@@ -294,9 +297,6 @@ void DumpNetCDF::openfile()
 
       // dimensions
       NCERRX( nc_inq_dimid(ncid, NC_FRAME_STR, &frame_dim), NC_FRAME_STR );
-      NCERRX( nc_inq_dimid(ncid, NC_SPATIAL_STR, &spatial_dim),
-          NC_SPATIAL_STR );
-      NCERRX( nc_inq_dimid(ncid, NC_VOIGT_STR, &Voigt_dim), NC_VOIGT_STR );
       NCERRX( nc_inq_dimid(ncid, NC_ATOM_STR, &atom_dim), NC_ATOM_STR );
       NCERRX( nc_inq_dimid(ncid, NC_CELL_SPATIAL_STR, &cell_spatial_dim),
           NC_CELL_SPATIAL_STR );
@@ -304,6 +304,26 @@ void DumpNetCDF::openfile()
           NC_CELL_ANGULAR_STR );
       NCERRX( nc_inq_dimid(ncid, NC_LABEL_STR, &label_dim), NC_LABEL_STR );
 
+      for (int i = 0; i < n_perat; i++) {
+        int dims = perat[i].dims;
+        if (vector_dim[dims] < 0) {
+          char dimstr[1024];
+          if (dims == 3) {
+            strcpy(dimstr, NC_SPATIAL_STR);
+          }
+          else if (dims == 6) {
+            strcpy(dimstr, NC_VOIGT_STR);
+          }
+          else {
+            sprintf(dimstr, "vec%i", dims);
+          }
+          if (dims != 1) {
+            NCERRX( nc_inq_dimid(ncid, dimstr, &vector_dim[dims]),
+                    dimstr );
+          }
+        }
+      }
+
       // default variables
       NCERRX( nc_inq_varid(ncid, NC_SPATIAL_STR, &spatial_var),
           NC_SPATIAL_STR );
@@ -320,7 +340,6 @@ void DumpNetCDF::openfile()
       NCERRX( nc_inq_varid(ncid, NC_CELL_ANGLES_STR, &cell_angles_var),
           NC_CELL_ANGLES_STR);
 
-      // variables specified in the input file
       for (int i = 0; i < n_perat; i++) {
         NCERRX( nc_inq_varid(ncid, perat[i].name, &perat[i].var),
                 perat[i].name );
@@ -359,10 +378,6 @@ void DumpNetCDF::openfile()
       // dimensions
       NCERRX( nc_def_dim(ncid, NC_FRAME_STR, NC_UNLIMITED, &frame_dim),
           NC_FRAME_STR );
-      NCERRX( nc_def_dim(ncid, NC_SPATIAL_STR, 3, &spatial_dim),
-          NC_SPATIAL_STR );
-      NCERRX( nc_def_dim(ncid, NC_VOIGT_STR, 6, &Voigt_dim),
-          NC_VOIGT_STR );
       NCERRX( nc_def_dim(ncid, NC_ATOM_STR, ntotalgr, &atom_dim),
           NC_ATOM_STR );
       NCERRX( nc_def_dim(ncid, NC_CELL_SPATIAL_STR, 3, &cell_spatial_dim),
@@ -372,13 +387,33 @@ void DumpNetCDF::openfile()
       NCERRX( nc_def_dim(ncid, NC_LABEL_STR, 10, &label_dim),
           NC_LABEL_STR );
 
+      for (int i = 0; i < n_perat; i++) {
+        int dims = perat[i].dims;
+        if (vector_dim[dims] < 0) {
+          char dimstr[1024];
+          if (dims == 3) {
+            strcpy(dimstr, NC_SPATIAL_STR);
+          }
+          else if (dims == 6) {
+            strcpy(dimstr, NC_VOIGT_STR);
+          }
+          else {
+            sprintf(dimstr, "vec%i", dims);
+          }
+          if (dims != 1) {
+            NCERRX( nc_def_dim(ncid, dimstr, dims, &vector_dim[dims]),
+                    dimstr );
+          }
+        }
+      }
+
       // default variables
-      dims[0] = spatial_dim;
+      dims[0] = vector_dim[3];
       NCERRX( nc_def_var(ncid, NC_SPATIAL_STR, NC_CHAR, 1, dims, &spatial_var),
           NC_SPATIAL_STR );
       NCERRX( nc_def_var(ncid, NC_CELL_SPATIAL_STR, NC_CHAR, 1, dims,
              &cell_spatial_var), NC_CELL_SPATIAL_STR );
-      dims[0] = spatial_dim;
+      dims[0] = vector_dim[3];
       dims[1] = label_dim;
       NCERRX( nc_def_var(ncid, NC_CELL_ANGULAR_STR, NC_CHAR, 2, dims,
              &cell_angular_var), NC_CELL_ANGULAR_STR );
@@ -400,7 +435,7 @@ void DumpNetCDF::openfile()
       // variables specified in the input file
       dims[0] = frame_dim;
       dims[1] = atom_dim;
-      dims[2] = spatial_dim;
+      dims[2] = vector_dim[3];
 
       for (int i = 0; i < n_perat; i++) {
         nc_type xtype;
@@ -419,53 +454,27 @@ void DumpNetCDF::openfile()
 
         if (perat[i].constant) {
           // this quantity will only be written once
-          if (perat[i].dims == 6) {
-            // this is a tensor in Voigt notation
-            dims[2] = Voigt_dim;
-            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 2, dims+1,
-                   &perat[i].var), perat[i].name );
-          }
-          else if (perat[i].dims == 3) {
-            // this is a vector, we need to store x-, y- and z-coordinates
-            dims[2] = spatial_dim;
-            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 2, dims+1,
-                   &perat[i].var), perat[i].name );
-          }
-          else if (perat[i].dims == 1) {
+          if (perat[i].dims == 1) {
             NCERRX( nc_def_var(ncid, perat[i].name, xtype, 1, dims+1,
-                   &perat[i].var), perat[i].name );
+                               &perat[i].var), perat[i].name );
           }
           else {
-            char errstr[1024];
-            sprintf(errstr, "%i dimensions for '%s'. Not sure how to write "
-                    "this to the NetCDF trajectory file.", perat[i].dims,
-                    perat[i].name);
-            error->all(FLERR,errstr);
+            // this is a vector
+            dims[1] = vector_dim[perat[i].dims];
+            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 2, dims+1,
+                               &perat[i].var), perat[i].name );
           }
         }
         else {
-          if (perat[i].dims == 6) {
-            // this is a tensor in Voigt notation
-            dims[2] = Voigt_dim;
-            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 3, dims,
-                   &perat[i].var), perat[i].name );
-          }
-          else if (perat[i].dims == 3) {
-            // this is a vector, we need to store x-, y- and z-coordinates
-            dims[2] = spatial_dim;
-            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 3, dims,
-                   &perat[i].var), perat[i].name );
-          }
-          else if (perat[i].dims == 1) {
+          if (perat[i].dims == 1) {
             NCERRX( nc_def_var(ncid, perat[i].name, xtype, 2, dims,
                    &perat[i].var), perat[i].name );
           }
           else {
-            char errstr[1024];
-            sprintf(errstr, "%i dimensions for '%s'. Not sure how to write "
-                    "this to the NetCDF trajectory file.", perat[i].dims,
-                    perat[i].name);
-            error->all(FLERR,errstr);
+            // this is a vector
+            dims[2] = vector_dim[perat[i].dims];
+            NCERRX( nc_def_var(ncid, perat[i].name, xtype, 3, dims,
+                               &perat[i].var), perat[i].name );
           }
         }
       }
diff --git a/src/USER-NETCDF/dump_netcdf.h b/src/USER-NETCDF/dump_netcdf.h
index f97fd58409fa952ebe44e0bcb97ccd776227d619..f74e95be386fef261c2ad1ad1cce4a615c634446 100644
--- a/src/USER-NETCDF/dump_netcdf.h
+++ b/src/USER-NETCDF/dump_netcdf.h
@@ -72,8 +72,7 @@ class DumpNetCDF : public DumpCustom {
   int ncid;
 
   int frame_dim;
-  int spatial_dim;
-  int Voigt_dim;
+  int vector_dim[DUMP_NC_MAX_DIMS];
   int atom_dim;
   int cell_spatial_dim;
   int cell_angular_dim;
diff --git a/src/USER-NETCDF/dump_netcdf_mpiio.cpp b/src/USER-NETCDF/dump_netcdf_mpiio.cpp
index 733fae10f33d1c536d7ea79e451bb4d856785434..026a6eaa3aadc7c41db1f3b4e70c917e4fa70f8e 100644
--- a/src/USER-NETCDF/dump_netcdf_mpiio.cpp
+++ b/src/USER-NETCDF/dump_netcdf_mpiio.cpp
@@ -278,6 +278,9 @@ void DumpNetCDFMPIIO::openfile()
 
   // get total number of atoms
   ntotalgr = group->count(igroup);
+  for (int i = 0; i < DUMP_NC_MPIIO_MAX_DIMS; i++) {
+    vector_dim[i] = -1;
+  }
 
   if (append_flag && !multifile && access(filecurrent, F_OK) != -1) {
     // Fixme! Perform checks if dimensions and variables conform with
@@ -294,9 +297,6 @@ void DumpNetCDFMPIIO::openfile()
 
     // dimensions
     NCERRX( ncmpi_inq_dimid(ncid, NC_FRAME_STR, &frame_dim), NC_FRAME_STR );
-    NCERRX( ncmpi_inq_dimid(ncid, NC_SPATIAL_STR, &spatial_dim),
-            NC_SPATIAL_STR );
-    NCERRX( ncmpi_inq_dimid(ncid, NC_VOIGT_STR, &Voigt_dim), NC_VOIGT_STR );
     NCERRX( ncmpi_inq_dimid(ncid, NC_ATOM_STR, &atom_dim), NC_ATOM_STR );
     NCERRX( ncmpi_inq_dimid(ncid, NC_CELL_SPATIAL_STR, &cell_spatial_dim),
             NC_CELL_SPATIAL_STR );
@@ -304,6 +304,26 @@ void DumpNetCDFMPIIO::openfile()
             NC_CELL_ANGULAR_STR );
     NCERRX( ncmpi_inq_dimid(ncid, NC_LABEL_STR, &label_dim), NC_LABEL_STR );
 
+    for (int i = 0; i < n_perat; i++) {
+      int dims = perat[i].dims;
+      if (vector_dim[dims] < 0) {
+        char dimstr[1024];
+        if (dims == 3) {
+          strcpy(dimstr, NC_SPATIAL_STR);
+        }
+        else if (dims == 6) {
+          strcpy(dimstr, NC_VOIGT_STR);
+        }
+        else {
+          sprintf(dimstr, "vec%i", dims);
+        }
+        if (dims != 1) {
+          NCERRX( ncmpi_inq_dimid(ncid, dimstr, &vector_dim[dims]),
+                  dimstr );
+        }
+      }
+    }
+
     // default variables
     NCERRX( ncmpi_inq_varid(ncid, NC_SPATIAL_STR, &spatial_var),
             NC_SPATIAL_STR );
@@ -358,10 +378,6 @@ void DumpNetCDFMPIIO::openfile()
     // dimensions
     NCERRX( ncmpi_def_dim(ncid, NC_FRAME_STR, NC_UNLIMITED, &frame_dim),
             NC_FRAME_STR );
-    NCERRX( ncmpi_def_dim(ncid, NC_SPATIAL_STR, 3, &spatial_dim),
-            NC_SPATIAL_STR );
-    NCERRX( ncmpi_def_dim(ncid, NC_VOIGT_STR, 6, &Voigt_dim),
-            NC_VOIGT_STR );
     NCERRX( ncmpi_def_dim(ncid, NC_ATOM_STR, ntotalgr, &atom_dim),
             NC_ATOM_STR );
     NCERRX( ncmpi_def_dim(ncid, NC_CELL_SPATIAL_STR, 3, &cell_spatial_dim),
@@ -371,13 +387,33 @@ void DumpNetCDFMPIIO::openfile()
     NCERRX( ncmpi_def_dim(ncid, NC_LABEL_STR, 10, &label_dim),
             NC_LABEL_STR );
 
+    for (int i = 0; i < n_perat; i++) {
+      int dims = perat[i].dims;
+      if (vector_dim[dims] < 0) {
+        char dimstr[1024];
+        if (dims == 3) {
+          strcpy(dimstr, NC_SPATIAL_STR);
+        }
+        else if (dims == 6) {
+          strcpy(dimstr, NC_VOIGT_STR);
+        }
+        else {
+          sprintf(dimstr, "vec%i", dims);
+        }
+        if (dims != 1) {
+          NCERRX( ncmpi_def_dim(ncid, dimstr, dims, &vector_dim[dims]),
+                  dimstr );
+        }
+      }
+    }
+
     // default variables
-    dims[0] = spatial_dim;
+    dims[0] = vector_dim[3];
     NCERRX( ncmpi_def_var(ncid, NC_SPATIAL_STR, NC_CHAR, 1, dims, &spatial_var),
             NC_SPATIAL_STR );
     NCERRX( ncmpi_def_var(ncid, NC_CELL_SPATIAL_STR, NC_CHAR, 1, dims,
                           &cell_spatial_var), NC_CELL_SPATIAL_STR );
-    dims[0] = spatial_dim;
+    dims[0] = vector_dim[3];
     dims[1] = label_dim;
     NCERRX( ncmpi_def_var(ncid, NC_CELL_ANGULAR_STR, NC_CHAR, 2, dims,
                           &cell_angular_var), NC_CELL_ANGULAR_STR );
@@ -399,7 +435,7 @@ void DumpNetCDFMPIIO::openfile()
     // variables specified in the input file
     dims[0] = frame_dim;
     dims[1] = atom_dim;
-    dims[2] = spatial_dim;
+    dims[2] = vector_dim[3];
 
     for (int i = 0; i < n_perat; i++) {
       nc_type xtype;
@@ -416,28 +452,15 @@ void DumpNetCDFMPIIO::openfile()
           xtype = NC_FLOAT;
       }
 
-      if (perat[i].dims == 6) {
-        // this is a tensor in Voigt notation
-        dims[2] = Voigt_dim;
-        NCERRX( ncmpi_def_var(ncid, perat[i].name, xtype, 3, dims,
-                                &perat[i].var), perat[i].name );
-      }
-      else if (perat[i].dims == 3) {
-        // this is a vector, we need to store x-, y- and z-coordinates
-        dims[2] = spatial_dim;
-        NCERRX( ncmpi_def_var(ncid, perat[i].name, xtype, 3, dims,
-                              &perat[i].var), perat[i].name );
-      }
-      else if (perat[i].dims == 1) {
+      if (perat[i].dims == 1) {
         NCERRX( ncmpi_def_var(ncid, perat[i].name, xtype, 2, dims,
                               &perat[i].var), perat[i].name );
       }
       else {
-        char errstr[1024];
-        sprintf(errstr, "%i dimensions for '%s'. Not sure how to write "
-                "this to the NetCDF trajectory file.", perat[i].dims,
-                perat[i].name);
-        error->all(FLERR,errstr);
+        // this is a vector
+        dims[2] = vector_dim[perat[i].dims];
+        NCERRX( ncmpi_def_var(ncid, perat[i].name, xtype, 3, dims,
+                              &perat[i].var), perat[i].name );
       }
     }
 
diff --git a/src/USER-NETCDF/dump_netcdf_mpiio.h b/src/USER-NETCDF/dump_netcdf_mpiio.h
index 330fa46c045b8eee761dce3958422f9db41bed1a..98ccb87927605182b4d1ffbbb1f99abe23c0e54e 100644
--- a/src/USER-NETCDF/dump_netcdf_mpiio.h
+++ b/src/USER-NETCDF/dump_netcdf_mpiio.h
@@ -71,8 +71,7 @@ class DumpNetCDFMPIIO : public DumpCustom {
   int ncid;
 
   int frame_dim;
-  int spatial_dim;
-  int Voigt_dim;
+  int vector_dim[DUMP_NC_MPIIO_MAX_DIMS];
   int atom_dim;
   int cell_spatial_dim;
   int cell_angular_dim;
diff --git a/src/USER-OMP/improper_fourier_omp.cpp b/src/USER-OMP/improper_fourier_omp.cpp
index aed04003a5eff70550f4d98830145a7557cc22b5..77dd36b64f62d014bf3335178585bed290794b37 100644
--- a/src/USER-OMP/improper_fourier_omp.cpp
+++ b/src/USER-OMP/improper_fourier_omp.cpp
@@ -239,17 +239,17 @@ void ImproperFourierOMP::add1_thr(const int i1,const int i2,
   dahy = ary-c*hry;
   dahz = arz-c*hrz;
 
-  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
-  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
-  f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
+  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
+  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
+  f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;
 
-  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
-  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
-  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
+  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
+  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
+  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;
 
-  f4[0] = dahx*rhr;
-  f4[1] = dahy*rhr;
-  f4[2] = dahz*rhr;
+  f4[0] = dahx*rhr*a;
+  f4[1] = dahy*rhr*a;
+  f4[2] = dahz*rhr*a;
 
   f1[0] = -(f2[0] + f3[0] + f4[0]);
   f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -258,30 +258,31 @@ void ImproperFourierOMP::add1_thr(const int i1,const int i2,
   // apply force to each of 4 atoms
 
   if (NEWTON_BOND || i1 < nlocal) {
-    f[i1][0] += f1[0]*a;
-    f[i1][1] += f1[1]*a;
-    f[i1][2] += f1[2]*a;
+    f[i1][0] += f1[0];
+    f[i1][1] += f1[1];
+    f[i1][2] += f1[2];
   }
 
   if (NEWTON_BOND || i2 < nlocal) {
-    f[i2][0] += f3[0]*a;
-    f[i2][1] += f3[1]*a;
-    f[i2][2] += f3[2]*a;
+    f[i2][0] += f3[0];
+    f[i2][1] += f3[1];
+    f[i2][2] += f3[2];
   }
 
   if (NEWTON_BOND || i3 < nlocal) {
-    f[i3][0] += f2[0]*a;
-    f[i3][1] += f2[1]*a;
-    f[i3][2] += f2[2]*a;
+    f[i3][0] += f2[0];
+    f[i3][1] += f2[1];
+    f[i3][2] += f2[2];
   }
 
   if (NEWTON_BOND || i4 < nlocal) {
-    f[i4][0] += f4[0]*a;
-    f[i4][1] += f4[1]*a;
-    f[i4][2] += f4[2]*a;
+    f[i4][0] += f4[0];
+    f[i4][1] += f4[1];
+    f[i4][2] += f4[2];
   }
 
   if (EVFLAG)
-    ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f3,f4,
-                 vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,thr);
+    ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f2,f4,
+                 -vb1x,-vb1y,-vb1z,vb2x-vb1x,vb2y-vb1y,vb2z-vb1z,vb3x-vb2x,vb3y-vb2y,vb3z-vb2z,thr);
+
 }
diff --git a/src/USER-OMP/improper_umbrella_omp.cpp b/src/USER-OMP/improper_umbrella_omp.cpp
index dc11f24a4de084b07b666c08b76271d135218115..69d41176c64287c55a3663f4db259df03bd5b319 100644
--- a/src/USER-OMP/improper_umbrella_omp.cpp
+++ b/src/USER-OMP/improper_umbrella_omp.cpp
@@ -212,17 +212,17 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
     dahy = ary-c*hry;
     dahz = arz-c*hrz;
 
-    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
-    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
-    f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
+    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
+    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
+    f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;
 
-    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
-    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
-    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
+    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
+    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
+    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;
 
-    f4[0] = dahx*rhr;
-    f4[1] = dahy*rhr;
-    f4[2] = dahz*rhr;
+    f4[0] = dahx*rhr*a;
+    f4[1] = dahy*rhr*a;
+    f4[2] = dahz*rhr*a;
 
     f1[0] = -(f2[0] + f3[0] + f4[0]);
     f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -231,27 +231,27 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
     // apply force to each of 4 atoms
 
     if (NEWTON_BOND || i1 < nlocal) {
-      f[i1].x += f1[0]*a;
-      f[i1].y += f1[1]*a;
-      f[i1].z += f1[2]*a;
+      f[i1].x += f1[0];
+      f[i1].y += f1[1];
+      f[i1].z += f1[2];
     }
 
     if (NEWTON_BOND || i2 < nlocal) {
-      f[i2].x += f3[0]*a;
-      f[i2].y += f3[1]*a;
-      f[i2].z += f3[2]*a;
+      f[i2].x += f3[0];
+      f[i2].y += f3[1];
+      f[i2].z += f3[2];
     }
 
     if (NEWTON_BOND || i3 < nlocal) {
-      f[i3].x += f2[0]*a;
-      f[i3].y += f2[1]*a;
-      f[i3].z += f2[2]*a;
+      f[i3].x += f2[0];
+      f[i3].y += f2[1];
+      f[i3].z += f2[2];
     }
 
     if (NEWTON_BOND || i4 < nlocal) {
-      f[i4].x += f4[0]*a;
-      f[i4].y += f4[1]*a;
-      f[i4].z += f4[2]*a;
+      f[i4].x += f4[0];
+      f[i4].y += f4[1];
+      f[i4].z += f4[2];
     }
 
     if (EVFLAG) {
@@ -270,7 +270,7 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
       vb3y = x[i4].y - x[i3].y;
       vb3z = x[i4].z - x[i3].z;
 
-      ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f3,f4,
+      ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f2,f4,
                    vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,thr);
     }
   }
diff --git a/src/USER-YAFF/README b/src/USER-YAFF/README
new file mode 100644
index 0000000000000000000000000000000000000000..4fabe6739066591b0cbc1de0cf0bfbed9afd16f8
--- /dev/null
+++ b/src/USER-YAFF/README
@@ -0,0 +1,8 @@
+This package implements the styles that are needed to use typical force fields
+generated by QuickFF for the simulation of metal-organic frameworks. The
+QuickFF methodology is detailed in following papers:
+    Vanduyfhuys et al., J. Comput. Chem., 36 (13), 1015-1027 (2015) http://dx.doi.org/10.1002/jcc.23877
+    Vanduyfhuys et al., J. Comput. Chem., 39 (16), 999-1011 (2018) http://dx.doi.org/10.1002/jcc.25173
+The corresponding software package can be found on http://molmod.github.io/QuickFF
+
+
diff --git a/src/USER-YAFF/angle_cross.cpp b/src/USER-YAFF/angle_cross.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a31931a23b429078628b01ba4c9af3d0a0875667
--- /dev/null
+++ b/src/USER-YAFF/angle_cross.cpp
@@ -0,0 +1,344 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande
+------------------------------------------------------------------------- */
+
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+#include "angle_cross.h"
+#include "atom.h"
+#include "neighbor.h"
+#include "domain.h"
+#include "comm.h"
+#include "force.h"
+#include "math_const.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace MathConst;
+
+#define SMALL 0.001
+
+/* ---------------------------------------------------------------------- */
+
+AngleCross::AngleCross(LAMMPS *lmp) : Angle(lmp) {}
+
+/* ---------------------------------------------------------------------- */
+
+AngleCross::~AngleCross()
+{
+  if (copymode) return;
+
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(kss);
+    memory->destroy(kbs0);
+    memory->destroy(kbs1);
+    memory->destroy(r00);
+    memory->destroy(r01);
+    memory->destroy(theta0);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void AngleCross::compute(int eflag, int vflag)
+{
+  int i1,i2,i3,n,type;
+  double delx1,dely1,delz1,delx2,dely2,delz2;
+  double eangle,f1[3],f3[3];
+  double dtheta,dtheta2,dtheta3,dtheta4,de_angle;
+  double dr1,dr2,tk1,tk2,aa1,aa2,aa11,aa12,aa21,aa22;
+  double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22,b1,b2;
+  double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22;
+
+  eangle = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int **anglelist = neighbor->anglelist;
+  int nanglelist = neighbor->nanglelist;
+  int nlocal = atom->nlocal;
+  int newton_bond = force->newton_bond;
+
+  for (n = 0; n < nanglelist; n++) {
+    i1 = anglelist[n][0];
+    i2 = anglelist[n][1];
+    i3 = anglelist[n][2];
+    type = anglelist[n][3];
+
+    // 1st bond
+
+    delx1 = x[i1][0] - x[i2][0];
+    dely1 = x[i1][1] - x[i2][1];
+    delz1 = x[i1][2] - x[i2][2];
+
+    rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
+    r1 = sqrt(rsq1);
+
+    // 2nd bond
+
+    delx2 = x[i3][0] - x[i2][0];
+    dely2 = x[i3][1] - x[i2][1];
+    delz2 = x[i3][2] - x[i2][2];
+
+    rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+    r2 = sqrt(rsq2);
+
+    // angle (cos and sin)
+
+    c = delx1*delx2 + dely1*dely2 + delz1*delz2;
+    c /= r1*r2;
+
+    if (c > 1.0) c = 1.0;
+    if (c < -1.0) c = -1.0;
+
+    s = sqrt(1.0 - c*c);
+    if (s < SMALL) s = SMALL;
+    s = 1.0/s;
+
+    // force & energy for bond-bond term
+    dr1 = r1 - r00[type];
+    dr2 = r2 - r01[type];
+    tk1 = kss[type] * dr1;
+    tk2 = kss[type] * dr2;
+
+    f1[0] = -delx1*tk2/r1;
+    f1[1] = -dely1*tk2/r1;
+    f1[2] = -delz1*tk2/r1;
+
+    f3[0] = -delx2*tk1/r2;
+    f3[1] = -dely2*tk1/r2;
+    f3[2] = -delz2*tk1/r2;
+
+    if (eflag) eangle = kss[type]*dr1*dr2;
+
+    // force & energy for bond-angle term
+    dtheta = acos(c) - theta0[type];
+
+    aa1 = s * dr1 * kbs0[type];
+    aa2 = s * dr2 * kbs1[type];
+
+    aa11 = aa1 * c / rsq1;
+    aa12 = -aa1 / (r1 * r2);
+    aa21 = aa2 * c / rsq1;
+    aa22 = -aa2 / (r1 * r2);
+
+    vx11 = (aa11 * delx1) + (aa12 * delx2);
+    vx12 = (aa21 * delx1) + (aa22 * delx2);
+    vy11 = (aa11 * dely1) + (aa12 * dely2);
+    vy12 = (aa21 * dely1) + (aa22 * dely2);
+    vz11 = (aa11 * delz1) + (aa12 * delz2);
+    vz12 = (aa21 * delz1) + (aa22 * delz2);
+
+    aa11 = aa1 * c / rsq2;
+    aa21 = aa2 * c / rsq2;
+
+    vx21 = (aa11 * delx2) + (aa12 * delx1);
+    vx22 = (aa21 * delx2) + (aa22 * delx1);
+    vy21 = (aa11 * dely2) + (aa12 * dely1);
+    vy22 = (aa21 * dely2) + (aa22 * dely1);
+    vz21 = (aa11 * delz2) + (aa12 * delz1);
+    vz22 = (aa21 * delz2) + (aa22 * delz1);
+
+    b1 = kbs0[type] * dtheta / r1;
+    b2 = kbs1[type] * dtheta / r2;
+
+    f1[0] -= vx11 + b1*delx1 + vx12;
+    f1[1] -= vy11 + b1*dely1 + vy12;
+    f1[2] -= vz11 + b1*delz1 + vz12;
+
+    f3[0] -= vx21 + b2*delx2 + vx22;
+    f3[1] -= vy21 + b2*dely2 + vy22;
+    f3[2] -= vz21 + b2*delz2 + vz22;
+
+    if (eflag) eangle += kbs0[type]*dr1*dtheta + kbs1[type]*dr2*dtheta;
+
+    // apply force to each of 3 atoms
+
+    if (newton_bond || i1 < nlocal) {
+      f[i1][0] += f1[0];
+      f[i1][1] += f1[1];
+      f[i1][2] += f1[2];
+    }
+
+    if (newton_bond || i2 < nlocal) {
+      f[i2][0] -= f1[0] + f3[0];
+      f[i2][1] -= f1[1] + f3[1];
+      f[i2][2] -= f1[2] + f3[2];
+    }
+
+    if (newton_bond || i3 < nlocal) {
+      f[i3][0] += f3[0];
+      f[i3][1] += f3[1];
+      f[i3][2] += f3[2];
+    }
+
+    if (evflag) ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3,
+                         delx1,dely1,delz1,delx2,dely2,delz2);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void AngleCross::allocate()
+{
+  allocated = 1;
+  int n = atom->nangletypes;
+
+  memory->create(kss,n+1,"angle:kss");
+  memory->create(kbs0,n+1,"angle:kbs0");
+  memory->create(kbs1,n+1,"angle:kbs1");
+  memory->create(r00,n+1,"angle:r00");
+  memory->create(r01,n+1,"angle:r01");
+  memory->create(theta0,n+1,"angle:theta0");
+  memory->create(setflag,n+1,"angle:setflag");
+
+  for (int i = 1; i <= n; i++)
+    setflag[i] = 0;
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs
+------------------------------------------------------------------------- */
+
+void AngleCross::coeff(int narg, char **arg)
+{
+  if (narg != 7) error->all(FLERR,"Incorrect args for angle coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi;
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
+
+  int count = 0;
+
+    double kss_one = force->numeric(FLERR,arg[1]);
+    double kbs0_one = force->numeric(FLERR,arg[2]);
+    double kbs1_one = force->numeric(FLERR,arg[3]);
+    double r0_one = force->numeric(FLERR,arg[4]);
+    double r1_one = force->numeric(FLERR,arg[5]);
+    double theta0_one = force->numeric(FLERR,arg[6]);
+
+    for (int i = ilo; i <= ihi; i++) {
+      kss[i] = kss_one;
+      kbs0[i] = kbs0_one;
+      kbs1[i] = kbs1_one;
+      r00[i] = r0_one;
+      r01[i] = r1_one;
+      // Convert theta0 from degrees to radians
+      theta0[i] = theta0_one*MY_PI/180.0;
+      setflag[i] = 1;
+      count++;
+    }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients");
+}
+
+/* ---------------------------------------------------------------------- */
+
+double AngleCross::equilibrium_angle(int i)
+{
+  return theta0[i];
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes out coeffs to restart file
+------------------------------------------------------------------------- */
+
+void AngleCross::write_restart(FILE *fp)
+{
+  fwrite(&kss[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&kbs0[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&kbs1[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&r00[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&r01[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&theta0[1],sizeof(double),atom->nangletypes,fp);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 reads coeffs from restart file, bcasts them
+------------------------------------------------------------------------- */
+
+void AngleCross::read_restart(FILE *fp)
+{
+  allocate();
+
+  if (comm->me == 0) {
+    fread(&kss[1],sizeof(double),atom->nangletypes,fp);
+    fread(&kbs0[1],sizeof(double),atom->nangletypes,fp);
+    fread(&kbs1[1],sizeof(double),atom->nangletypes,fp);
+    fread(&r00[1],sizeof(double),atom->nangletypes,fp);
+    fread(&r01[1],sizeof(double),atom->nangletypes,fp);
+    fread(&theta0[1],sizeof(double),atom->nangletypes,fp);
+  }
+
+  MPI_Bcast(&kss[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&kbs0[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&kbs1[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&r00[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&r01[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&theta0[1],atom->nangletypes,MPI_DOUBLE,0,world);
+
+  for (int i = 1; i <= atom->nangletypes; i++) setflag[i] = 1;
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void AngleCross::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->nangletypes; i++)
+    fprintf(fp,"%d %g %g %g %g\n",
+            i,kss[i],kbs0[i],kbs1[i],r00[i],r01[i],theta0[i]/MY_PI*180.0);
+}
+
+/* ---------------------------------------------------------------------- */
+
+double AngleCross::single(int type, int i1, int i2, int i3)
+{
+  double **x = atom->x;
+
+  double delx1 = x[i1][0] - x[i2][0];
+  double dely1 = x[i1][1] - x[i2][1];
+  double delz1 = x[i1][2] - x[i2][2];
+  domain->minimum_image(delx1,dely1,delz1);
+  double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1);
+
+  double delx2 = x[i3][0] - x[i2][0];
+  double dely2 = x[i3][1] - x[i2][1];
+  double delz2 = x[i3][2] - x[i2][2];
+  domain->minimum_image(delx2,dely2,delz2);
+  double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2);
+
+  double c = delx1*delx2 + dely1*dely2 + delz1*delz2;
+  c /= r1*r2;
+  if (c > 1.0) c = 1.0;
+  if (c < -1.0) c = -1.0;
+
+  double s = sqrt(1.0 - c*c);
+  if (s < SMALL) s = SMALL;
+  s = 1.0/s;
+
+  double dtheta = acos(c) - theta0[type];
+  double dr1 = r1 - r00[type];
+  double dr2 = r2 - r01[type];
+  double energy = kss[type]*dr1*dr2+kbs0[type]*dr1*dtheta + kbs1[type]*dr2*dtheta;
+  return energy;
+}
diff --git a/src/USER-YAFF/angle_cross.h b/src/USER-YAFF/angle_cross.h
new file mode 100644
index 0000000000000000000000000000000000000000..7709c104145a4ebad853814dcadf792e9e0f5c3e
--- /dev/null
+++ b/src/USER-YAFF/angle_cross.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef ANGLE_CLASS
+
+AngleStyle(cross,AngleCross)
+
+#else
+
+#ifndef LMP_ANGLE_CROSS_H
+#define LMP_ANGLE_CROSS_H
+
+#include <stdio.h>
+#include "angle.h"
+
+namespace LAMMPS_NS {
+
+class AngleCross : public Angle {
+ public:
+  AngleCross(class LAMMPS *);
+  virtual ~AngleCross();
+  virtual void compute(int, int);
+  void coeff(int, char **);
+  double equilibrium_angle(int);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+  void write_data(FILE *);
+  double single(int, int, int, int);
+
+ protected:
+  double *kss,*kbs0,*kbs1,*r00,*r01,*theta0;
+
+  void allocate();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Incorrect args for angle coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+*/
diff --git a/src/USER-YAFF/angle_mm3.cpp b/src/USER-YAFF/angle_mm3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ccd9b2e20ead2ec13815f3a06270805d6b316013
--- /dev/null
+++ b/src/USER-YAFF/angle_mm3.cpp
@@ -0,0 +1,288 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande
+------------------------------------------------------------------------- */
+
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+#include "angle_mm3.h"
+#include "atom.h"
+#include "neighbor.h"
+#include "domain.h"
+#include "comm.h"
+#include "force.h"
+#include "math_const.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace MathConst;
+
+#define SMALL 0.001
+
+/* ---------------------------------------------------------------------- */
+
+AngleMM3::AngleMM3(LAMMPS *lmp) : Angle(lmp) {}
+
+/* ---------------------------------------------------------------------- */
+
+AngleMM3::~AngleMM3()
+{
+  if (copymode) return;
+
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(theta0);
+    memory->destroy(k2);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void AngleMM3::compute(int eflag, int vflag)
+{
+  int i1,i2,i3,n,type;
+  double delx1,dely1,delz1,delx2,dely2,delz2;
+  double eangle,f1[3],f3[3];
+  double dtheta,dtheta2,dtheta3,dtheta4,de_angle;
+  double dr1,dr2,tk1,tk2,aa1,aa2,aa11,aa12,aa21,aa22;
+  double rsq1,rsq2,r1,r2,c,s,a,a11,a12,a22,b1,b2;
+  double vx11,vx12,vy11,vy12,vz11,vz12,vx21,vx22,vy21,vy22,vz21,vz22;
+
+  eangle = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int **anglelist = neighbor->anglelist;
+  int nanglelist = neighbor->nanglelist;
+  int nlocal = atom->nlocal;
+  int newton_bond = force->newton_bond;
+
+  for (n = 0; n < nanglelist; n++) {
+    i1 = anglelist[n][0];
+    i2 = anglelist[n][1];
+    i3 = anglelist[n][2];
+    type = anglelist[n][3];
+
+    // 1st bond
+
+    delx1 = x[i1][0] - x[i2][0];
+    dely1 = x[i1][1] - x[i2][1];
+    delz1 = x[i1][2] - x[i2][2];
+
+    rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
+    r1 = sqrt(rsq1);
+
+    // 2nd bond
+
+    delx2 = x[i3][0] - x[i2][0];
+    dely2 = x[i3][1] - x[i2][1];
+    delz2 = x[i3][2] - x[i2][2];
+
+    rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+    r2 = sqrt(rsq2);
+
+    // angle (cos and sin)
+
+    c = delx1*delx2 + dely1*dely2 + delz1*delz2;
+    c /= r1*r2;
+
+    if (c > 1.0) c = 1.0;
+    if (c < -1.0) c = -1.0;
+
+    s = sqrt(1.0 - c*c);
+    if (s < SMALL) s = SMALL;
+    s = 1.0/s;
+
+    // force & energy for angle term
+
+    dtheta = acos(c) - theta0[type];
+    dtheta2 = dtheta*dtheta;
+    dtheta3 = dtheta2*dtheta;
+    dtheta4 = dtheta3*dtheta;
+    // MM3 angle term, taking into account that dtheta is expressed in rad
+    de_angle = 2.0*k2[type]*dtheta*(1.0-1.203211*dtheta+0.367674*dtheta2-0.3239159*dtheta3+0.711270*dtheta4);
+
+    a = -de_angle*s;
+    a11 = a*c / rsq1;
+    a12 = -a / (r1*r2);
+    a22 = a*c / rsq2;
+
+    f1[0] = a11*delx1 + a12*delx2;
+    f1[1] = a11*dely1 + a12*dely2;
+    f1[2] = a11*delz1 + a12*delz2;
+
+    f3[0] = a22*delx2 + a12*delx1;
+    f3[1] = a22*dely2 + a12*dely1;
+    f3[2] = a22*delz2 + a12*delz1;
+    // MM3 angle term, taking into account that dtheta is expressed in rad
+    if (eflag) eangle = k2[type]*dtheta2*(1.0-0.802141*dtheta+0.183837*dtheta2-0.131664*dtheta3+0.237090*dtheta4);
+
+    // apply force to each of 3 atoms
+
+    if (newton_bond || i1 < nlocal) {
+      f[i1][0] += f1[0];
+      f[i1][1] += f1[1];
+      f[i1][2] += f1[2];
+    }
+
+    if (newton_bond || i2 < nlocal) {
+      f[i2][0] -= f1[0] + f3[0];
+      f[i2][1] -= f1[1] + f3[1];
+      f[i2][2] -= f1[2] + f3[2];
+    }
+
+    if (newton_bond || i3 < nlocal) {
+      f[i3][0] += f3[0];
+      f[i3][1] += f3[1];
+      f[i3][2] += f3[2];
+    }
+
+    if (evflag) ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3,
+                         delx1,dely1,delz1,delx2,dely2,delz2);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void AngleMM3::allocate()
+{
+  allocated = 1;
+  int n = atom->nangletypes;
+
+  memory->create(setflag,n+1,"angle:setflag");
+  memory->create(k2,n+1,"angle:k2");
+  memory->create(theta0,n+1,"angle:theta0");
+  for (int i = 1; i <= n; i++)
+    setflag[i] = 0;
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs
+   else -> Angle coeffs
+------------------------------------------------------------------------- */
+
+void AngleMM3::coeff(int narg, char **arg)
+{
+  if (narg != 3) error->all(FLERR,"Incorrect args for angle coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi;
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
+
+  int count = 0;
+
+  double k2_one = force->numeric(FLERR,arg[1]);
+  double theta0_one = force->numeric(FLERR,arg[2]);
+
+  // convert theta0 from degrees to radians
+
+  for (int i = ilo; i <= ihi; i++) {
+    k2[i] = k2_one;
+    theta0[i] = theta0_one/180.0 * MY_PI;
+    setflag[i] = 1;
+    count++;
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients");
+
+}
+
+/* ---------------------------------------------------------------------- */
+
+double AngleMM3::equilibrium_angle(int i)
+{
+  return theta0[i];
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes out coeffs to restart file
+------------------------------------------------------------------------- */
+
+void AngleMM3::write_restart(FILE *fp)
+{
+  fwrite(&k2[1],sizeof(double),atom->nangletypes,fp);
+  fwrite(&theta0[1],sizeof(double),atom->nangletypes,fp);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 reads coeffs from restart file, bcasts them
+------------------------------------------------------------------------- */
+
+void AngleMM3::read_restart(FILE *fp)
+{
+  allocate();
+
+  if (comm->me == 0) {
+    fread(&k2[1],sizeof(double),atom->nangletypes,fp);
+    fread(&theta0[1],sizeof(double),atom->nangletypes,fp);
+  }
+
+  MPI_Bcast(&k2[1],atom->nangletypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&theta0[1],atom->nangletypes,MPI_DOUBLE,0,world);
+
+  for (int i = 1; i <= atom->nangletypes; i++) setflag[i] = 1;
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void AngleMM3::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->nangletypes; i++)
+    fprintf(fp,"%d %g %g\n",
+            i,k2[i],theta0[i]/MY_PI*180.0);
+}
+
+/* ---------------------------------------------------------------------- */
+
+double AngleMM3::single(int type, int i1, int i2, int i3)
+{
+  double **x = atom->x;
+
+  double delx1 = x[i1][0] - x[i2][0];
+  double dely1 = x[i1][1] - x[i2][1];
+  double delz1 = x[i1][2] - x[i2][2];
+  domain->minimum_image(delx1,dely1,delz1);
+  double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1);
+
+  double delx2 = x[i3][0] - x[i2][0];
+  double dely2 = x[i3][1] - x[i2][1];
+  double delz2 = x[i3][2] - x[i2][2];
+  domain->minimum_image(delx2,dely2,delz2);
+  double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2);
+
+  double c = delx1*delx2 + dely1*dely2 + delz1*delz2;
+  c /= r1*r2;
+  if (c > 1.0) c = 1.0;
+  if (c < -1.0) c = -1.0;
+
+  double s = sqrt(1.0 - c*c);
+  if (s < SMALL) s = SMALL;
+  s = 1.0/s;
+
+  double dtheta = acos(c) - theta0[type];
+  double dtheta2 = dtheta*dtheta;
+  double dtheta3 = dtheta2*dtheta;
+  double dtheta4 = dtheta3*dtheta;
+
+  double energy = k2[type]*dtheta2*(1.0-0.802141*dtheta+0.183837*dtheta2-0.131664*dtheta3+0.237090*dtheta4);
+
+  return energy;
+}
diff --git a/src/USER-YAFF/angle_mm3.h b/src/USER-YAFF/angle_mm3.h
new file mode 100644
index 0000000000000000000000000000000000000000..2d19b4d1b464e6e534dcfa9e0a0acafc0b563581
--- /dev/null
+++ b/src/USER-YAFF/angle_mm3.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef ANGLE_CLASS
+
+AngleStyle(mm3,AngleMM3)
+
+#else
+
+#ifndef LMP_ANGLE_MM3_H
+#define LMP_ANGLE_MM3_H
+
+#include <stdio.h>
+#include "angle.h"
+
+namespace LAMMPS_NS {
+
+class AngleMM3 : public Angle {
+ public:
+  AngleMM3(class LAMMPS *);
+  virtual ~AngleMM3();
+  virtual void compute(int, int);
+  void coeff(int, char **);
+  double equilibrium_angle(int);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+  void write_data(FILE *);
+  double single(int, int, int, int);
+
+ protected:
+  double *theta0,*k2;
+
+  void allocate();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Incorrect args for angle coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+*/
diff --git a/src/USER-YAFF/bond_mm3.cpp b/src/USER-YAFF/bond_mm3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f0e4197c6bd6029c12d2e1c63b61412b60956333
--- /dev/null
+++ b/src/USER-YAFF/bond_mm3.cpp
@@ -0,0 +1,220 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande
+------------------------------------------------------------------------- */
+
+#include <math.h>
+#include <stdlib.h>
+#include "bond_mm3.h"
+#include "atom.h"
+#include "neighbor.h"
+#include "domain.h"
+#include "comm.h"
+#include "force.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+/* ---------------------------------------------------------------------- */
+
+BondMM3::BondMM3(LAMMPS *lmp) : Bond(lmp) {}
+
+/* ---------------------------------------------------------------------- */
+
+BondMM3::~BondMM3()
+{
+  if (copymode) return;
+
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(r0);
+    memory->destroy(k2);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void BondMM3::compute(int eflag, int vflag)
+{
+  int i1,i2,n,type;
+  double delx,dely,delz,ebond,fbond;
+  double rsq,r,dr,dr2,de_bond,K3,K4;
+
+  ebond = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int **bondlist = neighbor->bondlist;
+  int nbondlist = neighbor->nbondlist;
+  int nlocal = atom->nlocal;
+  int newton_bond = force->newton_bond;
+
+  /*
+  E = K(r-r0)^2 [1-2.55*(r-r0)+(7/12)*2.55^(2)*(r-r0)^2]
+  with -2.55 in angstrom^(-1) and (7/12)*2.55^(2) in angstrom^(-2)
+  These prefactors are converted here to the correct units
+  */
+  K3 = -2.55/force->angstrom;
+  K4 = 7.0/12.0*2.55*2.55/force->angstrom/force->angstrom;
+
+  for (n = 0; n < nbondlist; n++) {
+    i1 = bondlist[n][0];
+    i2 = bondlist[n][1];
+    type = bondlist[n][2];
+
+    delx = x[i1][0] - x[i2][0];
+    dely = x[i1][1] - x[i2][1];
+    delz = x[i1][2] - x[i2][2];
+
+    rsq = delx*delx + dely*dely + delz*delz;
+    r = sqrt(rsq);
+    dr = r - r0[type];
+    dr2 = dr*dr;
+
+    // force & energy
+
+    de_bond = 2.0*k2[type]*dr*(1.0 + 1.5*K3*dr + 2.0*K4*dr2);
+    if (r > 0.0) fbond = -de_bond/r;
+    else fbond = 0.0;
+
+    if (eflag) ebond = k2[type]*dr2*(1.0+K3*dr+K4*dr2);
+
+    // apply force to each of 2 atoms
+
+    if (newton_bond || i1 < nlocal) {
+      f[i1][0] += delx*fbond;
+      f[i1][1] += dely*fbond;
+      f[i1][2] += delz*fbond;
+    }
+
+    if (newton_bond || i2 < nlocal) {
+      f[i2][0] -= delx*fbond;
+      f[i2][1] -= dely*fbond;
+      f[i2][2] -= delz*fbond;
+    }
+
+    if (evflag) ev_tally(i1,i2,nlocal,newton_bond,ebond,fbond,delx,dely,delz);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void BondMM3::allocate()
+{
+  allocated = 1;
+  int n = atom->nbondtypes;
+
+  memory->create(r0,n+1,"bond:r0");
+  memory->create(k2,n+1,"bond:k2");
+
+  memory->create(setflag,n+1,"bond:setflag");
+  for (int i = 1; i <= n; i++) setflag[i] = 0;
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs from one line in input script or data file
+------------------------------------------------------------------------- */
+
+void BondMM3::coeff(int narg, char **arg)
+{
+  if (narg != 3) error->all(FLERR,"Incorrect args for bond coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi;
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
+
+  double k2_one = force->numeric(FLERR,arg[1]);
+  double r0_one = force->numeric(FLERR,arg[2]);
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    k2[i] = k2_one;
+    r0[i] = r0_one;
+    setflag[i] = 1;
+    count++;
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for bond coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   return an equilbrium bond length
+------------------------------------------------------------------------- */
+
+double BondMM3::equilibrium_distance(int i)
+{
+  return r0[i];
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes out coeffs to restart file
+------------------------------------------------------------------------- */
+
+void BondMM3::write_restart(FILE *fp)
+{
+  fwrite(&k2[1],sizeof(double),atom->nbondtypes,fp);
+  fwrite(&r0[1],sizeof(double),atom->nbondtypes,fp);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 reads coeffs from restart file, bcasts them
+------------------------------------------------------------------------- */
+
+void BondMM3::read_restart(FILE *fp)
+{
+  allocate();
+
+  if (comm->me == 0) {
+    fread(&k2[1],sizeof(double),atom->nbondtypes,fp);
+    fread(&r0[1],sizeof(double),atom->nbondtypes,fp);
+  }
+  MPI_Bcast(&k2[1],atom->nbondtypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&r0[1],atom->nbondtypes,MPI_DOUBLE,0,world);
+
+  for (int i = 1; i <= atom->nbondtypes; i++) setflag[i] = 1;
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void BondMM3::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->nbondtypes; i++)
+    fprintf(fp,"%d %g %g\n",i,k2[i],r0[i]);
+}
+
+/* ---------------------------------------------------------------------- */
+
+double BondMM3::single(int type, double rsq, int i, int j, double &fforce)
+{
+  /*
+  E = K(r-r0)^2 [1-2.55*(r-r0)+(7/12)*2.55^(2)*(r-r0)^2]
+  with -2.55 in angstrom^(-1) and (7/12)*2.55^(2) in angstrom^(-2)
+  These prefactors are converted here to the correct units
+  */
+  double K3 = -2.55/force->angstrom;
+  double K4 = 7.0/12.0*2.55*2.55/force->angstrom/force->angstrom;
+  double r = sqrt(rsq);
+  double dr = r - r0[type];
+  double dr2 = dr*dr;
+  double de_bond = 2.0*k2[type]*dr*(1.0 + 1.5*K3*dr + 2.0*K4*dr2);
+  if (r > 0.0) fforce = -de_bond/r;
+  else fforce = 0.0;
+  return k2[type]*dr2*(1.0+K3*dr+K4*dr2);
+}
diff --git a/src/USER-YAFF/bond_mm3.h b/src/USER-YAFF/bond_mm3.h
new file mode 100644
index 0000000000000000000000000000000000000000..9711d895290e18aa40a4cfb6e35695673e176f44
--- /dev/null
+++ b/src/USER-YAFF/bond_mm3.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef BOND_CLASS
+
+BondStyle(mm3,BondMM3)
+
+#else
+
+#ifndef LMP_BOND_MM3_H
+#define LMP_BOND_MM3_H
+
+#include <stdio.h>
+#include "bond.h"
+
+namespace LAMMPS_NS {
+
+class BondMM3 : public Bond {
+ public:
+  BondMM3(class LAMMPS *);
+  virtual ~BondMM3();
+  virtual void compute(int, int);
+  void coeff(int, char **);
+  double equilibrium_distance(int);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+  void write_data(FILE *);
+  double single(int, double, int, int, double &);
+
+ protected:
+  double *r0,*k2;
+
+  void allocate();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Incorrect args for bond coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+*/
diff --git a/src/USER-YAFF/improper_distharm.cpp b/src/USER-YAFF/improper_distharm.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9a54afed9a473c0740693bb13cbe311b846215af
--- /dev/null
+++ b/src/USER-YAFF/improper_distharm.cpp
@@ -0,0 +1,269 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande, heavily based on the
+   improper_distance code by Paolo Raiteri (Curtin University)
+------------------------------------------------------------------------- */
+
+#include <mpi.h>
+#include <math.h>
+#include <stdlib.h>
+#include "improper_distharm.h"
+#include "atom.h"
+#include "comm.h"
+#include "neighbor.h"
+#include "domain.h"
+#include "force.h"
+#include "update.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+#define TOLERANCE 0.05
+#define SMALL     0.001
+
+/* ---------------------------------------------------------------------- */
+
+ImproperDistHarm::ImproperDistHarm(LAMMPS *lmp) : Improper(lmp) {}
+
+/* ---------------------------------------------------------------------- */
+
+ImproperDistHarm::~ImproperDistHarm()
+{
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(k);
+    memory->destroy(chi);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ImproperDistHarm::compute(int eflag, int vflag)
+{
+  int i1,i2,i3,i4,n,type;
+  double xab, yab, zab; // bond 1-2
+  double xac, yac, zac; // bond 1-3
+  double xad, yad, zad; // bond 1-4
+  double xbc, ybc, zbc; // bond 2-3
+  double xbd, ybd, zbd; // bond 2-4
+  double xcd, ycd, zcd; // bond 3-4
+  double xna, yna, zna, rna; // normal
+  double da;
+
+  double eimproper,f1[3],f2[3],f3[3],f4[3];
+  double domega,a;
+
+  eimproper = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int **improperlist = neighbor->improperlist;
+  int nimproperlist = neighbor->nimproperlist;
+  int nlocal = atom->nlocal;
+  int newton_bond = force->newton_bond;
+
+  for (n = 0; n < nimproperlist; n++) {
+    i1 = improperlist[n][0];
+    i2 = improperlist[n][1];
+    i3 = improperlist[n][2];
+    i4 = improperlist[n][3];
+    type = improperlist[n][4];
+
+    // geometry of 4-body
+    // 4 is the central atom
+    // 1-2-3 are ment to be equivalent
+    // I need the bonds between 2-3 and 3-4 to get the plane normal
+    // Then I need the bond 1-4 to project it onto the normal to the plane
+
+    // bond 1->2
+    xab = x[i2][0] - x[i1][0];
+    yab = x[i2][1] - x[i1][1];
+    zab = x[i2][2] - x[i1][2];
+    domain->minimum_image(xab,yab,zab);
+
+    // bond 1->3
+    xac = x[i3][0] - x[i1][0];
+    yac = x[i3][1] - x[i1][1];
+    zac = x[i3][2] - x[i1][2];
+    domain->minimum_image(xac,yac,zac);
+
+    // bond 1->4
+    xad = x[i4][0] - x[i1][0];
+    yad = x[i4][1] - x[i1][1];
+    zad = x[i4][2] - x[i1][2];
+    domain->minimum_image(xad,yad,zad);
+
+    // bond 2-3
+    xbc = x[i3][0] - x[i2][0];
+    ybc = x[i3][1] - x[i2][1];
+    zbc = x[i3][2] - x[i2][2];
+    domain->minimum_image(xbc,ybc,zbc);
+
+    // bond 2-4
+    xbd = x[i4][0] - x[i2][0];
+    ybd = x[i4][1] - x[i2][1];
+    zbd = x[i4][2] - x[i2][2];
+    domain->minimum_image(xbd,ybd,zbd);
+
+    // bond 3-4
+    xcd = x[i4][0] - x[i3][0];
+    ycd = x[i4][1] - x[i3][1];
+    zcd = x[i4][2] - x[i3][2];
+    domain->minimum_image(xcd,ycd,zcd);
+
+    xna =   ybc*zcd - zbc*ycd;
+    yna = -(xbc*zcd - zbc*xcd);
+    zna =   xbc*ycd - ybc*xcd;
+    rna = 1.0 / sqrt(xna*xna+yna*yna+zna*zna);
+    xna *= rna;
+    yna *= rna;
+    zna *= rna;
+
+    da = -(xna*xad + yna*yad + zna*zad);
+
+
+    domega = k[type]*(da - chi[type])*(da - chi[type]);
+    a =  2.0* k[type]*(da - chi[type]);
+
+    if (eflag) eimproper = domega;
+
+    f1[0] = a*( -xna);
+    f1[1] = a*( -yna);
+    f1[2] = a*( -zna);
+    f4[0] = a*(  xna);
+    f4[1] = a*(  yna);
+    f4[2] = a*(  zna);
+
+    f2[0] =  a*( yad*zcd - zad*ycd )*rna + a*da*rna*( yna*zcd - zna*ycd);
+    f2[1] =  a*( zad*xcd - xad*zcd )*rna + a*da*rna*( zna*xcd - xna*zcd);
+    f2[2] =  a*( xad*ycd - yad*xcd )*rna + a*da*rna*( xna*ycd - yna*xcd);
+
+    f3[0] = - a*( yad*zcd - zad*ycd )*rna - a*da*rna*( yna*zcd - zna*ycd);
+    f3[1] = - a*( zad*xcd - xad*zcd )*rna - a*da*rna*( zna*xcd - xna*zcd);
+    f3[2] = - a*( xad*ycd - yad*xcd )*rna - a*da*rna*( xna*ycd - yna*xcd);
+
+    f3[0] +=  -a*( yad*zbc - zad*ybc )*rna - a*da*rna*( yna*zbc - zna*ybc);
+    f3[1] +=  -a*( zad*xbc - xad*zbc )*rna - a*da*rna*( zna*xbc - xna*zbc);
+    f3[2] +=  -a*( xad*ybc - yad*xbc )*rna - a*da*rna*( xna*ybc - yna*xbc);
+    f4[0] += a*( yad*zbc - zad*ybc )*rna + a*da*rna*( yna*zbc - zna*ybc);
+    f4[1] += a*( zad*xbc - xad*zbc )*rna + a*da*rna*( zna*xbc - xna*zbc);
+    f4[2] += a*( xad*ybc - yad*xbc )*rna + a*da*rna*( xna*ybc - yna*xbc);
+
+    // apply force to each of 4 atoms
+
+    if (newton_bond || i1 < nlocal) {
+      f[i1][0] += f1[0];
+      f[i1][1] += f1[1];
+      f[i1][2] += f1[2];
+    }
+
+    if (newton_bond || i2 < nlocal) {
+      f[i2][0] += f2[0];
+      f[i2][1] += f2[1];
+      f[i2][2] += f2[2];
+    }
+
+    if (newton_bond || i3 < nlocal) {
+      f[i3][0] += f3[0];
+      f[i3][1] += f3[1];
+      f[i3][2] += f3[2];
+    }
+
+    if (newton_bond || i4 < nlocal) {
+      f[i4][0] += f4[0];
+      f[i4][1] += f4[1];
+      f[i4][2] += f4[2];
+    }
+
+    if (evflag)
+      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f2,f3,f4,
+       xab,yab,zab,xac,yac,zac,xad-xac,yad-yac,zad-zac);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ImproperDistHarm::allocate()
+{
+  allocated = 1;
+  int n = atom->nimpropertypes;
+
+  memory->create(k,n+1,"improper:k");
+  memory->create(chi,n+1,"improper:chi");
+
+  memory->create(setflag,n+1,"improper:setflag");
+  for (int i = 1; i <= n; i++) setflag[i] = 0;
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one type
+------------------------------------------------------------------------- */
+
+void ImproperDistHarm::coeff(int narg, char **arg)
+{
+//  if (which > 0) return;
+  if (narg != 3) error->all(FLERR,"Incorrect args for improper coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi;
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
+
+  double k_one = force->numeric(FLERR,arg[1]);
+  double chi_one = force->numeric(FLERR,arg[2]);
+
+  // convert chi from degrees to radians
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    k[i] = k_one;
+    //chi[i] = chi_one/180.0 * PI;
+    chi[i] = chi_one;
+    setflag[i] = 1;
+    count++;
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes out coeffs to restart file
+------------------------------------------------------------------------- */
+
+void ImproperDistHarm::write_restart(FILE *fp)
+{
+  fwrite(&k[1],sizeof(double),atom->nimpropertypes,fp);
+  fwrite(&chi[1],sizeof(double),atom->nimpropertypes,fp);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 reads coeffs from restart file, bcasts them
+------------------------------------------------------------------------- */
+
+void ImproperDistHarm::read_restart(FILE *fp)
+{
+  allocate();
+
+  if (comm->me == 0) {
+    fread(&k[1],sizeof(double),atom->nimpropertypes,fp);
+    fread(&chi[1],sizeof(double),atom->nimpropertypes,fp);
+  }
+  MPI_Bcast(&k[1],atom->nimpropertypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&chi[1],atom->nimpropertypes,MPI_DOUBLE,0,world);
+
+  for (int i = 1; i <= atom->nimpropertypes; i++) setflag[i] = 1;
+}
diff --git a/src/USER-YAFF/improper_distharm.h b/src/USER-YAFF/improper_distharm.h
new file mode 100644
index 0000000000000000000000000000000000000000..b8b9ae780e06d592f10a0e7b27926b4ce916a5b6
--- /dev/null
+++ b/src/USER-YAFF/improper_distharm.h
@@ -0,0 +1,47 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef IMPROPER_CLASS
+
+ImproperStyle(distharm,ImproperDistHarm)
+
+#else
+
+#ifndef LMP_IMPROPER_DISTHARM_H
+#define LMP_IMPROPER_DISTHARM_H
+
+#include <stdio.h>
+#include "improper.h"
+
+namespace LAMMPS_NS {
+
+class ImproperDistHarm : public Improper {
+ public:
+  ImproperDistHarm(class LAMMPS *);
+  ~ImproperDistHarm();
+  void compute(int, int);
+  void coeff(int, char **);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+
+ private:
+  double *k,*chi;
+
+  void allocate();
+};
+
+}
+
+#endif
+#endif
+
diff --git a/src/USER-YAFF/improper_sqdistharm.cpp b/src/USER-YAFF/improper_sqdistharm.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..763d82f1c55faa5f84f50b4cf4755ab5eb2bb08f
--- /dev/null
+++ b/src/USER-YAFF/improper_sqdistharm.cpp
@@ -0,0 +1,269 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande, heavily based on the
+   improper_distance code by Paolo Raiteri (Curtin University)
+------------------------------------------------------------------------- */
+
+#include <mpi.h>
+#include <math.h>
+#include <stdlib.h>
+#include "improper_sqdistharm.h"
+#include "atom.h"
+#include "comm.h"
+#include "neighbor.h"
+#include "domain.h"
+#include "force.h"
+#include "update.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+#define TOLERANCE 0.05
+#define SMALL     0.001
+
+/* ---------------------------------------------------------------------- */
+
+ImproperSQDistHarm::ImproperSQDistHarm(LAMMPS *lmp) : Improper(lmp) {}
+
+/* ---------------------------------------------------------------------- */
+
+ImproperSQDistHarm::~ImproperSQDistHarm()
+{
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(k);
+    memory->destroy(chi);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ImproperSQDistHarm::compute(int eflag, int vflag)
+{
+  int i1,i2,i3,i4,n,type;
+  double xab, yab, zab; // bond 1-2
+  double xac, yac, zac; // bond 1-3
+  double xad, yad, zad; // bond 1-4
+  double xbc, ybc, zbc; // bond 2-3
+  double xbd, ybd, zbd; // bond 2-4
+  double xcd, ycd, zcd; // bond 3-4
+  double xna, yna, zna, rna; // normal
+  double da;
+
+  double eimproper,f1[3],f2[3],f3[3],f4[3];
+  double domega,a;
+
+  eimproper = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  int **improperlist = neighbor->improperlist;
+  int nimproperlist = neighbor->nimproperlist;
+  int nlocal = atom->nlocal;
+  int newton_bond = force->newton_bond;
+
+  for (n = 0; n < nimproperlist; n++) {
+    i1 = improperlist[n][0];
+    i2 = improperlist[n][1];
+    i3 = improperlist[n][2];
+    i4 = improperlist[n][3];
+    type = improperlist[n][4];
+
+    // geometry of 4-body
+    // 4 is the central atom
+    // 1-2-3 are ment to be equivalent
+    // I need the bonds between 2-3 and 3-4 to get the plane normal
+    // Then I need the bond 1-4 to project it onto the normal to the plane
+
+    // bond 1->2
+    xab = x[i2][0] - x[i1][0];
+    yab = x[i2][1] - x[i1][1];
+    zab = x[i2][2] - x[i1][2];
+    domain->minimum_image(xab,yab,zab);
+
+    // bond 1->3
+    xac = x[i3][0] - x[i1][0];
+    yac = x[i3][1] - x[i1][1];
+    zac = x[i3][2] - x[i1][2];
+    domain->minimum_image(xac,yac,zac);
+
+    // bond 1->4
+    xad = x[i4][0] - x[i1][0];
+    yad = x[i4][1] - x[i1][1];
+    zad = x[i4][2] - x[i1][2];
+    domain->minimum_image(xad,yad,zad);
+
+    // bond 2-3
+    xbc = x[i3][0] - x[i2][0];
+    ybc = x[i3][1] - x[i2][1];
+    zbc = x[i3][2] - x[i2][2];
+    domain->minimum_image(xbc,ybc,zbc);
+
+    // bond 2-4
+    xbd = x[i4][0] - x[i2][0];
+    ybd = x[i4][1] - x[i2][1];
+    zbd = x[i4][2] - x[i2][2];
+    domain->minimum_image(xbd,ybd,zbd);
+
+    // bond 3-4
+    xcd = x[i4][0] - x[i3][0];
+    ycd = x[i4][1] - x[i3][1];
+    zcd = x[i4][2] - x[i3][2];
+    domain->minimum_image(xcd,ycd,zcd);
+
+    xna =   ybc*zcd - zbc*ycd;
+    yna = -(xbc*zcd - zbc*xcd);
+    zna =   xbc*ycd - ybc*xcd;
+    rna = 1.0 / sqrt(xna*xna+yna*yna+zna*zna);
+    xna *= rna;
+    yna *= rna;
+    zna *= rna;
+
+    da = -(xna*xad + yna*yad + zna*zad);
+
+    domega = k[type]*(da*da - chi[type])*(da*da - chi[type]);
+    a =  4.0 * da* k[type]*(da*da - chi[type]);
+
+    if (eflag) eimproper = domega;
+
+    f1[0] = a*( -xna);
+    f1[1] = a*( -yna);
+    f1[2] = a*( -zna);
+    f4[0] = a*(  xna);
+    f4[1] = a*(  yna);
+    f4[2] = a*(  zna);
+
+    f2[0] =  a*( yad*zcd - zad*ycd )*rna + a*da*rna*( yna*zcd - zna*ycd);
+    f2[1] =  a*( zad*xcd - xad*zcd )*rna + a*da*rna*( zna*xcd - xna*zcd);
+    f2[2] =  a*( xad*ycd - yad*xcd )*rna + a*da*rna*( xna*ycd - yna*xcd);
+
+    f3[0] = - a*( yad*zcd - zad*ycd )*rna - a*da*rna*( yna*zcd - zna*ycd);
+    f3[1] = - a*( zad*xcd - xad*zcd )*rna - a*da*rna*( zna*xcd - xna*zcd);
+    f3[2] = - a*( xad*ycd - yad*xcd )*rna - a*da*rna*( xna*ycd - yna*xcd);
+
+    f3[0] +=  -a*( yad*zbc - zad*ybc )*rna - a*da*rna*( yna*zbc - zna*ybc);
+    f3[1] +=  -a*( zad*xbc - xad*zbc )*rna - a*da*rna*( zna*xbc - xna*zbc);
+    f3[2] +=  -a*( xad*ybc - yad*xbc )*rna - a*da*rna*( xna*ybc - yna*xbc);
+    f4[0] += a*( yad*zbc - zad*ybc )*rna + a*da*rna*( yna*zbc - zna*ybc);
+    f4[1] += a*( zad*xbc - xad*zbc )*rna + a*da*rna*( zna*xbc - xna*zbc);
+    f4[2] += a*( xad*ybc - yad*xbc )*rna + a*da*rna*( xna*ybc - yna*xbc);
+
+
+    // apply force to each of 4 atoms
+
+    if (newton_bond || i1 < nlocal) {
+      f[i1][0] += f1[0];
+      f[i1][1] += f1[1];
+      f[i1][2] += f1[2];
+    }
+
+    if (newton_bond || i2 < nlocal) {
+      f[i2][0] += f2[0];
+      f[i2][1] += f2[1];
+      f[i2][2] += f2[2];
+    }
+
+    if (newton_bond || i3 < nlocal) {
+      f[i3][0] += f3[0];
+      f[i3][1] += f3[1];
+      f[i3][2] += f3[2];
+    }
+
+    if (newton_bond || i4 < nlocal) {
+      f[i4][0] += f4[0];
+      f[i4][1] += f4[1];
+      f[i4][2] += f4[2];
+    }
+
+    if (evflag)
+      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f2,f3,f4,
+       xab,yab,zab,xac,yac,zac,xad-xac,yad-yac,zad-zac);
+  }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ImproperSQDistHarm::allocate()
+{
+  allocated = 1;
+  int n = atom->nimpropertypes;
+
+  memory->create(k,n+1,"improper:k");
+  memory->create(chi,n+1,"improper:chi");
+
+  memory->create(setflag,n+1,"improper:setflag");
+  for (int i = 1; i <= n; i++) setflag[i] = 0;
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one type
+------------------------------------------------------------------------- */
+
+void ImproperSQDistHarm::coeff(int narg, char **arg)
+{
+//  if (which > 0) return;
+  if (narg != 3) error->all(FLERR,"Incorrect args for improper coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi;
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
+
+  double k_one = force->numeric(FLERR,arg[1]);
+  double chi_one = force->numeric(FLERR,arg[2]);
+
+  // convert chi from degrees to radians
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    k[i] = k_one;
+    //chi[i] = chi_one/180.0 * PI;
+    chi[i] = chi_one;
+    setflag[i] = 1;
+    count++;
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for improper coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes out coeffs to restart file
+------------------------------------------------------------------------- */
+
+void ImproperSQDistHarm::write_restart(FILE *fp)
+{
+  fwrite(&k[1],sizeof(double),atom->nimpropertypes,fp);
+  fwrite(&chi[1],sizeof(double),atom->nimpropertypes,fp);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 reads coeffs from restart file, bcasts them
+------------------------------------------------------------------------- */
+
+void ImproperSQDistHarm::read_restart(FILE *fp)
+{
+  allocate();
+
+  if (comm->me == 0) {
+    fread(&k[1],sizeof(double),atom->nimpropertypes,fp);
+    fread(&chi[1],sizeof(double),atom->nimpropertypes,fp);
+  }
+  MPI_Bcast(&k[1],atom->nimpropertypes,MPI_DOUBLE,0,world);
+  MPI_Bcast(&chi[1],atom->nimpropertypes,MPI_DOUBLE,0,world);
+
+  for (int i = 1; i <= atom->nimpropertypes; i++) setflag[i] = 1;
+}
diff --git a/src/USER-YAFF/improper_sqdistharm.h b/src/USER-YAFF/improper_sqdistharm.h
new file mode 100644
index 0000000000000000000000000000000000000000..301b5066cbabc4d8a877dd0b56caf603634ac450
--- /dev/null
+++ b/src/USER-YAFF/improper_sqdistharm.h
@@ -0,0 +1,47 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef IMPROPER_CLASS
+
+ImproperStyle(sqdistharm,ImproperSQDistHarm)
+
+#else
+
+#ifndef LMP_IMPROPER_SQDISTHARM_H
+#define LMP_IMPROPER_SQDISTHARM_H
+
+#include <stdio.h>
+#include "improper.h"
+
+namespace LAMMPS_NS {
+
+class ImproperSQDistHarm : public Improper {
+ public:
+  ImproperSQDistHarm(class LAMMPS *);
+  ~ImproperSQDistHarm();
+  void compute(int, int);
+  void coeff(int, char **);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+
+ private:
+  double *k,*chi;
+
+  void allocate();
+};
+
+}
+
+#endif
+#endif
+
diff --git a/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b3a267807dbc9c1465ce3ebd726377ce62fc18c0
--- /dev/null
+++ b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.cpp
@@ -0,0 +1,714 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande
+------------------------------------------------------------------------- */
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "pair_lj_switch3_coulgauss_long.h"
+#include "atom.h"
+#include "comm.h"
+#include "force.h"
+#include "kspace.h"
+#include "update.h"
+#include "integrate.h"
+#include "respa.h"
+#include "neighbor.h"
+#include "neigh_list.h"
+#include "neigh_request.h"
+#include "math_const.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace MathConst;
+
+#define EWALD_F   1.12837917
+#define EWALD_P   0.3275911
+#define A1        0.254829592
+#define A2       -0.284496736
+#define A3        1.421413741
+#define A4       -1.453152027
+#define A5        1.061405429
+
+/* ---------------------------------------------------------------------- */
+
+PairLJSwitch3CoulGaussLong::PairLJSwitch3CoulGaussLong(LAMMPS *lmp) : Pair(lmp)
+{
+  ewaldflag = pppmflag = 1;
+  respa_enable = 1;
+  writedata = 1;
+  ftable = NULL;
+  qdist = 0.0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+PairLJSwitch3CoulGaussLong::~PairLJSwitch3CoulGaussLong()
+{
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(cutsq);
+
+    memory->destroy(cut_lj);
+    memory->destroy(cut_ljsq);
+    memory->destroy(epsilon);
+    memory->destroy(sigma);
+    memory->destroy(gamma);
+    memory->destroy(lj1);
+    memory->destroy(lj2);
+    memory->destroy(lj3);
+    memory->destroy(lj4);
+    memory->destroy(offset);
+  }
+  if (ftable) free_tables();
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::compute(int eflag, int vflag)
+{
+  int i,ii,j,jj,inum,jnum,itype,jtype,itable,jtable,ktable;
+  double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,ecoul2,fpair;
+  double fraction,fraction2,table;
+  double r,r2inv,r6inv,forcecoul,forcecoul2,forcelj,factor_coul,factor_lj,tr,ftr,trx;
+  double grij,expm2,prefactor,prefactor2,t,erfc1,erfc2,rrij,expn2,expb,g_ewald2i,g_ewaldi;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+  double rsq, lookup_corr;
+
+  evdwl = ecoul = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = vflag_fdotr = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  double *q = atom->q;
+  int *type = atom->type;
+  int nlocal = atom->nlocal;
+  double *special_coul = force->special_coul;
+  double *special_lj = force->special_lj;
+  int newton_pair = force->newton_pair;
+  double qqrd2e = force->qqrd2e;
+  union_int_float_t rsq_lookup;
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+  g_ewaldi = 1.0/g_ewald;
+  g_ewald2i = g_ewaldi*g_ewaldi;
+  lookup_corr = 0.0;
+
+  // loop over neighbors of my atoms
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    qtmp = q[i];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      factor_lj = special_lj[sbmask(j)];
+      factor_coul = special_coul[sbmask(j)];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+      jtype = type[j];
+
+      if (rsq < cutsq[itype][jtype]) {
+        r2inv = 1.0/rsq;
+ 
+        if (rsq < cut_coulsq) {
+          if (!ncoultablebits || rsq <= tabinnersq) {
+            r = sqrt(rsq);
+            grij = g_ewald * r;
+            expm2 = exp(-grij*grij);
+            t = 1.0 / (1.0 + EWALD_P*grij);
+            erfc1 = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2;
+            prefactor = qqrd2e * qtmp*q[j]/r;
+            forcecoul = prefactor * (erfc1 + EWALD_F*grij*expm2);
+            if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor;
+          } else {
+            rsq_lookup.f = rsq;
+            itable = rsq_lookup.i & ncoulmask;
+            itable >>= ncoulshiftbits;
+            fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable];
+            table = ftable[itable] + fraction*dftable[itable];
+            forcecoul = qtmp*q[j] * table;
+            if (factor_coul < 1.0) {
+              table = ctable[itable] + fraction*dctable[itable];
+              prefactor = qtmp*q[j] * table;
+              forcecoul -= (1.0-factor_coul)*prefactor;
+            }
+          }
+        } else forcecoul = 0.0;
+
+        if (rsq < cut_ljsq[itype][jtype]) {
+          // Lennard-Jones potential
+          r = sqrt(rsq);
+          r6inv = r2inv*r2inv*r2inv;
+          forcelj = r6inv*(12.0*lj3[itype][jtype]*r6inv - 6.0*lj4[itype][jtype]);
+          // Correction for Gaussian radii
+          if (lj2[itype][jtype]==0.0) {
+            // This means a point charge is considerd, so the correction is zero
+            expn2 = 0.0;
+            erfc2 = 0.0;
+            forcecoul2 = 0.0;
+          }
+          else {
+            rrij = lj2[itype][jtype]*r;
+            expn2 = exp(-rrij*rrij);
+            erfc2 = erfc(rrij);
+            prefactor2 = -qqrd2e*qtmp*q[j]/r;
+            forcecoul2 = prefactor2*(erfc2+EWALD_F*rrij*expn2);
+          }
+        } else forcelj = 0.0;
+
+        if (rsq < cut_coulsq) {
+          if (!ncoultablebits || rsq <= tabinnersq)
+            ecoul = prefactor*erfc1;
+          else {
+            table = etable[itable] + fraction*detable[itable];
+            ecoul = qtmp*q[j] * table;
+          }
+          if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor;
+        } else ecoul = 0.0;
+
+        if (rsq < cut_ljsq[itype][jtype]) {
+          ecoul += prefactor2*erfc2*factor_coul;
+          evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) -
+              offset[itype][jtype];
+        } else evdwl = 0.0;
+
+        // Truncation, see Yaff Switch33
+        if (truncw>0) {
+          if (rsq < cut_ljsq[itype][jtype]) {
+            if (r>cut_lj[itype][jtype]-truncw) {
+              trx = (cut_lj[itype][jtype]-r)*truncwi;
+              tr = trx*trx*(3.0-2.0*trx);
+              ftr = 6.0*trx*(1.0-trx)*r*truncwi;    
+              forcelj = forcelj*tr + evdwl*ftr;
+              evdwl *= tr;
+            }
+          }
+        }
+
+        fpair = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
+        evdwl *= factor_lj;
+
+        f[i][0] += delx*fpair;
+        f[i][1] += dely*fpair;
+        f[i][2] += delz*fpair;
+        if (newton_pair || j < nlocal) {
+          f[j][0] -= delx*fpair;
+          f[j][1] -= dely*fpair;
+          f[j][2] -= delz*fpair;
+        }
+
+        if (evflag) ev_tally(i,j,nlocal,newton_pair,
+                             evdwl,ecoul,fpair,delx,dely,delz);
+      }
+    }
+  }
+
+  if (vflag_fdotr) virial_fdotr_compute();
+}
+
+
+/* ----------------------------------------------------------------------
+   allocate all arrays
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::allocate()
+{
+  allocated = 1;
+  int n = atom->ntypes;
+
+  memory->create(setflag,n+1,n+1,"pair:setflag");
+  for (int i = 1; i <= n; i++)
+    for (int j = i; j <= n; j++)
+      setflag[i][j] = 0;
+
+  memory->create(cutsq,n+1,n+1,"pair:cutsq");
+
+  memory->create(cut_lj,n+1,n+1,"pair:cut_lj");
+  memory->create(cut_ljsq,n+1,n+1,"pair:cut_ljsq");
+  memory->create(epsilon,n+1,n+1,"pair:epsilon");
+  memory->create(sigma,n+1,n+1,"pair:sigma");
+  memory->create(gamma,n+1,n+1,"pair:gamma");
+  memory->create(lj1,n+1,n+1,"pair:lj1");
+  memory->create(lj2,n+1,n+1,"pair:lj2");
+  memory->create(lj3,n+1,n+1,"pair:lj3");
+  memory->create(lj4,n+1,n+1,"pair:lj4");
+  memory->create(offset,n+1,n+1,"pair:offset");
+}
+
+/* ----------------------------------------------------------------------
+   global settings
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::settings(int narg, char **arg)
+{
+ if (narg < 2 || narg > 3) error->all(FLERR,"Illegal pair_style command");
+
+  cut_lj_global = force->numeric(FLERR,arg[0]);
+  if (narg == 2) {
+    cut_coul = cut_lj_global;
+    truncw = force->numeric(FLERR,arg[1]);
+  }
+  else {
+    cut_coul = force->numeric(FLERR,arg[1]);
+    truncw = force->numeric(FLERR,arg[2]);
+  }
+  if (truncw>0.0) truncwi = 1.0/truncw;
+  else truncwi = 0.0;
+  // reset cutoffs that have been explicitly set
+
+  if (allocated) {
+    int i,j;
+    for (i = 1; i <= atom->ntypes; i++)
+      for (j = i; j <= atom->ntypes; j++)
+        if (setflag[i][j]) cut_lj[i][j] = cut_lj_global;
+  }
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one or more type pairs
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::coeff(int narg, char **arg)
+{
+  if (narg < 5 || narg > 6)
+    error->all(FLERR,"Incorrect args for pair coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi,jlo,jhi;
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+
+  double epsilon_one = force->numeric(FLERR,arg[2]);
+  double sigma_one = force->numeric(FLERR,arg[3]);
+  double gamma_one = force->numeric(FLERR,arg[4]);
+
+  double cut_lj_one = cut_lj_global;
+  if (narg == 6) cut_lj_one = force->numeric(FLERR,arg[5]);
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    for (int j = MAX(jlo,i); j <= jhi; j++) {
+      epsilon[i][j] = epsilon_one;
+      sigma[i][j] = sigma_one;
+      gamma[i][j] = gamma_one;
+      cut_lj[i][j] = cut_lj_one;
+      setflag[i][j] = 1;
+      count++;
+    }
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   init specific to this pair style
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::init_style()
+{
+  if (!atom->q_flag)
+    error->all(FLERR,"Pair style lj/switch3/coulgauss/long requires atom attribute q");
+
+  // request regular or rRESPA neighbor list
+
+  int irequest;
+  int respa = 0;
+
+  if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
+    if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
+    if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
+  }
+
+  irequest = neighbor->request(this,instance_me);
+
+  if (respa >= 1) {
+    neighbor->requests[irequest]->respaouter = 1;
+    neighbor->requests[irequest]->respainner = 1;
+  }
+  if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
+
+  cut_coulsq = cut_coul * cut_coul;
+
+  // set rRESPA cutoffs
+
+  if (strstr(update->integrate_style,"respa") &&
+      ((Respa *) update->integrate)->level_inner >= 0)
+    cut_respa = ((Respa *) update->integrate)->cutoff;
+  else cut_respa = NULL;
+
+  // insure use of KSpace long-range solver, set g_ewald
+
+  if (force->kspace == NULL)
+    error->all(FLERR,"Pair style requires a KSpace style");
+  g_ewald = force->kspace->g_ewald;
+
+  // setup force tables
+
+  if (ncoultablebits) init_tables(cut_coul,cut_respa);
+}
+
+/* ----------------------------------------------------------------------
+   init for one type pair i,j and corresponding j,i
+------------------------------------------------------------------------- */
+
+double PairLJSwitch3CoulGaussLong::init_one(int i, int j)
+{
+  if (setflag[i][j] == 0) {
+    epsilon[i][j] = mix_energy(epsilon[i][i],epsilon[j][j],
+                               sigma[i][i],sigma[j][j]);
+    sigma[i][j] = mix_distance(sigma[i][i],sigma[j][j]);
+    gamma[i][j] = 1.0/sqrt(gamma[i][i]*gamma[i][i]+gamma[j][j]*gamma[j][j]);
+    cut_lj[i][j] = mix_distance(cut_lj[i][i],cut_lj[j][j]);
+  }
+
+  double cut = MAX(cut_lj[i][j],cut_coul+2.0*qdist);
+  cut_ljsq[i][j] = cut_lj[i][j] * cut_lj[i][j];
+  lj1[i][j] = 48.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
+  if (gamma[i][i]==0.0 && gamma[j][j]==0.0) lj2[i][j] = 0.0;
+  else lj2[i][j] = 1.0/sqrt(gamma[i][i]*gamma[i][i]+gamma[j][j]*gamma[j][j]);
+  lj3[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],12.0);
+  lj4[i][j] = 4.0 * epsilon[i][j] * pow(sigma[i][j],6.0);
+
+  if (offset_flag && (cut_lj[i][j] > 0.0)) {
+    // Truncation is active, so offset is zero, except if truncw==0.0
+    if (truncw==0.0) {
+      double r = cut_lj[i][j];
+      double r2inv = 1.0/(r*r);
+      double r6inv = r2inv*r2inv*r2inv;
+      double r12inv = r6inv*r6inv;
+      offset[i][j] = lj3[i][j]*r12inv-lj4[i][j]*r6inv;
+    }
+    else {offset[i][j] = 0.0;}
+  } else offset[i][j] = 0.0;
+
+  cut_ljsq[j][i] = cut_ljsq[i][j];
+  cut_lj[j][i] = cut_lj[i][j];
+  lj1[j][i] = lj1[i][j];
+  lj2[j][i] = lj2[i][j];
+  lj3[j][i] = lj3[i][j];
+  lj4[j][i] = lj4[i][j];
+  offset[j][i] = offset[i][j];
+
+  // check interior rRESPA cutoff
+
+  if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3])
+    error->all(FLERR,"Pair cutoff < Respa interior cutoff");
+
+  // compute I,J contribution to long-range tail correction
+  // count total # of atoms of type I and J via Allreduce
+
+  if (tail_flag) {
+    int *type = atom->type;
+    int nlocal = atom->nlocal;
+
+    double count[2],all[2];
+    count[0] = count[1] = 0.0;
+    for (int k = 0; k < nlocal; k++) {
+      if (type[k] == i) count[0] += 1.0;
+      if (type[k] == j) count[1] += 1.0;
+    }
+    MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world);
+
+    double cg = epsilon[i][j];
+    double cg1 = cut_lj[i][j];
+    double cg3 = sigma[i][j];
+    if (truncw > 0.0) {
+      double cg5 = truncw;
+      double t1 = pow(cg1, 0.2e1);
+      double t2 = t1 * cg1;
+      double t3 = t1 * t1;
+      double t4 = t3 * t2;
+      double t5 = -cg1 + cg5;
+      double t6 = t5 * t5;
+      double t8 = t6 * t6;
+      double t9 = t8 * t6 * t5;
+      double t10 = t4 * t9;
+      double t11 = log(-t5);
+      double t14 = log(cg1);
+      double t19 = pow(cg5, 0.2e1);
+      double t20 = t19 * t19;
+      double t21 = t20 * t19;
+      double t24 = pow(cg3, 0.2e1);
+      double t25 = t24 * t24;
+      double t26 = t25 * t24;
+      double t29 = t20 * cg5;
+      double t35 = t3 * t3;
+      double t41 = t19 * cg5;
+      double t58 = t21 * t3 * t1 - t21 * t26 / 0.84e2 - 0.6e1 * t29 * t4 + t29 * cg1 * t26 / 0.18e2 + 0.15e2 * t20 * t35 - t20 * t1 * t26 / 0.9e1 - 0.20e2 * t41 * t35 * cg1 + t41 * t2 * t26 / 0.9e1 + 0.15e2 * t19 * t35 * t1 - t19 * t3 * t26 / 0.18e2 - 0.6e1 * t35 * t2 * cg5 + t35 * t3;
+      double t71 = -0.4e1 * cg * (0.2e1 * t10 * t11 - 0.2e1 * t10 * t14 + (cg5 - 0.2e1 * cg1) * t58 * cg5) * t26 / t4 / t41 / t9;
+      etail_ij = 2.0*MY_PI*all[0]*all[1]*t71;
+      ptail_ij = 2.0*MY_PI*all[0]*all[1]*t71;
+    }
+    else {
+      double t1 = pow(cg3, 0.2e1);
+      double t2 = t1 * t1;
+      double t3 = t2 * t1;
+      double t5 = pow(cg1, 0.2e1);
+      double t6 = t5 * t5;
+      double t10 = t6 * t6;
+      double t16 = -0.4e1 / 0.9e1 * t3 * cg * (0.3e1 * t6 * t5 - t3) / t10 / cg1;
+      t1 = pow(cg3, 0.2e1);
+      t2 = t1 * t1;
+      t3 = t2 * t1;
+      t5 = pow(cg1, 0.2e1);
+      t6 = t5 * t5;
+      double t11 = t6 * t6;
+      double t17 = 0.8e1 / 0.3e1 * t3 * cg * (0.3e1 * t6 * t5 - 0.2e1 * t3) / t11 / cg1;
+      etail_ij = 2.0*MY_PI*all[0]*all[1]*t16;
+      ptail_ij = -2.0/3.0*MY_PI*all[0]*all[1]*t17;
+    }
+  }
+
+  return cut;
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 writes to restart file
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::write_restart(FILE *fp)
+{
+  write_restart_settings(fp);
+
+  int i,j;
+  for (i = 1; i <= atom->ntypes; i++)
+    for (j = i; j <= atom->ntypes; j++) {
+      fwrite(&setflag[i][j],sizeof(int),1,fp);
+      if (setflag[i][j]) {
+        fwrite(&epsilon[i][j],sizeof(double),1,fp);
+        fwrite(&sigma[i][j],sizeof(double),1,fp);
+        fwrite(&gamma[i][j],sizeof(double),1,fp);
+        fwrite(&cut_lj[i][j],sizeof(double),1,fp);
+      }
+    }
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 reads from restart file, bcasts
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::read_restart(FILE *fp)
+{
+  read_restart_settings(fp);
+
+  allocate();
+
+  int i,j;
+  int me = comm->me;
+  for (i = 1; i <= atom->ntypes; i++)
+    for (j = i; j <= atom->ntypes; j++) {
+      if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp);
+      MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
+      if (setflag[i][j]) {
+        if (me == 0) {
+          fread(&epsilon[i][j],sizeof(double),1,fp);
+          fread(&sigma[i][j],sizeof(double),1,fp);
+          fread(&gamma[i][j],sizeof(double),1,fp);
+          fread(&cut_lj[i][j],sizeof(double),1,fp);
+        }
+        MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&cut_lj[i][j],1,MPI_DOUBLE,0,world);
+      }
+    }
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 writes to restart file
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::write_restart_settings(FILE *fp)
+{
+  fwrite(&cut_lj_global,sizeof(double),1,fp);
+  fwrite(&cut_coul,sizeof(double),1,fp);
+  fwrite(&truncw,sizeof(double),1,fp);
+  fwrite(&offset_flag,sizeof(int),1,fp);
+  fwrite(&mix_flag,sizeof(int),1,fp);
+  fwrite(&tail_flag,sizeof(int),1,fp);
+  fwrite(&ncoultablebits,sizeof(int),1,fp);
+  fwrite(&tabinner,sizeof(double),1,fp);
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 reads from restart file, bcasts
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::read_restart_settings(FILE *fp)
+{
+  if (comm->me == 0) {
+    fread(&cut_lj_global,sizeof(double),1,fp);
+    fread(&cut_coul,sizeof(double),1,fp);
+    fread(&truncw,sizeof(double),1,fp);
+    fread(&offset_flag,sizeof(int),1,fp);
+    fread(&mix_flag,sizeof(int),1,fp);
+    fread(&tail_flag,sizeof(int),1,fp);
+    fread(&ncoultablebits,sizeof(int),1,fp);
+    fread(&tabinner,sizeof(double),1,fp);
+  }
+  MPI_Bcast(&cut_lj_global,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&cut_coul,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&truncw,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&offset_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&tail_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&ncoultablebits,1,MPI_INT,0,world);
+  MPI_Bcast(&tabinner,1,MPI_DOUBLE,0,world);
+}
+
+
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->ntypes; i++)
+    fprintf(fp,"%d %g %g %g\n",i,epsilon[i][i],sigma[i][i],gamma[i][i]);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes all pairs to data file
+------------------------------------------------------------------------- */
+
+void PairLJSwitch3CoulGaussLong::write_data_all(FILE *fp)
+{
+  for (int i = 1; i <= atom->ntypes; i++)
+    for (int j = i; j <= atom->ntypes; j++)
+      fprintf(fp,"%d %d %g %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],gamma[i][j],cut_lj[i][j]);
+}
+
+/* ---------------------------------------------------------------------- */
+
+double PairLJSwitch3CoulGaussLong::single(int i, int j, int itype, int jtype,
+                                 double rsq,
+                                 double factor_coul, double factor_lj,
+                                 double &fforce)
+{
+  double r2inv,r6inv,r,grij,expm2,t,erfc1,prefactor,prefactor2,rrij,expn2,erfc2;
+  double fraction,table,forcecoul,forcecoul2,forcelj,phicoul,phicoul2,philj;
+  double expb, ecoul, evdwl, trx, tr, ftr;
+
+  int itable;
+
+  r2inv = 1.0/rsq;
+  if (rsq < cut_coulsq) {
+    if (!ncoultablebits || rsq <= tabinnersq) {
+      r = sqrt(rsq);
+      grij = g_ewald * r;
+      expm2 = exp(-grij*grij);
+      t = 1.0 / (1.0 + EWALD_P*grij);
+      erfc1 = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2;
+      prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r;
+      forcecoul = prefactor * (erfc1 + EWALD_F*grij*expm2);
+      if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor;
+    } else {
+      union_int_float_t rsq_lookup_single;
+      rsq_lookup_single.f = rsq;
+      itable = rsq_lookup_single.i & ncoulmask;
+      itable >>= ncoulshiftbits;
+      fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable];
+      table = ftable[itable] + fraction*dftable[itable];
+      forcecoul = atom->q[i]*atom->q[j] * table;
+      if (factor_coul < 1.0) {
+        table = ctable[itable] + fraction*dctable[itable];
+        prefactor = atom->q[i]*atom->q[j] * table;
+        forcecoul -= (1.0-factor_coul)*prefactor;
+      }
+    }
+  } else forcecoul = 0.0;
+
+  if (rsq < cut_ljsq[itype][jtype]) {
+    r = sqrt(rsq);
+    r6inv = r2inv*r2inv*r2inv;
+    rrij = lj2[itype][jtype] * r;
+    if (rrij==0.0) {
+      expn2 = 0.0;
+      erfc2 = 0.0;
+    }
+    else {
+      expn2 = exp(-rrij*rrij);
+      erfc2 = erfc(rrij);
+    }
+    prefactor2 = -force->qqrd2e * atom->q[i]*atom->q[j]/r;
+    forcecoul2 = prefactor2 * (erfc2 + EWALD_F*rrij*expn2);
+    forcelj = expb*lj1[itype][jtype]*r-6.0*lj4[itype][jtype]*r6inv;
+  } else forcelj = 0.0;
+
+  double eng = 0.0;
+  if (rsq < cut_coulsq) {
+    if (!ncoultablebits || rsq <= tabinnersq)
+      phicoul = prefactor*erfc1;
+    else {
+      table = etable[itable] + fraction*detable[itable];
+      phicoul = atom->q[i]*atom->q[j] * table;
+    }
+    if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor;
+    eng += phicoul;
+  }
+
+  if (rsq < cut_ljsq[itype][jtype]) {
+    ecoul += prefactor2*erfc2*factor_coul;
+    evdwl = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]) -
+        offset[itype][jtype];
+  } else evdwl = 0.0;
+
+  // Truncation, see Yaff Switch3
+  if (truncw>0) {
+    if (rsq < cut_ljsq[itype][jtype]) {
+      if (r>cut_lj[itype][jtype]-truncw) {
+        trx = (cut_lj[itype][jtype]-r)*truncwi;
+        tr = trx*trx*(3.0-2.0*trx);
+        ftr = 6.0*trx*(1.0-trx)*r*truncwi;    
+        forcelj = forcelj*tr + evdwl*ftr;
+        evdwl *= tr;
+      }
+    }
+  }
+  eng += evdwl*factor_lj;
+  fforce = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
+
+  return eng;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void *PairLJSwitch3CoulGaussLong::extract(const char *str, int &dim)
+{
+  dim = 0;
+  if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul;
+  dim = 2;
+  if (strcmp(str,"epsilon") == 0) return (void *) epsilon;
+  if (strcmp(str,"sigma") == 0) return (void *) sigma;
+  if (strcmp(str,"gamma") == 0) return (void *) gamma;
+  return NULL;
+}
diff --git a/src/USER-YAFF/pair_lj_switch3_coulgauss_long.h b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.h
new file mode 100644
index 0000000000000000000000000000000000000000..75686d55a2cb1932874eb65014ff4d2af4ff2287
--- /dev/null
+++ b/src/USER-YAFF/pair_lj_switch3_coulgauss_long.h
@@ -0,0 +1,91 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef PAIR_CLASS
+
+PairStyle(lj/switch3/coulgauss/long,PairLJSwitch3CoulGaussLong)
+
+#else
+
+#ifndef LMP_PAIR_LJ_SWITCH3_COULGAUSS_LONG_H
+#define LMP_PAIR_LJ_SWITCH3_COULGAUSS_LONG_H
+
+#include "pair.h"
+
+namespace LAMMPS_NS {
+
+class PairLJSwitch3CoulGaussLong : public Pair {
+
+ public:
+  PairLJSwitch3CoulGaussLong(class LAMMPS *);
+  virtual ~PairLJSwitch3CoulGaussLong();
+  virtual void compute(int, int);
+  virtual void settings(int, char **);
+  void coeff(int, char **);
+  virtual void init_style();
+  virtual double init_one(int, int);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+  virtual void write_restart_settings(FILE *);
+  virtual void read_restart_settings(FILE *);
+  void write_data(FILE *);
+  void write_data_all(FILE *);
+  virtual double single(int, int, int, int, double, double, double, double &);
+
+  virtual void *extract(const char *, int &);
+
+ protected:
+  double cut_lj_global;
+  double truncw, truncwi;
+  double **cut_lj,**cut_ljsq;
+  double cut_coul,cut_coulsq;
+  double **epsilon,**sigma,**gamma;
+  double **lj1,**lj2,**lj3,**lj4,**offset;
+  double *cut_respa;
+  double qdist;             // TIP4P distance from O site to negative charge
+  double g_ewald;
+
+  virtual void allocate();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Incorrect args for pair coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+E: Pair style lj/switch3/coulgauss/long requires atom attribute q
+
+The atom style defined does not have this attribute.
+
+E: Pair style requires a KSpace style
+
+No kspace style is defined.
+
+E: Pair cutoff < Respa interior cutoff
+
+One or more pairwise cutoffs are too short to use with the specified
+rRESPA cutoffs.
+
+*/
diff --git a/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f8346f1e33094e38ee11b16b82e89d0f69cc7892
--- /dev/null
+++ b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.cpp
@@ -0,0 +1,715 @@
+/* ----------------------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+   Contributing author: Steven Vandenbrande
+------------------------------------------------------------------------- */
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "pair_mm3_switch3_coulgauss_long.h"
+#include "atom.h"
+#include "comm.h"
+#include "force.h"
+#include "kspace.h"
+#include "update.h"
+#include "integrate.h"
+#include "respa.h"
+#include "neighbor.h"
+#include "neigh_list.h"
+#include "neigh_request.h"
+#include "math_const.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace MathConst;
+
+#define EWALD_F   1.12837917
+#define EWALD_P   0.3275911
+#define A1        0.254829592
+#define A2       -0.284496736
+#define A3        1.421413741
+#define A4       -1.453152027
+#define A5        1.061405429
+
+/* ---------------------------------------------------------------------- */
+
+PairMM3Switch3CoulGaussLong::PairMM3Switch3CoulGaussLong(LAMMPS *lmp) : Pair(lmp)
+{
+  ewaldflag = pppmflag = 1;
+  respa_enable = 1;
+  writedata = 1;
+  ftable = NULL;
+  qdist = 0.0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+PairMM3Switch3CoulGaussLong::~PairMM3Switch3CoulGaussLong()
+{
+  if (allocated) {
+    memory->destroy(setflag);
+    memory->destroy(cutsq);
+
+    memory->destroy(cut_lj);
+    memory->destroy(cut_ljsq);
+    memory->destroy(epsilon);
+    memory->destroy(sigma);
+    memory->destroy(gamma);
+    memory->destroy(lj1);
+    memory->destroy(lj2);
+    memory->destroy(lj3);
+    memory->destroy(lj4);
+    memory->destroy(offset);
+  }
+  if (ftable) free_tables();
+}
+
+/* ---------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::compute(int eflag, int vflag)
+{
+  int i,ii,j,jj,inum,jnum,itype,jtype,itable,jtable,ktable;
+  double qtmp,xtmp,ytmp,ztmp,delx,dely,delz,evdwl,ecoul,ecoul2,fpair;
+  double fraction,fraction2,table;
+  double r,r2inv,r6inv,forcecoul,forcecoul2,forcelj,factor_coul,factor_lj,tr,ftr,trx;
+  double grij,expm2,prefactor,prefactor2,t,erfc1,erfc2,rrij,expn2,expb,g_ewald2i,g_ewaldi;
+  int *ilist,*jlist,*numneigh,**firstneigh;
+  double rsq, lookup_corr;
+
+  evdwl = ecoul = 0.0;
+  if (eflag || vflag) ev_setup(eflag,vflag);
+  else evflag = vflag_fdotr = 0;
+
+  double **x = atom->x;
+  double **f = atom->f;
+  double *q = atom->q;
+  int *type = atom->type;
+  int nlocal = atom->nlocal;
+  double *special_coul = force->special_coul;
+  double *special_lj = force->special_lj;
+  int newton_pair = force->newton_pair;
+  double qqrd2e = force->qqrd2e;
+  union_int_float_t rsq_lookup;
+
+  inum = list->inum;
+  ilist = list->ilist;
+  numneigh = list->numneigh;
+  firstneigh = list->firstneigh;
+  g_ewaldi = 1.0/g_ewald;
+  g_ewald2i = g_ewaldi*g_ewaldi;
+  lookup_corr = 0.0;
+
+  // loop over neighbors of my atoms
+  for (ii = 0; ii < inum; ii++) {
+    i = ilist[ii];
+    qtmp = q[i];
+    xtmp = x[i][0];
+    ytmp = x[i][1];
+    ztmp = x[i][2];
+    itype = type[i];
+    jlist = firstneigh[i];
+    jnum = numneigh[i];
+
+    for (jj = 0; jj < jnum; jj++) {
+      j = jlist[jj];
+      factor_lj = special_lj[sbmask(j)];
+      factor_coul = special_coul[sbmask(j)];
+      j &= NEIGHMASK;
+
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+      jtype = type[j];
+
+      if (rsq < cutsq[itype][jtype]) {
+        r2inv = 1.0/rsq;
+ 
+        if (rsq < cut_coulsq) {
+          if (!ncoultablebits || rsq <= tabinnersq) {
+            r = sqrt(rsq);
+            grij = g_ewald * r;
+            expm2 = exp(-grij*grij);
+            t = 1.0 / (1.0 + EWALD_P*grij);
+            erfc1 = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2;
+            prefactor = qqrd2e * qtmp*q[j]/r;
+            forcecoul = prefactor * (erfc1 + EWALD_F*grij*expm2);
+            if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor;
+          } else {
+            rsq_lookup.f = rsq;
+            itable = rsq_lookup.i & ncoulmask;
+            itable >>= ncoulshiftbits;
+            fraction = (rsq_lookup.f - rtable[itable]) * drtable[itable];
+            table = ftable[itable] + fraction*dftable[itable];
+            forcecoul = qtmp*q[j] * table;
+            if (factor_coul < 1.0) {
+              table = ctable[itable] + fraction*dctable[itable];
+              prefactor = qtmp*q[j] * table;
+              forcecoul -= (1.0-factor_coul)*prefactor;
+            }
+          }
+        } else forcecoul = 0.0;
+
+        if (rsq < cut_ljsq[itype][jtype]) {
+          // Repulsive exponential part
+          r = sqrt(rsq);
+          expb = lj3[itype][jtype]*exp(-lj1[itype][jtype]*r);
+          forcelj = expb*lj1[itype][jtype]*r;
+          // Attractive r^-6 part
+          r6inv = r2inv*r2inv*r2inv;
+          forcelj -= 6.0*lj4[itype][jtype]*r6inv;
+          // Correction for Gaussian radii
+          if (lj2[itype][jtype]==0.0) {
+            // This means a point charge is considered, so the correction is zero
+            expn2 = 0.0;
+            erfc2 = 0.0;
+            forcecoul2 = 0.0;
+          }
+          else {
+            rrij = lj2[itype][jtype]*r;
+            expn2 = exp(-rrij*rrij);
+            erfc2 = erfc(rrij);
+            prefactor2 = -qqrd2e*qtmp*q[j]/r;
+            forcecoul2 = prefactor2*(erfc2+EWALD_F*rrij*expn2);
+          }
+        } else forcelj = 0.0;
+
+        if (rsq < cut_coulsq) {
+          if (!ncoultablebits || rsq <= tabinnersq)
+            ecoul = prefactor*erfc1;
+          else {
+            table = etable[itable] + fraction*detable[itable];
+            ecoul = qtmp*q[j] * table;
+          }
+          if (factor_coul < 1.0) ecoul -= (1.0-factor_coul)*prefactor;
+        } else ecoul = 0.0;
+
+        if (rsq < cut_ljsq[itype][jtype]) {
+          ecoul += prefactor2*erfc2*factor_coul;
+          evdwl = expb-lj4[itype][jtype]*r6inv-offset[itype][jtype];
+        } else evdwl = 0.0;
+
+        // Truncation, see Yaff Switch3
+        if (truncw>0) {
+          if (rsq < cut_ljsq[itype][jtype]) {
+            if (r>cut_lj[itype][jtype]-truncw) {
+              trx = (cut_lj[itype][jtype]-r)*truncwi;
+              tr = trx*trx*(3.0-2.0*trx);
+              ftr = 6.0*trx*(1.0-trx)*r*truncwi;    
+              forcelj = forcelj*tr + evdwl*ftr;
+              evdwl *= tr;
+            }
+          }
+        }
+
+        fpair = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
+        evdwl *= factor_lj;
+
+        f[i][0] += delx*fpair;
+        f[i][1] += dely*fpair;
+        f[i][2] += delz*fpair;
+        if (newton_pair || j < nlocal) {
+          f[j][0] -= delx*fpair;
+          f[j][1] -= dely*fpair;
+          f[j][2] -= delz*fpair;
+        }
+
+        if (evflag) ev_tally(i,j,nlocal,newton_pair,
+                             evdwl,ecoul,fpair,delx,dely,delz);
+      }
+    }
+  }
+
+  if (vflag_fdotr) virial_fdotr_compute();
+}
+
+
+/* ----------------------------------------------------------------------
+   allocate all arrays
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::allocate()
+{
+  allocated = 1;
+  int n = atom->ntypes;
+
+  memory->create(setflag,n+1,n+1,"pair:setflag");
+  for (int i = 1; i <= n; i++)
+    for (int j = i; j <= n; j++)
+      setflag[i][j] = 0;
+
+  memory->create(cutsq,n+1,n+1,"pair:cutsq");
+
+  memory->create(cut_lj,n+1,n+1,"pair:cut_lj");
+  memory->create(cut_ljsq,n+1,n+1,"pair:cut_ljsq");
+  memory->create(epsilon,n+1,n+1,"pair:epsilon");
+  memory->create(sigma,n+1,n+1,"pair:sigma");
+  memory->create(gamma,n+1,n+1,"pair:gamma");
+  memory->create(lj1,n+1,n+1,"pair:lj1");
+  memory->create(lj2,n+1,n+1,"pair:lj2");
+  memory->create(lj3,n+1,n+1,"pair:lj3");
+  memory->create(lj4,n+1,n+1,"pair:lj4");
+  memory->create(offset,n+1,n+1,"pair:offset");
+}
+
+/* ----------------------------------------------------------------------
+   global settings
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::settings(int narg, char **arg)
+{
+ if (narg < 2 || narg > 3) error->all(FLERR,"Illegal pair_style command");
+
+  cut_lj_global = force->numeric(FLERR,arg[0]);
+  if (narg == 2) {
+    cut_coul = cut_lj_global;
+    truncw = force->numeric(FLERR,arg[1]);
+  }
+  else {
+    cut_coul = force->numeric(FLERR,arg[1]);
+    truncw = force->numeric(FLERR,arg[2]);
+  }
+  if (truncw>0.0) truncwi = 1.0/truncw;
+  else truncwi = 0.0;
+  // reset cutoffs that have been explicitly set
+
+  if (allocated) {
+    int i,j;
+    for (i = 1; i <= atom->ntypes; i++)
+      for (j = i; j <= atom->ntypes; j++)
+        if (setflag[i][j]) cut_lj[i][j] = cut_lj_global;
+  }
+}
+
+/* ----------------------------------------------------------------------
+   set coeffs for one or more type pairs
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::coeff(int narg, char **arg)
+{
+  if (narg < 5 || narg > 6)
+    error->all(FLERR,"Incorrect args for pair coefficients");
+  if (!allocated) allocate();
+
+  int ilo,ihi,jlo,jhi;
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+
+  double epsilon_one = force->numeric(FLERR,arg[2]);
+  double sigma_one = force->numeric(FLERR,arg[3]);
+  double gamma_one = force->numeric(FLERR,arg[4]);
+
+  double cut_lj_one = cut_lj_global;
+  if (narg == 6) cut_lj_one = force->numeric(FLERR,arg[5]);
+
+  int count = 0;
+  for (int i = ilo; i <= ihi; i++) {
+    for (int j = MAX(jlo,i); j <= jhi; j++) {
+      epsilon[i][j] = epsilon_one;
+      sigma[i][j] = sigma_one;
+      gamma[i][j] = gamma_one;
+      cut_lj[i][j] = cut_lj_one;
+      setflag[i][j] = 1;
+      count++;
+    }
+  }
+
+  if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
+}
+
+/* ----------------------------------------------------------------------
+   init specific to this pair style
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::init_style()
+{
+  if (!atom->q_flag)
+    error->all(FLERR,"Pair style mm3/switch3/coulgauss/long requires atom attribute q");
+
+  // request regular or rRESPA neighbor list
+
+  int irequest;
+  int respa = 0;
+
+  if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
+    if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
+    if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
+  }
+
+  irequest = neighbor->request(this,instance_me);
+
+  if (respa >= 1) {
+    neighbor->requests[irequest]->respaouter = 1;
+    neighbor->requests[irequest]->respainner = 1;
+  }
+  if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
+
+  cut_coulsq = cut_coul * cut_coul;
+
+  // set rRESPA cutoffs
+
+  if (strstr(update->integrate_style,"respa") &&
+      ((Respa *) update->integrate)->level_inner >= 0)
+    cut_respa = ((Respa *) update->integrate)->cutoff;
+  else cut_respa = NULL;
+
+  // insure use of KSpace long-range solver, set g_ewald
+
+  if (force->kspace == NULL)
+    error->all(FLERR,"Pair style requires a KSpace style");
+  g_ewald = force->kspace->g_ewald;
+
+  // setup force tables
+
+  if (ncoultablebits) init_tables(cut_coul,cut_respa);
+}
+
+/* ----------------------------------------------------------------------
+   init for one type pair i,j and corresponding j,i
+------------------------------------------------------------------------- */
+
+double PairMM3Switch3CoulGaussLong::init_one(int i, int j)
+{
+  if (setflag[i][j] == 0) {
+    epsilon[i][j] = sqrt(epsilon[i][i]*epsilon[j][j]);
+    sigma[i][j] = 0.5*(sigma[i][i] + sigma[j][j]);
+    gamma[i][j] = 1.0/sqrt(gamma[i][i]*gamma[i][i]+gamma[j][j]*gamma[j][j]);
+    cut_lj[i][j] = mix_distance(cut_lj[i][i],cut_lj[j][j]);
+  }
+
+  double cut = MAX(cut_lj[i][j],cut_coul+2.0*qdist);
+  cut_ljsq[i][j] = cut_lj[i][j] * cut_lj[i][j];
+  lj1[i][j] = 12.0 / (2.0*sigma[i][j]);
+  if (gamma[i][i]==0.0 && gamma[j][j]==0.0) lj2[i][j] = 0.0;
+  else lj2[i][j] = 1.0/sqrt(gamma[i][i]*gamma[i][i]+gamma[j][j]*gamma[j][j]);
+  lj3[i][j] = 1.84e5 * epsilon[i][j];
+  lj4[i][j] = 2.25 * epsilon[i][j] * pow(2.0*sigma[i][j],6.0);
+
+  if (offset_flag && (cut_lj[i][j] > 0.0)) {
+    // Truncation is active, so offset is zero, except if truncw==0.0
+    if (truncw==0.0) {
+      double r = cut_lj[i][j];
+      double r2inv = 1.0/(r*r);
+      double r6inv = r2inv*r2inv*r2inv;
+      double expb = lj3[i][j]*exp(-lj1[i][j]*r);
+      offset[i][j] = expb-lj4[i][j]*r6inv;
+    }
+    else {offset[i][j] = 0.0;}
+  } else offset[i][j] = 0.0;
+
+  cut_ljsq[j][i] = cut_ljsq[i][j];
+  cut_lj[j][i] = cut_lj[i][j];
+  lj1[j][i] = lj1[i][j];
+  lj2[j][i] = lj2[i][j];
+  lj3[j][i] = lj3[i][j];
+  lj4[j][i] = lj4[i][j];
+  offset[j][i] = offset[i][j];
+
+  // check interior rRESPA cutoff
+
+  if (cut_respa && MIN(cut_lj[i][j],cut_coul) < cut_respa[3])
+    error->all(FLERR,"Pair cutoff < Respa interior cutoff");
+
+  // compute I,J contribution to long-range tail correction
+  // count total # of atoms of type I and J via Allreduce
+
+  if (tail_flag) {
+    int *type = atom->type;
+    int nlocal = atom->nlocal;
+
+    double count[2],all[2];
+    count[0] = count[1] = 0.0;
+    for (int k = 0; k < nlocal; k++) {
+      if (type[k] == i) count[0] += 1.0;
+      if (type[k] == j) count[1] += 1.0;
+    }
+    MPI_Allreduce(count,all,2,MPI_DOUBLE,MPI_SUM,world);
+
+    double cg = epsilon[i][j];
+    double cg1 = cut_lj[i][j];
+    double cg3 = 2.0*sigma[i][j];//Mind the factor 2 here!!!
+    if (truncw > 0.0) {
+        double cg5 = truncw;
+        double t1 = pow(cg3, 0.2e1);
+        double t2 = t1 * cg3;
+        double t3 = 0.5e1 / 0.216e3 * t2;
+        double t5 = cg1 / 0.9e1;
+        double t8 = -cg1 + cg5;
+        double t14 = t8 * t8;
+        double t17 = 0.1e1 / cg3;
+        double t20 = exp(0.12e2 * t17 * cg5);
+        double t30 = pow(cg1, 0.2e1);
+        double t36 = exp(-0.12e2 * t17 * cg1);
+        double t37 = pow(cg5, 0.2e1);
+        double t39 = 0.1e1 / t37 / cg5;
+        double t43 = cg1 * t8;
+        double t44 = log(-t8);
+        double t47 = log(cg1);
+        double t54 = t1 * t1;
+        double t64 = cg * (0.6388888889e3 * ((-t3 + (0.7e1 / 0.36e2 * cg5 - t5) * t1 - 0.2e1 / 0.3e1 * t8 * (cg5 - cg1 / 0.4e1) * cg3 + cg5 * t14) * t20 + t3 + (cg5 / 0.12e2 + t5) * t1 + (cg5 + cg1 / 0.3e1) * cg1 * cg3 / 0.2e1 + t30 * cg5) * t2 * t36 * t39 - 0.225e1 * (0.2e1 * t43 * t44 - 0.2e1 * t43 * t47 + cg5 * (cg5 - 0.2e1 * cg1)) * t54 * t1 / cg1 / t8 * t39);
+        etail_ij = 2.0*MY_PI*all[0]*all[1]*t64;
+        ptail_ij = 2.0*MY_PI*all[0]*all[1]*t64;
+    }
+    else {
+        double t2 = pow(cg3, 0.2e1);
+        double t3 = t2 * t2;
+        double t7 = 0.12e2 / cg3 * cg1;
+        double t8 = exp(t7);
+        double t11 = pow(cg1, 0.2e1);
+        double t12 = t11 * t11;
+        double t17 = t11 * cg1;
+        double t21 = exp(-t7);
+        double t27 = -0.9259259259e-2 * cg3 * cg * (0.81e2 * t3 * cg3 * t8 - 0.1656000e7 * t12 * cg1 - 0.276000e6 * cg3 * t12 - 0.23000e5 * t2 * t17) * t21 / t17;
+        double t1 = pow(cg3, 0.2e1);
+        t2 = t1 * t1;
+        double t6 = 0.12e2 / cg3 * cg1;
+        t7 = exp(t6);
+        double t10 = pow(cg1, 0.2e1);
+        t11 = t10 * t10;
+        double t19 = t10 * cg1;
+        double t25 = exp(-t6);
+        double t29 = 0.5555555556e-1 * cg * (0.81e2 * t2 * t1 * t7 - 0.3312000e7 * t11 * t10 - 0.828000e6 * cg3 * t11 * cg1 - 0.138000e6 * t1 * t11 - 0.11500e5 * t19 * t1 * cg3) * t25 / t19;
+        etail_ij = 2.0*MY_PI*all[0]*all[1]*t27;
+        ptail_ij = -2.0/3.0*MY_PI*all[0]*all[1]*t29;
+    }
+  }
+
+  return cut;
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 writes to restart file
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::write_restart(FILE *fp)
+{
+  write_restart_settings(fp);
+
+  int i,j;
+  for (i = 1; i <= atom->ntypes; i++)
+    for (j = i; j <= atom->ntypes; j++) {
+      fwrite(&setflag[i][j],sizeof(int),1,fp);
+      if (setflag[i][j]) {
+        fwrite(&epsilon[i][j],sizeof(double),1,fp);
+        fwrite(&sigma[i][j],sizeof(double),1,fp);
+        fwrite(&gamma[i][j],sizeof(double),1,fp);
+        fwrite(&cut_lj[i][j],sizeof(double),1,fp);
+      }
+    }
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 reads from restart file, bcasts
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::read_restart(FILE *fp)
+{
+  read_restart_settings(fp);
+
+  allocate();
+
+  int i,j;
+  int me = comm->me;
+  for (i = 1; i <= atom->ntypes; i++)
+    for (j = i; j <= atom->ntypes; j++) {
+      if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp);
+      MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world);
+      if (setflag[i][j]) {
+        if (me == 0) {
+          fread(&epsilon[i][j],sizeof(double),1,fp);
+          fread(&sigma[i][j],sizeof(double),1,fp);
+          fread(&gamma[i][j],sizeof(double),1,fp);
+          fread(&cut_lj[i][j],sizeof(double),1,fp);
+        }
+        MPI_Bcast(&epsilon[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&cut_lj[i][j],1,MPI_DOUBLE,0,world);
+      }
+    }
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 writes to restart file
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::write_restart_settings(FILE *fp)
+{
+  fwrite(&cut_lj_global,sizeof(double),1,fp);
+  fwrite(&cut_coul,sizeof(double),1,fp);
+  fwrite(&truncw,sizeof(double),1,fp);
+  fwrite(&offset_flag,sizeof(int),1,fp);
+  fwrite(&mix_flag,sizeof(int),1,fp);
+  fwrite(&tail_flag,sizeof(int),1,fp);
+  fwrite(&ncoultablebits,sizeof(int),1,fp);
+  fwrite(&tabinner,sizeof(double),1,fp);
+}
+
+/* ----------------------------------------------------------------------
+  proc 0 reads from restart file, bcasts
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::read_restart_settings(FILE *fp)
+{
+  if (comm->me == 0) {
+    fread(&cut_lj_global,sizeof(double),1,fp);
+    fread(&cut_coul,sizeof(double),1,fp);
+    fread(&truncw,sizeof(double),1,fp);
+    fread(&offset_flag,sizeof(int),1,fp);
+    fread(&mix_flag,sizeof(int),1,fp);
+    fread(&tail_flag,sizeof(int),1,fp);
+    fread(&ncoultablebits,sizeof(int),1,fp);
+    fread(&tabinner,sizeof(double),1,fp);
+  }
+  printf("Reading from restart, trunc = %f\n",truncw);
+  MPI_Bcast(&cut_lj_global,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&cut_coul,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&truncw,1,MPI_DOUBLE,0,world);
+  MPI_Bcast(&offset_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&mix_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&tail_flag,1,MPI_INT,0,world);
+  MPI_Bcast(&ncoultablebits,1,MPI_INT,0,world);
+  MPI_Bcast(&tabinner,1,MPI_DOUBLE,0,world);
+}
+
+
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->ntypes; i++)
+    fprintf(fp,"%d %g %g %g\n",i,epsilon[i][i],sigma[i][i],gamma[i][i]);
+}
+
+/* ----------------------------------------------------------------------
+   proc 0 writes all pairs to data file
+------------------------------------------------------------------------- */
+
+void PairMM3Switch3CoulGaussLong::write_data_all(FILE *fp)
+{
+  for (int i = 1; i <= atom->ntypes; i++)
+    for (int j = i; j <= atom->ntypes; j++)
+      fprintf(fp,"%d %d %g %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],gamma[i][j],cut_lj[i][j]);
+}
+
+/* ---------------------------------------------------------------------- */
+
+double PairMM3Switch3CoulGaussLong::single(int i, int j, int itype, int jtype,
+                                 double rsq,
+                                 double factor_coul, double factor_lj,
+                                 double &fforce)
+{
+  double r2inv,r6inv,r,grij,expm2,t,erfc1,prefactor,prefactor2,rrij,expn2,erfc2;
+  double fraction,table,forcecoul,forcecoul2,forcelj,phicoul,phicoul2,philj;
+  double expb, ecoul, evdwl, trx, tr, ftr;
+
+  int itable;
+
+  r2inv = 1.0/rsq;
+  if (rsq < cut_coulsq) {
+    if (!ncoultablebits || rsq <= tabinnersq) {
+      r = sqrt(rsq);
+      grij = g_ewald * r;
+      expm2 = exp(-grij*grij);
+      t = 1.0 / (1.0 + EWALD_P*grij);
+      erfc1 = t * (A1+t*(A2+t*(A3+t*(A4+t*A5)))) * expm2;
+      prefactor = force->qqrd2e * atom->q[i]*atom->q[j]/r;
+      forcecoul = prefactor * (erfc1 + EWALD_F*grij*expm2);
+      if (factor_coul < 1.0) forcecoul -= (1.0-factor_coul)*prefactor;
+    } else {
+      union_int_float_t rsq_lookup_single;
+      rsq_lookup_single.f = rsq;
+      itable = rsq_lookup_single.i & ncoulmask;
+      itable >>= ncoulshiftbits;
+      fraction = (rsq_lookup_single.f - rtable[itable]) * drtable[itable];
+      table = ftable[itable] + fraction*dftable[itable];
+      forcecoul = atom->q[i]*atom->q[j] * table;
+      if (factor_coul < 1.0) {
+        table = ctable[itable] + fraction*dctable[itable];
+        prefactor = atom->q[i]*atom->q[j] * table;
+        forcecoul -= (1.0-factor_coul)*prefactor;
+      }
+    }
+  } else forcecoul = 0.0;
+
+  if (rsq < cut_ljsq[itype][jtype]) {
+    r = sqrt(rsq);
+    r6inv = r2inv*r2inv*r2inv;
+    expb = lj3[itype][jtype]*exp(-lj1[itype][jtype]*r);
+    rrij = lj2[itype][jtype] * r;
+    if (rrij==0.0) {
+      expn2 = 0.0;
+      erfc2 = 0.0;
+    }
+    else {
+      expn2 = exp(-rrij*rrij);
+      erfc2 = erfc(rrij);
+    }
+    prefactor2 = -force->qqrd2e * atom->q[i]*atom->q[j]/r;
+    forcecoul2 = prefactor2 * (erfc2 + EWALD_F*rrij*expn2);
+    forcelj = expb*lj1[itype][jtype]*r-6.0*lj4[itype][jtype]*r6inv;
+  } else forcelj = 0.0;
+
+  double eng = 0.0;
+  if (rsq < cut_coulsq) {
+    if (!ncoultablebits || rsq <= tabinnersq)
+      phicoul = prefactor*erfc1;
+    else {
+      table = etable[itable] + fraction*detable[itable];
+      phicoul = atom->q[i]*atom->q[j] * table;
+    }
+    if (factor_coul < 1.0) phicoul -= (1.0-factor_coul)*prefactor;
+    eng += phicoul;
+  }
+
+  if (rsq < cut_ljsq[itype][jtype]) {
+    ecoul += prefactor2*erfc2*factor_coul;
+    evdwl = expb-lj4[itype][jtype]*r6inv-offset[itype][jtype];
+  } else evdwl = 0.0;
+
+  // Truncation, see Yaff Switch3
+  if (truncw>0) {
+    if (rsq < cut_ljsq[itype][jtype]) {
+      if (r>cut_lj[itype][jtype]-truncw) {
+        trx = (cut_lj[itype][jtype]-r)*truncwi;
+        tr = trx*trx*(3.0-2.0*trx);
+        ftr = 6.0*trx*(1.0-trx)*r*truncwi;    
+        forcelj = forcelj*tr + evdwl*ftr;
+        evdwl *= tr;
+      }
+    }
+  }
+  eng += evdwl*factor_lj;
+  fforce = (forcecoul + factor_coul*forcecoul2 + factor_lj*forcelj) * r2inv;
+
+  return eng;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void *PairMM3Switch3CoulGaussLong::extract(const char *str, int &dim)
+{
+  dim = 0;
+  if (strcmp(str,"cut_coul") == 0) return (void *) &cut_coul;
+  dim = 2;
+  if (strcmp(str,"epsilon") == 0) return (void *) epsilon;
+  if (strcmp(str,"sigma") == 0) return (void *) sigma;
+  if (strcmp(str,"gamma") == 0) return (void *) gamma;
+  return NULL;
+}
diff --git a/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.h b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.h
new file mode 100644
index 0000000000000000000000000000000000000000..35ae6c7995c927a4dd540efb063f5af0ebb3e053
--- /dev/null
+++ b/src/USER-YAFF/pair_mm3_switch3_coulgauss_long.h
@@ -0,0 +1,91 @@
+/* -*- c++ -*- ----------------------------------------------------------
+   LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+   http://lammps.sandia.gov, Sandia National Laboratories
+   Steve Plimpton, sjplimp@sandia.gov
+
+   Copyright (2003) Sandia Corporation.  Under the terms of Contract
+   DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+   certain rights in this software.  This software is distributed under
+   the GNU General Public License.
+
+   See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef PAIR_CLASS
+
+PairStyle(mm3/switch3/coulgauss/long,PairMM3Switch3CoulGaussLong)
+
+#else
+
+#ifndef LMP_PAIR_MM3_SWITCH3_COULGAUSS_LONG_H
+#define LMP_PAIR_MM3_SWITCH3_COULGAUSS_LONG_H
+
+#include "pair.h"
+
+namespace LAMMPS_NS {
+
+class PairMM3Switch3CoulGaussLong : public Pair {
+
+ public:
+  PairMM3Switch3CoulGaussLong(class LAMMPS *);
+  virtual ~PairMM3Switch3CoulGaussLong();
+  virtual void compute(int, int);
+  virtual void settings(int, char **);
+  void coeff(int, char **);
+  virtual void init_style();
+  virtual double init_one(int, int);
+  void write_restart(FILE *);
+  void read_restart(FILE *);
+  virtual void write_restart_settings(FILE *);
+  virtual void read_restart_settings(FILE *);
+  void write_data(FILE *);
+  void write_data_all(FILE *);
+  virtual double single(int, int, int, int, double, double, double, double &);
+
+  virtual void *extract(const char *, int &);
+
+ protected:
+  double cut_lj_global;
+  double truncw, truncwi;
+  double **cut_lj,**cut_ljsq;
+  double cut_coul,cut_coulsq;
+  double **epsilon,**sigma,**gamma;
+  double **lj1,**lj2,**lj3,**lj4,**offset;
+  double *cut_respa;
+  double qdist;             // TIP4P distance from O site to negative charge
+  double g_ewald;
+
+  virtual void allocate();
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Illegal ... command
+
+Self-explanatory.  Check the input script syntax and compare to the
+documentation for the command.  You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Incorrect args for pair coefficients
+
+Self-explanatory.  Check the input script or data file.
+
+E: Pair style mm3/switch3/coulgauss/long requires atom attribute q
+
+The atom style defined does not have this attribute.
+
+E: Pair style requires a KSpace style
+
+No kspace style is defined.
+
+E: Pair cutoff < Respa interior cutoff
+
+One or more pairwise cutoffs are too short to use with the specified
+rRESPA cutoffs.
+
+*/
diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp
index 9c536dcbc6610478c57bf05a5e4e913130b73db3..c3d55d76a41c8b0e53dc0e45598f2a611eab65c4 100644
--- a/src/create_atoms.cpp
+++ b/src/create_atoms.cpp
@@ -725,6 +725,24 @@ void CreateAtoms::add_lattice()
   domain->lattice->bbox(1,bboxhi[0],bboxhi[1],bboxhi[2],
                         xmin,ymin,zmin,xmax,ymax,zmax);
 
+  // narrow down min/max further by extent of the region, if possible
+
+  if (domain->regions[nregion]->bboxflag) {
+    const double rxmin = domain->regions[nregion]->extent_xlo;
+    const double rxmax = domain->regions[nregion]->extent_xhi;
+    const double rymin = domain->regions[nregion]->extent_ylo;
+    const double rymax = domain->regions[nregion]->extent_yhi;
+    const double rzmin = domain->regions[nregion]->extent_zlo;
+    const double rzmax = domain->regions[nregion]->extent_zhi;
+
+    if (rxmin > xmin) xmin = (rxmin > xmax) ? xmax : rxmin;
+    if (rxmax < xmax) xmax = (rxmax < xmin) ? xmin : rxmax;
+    if (rymin > ymin) ymin = (rymin > ymax) ? ymax : rymin;
+    if (rymax < ymax) ymax = (rymax < ymin) ? ymin : rymax;
+    if (rzmin > zmin) zmin = (rzmin > zmax) ? zmax : rzmin;
+    if (rzmax < zmax) zmax = (rzmax < zmin) ? zmin : rzmax;
+  }
+
   // ilo:ihi,jlo:jhi,klo:khi = loop bounds for lattice overlap of my subbox
   // overlap = any part of a unit cell (face,edge,pt) in common with my subbox
   // in lattice space, subbox is a tilted box
@@ -751,15 +769,32 @@ void CreateAtoms::add_lattice()
   // convert lattice coords to box coords
   // add atom or molecule (on each basis point) if it meets all criteria
 
-  double **basis = domain->lattice->basis;
-  double x[3],lamda[3];
-  double *coord;
+  const double * const * const basis = domain->lattice->basis;
+
+  // rough estimate of total time used for create atoms.
+  // one inner loop takes about 25ns on a typical desktop CPU core in 2019
+  double testimate = 2.5e-8/3600.0; // convert seconds to hours
+  testimate *= static_cast<double>(khi-klo+1);
+  testimate *= static_cast<double>(jhi-jlo+1);
+  testimate *= static_cast<double>(ihi-ilo+1);
+  testimate *= static_cast<double>(nbasis);
+  double maxestimate = 0.0;
+  MPI_Reduce(&testimate,&maxestimate,1,MPI_DOUBLE,MPI_MAX,0,world);
+
+  if ((comm->me == 0) && (maxestimate > 0.01)) {
+    if (screen) fprintf(screen,"WARNING: create_atoms will take "
+                        "approx. %.2f hours to complete\n",maxestimate);
+    if (logfile) fprintf(logfile,"WARNING: create_atoms will take "
+                         "approx. %.2f hours to complete\n",maxestimate);
+  }
 
   int i,j,k,m;
-  for (k = klo; k <= khi; k++)
-    for (j = jlo; j <= jhi; j++)
-      for (i = ilo; i <= ihi; i++)
+  for (k = klo; k <= khi; k++) {
+    for (j = jlo; j <= jhi; j++) {
+      for (i = ilo; i <= ihi; i++) {
         for (m = 0; m < nbasis; m++) {
+          double *coord;
+          double x[3],lamda[3];
 
           x[0] = i + basis[m][0];
           x[1] = j + basis[m][1];
@@ -794,8 +829,12 @@ void CreateAtoms::add_lattice()
           if (mode == ATOM) atom->avec->create_atom(basistype[m],x);
           else add_molecule(x);
         }
+      }
+    }
+  }
 }
 
+
 /* ----------------------------------------------------------------------
    add a randomly rotated molecule with its center at center
    if quat_user set, perform requested rotation