atomdb package#
AtomDB, a database of atomic and ionic properties.
- class atomdb.Element(elem)#
Bases:
object
Element properties.
Attributes#
- atnumint
Atomic number of the element.
- symbolstr
Symbol of the element.
- namestr
Name of the element.
- property at_radius#
atomic radius of the element.
Returns#
at_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “wc”
- Source
Waber and D. T. Cromer, J. Chem. Phys. 42, 4116 (1965)
- Units
angstrom
- Notes
For each element, the largest radius of the outer orbitals is taken.
- “cr”
- Source
Clementi, D. L. Raimondi, W. P. Reinhardt, J. Chem. Phys. 47, 1300 (1967)
- Units
angstrom
- property atnum#
- property c6#
Isolated atom C6 dispersion coefficients of the element.
Returns#
c6 : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “chu”
- Source
Chu & A. Dalgarno, J. Chem. Phys., 121(9), 4083–4088 (2004)
- Units
au
- Notes
Theoretical value for hydrogen from this paper: K. T. Tang, J. M. Norbeck and P. R. Certain, J. Chem. Phys. 64, 3063 (1976) http://dx.doi.org/10.1063/1.432569
- property cov_radius#
Covalent radius of the element.
Returns#
cov_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “cordero”
- Source
B. Cordero, V. Gomez, A. E. Platero-Prats, M. Reves, J. Echeverria,E. Cremades, F. Barragan, and S. Alvarez, Dalton Trans. pp. 2832–2838 (2008)
- Units
angstrom
- Notes
For carbon the number is a weighted average over the data for different hybridizations. For Mn, Fe, and Co, the number is a weighted average over the data for different spins (high spin and low spin)
- “bragg”
- Source
Bragg, Phil. Mag. 40, 169 (1920)
- Units
angstrom
- “slater”
- Source
Slater, J. Chem. Phys. 41, 3199 (1964)
- Units
angstrom
- property eneg#
Electronegativity of the element.
Returns#
eneg : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “pauling”
- Source
Allred, J. Inorg. Nuc. Chem. 17, 215 (1961)
- Units
float
- property mass#
Atomic mass of the element.
Returns#
mass : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “stb”
- Source
Thomas Prohaska et. al. Pure Appl. Chem. 2022, 94
- Units
amu
- Notes
For Tc, Pm, Po - Ac, Np, Pu, Am-Og the mass of the most abundant isotope or with longer half-life taken from https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl
- “nist”
- Units
amu
- Notes
Mass of the most common isotope
- property pold#
Isolated atom dipole polarizability of the element.
Returns#
pold : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “crc”
- Source
CRC Handbook of Chemistry and Physics (CRC, Boca Raton, FL, 2003).
- Units
angstrom**3
- Notes
If multiple values were present in the CRC book, the value used in Erin’s postg code is taken
- “chu”
- Source
Chu, A. Dalgarno, J. Chem. Phys., 121(9), 4083–4088 (2004)
- Units
au
- Notes
Theoretical value for hydrogen from this paper: A.D. Buckingham, K.L. Clarke, Chem. Phys. Lett. 57(3), 321–325 (1978) http://dx.doi.org/10.1016/0009-2614(78)85517-1
- “sn”
- Source
Schwerdtfeger, P., Nagle, J. K. (2018). Molecular Physics, 117(9-12), 1200-1225.
- Units
au
- Notes
For Lv no value currently available
- property vdw_radius#
van der Waals radius of the element.
Returns#
vdw_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “bondi”
- Source
Bondi, J. Phys. Chem. 68, 441 (1964)
- Units
angstrom
- “truhlar”
- Source
Mantina A. C. Chamberlin R. Valero C. J. Cramer D. G. Truhlar J. Phys. Chem. A 113 5806 (2009)
- Units
angstrom
- “rt”
- Source
Rowland and R. Taylor, J. Phys. Chem. 100, 7384 (1996)
- Units
angstrom
- “batsanov”
- Source
Batsanov Inorganic Materials 37 871 (2001)
- Units
angstrom
- “dreiding”
- Source
Stephen L. Mayo, Barry D. Olafson, and William A. Goddard III J. Phys. Chem. 94 8897 (1990)
- Units
2angstrom
- Notes
R_0 parameter, unit 2angstrom is used so that numbers are divided by 2 upon reading
- “uff”
- Source
Rappi, C. J. Casewit, K. S. Colwell, W. A. Goddard III, and W. M. Skid J. Am. Chem. Soc. 114 10024 (1992)
- Units
2angstrom
- Notes
x_I parameter, unit 2angstrom is used so that numbers are divided by 2 upon reading
- “mm3”
- Source
Allinger, X. Zhou, and J. Bergsma, Journal of Molecular Structure: THEOCHEM 312, 69 (1994)
- Units
angstrom
- class atomdb.Promolecule#
Bases:
object
Promolecule class.
A promolecule is an approximation of a molecule constructed from a linear combination of atomic and/or ionic species. Properties of this promolecule can be computed from those of the atomic and/or ionic species, depending on whether the property is an extensive one or an intensive one.
For an extensive property, the formula is a linear combination:
\[\text{prop.}_{\text{mol;extensive}} = \sum_{A=1}^{N_{\text{atoms}}} c_A \text{prop.}_A\]For an intensive property, the formula is a mean:
\[\text{prop.}_{\text{mol;intensive}} = {\left\langle \left\{ \text{prop.}_A \right\}_{A=1}^{N_{\text{atoms}}} \right\rangle}_p\]where the parameter
p
defines the type of mean used (1 = linear, 2 = geometric, etc.).Attributes#
- atoms: list of Species
Species instances out of which the promolecule is composed.
- coords: np.ndarray((N, 3), dtype=float)
Coordinates of each species component of the promolecule.
- coeffs: np.ndarray((N,), dtype=float)
Coefficients of each species component of the promolecule.
- density(points, spin='t', log=False)#
Compute the electron density of the promolecule at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the density.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- density: np.ndarray((N,), dtype=float)
Density evaluated at N points.
- eta(p=1)#
Compute the chemical hardness of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- eta: float
Chemical hardness of the promolecule.
- gradient(points, spin='t', log=False)#
Compute the electron density gradient of the promolecule at the desired points.
Promolecular gradient:
\[\nabla \rho_{\text{mol}}^{(0)} (\mathbf{R}) = \sum_{A=1}^{N_{\text{atoms}}}\ c_A \nabla \rho_A^{(0)}(\mathbf{R})\]where
\(N_{\text{atoms}}\) is the number of atoms in the molecule,
\(c_A\) are the coefficients of the species,
\(R\) are points in 3D cartesian coordinates,
\(\nabla \rho_A^{(0)}(\mathbf{R})\) is the gradient of the species.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density gradient.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- gradient: np.ndarray((N, 3), dtype=float)
Electron density gradient of the promolecule evaluated at N points.
- hessian(points, spin='t', log=False)#
Compute the promolecule’s electron density Hessian at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density Hessian.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- hess: np.ndarray((N, 3, 3), dtype=float)
Electron density Hessian of the promolecule evaluated at N points.
- ip(p=1)#
Compute the ionization potential of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- ip: float
Ionization potential of the promolecule.
- ked(points, spin='t', log=False)#
Compute the kinetic energy density of the promolecule at the desired points.
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the kinetic energy density.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- ked: np.ndarray((N,), dtype=float)
Kinetic energy density evaluated at N points.
- laplacian(points, spin='t', log=False)#
Compute the promolecule’s electron density Laplacian at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density Laplacian.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- laplacian: np.ndarray((N,), dtype=float)
Electron density Laplacian of the promolecule evaluated at N points.
- mu(p=1)#
Compute the chemical potential of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- mu: float
Chemical potential of the promolecule.
- mult(p=1)#
Compute the multiplicity of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- mult: float
Multiplicity of the promolecule.
- class atomdb.Species(dataset, fields, spinpol=1)#
Bases:
object
Properties of atomic and ionic species.
- property at_radius#
Atomic radius.
Returns#
- at_radiusdict, float
The return dictionary contains atomic radii types wc and cr. For references corresponding to each type check theochem/AtomDB
- property atmass#
Atomic mass in atomic units.
Returns#
- atmassdict
Two options are available: the isotopically averaged mass ‘stb’, and the mass of the most common isotope ‘nist’. For references corresponding to each type check theochem/AtomDB
- property charge#
Charge
\[Q = Z - N\]Where Q is the charge, Z the atomic number and N the total number of electrons stored in SpeciesData object.
Returns#
charge : int
- property cov_radius#
Covalent radius (derived from crystallographic data).
Returns#
- cov_radiusdict, float
The return dictionary contains crystallographic covalent radii types cordero, bragg and slater. For references corresponding to each type check theochem/AtomDB
- d_dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the first derivative of the electronic density.
The derivarive of the density as a function of the distance to the atomic center (a set of points along a 1-D grid) is modeled by a cubic spline. The property can be computed for the alpha, beta, alpha + beta, and alpha - beta components of the electron density.
Parameters#
- spinstr, optional
Type of occupied spin orbitals which can be either “a” (for alpha), “b” (for beta), “ab” (for alpha + beta), and, “m” (for alpha - beta), by default ‘ab’
- indexsequence of int, optional
Sequence of integers representing the spin orbitals which are indexed from 1 to the number basis functions. If
None
, all orbitals of the given spin(s) are included- logbool, optional
Whether the logarithm of the density property is used for interpolation
Returns#
- Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]
a callable function evaluating the derivative of the density given a set of radial points (1-D array).
- dd_dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the second derivative of the electronic density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]
a callable function evaluating the second derivative of the density given a set of radial points (1-D array).
- dd_dens_lapl_func(spin='t', index=None, log=False)#
Return the function for the electronic density Laplacian.
\[\nabla^2 \rho(\mathbf{r}) = \frac{d^2 \rho(r)}{dr^2} + \frac{2}{r} \frac{d \rho(r)}{dr}\]Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- Callable[np.ndarray(N,) -> np.ndarray(N,)]
a callable function evaluating the Laplacian of the density given a set of radial points (1-D array).
Notes#
When this function is evaluated at a point close to zero, the Laplacian becomes undefined. In this case, this function returns zero.
- dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the electronic density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- DensitySpline
A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.
- property dispersion_c6#
Isolated atom C6 dispersion coefficients.
Returns#
- dispersion_c6dict, float
The return dictionary contains isolated atom C6 dispersion coefficients types chu. For references corresponding to each type check theochem/AtomDB
- get_docstring()#
Docstring of the species’ dataset.
- ked_func(spin='t', index=None, log=False)#
Return a cubic spline of the kinetic energy density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- DensitySpline
A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.
- property mult#
Multiplicity
\[M = \left|N_S\right| + 1\]Where \(\left|N_S\right|\) is the spin number.
Returns#
mult : int
- property nspin#
Spin number
\[N_S = N_α - N_β\]- Where \(N_S\) is the spin number and \(N_α\) and \(N_β\) number of alpha and
beta electrons.
Returns#
nspin : int
- property polarizability#
Isolated atom dipole polarizability.
Returns#
- polarizabilitydict, float
The return dictionary contains isolated atom dipole polarizability types crc and chu. For references corresponding to each type check theochem/AtomDB
- to_dict()#
Return the dictionary representation of the Species instance.
- to_json()#
Return the JSON string representation of the Species instance.
- property vdw_radius#
Van der Waals radii.
Returns#
- vdw_radiusdict, float
The return dictionary contains van der wals radii types bondi, truhlar, rt, batsanov, dreiding, uff and mm3. For references corresponding to each type check theochem/AtomDB
- atomdb.compile_species(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets')#
Compile an atomic or ionic species into the AtomDB database.
Parameters#
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- atomdb.dump(*species, datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets')#
Dump the Species instance(s) to a MessagePack file in the database.
Parameters#
- species: Iterable
Iterables of objects of class Species
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- atomdb.element_name(elem)#
Return the element name from a string or int.
Parameters#
- elem: (str | int)
Symbol, name, or number of an element.
Returns#
- namestr
Element name.
- atomdb.element_number(elem)#
Return the element number from a string or int.
Parameters#
- elem: (str | int)
Symbol, name, or number of an element.
Returns#
- atnumint
Atomic number.
- atomdb.element_symbol(elem)#
Return the element symbol from a string or int.
Parameters#
- elem: (str | int)
Symbol, name, or number of an element.
Returns#
- symbolstr
Element symbol.
- atomdb.load(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Load one or many atomic or ionic species from the AtomDB database.
Parameters#
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- remotepathstr, optional
Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value
Returns#
Object of class Species
- atomdb.make_promolecule(atnums, coords, charges=None, mults=None, units=None, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Construct a Promolecule instance from a set of atoms and their coordinates, charges, and multiplicities.
Parameters#
- atnums: list of (str|int)
List of element number for each atom.
- coords: list of np.ndarray((3,), dtype=float)
List of coordinates for each atom.
- charges: list of (int | float), default=[0, …, 0]
List of charges.
- mults: list of (int), default=[1, …, 1]
List of multiplicities for each atom.
- units: (‘bohr’ | ‘angstrom’)
Units of
coords
values. Default is Bohr.- dataset: str, default=DEFAULT_DATASET
Data set from which to load atomic species.
- datapath: str, default=DEFAULT_DATAPATH
System path where the desired data set is located.
- remotepath: str, default=DEFAULT_REMOTE
Remote path where the desired data set is located.
Returns#
- promol: Promolecule
Promolecule instance.
- atomdb.raw_datafile(suffix, elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Returns the local path to the raw data file of a species
This function retrieves the raw data file of a species from the AtomDB cache if present. If the file is not found, it is downloaded from the remote URL.
Parameters#
- suffixstr
File extension of the raw data file.
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- remotepathstr, optional
Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value.
Returns#
- str
Path to the raw data file.
Subpackages#
Submodules#
atomdb.periodic module#
- class atomdb.periodic.Element(elem)#
Bases:
object
Element properties.
Attributes#
- atnumint
Atomic number of the element.
- symbolstr
Symbol of the element.
- namestr
Name of the element.
- property at_radius#
atomic radius of the element.
Returns#
at_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “wc”
- Source
Waber and D. T. Cromer, J. Chem. Phys. 42, 4116 (1965)
- Units
angstrom
- Notes
For each element, the largest radius of the outer orbitals is taken.
- “cr”
- Source
Clementi, D. L. Raimondi, W. P. Reinhardt, J. Chem. Phys. 47, 1300 (1967)
- Units
angstrom
- property atnum#
- property c6#
Isolated atom C6 dispersion coefficients of the element.
Returns#
c6 : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “chu”
- Source
Chu & A. Dalgarno, J. Chem. Phys., 121(9), 4083–4088 (2004)
- Units
au
- Notes
Theoretical value for hydrogen from this paper: K. T. Tang, J. M. Norbeck and P. R. Certain, J. Chem. Phys. 64, 3063 (1976) http://dx.doi.org/10.1063/1.432569
- property cov_radius#
Covalent radius of the element.
Returns#
cov_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “cordero”
- Source
B. Cordero, V. Gomez, A. E. Platero-Prats, M. Reves, J. Echeverria,E. Cremades, F. Barragan, and S. Alvarez, Dalton Trans. pp. 2832–2838 (2008)
- Units
angstrom
- Notes
For carbon the number is a weighted average over the data for different hybridizations. For Mn, Fe, and Co, the number is a weighted average over the data for different spins (high spin and low spin)
- “bragg”
- Source
Bragg, Phil. Mag. 40, 169 (1920)
- Units
angstrom
- “slater”
- Source
Slater, J. Chem. Phys. 41, 3199 (1964)
- Units
angstrom
- property eneg#
Electronegativity of the element.
Returns#
eneg : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “pauling”
- Source
Allred, J. Inorg. Nuc. Chem. 17, 215 (1961)
- Units
float
- property mass#
Atomic mass of the element.
Returns#
mass : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “stb”
- Source
Thomas Prohaska et. al. Pure Appl. Chem. 2022, 94
- Units
amu
- Notes
For Tc, Pm, Po - Ac, Np, Pu, Am-Og the mass of the most abundant isotope or with longer half-life taken from https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl
- “nist”
- Units
amu
- Notes
Mass of the most common isotope
- property pold#
Isolated atom dipole polarizability of the element.
Returns#
pold : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “crc”
- Source
CRC Handbook of Chemistry and Physics (CRC, Boca Raton, FL, 2003).
- Units
angstrom**3
- Notes
If multiple values were present in the CRC book, the value used in Erin’s postg code is taken
- “chu”
- Source
Chu, A. Dalgarno, J. Chem. Phys., 121(9), 4083–4088 (2004)
- Units
au
- Notes
Theoretical value for hydrogen from this paper: A.D. Buckingham, K.L. Clarke, Chem. Phys. Lett. 57(3), 321–325 (1978) http://dx.doi.org/10.1016/0009-2614(78)85517-1
- “sn”
- Source
Schwerdtfeger, P., Nagle, J. K. (2018). Molecular Physics, 117(9-12), 1200-1225.
- Units
au
- Notes
For Lv no value currently available
- property vdw_radius#
van der Waals radius of the element.
Returns#
vdw_radius : Dict[float]
Notes#
- This property is a dictionary with the following keys:
- “bondi”
- Source
Bondi, J. Phys. Chem. 68, 441 (1964)
- Units
angstrom
- “truhlar”
- Source
Mantina A. C. Chamberlin R. Valero C. J. Cramer D. G. Truhlar J. Phys. Chem. A 113 5806 (2009)
- Units
angstrom
- “rt”
- Source
Rowland and R. Taylor, J. Phys. Chem. 100, 7384 (1996)
- Units
angstrom
- “batsanov”
- Source
Batsanov Inorganic Materials 37 871 (2001)
- Units
angstrom
- “dreiding”
- Source
Stephen L. Mayo, Barry D. Olafson, and William A. Goddard III J. Phys. Chem. 94 8897 (1990)
- Units
2angstrom
- Notes
R_0 parameter, unit 2angstrom is used so that numbers are divided by 2 upon reading
- “uff”
- Source
Rappi, C. J. Casewit, K. S. Colwell, W. A. Goddard III, and W. M. Skid J. Am. Chem. Soc. 114 10024 (1992)
- Units
2angstrom
- Notes
x_I parameter, unit 2angstrom is used so that numbers are divided by 2 upon reading
- “mm3”
- Source
Allinger, X. Zhou, and J. Bergsma, Journal of Molecular Structure: THEOCHEM 312, 69 (1994)
- Units
angstrom
- atomdb.periodic.element_name(elem)#
Return the element name from a string or int.
Parameters#
- elem: (str | int)
Symbol, name, or number of an element.
Returns#
- namestr
Element name.
atomdb.promolecule module#
AtomDB promolecule submodule.
- class atomdb.promolecule.Promolecule#
Bases:
object
Promolecule class.
A promolecule is an approximation of a molecule constructed from a linear combination of atomic and/or ionic species. Properties of this promolecule can be computed from those of the atomic and/or ionic species, depending on whether the property is an extensive one or an intensive one.
For an extensive property, the formula is a linear combination:
\[\text{prop.}_{\text{mol;extensive}} = \sum_{A=1}^{N_{\text{atoms}}} c_A \text{prop.}_A\]For an intensive property, the formula is a mean:
\[\text{prop.}_{\text{mol;intensive}} = {\left\langle \left\{ \text{prop.}_A \right\}_{A=1}^{N_{\text{atoms}}} \right\rangle}_p\]where the parameter
p
defines the type of mean used (1 = linear, 2 = geometric, etc.).Attributes#
- atoms: list of Species
Species instances out of which the promolecule is composed.
- coords: np.ndarray((N, 3), dtype=float)
Coordinates of each species component of the promolecule.
- coeffs: np.ndarray((N,), dtype=float)
Coefficients of each species component of the promolecule.
- density(points, spin='t', log=False)#
Compute the electron density of the promolecule at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the density.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- density: np.ndarray((N,), dtype=float)
Density evaluated at N points.
- eta(p=1)#
Compute the chemical hardness of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- eta: float
Chemical hardness of the promolecule.
- gradient(points, spin='t', log=False)#
Compute the electron density gradient of the promolecule at the desired points.
Promolecular gradient:
\[\nabla \rho_{\text{mol}}^{(0)} (\mathbf{R}) = \sum_{A=1}^{N_{\text{atoms}}}\ c_A \nabla \rho_A^{(0)}(\mathbf{R})\]where
\(N_{\text{atoms}}\) is the number of atoms in the molecule,
\(c_A\) are the coefficients of the species,
\(R\) are points in 3D cartesian coordinates,
\(\nabla \rho_A^{(0)}(\mathbf{R})\) is the gradient of the species.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density gradient.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- gradient: np.ndarray((N, 3), dtype=float)
Electron density gradient of the promolecule evaluated at N points.
- hessian(points, spin='t', log=False)#
Compute the promolecule’s electron density Hessian at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density Hessian.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- hess: np.ndarray((N, 3, 3), dtype=float)
Electron density Hessian of the promolecule evaluated at N points.
- ip(p=1)#
Compute the ionization potential of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- ip: float
Ionization potential of the promolecule.
- ked(points, spin='t', log=False)#
Compute the kinetic energy density of the promolecule at the desired points.
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the kinetic energy density.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- ked: np.ndarray((N,), dtype=float)
Kinetic energy density evaluated at N points.
- laplacian(points, spin='t', log=False)#
Compute the promolecule’s electron density Laplacian at the desired points.
Parameters#
- points: np.ndarray((N, 3), dtype=float)
Points at which to compute the electron density Laplacian.
- spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’
Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.
- log: bool, default=False
Whether to compute the log of the density instead of the density. May be slightly more accurate.
Returns#
- laplacian: np.ndarray((N,), dtype=float)
Electron density Laplacian of the promolecule evaluated at N points.
- mu(p=1)#
Compute the chemical potential of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- mu: float
Chemical potential of the promolecule.
- mult(p=1)#
Compute the multiplicity of the promolecule.
Parameters#
- p: int, default=1 (linear mean)
Type of mean used in the computation.
Returns#
- mult: float
Multiplicity of the promolecule.
- atomdb.promolecule.make_promolecule(atnums, coords, charges=None, mults=None, units=None, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Construct a Promolecule instance from a set of atoms and their coordinates, charges, and multiplicities.
Parameters#
- atnums: list of (str|int)
List of element number for each atom.
- coords: list of np.ndarray((3,), dtype=float)
List of coordinates for each atom.
- charges: list of (int | float), default=[0, …, 0]
List of charges.
- mults: list of (int), default=[1, …, 1]
List of multiplicities for each atom.
- units: (‘bohr’ | ‘angstrom’)
Units of
coords
values. Default is Bohr.- dataset: str, default=DEFAULT_DATASET
Data set from which to load atomic species.
- datapath: str, default=DEFAULT_DATAPATH
System path where the desired data set is located.
- remotepath: str, default=DEFAULT_REMOTE
Remote path where the desired data set is located.
Returns#
- promol: Promolecule
Promolecule instance.
atomdb.species module#
AtomDB, a database of atomic and ionic properties.
- class atomdb.species.Species(dataset, fields, spinpol=1)#
Bases:
object
Properties of atomic and ionic species.
- property at_radius#
Atomic radius.
Returns#
- at_radiusdict, float
The return dictionary contains atomic radii types wc and cr. For references corresponding to each type check theochem/AtomDB
- property atmass#
Atomic mass in atomic units.
Returns#
- atmassdict
Two options are available: the isotopically averaged mass ‘stb’, and the mass of the most common isotope ‘nist’. For references corresponding to each type check theochem/AtomDB
- property charge#
Charge
\[Q = Z - N\]Where Q is the charge, Z the atomic number and N the total number of electrons stored in SpeciesData object.
Returns#
charge : int
- property cov_radius#
Covalent radius (derived from crystallographic data).
Returns#
- cov_radiusdict, float
The return dictionary contains crystallographic covalent radii types cordero, bragg and slater. For references corresponding to each type check theochem/AtomDB
- d_dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the first derivative of the electronic density.
The derivarive of the density as a function of the distance to the atomic center (a set of points along a 1-D grid) is modeled by a cubic spline. The property can be computed for the alpha, beta, alpha + beta, and alpha - beta components of the electron density.
Parameters#
- spinstr, optional
Type of occupied spin orbitals which can be either “a” (for alpha), “b” (for beta), “ab” (for alpha + beta), and, “m” (for alpha - beta), by default ‘ab’
- indexsequence of int, optional
Sequence of integers representing the spin orbitals which are indexed from 1 to the number basis functions. If
None
, all orbitals of the given spin(s) are included- logbool, optional
Whether the logarithm of the density property is used for interpolation
Returns#
- Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]
a callable function evaluating the derivative of the density given a set of radial points (1-D array).
- dd_dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the second derivative of the electronic density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]
a callable function evaluating the second derivative of the density given a set of radial points (1-D array).
- dd_dens_lapl_func(spin='t', index=None, log=False)#
Return the function for the electronic density Laplacian.
\[\nabla^2 \rho(\mathbf{r}) = \frac{d^2 \rho(r)}{dr^2} + \frac{2}{r} \frac{d \rho(r)}{dr}\]Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- Callable[np.ndarray(N,) -> np.ndarray(N,)]
a callable function evaluating the Laplacian of the density given a set of radial points (1-D array).
Notes#
When this function is evaluated at a point close to zero, the Laplacian becomes undefined. In this case, this function returns zero.
- dens_func(spin='t', index=None, log=False)#
Return a cubic spline of the electronic density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- DensitySpline
A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.
- property dispersion_c6#
Isolated atom C6 dispersion coefficients.
Returns#
- dispersion_c6dict, float
The return dictionary contains isolated atom C6 dispersion coefficients types chu. For references corresponding to each type check theochem/AtomDB
- get_docstring()#
Docstring of the species’ dataset.
- ked_func(spin='t', index=None, log=False)#
Return a cubic spline of the kinetic energy density.
Parameters#
- spinstr, default=”t”
Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).
- indexsequence of int, optional
Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.
- logbool, default=False
Whether the logarithm of the density is used for interpolation.
Returns#
- DensitySpline
A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.
- property mult#
Multiplicity
\[M = \left|N_S\right| + 1\]Where \(\left|N_S\right|\) is the spin number.
Returns#
mult : int
- property nspin#
Spin number
\[N_S = N_α - N_β\]- Where \(N_S\) is the spin number and \(N_α\) and \(N_β\) number of alpha and
beta electrons.
Returns#
nspin : int
- property polarizability#
Isolated atom dipole polarizability.
Returns#
- polarizabilitydict, float
The return dictionary contains isolated atom dipole polarizability types crc and chu. For references corresponding to each type check theochem/AtomDB
- to_dict()#
Return the dictionary representation of the Species instance.
- to_json()#
Return the JSON string representation of the Species instance.
- property vdw_radius#
Van der Waals radii.
Returns#
- vdw_radiusdict, float
The return dictionary contains van der wals radii types bondi, truhlar, rt, batsanov, dreiding, uff and mm3. For references corresponding to each type check theochem/AtomDB
- atomdb.species.compile_species(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets')#
Compile an atomic or ionic species into the AtomDB database.
Parameters#
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- atomdb.species.dump(*species, datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets')#
Dump the Species instance(s) to a MessagePack file in the database.
Parameters#
- species: Iterable
Iterables of objects of class Species
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- atomdb.species.load(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Load one or many atomic or ionic species from the AtomDB database.
Parameters#
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- remotepathstr, optional
Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value
Returns#
Object of class Species
- atomdb.species.raw_datafile(suffix, elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#
Returns the local path to the raw data file of a species
This function retrieves the raw data file of a species from the AtomDB cache if present. If the file is not found, it is downloaded from the remote URL.
Parameters#
- suffixstr
File extension of the raw data file.
- elemstr
Element symbol.
- chargeint
Charge.
- multint
Multiplicity.
- nexcint, optional
Excitation level, by default 0.
- datasetstr, optional
Dataset name, by default DEFAULT_DATASET.
- datapathstr, optional
Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.
- remotepathstr, optional
Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value.
Returns#
- str
Path to the raw data file.
atomdb.utils module#
Constants and utility functions.
- atomdb.utils.DEFAULT_DATAPATH = '/home/runner/.local/lib/python3.12/site-packages/atomdb/datasets'#
The path for AtomDB local cache.
- atomdb.utils.DEFAULT_DATASET = 'slater'#
Default dataset to query.
- atomdb.utils.DEFAULT_REMOTE = 'https://raw.githubusercontent.com/theochem/AtomDBdata/main/'#
Default remote URL for AtomDB datasets.
- atomdb.utils.MODULE_DATAPATH = '/home/runner/.local/lib/python3.12/site-packages/atomdb/data'#
The path for AtomDB data files.
- atomdb.utils.MULTIPLICITIES = {(1, -2): 2, (1, -1): 1, (1, 0): 2, (2, -2): 1, (2, -1): 2, (2, 0): 1, (2, 1): 2, (3, -2): 2, (3, -1): 1, (3, 0): 2, (3, 1): 1, (3, 2): 2, (4, -2): 3, (4, -1): 2, (4, 0): 1, (4, 1): 2, (4, 2): 1, (4, 3): 2, (5, -2): 4, (5, -1): 3, (5, 0): 2, (5, 1): 1, (5, 2): 2, (5, 3): 1, (5, 4): 2, (6, -2): 3, (6, -1): 4, (6, 0): 3, (6, 1): 2, (6, 2): 1, (6, 3): 2, (6, 4): 1, (6, 5): 2, (7, -2): 2, (7, -1): 3, (7, 0): 4, (7, 1): 3, (7, 2): 2, (7, 3): 1, (7, 4): 2, (7, 5): 1, (7, 6): 2, (8, -2): 1, (8, -1): 2, (8, 0): 3, (8, 1): 4, (8, 2): 3, (8, 3): 2, (8, 4): 1, (8, 5): 2, (8, 6): 1, (8, 7): 2, (9, -2): 2, (9, -1): 1, (9, 0): 2, (9, 1): 3, (9, 2): 4, (9, 3): 3, (9, 4): 2, (9, 5): 1, (9, 6): 2, (9, 7): 1, (9, 8): 2, (10, -2): 1, (10, -1): 2, (10, 0): 1, (10, 1): 2, (10, 2): 3, (10, 3): 4, (10, 4): 3, (10, 5): 2, (10, 6): 1, (10, 7): 2, (10, 8): 1, (10, 9): 2, (11, -2): 2, (11, -1): 1, (11, 0): 2, (11, 1): 1, (11, 2): 2, (11, 3): 3, (11, 4): 4, (11, 5): 3, (11, 6): 2, (11, 7): 1, (11, 8): 2, (11, 9): 1, (11, 10): 2, (12, -2): 3, (12, -1): 2, (12, 0): 1, (12, 1): 2, (12, 2): 1, (12, 3): 2, (12, 4): 3, (12, 5): 4, (12, 6): 3, (12, 7): 2, (12, 8): 1, (12, 9): 2, (12, 10): 1, (12, 11): 2, (13, -2): 4, (13, -1): 3, (13, 0): 2, (13, 1): 1, (13, 2): 2, (13, 3): 1, (13, 4): 2, (13, 5): 3, (13, 6): 4, (13, 7): 3, (13, 8): 2, (13, 9): 1, (13, 10): 2, (13, 11): 1, (13, 12): 2, (14, -2): 3, (14, -1): 4, (14, 0): 3, (14, 1): 2, (14, 2): 1, (14, 3): 2, (14, 4): 1, (14, 5): 2, (14, 6): 3, (14, 7): 4, (14, 8): 3, (14, 9): 2, (14, 10): 1, (14, 11): 2, (14, 12): 1, (14, 13): 2, (15, -2): 2, (15, -1): 3, (15, 0): 4, (15, 1): 3, (15, 2): 2, (15, 3): 1, (15, 4): 2, (15, 5): 1, (15, 6): 2, (15, 7): 3, (15, 8): 4, (15, 9): 3, (15, 10): 2, (15, 11): 1, (15, 12): 2, (15, 13): 1, (15, 14): 2, (16, -2): 1, (16, -1): 2, (16, 0): 3, (16, 1): 4, (16, 2): 3, (16, 3): 2, (16, 4): 1, (16, 5): 2, (16, 6): 1, (16, 7): 2, (16, 8): 3, (16, 9): 4, (16, 10): 3, (16, 11): 2, (16, 12): 1, (16, 13): 2, (16, 14): 1, (16, 15): 2, (17, -2): 2, (17, -1): 1, (17, 0): 2, (17, 1): 3, (17, 2): 4, (17, 3): 3, (17, 4): 2, (17, 5): 1, (17, 6): 2, (17, 7): 1, (17, 8): 2, (17, 9): 3, (17, 10): 4, (17, 11): 3, (17, 12): 2, (17, 13): 1, (17, 14): 2, (17, 15): 1, (17, 16): 2, (18, -2): 1, (18, -1): 2, (18, 0): 1, (18, 1): 2, (18, 2): 3, (18, 3): 4, (18, 4): 3, (18, 5): 2, (18, 6): 1, (18, 7): 2, (18, 8): 1, (18, 9): 2, (18, 10): 3, (18, 11): 4, (18, 12): 3, (18, 13): 2, (18, 14): 1, (18, 15): 2, (18, 16): 1, (18, 17): 2, (19, -2): 2, (19, -1): 1, (19, 0): 2, (19, 1): 1, (19, 2): 2, (19, 3): 3, (19, 4): 4, (19, 5): 3, (19, 6): 2, (19, 7): 1, (19, 8): 2, (19, 9): 1, (19, 10): 2, (19, 11): 3, (19, 12): 4, (19, 13): 3, (19, 14): 2, (19, 15): 1, (19, 16): 2, (19, 17): 1, (19, 18): 2, (20, -2): 3, (20, -1): 2, (20, 0): 1, (20, 1): 2, (20, 2): 1, (20, 3): 2, (20, 4): 3, (20, 5): 4, (20, 6): 3, (20, 7): 2, (20, 8): 1, (20, 9): 2, (20, 10): 1, (20, 11): 2, (20, 12): 3, (20, 13): 4, (20, 14): 3, (20, 15): 2, (20, 16): 1, (20, 17): 2, (20, 18): 1, (20, 19): 2, (21, -2): 4, (21, -1): 3, (21, 0): 2, (21, 1): 3, (21, 2): 2, (21, 3): 1, (21, 4): 2, (21, 5): 3, (21, 6): 4, (21, 7): 3, (21, 8): 2, (21, 9): 1, (21, 10): 2, (21, 11): 1, (21, 12): 2, (21, 13): 3, (21, 14): 4, (21, 15): 3, (21, 16): 2, (21, 17): 1, (21, 18): 2, (21, 19): 1, (21, 20): 2, (22, -2): 7, (22, -1): 4, (22, 0): 3, (22, 1): 4, (22, 2): 3, (22, 3): 2, (22, 4): 1, (22, 5): 2, (22, 6): 3, (22, 7): 4, (22, 8): 3, (22, 9): 2, (22, 10): 1, (22, 11): 2, (22, 12): 1, (22, 13): 2, (22, 14): 3, (22, 15): 4, (22, 16): 3, (22, 17): 2, (22, 18): 1, (22, 19): 2, (22, 20): 1, (22, 21): 2, (23, -2): 6, (23, -1): 7, (23, 0): 4, (23, 1): 5, (23, 2): 4, (23, 3): 3, (23, 4): 2, (23, 5): 1, (23, 6): 2, (23, 7): 3, (23, 8): 4, (23, 9): 3, (23, 10): 2, (23, 11): 1, (23, 12): 2, (23, 13): 1, (23, 14): 2, (23, 15): 3, (23, 16): 4, (23, 17): 3, (23, 18): 2, (23, 19): 1, (23, 20): 2, (23, 21): 1, (23, 22): 2, (24, -2): 5, (24, -1): 6, (24, 0): 7, (24, 1): 6, (24, 2): 5, (24, 3): 4, (24, 4): 3, (24, 5): 2, (24, 6): 1, (24, 7): 2, (24, 8): 3, (24, 9): 4, (24, 10): 3, (24, 11): 2, (24, 12): 1, (24, 13): 2, (24, 14): 1, (24, 15): 2, (24, 16): 3, (24, 17): 4, (24, 18): 3, (24, 19): 2, (24, 20): 1, (24, 21): 2, (24, 22): 1, (24, 23): 2, (25, -2): 4, (25, -1): 5, (25, 0): 6, (25, 1): 7, (25, 2): 6, (25, 3): 5, (25, 4): 4, (25, 5): 3, (25, 6): 2, (25, 7): 1, (25, 8): 2, (25, 9): 3, (25, 10): 4, (25, 11): 3, (25, 12): 2, (25, 13): 1, (25, 14): 2, (25, 15): 1, (25, 16): 2, (25, 17): 3, (25, 18): 4, (25, 19): 3, (25, 20): 2, (25, 21): 1, (25, 22): 2, (25, 23): 1, (25, 24): 2, (26, -2): 3, (26, -1): 4, (26, 0): 5, (26, 1): 6, (26, 2): 5, (26, 3): 6, (26, 4): 5, (26, 5): 4, (26, 6): 3, (26, 7): 2, (26, 8): 1, (26, 9): 2, (26, 10): 3, (26, 11): 4, (26, 12): 3, (26, 13): 2, (26, 14): 1, (26, 15): 2, (26, 16): 1, (26, 17): 2, (26, 18): 3, (26, 19): 4, (26, 20): 3, (26, 21): 2, (26, 22): 1, (26, 23): 2, (26, 24): 1, (26, 25): 2, (27, -2): 2, (27, -1): 3, (27, 0): 4, (27, 1): 3, (27, 2): 4, (27, 3): 5, (27, 4): 6, (27, 5): 5, (27, 6): 4, (27, 7): 3, (27, 8): 2, (27, 9): 1, (27, 10): 2, (27, 11): 3, (27, 12): 4, (27, 13): 3, (27, 14): 2, (27, 15): 1, (27, 16): 2, (27, 17): 1, (27, 18): 2, (27, 19): 3, (27, 20): 4, (27, 21): 3, (27, 22): 2, (27, 23): 1, (27, 24): 2, (27, 25): 1, (27, 26): 2, (28, -2): 1, (28, -1): 2, (28, 0): 3, (28, 1): 2, (28, 2): 3, (28, 3): 4, (28, 4): 5, (28, 5): 6, (28, 6): 5, (28, 7): 4, (28, 8): 3, (28, 9): 2, (28, 10): 1, (28, 11): 2, (28, 12): 3, (28, 13): 4, (28, 14): 3, (28, 15): 2, (28, 16): 1, (28, 17): 2, (28, 18): 1, (28, 19): 2, (28, 20): 3, (28, 21): 4, (28, 22): 3, (28, 23): 2, (28, 24): 1, (28, 25): 2, (28, 26): 1, (28, 27): 2, (29, -2): 2, (29, -1): 1, (29, 0): 2, (29, 1): 1, (29, 2): 2, (29, 3): 3, (29, 4): 4, (29, 5): 5, (29, 6): 6, (29, 7): 5, (29, 8): 4, (29, 9): 3, (29, 10): 2, (29, 11): 1, (29, 12): 2, (29, 13): 3, (29, 14): 4, (29, 15): 3, (29, 16): 2, (29, 17): 1, (29, 18): 2, (29, 19): 1, (29, 20): 2, (29, 21): 3, (29, 22): 4, (29, 23): 3, (29, 24): 2, (29, 25): 1, (29, 26): 2, (29, 27): 1, (29, 28): 2, (30, -2): 3, (30, -1): 2, (30, 0): 1, (30, 1): 2, (30, 2): 1, (30, 3): 2, (30, 4): 3, (30, 5): 4, (30, 6): 5, (30, 7): 6, (30, 8): 5, (30, 9): 4, (30, 10): 3, (30, 11): 2, (30, 12): 1, (30, 13): 2, (30, 14): 3, (30, 15): 4, (30, 16): 3, (30, 17): 2, (30, 18): 1, (30, 19): 2, (30, 20): 1, (30, 21): 2, (30, 22): 3, (30, 23): 4, (30, 24): 3, (30, 25): 2, (30, 26): 1, (30, 27): 2, (30, 28): 1, (30, 29): 2, (31, -2): 4, (31, -1): 3, (31, 0): 2, (31, 1): 1, (31, 2): 2, (31, 3): 1, (31, 4): 2, (31, 5): 3, (31, 6): 4, (31, 7): 5, (31, 8): 6, (31, 9): 5, (31, 10): 4, (31, 11): 3, (31, 12): 2, (31, 13): 1, (31, 14): 2, (31, 15): 3, (31, 16): 4, (31, 17): 3, (31, 18): 2, (31, 19): 1, (31, 20): 2, (31, 21): 1, (31, 22): 2, (31, 23): 3, (31, 24): 4, (31, 25): 3, (31, 26): 2, (31, 27): 1, (31, 28): 2, (31, 29): 1, (31, 30): 2, (32, -2): 3, (32, -1): 4, (32, 0): 3, (32, 1): 2, (32, 2): 1, (32, 3): 2, (32, 4): 1, (32, 5): 2, (32, 6): 3, (32, 7): 4, (32, 8): 5, (32, 9): 6, (32, 10): 5, (32, 11): 4, (32, 12): 3, (32, 13): 2, (32, 14): 1, (32, 15): 2, (32, 16): 3, (32, 17): 4, (32, 18): 3, (32, 19): 2, (32, 20): 1, (32, 21): 2, (32, 22): 1, (32, 23): 2, (32, 24): 3, (32, 25): 4, (32, 26): 3, (32, 27): 2, (32, 28): 1, (32, 29): 2, (32, 30): 1, (32, 31): 2, (33, -2): 2, (33, -1): 3, (33, 0): 4, (33, 1): 3, (33, 2): 2, (33, 3): 1, (33, 4): 2, (33, 5): 1, (33, 6): 2, (33, 7): 3, (33, 8): 4, (33, 9): 5, (33, 10): 6, (33, 11): 5, (33, 12): 4, (33, 13): 3, (33, 14): 2, (33, 15): 1, (33, 16): 2, (33, 17): 3, (33, 18): 4, (33, 19): 3, (33, 20): 2, (33, 21): 1, (33, 22): 2, (33, 23): 1, (33, 24): 2, (33, 25): 3, (33, 26): 4, (33, 27): 3, (33, 28): 2, (33, 29): 1, (33, 30): 2, (33, 31): 1, (33, 32): 2, (34, -2): 1, (34, -1): 2, (34, 0): 3, (34, 1): 4, (34, 2): 3, (34, 3): 2, (34, 4): 1, (34, 5): 2, (34, 6): 1, (34, 7): 2, (34, 8): 3, (34, 9): 4, (34, 10): 5, (34, 11): 6, (34, 12): 5, (34, 13): 4, (34, 14): 3, (34, 15): 2, (34, 16): 1, (34, 17): 2, (34, 18): 3, (34, 19): 4, (34, 20): 3, (34, 21): 2, (34, 22): 1, (34, 23): 2, (34, 24): 1, (34, 25): 2, (34, 26): 3, (34, 27): 4, (34, 28): 3, (34, 29): 2, (34, 30): 1, (34, 31): 2, (34, 32): 1, (34, 33): 2, (35, -2): 2, (35, -1): 1, (35, 0): 2, (35, 1): 3, (35, 2): 4, (35, 3): 3, (35, 4): 2, (35, 5): 1, (35, 6): 2, (35, 7): 1, (35, 8): 2, (35, 9): 3, (35, 10): 4, (35, 11): 5, (35, 12): 6, (35, 13): 5, (35, 14): 4, (35, 15): 3, (35, 16): 2, (35, 17): 1, (35, 18): 2, (35, 19): 3, (35, 20): 4, (35, 21): 3, (35, 22): 2, (35, 23): 1, (35, 24): 2, (35, 25): 1, (35, 26): 2, (35, 27): 3, (35, 28): 4, (35, 29): 3, (35, 30): 2, (35, 31): 1, (35, 32): 2, (35, 33): 1, (35, 34): 2, (36, -2): 1, (36, -1): 2, (36, 0): 1, (36, 1): 2, (36, 2): 3, (36, 3): 4, (36, 4): 3, (36, 5): 2, (36, 6): 1, (36, 7): 2, (36, 8): 1, (36, 9): 2, (36, 10): 3, (36, 11): 4, (36, 12): 5, (36, 13): 6, (36, 14): 5, (36, 15): 4, (36, 16): 3, (36, 17): 2, (36, 18): 1, (36, 19): 2, (36, 20): 3, (36, 21): 4, (36, 22): 3, (36, 23): 2, (36, 24): 1, (36, 25): 2, (36, 26): 1, (36, 27): 2, (36, 28): 3, (36, 29): 4, (36, 30): 3, (36, 31): 2, (36, 32): 1, (36, 33): 2, (36, 34): 1, (36, 35): 2, (37, -2): 2, (37, -1): 1, (37, 0): 2, (37, 1): 1, (37, 2): 2, (37, 3): 3, (37, 4): 4, (37, 5): 3, (37, 6): 2, (37, 7): 1, (37, 8): 2, (37, 9): 1, (37, 10): 2, (37, 11): 3, (37, 12): 4, (37, 13): 5, (37, 14): 6, (37, 15): 5, (37, 16): 4, (37, 17): 3, (37, 18): 2, (37, 19): 1, (37, 20): 2, (37, 21): 3, (37, 22): 4, (37, 23): 3, (37, 24): 2, (37, 25): 1, (37, 26): 2, (37, 27): 1, (37, 28): 2, (37, 29): 3, (37, 30): 4, (37, 31): 3, (37, 32): 2, (37, 33): 1, (37, 34): 2, (37, 35): 1, (37, 36): 2, (38, -2): 3, (38, -1): 2, (38, 0): 1, (38, 1): 2, (38, 2): 1, (38, 3): 2, (38, 4): 3, (38, 5): 4, (38, 6): 3, (38, 7): 2, (38, 8): 1, (38, 9): 2, (38, 10): 1, (38, 11): 2, (38, 12): 3, (38, 13): 4, (38, 14): 5, (38, 15): 6, (38, 16): 5, (38, 17): 4, (38, 18): 3, (38, 19): 2, (38, 20): 1, (38, 21): 2, (38, 22): 3, (38, 23): 4, (38, 24): 3, (38, 25): 2, (38, 26): 1, (38, 27): 2, (38, 28): 1, (38, 29): 2, (38, 30): 3, (38, 31): 4, (38, 32): 3, (38, 33): 2, (38, 34): 1, (38, 35): 2, (38, 36): 1, (38, 37): 2, (39, -2): 6, (39, -1): 3, (39, 0): 2, (39, 1): 1, (39, 2): 2, (39, 3): 1, (39, 4): 2, (39, 5): 3, (39, 6): 4, (39, 7): 3, (39, 8): 2, (39, 9): 1, (39, 10): 2, (39, 11): 1, (39, 12): 2, (39, 13): 3, (39, 14): 4, (39, 15): 5, (39, 16): 6, (39, 17): 5, (39, 18): 4, (39, 19): 3, (39, 20): 2, (39, 21): 1, (39, 22): 2, (39, 23): 3, (39, 24): 4, (39, 25): 3, (39, 26): 2, (39, 27): 1, (39, 28): 2, (39, 29): 1, (39, 30): 2, (39, 31): 3, (39, 33): 3, (39, 34): 2, (39, 35): 1, (39, 36): 2, (39, 37): 1, (39, 38): 2, (40, -2): 7, (40, -1): 6, (40, 0): 3, (40, 1): 4, (40, 2): 3, (40, 3): 2, (40, 4): 1, (40, 5): 2, (40, 6): 3, (40, 7): 4, (40, 8): 3, (40, 9): 2, (40, 10): 1, (40, 11): 2, (40, 12): 1, (40, 13): 2, (40, 14): 3, (40, 15): 4, (40, 16): 5, (40, 17): 6, (40, 18): 5, (40, 19): 4, (40, 20): 3, (40, 21): 2, (40, 22): 1, (40, 23): 2, (40, 24): 3, (40, 25): 4, (40, 26): 3, (40, 27): 2, (40, 28): 1, (40, 29): 2, (40, 30): 1, (40, 31): 2, (40, 32): 3, (40, 34): 3, (40, 35): 2, (40, 36): 1, (40, 37): 2, (40, 38): 1, (40, 39): 2, (41, -2): 6, (41, -1): 7, (41, 0): 6, (41, 1): 5, (41, 2): 4, (41, 3): 3, (41, 4): 2, (41, 5): 1, (41, 6): 2, (41, 7): 3, (41, 8): 4, (41, 9): 3, (41, 10): 2, (41, 11): 1, (41, 12): 2, (41, 13): 1, (41, 14): 2, (41, 15): 3, (41, 16): 4, (41, 17): 5, (41, 18): 6, (41, 19): 5, (41, 20): 4, (41, 21): 3, (41, 22): 2, (41, 23): 1, (41, 24): 2, (41, 25): 3, (41, 26): 4, (41, 27): 3, (41, 28): 2, (41, 29): 1, (41, 30): 2, (41, 31): 1, (41, 32): 2, (41, 33): 3, (41, 35): 3, (41, 36): 2, (41, 37): 1, (41, 38): 2, (41, 39): 1, (41, 40): 2, (42, -2): 5, (42, -1): 6, (42, 0): 7, (42, 1): 6, (42, 2): 5, (42, 3): 4, (42, 4): 3, (42, 5): 2, (42, 6): 1, (42, 7): 2, (42, 8): 3, (42, 9): 4, (42, 10): 3, (42, 11): 2, (42, 12): 1, (42, 13): 2, (42, 14): 1, (42, 15): 2, (42, 16): 3, (42, 17): 4, (42, 18): 5, (42, 19): 6, (42, 20): 5, (42, 21): 4, (42, 22): 3, (42, 23): 2, (42, 24): 1, (42, 25): 2, (42, 26): 3, (42, 27): 4, (42, 28): 3, (42, 29): 2, (42, 30): 1, (42, 31): 2, (42, 32): 1, (42, 33): 2, (42, 34): 3, (42, 36): 3, (42, 37): 2, (42, 38): 1, (42, 39): 2, (42, 40): 1, (42, 41): 2, (43, -2): 4, (43, -1): 5, (43, 0): 6, (43, 1): 7, (43, 2): 6, (43, 3): 5, (43, 4): 4, (43, 5): 3, (43, 6): 2, (43, 7): 1, (43, 8): 2, (43, 9): 3, (43, 10): 4, (43, 11): 3, (43, 12): 2, (43, 13): 1, (43, 14): 2, (43, 15): 1, (43, 16): 2, (43, 17): 3, (43, 18): 4, (43, 19): 5, (43, 20): 6, (43, 21): 5, (43, 22): 4, (43, 23): 3, (43, 24): 2, (43, 25): 1, (43, 26): 2, (43, 27): 3, (43, 28): 4, (43, 29): 3, (43, 30): 2, (43, 31): 1, (43, 32): 2, (43, 33): 1, (43, 34): 2, (43, 35): 3, (43, 37): 3, (43, 38): 2, (43, 39): 1, (43, 40): 2, (43, 41): 1, (43, 42): 2, (44, -2): 1, (44, -1): 4, (44, 0): 5, (44, 1): 4, (44, 2): 5, (44, 3): 6, (44, 4): 5, (44, 5): 4, (44, 6): 3, (44, 7): 2, (44, 8): 1, (44, 9): 2, (44, 10): 3, (44, 11): 4, (44, 12): 3, (44, 13): 2, (44, 14): 1, (44, 15): 2, (44, 16): 1, (44, 17): 2, (44, 18): 3, (44, 19): 4, (44, 20): 5, (44, 21): 6, (44, 22): 5, (44, 23): 4, (44, 24): 3, (44, 25): 2, (44, 26): 1, (44, 27): 2, (44, 28): 3, (44, 29): 4, (44, 30): 3, (44, 31): 2, (44, 32): 1, (44, 33): 2, (44, 34): 1, (44, 35): 2, (44, 36): 3, (44, 38): 3, (44, 39): 2, (44, 40): 1, (44, 41): 2, (44, 42): 1, (44, 43): 2, (45, -2): 2, (45, -1): 1, (45, 0): 4, (45, 1): 3, (45, 2): 4, (45, 3): 5, (45, 4): 6, (45, 5): 5, (45, 6): 4, (45, 7): 3, (45, 8): 2, (45, 9): 1, (45, 10): 2, (45, 11): 3, (45, 12): 4, (45, 13): 3, (45, 14): 2, (45, 15): 1, (45, 16): 2, (45, 17): 1, (45, 18): 2, (45, 19): 3, (45, 20): 4, (45, 21): 5, (45, 22): 6, (45, 23): 5, (45, 24): 4, (45, 25): 3, (45, 26): 2, (45, 27): 1, (45, 28): 2, (45, 29): 3, (45, 30): 4, (45, 31): 3, (45, 32): 2, (45, 33): 1, (45, 34): 2, (45, 35): 1, (45, 36): 2, (45, 37): 3, (45, 39): 3, (45, 40): 2, (45, 41): 1, (45, 42): 2, (45, 43): 1, (45, 44): 2, (46, -2): 1, (46, -1): 2, (46, 0): 1, (46, 1): 2, (46, 2): 3, (46, 3): 4, (46, 4): 5, (46, 5): 6, (46, 6): 5, (46, 7): 4, (46, 8): 3, (46, 9): 2, (46, 10): 1, (46, 11): 2, (46, 12): 3, (46, 13): 4, (46, 14): 3, (46, 15): 2, (46, 16): 1, (46, 17): 2, (46, 18): 1, (46, 19): 2, (46, 20): 3, (46, 21): 4, (46, 22): 5, (46, 23): 6, (46, 24): 5, (46, 25): 4, (46, 26): 3, (46, 27): 2, (46, 28): 1, (46, 29): 2, (46, 30): 3, (46, 31): 4, (46, 32): 3, (46, 33): 2, (46, 34): 1, (46, 35): 2, (46, 36): 1, (46, 37): 2, (46, 38): 3, (46, 40): 3, (46, 41): 2, (46, 42): 1, (46, 43): 2, (46, 44): 1, (46, 45): 2, (47, -2): 2, (47, -1): 1, (47, 0): 2, (47, 1): 1, (47, 2): 2, (47, 3): 3, (47, 4): 4, (47, 5): 5, (47, 6): 6, (47, 7): 5, (47, 8): 4, (47, 9): 3, (47, 10): 2, (47, 11): 1, (47, 12): 2, (47, 13): 3, (47, 14): 4, (47, 15): 3, (47, 16): 2, (47, 17): 1, (47, 18): 2, (47, 19): 1, (47, 20): 2, (47, 21): 3, (47, 22): 4, (47, 23): 5, (47, 24): 6, (47, 25): 5, (47, 26): 4, (47, 27): 3, (47, 28): 2, (47, 29): 1, (47, 30): 2, (47, 31): 3, (47, 32): 4, (47, 33): 3, (47, 34): 2, (47, 35): 1, (47, 36): 2, (47, 37): 1, (47, 38): 2, (47, 39): 3, (47, 41): 3, (47, 42): 2, (47, 43): 1, (47, 44): 2, (47, 45): 1, (47, 46): 2, (48, -2): 3, (48, -1): 2, (48, 0): 1, (48, 1): 2, (48, 2): 1, (48, 3): 2, (48, 4): 3, (48, 5): 4, (48, 6): 5, (48, 7): 6, (48, 8): 5, (48, 9): 4, (48, 10): 3, (48, 11): 2, (48, 12): 1, (48, 13): 2, (48, 14): 3, (48, 15): 4, (48, 16): 3, (48, 17): 2, (48, 18): 1, (48, 19): 2, (48, 20): 1, (48, 21): 2, (48, 22): 3, (48, 23): 4, (48, 24): 5, (48, 25): 6, (48, 26): 5, (48, 27): 4, (48, 28): 3, (48, 29): 2, (48, 30): 1, (48, 31): 2, (48, 32): 3, (48, 33): 4, (48, 34): 3, (48, 35): 2, (48, 36): 1, (48, 37): 2, (48, 38): 1, (48, 39): 2, (48, 40): 3, (48, 42): 3, (48, 43): 2, (48, 44): 1, (48, 45): 2, (48, 46): 1, (48, 47): 2, (49, -2): 4, (49, -1): 3, (49, 0): 2, (49, 1): 1, (49, 2): 2, (49, 3): 1, (49, 4): 2, (49, 5): 3, (49, 6): 4, (49, 7): 5, (49, 8): 6, (49, 9): 5, (49, 10): 4, (49, 11): 3, (49, 12): 2, (49, 13): 1, (49, 14): 2, (49, 15): 3, (49, 16): 4, (49, 17): 3, (49, 18): 2, (49, 19): 1, (49, 20): 2, (49, 21): 1, (49, 22): 2, (49, 23): 3, (49, 24): 4, (49, 25): 5, (49, 26): 6, (49, 27): 5, (49, 28): 4, (49, 29): 3, (49, 30): 2, (49, 31): 1, (49, 32): 2, (49, 33): 3, (49, 34): 4, (49, 35): 3, (49, 36): 2, (49, 37): 1, (49, 38): 2, (49, 39): 1, (49, 40): 2, (49, 41): 3, (49, 43): 3, (49, 44): 2, (49, 45): 1, (49, 46): 2, (49, 47): 1, (49, 48): 2, (50, -2): 3, (50, -1): 4, (50, 0): 3, (50, 1): 2, (50, 2): 1, (50, 3): 2, (50, 4): 1, (50, 5): 2, (50, 6): 3, (50, 7): 4, (50, 8): 5, (50, 9): 6, (50, 10): 5, (50, 11): 4, (50, 12): 3, (50, 13): 2, (50, 14): 1, (50, 15): 2, (50, 16): 3, (50, 17): 4, (50, 18): 3, (50, 19): 2, (50, 20): 1, (50, 21): 2, (50, 22): 1, (50, 23): 2, (50, 24): 3, (50, 25): 4, (50, 26): 5, (50, 27): 6, (50, 28): 5, (50, 29): 4, (50, 30): 3, (50, 31): 2, (50, 32): 1, (50, 33): 2, (50, 34): 3, (50, 35): 4, (50, 36): 3, (50, 37): 2, (50, 38): 1, (50, 39): 2, (50, 40): 1, (50, 41): 2, (50, 42): 3, (50, 44): 3, (50, 45): 2, (50, 46): 1, (50, 47): 2, (50, 48): 1, (50, 49): 2, (51, -2): 2, (51, -1): 3, (51, 0): 4, (51, 1): 3, (51, 2): 2, (51, 3): 1, (51, 4): 2, (51, 5): 1, (51, 6): 2, (51, 7): 3, (51, 8): 4, (51, 9): 5, (51, 10): 6, (51, 11): 5, (51, 12): 4, (51, 13): 3, (51, 14): 2, (51, 15): 1, (51, 16): 2, (51, 17): 3, (51, 18): 4, (51, 19): 3, (51, 20): 2, (51, 21): 1, (51, 22): 2, (51, 23): 1, (51, 24): 2, (51, 25): 3, (51, 26): 4, (51, 27): 5, (51, 28): 6, (51, 29): 5, (51, 30): 4, (51, 31): 3, (51, 32): 2, (51, 33): 1, (51, 34): 2, (51, 35): 3, (51, 36): 4, (51, 37): 3, (51, 38): 2, (51, 39): 1, (51, 40): 2, (51, 41): 1, (51, 42): 2, (51, 43): 3, (51, 45): 3, (51, 46): 2, (51, 47): 1, (51, 48): 2, (51, 49): 1, (51, 50): 2, (52, -2): 1, (52, -1): 2, (52, 0): 3, (52, 1): 4, (52, 2): 3, (52, 3): 2, (52, 4): 1, (52, 5): 2, (52, 6): 1, (52, 7): 2, (52, 8): 3, (52, 9): 4, (52, 10): 5, (52, 11): 6, (52, 12): 5, (52, 13): 4, (52, 14): 3, (52, 15): 2, (52, 16): 1, (52, 17): 2, (52, 18): 3, (52, 19): 4, (52, 20): 3, (52, 21): 2, (52, 22): 1, (52, 23): 2, (52, 24): 1, (52, 25): 2, (52, 26): 3, (52, 27): 4, (52, 28): 5, (52, 29): 6, (52, 30): 5, (52, 31): 4, (52, 32): 3, (52, 33): 2, (52, 34): 1, (52, 35): 2, (52, 36): 3, (52, 37): 4, (52, 38): 3, (52, 39): 2, (52, 40): 1, (52, 41): 2, (52, 42): 1, (52, 43): 2, (52, 44): 3, (52, 46): 3, (52, 47): 2, (52, 48): 1, (52, 49): 2, (52, 50): 1, (52, 51): 2, (53, -2): 2, (53, -1): 1, (53, 0): 2, (53, 1): 3, (53, 2): 4, (53, 3): 3, (53, 4): 2, (53, 5): 1, (53, 6): 2, (53, 7): 1, (53, 8): 2, (53, 9): 3, (53, 10): 4, (53, 11): 5, (53, 12): 6, (53, 13): 5, (53, 14): 4, (53, 15): 3, (53, 16): 2, (53, 17): 1, (53, 18): 2, (53, 19): 3, (53, 20): 4, (53, 21): 3, (53, 22): 2, (53, 23): 1, (53, 24): 2, (53, 25): 1, (53, 26): 2, (53, 27): 3, (53, 28): 4, (53, 29): 5, (53, 30): 6, (53, 31): 5, (53, 32): 4, (53, 33): 3, (53, 34): 2, (53, 35): 1, (53, 36): 2, (53, 37): 3, (53, 38): 4, (53, 39): 3, (53, 40): 2, (53, 41): 1, (53, 42): 2, (53, 43): 1, (53, 44): 2, (53, 45): 3, (53, 47): 3, (53, 48): 2, (53, 49): 1, (53, 50): 2, (53, 51): 1, (53, 52): 2, (54, -2): 1, (54, -1): 2, (54, 0): 1, (54, 1): 2, (54, 2): 3, (54, 3): 4, (54, 4): 3, (54, 5): 2, (54, 6): 1, (54, 7): 2, (54, 8): 1, (54, 9): 2, (54, 10): 3, (54, 11): 4, (54, 12): 5, (54, 13): 6, (54, 14): 5, (54, 15): 4, (54, 16): 3, (54, 17): 2, (54, 18): 1, (54, 19): 2, (54, 20): 3, (54, 21): 4, (54, 22): 3, (54, 23): 2, (54, 24): 1, (54, 25): 2, (54, 26): 1, (54, 27): 2, (54, 29): 4, (54, 30): 5, (54, 31): 6, (54, 32): 5, (54, 33): 4, (54, 34): 3, (54, 35): 2, (54, 36): 1, (54, 37): 2, (54, 38): 3, (54, 39): 4, (54, 40): 3, (54, 41): 2, (54, 42): 1, (54, 43): 2, (54, 44): 1, (54, 45): 2, (54, 46): 3, (54, 48): 3, (54, 49): 2, (54, 50): 1, (54, 51): 2, (54, 52): 1, (54, 53): 2, (55, -2): 2, (55, -1): 1, (55, 0): 2, (55, 1): 1, (55, 2): 2, (55, 3): 3, (55, 4): 4, (55, 5): 3, (55, 6): 2, (55, 7): 1, (55, 8): 2, (55, 9): 1, (55, 10): 2, (55, 11): 3, (55, 12): 4, (55, 13): 5, (55, 14): 6, (55, 15): 5, (55, 16): 4, (55, 17): 3, (55, 18): 2, (55, 19): 1, (55, 20): 2, (55, 21): 3, (55, 22): 4, (55, 23): 3, (55, 24): 2, (55, 25): 1, (55, 26): 2, (55, 27): 1, (55, 28): 2, (55, 30): 4, (55, 31): 5, (55, 32): 6, (55, 33): 5, (55, 34): 4, (55, 35): 3, (55, 36): 2, (55, 37): 1, (55, 38): 2, (55, 39): 3, (55, 40): 4, (55, 41): 3, (55, 42): 2, (55, 43): 1, (55, 44): 2, (55, 45): 1, (55, 46): 2, (55, 49): 3, (55, 50): 2, (55, 51): 1, (55, 52): 2, (55, 53): 1, (55, 54): 2, (56, -2): 1, (56, -1): 2, (56, 0): 1, (56, 1): 2, (56, 2): 1, (56, 3): 2, (56, 4): 3, (56, 5): 4, (56, 6): 3, (56, 7): 2, (56, 8): 1, (56, 9): 2, (56, 10): 1, (56, 11): 2, (56, 12): 3, (56, 13): 4, (56, 14): 5, (56, 15): 6, (56, 16): 5, (56, 17): 4, (56, 18): 3, (56, 19): 2, (56, 20): 1, (56, 21): 2, (56, 22): 3, (56, 23): 4, (56, 24): 3, (56, 25): 2, (56, 26): 1, (56, 27): 2, (56, 28): 1, (56, 29): 2, (56, 31): 4, (56, 32): 5, (56, 33): 6, (56, 34): 5, (56, 35): 4, (56, 36): 3, (56, 37): 2, (56, 38): 1, (56, 39): 2, (56, 40): 3, (56, 41): 4, (56, 42): 3, (56, 43): 2, (56, 44): 1, (56, 45): 2, (56, 46): 1, (56, 47): 2, (56, 50): 3, (56, 51): 2, (56, 52): 1, (56, 53): 2, (56, 54): 1, (56, 55): 2, (57, -2): 4, (57, -1): 1, (57, 0): 2, (57, 1): 3, (57, 2): 2, (57, 3): 1, (57, 4): 2, (57, 5): 3, (57, 6): 4, (57, 7): 3, (57, 8): 2, (57, 9): 1, (57, 10): 2, (57, 11): 1, (57, 12): 2, (57, 13): 3, (57, 14): 4, (57, 15): 5, (57, 16): 6, (57, 17): 5, (57, 18): 4, (57, 19): 3, (57, 20): 2, (57, 21): 1, (57, 22): 2, (57, 23): 3, (57, 24): 4, (57, 25): 3, (57, 26): 2, (57, 27): 1, (57, 28): 2, (57, 29): 1, (57, 30): 2, (57, 31): 3, (57, 32): 4, (57, 35): 5, (57, 36): 4, (57, 37): 3, (57, 38): 2, (57, 39): 1, (57, 40): 2, (57, 41): 3, (57, 42): 2, (57, 43): 3, (57, 44): 2, (57, 45): 1, (57, 46): 2, (57, 47): 1, (57, 48): 2, (57, 49): 3, (57, 51): 3, (57, 52): 2, (57, 53): 1, (57, 54): 2, (57, 55): 1, (57, 56): 2, (58, -2): 5, (58, -1): 4, (58, 0): 1, (58, 1): 4, (58, 2): 3, (58, 3): 2, (58, 4): 1, (58, 5): 2, (58, 6): 3, (58, 7): 4, (58, 8): 3, (58, 9): 2, (58, 10): 1, (58, 11): 2, (58, 12): 1, (58, 13): 2, (58, 14): 3, (58, 15): 4, (58, 16): 5, (58, 17): 6, (58, 18): 5, (58, 19): 4, (58, 20): 3, (58, 21): 2, (58, 22): 1, (58, 23): 2, (58, 24): 3, (58, 25): 4, (58, 26): 3, (58, 27): 2, (58, 28): 1, (58, 29): 2, (58, 30): 1, (58, 31): 2, (58, 32): 3, (58, 33): 4, (58, 36): 5, (58, 37): 4, (58, 38): 3, (58, 39): 2, (58, 40): 1, (58, 41): 2, (58, 42): 3, (58, 43): 2, (58, 44): 3, (58, 45): 2, (58, 46): 1, (58, 47): 2, (58, 48): 1, (58, 49): 2, (58, 50): 3, (58, 52): 3, (58, 53): 2, (58, 54): 1, (58, 55): 2, (58, 56): 1, (58, 57): 2, (59, -2): 6, (59, -1): 5, (59, 0): 4, (59, 2): 4, (59, 3): 3, (59, 4): 2, (59, 5): 1, (59, 10): 2, (59, 11): 1, (59, 12): 2, (59, 13): 1, (59, 14): 2, (59, 15): 3, (59, 16): 4, (59, 17): 5, (59, 18): 6, (59, 19): 5, (59, 20): 4, (59, 21): 3, (59, 22): 2, (59, 23): 1, (59, 24): 2, (59, 25): 3, (59, 26): 4, (59, 27): 3, (59, 28): 2, (59, 29): 1, (59, 30): 2, (59, 31): 1, (59, 32): 2, (59, 33): 3, (59, 34): 4, (59, 37): 5, (59, 38): 4, (59, 39): 3, (59, 40): 2, (59, 41): 1, (59, 42): 2, (59, 43): 3, (59, 44): 2, (59, 45): 3, (59, 46): 2, (59, 47): 1, (59, 48): 2, (59, 49): 1, (59, 50): 2, (59, 51): 3, (59, 53): 3, (59, 54): 2, (59, 55): 1, (59, 56): 2, (59, 57): 1, (59, 58): 2, (60, -2): 7, (60, -1): 6, (60, 0): 5, (60, 1): 6, (60, 2): 5, (60, 3): 4, (60, 4): 3, (60, 11): 2, (60, 12): 1, (60, 13): 2, (60, 14): 1, (60, 15): 2, (60, 16): 3, (60, 17): 4, (60, 18): 5, (60, 19): 6, (60, 20): 5, (60, 21): 4, (60, 22): 3, (60, 23): 2, (60, 24): 1, (60, 25): 2, (60, 26): 3, (60, 27): 4, (60, 28): 3, (60, 29): 2, (60, 30): 1, (60, 31): 2, (60, 32): 1, (60, 33): 2, (60, 34): 3, (60, 35): 4, (60, 38): 5, (60, 39): 4, (60, 40): 3, (60, 41): 2, (60, 42): 1, (60, 43): 2, (60, 44): 3, (60, 45): 2, (60, 46): 3, (60, 47): 2, (60, 48): 1, (60, 49): 2, (60, 50): 1, (60, 51): 2, (60, 52): 3, (60, 54): 3, (60, 55): 2, (60, 56): 1, (60, 57): 2, (60, 58): 1, (60, 59): 2, (61, -2): 8, (61, -1): 7, (61, 0): 6, (61, 1): 7, (61, 2): 6, (61, 3): 5, (61, 4): 4, (61, 12): 2, (61, 13): 1, (61, 14): 2, (61, 15): 1, (61, 16): 2, (61, 17): 3, (61, 18): 4, (61, 19): 5, (61, 20): 6, (61, 21): 5, (61, 22): 4, (61, 23): 3, (61, 24): 2, (61, 25): 1, (61, 26): 2, (61, 27): 3, (61, 28): 4, (61, 29): 3, (61, 30): 2, (61, 31): 1, (61, 32): 2, (61, 33): 1, (61, 34): 2, (61, 35): 3, (61, 36): 4, (61, 39): 5, (61, 40): 4, (61, 41): 3, (61, 42): 2, (61, 43): 1, (61, 44): 2, (61, 45): 3, (61, 46): 2, (61, 47): 3, (61, 48): 2, (61, 49): 1, (61, 50): 2, (61, 51): 1, (61, 52): 2, (61, 53): 3, (61, 55): 3, (61, 56): 2, (61, 57): 1, (61, 58): 2, (61, 59): 1, (61, 60): 2, (62, -2): 9, (62, -1): 8, (62, 0): 7, (62, 1): 8, (62, 2): 7, (62, 3): 6, (62, 4): 5, (62, 5): 4, (62, 13): 2, (62, 15): 2, (62, 16): 1, (62, 17): 2, (62, 18): 3, (62, 19): 4, (62, 20): 5, (62, 21): 6, (62, 22): 5, (62, 23): 4, (62, 24): 3, (62, 25): 2, (62, 26): 1, (62, 27): 2, (62, 28): 3, (62, 29): 4, (62, 30): 3, (62, 31): 2, (62, 32): 1, (62, 33): 2, (62, 34): 1, (62, 35): 2, (62, 36): 3, (62, 37): 4, (62, 40): 5, (62, 41): 4, (62, 42): 3, (62, 43): 2, (62, 44): 1, (62, 45): 2, (62, 46): 3, (62, 47): 2, (62, 48): 3, (62, 49): 2, (62, 50): 1, (62, 51): 2, (62, 52): 1, (62, 53): 2, (62, 54): 3, (62, 56): 3, (62, 57): 2, (62, 58): 1, (62, 59): 2, (62, 60): 1, (62, 61): 2, (63, -2): 6, (63, -1): 9, (63, 0): 8, (63, 1): 9, (63, 2): 8, (63, 3): 7, (63, 4): 6, (63, 15): 3, (63, 16): 2, (63, 17): 1, (63, 18): 2, (63, 19): 3, (63, 20): 4, (63, 21): 5, (63, 22): 6, (63, 23): 5, (63, 24): 4, (63, 25): 3, (63, 26): 2, (63, 27): 1, (63, 28): 2, (63, 29): 3, (63, 30): 4, (63, 31): 3, (63, 32): 2, (63, 33): 1, (63, 34): 2, (63, 35): 1, (63, 36): 2, (63, 37): 3, (63, 38): 4, (63, 41): 5, (63, 42): 4, (63, 43): 3, (63, 44): 2, (63, 45): 1, (63, 46): 2, (63, 47): 3, (63, 48): 2, (63, 49): 3, (63, 50): 2, (63, 51): 1, (63, 52): 2, (63, 53): 1, (63, 54): 2, (63, 55): 3, (63, 57): 3, (63, 58): 2, (63, 59): 1, (63, 60): 2, (63, 61): 1, (63, 62): 2, (64, -2): 5, (64, -1): 6, (64, 0): 9, (64, 1): 10, (64, 2): 9, (64, 3): 8, (64, 4): 7, (64, 13): 6, (64, 15): 4, (64, 16): 3, (64, 17): 2, (64, 18): 1, (64, 19): 2, (64, 20): 3, (64, 21): 4, (64, 22): 5, (64, 23): 6, (64, 24): 5, (64, 25): 4, (64, 26): 3, (64, 27): 2, (64, 28): 1, (64, 29): 2, (64, 30): 3, (64, 31): 4, (64, 32): 3, (64, 33): 2, (64, 34): 1, (64, 35): 2, (64, 36): 1, (64, 37): 2, (64, 38): 3, (64, 39): 4, (64, 42): 5, (64, 43): 4, (64, 44): 3, (64, 45): 2, (64, 46): 1, (64, 47): 2, (64, 48): 3, (64, 49): 2, (64, 50): 3, (64, 51): 2, (64, 52): 1, (64, 53): 2, (64, 54): 1, (64, 55): 2, (64, 56): 3, (64, 58): 3, (64, 59): 2, (64, 60): 1, (64, 61): 2, (64, 62): 1, (64, 63): 2, (65, -2): 4, (65, -1): 5, (65, 0): 6, (65, 2): 6, (65, 3): 7, (65, 4): 8, (65, 14): 6, (65, 15): 5, (65, 16): 4, (65, 17): 3, (65, 18): 2, (65, 19): 1, (65, 20): 2, (65, 21): 3, (65, 22): 4, (65, 23): 5, (65, 24): 6, (65, 25): 5, (65, 26): 4, (65, 27): 3, (65, 28): 2, (65, 29): 1, (65, 30): 2, (65, 31): 3, (65, 32): 4, (65, 33): 3, (65, 34): 2, (65, 35): 1, (65, 36): 2, (65, 37): 1, (65, 38): 2, (65, 39): 3, (65, 40): 4, (65, 43): 5, (65, 44): 4, (65, 45): 3, (65, 46): 2, (65, 47): 1, (65, 48): 2, (65, 49): 3, (65, 50): 2, (65, 51): 3, (65, 52): 2, (65, 53): 1, (65, 54): 2, (65, 55): 1, (65, 56): 2, (65, 57): 3, (65, 59): 3, (65, 60): 2, (65, 61): 1, (65, 62): 2, (65, 63): 1, (65, 64): 2, (66, -2): 3, (66, -1): 4, (66, 0): 5, (66, 2): 5, (66, 3): 6, (66, 4): 7, (66, 15): 6, (66, 16): 5, (66, 17): 4, (66, 18): 3, (66, 19): 2, (66, 20): 1, (66, 21): 2, (66, 22): 3, (66, 23): 4, (66, 24): 5, (66, 25): 6, (66, 26): 5, (66, 27): 4, (66, 28): 3, (66, 29): 2, (66, 30): 1, (66, 31): 2, (66, 32): 3, (66, 33): 4, (66, 34): 3, (66, 35): 2, (66, 36): 1, (66, 37): 2, (66, 38): 1, (66, 39): 2, (66, 40): 3, (66, 41): 4, (66, 44): 5, (66, 45): 4, (66, 46): 3, (66, 47): 2, (66, 48): 1, (66, 49): 2, (66, 50): 3, (66, 51): 2, (66, 52): 3, (66, 53): 2, (66, 54): 1, (66, 55): 2, (66, 56): 1, (66, 57): 2, (66, 58): 3, (66, 60): 3, (66, 61): 2, (66, 62): 1, (66, 63): 2, (66, 64): 1, (66, 65): 2, (67, -2): 2, (67, -1): 3, (67, 0): 4, (67, 2): 4, (67, 3): 5, (67, 4): 6, (67, 16): 6, (67, 17): 5, (67, 18): 4, (67, 19): 3, (67, 20): 2, (67, 21): 1, (67, 22): 2, (67, 23): 3, (67, 24): 4, (67, 25): 5, (67, 26): 6, (67, 27): 5, (67, 28): 4, (67, 29): 3, (67, 30): 2, (67, 31): 1, (67, 32): 2, (67, 33): 3, (67, 34): 4, (67, 35): 3, (67, 36): 2, (67, 37): 1, (67, 38): 2, (67, 39): 1, (67, 40): 2, (67, 41): 3, (67, 42): 4, (67, 45): 5, (67, 46): 4, (67, 47): 3, (67, 48): 2, (67, 49): 1, (67, 50): 2, (67, 51): 3, (67, 52): 2, (67, 53): 3, (67, 54): 2, (67, 55): 1, (67, 56): 2, (67, 57): 1, (67, 58): 2, (67, 59): 3, (67, 61): 3, (67, 62): 2, (67, 63): 1, (67, 64): 2, (67, 65): 1, (67, 66): 2, (68, -2): 1, (68, -1): 2, (68, 0): 3, (68, 2): 3, (68, 3): 4, (68, 4): 5, (68, 15): 8, (68, 16): 7, (68, 17): 6, (68, 18): 5, (68, 19): 4, (68, 20): 3, (68, 21): 2, (68, 22): 1, (68, 23): 2, (68, 24): 3, (68, 25): 4, (68, 26): 5, (68, 27): 6, (68, 28): 5, (68, 29): 4, (68, 30): 3, (68, 31): 2, (68, 32): 1, (68, 33): 2, (68, 34): 3, (68, 35): 4, (68, 36): 3, (68, 37): 2, (68, 38): 1, (68, 39): 2, (68, 40): 1, (68, 41): 2, (68, 42): 3, (68, 43): 4, (68, 46): 5, (68, 47): 4, (68, 48): 3, (68, 49): 2, (68, 50): 1, (68, 51): 2, (68, 52): 3, (68, 53): 2, (68, 54): 3, (68, 55): 2, (68, 56): 1, (68, 57): 2, (68, 58): 1, (68, 59): 2, (68, 60): 3, (68, 62): 3, (68, 63): 2, (68, 64): 1, (68, 65): 2, (68, 66): 1, (68, 67): 2, (69, -2): 2, (69, -1): 1, (69, 0): 2, (69, 2): 2, (69, 3): 3, (69, 4): 4, (69, 5): 5, (69, 10): 4, (69, 14): 6, (69, 15): 7, (69, 16): 8, (69, 17): 7, (69, 18): 6, (69, 19): 5, (69, 20): 4, (69, 21): 3, (69, 22): 2, (69, 23): 1, (69, 24): 2, (69, 25): 3, (69, 26): 4, (69, 27): 5, (69, 28): 6, (69, 29): 5, (69, 30): 4, (69, 31): 3, (69, 32): 2, (69, 33): 1, (69, 34): 2, (69, 35): 3, (69, 36): 4, (69, 37): 3, (69, 38): 2, (69, 39): 1, (69, 40): 2, (69, 41): 1, (69, 42): 2, (69, 43): 3, (69, 44): 4, (69, 47): 5, (69, 48): 4, (69, 49): 3, (69, 50): 2, (69, 51): 1, (69, 52): 2, (69, 53): 3, (69, 54): 2, (69, 55): 3, (69, 56): 2, (69, 57): 1, (69, 58): 2, (69, 59): 1, (69, 60): 2, (69, 61): 3, (69, 63): 3, (69, 64): 2, (69, 65): 1, (69, 66): 2, (69, 67): 1, (69, 68): 2, (70, -2): 3, (70, -1): 2, (70, 0): 1, (70, 1): 2, (70, 2): 1, (70, 3): 2, (70, 4): 3, (70, 10): 3, (70, 11): 4, (70, 15): 6, (70, 16): 7, (70, 17): 8, (70, 18): 7, (70, 19): 6, (70, 20): 5, (70, 21): 4, (70, 22): 3, (70, 23): 2, (70, 24): 1, (70, 25): 2, (70, 26): 3, (70, 27): 4, (70, 28): 5, (70, 29): 6, (70, 30): 5, (70, 31): 4, (70, 32): 3, (70, 33): 2, (70, 34): 1, (70, 35): 2, (70, 36): 3, (70, 37): 4, (70, 38): 3, (70, 39): 2, (70, 40): 1, (70, 41): 2, (70, 42): 1, (70, 43): 2, (70, 44): 3, (70, 45): 4, (70, 48): 5, (70, 49): 4, (70, 50): 3, (70, 51): 2, (70, 52): 1, (70, 53): 2, (70, 54): 3, (70, 55): 2, (70, 56): 3, (70, 57): 2, (70, 58): 1, (70, 59): 2, (70, 60): 1, (70, 61): 2, (70, 62): 3, (70, 64): 3, (70, 65): 2, (70, 66): 1, (70, 67): 2, (70, 68): 1, (70, 69): 2, (71, -2): 4, (71, -1): 3, (71, 0): 2, (71, 1): 1, (71, 2): 2, (71, 3): 1, (71, 4): 2, (71, 5): 3, (71, 8): 4, (71, 11): 3, (71, 12): 4, (71, 16): 6, (71, 17): 7, (71, 18): 8, (71, 19): 7, (71, 20): 6, (71, 21): 5, (71, 22): 4, (71, 23): 3, (71, 24): 2, (71, 25): 1, (71, 26): 2, (71, 27): 3, (71, 28): 4, (71, 29): 5, (71, 30): 6, (71, 31): 5, (71, 32): 4, (71, 33): 3, (71, 34): 2, (71, 35): 1, (71, 36): 2, (71, 37): 3, (71, 38): 4, (71, 39): 3, (71, 40): 2, (71, 41): 1, (71, 42): 2, (71, 43): 1, (71, 44): 2, (71, 45): 3, (71, 46): 4, (71, 49): 5, (71, 50): 4, (71, 51): 3, (71, 52): 2, (71, 53): 1, (71, 54): 2, (71, 55): 3, (71, 56): 2, (71, 57): 3, (71, 58): 2, (71, 59): 1, (71, 60): 2, (71, 61): 1, (71, 62): 2, (71, 63): 3, (71, 65): 3, (71, 66): 2, (71, 67): 1, (71, 68): 2, (71, 69): 1, (71, 70): 2, (72, -2): 5, (72, -1): 4, (72, 0): 3, (72, 1): 2, (72, 2): 3, (72, 3): 2, (72, 4): 1, (72, 5): 2, (72, 9): 4, (72, 12): 3, (72, 13): 4, (72, 14): 5, (72, 17): 6, (72, 18): 7, (72, 19): 8, (72, 20): 7, (72, 21): 6, (72, 22): 5, (72, 23): 4, (72, 24): 3, (72, 25): 2, (72, 26): 1, (72, 27): 2, (72, 28): 3, (72, 29): 4, (72, 30): 5, (72, 31): 6, (72, 32): 5, (72, 33): 4, (72, 34): 3, (72, 35): 2, (72, 36): 1, (72, 37): 2, (72, 38): 3, (72, 39): 4, (72, 40): 3, (72, 41): 2, (72, 42): 1, (72, 43): 2, (72, 44): 1, (72, 45): 2, (72, 46): 3, (72, 47): 4, (72, 50): 5, (72, 51): 4, (72, 52): 3, (72, 53): 2, (72, 54): 1, (72, 55): 2, (72, 56): 3, (72, 57): 2, (72, 58): 3, (72, 59): 2, (72, 60): 1, (72, 61): 2, (72, 62): 1, (72, 63): 2, (72, 64): 3, (72, 66): 3, (72, 67): 2, (72, 68): 1, (72, 69): 2, (72, 70): 1, (72, 71): 2, (73, -2): 6, (73, -1): 5, (73, 0): 4, (73, 1): 5, (73, 2): 4, (73, 3): 3, (73, 4): 2, (73, 5): 1, (73, 6): 2, (73, 10): 4, (73, 12): 2, (73, 13): 3, (73, 14): 4, (73, 15): 5, (73, 18): 6, (73, 19): 7, (73, 20): 8, (73, 21): 7, (73, 22): 6, (73, 23): 5, (73, 24): 4, (73, 25): 3, (73, 26): 2, (73, 27): 1, (73, 28): 2, (73, 29): 3, (73, 30): 4, (73, 31): 5, (73, 32): 6, (73, 33): 5, (73, 34): 4, (73, 35): 3, (73, 36): 2, (73, 37): 1, (73, 38): 2, (73, 39): 3, (73, 40): 4, (73, 41): 3, (73, 42): 2, (73, 43): 1, (73, 44): 2, (73, 45): 1, (73, 46): 2, (73, 47): 3, (73, 48): 4, (73, 51): 5, (73, 52): 4, (73, 53): 3, (73, 54): 2, (73, 55): 1, (73, 56): 2, (73, 57): 3, (73, 58): 2, (73, 59): 3, (73, 60): 2, (73, 61): 1, (73, 62): 2, (73, 63): 1, (73, 64): 2, (73, 65): 3, (73, 67): 3, (73, 68): 2, (73, 69): 1, (73, 70): 2, (73, 71): 1, (73, 72): 2, (74, -2): 5, (74, -1): 6, (74, 0): 5, (74, 1): 6, (74, 2): 5, (74, 3): 4, (74, 4): 3, (74, 5): 2, (74, 6): 1, (74, 7): 2, (74, 8): 3, (74, 9): 2, (74, 10): 3, (74, 11): 4, (74, 12): 1, (74, 13): 2, (74, 14): 3, (74, 15): 4, (74, 16): 5, (74, 17): 4, (74, 18): 5, (74, 19): 6, (74, 20): 7, (74, 21): 8, (74, 22): 7, (74, 23): 6, (74, 24): 5, (74, 25): 4, (74, 26): 3, (74, 27): 2, (74, 28): 1, (74, 29): 2, (74, 30): 3, (74, 31): 4, (74, 32): 5, (74, 33): 4, (74, 34): 3, (74, 35): 4, (74, 36): 3, (74, 37): 2, (74, 38): 1, (74, 39): 2, (74, 40): 3, (74, 41): 2, (74, 42): 3, (74, 43): 2, (74, 44): 1, (74, 45): 2, (74, 46): 1, (74, 47): 2, (74, 55): 2, (74, 56): 1, (74, 57): 2, (74, 58): 3, (74, 59): 2, (74, 60): 3, (74, 61): 2, (74, 62): 1, (74, 63): 2, (74, 64): 1, (74, 65): 2, (74, 66): 3, (74, 67): 2, (74, 68): 3, (74, 69): 2, (74, 70): 1, (74, 71): 2, (74, 72): 1, (74, 73): 2, (75, -2): 4, (75, -1): 5, (75, 0): 6, (75, 1): 7, (75, 2): 6, (75, 3): 5, (75, 4): 4, (75, 5): 3, (75, 6): 2, (75, 7): 1, (75, 8): 2, (75, 9): 3, (75, 10): 2, (75, 11): 3, (75, 12): 4, (75, 14): 2, (75, 15): 3, (75, 16): 4, (75, 18): 4, (75, 19): 5, (75, 20): 6, (75, 21): 7, (75, 22): 8, (75, 23): 7, (75, 24): 6, (75, 25): 5, (75, 26): 4, (75, 27): 3, (75, 28): 2, (75, 29): 1, (75, 30): 2, (75, 31): 3, (75, 32): 4, (75, 33): 5, (75, 35): 5, (75, 36): 4, (75, 37): 3, (75, 38): 2, (75, 39): 1, (75, 40): 2, (75, 41): 3, (75, 43): 3, (75, 44): 2, (75, 45): 1, (75, 46): 2, (75, 47): 1, (75, 48): 2, (75, 49): 3, (75, 50): 4, (75, 53): 5, (75, 54): 4, (75, 55): 3, (75, 56): 2, (75, 57): 1, (75, 58): 2, (75, 59): 3, (75, 60): 2, (75, 61): 3, (75, 62): 2, (75, 63): 1, (75, 64): 2, (75, 65): 1, (75, 66): 2, (75, 67): 3, (75, 69): 3, (75, 70): 2, (75, 71): 1, (75, 72): 2, (75, 73): 1, (75, 74): 2, (76, -2): 3, (76, -1): 4, (76, 0): 5, (76, 1): 6, (76, 2): 7, (76, 3): 6, (76, 4): 5, (76, 5): 4, (76, 6): 3, (76, 7): 2, (76, 8): 1, (76, 9): 2, (76, 10): 3, (76, 11): 2, (76, 12): 3, (76, 13): 4, (76, 15): 2, (76, 16): 3, (76, 19): 4, (76, 20): 5, (76, 21): 6, (76, 22): 7, (76, 23): 8, (76, 24): 7, (76, 25): 6, (76, 26): 5, (76, 27): 4, (76, 28): 3, (76, 29): 2, (76, 30): 1, (76, 31): 2, (76, 32): 3, (76, 33): 4, (76, 34): 5, (76, 36): 5, (76, 37): 4, (76, 38): 3, (76, 39): 2, (76, 40): 1, (76, 41): 2, (76, 42): 3, (76, 44): 3, (76, 45): 2, (76, 46): 1, (76, 47): 2, (76, 48): 1, (76, 49): 2, (76, 50): 3, (76, 51): 4, (76, 54): 5, (76, 55): 4, (76, 56): 3, (76, 57): 2, (76, 58): 1, (76, 59): 2, (76, 60): 3, (76, 61): 2, (76, 62): 3, (76, 63): 2, (76, 64): 1, (76, 65): 2, (76, 66): 1, (76, 67): 2, (76, 68): 3, (76, 70): 3, (76, 71): 2, (76, 72): 1, (76, 73): 2, (76, 74): 1, (76, 75): 2, (77, -2): 2, (77, -1): 3, (77, 0): 4, (77, 1): 5, (77, 2): 4, (77, 3): 5, (77, 4): 6, (77, 5): 5, (77, 6): 4, (77, 7): 3, (77, 8): 2, (77, 9): 1, (77, 10): 2, (77, 11): 3, (77, 12): 2, (77, 13): 3, (77, 14): 2, (77, 15): 1, (77, 16): 2, (77, 17): 3, (77, 20): 4, (77, 21): 5, (77, 22): 6, (77, 23): 7, (77, 24): 8, (77, 25): 7, (77, 26): 6, (77, 27): 5, (77, 28): 4, (77, 29): 3, (77, 30): 2, (77, 31): 1, (77, 32): 2, (77, 33): 3, (77, 34): 4, (77, 35): 5, (77, 37): 5, (77, 38): 4, (77, 39): 3, (77, 40): 2, (77, 41): 1, (77, 42): 2, (77, 43): 3, (77, 45): 3, (77, 46): 2, (77, 47): 1, (77, 48): 2, (77, 49): 1, (77, 50): 2, (77, 51): 3, (77, 52): 4, (77, 55): 5, (77, 56): 4, (77, 57): 3, (77, 58): 2, (77, 59): 1, (77, 60): 2, (77, 61): 3, (77, 62): 2, (77, 63): 3, (77, 64): 2, (77, 65): 1, (77, 66): 2, (77, 67): 1, (77, 68): 2, (77, 69): 3, (77, 71): 3, (77, 72): 2, (77, 73): 1, (77, 74): 2, (77, 75): 1, (77, 76): 2, (78, -2): 1, (78, -1): 2, (78, 0): 3, (78, 1): 2, (78, 2): 3, (78, 3): 4, (78, 4): 5, (78, 5): 6, (78, 6): 5, (78, 7): 4, (78, 8): 3, (78, 9): 2, (78, 10): 1, (78, 11): 2, (78, 12): 3, (78, 13): 2, (78, 14): 3, (78, 15): 2, (78, 16): 1, (78, 17): 2, (78, 18): 3, (78, 21): 4, (78, 22): 5, (78, 23): 6, (78, 24): 7, (78, 25): 8, (78, 26): 7, (78, 27): 6, (78, 28): 5, (78, 29): 4, (78, 30): 3, (78, 31): 2, (78, 32): 1, (78, 33): 2, (78, 34): 3, (78, 35): 4, (78, 36): 5, (78, 38): 5, (78, 39): 4, (78, 40): 3, (78, 41): 2, (78, 42): 1, (78, 43): 2, (78, 44): 3, (78, 46): 3, (78, 47): 2, (78, 48): 1, (78, 49): 2, (78, 50): 1, (78, 51): 2, (78, 52): 3, (78, 53): 4, (78, 56): 5, (78, 57): 4, (78, 58): 3, (78, 59): 2, (78, 60): 1, (78, 61): 2, (78, 62): 3, (78, 63): 2, (78, 64): 3, (78, 65): 2, (78, 66): 1, (78, 67): 2, (78, 68): 1, (78, 69): 2, (78, 70): 3, (78, 72): 3, (78, 73): 2, (78, 74): 1, (78, 75): 2, (78, 76): 1, (78, 77): 2, (79, -2): 2, (79, -1): 1, (79, 0): 2, (79, 1): 1, (79, 2): 2, (79, 3): 3, (79, 4): 4, (79, 5): 5, (79, 6): 6, (79, 7): 5, (79, 8): 4, (79, 9): 3, (79, 10): 2, (79, 11): 1, (79, 12): 2, (79, 13): 3, (79, 14): 2, (79, 15): 3, (79, 16): 2, (79, 17): 1, (79, 18): 2, (79, 19): 3, (79, 22): 4, (79, 23): 5, (79, 24): 6, (79, 25): 7, (79, 26): 8, (79, 27): 7, (79, 28): 6, (79, 29): 5, (79, 30): 4, (79, 31): 3, (79, 32): 2, (79, 33): 1, (79, 34): 2, (79, 35): 3, (79, 36): 4, (79, 37): 5, (79, 39): 5, (79, 40): 4, (79, 41): 3, (79, 42): 2, (79, 43): 1, (79, 44): 2, (79, 45): 3, (79, 47): 3, (79, 48): 2, (79, 49): 1, (79, 50): 2, (79, 51): 1, (79, 52): 2, (79, 53): 3, (79, 54): 4, (79, 57): 5, (79, 58): 4, (79, 59): 3, (79, 60): 2, (79, 61): 1, (79, 62): 2, (79, 63): 3, (79, 64): 2, (79, 65): 3, (79, 66): 2, (79, 67): 1, (79, 68): 2, (79, 69): 1, (79, 70): 2, (79, 71): 3, (79, 73): 3, (79, 74): 2, (79, 75): 1, (79, 76): 2, (79, 77): 1, (79, 78): 2, (80, -2): 3, (80, -1): 2, (80, 0): 1, (80, 1): 2, (80, 2): 1, (80, 3): 2, (80, 4): 3, (80, 5): 4, (80, 6): 5, (80, 7): 6, (80, 8): 5, (80, 9): 4, (80, 10): 3, (80, 11): 2, (80, 12): 1, (80, 13): 2, (80, 14): 3, (80, 15): 2, (80, 16): 3, (80, 17): 2, (80, 18): 1, (80, 19): 2, (80, 21): 2, (80, 23): 4, (80, 24): 5, (80, 25): 6, (80, 26): 7, (80, 27): 8, (80, 28): 7, (80, 29): 6, (80, 30): 5, (80, 31): 4, (80, 32): 3, (80, 33): 2, (80, 34): 1, (80, 35): 2, (80, 36): 3, (80, 37): 4, (80, 38): 5, (80, 40): 5, (80, 41): 4, (80, 42): 3, (80, 43): 2, (80, 44): 1, (80, 45): 2, (80, 46): 3, (80, 48): 3, (80, 49): 2, (80, 50): 1, (80, 51): 2, (80, 52): 1, (80, 53): 2, (80, 54): 3, (80, 55): 4, (80, 58): 5, (80, 59): 4, (80, 60): 3, (80, 61): 2, (80, 62): 1, (80, 63): 2, (80, 64): 3, (80, 65): 2, (80, 66): 3, (80, 67): 2, (80, 68): 1, (80, 69): 2, (80, 70): 1, (80, 71): 2, (80, 72): 3, (80, 74): 3, (80, 75): 2, (80, 76): 1, (80, 77): 2, (80, 78): 1, (80, 79): 2, (81, -2): 4, (81, -1): 3, (81, 0): 2, (81, 1): 1, (81, 2): 2, (81, 3): 1, (81, 4): 2, (81, 5): 3, (81, 6): 4, (81, 7): 5, (81, 8): 6, (81, 9): 5, (81, 10): 4, (81, 11): 3, (81, 12): 2, (81, 13): 1, (81, 14): 2, (81, 15): 3, (81, 16): 2, (81, 17): 3, (81, 18): 2, (81, 19): 1, (81, 20): 2, (81, 22): 2, (81, 24): 4, (81, 25): 5, (81, 26): 6, (81, 27): 7, (81, 28): 8, (81, 29): 7, (81, 30): 6, (81, 31): 5, (81, 32): 4, (81, 33): 3, (81, 34): 2, (81, 35): 1, (81, 36): 2, (81, 37): 3, (81, 38): 4, (81, 39): 5, (81, 41): 5, (81, 42): 4, (81, 43): 3, (81, 44): 2, (81, 45): 1, (81, 46): 2, (81, 47): 3, (81, 49): 3, (81, 50): 2, (81, 51): 1, (81, 52): 2, (81, 53): 1, (81, 54): 2, (81, 55): 3, (81, 56): 4, (81, 59): 5, (81, 60): 4, (81, 61): 3, (81, 62): 2, (81, 63): 1, (81, 64): 2, (81, 65): 3, (81, 66): 2, (81, 67): 3, (81, 68): 2, (81, 69): 1, (81, 70): 2, (81, 71): 1, (81, 72): 2, (81, 73): 3, (81, 75): 3, (81, 76): 2, (81, 77): 1, (81, 78): 2, (81, 79): 1, (81, 80): 2, (82, -2): 3, (82, -1): 4, (82, 0): 3, (82, 1): 2, (82, 2): 1, (82, 3): 2, (82, 4): 1, (82, 5): 2, (82, 6): 3, (82, 7): 4, (82, 8): 5, (82, 9): 6, (82, 10): 5, (82, 11): 4, (82, 12): 3, (82, 13): 2, (82, 14): 1, (82, 15): 2, (82, 16): 3, (82, 17): 2, (82, 18): 3, (82, 19): 2, (82, 20): 1, (82, 21): 2, (82, 23): 2, (82, 25): 4, (82, 26): 5, (82, 27): 6, (82, 28): 7, (82, 29): 8, (82, 30): 7, (82, 31): 6, (82, 32): 5, (82, 33): 4, (82, 34): 3, (82, 35): 2, (82, 36): 1, (82, 37): 2, (82, 38): 3, (82, 39): 4, (82, 40): 5, (82, 42): 5, (82, 43): 4, (82, 44): 3, (82, 45): 2, (82, 46): 1, (82, 47): 2, (82, 48): 3, (82, 50): 3, (82, 51): 2, (82, 52): 1, (82, 53): 2, (82, 54): 1, (82, 55): 2, (82, 56): 3, (82, 57): 4, (82, 60): 5, (82, 61): 4, (82, 62): 3, (82, 63): 2, (82, 64): 1, (82, 65): 2, (82, 66): 3, (82, 67): 2, (82, 68): 3, (82, 69): 2, (82, 70): 1, (82, 71): 2, (82, 72): 1, (82, 73): 2, (82, 74): 3, (82, 76): 3, (82, 77): 2, (82, 78): 1, (82, 79): 2, (82, 80): 1, (82, 81): 2, (83, -2): 2, (83, -1): 3, (83, 0): 4, (83, 1): 3, (83, 2): 2, (83, 3): 1, (83, 4): 2, (83, 5): 1, (83, 6): 2, (83, 7): 3, (83, 8): 4, (83, 9): 5, (83, 10): 6, (83, 11): 5, (83, 12): 4, (83, 13): 3, (83, 14): 2, (83, 15): 1, (83, 16): 2, (83, 17): 3, (83, 18): 2, (83, 19): 3, (83, 20): 2, (83, 21): 1, (83, 22): 2, (83, 24): 2, (83, 26): 4, (83, 27): 5, (83, 28): 6, (83, 29): 7, (83, 30): 8, (83, 31): 7, (83, 32): 6, (83, 33): 5, (83, 34): 4, (83, 35): 3, (83, 36): 2, (83, 37): 1, (83, 38): 2, (83, 39): 3, (83, 40): 4, (83, 41): 5, (83, 43): 5, (83, 44): 4, (83, 45): 3, (83, 46): 2, (83, 47): 1, (83, 48): 2, (83, 49): 3, (83, 51): 3, (83, 52): 2, (83, 53): 1, (83, 54): 2, (83, 55): 1, (83, 56): 2, (83, 57): 3, (83, 58): 4, (83, 61): 5, (83, 62): 4, (83, 63): 3, (83, 64): 2, (83, 65): 1, (83, 66): 2, (83, 67): 3, (83, 68): 2, (83, 69): 3, (83, 70): 2, (83, 71): 1, (83, 72): 2, (83, 73): 1, (83, 74): 2, (83, 75): 3, (83, 77): 3, (83, 78): 2, (83, 79): 1, (83, 80): 2, (83, 81): 1, (83, 82): 2, (84, -2): 1, (84, -1): 2, (84, 0): 3, (84, 1): 4, (84, 2): 3, (84, 3): 2, (84, 4): 1, (84, 5): 2, (84, 6): 1, (84, 7): 2, (84, 8): 3, (84, 9): 4, (84, 10): 5, (84, 11): 6, (84, 12): 5, (84, 13): 4, (84, 14): 3, (84, 15): 2, (84, 16): 1, (84, 17): 2, (84, 18): 3, (84, 19): 2, (84, 20): 3, (84, 21): 2, (84, 22): 1, (84, 23): 2, (84, 24): 1, (84, 25): 2, (84, 27): 4, (84, 28): 5, (84, 29): 6, (84, 30): 7, (84, 31): 8, (84, 32): 7, (84, 33): 6, (84, 34): 5, (84, 35): 4, (84, 36): 3, (84, 37): 2, (84, 38): 1, (84, 39): 2, (84, 40): 3, (84, 41): 4, (84, 42): 5, (84, 44): 5, (84, 45): 4, (84, 46): 3, (84, 47): 2, (84, 48): 1, (84, 49): 2, (84, 50): 3, (84, 52): 3, (84, 53): 2, (84, 54): 1, (84, 55): 2, (84, 56): 1, (84, 57): 2, (84, 58): 3, (84, 59): 4, (84, 62): 5, (84, 63): 4, (84, 64): 3, (84, 65): 2, (84, 66): 1, (84, 67): 2, (84, 68): 3, (84, 69): 2, (84, 70): 3, (84, 71): 2, (84, 72): 1, (84, 73): 2, (84, 74): 1, (84, 75): 2, (84, 76): 3, (84, 78): 3, (84, 79): 2, (84, 80): 1, (84, 81): 2, (84, 82): 1, (84, 83): 2, (85, -2): 2, (85, -1): 1, (85, 0): 2, (85, 1): 3, (85, 2): 4, (85, 3): 3, (85, 4): 2, (85, 5): 1, (85, 6): 2, (85, 7): 1, (85, 8): 2, (85, 9): 3, (85, 10): 4, (85, 11): 5, (85, 12): 6, (85, 13): 5, (85, 14): 4, (85, 15): 3, (85, 16): 2, (85, 17): 1, (85, 18): 2, (85, 19): 3, (85, 20): 2, (85, 21): 3, (85, 22): 2, (85, 23): 1, (85, 24): 2, (85, 25): 1, (85, 26): 2, (85, 28): 4, (85, 29): 5, (85, 30): 6, (85, 31): 7, (85, 32): 8, (85, 33): 7, (85, 34): 6, (85, 35): 5, (85, 36): 4, (85, 37): 3, (85, 38): 2, (85, 39): 1, (85, 40): 2, (85, 41): 3, (85, 42): 4, (85, 43): 5, (85, 45): 5, (85, 46): 4, (85, 47): 3, (85, 48): 2, (85, 49): 1, (85, 50): 2, (85, 51): 3, (85, 53): 3, (85, 54): 2, (85, 55): 1, (85, 56): 2, (85, 57): 1, (85, 58): 2, (85, 59): 3, (85, 60): 4, (85, 63): 5, (85, 64): 4, (85, 65): 3, (85, 66): 2, (85, 67): 1, (85, 68): 2, (85, 69): 3, (85, 70): 2, (85, 71): 3, (85, 72): 2, (85, 73): 1, (85, 74): 2, (85, 75): 1, (85, 76): 2, (85, 77): 3, (85, 79): 3, (85, 80): 2, (85, 81): 1, (85, 82): 2, (85, 83): 1, (85, 84): 2, (86, -2): 1, (86, -1): 2, (86, 0): 1, (86, 1): 2, (86, 2): 3, (86, 3): 4, (86, 4): 3, (86, 5): 2, (86, 6): 1, (86, 7): 2, (86, 8): 1, (86, 9): 2, (86, 10): 3, (86, 11): 4, (86, 12): 5, (86, 13): 6, (86, 14): 5, (86, 15): 4, (86, 16): 3, (86, 17): 2, (86, 18): 1, (86, 19): 2, (86, 20): 3, (86, 21): 2, (86, 22): 3, (86, 23): 2, (86, 24): 1, (86, 25): 2, (86, 26): 1, (86, 27): 2, (86, 29): 4, (86, 30): 5, (86, 31): 6, (86, 32): 7, (86, 33): 8, (86, 34): 7, (86, 35): 6, (86, 36): 5, (86, 37): 4, (86, 38): 3, (86, 39): 2, (86, 40): 1, (86, 41): 2, (86, 42): 3, (86, 43): 4, (86, 44): 5, (86, 46): 5, (86, 47): 4, (86, 48): 3, (86, 49): 2, (86, 50): 1, (86, 51): 2, (86, 52): 3, (86, 54): 3, (86, 55): 2, (86, 56): 1, (86, 57): 2, (86, 58): 1, (86, 59): 2, (86, 60): 3, (86, 61): 4, (86, 64): 5, (86, 65): 4, (86, 66): 3, (86, 67): 2, (86, 68): 1, (86, 69): 2, (86, 70): 3, (86, 71): 2, (86, 72): 3, (86, 73): 2, (86, 74): 1, (86, 75): 2, (86, 76): 1, (86, 77): 2, (86, 78): 3, (86, 80): 3, (86, 81): 2, (86, 82): 1, (86, 83): 2, (86, 84): 1, (86, 85): 2, (87, -2): 2, (87, -1): 1, (87, 0): 2, (87, 1): 1, (87, 2): 2, (87, 3): 3, (87, 4): 4, (87, 5): 3, (87, 6): 2, (87, 7): 1, (87, 8): 2, (87, 9): 1, (87, 10): 2, (87, 11): 3, (87, 12): 4, (87, 13): 5, (87, 14): 6, (87, 15): 5, (87, 16): 4, (87, 17): 3, (87, 18): 2, (87, 19): 1, (87, 20): 2, (87, 21): 3, (87, 22): 2, (87, 23): 3, (87, 24): 2, (87, 25): 1, (87, 26): 2, (87, 27): 1, (87, 28): 2, (87, 30): 4, (87, 31): 5, (87, 32): 6, (87, 33): 7, (87, 34): 8, (87, 35): 7, (87, 36): 6, (87, 37): 5, (87, 38): 4, (87, 39): 3, (87, 40): 2, (87, 41): 1, (87, 42): 2, (87, 43): 3, (87, 44): 4, (87, 45): 5, (87, 47): 5, (87, 48): 4, (87, 49): 3, (87, 50): 2, (87, 51): 1, (87, 52): 2, (87, 53): 3, (87, 55): 3, (87, 56): 2, (87, 57): 1, (87, 58): 2, (87, 59): 1, (87, 60): 2, (87, 61): 3, (87, 62): 4, (87, 65): 5, (87, 66): 4, (87, 67): 3, (87, 68): 2, (87, 69): 1, (87, 70): 2, (87, 71): 3, (87, 72): 2, (87, 73): 3, (87, 74): 2, (87, 75): 1, (87, 76): 2, (87, 77): 1, (87, 78): 2, (87, 79): 3, (87, 81): 3, (87, 82): 2, (87, 83): 1, (87, 84): 2, (87, 85): 1, (87, 86): 2, (88, -2): 3, (88, -1): 2, (88, 0): 1, (88, 1): 2, (88, 2): 1, (88, 3): 2, (88, 4): 3, (88, 5): 4, (88, 6): 3, (88, 7): 2, (88, 8): 1, (88, 9): 2, (88, 10): 1, (88, 11): 2, (88, 12): 3, (88, 13): 4, (88, 14): 5, (88, 15): 6, (88, 16): 5, (88, 17): 4, (88, 18): 3, (88, 19): 2, (88, 20): 1, (88, 21): 2, (88, 22): 3, (88, 23): 2, (88, 24): 3, (88, 25): 2, (88, 26): 1, (88, 27): 2, (88, 28): 1, (88, 29): 2, (88, 31): 4, (88, 32): 5, (88, 33): 6, (88, 34): 7, (88, 35): 8, (88, 36): 7, (88, 37): 6, (88, 38): 5, (88, 39): 4, (88, 40): 3, (88, 41): 2, (88, 42): 1, (88, 43): 2, (88, 44): 3, (88, 45): 4, (88, 46): 5, (88, 48): 5, (88, 49): 4, (88, 50): 3, (88, 51): 2, (88, 52): 1, (88, 53): 2, (88, 54): 3, (88, 56): 3, (88, 57): 2, (88, 58): 1, (88, 59): 2, (88, 60): 1, (88, 61): 2, (88, 62): 3, (88, 63): 4, (88, 66): 5, (88, 67): 4, (88, 68): 3, (88, 69): 2, (88, 70): 1, (88, 71): 2, (88, 72): 3, (88, 73): 2, (88, 74): 3, (88, 75): 2, (88, 76): 1, (88, 77): 2, (88, 78): 1, (88, 79): 2, (88, 80): 3, (88, 82): 3, (88, 83): 2, (88, 84): 1, (88, 85): 2, (88, 86): 1, (88, 87): 2, (89, -2): 4, (89, -1): 3, (89, 0): 2, (89, 1): 1, (89, 2): 2, (89, 3): 1, (89, 4): 2, (89, 5): 3, (89, 6): 4, (89, 7): 3, (89, 8): 2, (89, 9): 1, (89, 10): 2, (89, 11): 1, (89, 12): 2, (89, 13): 3, (89, 14): 4, (89, 15): 5, (89, 16): 6, (89, 17): 5, (89, 18): 4, (89, 19): 3, (89, 20): 2, (89, 21): 1, (89, 22): 2, (89, 23): 3, (89, 24): 2, (89, 25): 3, (89, 26): 2, (89, 27): 1, (89, 28): 2, (89, 29): 1, (89, 30): 2, (89, 32): 4, (89, 33): 5, (89, 34): 6, (89, 35): 7, (89, 36): 8, (89, 37): 7, (89, 38): 6, (89, 39): 5, (89, 40): 4, (89, 41): 3, (89, 42): 2, (89, 43): 1, (89, 44): 2, (89, 45): 3, (89, 46): 4, (89, 47): 5, (89, 49): 5, (89, 50): 4, (89, 51): 3, (89, 52): 2, (89, 53): 1, (89, 54): 2, (89, 55): 3, (89, 57): 3, (89, 58): 2, (89, 59): 1, (89, 60): 2, (89, 61): 1, (89, 62): 2, (89, 63): 3, (89, 64): 4, (89, 67): 5, (89, 68): 4, (89, 69): 3, (89, 70): 2, (89, 71): 1, (89, 72): 2, (89, 73): 3, (89, 74): 2, (89, 75): 3, (89, 76): 2, (89, 77): 1, (89, 78): 2, (89, 79): 1, (89, 80): 2, (89, 81): 3, (89, 83): 3, (89, 84): 2, (89, 85): 1, (89, 86): 2, (89, 87): 1, (89, 88): 2, (90, -2): 5, (90, -1): 4, (90, 0): 3, (90, 1): 4, (90, 2): 3, (90, 3): 2, (90, 4): 1, (90, 5): 2, (90, 6): 3, (90, 7): 4, (90, 8): 3, (90, 9): 2, (90, 10): 1, (90, 11): 2, (90, 12): 1, (90, 13): 2, (90, 14): 3, (90, 15): 4, (90, 16): 5, (90, 17): 6, (90, 18): 5, (90, 19): 4, (90, 20): 3, (90, 21): 2, (90, 22): 1, (90, 23): 2, (90, 24): 3, (90, 25): 2, (90, 26): 3, (90, 27): 2, (90, 28): 1, (90, 29): 2, (90, 30): 1, (90, 31): 2, (90, 33): 4, (90, 34): 5, (90, 35): 6, (90, 36): 7, (90, 37): 8, (90, 38): 7, (90, 39): 6, (90, 40): 5, (90, 41): 4, (90, 42): 3, (90, 43): 2, (90, 44): 1, (90, 45): 2, (90, 46): 3, (90, 47): 4, (90, 48): 5, (90, 50): 5, (90, 51): 4, (90, 52): 3, (90, 53): 2, (90, 54): 1, (90, 55): 2, (90, 56): 3, (90, 58): 3, (90, 59): 2, (90, 60): 1, (90, 61): 2, (90, 62): 1, (90, 63): 2, (90, 64): 3, (90, 65): 4, (90, 68): 5, (90, 69): 4, (90, 70): 3, (90, 71): 2, (90, 72): 1, (90, 73): 2, (90, 74): 3, (90, 75): 2, (90, 76): 3, (90, 77): 2, (90, 78): 1, (90, 79): 2, (90, 80): 1, (90, 81): 2, (90, 82): 3, (90, 84): 3, (90, 85): 2, (90, 86): 1, (90, 87): 2, (90, 88): 1, (90, 89): 2, (91, -2): 6, (91, -1): 5, (91, 0): 4, (91, 1): 3, (91, 2): 4, (91, 3): 3, (91, 4): 2, (91, 5): 1, (91, 6): 2, (91, 7): 3, (91, 8): 4, (91, 9): 3, (91, 10): 2, (91, 11): 1, (91, 12): 2, (91, 13): 1, (91, 14): 2, (91, 15): 3, (91, 16): 4, (91, 17): 5, (91, 18): 6, (91, 19): 5, (91, 20): 4, (91, 21): 3, (91, 22): 2, (91, 23): 1, (91, 24): 2, (91, 25): 3, (91, 26): 2, (91, 27): 3, (91, 28): 2, (91, 29): 1, (91, 30): 2, (91, 31): 1, (91, 32): 2, (91, 34): 4, (91, 35): 5, (91, 36): 6, (91, 37): 7, (91, 38): 8, (91, 39): 7, (91, 40): 6, (91, 41): 5, (91, 42): 4, (91, 43): 3, (91, 44): 2, (91, 45): 1, (91, 46): 2, (91, 47): 3, (91, 48): 4, (91, 49): 5, (91, 51): 5, (91, 52): 4, (91, 53): 3, (91, 54): 2, (91, 55): 1, (91, 56): 2, (91, 57): 3, (91, 59): 3, (91, 60): 2, (91, 61): 1, (91, 62): 2, (91, 63): 1, (91, 64): 2, (91, 65): 3, (91, 66): 4, (91, 69): 5, (91, 70): 4, (91, 71): 3, (91, 72): 2, (91, 73): 1, (91, 74): 2, (91, 75): 3, (91, 76): 2, (91, 77): 3, (91, 78): 2, (91, 79): 1, (91, 80): 2, (91, 81): 1, (91, 82): 2, (91, 83): 3, (91, 85): 3, (91, 86): 2, (91, 87): 1, (91, 88): 2, (91, 89): 1, (91, 90): 2, (92, -2): 7, (92, -1): 6, (92, 0): 5, (92, 1): 4, (92, 2): 5, (92, 3): 4, (92, 4): 3, (92, 5): 2, (92, 6): 1, (92, 7): 2, (92, 8): 3, (92, 9): 4, (92, 10): 3, (92, 11): 2, (92, 12): 1, (92, 13): 2, (92, 14): 1, (92, 15): 2, (92, 16): 3, (92, 17): 4, (92, 18): 5, (92, 19): 6, (92, 20): 5, (92, 21): 4, (92, 22): 3, (92, 23): 2, (92, 24): 1, (92, 25): 2, (92, 26): 3, (92, 27): 2, (92, 28): 3, (92, 29): 2, (92, 30): 1, (92, 31): 2, (92, 32): 1, (92, 33): 2, (92, 35): 4, (92, 36): 5, (92, 37): 6, (92, 38): 7, (92, 39): 8, (92, 40): 7, (92, 41): 6, (92, 42): 5, (92, 43): 4, (92, 44): 3, (92, 45): 2, (92, 46): 1, (92, 47): 2, (92, 48): 3, (92, 49): 4, (92, 50): 5, (92, 52): 5, (92, 53): 4, (92, 54): 3, (92, 55): 2, (92, 56): 1, (92, 57): 2, (92, 58): 3, (92, 60): 3, (92, 61): 2, (92, 62): 1, (92, 63): 2, (92, 64): 1, (92, 65): 2, (92, 66): 3, (92, 67): 4, (92, 70): 5, (92, 71): 4, (92, 72): 3, (92, 73): 2, (92, 74): 1, (92, 75): 2, (92, 76): 3, (92, 77): 2, (92, 78): 3, (92, 79): 2, (92, 80): 1, (92, 81): 2, (92, 82): 1, (92, 83): 2, (92, 84): 3, (92, 86): 3, (92, 87): 2, (92, 88): 1, (92, 89): 2, (92, 90): 1, (92, 91): 2, (93, -2): 8, (93, -1): 7, (93, 0): 6, (93, 1): 7, (93, 2): 6, (93, 3): 5, (93, 4): 4, (93, 5): 3, (93, 6): 2, (93, 11): 3, (93, 12): 2, (93, 13): 1, (93, 14): 2, (93, 15): 1, (93, 16): 2, (93, 17): 3, (93, 18): 4, (93, 19): 5, (93, 20): 6, (93, 21): 5, (93, 22): 4, (93, 23): 3, (93, 24): 2, (93, 25): 1, (93, 26): 2, (93, 27): 3, (93, 28): 2, (93, 29): 3, (93, 30): 2, (93, 31): 1, (93, 32): 2, (93, 33): 1, (93, 34): 2, (93, 36): 4, (93, 37): 5, (93, 38): 6, (93, 39): 7, (93, 40): 8, (93, 41): 7, (93, 42): 6, (93, 43): 5, (93, 44): 4, (93, 45): 3, (93, 46): 2, (93, 47): 1, (93, 48): 2, (93, 49): 3, (93, 50): 4, (93, 51): 5, (93, 53): 5, (93, 54): 4, (93, 55): 3, (93, 56): 2, (93, 57): 1, (93, 58): 2, (93, 59): 3, (93, 61): 3, (93, 62): 2, (93, 63): 1, (93, 64): 2, (93, 65): 1, (93, 66): 2, (93, 67): 3, (93, 68): 4, (93, 71): 5, (93, 72): 4, (93, 73): 3, (93, 74): 2, (93, 75): 1, (93, 76): 2, (93, 77): 3, (93, 78): 2, (93, 79): 3, (93, 80): 2, (93, 81): 1, (93, 82): 2, (93, 83): 1, (93, 84): 2, (93, 85): 3, (93, 87): 3, (93, 88): 2, (93, 89): 1, (93, 90): 2, (93, 91): 1, (93, 92): 2, (94, -2): 9, (94, -1): 8, (94, 0): 7, (94, 1): 8, (94, 2): 7, (94, 3): 6, (94, 4): 5, (94, 5): 4, (94, 12): 3, (94, 13): 2, (94, 14): 1, (94, 15): 2, (94, 16): 1, (94, 17): 2, (94, 18): 3, (94, 19): 4, (94, 20): 5, (94, 21): 6, (94, 22): 5, (94, 23): 4, (94, 24): 3, (94, 25): 2, (94, 26): 1, (94, 27): 2, (94, 28): 3, (94, 29): 2, (94, 30): 3, (94, 31): 2, (94, 32): 1, (94, 33): 2, (94, 34): 1, (94, 35): 2, (94, 37): 4, (94, 38): 5, (94, 39): 6, (94, 40): 7, (94, 41): 8, (94, 42): 7, (94, 43): 6, (94, 44): 5, (94, 45): 4, (94, 46): 3, (94, 47): 2, (94, 48): 1, (94, 49): 2, (94, 50): 3, (94, 51): 4, (94, 52): 5, (94, 54): 5, (94, 55): 4, (94, 56): 3, (94, 57): 2, (94, 58): 1, (94, 59): 2, (94, 60): 3, (94, 62): 3, (94, 63): 2, (94, 64): 1, (94, 65): 2, (94, 66): 1, (94, 67): 2, (94, 68): 3, (94, 69): 4, (94, 72): 5, (94, 73): 4, (94, 74): 3, (94, 75): 2, (94, 76): 1, (94, 77): 2, (94, 78): 3, (94, 79): 2, (94, 80): 3, (94, 81): 2, (94, 82): 1, (94, 83): 2, (94, 84): 1, (94, 85): 2, (94, 86): 3, (94, 88): 3, (94, 89): 2, (94, 90): 1, (94, 91): 2, (94, 92): 1, (94, 93): 2, (95, -2): 6, (95, -1): 9, (95, 0): 8, (95, 1): 9, (95, 2): 8, (95, 3): 7, (95, 4): 6, (95, 5): 5, (95, 6): 4, (95, 13): 3, (95, 14): 2, (95, 15): 1, (95, 16): 2, (95, 17): 1, (95, 18): 2, (95, 19): 3, (95, 20): 4, (95, 21): 5, (95, 22): 6, (95, 23): 5, (95, 24): 4, (95, 25): 3, (95, 26): 2, (95, 27): 1, (95, 28): 2, (95, 29): 3, (95, 30): 2, (95, 31): 3, (95, 32): 2, (95, 33): 1, (95, 34): 2, (95, 35): 1, (95, 36): 2, (95, 38): 4, (95, 39): 5, (95, 40): 6, (95, 41): 7, (95, 42): 8, (95, 43): 7, (95, 44): 6, (95, 45): 5, (95, 46): 4, (95, 47): 3, (95, 48): 2, (95, 49): 1, (95, 50): 2, (95, 51): 3, (95, 52): 4, (95, 53): 5, (95, 55): 5, (95, 56): 4, (95, 57): 3, (95, 58): 2, (95, 59): 1, (95, 60): 2, (95, 61): 3, (95, 63): 3, (95, 64): 2, (95, 65): 1, (95, 66): 2, (95, 67): 1, (95, 68): 2, (95, 69): 3, (95, 70): 4, (95, 73): 5, (95, 74): 4, (95, 75): 3, (95, 76): 2, (95, 77): 1, (95, 78): 2, (95, 79): 3, (95, 80): 2, (95, 81): 3, (95, 82): 2, (95, 83): 1, (95, 84): 2, (95, 85): 1, (95, 86): 2, (95, 87): 3, (95, 89): 3, (95, 90): 2, (95, 91): 1, (95, 92): 2, (95, 93): 1, (95, 94): 2, (96, -2): 5, (96, -1): 6, (96, 0): 9, (96, 1): 8, (96, 2): 7, (96, 3): 8, (96, 4): 7, (96, 5): 6, (96, 6): 5, (96, 15): 2, (96, 16): 1, (96, 17): 2, (96, 18): 1, (96, 19): 2, (96, 20): 3, (96, 21): 4, (96, 22): 5, (96, 23): 6, (96, 24): 5, (96, 25): 4, (96, 26): 3, (96, 27): 2, (96, 28): 1, (96, 29): 2, (96, 30): 3, (96, 31): 2, (96, 32): 3, (96, 33): 2, (96, 34): 1, (96, 35): 2, (96, 36): 1, (96, 37): 2, (96, 39): 4, (96, 40): 5, (96, 41): 6, (96, 42): 7, (96, 43): 8, (96, 44): 7, (96, 45): 6, (96, 46): 5, (96, 47): 4, (96, 48): 3, (96, 49): 2, (96, 50): 1, (96, 51): 2, (96, 52): 3, (96, 53): 4, (96, 54): 5, (96, 56): 5, (96, 57): 4, (96, 58): 3, (96, 59): 2, (96, 60): 1, (96, 61): 2, (96, 62): 3, (96, 64): 3, (96, 65): 2, (96, 66): 1, (96, 67): 2, (96, 68): 1, (96, 69): 2, (96, 70): 3, (96, 71): 4, (96, 74): 5, (96, 75): 4, (96, 76): 3, (96, 77): 2, (96, 78): 1, (96, 79): 2, (96, 80): 3, (96, 81): 2, (96, 82): 3, (96, 83): 2, (96, 84): 1, (96, 85): 2, (96, 86): 1, (96, 87): 2, (96, 88): 3, (96, 90): 3, (96, 91): 2, (96, 92): 1, (96, 93): 2, (96, 94): 1, (96, 95): 2, (97, -2): 4, (97, -1): 5, (97, 0): 6, (97, 1): 7, (97, 2): 6, (97, 3): 7, (97, 4): 8, (97, 5): 7, (97, 6): 6, (97, 7): 5, (97, 16): 2, (97, 17): 1, (97, 18): 2, (97, 19): 1, (97, 20): 2, (97, 21): 3, (97, 22): 4, (97, 23): 5, (97, 24): 6, (97, 25): 5, (97, 26): 4, (97, 27): 3, (97, 28): 2, (97, 29): 1, (97, 30): 2, (97, 31): 3, (97, 32): 2, (97, 33): 3, (97, 34): 2, (97, 35): 1, (97, 36): 2, (97, 37): 1, (97, 38): 2, (97, 40): 4, (97, 41): 5, (97, 42): 6, (97, 43): 7, (97, 44): 8, (97, 45): 7, (97, 46): 6, (97, 47): 5, (97, 48): 4, (97, 49): 3, (97, 50): 2, (97, 51): 1, (97, 52): 2, (97, 53): 3, (97, 54): 4, (97, 55): 5, (97, 57): 5, (97, 58): 4, (97, 59): 3, (97, 60): 2, (97, 61): 1, (97, 62): 2, (97, 63): 3, (97, 65): 3, (97, 66): 2, (97, 67): 1, (97, 68): 2, (97, 69): 1, (97, 70): 2, (97, 71): 3, (97, 72): 4, (97, 75): 5, (97, 76): 4, (97, 77): 3, (97, 78): 2, (97, 79): 1, (97, 80): 2, (97, 81): 3, (97, 82): 2, (97, 83): 3, (97, 84): 2, (97, 85): 1, (97, 86): 2, (97, 87): 1, (97, 88): 2, (97, 89): 3, (97, 91): 3, (97, 92): 2, (97, 93): 1, (97, 94): 2, (97, 95): 1, (97, 96): 2, (98, -1): 4, (98, 0): 5, (98, 1): 6, (98, 2): 5, (98, 3): 6, (98, 4): 7, (98, 5): 8, (98, 6): 7, (98, 7): 6, (98, 8): 5, (98, 17): 2, (98, 18): 1, (98, 19): 2, (98, 20): 1, (98, 21): 2, (98, 22): 3, (98, 23): 4, (98, 24): 5, (98, 25): 6, (98, 26): 5, (98, 27): 4, (98, 28): 3, (98, 29): 2, (98, 30): 1, (98, 31): 2, (98, 32): 3, (98, 33): 2, (98, 34): 3, (98, 35): 2, (98, 36): 1, (98, 37): 2, (98, 38): 1, (98, 39): 2, (98, 41): 4, (98, 42): 5, (98, 43): 6, (98, 44): 7, (98, 45): 8, (98, 46): 7, (98, 47): 6, (98, 48): 5, (98, 49): 4, (98, 50): 3, (98, 51): 2, (98, 52): 1, (98, 53): 2, (98, 54): 3, (98, 55): 4, (98, 56): 5, (98, 58): 5, (98, 59): 4, (98, 60): 3, (98, 61): 2, (98, 62): 1, (98, 63): 2, (98, 64): 3, (98, 66): 3, (98, 67): 2, (98, 68): 1, (98, 69): 2, (98, 70): 1, (98, 71): 2, (98, 72): 3, (98, 73): 4, (98, 76): 5, (98, 77): 4, (98, 78): 3, (98, 79): 2, (98, 80): 1, (98, 81): 2, (98, 82): 3, (98, 83): 2, (98, 84): 3, (98, 85): 2, (98, 86): 1, (98, 87): 2, (98, 88): 1, (98, 89): 2, (98, 90): 3, (98, 92): 3, (98, 93): 2, (98, 94): 1, (98, 95): 2, (98, 96): 1, (98, 97): 2, (99, 0): 4, (99, 1): 5, (99, 2): 4, (99, 3): 5, (99, 4): 6, (99, 5): 7, (99, 6): 8, (99, 7): 7, (99, 8): 6, (99, 9): 5, (99, 18): 2, (99, 19): 1, (99, 20): 2, (99, 21): 1, (99, 22): 2, (99, 23): 3, (99, 24): 4, (99, 25): 5, (99, 26): 6, (99, 27): 5, (99, 28): 4, (99, 29): 3, (99, 30): 2, (99, 31): 1, (99, 32): 2, (99, 33): 3, (99, 34): 2, (99, 35): 3, (99, 36): 2, (99, 37): 1, (99, 38): 2, (99, 39): 1, (99, 40): 2, (99, 42): 4, (99, 43): 5, (99, 44): 6, (99, 45): 7, (99, 46): 8, (99, 47): 7, (99, 48): 6, (99, 49): 5, (99, 50): 4, (99, 51): 3, (99, 52): 2, (99, 53): 1, (99, 54): 2, (99, 55): 3, (99, 56): 4, (99, 57): 5, (99, 59): 5, (99, 60): 4, (99, 61): 3, (99, 62): 2, (99, 63): 1, (99, 64): 2, (99, 65): 3, (99, 67): 3, (99, 68): 2, (99, 69): 1, (99, 70): 2, (99, 71): 1, (99, 72): 2, (99, 73): 3, (99, 74): 4, (99, 77): 5, (99, 78): 4, (99, 79): 3, (99, 80): 2, (99, 81): 1, (99, 82): 2, (99, 83): 3, (99, 84): 2, (99, 85): 3, (99, 86): 2, (99, 87): 1, (99, 88): 2, (99, 89): 1, (99, 90): 2, (99, 91): 3, (99, 93): 3, (99, 94): 2, (99, 95): 1, (99, 96): 2, (99, 97): 1, (99, 98): 2, (100, 0): 3, (100, 1): 4, (100, 2): 3, (100, 3): 4, (100, 4): 5, (100, 5): 6, (100, 6): 7, (100, 7): 8, (100, 8): 7, (100, 9): 6, (100, 10): 5, (100, 19): 2, (100, 20): 1, (100, 21): 2, (100, 22): 1, (100, 23): 2, (100, 24): 3, (100, 25): 4, (100, 26): 5, (100, 27): 6, (100, 28): 5, (100, 29): 4, (100, 30): 3, (100, 31): 2, (100, 32): 1, (100, 33): 2, (100, 34): 3, (100, 35): 2, (100, 36): 3, (100, 37): 2, (100, 38): 1, (100, 39): 2, (100, 40): 1, (100, 41): 2, (100, 43): 4, (100, 44): 5, (100, 45): 6, (100, 46): 7, (100, 47): 8, (100, 48): 7, (100, 49): 6, (100, 50): 5, (100, 51): 4, (100, 52): 3, (100, 53): 2, (100, 54): 1, (100, 55): 2, (100, 56): 3, (100, 57): 4, (100, 58): 5, (100, 60): 5, (100, 61): 4, (100, 62): 3, (100, 63): 2, (100, 64): 1, (100, 65): 2, (100, 66): 3, (100, 68): 3, (100, 69): 2, (100, 70): 1, (100, 71): 2, (100, 72): 1, (100, 73): 2, (100, 74): 3, (100, 75): 4, (100, 78): 5, (100, 79): 4, (100, 80): 3, (100, 81): 2, (100, 82): 1, (100, 83): 2, (100, 84): 3, (100, 85): 2, (100, 86): 3, (100, 87): 2, (100, 88): 1, (100, 89): 2, (100, 90): 1, (100, 91): 2, (100, 92): 3, (100, 94): 3, (100, 95): 2, (100, 96): 1, (100, 97): 2, (100, 98): 1, (100, 99): 2}#
Dictionary of species’ ground state multiplicities.
Has items
(atnum, charge): Tuple[int, int]
.
- atomdb.utils.generate_mult_csv(max_atnum=100)#
Write a table of multiplicities to a CSV file.
Values retrieved from
database_beta_1.3.0.h5
are organized into a table, with rows corresponding to atomic numbers and columns to charges.The maximum atomic number (
max_atnum
) must not exceed 100, which is the database’s limit.The charge range spans from
-2
tomax_atnum - 1
.Missing entries have multiplicities set to zero.
Parameters#
- max_atnumint, default=100
Highest atomic number of the elements to be added to the table.
Raises#
- ValueError
If the maximum allowed atomic number is greater than 100.