Wolfram Research

Function Repository Resource:

ReasonableRuler

Source Notebook

Find a near minimal set of marks for an integer length ruler so that all smaller integer distances are measurable

Contributed by: Ed Pegg Jr

ResourceFunction["ReasonableRuler"][length]

finds a set of integers with differences giving all values up to length using a compact form.

ResourceFunction["ReasonableRuler"][length,"Full"]

finds a reasonable ruler for given length, showing the full set of values.

Details and Options

The "Full" calculation requires significant memory for large length values.

Examples

Basic Examples

Marks for a sparse ruler of length 57:

In[1]:=
ResourceFunction["ReasonableRuler"][57, "Full"]
Out[1]=

Check that all differences are covered:

In[2]:=
Complement[
 Range[57], #[[2]] - #[[1]] & /@ Subsets[ResourceFunction["ReasonableRuler"][57, "Full"], {2}]]
Out[2]=

Show spaces between marks in a the full form of a length 396 ruler:

In[3]:=
Differences[ResourceFunction["ReasonableRuler"][396, "Full"]]
Out[3]=

Split the Difference:

In[4]:=
Split[%]
Out[4]=

Make a series of lists from the compact form of a length 396 ruler:

In[5]:=
Table[#[[1]], {#[[2]]}] & /@ Transpose[ResourceFunction["ReasonableRuler"][396]]
Out[5]=

Show the compact form:

In[6]:=
ResourceFunction["ReasonableRuler"][396]
Out[6]=

Verify the above shortened form has length 396:

In[7]:=
Dot @@ %
Out[7]=

Show the full form for a length 396 ruler:

In[8]:=
ResourceFunction["ReasonableRuler"][396, "Full"]
Out[8]=

Scope

Count the number of marks on a length 58 ruler:

In[9]:=
{Length[ResourceFunction["ReasonableRuler"][58, "Full"]], Total[ResourceFunction["ReasonableRuler"][58][[2]]] + 1}
Out[9]=

The excess of a ruler with length L and M marks is :

In[10]:=
(Total[ResourceFunction["ReasonableRuler"][58][[2]]] + 1) - Round[Sqrt[3 58 + 9/4]]
Out[10]=

A reasonable ruler has an excess of 0 or 1:

In[11]:=
length = 999;
ruler = ResourceFunction["ReasonableRuler"][length];
marks = Total[Last[ruler]] + 1;
excess = marks - Round[Sqrt[3 length + 9/4]];
Column[{{excess, marks, length}, Grid[ruler, Frame -> All]}, Alignment -> Center]
Out[15]=

A list of some rulers with a single mark less than those generated by this function:

In[16]:=
betterRulers = Uncompress[
   Normal["1:eJzNffmLncmSndSvu6VWq9Xa9+\
W7pdLam3qT1Fqr1NVqvV7eNm8wxhhjG495GDOYsTHGmGEwxhhjjDHGGGP8g//\
R8f0KnaPMjsybmTdP5P3l492nijrx5RJx4kTc6sU/+ss//MWhDw4c+Ku3Dxw48NOf/upf/\
sVbB978dOjNT386+P//x5/eWT7eWz5OLR9Hlg/8Q2TwNv7xV8vH8h/3/\
793Xv9DhHf4l3hvw/LD8H8dxu8IrX4Vgr4TOLj/\
635VhBy9qfHOkdXbIVTkyNuvH1Lktw3kdxLI7yZWe17ZE0Ce8d5N4L0Dg9TKplCsnQx/\
lq8xG7yPFxKh/AooqXfpex+4bKn7cOSXeLPlWzA/hF95yNi10J5vehC/\
5GD4ONKyxtXn5b2W81KD8jZ+7J1KlOrzcrTyXd7BMp/\
BcTNQGLbo1js4VitR3sXvPgcnsyj43fumZSjV+xLdMJ9oGH2siIbVe/\
VuuFcilHeA8q7fKr5jfCx7v+qz+G5wDKUnPoSSRnse+\
4poT3cPG6fk3fC3HUnAvxU6wuh7MPgH1X04XHle2u7DYeApT6VPHObdNlCMux2hWHiHE3j\
v4lhEd1uOTDrOo9n+zkf9kNeNpO+Gjsjz0Xs5FCPGpc7s/A+\
RQZQVCIWX1NdZ7wYOejKLCDm1xoIbayVn7xvLJSiLhW2n90huZVMo1k5mK5IPcienB8rbQ\
Kl4l0MwurR8HEugRMeQierdX6LoOcbbOExRvWlwDCfGwxrNh/\
G833JmqxkPF0R5M45h7ZQ341jlir2Lbb1w4PUdWX0zqJhUsLcaFL48bqJq949W7n51LDmE\
R8W7tEWsEEq1Yh9Urlj17h8Kd190xsjpUidZkPXfNT768PRC5G4nnnWk8sQzEhkofTk5SU\
eKkxtZmO4eMc7nofC3HUnAMwszX0VZ2LiJem/ehjfvrPSmW1w4Unl62+\
LCEeAp70hthmu7I4xx8jtC+lFRt0ZvZb1faBWtYkS0UuvZFzkk0G80F5qQj/\
khr5vBDoWOKG/iITiYQjFOb+\
qOzP8QGUQ5kVB4Sb0CETUeHRWICLmCi6x7Y1PNA88bGwrEqtN7NEBWqekf5k5OD5R3gFLL\
G+d9uQJzAyUKKMy8h4pQDuN3X1s+jq9EOYyHEuXQL6FUZ4z1mJIRkSIqT/\
Jxl5N8XH2SKblVRJhqFPLhw0IULnHFfWk7Y8dazli1rsQ45pNzoo8VJ6It6rwHU2XUqc0G\
bSeCs4rKm8rTrbyp7wPP59wdMj76VCeFyN2yuZwzRJHWQDFW0UKJ8A7n8KzBDAPZ0Hn4i4\
4aJzWcd4zsuZPUeZj/\
I53HuJN6byINOutNtwhxtPIct0WIo8BT3pZsLu9bUZNoVVTU0VtZ75e6NxyRiqJP042tQQ\
7F0/yNFcSKduR1s8zh0BHlHTkMByvUzNQdmf8hMojyFqE4w7zyrWb2NY/xXl8+\
Tibeisv2Hh4oFwUoh38Jpdd5InhHzh0hV3CfdaOPRYW8ow+\
XoIwPtd3EYwGyqkdyIndyUjlxXrEFzFffjDknolEiQInyu3H/\
nHgcFZZN4HEkCLU8ri3OksMr4+wRmJahtN2Mk1g70f17Fyg++ZbFfkW+rb6J7+\
EEV0TItqhyFHjKqPJB5Zluq02OA0WpM56AqU/OtAT7sr1qiz/UgJTxh9nMQOl7Z4+\
Ha1d2Z9v4Bs+GsgY/ATwR35j3hXdWGX8+AJ7PbTpsfPSpfwuRu93jLJPrdo+\
ZP8rqtQjFwjucw4tSfzvySRFyN1ZzBqbGLTe4L909hlPJm/he8CORPU8quW/\
UQTkYOOfuTUS+\
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\
DDn6WHEi2uJ1tt7qFq/\
JZMqqugjFwjucw4sUjXbkiyJkJ17Fbs4m8CrmUx9exbur5FUXgr1X5QfGVGV+\
OAM8n2h31Pjo07kpRO7GJS+/PiA1Z7H6W82XYark+NmKsS8v5hWuUFH5nx9/\
gEUx3or0dzagivOBBuUDoBxLoPTNhPwDTVzPCmW1Xw5mseGdg7PITnXNudClwXUNC02fuu\
YsTJV56yzwlDH8ClZRGcOvwFSuOlwEVEV0beNil3Jv1Y2LXQKesiZkli3jKv1iOPfKJ4ZH\
L16huLXlYOp6yhx8EqZlKG2RLyyUVt/jFBfbd/JQAiqSdvGmq7MLF+\
U88L7Geh4Lf9uRBLyl4fFf8Q+\
FTDTyYfV5oZ5VoV7UoJDvHhOiRLVX2alsyy7XYOrTa7Y0Zp/\
aMkKuqC3XjddWqekdr7kEZWe2LcadD5BVWYHqoTIrnIJpRVaonkkmD5JnBW7OuKxAdh7VH\
MbbO+UoViQ+\
OYpxXZmjzgBPmaNYZxl3xKmetlTkcfU0S6isN90iLtVmZT3NBVHGdbI3ZVwne1PG9WxN2D\
eu8wik4rqATeE/\
k139F4nWVeoLkZ1ymaWfjctlLPx8chnjvzKXnQ02W5XLzsFUpAIchVvyiQvqXj51RvRRrg\
vV1sZtmYIcqqw3E6FYeIcTePzT8FG1JkeOKtQj673zZRGyE5dkV3YTuCQ5hA+\
XZNRQcslLwd6rMhOjuTIznQOeT5z9wPjo00MtRO7Gn6++\
PiA1Z7H6r2xchamyrslWyX1rAV7hCo1HEUnZG92ESMoeam0k/\
RDmj3FgjB1nUTIbUDs8pkGhDvphAkWaq1mIleVqReV1IXRpcOXFItyn8joPU2V+\
Ow88ZaxnD0oZ66/\
BtCLWzzfjmwOvb2f2Tka1qnEnnaIdc6cPb7xSubJtvPEK8JSVMxlBGa9at+az2qM+NV/\
04o41Xzvyuvw5uqwV8bONB1BrNqKBwfxS/\
HLfPDSIGDnjBXxYHX3o7kXgMdp9GP62Iwl4Rh/WRFEmNNZY702k6mW96RH/ZwcZ/\
yuUqRoUVhQfClGi6raMxbZl/\
8WBAw7ZfwFTn5kPq0vhoxFEyBUawbq5zJIMvHMZl6DsZrSx74sBsip7UH9WVpFnYFqGklI\
nSjmisWJ9MyE3Z3Am5MDNJmRCVow+mZDZQ5kJzwFPmQlZB5dVdQq9w+\
oGjNM7LsOvrDfdIi67Bkq9gwuijOtZjaBbXCdHVMb1bL3cN67zCKTiuoDHfRhunSOPi5Ad\
ez2FyE5Z1FJWx2VRltk+WZSZR5lFzwebrcqiF2BaEZGqY/hloCinhahG+\
lQ40ceKE9GWo2pr//lvlM4S+/PlY0qgRKHlNEw/LFrF6F2stwqtoreKpIfU+/VFjmrj9/\
HrmpCvipCdWKzVmxjHYslefFgso4aSxV4J9l6VmRjNlZnpAvB84uwx46NPV6QQuRtzn14f\
kJqzWP2XniaYKiuqbH3etwrhFa5QlxSRlF3zTYik7K5nvRHkdEv79c7pLJtEbGk2oFJrsK\
VunOwMTA0Up5qPY2ybUPNRePCp+\
S7CVJlZLwJPmWUWWEVlllnAtCLLzLf86YHXd2T1zZhrouOvF1CAEtXiZfdPEc0nrKwPL75\
WuX9tvPga8JTKwATTMt7YL/+Rlfjkv+\
jFHWvaduR164Posiqj9IdwUJ4LLgGvDKWNWZyFqRHZDJaeqgX2zUODqHrissEHVVSZAFXG\
ULgol/FWzA/Hgx+\
J7PmSjNeskiOGYuyk3ptI58160yNjzg4yY4ryMmtMefan3lGmiK4Rz8Lr8Uavx0dpiZArl\
JZ1M6YlvHhnTC5B2Wlqyx6XA2RVXcoZDGVdSvZdhpLSeEqZqLFifXMUN6c2R1VXYdvLh7w\
K24bpuEzI4a9NyISs5H0yIbOHMhNeAJ4yE1KfGKdDWf2hcTrUVfiV9aZb9mAfSVl7cEGUO\
SqrqnTLUeSIyhw14RyU8SXrXaK3Cq2soScew4p+/\
brs9Hi4iY7sNEJ27AMWIjvlU0v7HpdPWdb75FPmIGU+\
vRhstiqfUuOpiE3V0fwqUJSTZFRyfeq26GPqRPStD66GeGX1wfzfk1gsH98uH1uJ9WSQmQ\
2ozB3XoBwHyokEiiBvRSrx4J7mBEc2gUtO4QLJuSRvrJJLXgv2XpUVGEmVWeES8Hxi3IfG\
R59uTiFyN/689fqA1JzF6r8etwVTZV2TrZL75iNe4VQ+coqkc+LZmEi6gF9Zb1bnN2vvU/\
nteAhKNbmsLlsD2VLQKyrCfjk9i9yNGVF1VjKjczAtQ2nLW5dhqsxbl4GnjOHXcQSUMfw6\
TCti+HySd3EOVp8x6qkV2lQNCrXhE0KUqJY1TrJTRGZ+9+\
G2i8pT0sZtF8BTVtZkLWXcr18OI7PwyWHRizvmsHbkdTl+\
dFmVueA4HKxAacvRVN2VOfo8TA0Ug2mn+Py+eWgQVUBcNvigil21VUpb7NoCXpl2zKW/\
irVjFjoR/Ehkz6VkVmA9HWnHxqnUexOpsVlvunEM5mUlx7gIPCXHoDJSpiOuETXDS/\
hGR8ZHk4mQKzSZdfOyJdF452UuQdlpastRVwNkVY4ix1fmKHL8ijqy+\
tt25LtlPZA1MiE3J5UJnbIHh7U2IXuwkvfJHoy4yuxxCXjK7EF9oqxCVXTVZ6c3pqs+wa+\
sN90iLrs0Sh2KC6KM61m9o1tcJ69SxvXa2j96F+utQitrnIfHsKIzbK2iD/\
K6XPJEeHwcuWSE7NjfK0R2yuScatyETM5S3yeTM/spM/nlYLNVmfwKTEVdkw/\
hVkUeqUaJ1F2fKiv6mDoRfdn8FOIdLHrTdaPPSXysjXtr5LfZ1Bpmbcpv1Zk1UpgrmMO8W\
nPb6/vlYxt44c8ypM8G1EZPaFCo855MoDgxd6u3NI65k7H5MHdGKSVzXwTnWJUJmT2UmfA\
K8Hzi+nHjo09XqxC5W7Wy/fqA1JzF6r+\
iuw1TZRWZ1ST65mBe4QpFTRFJOcGxCZGUkx5ZbwQswdK7vVkCyzSf+rsQ2akivBa6BL/\
GVIRUx7LedONu7BkoudsFmJahtOWEG1hFZU64AVNlTshWt8ZZ5IJPQPkOe3Uy+\
JHInshW14P/in8ofOfIh9VnkR2ACjW1BoXdjJNClEgDGVKt8Hv/\
jvXBdZgq64PrwFMqMmR+Zfy5Hw8gO/PhAdGLO/\
KAduR166TosirrwBNwsAKlLZezT6TM5RdhaqAY1Uoq/+2bhwZRFcllY+\
4aEknJLHwiaW3d2RZJt4FXxnc7cwwqJBHfNe6IE+Mh6/\
JhPGQJSsZzGXhKxkOty4gLghk1q6/\
oo7JFyBUq27oswRLdvFkCl6DsNLVlzCm3st0yJisOZcZkxVGGktL3Stl3WSdvjbzMzanIy\
4rswQHBTcgeV+GXT/\
ZgxFVmjyvAU2aPqzAtq5cVSqDVTxunBG7Br6w33SLuAqbKjhgXRBnXs+\
pLt7hOXqWM61klwkA5tXzMBcuPy8fNBAoHI2YDKrQnNShUm08lUAzWYu1LtEOhlTVgxyuV\
2isBO41e3JGdRsiOPeBCZCduYHVSxnEDig8+\
3ID5VMkNrgabreIG12BaEWfnravJTFtAEeW/SL32qduij6kT0bc+\
2ArxjPpAEPdO4aN33GtHjvKbxUBS+W02tcbLy/\
LbGsiRElGbWdfN6YXI3ZgR9W4lM7oI0zKUNo7P6KPk+NeDvVJlOGYFZYa7BjyfeH3C+\
OjTjStE7lbX3Hx9QKSVYFZX6Jv1eLkqVDGFjmF1q8bpGJyXyXojyI6WZu2dHVkYeWfHLLJ\
TDbYw9n5cDbaAX1lvumWoCabKDDUBrwyljZ9cgmkFP6nOCbewVxX8pAblQ6DIe0vZqtU48\
VzwLaD8Gnt1KviRyJ7IPPGsz6MTb5wSvTeRxp/1JrUDkQ+\
rmTs7FxUqcA0KuzCnhCiR0mLcP6dMTsaWzeTdqpUbMFVWKzeAp9R9bsK0jM334z5kpD7cJ\
3pxR+7Tjrxu1RZdVmXOPwkHK1DalA/\
2t5TKx2WYGihGhZbKxvvmoUFU03LZmLuGVGgzA9mYCo2syyeuMxYq4/pN4JVVHAr+\
ZXV9xvEvMlIf/kXOouRfV4Gn5F/UAcs612tklDBAvdFT8FEgI+\
QKBXJdzmIJkt6chUtQdpra8vdWgKyqc+/\
AVDk5wipLyRJYZZWhpHTc0oqjrEe6BhfhEajgIoocNcGlTchRE/\
zyyVGM68ocdQ14yhw1wVSk0c3/6y5Mx832bMObg4FzY3TlbfiV9aZb9mB/\
Vakrc0GUNWZW1+oW17PqS9+4zs1JxXWDv0RrZ61iaBWtotX1KeOpayBbPbaKDH16+\
ZhLz98uH7cTO8nhmtmAfYhTGpRTQDmdQBGw/\
Qjeke1HyI7zBoXITixoAb82gQUt4JcPC5pgqmRBU7DZKha0gGlFRqnOjttAEeXgqDfhUwd\
HH1Mnom/G3A7xyjJmv4h7Go74RNzT+OgdcduR+/ET6is+/\
CTqCVV898TiswJkp4rJ6t2Oq5jIx7PedGON7DEpWeNlmJahtOVq5jdlrl4AzyfznDQ++\
nSNC5G7VbwTUOT9TtKHCo1REX2sDuO46MP5r6w3gjxo9Rm88yCLL+\
88mEV2qvOuhy7BrzF1HsWirDfdcscWTJW5Ywt4ZShtOZ0dIWVOvwLTMpQ2fZKduopqsgbl\
OFDkU0PkJ/L8xhGPivzGDd7G7/gZZ+N08CORPd/\
0rcBLs2tlnH29N1EfKOtNascjH1bfRHa3KjrANSjs1J0WokQalXHfnfjJHJoc+\
0m3YKrsJ90CnlIxuw3TsuqhH6NjHPJhdNGLOzK6duR1q8TosiqZzCk4WIHSxmQ4waZkMld\
haqAYeTmV/ffNQ4OohuayMXcNqTtnxrMxdSdZnk9cZyxUxvXbwCuroxT8axFu2WD+\
RQbsw78mmCr51wQ8Jf9awLSs875GRgkD1Bs9ER/\
FM0KuUDzX5SyWAOrNWbgEZaepLX9v51a2W/X+0fIhr94/\
gmkZShsXYS2n5CKs5So6JdXfwGVdU3avrHeJ3iq0ssZ2mO5T7+eUE7fw9puQE6k8+\
uRE5hFlTlwAT5kTqaeWnSaFbm51bMfp5hT+\
st50yyM3YKrUzbkgFSjVUTGrkPStA7lsqTpwdRS2cksqCnOUh0elgkuugWx19yrmR/\
tlniyycYbOLB9zYfpny8fdxBni6NBswK7IaQ0KOzxnEiiCSYAIPnXfnfK31Rscl78pe/\
jkb+Y8Zf7eCjZblb+\
vw7SC7VZnj5tAEeWoSMX3qRijj6kT0Tdv3QzxyvLWukpEFGIdlYgz+\
JiNe4KI247cjyVQifBhCVH3xJElFCI7VRRWl3NcRUFW7FNRMI4qK4pbwd6r2CA7S0o2eBW\
mZWxw3cxzyvjo018tRO6m+WX1hRTK/Lt/j53M7l+klRj75xRzrA7cuJjDeaysN4LsZ+\
nw3tmPJZd39ssiO1V3N0KXBld3FGp8qrttmCqru23glaG0ZT/\
2MpTZ7xpMy1DatEH2mEQKJPtl8qmabNXdt17kCESqXjTuMTf4Jn4H8+\
mZ4Ecie77pW4GXZpfFOPt6b6K+\
RdabHgxjdpAMQ8Rj2Fk6I0SJlKkhbGnmJ3NocqyJ7sBUWRPdAZ5SJ7sL07KaoR+\
jYxzyYXTRizsyunbkdWvD6LIqmcxpOFiB0sZkJuApmcwEUwPFyMup7L9vHhpElTOXjblrS\
N3JCaFsJHWK62R5PnGdsVAZ1+8Cr6yOUvAvq0s2jn+RAfvwL3IWJf/\
aAp6Sf12HqVxtDAPUG50Qnw5bhFyhc67LWSzZ05uzcAnKTlNb/r4ZIKuq90+WD3n1/\
glMlT0F1nJKLsJargwlpRGU1jVl9yp6F+utQqvoraI+X8X7nV0+\
Znrwd5aPjxPvx7btbMDOzBkNCrtMZxMoTvl9Gzu5Cfl9G3755HfmRGV+\
vw48ZX7fhmmZvqLoAVg953E9AIqYWW+65UT2ppU9AC5IBUp1hM+\
qPX1rWi5bqqbtm1E4jMSjUsGL++UyDgw1Id/\
1Q163FogSn2MtECFX3M425sCulpI5XIPpOOZgdVjHMQeKRz7MgdlWyRy2g4OrYg43YFpRM\
1TnrdtAEWXHqBfiU3dHH1Mnom/GvB3iGRmzWwV+b/mQV+D3YFo2K9svH50Fsk8+\
OouP2XwkmMFrR+7HtahN+XCtqJ/\
myLUKkZ3qMqvvPa4uY23hU5cxJyjrsjvB3qt4B3O1knfcAF4ZShuLnWBqsFhBd/208bHs/\
doU36wik0KZf/efYz1Xr+\
IWVlGEEmlYZRWHIopZXd5xUYwzf1lvBPnU6vV451MW1975NIvsVPveCl1KVZtOtS8FtKw3\
3XLQTZgqc9BN4Ily0GywAIpSr1nAtAylTbNlH1OkDLMnW8Gm2nJnVpPoW01zzCZVTRv3mB\
t8G7+D+fRs8CORPd/0rcBLs/tlnH29N1E/KetND4YxO0iGoWRL14GnZEvbMB3ClmZ+\
MocmxyrrI5gqq6yPgKdUET+GaZmK2I/\
RMQ75MLroxR0ZXTvyupptdFmVTOYMHKxAaWMynCJUMhlWmwaKkZdT2X/\
fPDSI6nMuG3PXkLqTU2jZSOoU18nyfOI6Y6Eyrn8MvLI6SsG/\
rB7iOP5FBuzDv8hZlPxrG3hK/\
kX9sklZrJ77taYMfPqPEXIqywg4iyWuenMWLkHZaWrL37cDZFX1/tnyIa/\
eP4OpcgomqxZ34yKs5cpQUhpBaV1Tdq+id7HeKrSK1i7qllZEsTWQoyrkRG5lVyN/\
LEI29vTc8jFTor+\
3fHya2FM2v2eDCShnNShngXIugeLEaW7i9G4Cp6Fy7MNpyAOUnOYG8JSchnp4maak6HtYn\
ftxfQ8Kt1lvuvEAdviVfQ8uiIhtcK6rgge05c6sjtZXLeDmpNQCQa62upLeuZrDXd65uhZ\
53SorSq+OVVaEXFFlrTuzUojcjRktAKVkRguYlqG0ZX9mTGX2vxlsjir734JpRa1TnXvuA\
kWU4aIejo9eEH2sOBFt1W9Wfeqb9e6Gb1WW9frF4XNwxCcOnwsX2jEOtyP34xhUu3w4RtS\
hc+QYhchOVY/VSR9X9ZBT+1Q9jNbKquejYO9VjIBZVMkIbgHPJ7+\
dMT6WvV8bR2QPWMkRt2BahtJWoX76+shJe/NZ7SaFMv/\
uv4u1W70v2zAVobBPeE6IEmlqZdqpIu5bnfZxcZ9zl1lvBAzE6rd5MxAWw94MJIvspOLfC\
V2CX2NUfEptWW+6Ze3bMFVm7dvAU+ZO9iyVufM6TJW5k73kCmZYg8K+\
uHx6Lquv9K3ZOeqUqtmNe8wNvovfwXx6LviRyJ5v+lbgpdmNM86+\
3puov5X1phtbIsNQsqUbwFOyJWqQQ9jSzE/IpLP8pFtd+\
glMlXXpJ8BTKqKfwrSsYuzH6BiHfBhd9OKOjK4ded36PLqsSiZzFg7KVQBWm0omw2qzDOX\
88jFThn+wfNxLoFDOZdfr/OuPY6pNzv9l46dTNCe384nmjIDKaP4p8MqqJwXr4uj/\
JrAu8l4f1kWmomRdN4GnZF3UeY3YJJi4tmYBfBTmCDmVWwRMxZK6vZkKl6DsNLVl7bsBsq\
pm/3z5kNfsn8NUOauS1Yi7MRBWcBWzKtXfd2c1Y+y+oT+kVI59J0ODqD/\
Eg8ZssfI2RWtnrWJoFe1V1MWuiJprIEe1zsncTq5G/\
lSE3IPFzgbsmBksthtX3oJpGVdWcCh+\
I2cTOBT1aR8ORd6h5FC3gKfkUFTdy5QrRXfFmqgY112hPJz1phvv4OSFsrvCBVGymy+\
wikp28wVMK/almhFkNcG+\
jIBHwJERWB1Wb0bA0T5vRlCLvG7tGCVxx9oxQq6oHa17I0B24ixW13wcZ6E0WMtZ2rgpO9\
JKbnodpmUobZzlDkwrKsLqjPkxUER5Oepv+agq0ccUi+2b3z4O8cryW7+Iex6O+ETc8/\
joHXELkbsxsa9gWjaL34+\
zUBP04SxR99KRsxQiO9Vq1pTBuFqNHN2nVmO0VtZqnwR7r1IxmEWVKsYd4Pnkt7PGR5/\
5hkLkboxuGyurZHTbMC1Daau1Z2dSGbpbv6JW6+JSfAyUv49VPB/8SGRPZKv7zH/FPxS+\
c+TD6lPCTmxFj6YGhV3l80KUSBEtU74V+c+ayxiX/zibm/\
VGwMSs7qw3E6PI4M3EsshOesZHoUvwa4yeQQkz60039nIXpkr2chd4ykzODrcyk9+\
AqTKTc/KggiFX/1e2P4epki9kdaa+CgkH41IKiZ6fzP+\
f1Us1zr4TWyJj82FLZBhKtnQLeEq2dBumQ9jSzE/I67P8pFt9/\
hlMlfX5Z8BTKsP3YFpWv/\
ZjdIxDPowuenFHRteOvK5OEV1WJZM5BwflfOkj4Cn5EmtaJV9iTWugGCfCQonwDufwImm9\
gqldWD5mSvSPl48vEu/H5sBswF7deQ0K+\
44XEihONTtnbrNZyCknkiH75ETmEWVOvAe8shpUwV2tnvo47srqwYe7ku8puett4Cm5K7s\
GZbF3jWx8Ntx/9k19+hURckW/Yl2+Z7UvvPkel6DsNLVxn48DZJXy8eXyIVc+\
voSpclooq7R3Y1isgyumhar/sgRrwrI5l5RWtO9kaBD1/HjQmC2GcAxOyGY5xmoWa+\
1pisWeB3xUUTXx5xrkqH7N8mcBcy9E7sbct4GiZO7bMC1j7gpGx69KbQKjY8/\
Bh9GRBSkZ3R3gKRkdOyllaqSiY2ZNC43rmFHyz3rTjQVxqkipAHFBlFyLc4dKrvUVTJVcK\
6vTd2NBWTW5LwviQUuxIAHvsHrz3ryDI7jevKMWed16OaIKjvVyhOw431eI7MSMrHmLccy\
IpYoPMyKbUDKju8Fmq9g85zKUbP4GTMtQqrN/1Bn1UZKij6kT0Te/\
fRrileW3fhH3AhzxibgXwoPkGHHbkfuxCSqUPmwi6kg7solCZKdazZocGVerkT371GqMo8\
pa7bNg71W5mjMBylz9EfB8Ms8546PPzEohcjd+wjkIJT+5CdMKflJdBc/OpHJnt4q+\
VuviUnwKlH+IVbwQ/EhkT2RGLKp6ESM3Tonem6ifm/\
UmtQORD6vPLLvUFf2rGhQqNxeEKJE+W6bDK7KxNbMyLhtz+\
jvrjYAXWp1rb15IMcKbF2aRnXSPT0KX4NcY3YNSZ9abblzqY5gqudTHwFPyCnb/\
lbziFkyVvIJTGUpeQSZt3L++GgfH+VIahxOPsXqu43gMmZ0Pj2HuV/\
KYO8BT8hiqqUN4DP8+nWMd/zlMlXX858AToZzB2lVou/\
24FuOQD9eKXtyRa7Ujr6tnRJdVyTHOw0G5dsE6UMkxWAcaKMZeRSgW3uEcXtT3bUf+\
QoRsrOzF5WOmSf90+fgqsbKU/\
GcDdq0uaFDYgbuYQHGqsDk9nM1MTnmSfNYnTzK3KPPkF8ArqxgVfNbqlI/\
js6wofPgsOaCSz94FnpLPsuNQFnvXyNDnwv1nN9Sn1xEhV/Q61uWAVuvDmwNyCcpOUxsf+\
jS3st10iq+XjwqdohrlDFAqonkbt8vq4ql9qf4bIKzgyuZKUsrOvpOhQdTJ4xFgHB/\
CRThduwlchFO4WW/68uwL4RKwGvNh+NEshiPDL0TuxvDZ91Uy/\
JswLUNpYzdkBEp28xHwlOyGPYAytU7R67Gmbsb1eiiJZ73pxgg4naPs9XBBlLzjPlZRyTv\
uw7RiX6oZQVYH7csIeARSjECQ9ax+r3fW4/\
ind9arRV63qosSlWNVFyE7TrAVIjspMlYPf5wiQ6Kc9aYbZ2GeV3KWj4PNVnGWT2BaURFW\
Z8x7QCnblzZezLkFJS++BVMDpW8uu4cFrMhl/\
aLrRTjiE10vhgvtGF3bkfsxB2pmPswh6ps6ModC5G4c9yFMx3330JqiGFeXkY/\
71GWctlDWZZ8HJ0yV/Zkxldn/E+D5aPfnjY8+\
8xuFyN1YAicPlCzhNkzLUNrq6tmZVIbu1jXI6lp9GQ8DRYWez6W/\
h7f6J9i1i8GPRPZ807cCL80ur3Eq9d5EfdOsN6kdj3xYfUfYDa6YAapBYWf7ohAl0n7Lbm\
Ibx/gGpuM4hjWBMo5jfAm/st4IOLXVh/bm1BRtvDl1FtlJH/osdAl+jdGHKAlnvenGED+\
FqZIhfgo8JVvinLuSLd2BqZItccZCyZayilpftsThvHZ9qForuRQekAolWsHT+\
O2uTeBpZMo+PI3cRsnTPgKekqdR7y6bKFZwFtZTWc7STRf5EqZKXeRL4IlQzmLtKqYN+\
7E8RkAflhe9uCPLa0deVx+\
KLquS3VyAg3ItiHWukt2wzjVQjL2KUCy8wwm82dTqzMuRrTmI9nf+SoRs7OnMZ2Zq+M+\
Wj/uJPWWLaDZgF/CiBoUdzUvlKG1ZiJFbmYW+\
At44tmhNCoxji6wUfNgiGZaSLX4MPCVbZH+kLL6skf/Oh/\
vPDrFPZyZCrujMrMuwrEaNN8PiEpSdpja2cS9AVukPD5aPCv2hGuUsUCqieRtzqlXVUypH\
aX1k7IuhpaQUm30nQ4Oo78gjwDg+RMXn3G+2BnWqiDkfnPVGymJZ6/iw2Gg+\
xZHFFiI7sSV+\
uWoT2BJV9Vq21Mbw2cFXMvzbMC1DaWNL7BWUnSZFT8iaORrXE6J0nvWmG8PgbJKyJ8QFUf\
IYztMpecxDmCp5TFZ17sZjstpoXx7Dg5biMYJcbXWfvXM1B3m9c3Ut8rq1aJRCHGvRCNlx\
SrAQ2YkZWRMF45gR6X0tM2rTkcgmlDrSp8Fmq5jRZzCtiP/\
VefkLoIiyf9Tn81Fpoo8VJ6KNK9+\
BaRlXno3maP4n4GVRIv3SQJFG80vYSZ9oHk1yOEbzduR+\
TIXKog9TiXq3jkylENmpDrRmLMbVgWTmWW+61YGM0co68Mtg71U8gLlTyQM+\
A55PVrtgfPSZ7ihE7qZwcS5BqXDdhWkZSluFPTuTyp3d1IKsjta3jmegqOhHcOm/wFuR+\
1wKfiSy55u+FXhpdqmNU6n3Jur7Zr3pwQZnB8kGy+qDahSqUJeEKNzJivvepg4+\
Xj7k6uBjmI77KxicJ98EJvM1/Mp6I+DUVrfem1NTJPLm1FlkJz3q89Al+\
DVGj6IEnfWmGw+9B1MlD70HPCUn46y9kpN9BFMlJ+MkipKT1Sp4l+HaXy4fDxMolChmA/\
ZpL2lQ2HO+nEAR6DCXQ/gKVV3BNK0O/\
zimSa7vwzTJzpRM8xPgKZkmtXsjvjjxIVaEWT7UTdn5GqZKZedr4Ck7CfdhWqZ89GOQrHh\
9GGT04o4Msh15XYUruqxK5nQRDsrVrGzfphtzYqVuoBgKUIrT7JuHBpH+\
x2Vj7lp5NqK3st4vtIpW0ZpqKOuDrYFszZCk1ng18n0RspOq8CB0KZW3nLIoOXxtFm3j2e\
zxKnn2HZgaKE5s15raGMd2WUX5sF0yRCXb/\
RR4SrbLDlVZvFojf4fp4I3uuU9vLEKu6I2tyxCtVpk3Q+QSlJ2mNrb0RYCs0ma+\
WT4qtJlqlHNAqaiJ2phfbV8j1ZUrre+MfenL/HgEUszPiYvM6XRjuMhD+\
JX1RsqKWav5sOJodseRFRciO7Elfj1vE9gSOw4+bIkMQ8mWPgOeUknnPIiS4d+\
FaRnDV3TlrNmycV05/\
v2FrDfdeAxn0JRdOS6Iki09wioq2dIjmCrZUlab78aWsgpyX7bEg5ZiS910cfLZsqpnXd5\
hTRl48w4ObHvzjlrkdevqKIU41tURsuPMaSGyE8uzJkfGsTyWKj4sjxMmSpZ3L9hslSb2O\
Uwrskx19v8KKCKOEfVcfRSn6GPFiWhj5JwGUjLyj2BahjIbzTnjnwNvNconQKnoAtagRLp\
y2ZxOv8x0GafSJzNFE0KOmakduR/\
rouLrw7oiuunIugqRnSpna3ZnXOXMWibrTbfKmflGWTl/\
Hey9itOQByg5zefA88nQF42PPlNDhcjduAHnXZTc4GOYlqG0aRKzM6nc2U1fIYuXTwgxUF\
T0ibj0X+GtyH0uBz8S2fNN3wq8NKcHjFOp9ybqx2e96cEGZwfJBkWck7qdnNmyB1B2E9v0\
1KfLh1xPfQrTcX8pxpqfGsdkHsCvrDcCTm1NUXhzagpe3pw6i+ykrX0ZugS/\
xmhrFO2z3nTjoV/\
AVMlDvwCekpPxOxxKTkYlRcnJsh2Vbpwsq0b25WT38WopTibQh6iVXMmtp0AfuhIezYqq9\
Qq2/6+Wj0eJnYxejX39yxoUzihcSaA4cWprxmQcp2ZV48OpyUOVnPoz4Ck5NTsuQ2ZROMn\
nqGE9gKlSw3oAPGX/\
5yFMyzSeflyZecSHK0cv7siV25HX1fKiy6rkiJfgoFy3y3aounFEahIGisGrUuxt3zw0iJ\
ROLhtz18qzEb2V9X6hVbSK1ixKWcdvDWRr8qfibwJYOylAdtJPvgldSuUtpyzKasUnizLz\
KLPoQ+ApmTv7/0rm/\
hFMy1Da2CkZnZKd3gOekp2yd1YWX9bIt2H4fqOv79O1i5ArunbrMjqriefN6LgEZaepjd1\
8FSCrVKPHBw5UqUbVKOeBUhF925habcclpU2V1mPGvvRlajwCKabmxB3mlLEx3OER/\
Mp6I2WxrK18WGw0VeTIYguRnbQ8fqGTez9Oy2MvJOtNN7ZEhqFkS58DT8mW2OEpi9ZtXJn\
zMEqu/DFMy1DaGAHnzJSdN7YilbzjyYEDDrzjCUyVvCOrSnfjHVnttC/\
v4EFL8Y5uFfMjQCl1Z/\
LPsiplXZ5gzSt48wSOfnvzhFrkdevgKBg71sERsuP0aiGyEyuzZlDGsTKWFj6sjExGycq+\
CDZbxcq+hGlFLqvmGPeBImIyUU/TRyGKPlaciDZuy7kiJbf9BKZlKG0cKqudplDm3/\
0v8FarV4xTCiIU6lBXhCiRpm3sizTLzq/mmGWjySjHLNuO3I9BUm32YZARdXZkkIXITlO+\
1pzPuClfVn9Zb7ppDcydSq3hQbD3Kn5GTqPkZ18Cz4dtXDI++\
kwYFSJ34zmcjVHynE9hWqHhVas4szOp3NmNTWW11b5aEQNFRY+KS38fb0XucyX4kcieb/\
pW4OUbk+mMkMap1HsTzQJkvenGbMkGlcz2HvCUzJb9h7Kb2KZAP18+\
5Ar0c5gO4Q4XsOwbw2S+gV9ZbwSc2prg8ObUFO+8OXUW2Ukn/\
Dp0CX6N0QnZ5sh6042HfgVTJQ/\
9CnhKTkYlRcnJqKQoOVm2O9SNk2WV1b6cjGOoKU4m0IeolVzNradAH7oaHk1HfagQ2ThDV\
3Hw/vXy8SRxhqJF5ZzBFQ0KZyauJlCc2Lw1WTOOzbOe8mHzZMBKNv858JRsnn0rI4Y7cU5\
W3VnO2U09+wamSvXsG+Apu2ic0ChTl/\
qxdGYwH5YevbgjS29HXldFjC6rkp1ehoNyxTDbG+\
vGTqmGGCgGo0vxxn3z0CDSWLlszF0rz0b0Vtb7hVbRKloTPWW9xjWQrfmp1BqvRn4kQnZS\
bh6HLqXyllMWZZ3kk0WZeZRZ9BHwypQIBdu1JpbGsV1WqrVst62q4YSJsqr5BKZlKG1sl1\
3Asni1Rv4O08EbEwo+/ccIuaL/uC5DtNqR3gyRS1BWO7WxpfsBskr/mv+6X4X+\
VY1yASgV0byN+dX2jlIqW2l9Z+xLX+bHI5Bifk5cZA6zG8NFnsCvrDdSVsxazYcVR/\
NRjqy4ENmJLfFrsZvAltjVqWVLbdogGYZSG/\
wSeEptkL2qstOk6Elak3XjepJs3WS96ca9OfWk5N6fwrQMpY3HPMMqKnnMM5gqeUxWNe/\
GY7Labl8ew1HPFI/\
pphs8qdyhNt3gCfCU6jtZc1lttS67seZFvNnNBfw6b3ZTi7xu9R6FScfqPUJ2nB4uRHbik\
tYM0DguyYLIh0uSfym55FfBZqu45NcwrciY1dNVD4Ei6pJFnV0fXSv6WHEi2lgn57qUrPM\
zmJbNsdB8XrY5e/wrIF8NfiSy51m05lj4r/iHQt4Y+\
bB6ZTnTUdH5rEGhynZViHIZa5c6JdJsPL+aYzaO5sgcs3E7cj+\
mSS3dh2lGFNuRaRYiOykfj8JtgF9jlA/WollvuvVWmGNFmZydggq+\
0MbjyH2UPO5r4PmwksvGR595rELkbnyIk0RKPnQPpmUobZoS1ZeyE9+\
mj2WV477KFQNFRQeuM5ekJh9Vh8apdGK27EP4MFuyQSWz/QJ4SmbL7kpZZaLI/tY017js/\
xh+Zb0R8FBrpsObh1IY8+ahWWQnDe5B6BL8GqPBsVGR9aYbd7sPUyV3uw88JY+h+\
qDkMVQflDwm23npxmOyqmVfHvMIr5biMQJNhfrCtdx6CjSVa+HRdNRUCpGNM3QNB+/fLh/\
PEmcoWlR2169qUDgpcC2B4sSArVmbcQyYNYgPAyZrVDLgL4GnZMDsCQ1hwJxodFScHsNUq\
Tg9Bp6yQ8XphzJFph9LZwbzYenRizuy9HbkdZW36LIq2ekVOChX2bL9pG7slAqCgWIwuhR\
v3DcPDSJdksvG3CWaevsWpmVVebR21iqGVtFeWTM5ZV3ANZCtCajUTq5GfiJCdtKHnoYup\
bKjU65mNeaTq5nflLn6CfDK9A4Fp7ZmjsZxatbDPpyaPFTJqb8CXhlKWx3IeRdlHfgZTA0\
Uwbf9oqWs4Jz9WBCVRB+2a7Ujvdkul6DszLYxv4cBskrLm/\
8KY4WWV41yESgVOaONxWZ7R6l9qf5rZaxVjX3py2J5BFIs1onx8Psjm8B4+\
D2TrDdS7s2604d7R/NRjty7ENmJk/\
FLv5vAydih8uFknDNScrKvgafUOdl3KztNiv6qNVk3rr/\
KNlTWm24MgxN4yv4qF6QMpY1734NpGcNvY0s72CslW9qBqZItZfsM3dhSVg3vy5Z4nMexp\
TlFklNn+Uk3ReZZ5XlpU2SeAU/ZPWGlUFZPrsvorHkfb0Z3Eb/Om9HVIq+\
rWERB21GxiJArFAsr7gmQnfizNcM1jj8zyPrwZ3JOJX++H2y2ij8/gGlF/q5mb4+\
AIuKIl/DKjlpe9LHiRLTpz5zLU+\
rPn8O0bA6J5vOyzdnj3wD5WvAjkT3PIm809fzoRhsrq/cmmqXJepPi1JEPq/\
eZE0IVffQaFOqc14QoUWfGp5sRLaUjN4imEh25QTtyP97LboYP740IvyPvLUR20p6ehNsA\
v8ZoT6zTs950056Y8ZXa0+Ng71WskkxMySofAM+HI10xPjYhV0/\
3FSJ309tewFQ5i87pNyUH/\
AKmZShtqh4Vp7J71aZQZjsEBsq0fMwC0l8vHzsJFCbd2YBTG9c0KJxAmRIoTtzcmiAax83\
Zy/Lh5uSzSm7+FfCU3JwdurJKT8FfZlc3hr88hV9ZbwRM2poL8mbSFBq9mXQW2UnT/\
CZ0CX6N0TTZhsp60419PoSpkn0+BJ5SJ6N+ouRI1E+UHCnbyerGkbIqcN/+6hO8Wqq/\
KlCFIrLmqApN4dF0VIUKkbsxYM5OKBnwPZiWobSxPDIjJcv7GnhKlsc+\
0hCWx8lPR13oKUyVutBT4Cm7WpyYKNNN+jFRRmkfJhq9uCMTbUdeVx+LLquSgV2Fg/\
JOZbbrY/CJFGvZNw8NIl2PL0TtwDG3Tvh1ZTGgWlucDb5bPuQTg9/BtKzmjc6GdUpCq+\
iUWBNEZV3CNZCtea2Kb1tZ90GA7KS+WDOG49QX1jo+\
LIGZVckSngGvTE1QaLbWhNQ4zZbVZtabbmyeDFjJ5u8DT8nm2b8rUx2mAwcaajnOAClruc\
9haqAIvvUZbVgFp+7H8qgG+\
rB5qynqzea5BGU3o43ZPgqQVQrmo2BlVarf7vJRofpVo1wCSkX+a6sFsl2m1L5U/50/\
VvzGvvStOHjQUhWHE3vbWT42hr3twK+sN9I6gtW7Tx0RzYI51hGFyE78kl8x3wR+\
yV6WD78kJ1PyywfAU/\
JLdujKTpOiEzs7vTGdWDasst504zGcNlTyGC5IGcq0fFTXEZwjU9YRX8C0DKWNk3G+\
T8nJXsBUycmyPaFunCzbuejLyXhpBnOymVNvDCdjHZH1ppuitlN5etsUtR3gKfturI7KKv\
V1Waw1DeXNYi/\
h13mz2FrkdbWgKIU4akERcoUWZEVhAbJTzWBNuI2rGRhkfWoG8mxlzfAw2GxVzfANTCvYR\
DVjfQIUES+OZjp8VNLoY8WJmJaPakbOqUUlI/8SpgZKX+\
b3JFy7MuZHd2fzOVv9O7zpFPxIZM+z/\
1bg5RvfM2EEMXZS780VeHN1pTepiiLyYfW54ixbWQyoRqGWPAlRok5e2bdsFBrI7PTGaCC\
s5LLedNNAGIWVGshT4CkzPbOjMtN/A7wylDYNZA8nQqmB7MFUOa/M71gpM+\
FXMC1DaVNadrBiZSe5TTXKasN9szoDQCqrG2+1WD52l49/\
v3y8SLzVBKjZgFMIkwZlAsoigeLEUKy5m3EMhV0TH4bCrK5kKPeBp2Qo7AWNYyjWtN44hv\
IcfmW9Eeh21pyLj25nyTs+\
ul0hcjdG8B1Mx81QPjZO2Di9ig2PrDfdWCznnpQs9hHwlBoIa1Ul82OtqmR+\
uzgRSuaXVfj6Mr9neLXBeo41RTKOLZF717KlNlbMnvqkQZmAkmLF3dgSVfAhbImzeo4Kyn\
OYKhWU58BTavI7MC27f4rsb00Bjcv+FL19sn948FfH/1SW2b+\
AhxJQV0Ioxkh5T3aBjwv8Op+ebDvydODAm6zE4iehVcSCrN67ER/\
7Il8zkKdm5B0RslMFvRu6lMoJThmKTNInQ+3AVJmhdoBXFq0VTNKaLRjHJMnla5lkm+\
5G9qXU3R4CT6m7sctSVtO1cW92zycNygSUFPcW6GTWpIOPThYhV5zFNrb0JEBWVf7zfzG6\
ovKvRrkMlIooPR+\
takUmq2en9sWatSmsieQslkcgxWKdOMYcDDaGY7yAXz4cYxemSo6xCzxlFfwid3qdmAy/+\
rgJTIaatA+TYfZXMplvgKdkMlTay+\
ofhaYyO70xmgqF56w33VjCU5gqOypcEKVazCmXSYMyASXFWLvxqj2cCCWv2oOpkldlle9u\
vGoH71LRtZuN/gbnILv78xs8yJ0xJzY1s+\
GNYVOsAHzYFBmIkk29AJ6STbGuMc6sQG21JiZ81NYIeWpG3vFDjuJQzbcqrgKK71Cxz2sg\
XzGQU/l9NfITEbJTpWDNp4yrFBhkfSoFsmtlpfAo2GxVpfAYphUcopqnPgOKiA1fwSs7Ko\
/Rx4oT0cbDOXM0aVAmoKR4eF8d7Vm4dgd/iWdEELo7m+8sH2Sai+\
BHInuefUYQ9heiCGLspN6baKIl600P7j07SO5dFgOqUSagLIQoUadoKto/\
hfIxO70xyscO/Mp60035YBRWKh/PgafM9MyOykz/\
GHhlKG3Kx0ucCKXy8RKmZShtmZDfw5g0KBNQUpmwm76SVf67aUVZRbhvVmcASGV14622lo\
+5bP+Py8de4q0WgJoN2OVeaFAWQNlKoDgxFGuuYxxDYa/\
Eh6EwqysZykPgKRkKO0BT0f4pGMrs6sYwlF34lfVGoNtZsyM+up0l7/\
jodoXITkrSU2PvxylJ7NplvenGL5/\
AVMkvnwBPqU5kOzjdOBmryDKUNk6W7R9042RZ7a0vJ9vBqw1WWqypjnE8hqzYh8cw9yt5z\
DfAK0Np497s1y80KAugpLh3N81iF6ZKzWIXeEoVnB3WsnulyOrWtM24rE6Z2Serh1R4dVy\
f8LvD7LGf4g4loKIBoAm+yfuvW/\
i4hTX26b9GyI7913bkiOdYjCe0wk7um1p99kmNPBnIKda1GvmFCLmbavlrmA6pguf/\
z5r3GVeTkwFnvemWgZm1lBn4BfDKshGPZT8GbE0rjGPArEGy3nRjwJxqUDLgR8BTKnns20\
y/ROk7bxCmeBbzTpMOEXKFYtFWW3AGYaFBWQClorZoY4OcfSlbsTbFYv4bShWKRTXKFaBU\
RGmLB6yOEVmFPLUv1pkurPnkLJ1HAG86hmPMF2NjOMYe/PLhGN/CVMkxvgWessrfg+\
kQ7kBdeWOYDLV0HybD7K9kMo+\
Bp2Qy7BBMRfun0IxmpzdGM9qBX1lvurGE5zBVdoK4IEr2xrkZJXu7D9MylDZexXkmJa96C\
VMlr2LtNZWfsWpeldWfU+8yG/0HnIPVu/8Qu1/2LtUo8zqxk2KcMSfOxr+\
OugmcjXWGD2cjz1Fytj3gKTkbq6eyqj265dZ9zyrH1qTHpEaeDORFM3K1ctyOvK46EwUoR\
3UmQk6xiNXIz0TITvWINb0zrh5hkM16060eIYdX1iNPgs1W1SNPYToVobSx4R2giDj3Vbx\
yasrHuJMTfvdfh/9rB3iHE3hAeeNjxYloY/ucyDI4Uje2/wCmBkpftW4nXLuDRW/VxgjI+\
8viFBdldjLis1vBj0T2eJc34tT8/1kzUMZ50XvD+bBppTc9GP7sIBn+\
pEFZAEVerbDrZdwRJxVndnpjVBzWollvuqk4jPVKFWcXeEo+\
wRys5BNPgVeG0qbivMKJUKo4r2BahtKWb/ktFWW+pb5ShtKmFbG6r9CK5pNVo3tl1e2+\
3IEBAD6sfqvry8csDvzn5eNl4q22ADUbsHu9pUFhJ/56OUpbFmbmMnaoWxZ+\
BDwRyrzn7NiMy8LW9Na4LMy+\
a9YbgQJmjbEYey9QwCyhpAm5WgErRHbSZJ4bez9Ok2GXLetNNw71DKZKDvUMeMo6P9sL6c\
Y7WCkpeUdWie/GO7IqVl/e8QKvBh/GqAnWFMY4NYHML+tNNx7D3G/seDce8xh4IhTuZOq+\
OzEH1gdZ5tCNU3OmQMmp78O0DKVNd96Dadn9m2DeL/vvGPs3LvvvBGdQn/3Dg786/\
qeyzP4FPJSAigZ7GCNXMs11O57X8fE61tin4xkhO3Y825EjPmQxo9Aqyi1WZ9uIzH2RFwZ\
yip2tRt4TIXfTCX8ElFIn/BGmQ2ry+f+\
z5njGKQTk47V5vk2nZ25U6vR7wBvX3bOmEMbxcVZEWW+68XFy2EmDsgCKnI+\
zU1IWe2ejtjmCKdz/\
BfbPZ4IhQp7KkSMGZXCpvF5ozU4YeyrQC60lKDtNbZUO5ykqapBqneX75aNCZ6lGuQqUim\
jepn9ldf1UzWCd/\
Wxm4reH5DXDDkAZx0WM5yeYjmM8nOTfBMbDyR8fxvMdTJWM5zvgKSfqXsJ0CJOZ4PTG8Cr\
2GXx4FbnIpEFZAEXOq9g9MeK6k042O70xOhmbCVlvuulkuzBVdsm4IGUobbyKczNKBfkhT\
JXsjfNMSvb2CqZK9pbtZnRjb9QVKjqxs9F/\
wjlYfcY4x1L2LtUoW0C5LkSZd4O9LOMkOzHDuX7YGGbImsmHGZJNKZnhS+\
ApmSErwTK9YF1N3pq1MW6LQJOPkB01+\
XbkCTvZpkhFAcpRkYqQp2bkHRGyU9XzHH4xNo2rehhks950q3pYKUwalAVQ5FXPc5hW8KF\
56/5m+dhNoEwhygugiJj9NbzylFgxgVYbfaw4EW01BWfilDXFNzAtQ2nj4dkuhoGyvXzMa\
f2/Lh+vEihsy88GnLC5rkHhtNB2OUobp2F9VBZpua0vsC9k5NeDH4nsuVeMtPP/\
Z83RTSO8meDNYqU33eot1ihlZ7at3noMPBEKd7Ki3uKm91O7Zqc3Ru1izZ71ppvaxWylVL\
u+BZ6SEZFFTBqUBVAqGFGb2vUDToRS7foBpmUobYyBCpGSMVAhKkOZsJk1mlq229ONl2S7\
AH37rgwA8GFMVremcaYR3kzwpimrt3HEB3BVyREfwLQMpS2rs1M2LqtbM3zjsjr73VlvBJ\
qgNcljxBSBJmhJR03IeyJkJ5Vq19j7cSrVLvzKetONk+\
3AdNKgLICi5GScx5azpWwPqhtbYn2nZEvZDkg3tpRVD/\
uypT282mC2ZM3YTCO8meBNE1tq00DIMIwd76aBPAWeCIU7OY4tRTNsWX7STXXgZJ5SdfgO\
eGUobcyd0y9K5v4QpgaKE5N5YZyScUzmBfzyYTLh9VJl/6wiauSyVMbcNw8N+EJT+\
EKM9yu5+Wy5Rtd8Gx+3sZM+XfMIeWpG3vFDjs6QdZpCq+\
g0WdMRxrnqi7xlIKeY5mrklyLkbkrtz4BSKrU/w3SIijH/\
f9Ys2DhNhbWFD2fhzJiSs7wE3rj+qjXJMo3wZoI3i5XedKstyMcXGpQtoMhrC/\
aqymLvAie17RuL0UtOib0STMFEyCmeJlBYI0cWiT0VKKzWEpSdpgVWtoYBv8itbLdK5xuY\
ltVT87tXK1Pzf2O3QpmqRrkGlKkcpa1myPZbUrtv3bDCmt3Y/b6VCQ9aqjLpxt5+\
s3zI2dtvYDqOvb2CN5vA3l7BLx/29j1Mlezte+\
ApJ0xfwXQq2j8FR9wJD0aKlTlxxB34lfWmG0ckryrLt20c8TnwRCjcyVT2cFIWZ6c3Rlnc\
g19Zb7rxKk7HTRqURbggZSjV7G024BSWUg1/BFMlR+R0nJIj/\
gBTJUfMdpm6cURqJMYZM24vt3UP5v8FJ2I7+JHInu8XZSay4YPBPxSubOTD6hP/\
BKZlK1uNwr7AthBlC2uXur1OPHWumTaGp7JOzHrTjaeS2yl56ivgKXkqq9/\
plyiCboc191Wme63b7YiQHbsd7chRhLdifVbriwJUxT6vgTwZyCnmtBr5hQjZqQbbhV+\
MTUO8meDNYqU33WqwHZiWZfe2Gmwn2GxVDbYL0wp2Vl0B7AGlbF+\
qUSa88iKxYgIVPPpYcSLaKhxOTiornMcwLUNpqwqy/aG+\
mu5euEMHi95qttxZPmo4VK3qXo0yAaWCQ92A0X9fPn5IoGwDZTbg3Ne2BmUbKDcSKPq6bf\
7/rBlS4x47VZGsl7PedKsiWXkpq8inwFNWkextj5tVnJ3eGEWRukjWm26KInPwpEFZAKWC\
T7TxPHIjJc/\
bBV4ZyryZ1YriTzgRSkXxJ5gq556peyl5EHWvMpQFNrNGt8x21LqxrR2cNjnbYgBIsS2nr\
G5Nb43L6uS7PlmdmVCZ1Z8BrwyljYlyLkfJRL+\
BaRkTVXAHa7J0HHfg5ELWG4GeStAJ7pdpi+vqqRGyo55aiOyk8H1r7P00wpsJ3ixWetON+\
b2AqZL5vQCekvlxfl/J/\
H6GqZL5ZbuE3Zgfa1Ul88v2qLoxv12cNjnze4lXG8z8duDIJjC/\
nWBF9MyPs1tK5vcceEo9ZwemQ/ScaOYxy4K6KSic5Jw0KAugVCgo1SgT1m7x+\
qGqDziTpawPHsG0rD5QsLI94ywa++fEyvbglw8rCy/\
x6lyWypj7weRQAmoRQjHer6wAIh5gMYLsXMMNfLyBNTbWUzDXECGnoo9grqEdOeJ2FssLr\
aI8ac2vGFmmL/J1AznFNFcjvxIhO6kd1oTbOLWDfNwnzzM3ThqUBVBSed6Jj++\
GWwbnxvDxXfiV9aYbH9+\
BqZKP7wBPycd3YVoWr6Jq0qgr899wjV5ykdgrwWxPhJxiHQLtM3IkVbsLtE9rCcpOUxuf2\
8utbLfqgPNMyurgMUzLUCzeZKBM4ZbMfwdwev0QoExAqchMFitZHRepU5SpbCllqrSaNs5\
Y35qBxzlVM3TTdH+3fMg13d/BdAgrm/8/\
fhNqEzgivzHlwxE56TdpUBZAkWtBP8B0CPfbgtP0K8X9nJjoC/\
iV9aYbEyV7UzLRXeApmegLmJbVrwo1bnZ6CvdvGuHNBG8WK73pxt44g1d2ZqtRtsIFKUNp\
44ic9VJyxCcwVXJEzuCV7X41ygSUiszUxhF3sPtKjpjtUhi3l9v6Eub/\
DSfiRvAjkT3fj7eX/bQoFxjxU+/NFry5vtKb1D5HPqy+f5wjq+jr16BsA+\
WGECXqjBq33Ik18+/Fc//\
GsWZWrVlvurFmMs1Jg7IAipw1sxY3YpOgKzKF8I5dkQg5FQ0EXZF25HX1zShAVezzuvpmh\
Fyhb1o5VoDsVBF+C78OBm6OqQgZZLPedKsIWUUpK8IXwWarKsJvYVrBFeetq6lHXgKlbF+\
qURZ45a3EigmU/+hjxYloq7c4YWlwpG711lOYlqFYeWT1HdrNnbu+CvPLcIcO/\
hLPidGxxvRhdLUdiTZG9yPwRCgT1i6V6Q2Um3Dtf8LcQOEgzWzAabUbGhRO3t0sR6muqGY\
UVlTK6vA58JTV4Q5MjZjkpFtaE63TCG8meLNY6U033ZK5VZTBt4BSwRPa+Bs5j5K/\
fQu8MpR5M+e0WKNb/gYnomz3q1EmoFRkkjZ+Qz1LyW+\
oZ5WhtKmj2b5dNxbFSkTOohgAKlgUl76f5rsLRxj5jBvmpPmSx2a96ZbVd2CqzOo7wFNm9\
V2Ylt3ENk7HGSMlp3sMUwPFiaFYs7jTCG8meLOaoQjUWIIu4L6PGhshp+\
6pQI0tRHbSB78LXYJfY/RB9tyz3nTjl3swVfLLPeAp+eVvDxxw4Je/hWkZShu/zPYYuzG/\
bO+pG/PL6rZ9mR+/DDGY+b2AI5vA/Mi9fZgf2ZKS+e0CT8n8XsDUuIlO/\
IQVWpafdFNQOC9aFhfaFJRfA0+EssDabb1+qJg7J7+UzP0JTMuYu4IvvTTO4ji+\
xIaJD18KL/\
HqXJbKmPvB5FACaiuEYrxfyc0jHlA9r3ATH29ijY31FMwrRMip6COYV2hHjridxfJCqyhP\
Tvg4YZ+NLNMXedtATmmMq5F/ECE76RDW5No0wpsJ3jjmeeZGZZ7/\
AXhleULBx625m3F8nBVR1ptufJwcVsnHXwBPycfZqyqLV2tMzoTJ941pNmOvBDM7EXKKdQ\
hUycgRR1XSWoKy09TG517mVrZbdcA5JWV18BSmZShtmtH8dwBTvLCb/\
rWLHTJueWr3rRtWWOfK2TwPWorNd9NB/\
7B8TK8fKh30DzA1UJzYmzWlNsSbCd44sjdOsynZ24/\
AE6FwJ1M30Ykj7oUHYzBH3INfPhyRvErJEb8FnpIj7sHUyB5OOpk19WbcICedjI2RrDfde\
BWn48rObFtfkQuiZG+cwlKyt2cwVbI3TsdVRPMalAVQKjJTG0dkVavkiNn+QV+\
OyEuT4ohGtOAxegV3/wdO4M3gRyJ7rudbgZfmpFjZhEZnb6LZq6w3qXMV+bD6vu/\
AtOxcVaNwOu6mEIU7mYpdTiydfzk+\
y4udWDrr16w33Vg6ma2IP28BRc7Sf4ZpmQ61bn8kSiupWC/\
oj0TIjv2RduR1lc4oQDkqnRFyhdJp5XQBslMFak3/\
jatAGWSz3nSrQPdgqqxA94LNVlWg38G0gptW1z+vgCKqsrbwyo49gOhjxYloq+/\
4vUBlffccpmUobTVRtjvWt1p5Fe7QwV/iOfFLfq9sE/glK2wffklOpuSXPwNPyS+\
pG5RlPUXt+wJvyv0bV/tS48h6Y+zALWzb/\
8bSGjtwE792NuCE4U0Nyk2g3CpHaat9X8B03LSkNblr3CAnFZhaVtabbiowmYNSBf418JT\
slIxOyU6/A14ZSpsK/DuciIpoXq0C/\
w6mZSht7G0HK6ZkbzswLUNp05qzXdBuHHEPp03OERkAKjiiIqtbE3fjsjpZem1Wb1O0mQm\
NHe+maL8AngiFO1lx39t4EGeplDzoKUwNFCeGYs0cj2MonGnJeiPQmqOCJxUfBVqzJUk2I\
VdrzYXITurn96FL8GuM+slmbNabbvzyJUyV/PIl8JT88vcHDjjwy9/\
DVMkvd7FiSuaX7ax1Y35ZVbov8+OXPgYzvz04sgnMj9zbh/mRLSmZ37fAUzK/\
PZgO0XPmmMMKLctPuikonL5VKig/Ak+EsoW1S/\
WRujF3ztEpmfszmJahtHGC8KCujteprLB/YQ4loKJRSsa0lfxz3YmDW+\
HWpfKfYOIgQnacOGhHjviLxWRCqygXRPQpFUn7IltzPCkdbTXyTyJkp1rbmj0zsodTLiPn\
9MlljP/KXPYT8MpqRwXntCZnxnFOsn4fzkmepuSce8BTck72Y8riVVQxVX/\
z1ppH85m6iZBTrEOgvFnzPsaeCpQ3awnKTlMbn3sVIKsYMCeNlAz4OUzLUNp0kfmv7VXoI\
m0aT21PIbprrxIoyVquYpptfoP/hR3K7kvUhSnblzaF74/Lx+L1Q6Xw/RGmQ1jS/\
P9Z81zjOBsnpHw4G+e+lJztZ+\
Ap9YffwHQIF9uG0xvDDNlz8GGGZFNKZvgd8JTMkJ2UsnqSy/wSm7hux8ya5xrXMaPkn/\
WmG5vi3JeyY8YFUXK2HZxZJWfbgamSs3HuqyKa16BsAaUiM7Uxwz3svpIZ1irjt5ePmRr/\
XyyFgUKpcTbgtMktDQonZ24nUIxIxCP6A5aCfPdW8CORPfeKkYj9qCivGblA7802vLmx0p\
seFcDsICuAsjNbjXITKLeEKFFn0YhYThUA/+\
L7JlQArIh9KgCyZmUF8BvgKSuA38K0TNmKckZ1xyVKWY4dlwg5FQ0EHZd25Ch3VmunUYBy\
1E4j5BQnXY38SoTsVN1aM3PjqlsG2aw33apbVoRl2b2tun0ZbLaquv0ephW8t7q2+\
gEoogoumm4xVkzQVYg+VpyIttpxFydCWTvuwrQMpa3eyvbb+k68/\
BDu0MFf4jnxS34baxP4Jat3H35JTqbkl78FnpJfUpMoy3qK2ncPb8r9M6KPU+27B7+\
y3nSrfVkvKmvfb4FXhtKm13DGUKnXPINpmV7DozVfjy46tjVVO07HphqX9aYHP5kdJD9R6\
tg/Ak/JgckblRz4e+CVobTp2H/AiVDq2H+AaRlKG0ekJqjkiNQEy1BYatSo5dk+\
bjcmymquTL2wVixau9AqWjsSwEVuFZ1YhDUzOI5FsCrwYRF7MFWyiD3gKRV0dsPL7mQbV+\
E0mJKrPIfpOK5iTU2P4yqcz8l6I9C2rdlJH23bkkB9tO1CZCe19dehS/\
BrjNrKaYysN92Y5iuYKpnmK+ApmeafHTjgwDT/DKZKppnt2HbjgNlOXjcOmFXB+6qR/\
NpKhRqpYH4v4cgmMD+ycB/mR7akZH7fAU/J/F7CtKyOUPAT1mpZftJNS+EksVJL+\
Rl4yr4VZyLK7p+CY1gzneM4Bls2tRyjrarZOXAgXdUY8T+\
VZfYvYGgQNVx5xxgj5RMTt8PXdZyYiJBTN1YwMdGOHPEhixmlFB5+vZ2hMRWZ+\
yLfNJBT2pJA1SpEdqrdrdm5cbU7OaxPbmQ+UebG3wBvXA/UmvwZx2FZRfhwWPI+\
JYd9CTwlh2WnpyxerTG7EybfN+\
bpjL0STA1FyCllQ6DkRY44KnnWEpSdpjbN6IcAWcUadw8ccNDCd2FahmLxJgMlYojz39ir\
0FnaNKPaHkVKZymtDct2/\
xbe4P9gh1bvy7fYl7J3qUaZ12kvd8ac2JQ1KTaOTXH2yodNcaJMyaZ+\
Czyl0vA7mA5hSVTaN4azsbvgw9nIc5Sc7XvgKTkbeyZllZ5Ct7JmuMbpVhT3s9504zmc9S\
o7s229MS6Ikk1xpkjJpl7AVMmmOOtVEc1rUDi3VpGZ2jgbq0wlZ8tq4H0VWF6alAJrvNWd\
5WMmyf8PS2+\
8FUXH2YBzLLc1KJzJuVOOUs1EZxQyURHf5USWnFWzLzeOVfOvmm8Cq2b958OqyUSVrPp3w\
FOy6t/D1Ihdgv6CNZ1Uppqt21+IkB37C+\
3I6yqFUYCq2Od1lcIIuUIptHKwANmpYrQmzoZ4sw1vHCtGVlnKivFVsNmqivHXMK3gktX1\
yk9AKduXapRtvLKjhh59rDgRbfUYv/umrMeoopahtNUw2e5S3+rip3CHjOrCiV/\
yW02bwC9ZEfvwS3IyJb/8PfCU/JJ1flnW4xWbD2NUHd0OfiSy573h/\
t3ESYiyXtlEfGdvoonHrDfdal/\
Wi8ra9zvgKWvflzAti7htyscO3kWpfOzA1EBxUqCtyddxCjR1tKw33RRosiAR12JHt4LRt\
TFtslMl0/418MpQ5s2sVqD/iBOhVKD/CFPldO4eVkzJRPdgWobSpnNnO7Dd+\
G62M2fUJtGKWWsXWkVrR5q5lVvF1ci/\
EyE7sSRrAnAcS2LV48OSyCyULOkl8JQsiR10JUvaxbsoWdIuTA0UgT4dFUmO+\
nSE7KhPFyI7KaY/hi7BrzGKKRuuWW+68bgfYKrkcT8AT8nj/\
nz5kPO4P4epksdlu67dGFa2G9eNYWWV7L6KIr9oUaEoKtiNNSs3jt2Q4/\
qwGzICJbv5HnhKdsNuTxlXVigVrIQOBv+\
gUio4YVsWF9qUit8CT4SyjbVL9Z6cOIY16ziOY7Dt4sMxwoOvYu4vYLr8+LdQ0ko9"]];

Show the length 999 ruler with one fewer marks:

In[17]:=
ruler = betterRulers[[208]];
length = Dot @@ ruler;
marks = Total[Last[ruler]] + 1;
excess = marks - Round[Sqrt[3 length + 9/4]];
Column[{{excess, marks, length}, Grid[ruler, Frame -> All]}, Alignment -> Center]
Out[21]=

Show how the John Leech upper bound for the number of marks in a complete ruler compares to function-generated rulers:

In[22]:=
ListPlot[Table[
  Sqrt[3.348 n] - (Total[
      Last[ResourceFunction["ReasonableRuler"][n]]] + 1), {n, 214, 2019}]]
Out[22]=

Generate rulers of length n! and plot the number of marks:

In[23]:=
ListLogPlot[
 Table[(Total[Last[ResourceFunction["ReasonableRuler"][n!]]] + 1), {n,
    1, 30}]]
Out[23]=

Options

Show the marks for the first 51 rulers:

In[24]:=
Table[ResourceFunction["ReasonableRuler"][n, "Full"], {n, 1, 51}]
Out[24]=

Show the excess values for the first 51 rulers:

In[25]:=
Length[#] - Round[Sqrt[3 Last[#] + 9/4]] & /@ %
Out[25]=

Possible Issues

Show the default shortened form for a length googol ruler:

In[26]:=
ResourceFunction["ReasonableRuler"][10^100]
Out[26]=

Show the number of marks in a length googol ruler:

In[27]:=
Total[Last[%]] + 1
Out[27]=

Showing the full form of a googol-length ruler isn’t recommended.

Neat Examples

Generate reasonable rulers for various integer powers and calculate their excess:

In[28]:=
Text@Grid[Flatten[Table[Transpose[Prepend[
      Table[{base^ToString[n], Total[ResourceFunction["ReasonableRuler"][base^n][[2]]] + 1 - Round[Sqrt[3 base^n + 9/4]]}, {n, 3, 15}], {"length", "excess"}]],
    {base, 2, 11}], 1], Dividers -> {True, {{True, False}}}]
Out[28]=

All rulers to length 213 are minimal. Show a pixel representation of these sparse rulers:

In[29]:=
ArrayPlot[Table[PadRight[ReplacePart[Table[0, {n + 1}],
    ({# + 1} & /@ ResourceFunction["ReasonableRuler"][n, "Full"]) -> 1], 215], {n, 1, 213}], PixelConstrained -> 2, Frame -> False]
Out[29]=

The maximal length for a given number of marks is usually a Wichmann value:

In[30]:=
WichmannValues = Table[(n^2 - (Mod[n, 6] - 3)^2)/3 + n, {n, 1, 30}]
Out[30]=

Arrange lengths in columns ending in Wichmann values and bold the lengths with excess 1:

In[31]:=
Grid[Append[
  Transpose[
   Table[PadLeft[
     Take[Style[
         If[Length[ResourceFunction["ReasonableRuler"][#, "Full"]] - Round[Sqrt[3 # + 9/4]] == 1, Style[#, Black, Bold, 16], Style[#, Gray, 14]]] & /@ Range[213],
      {WichmannValues[[n]] + 1, WichmannValues[[n + 1]]}], 15, ""], {n, 24 - 1}]], Range[3, 25]], Spacings -> {.2, .2}, Dividers -> {False, -2 -> Blue}]
Out[31]=

Resource History