diff --git a/hyracks-examples/text-example/textapp/.classpath b/hyracks-examples/text-example/textapp/.classpath
index 3f62785..0dff09c 100644
--- a/hyracks-examples/text-example/textapp/.classpath
+++ b/hyracks-examples/text-example/textapp/.classpath
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs b/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
index 37272d9..692202d 100644
--- a/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
+++ b/hyracks-examples/text-example/textapp/.settings/org.eclipse.jdt.core.prefs
@@ -1,6 +1,13 @@
-#Tue Sep 28 14:37:42 PDT 2010
+#Thu May 19 22:55:12 PDT 2011
 eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
-org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.4
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/hyracks-examples/text-example/textapp/data/file1.txt b/hyracks-examples/text-example/textapp/data/file1.txt
new file mode 100644
index 0000000..c4c3130
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/data/file1.txt
@@ -0,0 +1,13052 @@
+﻿Project Gutenberg's The Adventures of Sherlock Holmes, by Arthur Conan Doyle
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+
+Title: The Adventures of Sherlock Holmes
+
+Author: Arthur Conan Doyle
+
+Posting Date: April 18, 2011 [EBook #1661]
+First Posted: November 29, 2002
+
+Language: English
+
+
+*** START OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+
+
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+
+
+
+
+
+
+
+
+THE ADVENTURES OF SHERLOCK HOLMES
+
+by
+
+SIR ARTHUR CONAN DOYLE
+
+
+
+   I. A Scandal in Bohemia
+  II. The Red-headed League
+ III. A Case of Identity
+  IV. The Boscombe Valley Mystery
+   V. The Five Orange Pips
+  VI. The Man with the Twisted Lip
+ VII. The Adventure of the Blue Carbuncle
+VIII. The Adventure of the Speckled Band
+  IX. The Adventure of the Engineer's Thumb
+   X. The Adventure of the Noble Bachelor
+  XI. The Adventure of the Beryl Coronet
+ XII. The Adventure of the Copper Beeches
+
+
+
+
+ADVENTURE I. A SCANDAL IN BOHEMIA
+
+I.
+
+To Sherlock Holmes she is always THE woman. I have seldom heard
+him mention her under any other name. In his eyes she eclipses
+and predominates the whole of her sex. It was not that he felt
+any emotion akin to love for Irene Adler. All emotions, and that
+one particularly, were abhorrent to his cold, precise but
+admirably balanced mind. He was, I take it, the most perfect
+reasoning and observing machine that the world has seen, but as a
+lover he would have placed himself in a false position. He never
+spoke of the softer passions, save with a gibe and a sneer. They
+were admirable things for the observer--excellent for drawing the
+veil from men's motives and actions. But for the trained reasoner
+to admit such intrusions into his own delicate and finely
+adjusted temperament was to introduce a distracting factor which
+might throw a doubt upon all his mental results. Grit in a
+sensitive instrument, or a crack in one of his own high-power
+lenses, would not be more disturbing than a strong emotion in a
+nature such as his. And yet there was but one woman to him, and
+that woman was the late Irene Adler, of dubious and questionable
+memory.
+
+I had seen little of Holmes lately. My marriage had drifted us
+away from each other. My own complete happiness, and the
+home-centred interests which rise up around the man who first
+finds himself master of his own establishment, were sufficient to
+absorb all my attention, while Holmes, who loathed every form of
+society with his whole Bohemian soul, remained in our lodgings in
+Baker Street, buried among his old books, and alternating from
+week to week between cocaine and ambition, the drowsiness of the
+drug, and the fierce energy of his own keen nature. He was still,
+as ever, deeply attracted by the study of crime, and occupied his
+immense faculties and extraordinary powers of observation in
+following out those clues, and clearing up those mysteries which
+had been abandoned as hopeless by the official police. From time
+to time I heard some vague account of his doings: of his summons
+to Odessa in the case of the Trepoff murder, of his clearing up
+of the singular tragedy of the Atkinson brothers at Trincomalee,
+and finally of the mission which he had accomplished so
+delicately and successfully for the reigning family of Holland.
+Beyond these signs of his activity, however, which I merely
+shared with all the readers of the daily press, I knew little of
+my former friend and companion.
+
+One night--it was on the twentieth of March, 1888--I was
+returning from a journey to a patient (for I had now returned to
+civil practice), when my way led me through Baker Street. As I
+passed the well-remembered door, which must always be associated
+in my mind with my wooing, and with the dark incidents of the
+Study in Scarlet, I was seized with a keen desire to see Holmes
+again, and to know how he was employing his extraordinary powers.
+His rooms were brilliantly lit, and, even as I looked up, I saw
+his tall, spare figure pass twice in a dark silhouette against
+the blind. He was pacing the room swiftly, eagerly, with his head
+sunk upon his chest and his hands clasped behind him. To me, who
+knew his every mood and habit, his attitude and manner told their
+own story. He was at work again. He had risen out of his
+drug-created dreams and was hot upon the scent of some new
+problem. I rang the bell and was shown up to the chamber which
+had formerly been in part my own.
+
+His manner was not effusive. It seldom was; but he was glad, I
+think, to see me. With hardly a word spoken, but with a kindly
+eye, he waved me to an armchair, threw across his case of cigars,
+and indicated a spirit case and a gasogene in the corner. Then he
+stood before the fire and looked me over in his singular
+introspective fashion.
+
+"Wedlock suits you," he remarked. "I think, Watson, that you have
+put on seven and a half pounds since I saw you."
+
+"Seven!" I answered.
+
+"Indeed, I should have thought a little more. Just a trifle more,
+I fancy, Watson. And in practice again, I observe. You did not
+tell me that you intended to go into harness."
+
+"Then, how do you know?"
+
+"I see it, I deduce it. How do I know that you have been getting
+yourself very wet lately, and that you have a most clumsy and
+careless servant girl?"
+
+"My dear Holmes," said I, "this is too much. You would certainly
+have been burned, had you lived a few centuries ago. It is true
+that I had a country walk on Thursday and came home in a dreadful
+mess, but as I have changed my clothes I can't imagine how you
+deduce it. As to Mary Jane, she is incorrigible, and my wife has
+given her notice, but there, again, I fail to see how you work it
+out."
+
+He chuckled to himself and rubbed his long, nervous hands
+together.
+
+"It is simplicity itself," said he; "my eyes tell me that on the
+inside of your left shoe, just where the firelight strikes it,
+the leather is scored by six almost parallel cuts. Obviously they
+have been caused by someone who has very carelessly scraped round
+the edges of the sole in order to remove crusted mud from it.
+Hence, you see, my double deduction that you had been out in vile
+weather, and that you had a particularly malignant boot-slitting
+specimen of the London slavey. As to your practice, if a
+gentleman walks into my rooms smelling of iodoform, with a black
+mark of nitrate of silver upon his right forefinger, and a bulge
+on the right side of his top-hat to show where he has secreted
+his stethoscope, I must be dull, indeed, if I do not pronounce
+him to be an active member of the medical profession."
+
+I could not help laughing at the ease with which he explained his
+process of deduction. "When I hear you give your reasons," I
+remarked, "the thing always appears to me to be so ridiculously
+simple that I could easily do it myself, though at each
+successive instance of your reasoning I am baffled until you
+explain your process. And yet I believe that my eyes are as good
+as yours."
+
+"Quite so," he answered, lighting a cigarette, and throwing
+himself down into an armchair. "You see, but you do not observe.
+The distinction is clear. For example, you have frequently seen
+the steps which lead up from the hall to this room."
+
+"Frequently."
+
+"How often?"
+
+"Well, some hundreds of times."
+
+"Then how many are there?"
+
+"How many? I don't know."
+
+"Quite so! You have not observed. And yet you have seen. That is
+just my point. Now, I know that there are seventeen steps,
+because I have both seen and observed. By-the-way, since you are
+interested in these little problems, and since you are good
+enough to chronicle one or two of my trifling experiences, you
+may be interested in this." He threw over a sheet of thick,
+pink-tinted note-paper which had been lying open upon the table.
+"It came by the last post," said he. "Read it aloud."
+
+The note was undated, and without either signature or address.
+
+"There will call upon you to-night, at a quarter to eight
+o'clock," it said, "a gentleman who desires to consult you upon a
+matter of the very deepest moment. Your recent services to one of
+the royal houses of Europe have shown that you are one who may
+safely be trusted with matters which are of an importance which
+can hardly be exaggerated. This account of you we have from all
+quarters received. Be in your chamber then at that hour, and do
+not take it amiss if your visitor wear a mask."
+
+"This is indeed a mystery," I remarked. "What do you imagine that
+it means?"
+
+"I have no data yet. It is a capital mistake to theorize before
+one has data. Insensibly one begins to twist facts to suit
+theories, instead of theories to suit facts. But the note itself.
+What do you deduce from it?"
+
+I carefully examined the writing, and the paper upon which it was
+written.
+
+"The man who wrote it was presumably well to do," I remarked,
+endeavouring to imitate my companion's processes. "Such paper
+could not be bought under half a crown a packet. It is peculiarly
+strong and stiff."
+
+"Peculiar--that is the very word," said Holmes. "It is not an
+English paper at all. Hold it up to the light."
+
+I did so, and saw a large "E" with a small "g," a "P," and a
+large "G" with a small "t" woven into the texture of the paper.
+
+"What do you make of that?" asked Holmes.
+
+"The name of the maker, no doubt; or his monogram, rather."
+
+"Not at all. The 'G' with the small 't' stands for
+'Gesellschaft,' which is the German for 'Company.' It is a
+customary contraction like our 'Co.' 'P,' of course, stands for
+'Papier.' Now for the 'Eg.' Let us glance at our Continental
+Gazetteer." He took down a heavy brown volume from his shelves.
+"Eglow, Eglonitz--here we are, Egria. It is in a German-speaking
+country--in Bohemia, not far from Carlsbad. 'Remarkable as being
+the scene of the death of Wallenstein, and for its numerous
+glass-factories and paper-mills.' Ha, ha, my boy, what do you
+make of that?" His eyes sparkled, and he sent up a great blue
+triumphant cloud from his cigarette.
+
+"The paper was made in Bohemia," I said.
+
+"Precisely. And the man who wrote the note is a German. Do you
+note the peculiar construction of the sentence--'This account of
+you we have from all quarters received.' A Frenchman or Russian
+could not have written that. It is the German who is so
+uncourteous to his verbs. It only remains, therefore, to discover
+what is wanted by this German who writes upon Bohemian paper and
+prefers wearing a mask to showing his face. And here he comes, if
+I am not mistaken, to resolve all our doubts."
+
+As he spoke there was the sharp sound of horses' hoofs and
+grating wheels against the curb, followed by a sharp pull at the
+bell. Holmes whistled.
+
+"A pair, by the sound," said he. "Yes," he continued, glancing
+out of the window. "A nice little brougham and a pair of
+beauties. A hundred and fifty guineas apiece. There's money in
+this case, Watson, if there is nothing else."
+
+"I think that I had better go, Holmes."
+
+"Not a bit, Doctor. Stay where you are. I am lost without my
+Boswell. And this promises to be interesting. It would be a pity
+to miss it."
+
+"But your client--"
+
+"Never mind him. I may want your help, and so may he. Here he
+comes. Sit down in that armchair, Doctor, and give us your best
+attention."
+
+A slow and heavy step, which had been heard upon the stairs and
+in the passage, paused immediately outside the door. Then there
+was a loud and authoritative tap.
+
+"Come in!" said Holmes.
+
+A man entered who could hardly have been less than six feet six
+inches in height, with the chest and limbs of a Hercules. His
+dress was rich with a richness which would, in England, be looked
+upon as akin to bad taste. Heavy bands of astrakhan were slashed
+across the sleeves and fronts of his double-breasted coat, while
+the deep blue cloak which was thrown over his shoulders was lined
+with flame-coloured silk and secured at the neck with a brooch
+which consisted of a single flaming beryl. Boots which extended
+halfway up his calves, and which were trimmed at the tops with
+rich brown fur, completed the impression of barbaric opulence
+which was suggested by his whole appearance. He carried a
+broad-brimmed hat in his hand, while he wore across the upper
+part of his face, extending down past the cheekbones, a black
+vizard mask, which he had apparently adjusted that very moment,
+for his hand was still raised to it as he entered. From the lower
+part of the face he appeared to be a man of strong character,
+with a thick, hanging lip, and a long, straight chin suggestive
+of resolution pushed to the length of obstinacy.
+
+"You had my note?" he asked with a deep harsh voice and a
+strongly marked German accent. "I told you that I would call." He
+looked from one to the other of us, as if uncertain which to
+address.
+
+"Pray take a seat," said Holmes. "This is my friend and
+colleague, Dr. Watson, who is occasionally good enough to help me
+in my cases. Whom have I the honour to address?"
+
+"You may address me as the Count Von Kramm, a Bohemian nobleman.
+I understand that this gentleman, your friend, is a man of honour
+and discretion, whom I may trust with a matter of the most
+extreme importance. If not, I should much prefer to communicate
+with you alone."
+
+I rose to go, but Holmes caught me by the wrist and pushed me
+back into my chair. "It is both, or none," said he. "You may say
+before this gentleman anything which you may say to me."
+
+The Count shrugged his broad shoulders. "Then I must begin," said
+he, "by binding you both to absolute secrecy for two years; at
+the end of that time the matter will be of no importance. At
+present it is not too much to say that it is of such weight it
+may have an influence upon European history."
+
+"I promise," said Holmes.
+
+"And I."
+
+"You will excuse this mask," continued our strange visitor. "The
+august person who employs me wishes his agent to be unknown to
+you, and I may confess at once that the title by which I have
+just called myself is not exactly my own."
+
+"I was aware of it," said Holmes dryly.
+
+"The circumstances are of great delicacy, and every precaution
+has to be taken to quench what might grow to be an immense
+scandal and seriously compromise one of the reigning families of
+Europe. To speak plainly, the matter implicates the great House
+of Ormstein, hereditary kings of Bohemia."
+
+"I was also aware of that," murmured Holmes, settling himself
+down in his armchair and closing his eyes.
+
+Our visitor glanced with some apparent surprise at the languid,
+lounging figure of the man who had been no doubt depicted to him
+as the most incisive reasoner and most energetic agent in Europe.
+Holmes slowly reopened his eyes and looked impatiently at his
+gigantic client.
+
+"If your Majesty would condescend to state your case," he
+remarked, "I should be better able to advise you."
+
+The man sprang from his chair and paced up and down the room in
+uncontrollable agitation. Then, with a gesture of desperation, he
+tore the mask from his face and hurled it upon the ground. "You
+are right," he cried; "I am the King. Why should I attempt to
+conceal it?"
+
+"Why, indeed?" murmured Holmes. "Your Majesty had not spoken
+before I was aware that I was addressing Wilhelm Gottsreich
+Sigismond von Ormstein, Grand Duke of Cassel-Felstein, and
+hereditary King of Bohemia."
+
+"But you can understand," said our strange visitor, sitting down
+once more and passing his hand over his high white forehead, "you
+can understand that I am not accustomed to doing such business in
+my own person. Yet the matter was so delicate that I could not
+confide it to an agent without putting myself in his power. I
+have come incognito from Prague for the purpose of consulting
+you."
+
+"Then, pray consult," said Holmes, shutting his eyes once more.
+
+"The facts are briefly these: Some five years ago, during a
+lengthy visit to Warsaw, I made the acquaintance of the well-known
+adventuress, Irene Adler. The name is no doubt familiar to you."
+
+"Kindly look her up in my index, Doctor," murmured Holmes without
+opening his eyes. For many years he had adopted a system of
+docketing all paragraphs concerning men and things, so that it
+was difficult to name a subject or a person on which he could not
+at once furnish information. In this case I found her biography
+sandwiched in between that of a Hebrew rabbi and that of a
+staff-commander who had written a monograph upon the deep-sea
+fishes.
+
+"Let me see!" said Holmes. "Hum! Born in New Jersey in the year
+1858. Contralto--hum! La Scala, hum! Prima donna Imperial Opera
+of Warsaw--yes! Retired from operatic stage--ha! Living in
+London--quite so! Your Majesty, as I understand, became entangled
+with this young person, wrote her some compromising letters, and
+is now desirous of getting those letters back."
+
+"Precisely so. But how--"
+
+"Was there a secret marriage?"
+
+"None."
+
+"No legal papers or certificates?"
+
+"None."
+
+"Then I fail to follow your Majesty. If this young person should
+produce her letters for blackmailing or other purposes, how is
+she to prove their authenticity?"
+
+"There is the writing."
+
+"Pooh, pooh! Forgery."
+
+"My private note-paper."
+
+"Stolen."
+
+"My own seal."
+
+"Imitated."
+
+"My photograph."
+
+"Bought."
+
+"We were both in the photograph."
+
+"Oh, dear! That is very bad! Your Majesty has indeed committed an
+indiscretion."
+
+"I was mad--insane."
+
+"You have compromised yourself seriously."
+
+"I was only Crown Prince then. I was young. I am but thirty now."
+
+"It must be recovered."
+
+"We have tried and failed."
+
+"Your Majesty must pay. It must be bought."
+
+"She will not sell."
+
+"Stolen, then."
+
+"Five attempts have been made. Twice burglars in my pay ransacked
+her house. Once we diverted her luggage when she travelled. Twice
+she has been waylaid. There has been no result."
+
+"No sign of it?"
+
+"Absolutely none."
+
+Holmes laughed. "It is quite a pretty little problem," said he.
+
+"But a very serious one to me," returned the King reproachfully.
+
+"Very, indeed. And what does she propose to do with the
+photograph?"
+
+"To ruin me."
+
+"But how?"
+
+"I am about to be married."
+
+"So I have heard."
+
+"To Clotilde Lothman von Saxe-Meningen, second daughter of the
+King of Scandinavia. You may know the strict principles of her
+family. She is herself the very soul of delicacy. A shadow of a
+doubt as to my conduct would bring the matter to an end."
+
+"And Irene Adler?"
+
+"Threatens to send them the photograph. And she will do it. I
+know that she will do it. You do not know her, but she has a soul
+of steel. She has the face of the most beautiful of women, and
+the mind of the most resolute of men. Rather than I should marry
+another woman, there are no lengths to which she would not
+go--none."
+
+"You are sure that she has not sent it yet?"
+
+"I am sure."
+
+"And why?"
+
+"Because she has said that she would send it on the day when the
+betrothal was publicly proclaimed. That will be next Monday."
+
+"Oh, then we have three days yet," said Holmes with a yawn. "That
+is very fortunate, as I have one or two matters of importance to
+look into just at present. Your Majesty will, of course, stay in
+London for the present?"
+
+"Certainly. You will find me at the Langham under the name of the
+Count Von Kramm."
+
+"Then I shall drop you a line to let you know how we progress."
+
+"Pray do so. I shall be all anxiety."
+
+"Then, as to money?"
+
+"You have carte blanche."
+
+"Absolutely?"
+
+"I tell you that I would give one of the provinces of my kingdom
+to have that photograph."
+
+"And for present expenses?"
+
+The King took a heavy chamois leather bag from under his cloak
+and laid it on the table.
+
+"There are three hundred pounds in gold and seven hundred in
+notes," he said.
+
+Holmes scribbled a receipt upon a sheet of his note-book and
+handed it to him.
+
+"And Mademoiselle's address?" he asked.
+
+"Is Briony Lodge, Serpentine Avenue, St. John's Wood."
+
+Holmes took a note of it. "One other question," said he. "Was the
+photograph a cabinet?"
+
+"It was."
+
+"Then, good-night, your Majesty, and I trust that we shall soon
+have some good news for you. And good-night, Watson," he added,
+as the wheels of the royal brougham rolled down the street. "If
+you will be good enough to call to-morrow afternoon at three
+o'clock I should like to chat this little matter over with you."
+
+
+II.
+
+At three o'clock precisely I was at Baker Street, but Holmes had
+not yet returned. The landlady informed me that he had left the
+house shortly after eight o'clock in the morning. I sat down
+beside the fire, however, with the intention of awaiting him,
+however long he might be. I was already deeply interested in his
+inquiry, for, though it was surrounded by none of the grim and
+strange features which were associated with the two crimes which
+I have already recorded, still, the nature of the case and the
+exalted station of his client gave it a character of its own.
+Indeed, apart from the nature of the investigation which my
+friend had on hand, there was something in his masterly grasp of
+a situation, and his keen, incisive reasoning, which made it a
+pleasure to me to study his system of work, and to follow the
+quick, subtle methods by which he disentangled the most
+inextricable mysteries. So accustomed was I to his invariable
+success that the very possibility of his failing had ceased to
+enter into my head.
+
+It was close upon four before the door opened, and a
+drunken-looking groom, ill-kempt and side-whiskered, with an
+inflamed face and disreputable clothes, walked into the room.
+Accustomed as I was to my friend's amazing powers in the use of
+disguises, I had to look three times before I was certain that it
+was indeed he. With a nod he vanished into the bedroom, whence he
+emerged in five minutes tweed-suited and respectable, as of old.
+Putting his hands into his pockets, he stretched out his legs in
+front of the fire and laughed heartily for some minutes.
+
+"Well, really!" he cried, and then he choked and laughed again
+until he was obliged to lie back, limp and helpless, in the
+chair.
+
+"What is it?"
+
+"It's quite too funny. I am sure you could never guess how I
+employed my morning, or what I ended by doing."
+
+"I can't imagine. I suppose that you have been watching the
+habits, and perhaps the house, of Miss Irene Adler."
+
+"Quite so; but the sequel was rather unusual. I will tell you,
+however. I left the house a little after eight o'clock this
+morning in the character of a groom out of work. There is a
+wonderful sympathy and freemasonry among horsey men. Be one of
+them, and you will know all that there is to know. I soon found
+Briony Lodge. It is a bijou villa, with a garden at the back, but
+built out in front right up to the road, two stories. Chubb lock
+to the door. Large sitting-room on the right side, well
+furnished, with long windows almost to the floor, and those
+preposterous English window fasteners which a child could open.
+Behind there was nothing remarkable, save that the passage window
+could be reached from the top of the coach-house. I walked round
+it and examined it closely from every point of view, but without
+noting anything else of interest.
+
+"I then lounged down the street and found, as I expected, that
+there was a mews in a lane which runs down by one wall of the
+garden. I lent the ostlers a hand in rubbing down their horses,
+and received in exchange twopence, a glass of half and half, two
+fills of shag tobacco, and as much information as I could desire
+about Miss Adler, to say nothing of half a dozen other people in
+the neighbourhood in whom I was not in the least interested, but
+whose biographies I was compelled to listen to."
+
+"And what of Irene Adler?" I asked.
+
+"Oh, she has turned all the men's heads down in that part. She is
+the daintiest thing under a bonnet on this planet. So say the
+Serpentine-mews, to a man. She lives quietly, sings at concerts,
+drives out at five every day, and returns at seven sharp for
+dinner. Seldom goes out at other times, except when she sings.
+Has only one male visitor, but a good deal of him. He is dark,
+handsome, and dashing, never calls less than once a day, and
+often twice. He is a Mr. Godfrey Norton, of the Inner Temple. See
+the advantages of a cabman as a confidant. They had driven him
+home a dozen times from Serpentine-mews, and knew all about him.
+When I had listened to all they had to tell, I began to walk up
+and down near Briony Lodge once more, and to think over my plan
+of campaign.
+
+"This Godfrey Norton was evidently an important factor in the
+matter. He was a lawyer. That sounded ominous. What was the
+relation between them, and what the object of his repeated
+visits? Was she his client, his friend, or his mistress? If the
+former, she had probably transferred the photograph to his
+keeping. If the latter, it was less likely. On the issue of this
+question depended whether I should continue my work at Briony
+Lodge, or turn my attention to the gentleman's chambers in the
+Temple. It was a delicate point, and it widened the field of my
+inquiry. I fear that I bore you with these details, but I have to
+let you see my little difficulties, if you are to understand the
+situation."
+
+"I am following you closely," I answered.
+
+"I was still balancing the matter in my mind when a hansom cab
+drove up to Briony Lodge, and a gentleman sprang out. He was a
+remarkably handsome man, dark, aquiline, and moustached--evidently
+the man of whom I had heard. He appeared to be in a
+great hurry, shouted to the cabman to wait, and brushed past the
+maid who opened the door with the air of a man who was thoroughly
+at home.
+
+"He was in the house about half an hour, and I could catch
+glimpses of him in the windows of the sitting-room, pacing up and
+down, talking excitedly, and waving his arms. Of her I could see
+nothing. Presently he emerged, looking even more flurried than
+before. As he stepped up to the cab, he pulled a gold watch from
+his pocket and looked at it earnestly, 'Drive like the devil,' he
+shouted, 'first to Gross & Hankey's in Regent Street, and then to
+the Church of St. Monica in the Edgeware Road. Half a guinea if
+you do it in twenty minutes!'
+
+"Away they went, and I was just wondering whether I should not do
+well to follow them when up the lane came a neat little landau,
+the coachman with his coat only half-buttoned, and his tie under
+his ear, while all the tags of his harness were sticking out of
+the buckles. It hadn't pulled up before she shot out of the hall
+door and into it. I only caught a glimpse of her at the moment,
+but she was a lovely woman, with a face that a man might die for.
+
+"'The Church of St. Monica, John,' she cried, 'and half a
+sovereign if you reach it in twenty minutes.'
+
+"This was quite too good to lose, Watson. I was just balancing
+whether I should run for it, or whether I should perch behind her
+landau when a cab came through the street. The driver looked
+twice at such a shabby fare, but I jumped in before he could
+object. 'The Church of St. Monica,' said I, 'and half a sovereign
+if you reach it in twenty minutes.' It was twenty-five minutes to
+twelve, and of course it was clear enough what was in the wind.
+
+"My cabby drove fast. I don't think I ever drove faster, but the
+others were there before us. The cab and the landau with their
+steaming horses were in front of the door when I arrived. I paid
+the man and hurried into the church. There was not a soul there
+save the two whom I had followed and a surpliced clergyman, who
+seemed to be expostulating with them. They were all three
+standing in a knot in front of the altar. I lounged up the side
+aisle like any other idler who has dropped into a church.
+Suddenly, to my surprise, the three at the altar faced round to
+me, and Godfrey Norton came running as hard as he could towards
+me.
+
+"'Thank God,' he cried. 'You'll do. Come! Come!'
+
+"'What then?' I asked.
+
+"'Come, man, come, only three minutes, or it won't be legal.'
+
+"I was half-dragged up to the altar, and before I knew where I was
+I found myself mumbling responses which were whispered in my ear,
+and vouching for things of which I knew nothing, and generally
+assisting in the secure tying up of Irene Adler, spinster, to
+Godfrey Norton, bachelor. It was all done in an instant, and
+there was the gentleman thanking me on the one side and the lady
+on the other, while the clergyman beamed on me in front. It was
+the most preposterous position in which I ever found myself in my
+life, and it was the thought of it that started me laughing just
+now. It seems that there had been some informality about their
+license, that the clergyman absolutely refused to marry them
+without a witness of some sort, and that my lucky appearance
+saved the bridegroom from having to sally out into the streets in
+search of a best man. The bride gave me a sovereign, and I mean
+to wear it on my watch-chain in memory of the occasion."
+
+"This is a very unexpected turn of affairs," said I; "and what
+then?"
+
+"Well, I found my plans very seriously menaced. It looked as if
+the pair might take an immediate departure, and so necessitate
+very prompt and energetic measures on my part. At the church
+door, however, they separated, he driving back to the Temple, and
+she to her own house. 'I shall drive out in the park at five as
+usual,' she said as she left him. I heard no more. They drove
+away in different directions, and I went off to make my own
+arrangements."
+
+"Which are?"
+
+"Some cold beef and a glass of beer," he answered, ringing the
+bell. "I have been too busy to think of food, and I am likely to
+be busier still this evening. By the way, Doctor, I shall want
+your co-operation."
+
+"I shall be delighted."
+
+"You don't mind breaking the law?"
+
+"Not in the least."
+
+"Nor running a chance of arrest?"
+
+"Not in a good cause."
+
+"Oh, the cause is excellent!"
+
+"Then I am your man."
+
+"I was sure that I might rely on you."
+
+"But what is it you wish?"
+
+"When Mrs. Turner has brought in the tray I will make it clear to
+you. Now," he said as he turned hungrily on the simple fare that
+our landlady had provided, "I must discuss it while I eat, for I
+have not much time. It is nearly five now. In two hours we must
+be on the scene of action. Miss Irene, or Madame, rather, returns
+from her drive at seven. We must be at Briony Lodge to meet her."
+
+"And what then?"
+
+"You must leave that to me. I have already arranged what is to
+occur. There is only one point on which I must insist. You must
+not interfere, come what may. You understand?"
+
+"I am to be neutral?"
+
+"To do nothing whatever. There will probably be some small
+unpleasantness. Do not join in it. It will end in my being
+conveyed into the house. Four or five minutes afterwards the
+sitting-room window will open. You are to station yourself close
+to that open window."
+
+"Yes."
+
+"You are to watch me, for I will be visible to you."
+
+"Yes."
+
+"And when I raise my hand--so--you will throw into the room what
+I give you to throw, and will, at the same time, raise the cry of
+fire. You quite follow me?"
+
+"Entirely."
+
+"It is nothing very formidable," he said, taking a long cigar-shaped
+roll from his pocket. "It is an ordinary plumber's smoke-rocket,
+fitted with a cap at either end to make it self-lighting.
+Your task is confined to that. When you raise your cry of fire,
+it will be taken up by quite a number of people. You may then
+walk to the end of the street, and I will rejoin you in ten
+minutes. I hope that I have made myself clear?"
+
+"I am to remain neutral, to get near the window, to watch you,
+and at the signal to throw in this object, then to raise the cry
+of fire, and to wait you at the corner of the street."
+
+"Precisely."
+
+"Then you may entirely rely on me."
+
+"That is excellent. I think, perhaps, it is almost time that I
+prepare for the new role I have to play."
+
+He disappeared into his bedroom and returned in a few minutes in
+the character of an amiable and simple-minded Nonconformist
+clergyman. His broad black hat, his baggy trousers, his white
+tie, his sympathetic smile, and general look of peering and
+benevolent curiosity were such as Mr. John Hare alone could have
+equalled. It was not merely that Holmes changed his costume. His
+expression, his manner, his very soul seemed to vary with every
+fresh part that he assumed. The stage lost a fine actor, even as
+science lost an acute reasoner, when he became a specialist in
+crime.
+
+It was a quarter past six when we left Baker Street, and it still
+wanted ten minutes to the hour when we found ourselves in
+Serpentine Avenue. It was already dusk, and the lamps were just
+being lighted as we paced up and down in front of Briony Lodge,
+waiting for the coming of its occupant. The house was just such
+as I had pictured it from Sherlock Holmes' succinct description,
+but the locality appeared to be less private than I expected. On
+the contrary, for a small street in a quiet neighbourhood, it was
+remarkably animated. There was a group of shabbily dressed men
+smoking and laughing in a corner, a scissors-grinder with his
+wheel, two guardsmen who were flirting with a nurse-girl, and
+several well-dressed young men who were lounging up and down with
+cigars in their mouths.
+
+"You see," remarked Holmes, as we paced to and fro in front of
+the house, "this marriage rather simplifies matters. The
+photograph becomes a double-edged weapon now. The chances are
+that she would be as averse to its being seen by Mr. Godfrey
+Norton, as our client is to its coming to the eyes of his
+princess. Now the question is, Where are we to find the
+photograph?"
+
+"Where, indeed?"
+
+"It is most unlikely that she carries it about with her. It is
+cabinet size. Too large for easy concealment about a woman's
+dress. She knows that the King is capable of having her waylaid
+and searched. Two attempts of the sort have already been made. We
+may take it, then, that she does not carry it about with her."
+
+"Where, then?"
+
+"Her banker or her lawyer. There is that double possibility. But
+I am inclined to think neither. Women are naturally secretive,
+and they like to do their own secreting. Why should she hand it
+over to anyone else? She could trust her own guardianship, but
+she could not tell what indirect or political influence might be
+brought to bear upon a business man. Besides, remember that she
+had resolved to use it within a few days. It must be where she
+can lay her hands upon it. It must be in her own house."
+
+"But it has twice been burgled."
+
+"Pshaw! They did not know how to look."
+
+"But how will you look?"
+
+"I will not look."
+
+"What then?"
+
+"I will get her to show me."
+
+"But she will refuse."
+
+"She will not be able to. But I hear the rumble of wheels. It is
+her carriage. Now carry out my orders to the letter."
+
+As he spoke the gleam of the side-lights of a carriage came round
+the curve of the avenue. It was a smart little landau which
+rattled up to the door of Briony Lodge. As it pulled up, one of
+the loafing men at the corner dashed forward to open the door in
+the hope of earning a copper, but was elbowed away by another
+loafer, who had rushed up with the same intention. A fierce
+quarrel broke out, which was increased by the two guardsmen, who
+took sides with one of the loungers, and by the scissors-grinder,
+who was equally hot upon the other side. A blow was struck, and
+in an instant the lady, who had stepped from her carriage, was
+the centre of a little knot of flushed and struggling men, who
+struck savagely at each other with their fists and sticks. Holmes
+dashed into the crowd to protect the lady; but just as he reached
+her he gave a cry and dropped to the ground, with the blood
+running freely down his face. At his fall the guardsmen took to
+their heels in one direction and the loungers in the other, while
+a number of better-dressed people, who had watched the scuffle
+without taking part in it, crowded in to help the lady and to
+attend to the injured man. Irene Adler, as I will still call her,
+had hurried up the steps; but she stood at the top with her
+superb figure outlined against the lights of the hall, looking
+back into the street.
+
+"Is the poor gentleman much hurt?" she asked.
+
+"He is dead," cried several voices.
+
+"No, no, there's life in him!" shouted another. "But he'll be
+gone before you can get him to hospital."
+
+"He's a brave fellow," said a woman. "They would have had the
+lady's purse and watch if it hadn't been for him. They were a
+gang, and a rough one, too. Ah, he's breathing now."
+
+"He can't lie in the street. May we bring him in, marm?"
+
+"Surely. Bring him into the sitting-room. There is a comfortable
+sofa. This way, please!"
+
+Slowly and solemnly he was borne into Briony Lodge and laid out
+in the principal room, while I still observed the proceedings
+from my post by the window. The lamps had been lit, but the
+blinds had not been drawn, so that I could see Holmes as he lay
+upon the couch. I do not know whether he was seized with
+compunction at that moment for the part he was playing, but I
+know that I never felt more heartily ashamed of myself in my life
+than when I saw the beautiful creature against whom I was
+conspiring, or the grace and kindliness with which she waited
+upon the injured man. And yet it would be the blackest treachery
+to Holmes to draw back now from the part which he had intrusted
+to me. I hardened my heart, and took the smoke-rocket from under
+my ulster. After all, I thought, we are not injuring her. We are
+but preventing her from injuring another.
+
+Holmes had sat up upon the couch, and I saw him motion like a man
+who is in need of air. A maid rushed across and threw open the
+window. At the same instant I saw him raise his hand and at the
+signal I tossed my rocket into the room with a cry of "Fire!" The
+word was no sooner out of my mouth than the whole crowd of
+spectators, well dressed and ill--gentlemen, ostlers, and
+servant-maids--joined in a general shriek of "Fire!" Thick clouds
+of smoke curled through the room and out at the open window. I
+caught a glimpse of rushing figures, and a moment later the voice
+of Holmes from within assuring them that it was a false alarm.
+Slipping through the shouting crowd I made my way to the corner
+of the street, and in ten minutes was rejoiced to find my
+friend's arm in mine, and to get away from the scene of uproar.
+He walked swiftly and in silence for some few minutes until we
+had turned down one of the quiet streets which lead towards the
+Edgeware Road.
+
+"You did it very nicely, Doctor," he remarked. "Nothing could
+have been better. It is all right."
+
+"You have the photograph?"
+
+"I know where it is."
+
+"And how did you find out?"
+
+"She showed me, as I told you she would."
+
+"I am still in the dark."
+
+"I do not wish to make a mystery," said he, laughing. "The matter
+was perfectly simple. You, of course, saw that everyone in the
+street was an accomplice. They were all engaged for the evening."
+
+"I guessed as much."
+
+"Then, when the row broke out, I had a little moist red paint in
+the palm of my hand. I rushed forward, fell down, clapped my hand
+to my face, and became a piteous spectacle. It is an old trick."
+
+"That also I could fathom."
+
+"Then they carried me in. She was bound to have me in. What else
+could she do? And into her sitting-room, which was the very room
+which I suspected. It lay between that and her bedroom, and I was
+determined to see which. They laid me on a couch, I motioned for
+air, they were compelled to open the window, and you had your
+chance."
+
+"How did that help you?"
+
+"It was all-important. When a woman thinks that her house is on
+fire, her instinct is at once to rush to the thing which she
+values most. It is a perfectly overpowering impulse, and I have
+more than once taken advantage of it. In the case of the
+Darlington substitution scandal it was of use to me, and also in
+the Arnsworth Castle business. A married woman grabs at her baby;
+an unmarried one reaches for her jewel-box. Now it was clear to
+me that our lady of to-day had nothing in the house more precious
+to her than what we are in quest of. She would rush to secure it.
+The alarm of fire was admirably done. The smoke and shouting were
+enough to shake nerves of steel. She responded beautifully. The
+photograph is in a recess behind a sliding panel just above the
+right bell-pull. She was there in an instant, and I caught a
+glimpse of it as she half-drew it out. When I cried out that it
+was a false alarm, she replaced it, glanced at the rocket, rushed
+from the room, and I have not seen her since. I rose, and, making
+my excuses, escaped from the house. I hesitated whether to
+attempt to secure the photograph at once; but the coachman had
+come in, and as he was watching me narrowly it seemed safer to
+wait. A little over-precipitance may ruin all."
+
+"And now?" I asked.
+
+"Our quest is practically finished. I shall call with the King
+to-morrow, and with you, if you care to come with us. We will be
+shown into the sitting-room to wait for the lady, but it is
+probable that when she comes she may find neither us nor the
+photograph. It might be a satisfaction to his Majesty to regain
+it with his own hands."
+
+"And when will you call?"
+
+"At eight in the morning. She will not be up, so that we shall
+have a clear field. Besides, we must be prompt, for this marriage
+may mean a complete change in her life and habits. I must wire to
+the King without delay."
+
+We had reached Baker Street and had stopped at the door. He was
+searching his pockets for the key when someone passing said:
+
+"Good-night, Mister Sherlock Holmes."
+
+There were several people on the pavement at the time, but the
+greeting appeared to come from a slim youth in an ulster who had
+hurried by.
+
+"I've heard that voice before," said Holmes, staring down the
+dimly lit street. "Now, I wonder who the deuce that could have
+been."
+
+
+III.
+
+I slept at Baker Street that night, and we were engaged upon our
+toast and coffee in the morning when the King of Bohemia rushed
+into the room.
+
+"You have really got it!" he cried, grasping Sherlock Holmes by
+either shoulder and looking eagerly into his face.
+
+"Not yet."
+
+"But you have hopes?"
+
+"I have hopes."
+
+"Then, come. I am all impatience to be gone."
+
+"We must have a cab."
+
+"No, my brougham is waiting."
+
+"Then that will simplify matters." We descended and started off
+once more for Briony Lodge.
+
+"Irene Adler is married," remarked Holmes.
+
+"Married! When?"
+
+"Yesterday."
+
+"But to whom?"
+
+"To an English lawyer named Norton."
+
+"But she could not love him."
+
+"I am in hopes that she does."
+
+"And why in hopes?"
+
+"Because it would spare your Majesty all fear of future
+annoyance. If the lady loves her husband, she does not love your
+Majesty. If she does not love your Majesty, there is no reason
+why she should interfere with your Majesty's plan."
+
+"It is true. And yet--Well! I wish she had been of my own
+station! What a queen she would have made!" He relapsed into a
+moody silence, which was not broken until we drew up in
+Serpentine Avenue.
+
+The door of Briony Lodge was open, and an elderly woman stood
+upon the steps. She watched us with a sardonic eye as we stepped
+from the brougham.
+
+"Mr. Sherlock Holmes, I believe?" said she.
+
+"I am Mr. Holmes," answered my companion, looking at her with a
+questioning and rather startled gaze.
+
+"Indeed! My mistress told me that you were likely to call. She
+left this morning with her husband by the 5:15 train from Charing
+Cross for the Continent."
+
+"What!" Sherlock Holmes staggered back, white with chagrin and
+surprise. "Do you mean that she has left England?"
+
+"Never to return."
+
+"And the papers?" asked the King hoarsely. "All is lost."
+
+"We shall see." He pushed past the servant and rushed into the
+drawing-room, followed by the King and myself. The furniture was
+scattered about in every direction, with dismantled shelves and
+open drawers, as if the lady had hurriedly ransacked them before
+her flight. Holmes rushed at the bell-pull, tore back a small
+sliding shutter, and, plunging in his hand, pulled out a
+photograph and a letter. The photograph was of Irene Adler
+herself in evening dress, the letter was superscribed to
+"Sherlock Holmes, Esq. To be left till called for." My friend
+tore it open and we all three read it together. It was dated at
+midnight of the preceding night and ran in this way:
+
+"MY DEAR MR. SHERLOCK HOLMES,--You really did it very well. You
+took me in completely. Until after the alarm of fire, I had not a
+suspicion. But then, when I found how I had betrayed myself, I
+began to think. I had been warned against you months ago. I had
+been told that if the King employed an agent it would certainly
+be you. And your address had been given me. Yet, with all this,
+you made me reveal what you wanted to know. Even after I became
+suspicious, I found it hard to think evil of such a dear, kind
+old clergyman. But, you know, I have been trained as an actress
+myself. Male costume is nothing new to me. I often take advantage
+of the freedom which it gives. I sent John, the coachman, to
+watch you, ran up stairs, got into my walking-clothes, as I call
+them, and came down just as you departed.
+
+"Well, I followed you to your door, and so made sure that I was
+really an object of interest to the celebrated Mr. Sherlock
+Holmes. Then I, rather imprudently, wished you good-night, and
+started for the Temple to see my husband.
+
+"We both thought the best resource was flight, when pursued by
+so formidable an antagonist; so you will find the nest empty when
+you call to-morrow. As to the photograph, your client may rest in
+peace. I love and am loved by a better man than he. The King may
+do what he will without hindrance from one whom he has cruelly
+wronged. I keep it only to safeguard myself, and to preserve a
+weapon which will always secure me from any steps which he might
+take in the future. I leave a photograph which he might care to
+possess; and I remain, dear Mr. Sherlock Holmes,
+
+                                      "Very truly yours,
+                                   "IRENE NORTON, née ADLER."
+
+"What a woman--oh, what a woman!" cried the King of Bohemia, when
+we had all three read this epistle. "Did I not tell you how quick
+and resolute she was? Would she not have made an admirable queen?
+Is it not a pity that she was not on my level?"
+
+"From what I have seen of the lady she seems indeed to be on a
+very different level to your Majesty," said Holmes coldly. "I am
+sorry that I have not been able to bring your Majesty's business
+to a more successful conclusion."
+
+"On the contrary, my dear sir," cried the King; "nothing could be
+more successful. I know that her word is inviolate. The
+photograph is now as safe as if it were in the fire."
+
+"I am glad to hear your Majesty say so."
+
+"I am immensely indebted to you. Pray tell me in what way I can
+reward you. This ring--" He slipped an emerald snake ring from
+his finger and held it out upon the palm of his hand.
+
+"Your Majesty has something which I should value even more
+highly," said Holmes.
+
+"You have but to name it."
+
+"This photograph!"
+
+The King stared at him in amazement.
+
+"Irene's photograph!" he cried. "Certainly, if you wish it."
+
+"I thank your Majesty. Then there is no more to be done in the
+matter. I have the honour to wish you a very good-morning." He
+bowed, and, turning away without observing the hand which the
+King had stretched out to him, he set off in my company for his
+chambers.
+
+And that was how a great scandal threatened to affect the kingdom
+of Bohemia, and how the best plans of Mr. Sherlock Holmes were
+beaten by a woman's wit. He used to make merry over the
+cleverness of women, but I have not heard him do it of late. And
+when he speaks of Irene Adler, or when he refers to her
+photograph, it is always under the honourable title of the woman.
+
+
+
+ADVENTURE II. THE RED-HEADED LEAGUE
+
+I had called upon my friend, Mr. Sherlock Holmes, one day in the
+autumn of last year and found him in deep conversation with a
+very stout, florid-faced, elderly gentleman with fiery red hair.
+With an apology for my intrusion, I was about to withdraw when
+Holmes pulled me abruptly into the room and closed the door
+behind me.
+
+"You could not possibly have come at a better time, my dear
+Watson," he said cordially.
+
+"I was afraid that you were engaged."
+
+"So I am. Very much so."
+
+"Then I can wait in the next room."
+
+"Not at all. This gentleman, Mr. Wilson, has been my partner and
+helper in many of my most successful cases, and I have no
+doubt that he will be of the utmost use to me in yours also."
+
+The stout gentleman half rose from his chair and gave a bob of
+greeting, with a quick little questioning glance from his small
+fat-encircled eyes.
+
+"Try the settee," said Holmes, relapsing into his armchair and
+putting his fingertips together, as was his custom when in
+judicial moods. "I know, my dear Watson, that you share my love
+of all that is bizarre and outside the conventions and humdrum
+routine of everyday life. You have shown your relish for it by
+the enthusiasm which has prompted you to chronicle, and, if you
+will excuse my saying so, somewhat to embellish so many of my own
+little adventures."
+
+"Your cases have indeed been of the greatest interest to me," I
+observed.
+
+"You will remember that I remarked the other day, just before we
+went into the very simple problem presented by Miss Mary
+Sutherland, that for strange effects and extraordinary
+combinations we must go to life itself, which is always far more
+daring than any effort of the imagination."
+
+"A proposition which I took the liberty of doubting."
+
+"You did, Doctor, but none the less you must come round to my
+view, for otherwise I shall keep on piling fact upon fact on you
+until your reason breaks down under them and acknowledges me to
+be right. Now, Mr. Jabez Wilson here has been good enough to call
+upon me this morning, and to begin a narrative which promises to
+be one of the most singular which I have listened to for some
+time. You have heard me remark that the strangest and most unique
+things are very often connected not with the larger but with the
+smaller crimes, and occasionally, indeed, where there is room for
+doubt whether any positive crime has been committed. As far as I
+have heard it is impossible for me to say whether the present
+case is an instance of crime or not, but the course of events is
+certainly among the most singular that I have ever listened to.
+Perhaps, Mr. Wilson, you would have the great kindness to
+recommence your narrative. I ask you not merely because my friend
+Dr. Watson has not heard the opening part but also because the
+peculiar nature of the story makes me anxious to have every
+possible detail from your lips. As a rule, when I have heard some
+slight indication of the course of events, I am able to guide
+myself by the thousands of other similar cases which occur to my
+memory. In the present instance I am forced to admit that the
+facts are, to the best of my belief, unique."
+
+The portly client puffed out his chest with an appearance of some
+little pride and pulled a dirty and wrinkled newspaper from the
+inside pocket of his greatcoat. As he glanced down the
+advertisement column, with his head thrust forward and the paper
+flattened out upon his knee, I took a good look at the man and
+endeavoured, after the fashion of my companion, to read the
+indications which might be presented by his dress or appearance.
+
+I did not gain very much, however, by my inspection. Our visitor
+bore every mark of being an average commonplace British
+tradesman, obese, pompous, and slow. He wore rather baggy grey
+shepherd's check trousers, a not over-clean black frock-coat,
+unbuttoned in the front, and a drab waistcoat with a heavy brassy
+Albert chain, and a square pierced bit of metal dangling down as
+an ornament. A frayed top-hat and a faded brown overcoat with a
+wrinkled velvet collar lay upon a chair beside him. Altogether,
+look as I would, there was nothing remarkable about the man save
+his blazing red head, and the expression of extreme chagrin and
+discontent upon his features.
+
+Sherlock Holmes' quick eye took in my occupation, and he shook
+his head with a smile as he noticed my questioning glances.
+"Beyond the obvious facts that he has at some time done manual
+labour, that he takes snuff, that he is a Freemason, that he has
+been in China, and that he has done a considerable amount of
+writing lately, I can deduce nothing else."
+
+Mr. Jabez Wilson started up in his chair, with his forefinger
+upon the paper, but his eyes upon my companion.
+
+"How, in the name of good-fortune, did you know all that, Mr.
+Holmes?" he asked. "How did you know, for example, that I did
+manual labour. It's as true as gospel, for I began as a ship's
+carpenter."
+
+"Your hands, my dear sir. Your right hand is quite a size larger
+than your left. You have worked with it, and the muscles are more
+developed."
+
+"Well, the snuff, then, and the Freemasonry?"
+
+"I won't insult your intelligence by telling you how I read that,
+especially as, rather against the strict rules of your order, you
+use an arc-and-compass breastpin."
+
+"Ah, of course, I forgot that. But the writing?"
+
+"What else can be indicated by that right cuff so very shiny for
+five inches, and the left one with the smooth patch near the
+elbow where you rest it upon the desk?"
+
+"Well, but China?"
+
+"The fish that you have tattooed immediately above your right
+wrist could only have been done in China. I have made a small
+study of tattoo marks and have even contributed to the literature
+of the subject. That trick of staining the fishes' scales of a
+delicate pink is quite peculiar to China. When, in addition, I
+see a Chinese coin hanging from your watch-chain, the matter
+becomes even more simple."
+
+Mr. Jabez Wilson laughed heavily. "Well, I never!" said he. "I
+thought at first that you had done something clever, but I see
+that there was nothing in it, after all."
+
+"I begin to think, Watson," said Holmes, "that I make a mistake
+in explaining. 'Omne ignotum pro magnifico,' you know, and my
+poor little reputation, such as it is, will suffer shipwreck if I
+am so candid. Can you not find the advertisement, Mr. Wilson?"
+
+"Yes, I have got it now," he answered with his thick red finger
+planted halfway down the column. "Here it is. This is what began
+it all. You just read it for yourself, sir."
+
+I took the paper from him and read as follows:
+
+"TO THE RED-HEADED LEAGUE: On account of the bequest of the late
+Ezekiah Hopkins, of Lebanon, Pennsylvania, U. S. A., there is now
+another vacancy open which entitles a member of the League to a
+salary of 4 pounds a week for purely nominal services. All
+red-headed men who are sound in body and mind and above the age
+of twenty-one years, are eligible. Apply in person on Monday, at
+eleven o'clock, to Duncan Ross, at the offices of the League, 7
+Pope's Court, Fleet Street."
+
+"What on earth does this mean?" I ejaculated after I had twice
+read over the extraordinary announcement.
+
+Holmes chuckled and wriggled in his chair, as was his habit when
+in high spirits. "It is a little off the beaten track, isn't it?"
+said he. "And now, Mr. Wilson, off you go at scratch and tell us
+all about yourself, your household, and the effect which this
+advertisement had upon your fortunes. You will first make a note,
+Doctor, of the paper and the date."
+
+"It is The Morning Chronicle of April 27, 1890. Just two months
+ago."
+
+"Very good. Now, Mr. Wilson?"
+
+"Well, it is just as I have been telling you, Mr. Sherlock
+Holmes," said Jabez Wilson, mopping his forehead; "I have a small
+pawnbroker's business at Coburg Square, near the City. It's not a
+very large affair, and of late years it has not done more than
+just give me a living. I used to be able to keep two assistants,
+but now I only keep one; and I would have a job to pay him but
+that he is willing to come for half wages so as to learn the
+business."
+
+"What is the name of this obliging youth?" asked Sherlock Holmes.
+
+"His name is Vincent Spaulding, and he's not such a youth,
+either. It's hard to say his age. I should not wish a smarter
+assistant, Mr. Holmes; and I know very well that he could better
+himself and earn twice what I am able to give him. But, after
+all, if he is satisfied, why should I put ideas in his head?"
+
+"Why, indeed? You seem most fortunate in having an employé who
+comes under the full market price. It is not a common experience
+among employers in this age. I don't know that your assistant is
+not as remarkable as your advertisement."
+
+"Oh, he has his faults, too," said Mr. Wilson. "Never was such a
+fellow for photography. Snapping away with a camera when he ought
+to be improving his mind, and then diving down into the cellar
+like a rabbit into its hole to develop his pictures. That is his
+main fault, but on the whole he's a good worker. There's no vice
+in him."
+
+"He is still with you, I presume?"
+
+"Yes, sir. He and a girl of fourteen, who does a bit of simple
+cooking and keeps the place clean--that's all I have in the
+house, for I am a widower and never had any family. We live very
+quietly, sir, the three of us; and we keep a roof over our heads
+and pay our debts, if we do nothing more.
+
+"The first thing that put us out was that advertisement.
+Spaulding, he came down into the office just this day eight
+weeks, with this very paper in his hand, and he says:
+
+"'I wish to the Lord, Mr. Wilson, that I was a red-headed man.'
+
+"'Why that?' I asks.
+
+"'Why,' says he, 'here's another vacancy on the League of the
+Red-headed Men. It's worth quite a little fortune to any man who
+gets it, and I understand that there are more vacancies than
+there are men, so that the trustees are at their wits' end what
+to do with the money. If my hair would only change colour, here's
+a nice little crib all ready for me to step into.'
+
+"'Why, what is it, then?' I asked. You see, Mr. Holmes, I am a
+very stay-at-home man, and as my business came to me instead of
+my having to go to it, I was often weeks on end without putting
+my foot over the door-mat. In that way I didn't know much of what
+was going on outside, and I was always glad of a bit of news.
+
+"'Have you never heard of the League of the Red-headed Men?' he
+asked with his eyes open.
+
+"'Never.'
+
+"'Why, I wonder at that, for you are eligible yourself for one
+of the vacancies.'
+
+"'And what are they worth?' I asked.
+
+"'Oh, merely a couple of hundred a year, but the work is slight,
+and it need not interfere very much with one's other
+occupations.'
+
+"Well, you can easily think that that made me prick up my ears,
+for the business has not been over-good for some years, and an
+extra couple of hundred would have been very handy.
+
+"'Tell me all about it,' said I.
+
+"'Well,' said he, showing me the advertisement, 'you can see for
+yourself that the League has a vacancy, and there is the address
+where you should apply for particulars. As far as I can make out,
+the League was founded by an American millionaire, Ezekiah
+Hopkins, who was very peculiar in his ways. He was himself
+red-headed, and he had a great sympathy for all red-headed men;
+so when he died it was found that he had left his enormous
+fortune in the hands of trustees, with instructions to apply the
+interest to the providing of easy berths to men whose hair is of
+that colour. From all I hear it is splendid pay and very little to
+do.'
+
+"'But,' said I, 'there would be millions of red-headed men who
+would apply.'
+
+"'Not so many as you might think,' he answered. 'You see it is
+really confined to Londoners, and to grown men. This American had
+started from London when he was young, and he wanted to do the
+old town a good turn. Then, again, I have heard it is no use your
+applying if your hair is light red, or dark red, or anything but
+real bright, blazing, fiery red. Now, if you cared to apply, Mr.
+Wilson, you would just walk in; but perhaps it would hardly be
+worth your while to put yourself out of the way for the sake of a
+few hundred pounds.'
+
+"Now, it is a fact, gentlemen, as you may see for yourselves,
+that my hair is of a very full and rich tint, so that it seemed
+to me that if there was to be any competition in the matter I
+stood as good a chance as any man that I had ever met. Vincent
+Spaulding seemed to know so much about it that I thought he might
+prove useful, so I just ordered him to put up the shutters for
+the day and to come right away with me. He was very willing to
+have a holiday, so we shut the business up and started off for
+the address that was given us in the advertisement.
+
+"I never hope to see such a sight as that again, Mr. Holmes. From
+north, south, east, and west every man who had a shade of red in
+his hair had tramped into the city to answer the advertisement.
+Fleet Street was choked with red-headed folk, and Pope's Court
+looked like a coster's orange barrow. I should not have thought
+there were so many in the whole country as were brought together
+by that single advertisement. Every shade of colour they
+were--straw, lemon, orange, brick, Irish-setter, liver, clay;
+but, as Spaulding said, there were not many who had the real
+vivid flame-coloured tint. When I saw how many were waiting, I
+would have given it up in despair; but Spaulding would not hear
+of it. How he did it I could not imagine, but he pushed and
+pulled and butted until he got me through the crowd, and right up
+to the steps which led to the office. There was a double stream
+upon the stair, some going up in hope, and some coming back
+dejected; but we wedged in as well as we could and soon found
+ourselves in the office."
+
+"Your experience has been a most entertaining one," remarked
+Holmes as his client paused and refreshed his memory with a huge
+pinch of snuff. "Pray continue your very interesting statement."
+
+"There was nothing in the office but a couple of wooden chairs
+and a deal table, behind which sat a small man with a head that
+was even redder than mine. He said a few words to each candidate
+as he came up, and then he always managed to find some fault in
+them which would disqualify them. Getting a vacancy did not seem
+to be such a very easy matter, after all. However, when our turn
+came the little man was much more favourable to me than to any of
+the others, and he closed the door as we entered, so that he
+might have a private word with us.
+
+"'This is Mr. Jabez Wilson,' said my assistant, 'and he is
+willing to fill a vacancy in the League.'
+
+"'And he is admirably suited for it,' the other answered. 'He has
+every requirement. I cannot recall when I have seen anything so
+fine.' He took a step backward, cocked his head on one side, and
+gazed at my hair until I felt quite bashful. Then suddenly he
+plunged forward, wrung my hand, and congratulated me warmly on my
+success.
+
+"'It would be injustice to hesitate,' said he. 'You will,
+however, I am sure, excuse me for taking an obvious precaution.'
+With that he seized my hair in both his hands, and tugged until I
+yelled with the pain. 'There is water in your eyes,' said he as
+he released me. 'I perceive that all is as it should be. But we
+have to be careful, for we have twice been deceived by wigs and
+once by paint. I could tell you tales of cobbler's wax which
+would disgust you with human nature.' He stepped over to the
+window and shouted through it at the top of his voice that the
+vacancy was filled. A groan of disappointment came up from below,
+and the folk all trooped away in different directions until there
+was not a red-head to be seen except my own and that of the
+manager.
+
+"'My name,' said he, 'is Mr. Duncan Ross, and I am myself one of
+the pensioners upon the fund left by our noble benefactor. Are
+you a married man, Mr. Wilson? Have you a family?'
+
+"I answered that I had not.
+
+"His face fell immediately.
+
+"'Dear me!' he said gravely, 'that is very serious indeed! I am
+sorry to hear you say that. The fund was, of course, for the
+propagation and spread of the red-heads as well as for their
+maintenance. It is exceedingly unfortunate that you should be a
+bachelor.'
+
+"My face lengthened at this, Mr. Holmes, for I thought that I was
+not to have the vacancy after all; but after thinking it over for
+a few minutes he said that it would be all right.
+
+"'In the case of another,' said he, 'the objection might be
+fatal, but we must stretch a point in favour of a man with such a
+head of hair as yours. When shall you be able to enter upon your
+new duties?'
+
+"'Well, it is a little awkward, for I have a business already,'
+said I.
+
+"'Oh, never mind about that, Mr. Wilson!' said Vincent Spaulding.
+'I should be able to look after that for you.'
+
+"'What would be the hours?' I asked.
+
+"'Ten to two.'
+
+"Now a pawnbroker's business is mostly done of an evening, Mr.
+Holmes, especially Thursday and Friday evening, which is just
+before pay-day; so it would suit me very well to earn a little in
+the mornings. Besides, I knew that my assistant was a good man,
+and that he would see to anything that turned up.
+
+"'That would suit me very well,' said I. 'And the pay?'
+
+"'Is 4 pounds a week.'
+
+"'And the work?'
+
+"'Is purely nominal.'
+
+"'What do you call purely nominal?'
+
+"'Well, you have to be in the office, or at least in the
+building, the whole time. If you leave, you forfeit your whole
+position forever. The will is very clear upon that point. You
+don't comply with the conditions if you budge from the office
+during that time.'
+
+"'It's only four hours a day, and I should not think of leaving,'
+said I.
+
+"'No excuse will avail,' said Mr. Duncan Ross; 'neither sickness
+nor business nor anything else. There you must stay, or you lose
+your billet.'
+
+"'And the work?'
+
+"'Is to copy out the "Encyclopaedia Britannica." There is the first
+volume of it in that press. You must find your own ink, pens, and
+blotting-paper, but we provide this table and chair. Will you be
+ready to-morrow?'
+
+"'Certainly,' I answered.
+
+"'Then, good-bye, Mr. Jabez Wilson, and let me congratulate you
+once more on the important position which you have been fortunate
+enough to gain.' He bowed me out of the room and I went home with
+my assistant, hardly knowing what to say or do, I was so pleased
+at my own good fortune.
+
+"Well, I thought over the matter all day, and by evening I was in
+low spirits again; for I had quite persuaded myself that the
+whole affair must be some great hoax or fraud, though what its
+object might be I could not imagine. It seemed altogether past
+belief that anyone could make such a will, or that they would pay
+such a sum for doing anything so simple as copying out the
+'Encyclopaedia Britannica.' Vincent Spaulding did what he could to
+cheer me up, but by bedtime I had reasoned myself out of the
+whole thing. However, in the morning I determined to have a look
+at it anyhow, so I bought a penny bottle of ink, and with a
+quill-pen, and seven sheets of foolscap paper, I started off for
+Pope's Court.
+
+"Well, to my surprise and delight, everything was as right as
+possible. The table was set out ready for me, and Mr. Duncan Ross
+was there to see that I got fairly to work. He started me off
+upon the letter A, and then he left me; but he would drop in from
+time to time to see that all was right with me. At two o'clock he
+bade me good-day, complimented me upon the amount that I had
+written, and locked the door of the office after me.
+
+"This went on day after day, Mr. Holmes, and on Saturday the
+manager came in and planked down four golden sovereigns for my
+week's work. It was the same next week, and the same the week
+after. Every morning I was there at ten, and every afternoon I
+left at two. By degrees Mr. Duncan Ross took to coming in only
+once of a morning, and then, after a time, he did not come in at
+all. Still, of course, I never dared to leave the room for an
+instant, for I was not sure when he might come, and the billet
+was such a good one, and suited me so well, that I would not risk
+the loss of it.
+
+"Eight weeks passed away like this, and I had written about
+Abbots and Archery and Armour and Architecture and Attica, and
+hoped with diligence that I might get on to the B's before very
+long. It cost me something in foolscap, and I had pretty nearly
+filled a shelf with my writings. And then suddenly the whole
+business came to an end."
+
+"To an end?"
+
+"Yes, sir. And no later than this morning. I went to my work as
+usual at ten o'clock, but the door was shut and locked, with a
+little square of cardboard hammered on to the middle of the
+panel with a tack. Here it is, and you can read for yourself."
+
+He held up a piece of white cardboard about the size of a sheet
+of note-paper. It read in this fashion:
+
+                  THE RED-HEADED LEAGUE
+
+                           IS
+
+                        DISSOLVED.
+
+                     October 9, 1890.
+
+Sherlock Holmes and I surveyed this curt announcement and the
+rueful face behind it, until the comical side of the affair so
+completely overtopped every other consideration that we both
+burst out into a roar of laughter.
+
+"I cannot see that there is anything very funny," cried our
+client, flushing up to the roots of his flaming head. "If you can
+do nothing better than laugh at me, I can go elsewhere."
+
+"No, no," cried Holmes, shoving him back into the chair from
+which he had half risen. "I really wouldn't miss your case for
+the world. It is most refreshingly unusual. But there is, if you
+will excuse my saying so, something just a little funny about it.
+Pray what steps did you take when you found the card upon the
+door?"
+
+"I was staggered, sir. I did not know what to do. Then I called
+at the offices round, but none of them seemed to know anything
+about it. Finally, I went to the landlord, who is an accountant
+living on the ground-floor, and I asked him if he could tell me
+what had become of the Red-headed League. He said that he had
+never heard of any such body. Then I asked him who Mr. Duncan
+Ross was. He answered that the name was new to him.
+
+"'Well,' said I, 'the gentleman at No. 4.'
+
+"'What, the red-headed man?'
+
+"'Yes.'
+
+"'Oh,' said he, 'his name was William Morris. He was a solicitor
+and was using my room as a temporary convenience until his new
+premises were ready. He moved out yesterday.'
+
+"'Where could I find him?'
+
+"'Oh, at his new offices. He did tell me the address. Yes, 17
+King Edward Street, near St. Paul's.'
+
+"I started off, Mr. Holmes, but when I got to that address it was
+a manufactory of artificial knee-caps, and no one in it had ever
+heard of either Mr. William Morris or Mr. Duncan Ross."
+
+"And what did you do then?" asked Holmes.
+
+"I went home to Saxe-Coburg Square, and I took the advice of my
+assistant. But he could not help me in any way. He could only say
+that if I waited I should hear by post. But that was not quite
+good enough, Mr. Holmes. I did not wish to lose such a place
+without a struggle, so, as I had heard that you were good enough
+to give advice to poor folk who were in need of it, I came right
+away to you."
+
+"And you did very wisely," said Holmes. "Your case is an
+exceedingly remarkable one, and I shall be happy to look into it.
+From what you have told me I think that it is possible that
+graver issues hang from it than might at first sight appear."
+
+"Grave enough!" said Mr. Jabez Wilson. "Why, I have lost four
+pound a week."
+
+"As far as you are personally concerned," remarked Holmes, "I do
+not see that you have any grievance against this extraordinary
+league. On the contrary, you are, as I understand, richer by some
+30 pounds, to say nothing of the minute knowledge which you have
+gained on every subject which comes under the letter A. You have
+lost nothing by them."
+
+"No, sir. But I want to find out about them, and who they are,
+and what their object was in playing this prank--if it was a
+prank--upon me. It was a pretty expensive joke for them, for it
+cost them two and thirty pounds."
+
+"We shall endeavour to clear up these points for you. And, first,
+one or two questions, Mr. Wilson. This assistant of yours who
+first called your attention to the advertisement--how long had he
+been with you?"
+
+"About a month then."
+
+"How did he come?"
+
+"In answer to an advertisement."
+
+"Was he the only applicant?"
+
+"No, I had a dozen."
+
+"Why did you pick him?"
+
+"Because he was handy and would come cheap."
+
+"At half-wages, in fact."
+
+"Yes."
+
+"What is he like, this Vincent Spaulding?"
+
+"Small, stout-built, very quick in his ways, no hair on his face,
+though he's not short of thirty. Has a white splash of acid upon
+his forehead."
+
+Holmes sat up in his chair in considerable excitement. "I thought
+as much," said he. "Have you ever observed that his ears are
+pierced for earrings?"
+
+"Yes, sir. He told me that a gipsy had done it for him when he
+was a lad."
+
+"Hum!" said Holmes, sinking back in deep thought. "He is still
+with you?"
+
+"Oh, yes, sir; I have only just left him."
+
+"And has your business been attended to in your absence?"
+
+"Nothing to complain of, sir. There's never very much to do of a
+morning."
+
+"That will do, Mr. Wilson. I shall be happy to give you an
+opinion upon the subject in the course of a day or two. To-day is
+Saturday, and I hope that by Monday we may come to a conclusion."
+
+"Well, Watson," said Holmes when our visitor had left us, "what
+do you make of it all?"
+
+"I make nothing of it," I answered frankly. "It is a most
+mysterious business."
+
+"As a rule," said Holmes, "the more bizarre a thing is the less
+mysterious it proves to be. It is your commonplace, featureless
+crimes which are really puzzling, just as a commonplace face is
+the most difficult to identify. But I must be prompt over this
+matter."
+
+"What are you going to do, then?" I asked.
+
+"To smoke," he answered. "It is quite a three pipe problem, and I
+beg that you won't speak to me for fifty minutes." He curled
+himself up in his chair, with his thin knees drawn up to his
+hawk-like nose, and there he sat with his eyes closed and his
+black clay pipe thrusting out like the bill of some strange bird.
+I had come to the conclusion that he had dropped asleep, and
+indeed was nodding myself, when he suddenly sprang out of his
+chair with the gesture of a man who has made up his mind and put
+his pipe down upon the mantelpiece.
+
+"Sarasate plays at the St. James's Hall this afternoon," he
+remarked. "What do you think, Watson? Could your patients spare
+you for a few hours?"
+
+"I have nothing to do to-day. My practice is never very
+absorbing."
+
+"Then put on your hat and come. I am going through the City
+first, and we can have some lunch on the way. I observe that
+there is a good deal of German music on the programme, which is
+rather more to my taste than Italian or French. It is
+introspective, and I want to introspect. Come along!"
+
+We travelled by the Underground as far as Aldersgate; and a short
+walk took us to Saxe-Coburg Square, the scene of the singular
+story which we had listened to in the morning. It was a poky,
+little, shabby-genteel place, where four lines of dingy
+two-storied brick houses looked out into a small railed-in
+enclosure, where a lawn of weedy grass and a few clumps of faded
+laurel-bushes made a hard fight against a smoke-laden and
+uncongenial atmosphere. Three gilt balls and a brown board with
+"JABEZ WILSON" in white letters, upon a corner house, announced
+the place where our red-headed client carried on his business.
+Sherlock Holmes stopped in front of it with his head on one side
+and looked it all over, with his eyes shining brightly between
+puckered lids. Then he walked slowly up the street, and then down
+again to the corner, still looking keenly at the houses. Finally
+he returned to the pawnbroker's, and, having thumped vigorously
+upon the pavement with his stick two or three times, he went up
+to the door and knocked. It was instantly opened by a
+bright-looking, clean-shaven young fellow, who asked him to step
+in.
+
+"Thank you," said Holmes, "I only wished to ask you how you would
+go from here to the Strand."
+
+"Third right, fourth left," answered the assistant promptly,
+closing the door.
+
+"Smart fellow, that," observed Holmes as we walked away. "He is,
+in my judgment, the fourth smartest man in London, and for daring
+I am not sure that he has not a claim to be third. I have known
+something of him before."
+
+"Evidently," said I, "Mr. Wilson's assistant counts for a good
+deal in this mystery of the Red-headed League. I am sure that you
+inquired your way merely in order that you might see him."
+
+"Not him."
+
+"What then?"
+
+"The knees of his trousers."
+
+"And what did you see?"
+
+"What I expected to see."
+
+"Why did you beat the pavement?"
+
+"My dear doctor, this is a time for observation, not for talk. We
+are spies in an enemy's country. We know something of Saxe-Coburg
+Square. Let us now explore the parts which lie behind it."
+
+The road in which we found ourselves as we turned round the
+corner from the retired Saxe-Coburg Square presented as great a
+contrast to it as the front of a picture does to the back. It was
+one of the main arteries which conveyed the traffic of the City
+to the north and west. The roadway was blocked with the immense
+stream of commerce flowing in a double tide inward and outward,
+while the footpaths were black with the hurrying swarm of
+pedestrians. It was difficult to realise as we looked at the line
+of fine shops and stately business premises that they really
+abutted on the other side upon the faded and stagnant square
+which we had just quitted.
+
+"Let me see," said Holmes, standing at the corner and glancing
+along the line, "I should like just to remember the order of the
+houses here. It is a hobby of mine to have an exact knowledge of
+London. There is Mortimer's, the tobacconist, the little
+newspaper shop, the Coburg branch of the City and Suburban Bank,
+the Vegetarian Restaurant, and McFarlane's carriage-building
+depot. That carries us right on to the other block. And now,
+Doctor, we've done our work, so it's time we had some play. A
+sandwich and a cup of coffee, and then off to violin-land, where
+all is sweetness and delicacy and harmony, and there are no
+red-headed clients to vex us with their conundrums."
+
+My friend was an enthusiastic musician, being himself not only a
+very capable performer but a composer of no ordinary merit. All
+the afternoon he sat in the stalls wrapped in the most perfect
+happiness, gently waving his long, thin fingers in time to the
+music, while his gently smiling face and his languid, dreamy eyes
+were as unlike those of Holmes the sleuth-hound, Holmes the
+relentless, keen-witted, ready-handed criminal agent, as it was
+possible to conceive. In his singular character the dual nature
+alternately asserted itself, and his extreme exactness and
+astuteness represented, as I have often thought, the reaction
+against the poetic and contemplative mood which occasionally
+predominated in him. The swing of his nature took him from
+extreme languor to devouring energy; and, as I knew well, he was
+never so truly formidable as when, for days on end, he had been
+lounging in his armchair amid his improvisations and his
+black-letter editions. Then it was that the lust of the chase
+would suddenly come upon him, and that his brilliant reasoning
+power would rise to the level of intuition, until those who were
+unacquainted with his methods would look askance at him as on a
+man whose knowledge was not that of other mortals. When I saw him
+that afternoon so enwrapped in the music at St. James's Hall I
+felt that an evil time might be coming upon those whom he had set
+himself to hunt down.
+
+"You want to go home, no doubt, Doctor," he remarked as we
+emerged.
+
+"Yes, it would be as well."
+
+"And I have some business to do which will take some hours. This
+business at Coburg Square is serious."
+
+"Why serious?"
+
+"A considerable crime is in contemplation. I have every reason to
+believe that we shall be in time to stop it. But to-day being
+Saturday rather complicates matters. I shall want your help
+to-night."
+
+"At what time?"
+
+"Ten will be early enough."
+
+"I shall be at Baker Street at ten."
+
+"Very well. And, I say, Doctor, there may be some little danger,
+so kindly put your army revolver in your pocket." He waved his
+hand, turned on his heel, and disappeared in an instant among the
+crowd.
+
+I trust that I am not more dense than my neighbours, but I was
+always oppressed with a sense of my own stupidity in my dealings
+with Sherlock Holmes. Here I had heard what he had heard, I had
+seen what he had seen, and yet from his words it was evident that
+he saw clearly not only what had happened but what was about to
+happen, while to me the whole business was still confused and
+grotesque. As I drove home to my house in Kensington I thought
+over it all, from the extraordinary story of the red-headed
+copier of the "Encyclopaedia" down to the visit to Saxe-Coburg
+Square, and the ominous words with which he had parted from me.
+What was this nocturnal expedition, and why should I go armed?
+Where were we going, and what were we to do? I had the hint from
+Holmes that this smooth-faced pawnbroker's assistant was a
+formidable man--a man who might play a deep game. I tried to
+puzzle it out, but gave it up in despair and set the matter aside
+until night should bring an explanation.
+
+It was a quarter-past nine when I started from home and made my
+way across the Park, and so through Oxford Street to Baker
+Street. Two hansoms were standing at the door, and as I entered
+the passage I heard the sound of voices from above. On entering
+his room I found Holmes in animated conversation with two men,
+one of whom I recognised as Peter Jones, the official police
+agent, while the other was a long, thin, sad-faced man, with a
+very shiny hat and oppressively respectable frock-coat.
+
+"Ha! Our party is complete," said Holmes, buttoning up his
+pea-jacket and taking his heavy hunting crop from the rack.
+"Watson, I think you know Mr. Jones, of Scotland Yard? Let me
+introduce you to Mr. Merryweather, who is to be our companion in
+to-night's adventure."
+
+"We're hunting in couples again, Doctor, you see," said Jones in
+his consequential way. "Our friend here is a wonderful man for
+starting a chase. All he wants is an old dog to help him to do
+the running down."
+
+"I hope a wild goose may not prove to be the end of our chase,"
+observed Mr. Merryweather gloomily.
+
+"You may place considerable confidence in Mr. Holmes, sir," said
+the police agent loftily. "He has his own little methods, which
+are, if he won't mind my saying so, just a little too theoretical
+and fantastic, but he has the makings of a detective in him. It
+is not too much to say that once or twice, as in that business of
+the Sholto murder and the Agra treasure, he has been more nearly
+correct than the official force."
+
+"Oh, if you say so, Mr. Jones, it is all right," said the
+stranger with deference. "Still, I confess that I miss my rubber.
+It is the first Saturday night for seven-and-twenty years that I
+have not had my rubber."
+
+"I think you will find," said Sherlock Holmes, "that you will
+play for a higher stake to-night than you have ever done yet, and
+that the play will be more exciting. For you, Mr. Merryweather,
+the stake will be some 30,000 pounds; and for you, Jones, it will
+be the man upon whom you wish to lay your hands."
+
+"John Clay, the murderer, thief, smasher, and forger. He's a
+young man, Mr. Merryweather, but he is at the head of his
+profession, and I would rather have my bracelets on him than on
+any criminal in London. He's a remarkable man, is young John
+Clay. His grandfather was a royal duke, and he himself has been
+to Eton and Oxford. His brain is as cunning as his fingers, and
+though we meet signs of him at every turn, we never know where to
+find the man himself. He'll crack a crib in Scotland one week,
+and be raising money to build an orphanage in Cornwall the next.
+I've been on his track for years and have never set eyes on him
+yet."
+
+"I hope that I may have the pleasure of introducing you to-night.
+I've had one or two little turns also with Mr. John Clay, and I
+agree with you that he is at the head of his profession. It is
+past ten, however, and quite time that we started. If you two
+will take the first hansom, Watson and I will follow in the
+second."
+
+Sherlock Holmes was not very communicative during the long drive
+and lay back in the cab humming the tunes which he had heard in
+the afternoon. We rattled through an endless labyrinth of gas-lit
+streets until we emerged into Farrington Street.
+
+"We are close there now," my friend remarked. "This fellow
+Merryweather is a bank director, and personally interested in the
+matter. I thought it as well to have Jones with us also. He is
+not a bad fellow, though an absolute imbecile in his profession.
+He has one positive virtue. He is as brave as a bulldog and as
+tenacious as a lobster if he gets his claws upon anyone. Here we
+are, and they are waiting for us."
+
+We had reached the same crowded thoroughfare in which we had
+found ourselves in the morning. Our cabs were dismissed, and,
+following the guidance of Mr. Merryweather, we passed down a
+narrow passage and through a side door, which he opened for us.
+Within there was a small corridor, which ended in a very massive
+iron gate. This also was opened, and led down a flight of winding
+stone steps, which terminated at another formidable gate. Mr.
+Merryweather stopped to light a lantern, and then conducted us
+down a dark, earth-smelling passage, and so, after opening a
+third door, into a huge vault or cellar, which was piled all
+round with crates and massive boxes.
+
+"You are not very vulnerable from above," Holmes remarked as he
+held up the lantern and gazed about him.
+
+"Nor from below," said Mr. Merryweather, striking his stick upon
+the flags which lined the floor. "Why, dear me, it sounds quite
+hollow!" he remarked, looking up in surprise.
+
+"I must really ask you to be a little more quiet!" said Holmes
+severely. "You have already imperilled the whole success of our
+expedition. Might I beg that you would have the goodness to sit
+down upon one of those boxes, and not to interfere?"
+
+The solemn Mr. Merryweather perched himself upon a crate, with a
+very injured expression upon his face, while Holmes fell upon his
+knees upon the floor and, with the lantern and a magnifying lens,
+began to examine minutely the cracks between the stones. A few
+seconds sufficed to satisfy him, for he sprang to his feet again
+and put his glass in his pocket.
+
+"We have at least an hour before us," he remarked, "for they can
+hardly take any steps until the good pawnbroker is safely in bed.
+Then they will not lose a minute, for the sooner they do their
+work the longer time they will have for their escape. We are at
+present, Doctor--as no doubt you have divined--in the cellar of
+the City branch of one of the principal London banks. Mr.
+Merryweather is the chairman of directors, and he will explain to
+you that there are reasons why the more daring criminals of
+London should take a considerable interest in this cellar at
+present."
+
+"It is our French gold," whispered the director. "We have had
+several warnings that an attempt might be made upon it."
+
+"Your French gold?"
+
+"Yes. We had occasion some months ago to strengthen our resources
+and borrowed for that purpose 30,000 napoleons from the Bank of
+France. It has become known that we have never had occasion to
+unpack the money, and that it is still lying in our cellar. The
+crate upon which I sit contains 2,000 napoleons packed between
+layers of lead foil. Our reserve of bullion is much larger at
+present than is usually kept in a single branch office, and the
+directors have had misgivings upon the subject."
+
+"Which were very well justified," observed Holmes. "And now it is
+time that we arranged our little plans. I expect that within an
+hour matters will come to a head. In the meantime Mr.
+Merryweather, we must put the screen over that dark lantern."
+
+"And sit in the dark?"
+
+"I am afraid so. I had brought a pack of cards in my pocket, and
+I thought that, as we were a partie carrée, you might have your
+rubber after all. But I see that the enemy's preparations have
+gone so far that we cannot risk the presence of a light. And,
+first of all, we must choose our positions. These are daring men,
+and though we shall take them at a disadvantage, they may do us
+some harm unless we are careful. I shall stand behind this crate,
+and do you conceal yourselves behind those. Then, when I flash a
+light upon them, close in swiftly. If they fire, Watson, have no
+compunction about shooting them down."
+
+I placed my revolver, cocked, upon the top of the wooden case
+behind which I crouched. Holmes shot the slide across the front
+of his lantern and left us in pitch darkness--such an absolute
+darkness as I have never before experienced. The smell of hot
+metal remained to assure us that the light was still there, ready
+to flash out at a moment's notice. To me, with my nerves worked
+up to a pitch of expectancy, there was something depressing and
+subduing in the sudden gloom, and in the cold dank air of the
+vault.
+
+"They have but one retreat," whispered Holmes. "That is back
+through the house into Saxe-Coburg Square. I hope that you have
+done what I asked you, Jones?"
+
+"I have an inspector and two officers waiting at the front door."
+
+"Then we have stopped all the holes. And now we must be silent
+and wait."
+
+What a time it seemed! From comparing notes afterwards it was but
+an hour and a quarter, yet it appeared to me that the night must
+have almost gone and the dawn be breaking above us. My limbs
+were weary and stiff, for I feared to change my position; yet my
+nerves were worked up to the highest pitch of tension, and my
+hearing was so acute that I could not only hear the gentle
+breathing of my companions, but I could distinguish the deeper,
+heavier in-breath of the bulky Jones from the thin, sighing note
+of the bank director. From my position I could look over the case
+in the direction of the floor. Suddenly my eyes caught the glint
+of a light.
+
+At first it was but a lurid spark upon the stone pavement. Then
+it lengthened out until it became a yellow line, and then,
+without any warning or sound, a gash seemed to open and a hand
+appeared, a white, almost womanly hand, which felt about in the
+centre of the little area of light. For a minute or more the
+hand, with its writhing fingers, protruded out of the floor. Then
+it was withdrawn as suddenly as it appeared, and all was dark
+again save the single lurid spark which marked a chink between
+the stones.
+
+Its disappearance, however, was but momentary. With a rending,
+tearing sound, one of the broad, white stones turned over upon
+its side and left a square, gaping hole, through which streamed
+the light of a lantern. Over the edge there peeped a clean-cut,
+boyish face, which looked keenly about it, and then, with a hand
+on either side of the aperture, drew itself shoulder-high and
+waist-high, until one knee rested upon the edge. In another
+instant he stood at the side of the hole and was hauling after
+him a companion, lithe and small like himself, with a pale face
+and a shock of very red hair.
+
+"It's all clear," he whispered. "Have you the chisel and the
+bags? Great Scott! Jump, Archie, jump, and I'll swing for it!"
+
+Sherlock Holmes had sprung out and seized the intruder by the
+collar. The other dived down the hole, and I heard the sound of
+rending cloth as Jones clutched at his skirts. The light flashed
+upon the barrel of a revolver, but Holmes' hunting crop came
+down on the man's wrist, and the pistol clinked upon the stone
+floor.
+
+"It's no use, John Clay," said Holmes blandly. "You have no
+chance at all."
+
+"So I see," the other answered with the utmost coolness. "I fancy
+that my pal is all right, though I see you have got his
+coat-tails."
+
+"There are three men waiting for him at the door," said Holmes.
+
+"Oh, indeed! You seem to have done the thing very completely. I
+must compliment you."
+
+"And I you," Holmes answered. "Your red-headed idea was very new
+and effective."
+
+"You'll see your pal again presently," said Jones. "He's quicker
+at climbing down holes than I am. Just hold out while I fix the
+derbies."
+
+"I beg that you will not touch me with your filthy hands,"
+remarked our prisoner as the handcuffs clattered upon his wrists.
+"You may not be aware that I have royal blood in my veins. Have
+the goodness, also, when you address me always to say 'sir' and
+'please.'"
+
+"All right," said Jones with a stare and a snigger. "Well, would
+you please, sir, march upstairs, where we can get a cab to carry
+your Highness to the police-station?"
+
+"That is better," said John Clay serenely. He made a sweeping bow
+to the three of us and walked quietly off in the custody of the
+detective.
+
+"Really, Mr. Holmes," said Mr. Merryweather as we followed them
+from the cellar, "I do not know how the bank can thank you or
+repay you. There is no doubt that you have detected and defeated
+in the most complete manner one of the most determined attempts
+at bank robbery that have ever come within my experience."
+
+"I have had one or two little scores of my own to settle with Mr.
+John Clay," said Holmes. "I have been at some small expense over
+this matter, which I shall expect the bank to refund, but beyond
+that I am amply repaid by having had an experience which is in
+many ways unique, and by hearing the very remarkable narrative of
+the Red-headed League."
+
+
+"You see, Watson," he explained in the early hours of the morning
+as we sat over a glass of whisky and soda in Baker Street, "it
+was perfectly obvious from the first that the only possible
+object of this rather fantastic business of the advertisement of
+the League, and the copying of the 'Encyclopaedia,' must be to get
+this not over-bright pawnbroker out of the way for a number of
+hours every day. It was a curious way of managing it, but,
+really, it would be difficult to suggest a better. The method was
+no doubt suggested to Clay's ingenious mind by the colour of his
+accomplice's hair. The 4 pounds a week was a lure which must draw
+him, and what was it to them, who were playing for thousands?
+They put in the advertisement, one rogue has the temporary
+office, the other rogue incites the man to apply for it, and
+together they manage to secure his absence every morning in the
+week. From the time that I heard of the assistant having come for
+half wages, it was obvious to me that he had some strong motive
+for securing the situation."
+
+"But how could you guess what the motive was?"
+
+"Had there been women in the house, I should have suspected a
+mere vulgar intrigue. That, however, was out of the question. The
+man's business was a small one, and there was nothing in his
+house which could account for such elaborate preparations, and
+such an expenditure as they were at. It must, then, be something
+out of the house. What could it be? I thought of the assistant's
+fondness for photography, and his trick of vanishing into the
+cellar. The cellar! There was the end of this tangled clue. Then
+I made inquiries as to this mysterious assistant and found that I
+had to deal with one of the coolest and most daring criminals in
+London. He was doing something in the cellar--something which
+took many hours a day for months on end. What could it be, once
+more? I could think of nothing save that he was running a tunnel
+to some other building.
+
+"So far I had got when we went to visit the scene of action. I
+surprised you by beating upon the pavement with my stick. I was
+ascertaining whether the cellar stretched out in front or behind.
+It was not in front. Then I rang the bell, and, as I hoped, the
+assistant answered it. We have had some skirmishes, but we had
+never set eyes upon each other before. I hardly looked at his
+face. His knees were what I wished to see. You must yourself have
+remarked how worn, wrinkled, and stained they were. They spoke of
+those hours of burrowing. The only remaining point was what they
+were burrowing for. I walked round the corner, saw the City and
+Suburban Bank abutted on our friend's premises, and felt that I
+had solved my problem. When you drove home after the concert I
+called upon Scotland Yard and upon the chairman of the bank
+directors, with the result that you have seen."
+
+"And how could you tell that they would make their attempt
+to-night?" I asked.
+
+"Well, when they closed their League offices that was a sign that
+they cared no longer about Mr. Jabez Wilson's presence--in other
+words, that they had completed their tunnel. But it was essential
+that they should use it soon, as it might be discovered, or the
+bullion might be removed. Saturday would suit them better than
+any other day, as it would give them two days for their escape.
+For all these reasons I expected them to come to-night."
+
+"You reasoned it out beautifully," I exclaimed in unfeigned
+admiration. "It is so long a chain, and yet every link rings
+true."
+
+"It saved me from ennui," he answered, yawning. "Alas! I already
+feel it closing in upon me. My life is spent in one long effort
+to escape from the commonplaces of existence. These little
+problems help me to do so."
+
+"And you are a benefactor of the race," said I.
+
+He shrugged his shoulders. "Well, perhaps, after all, it is of
+some little use," he remarked. "'L'homme c'est rien--l'oeuvre
+c'est tout,' as Gustave Flaubert wrote to George Sand."
+
+
+
+ADVENTURE III. A CASE OF IDENTITY
+
+"My dear fellow," said Sherlock Holmes as we sat on either side
+of the fire in his lodgings at Baker Street, "life is infinitely
+stranger than anything which the mind of man could invent. We
+would not dare to conceive the things which are really mere
+commonplaces of existence. If we could fly out of that window
+hand in hand, hover over this great city, gently remove the
+roofs, and peep in at the queer things which are going on, the
+strange coincidences, the plannings, the cross-purposes, the
+wonderful chains of events, working through generations, and
+leading to the most outré results, it would make all fiction with
+its conventionalities and foreseen conclusions most stale and
+unprofitable."
+
+"And yet I am not convinced of it," I answered. "The cases which
+come to light in the papers are, as a rule, bald enough, and
+vulgar enough. We have in our police reports realism pushed to
+its extreme limits, and yet the result is, it must be confessed,
+neither fascinating nor artistic."
+
+"A certain selection and discretion must be used in producing a
+realistic effect," remarked Holmes. "This is wanting in the
+police report, where more stress is laid, perhaps, upon the
+platitudes of the magistrate than upon the details, which to an
+observer contain the vital essence of the whole matter. Depend
+upon it, there is nothing so unnatural as the commonplace."
+
+I smiled and shook my head. "I can quite understand your thinking
+so," I said. "Of course, in your position of unofficial adviser
+and helper to everybody who is absolutely puzzled, throughout
+three continents, you are brought in contact with all that is
+strange and bizarre. But here"--I picked up the morning paper
+from the ground--"let us put it to a practical test. Here is the
+first heading upon which I come. 'A husband's cruelty to his
+wife.' There is half a column of print, but I know without
+reading it that it is all perfectly familiar to me. There is, of
+course, the other woman, the drink, the push, the blow, the
+bruise, the sympathetic sister or landlady. The crudest of
+writers could invent nothing more crude."
+
+"Indeed, your example is an unfortunate one for your argument,"
+said Holmes, taking the paper and glancing his eye down it. "This
+is the Dundas separation case, and, as it happens, I was engaged
+in clearing up some small points in connection with it. The
+husband was a teetotaler, there was no other woman, and the
+conduct complained of was that he had drifted into the habit of
+winding up every meal by taking out his false teeth and hurling
+them at his wife, which, you will allow, is not an action likely
+to occur to the imagination of the average story-teller. Take a
+pinch of snuff, Doctor, and acknowledge that I have scored over
+you in your example."
+
+He held out his snuffbox of old gold, with a great amethyst in
+the centre of the lid. Its splendour was in such contrast to his
+homely ways and simple life that I could not help commenting upon
+it.
+
+"Ah," said he, "I forgot that I had not seen you for some weeks.
+It is a little souvenir from the King of Bohemia in return for my
+assistance in the case of the Irene Adler papers."
+
+"And the ring?" I asked, glancing at a remarkable brilliant which
+sparkled upon his finger.
+
+"It was from the reigning family of Holland, though the matter in
+which I served them was of such delicacy that I cannot confide it
+even to you, who have been good enough to chronicle one or two of
+my little problems."
+
+"And have you any on hand just now?" I asked with interest.
+
+"Some ten or twelve, but none which present any feature of
+interest. They are important, you understand, without being
+interesting. Indeed, I have found that it is usually in
+unimportant matters that there is a field for the observation,
+and for the quick analysis of cause and effect which gives the
+charm to an investigation. The larger crimes are apt to be the
+simpler, for the bigger the crime the more obvious, as a rule, is
+the motive. In these cases, save for one rather intricate matter
+which has been referred to me from Marseilles, there is nothing
+which presents any features of interest. It is possible, however,
+that I may have something better before very many minutes are
+over, for this is one of my clients, or I am much mistaken."
+
+He had risen from his chair and was standing between the parted
+blinds gazing down into the dull neutral-tinted London street.
+Looking over his shoulder, I saw that on the pavement opposite
+there stood a large woman with a heavy fur boa round her neck,
+and a large curling red feather in a broad-brimmed hat which was
+tilted in a coquettish Duchess of Devonshire fashion over her
+ear. From under this great panoply she peeped up in a nervous,
+hesitating fashion at our windows, while her body oscillated
+backward and forward, and her fingers fidgeted with her glove
+buttons. Suddenly, with a plunge, as of the swimmer who leaves
+the bank, she hurried across the road, and we heard the sharp
+clang of the bell.
+
+"I have seen those symptoms before," said Holmes, throwing his
+cigarette into the fire. "Oscillation upon the pavement always
+means an affaire de coeur. She would like advice, but is not sure
+that the matter is not too delicate for communication. And yet
+even here we may discriminate. When a woman has been seriously
+wronged by a man she no longer oscillates, and the usual symptom
+is a broken bell wire. Here we may take it that there is a love
+matter, but that the maiden is not so much angry as perplexed, or
+grieved. But here she comes in person to resolve our doubts."
+
+As he spoke there was a tap at the door, and the boy in buttons
+entered to announce Miss Mary Sutherland, while the lady herself
+loomed behind his small black figure like a full-sailed
+merchant-man behind a tiny pilot boat. Sherlock Holmes welcomed
+her with the easy courtesy for which he was remarkable, and,
+having closed the door and bowed her into an armchair, he looked
+her over in the minute and yet abstracted fashion which was
+peculiar to him.
+
+"Do you not find," he said, "that with your short sight it is a
+little trying to do so much typewriting?"
+
+"I did at first," she answered, "but now I know where the letters
+are without looking." Then, suddenly realising the full purport
+of his words, she gave a violent start and looked up, with fear
+and astonishment upon her broad, good-humoured face. "You've
+heard about me, Mr. Holmes," she cried, "else how could you know
+all that?"
+
+"Never mind," said Holmes, laughing; "it is my business to know
+things. Perhaps I have trained myself to see what others
+overlook. If not, why should you come to consult me?"
+
+"I came to you, sir, because I heard of you from Mrs. Etherege,
+whose husband you found so easy when the police and everyone had
+given him up for dead. Oh, Mr. Holmes, I wish you would do as
+much for me. I'm not rich, but still I have a hundred a year in
+my own right, besides the little that I make by the machine, and
+I would give it all to know what has become of Mr. Hosmer Angel."
+
+"Why did you come away to consult me in such a hurry?" asked
+Sherlock Holmes, with his finger-tips together and his eyes to
+the ceiling.
+
+Again a startled look came over the somewhat vacuous face of Miss
+Mary Sutherland. "Yes, I did bang out of the house," she said,
+"for it made me angry to see the easy way in which Mr.
+Windibank--that is, my father--took it all. He would not go to
+the police, and he would not go to you, and so at last, as he
+would do nothing and kept on saying that there was no harm done,
+it made me mad, and I just on with my things and came right away
+to you."
+
+"Your father," said Holmes, "your stepfather, surely, since the
+name is different."
+
+"Yes, my stepfather. I call him father, though it sounds funny,
+too, for he is only five years and two months older than myself."
+
+"And your mother is alive?"
+
+"Oh, yes, mother is alive and well. I wasn't best pleased, Mr.
+Holmes, when she married again so soon after father's death, and
+a man who was nearly fifteen years younger than herself. Father
+was a plumber in the Tottenham Court Road, and he left a tidy
+business behind him, which mother carried on with Mr. Hardy, the
+foreman; but when Mr. Windibank came he made her sell the
+business, for he was very superior, being a traveller in wines.
+They got 4700 pounds for the goodwill and interest, which wasn't
+near as much as father could have got if he had been alive."
+
+I had expected to see Sherlock Holmes impatient under this
+rambling and inconsequential narrative, but, on the contrary, he
+had listened with the greatest concentration of attention.
+
+"Your own little income," he asked, "does it come out of the
+business?"
+
+"Oh, no, sir. It is quite separate and was left me by my uncle
+Ned in Auckland. It is in New Zealand stock, paying 4 1/2 per
+cent. Two thousand five hundred pounds was the amount, but I can
+only touch the interest."
+
+"You interest me extremely," said Holmes. "And since you draw so
+large a sum as a hundred a year, with what you earn into the
+bargain, you no doubt travel a little and indulge yourself in
+every way. I believe that a single lady can get on very nicely
+upon an income of about 60 pounds."
+
+"I could do with much less than that, Mr. Holmes, but you
+understand that as long as I live at home I don't wish to be a
+burden to them, and so they have the use of the money just while
+I am staying with them. Of course, that is only just for the
+time. Mr. Windibank draws my interest every quarter and pays it
+over to mother, and I find that I can do pretty well with what I
+earn at typewriting. It brings me twopence a sheet, and I can
+often do from fifteen to twenty sheets in a day."
+
+"You have made your position very clear to me," said Holmes.
+"This is my friend, Dr. Watson, before whom you can speak as
+freely as before myself. Kindly tell us now all about your
+connection with Mr. Hosmer Angel."
+
+A flush stole over Miss Sutherland's face, and she picked
+nervously at the fringe of her jacket. "I met him first at the
+gasfitters' ball," she said. "They used to send father tickets
+when he was alive, and then afterwards they remembered us, and
+sent them to mother. Mr. Windibank did not wish us to go. He
+never did wish us to go anywhere. He would get quite mad if I
+wanted so much as to join a Sunday-school treat. But this time I
+was set on going, and I would go; for what right had he to
+prevent? He said the folk were not fit for us to know, when all
+father's friends were to be there. And he said that I had nothing
+fit to wear, when I had my purple plush that I had never so much
+as taken out of the drawer. At last, when nothing else would do,
+he went off to France upon the business of the firm, but we went,
+mother and I, with Mr. Hardy, who used to be our foreman, and it
+was there I met Mr. Hosmer Angel."
+
+"I suppose," said Holmes, "that when Mr. Windibank came back from
+France he was very annoyed at your having gone to the ball."
+
+"Oh, well, he was very good about it. He laughed, I remember, and
+shrugged his shoulders, and said there was no use denying
+anything to a woman, for she would have her way."
+
+"I see. Then at the gasfitters' ball you met, as I understand, a
+gentleman called Mr. Hosmer Angel."
+
+"Yes, sir. I met him that night, and he called next day to ask if
+we had got home all safe, and after that we met him--that is to
+say, Mr. Holmes, I met him twice for walks, but after that father
+came back again, and Mr. Hosmer Angel could not come to the house
+any more."
+
+"No?"
+
+"Well, you know father didn't like anything of the sort. He
+wouldn't have any visitors if he could help it, and he used to
+say that a woman should be happy in her own family circle. But
+then, as I used to say to mother, a woman wants her own circle to
+begin with, and I had not got mine yet."
+
+"But how about Mr. Hosmer Angel? Did he make no attempt to see
+you?"
+
+"Well, father was going off to France again in a week, and Hosmer
+wrote and said that it would be safer and better not to see each
+other until he had gone. We could write in the meantime, and he
+used to write every day. I took the letters in in the morning, so
+there was no need for father to know."
+
+"Were you engaged to the gentleman at this time?"
+
+"Oh, yes, Mr. Holmes. We were engaged after the first walk that
+we took. Hosmer--Mr. Angel--was a cashier in an office in
+Leadenhall Street--and--"
+
+"What office?"
+
+"That's the worst of it, Mr. Holmes, I don't know."
+
+"Where did he live, then?"
+
+"He slept on the premises."
+
+"And you don't know his address?"
+
+"No--except that it was Leadenhall Street."
+
+"Where did you address your letters, then?"
+
+"To the Leadenhall Street Post Office, to be left till called
+for. He said that if they were sent to the office he would be
+chaffed by all the other clerks about having letters from a lady,
+so I offered to typewrite them, like he did his, but he wouldn't
+have that, for he said that when I wrote them they seemed to come
+from me, but when they were typewritten he always felt that the
+machine had come between us. That will just show you how fond he
+was of me, Mr. Holmes, and the little things that he would think
+of."
+
+"It was most suggestive," said Holmes. "It has long been an axiom
+of mine that the little things are infinitely the most important.
+Can you remember any other little things about Mr. Hosmer Angel?"
+
+"He was a very shy man, Mr. Holmes. He would rather walk with me
+in the evening than in the daylight, for he said that he hated to
+be conspicuous. Very retiring and gentlemanly he was. Even his
+voice was gentle. He'd had the quinsy and swollen glands when he
+was young, he told me, and it had left him with a weak throat,
+and a hesitating, whispering fashion of speech. He was always
+well dressed, very neat and plain, but his eyes were weak, just
+as mine are, and he wore tinted glasses against the glare."
+
+"Well, and what happened when Mr. Windibank, your stepfather,
+returned to France?"
+
+"Mr. Hosmer Angel came to the house again and proposed that we
+should marry before father came back. He was in dreadful earnest
+and made me swear, with my hands on the Testament, that whatever
+happened I would always be true to him. Mother said he was quite
+right to make me swear, and that it was a sign of his passion.
+Mother was all in his favour from the first and was even fonder
+of him than I was. Then, when they talked of marrying within the
+week, I began to ask about father; but they both said never to
+mind about father, but just to tell him afterwards, and mother
+said she would make it all right with him. I didn't quite like
+that, Mr. Holmes. It seemed funny that I should ask his leave, as
+he was only a few years older than me; but I didn't want to do
+anything on the sly, so I wrote to father at Bordeaux, where the
+company has its French offices, but the letter came back to me on
+the very morning of the wedding."
+
+"It missed him, then?"
+
+"Yes, sir; for he had started to England just before it arrived."
+
+"Ha! that was unfortunate. Your wedding was arranged, then, for
+the Friday. Was it to be in church?"
+
+"Yes, sir, but very quietly. It was to be at St. Saviour's, near
+King's Cross, and we were to have breakfast afterwards at the St.
+Pancras Hotel. Hosmer came for us in a hansom, but as there were
+two of us he put us both into it and stepped himself into a
+four-wheeler, which happened to be the only other cab in the
+street. We got to the church first, and when the four-wheeler
+drove up we waited for him to step out, but he never did, and
+when the cabman got down from the box and looked there was no one
+there! The cabman said that he could not imagine what had become
+of him, for he had seen him get in with his own eyes. That was
+last Friday, Mr. Holmes, and I have never seen or heard anything
+since then to throw any light upon what became of him."
+
+"It seems to me that you have been very shamefully treated," said
+Holmes.
+
+"Oh, no, sir! He was too good and kind to leave me so. Why, all
+the morning he was saying to me that, whatever happened, I was to
+be true; and that even if something quite unforeseen occurred to
+separate us, I was always to remember that I was pledged to him,
+and that he would claim his pledge sooner or later. It seemed
+strange talk for a wedding-morning, but what has happened since
+gives a meaning to it."
+
+"Most certainly it does. Your own opinion is, then, that some
+unforeseen catastrophe has occurred to him?"
+
+"Yes, sir. I believe that he foresaw some danger, or else he
+would not have talked so. And then I think that what he foresaw
+happened."
+
+"But you have no notion as to what it could have been?"
+
+"None."
+
+"One more question. How did your mother take the matter?"
+
+"She was angry, and said that I was never to speak of the matter
+again."
+
+"And your father? Did you tell him?"
+
+"Yes; and he seemed to think, with me, that something had
+happened, and that I should hear of Hosmer again. As he said,
+what interest could anyone have in bringing me to the doors of
+the church, and then leaving me? Now, if he had borrowed my
+money, or if he had married me and got my money settled on him,
+there might be some reason, but Hosmer was very independent about
+money and never would look at a shilling of mine. And yet, what
+could have happened? And why could he not write? Oh, it drives me
+half-mad to think of it, and I can't sleep a wink at night." She
+pulled a little handkerchief out of her muff and began to sob
+heavily into it.
+
+"I shall glance into the case for you," said Holmes, rising, "and
+I have no doubt that we shall reach some definite result. Let the
+weight of the matter rest upon me now, and do not let your mind
+dwell upon it further. Above all, try to let Mr. Hosmer Angel
+vanish from your memory, as he has done from your life."
+
+"Then you don't think I'll see him again?"
+
+"I fear not."
+
+"Then what has happened to him?"
+
+"You will leave that question in my hands. I should like an
+accurate description of him and any letters of his which you can
+spare."
+
+"I advertised for him in last Saturday's Chronicle," said she.
+"Here is the slip and here are four letters from him."
+
+"Thank you. And your address?"
+
+"No. 31 Lyon Place, Camberwell."
+
+"Mr. Angel's address you never had, I understand. Where is your
+father's place of business?"
+
+"He travels for Westhouse & Marbank, the great claret importers
+of Fenchurch Street."
+
+"Thank you. You have made your statement very clearly. You will
+leave the papers here, and remember the advice which I have given
+you. Let the whole incident be a sealed book, and do not allow it
+to affect your life."
+
+"You are very kind, Mr. Holmes, but I cannot do that. I shall be
+true to Hosmer. He shall find me ready when he comes back."
+
+For all the preposterous hat and the vacuous face, there was
+something noble in the simple faith of our visitor which
+compelled our respect. She laid her little bundle of papers upon
+the table and went her way, with a promise to come again whenever
+she might be summoned.
+
+Sherlock Holmes sat silent for a few minutes with his fingertips
+still pressed together, his legs stretched out in front of him,
+and his gaze directed upward to the ceiling. Then he took down
+from the rack the old and oily clay pipe, which was to him as a
+counsellor, and, having lit it, he leaned back in his chair, with
+the thick blue cloud-wreaths spinning up from him, and a look of
+infinite languor in his face.
+
+"Quite an interesting study, that maiden," he observed. "I found
+her more interesting than her little problem, which, by the way,
+is rather a trite one. You will find parallel cases, if you
+consult my index, in Andover in '77, and there was something of
+the sort at The Hague last year. Old as is the idea, however,
+there were one or two details which were new to me. But the
+maiden herself was most instructive."
+
+"You appeared to read a good deal upon her which was quite
+invisible to me," I remarked.
+
+"Not invisible but unnoticed, Watson. You did not know where to
+look, and so you missed all that was important. I can never bring
+you to realise the importance of sleeves, the suggestiveness of
+thumb-nails, or the great issues that may hang from a boot-lace.
+Now, what did you gather from that woman's appearance? Describe
+it."
+
+"Well, she had a slate-coloured, broad-brimmed straw hat, with a
+feather of a brickish red. Her jacket was black, with black beads
+sewn upon it, and a fringe of little black jet ornaments. Her
+dress was brown, rather darker than coffee colour, with a little
+purple plush at the neck and sleeves. Her gloves were greyish and
+were worn through at the right forefinger. Her boots I didn't
+observe. She had small round, hanging gold earrings, and a
+general air of being fairly well-to-do in a vulgar, comfortable,
+easy-going way."
+
+Sherlock Holmes clapped his hands softly together and chuckled.
+
+"'Pon my word, Watson, you are coming along wonderfully. You have
+really done very well indeed. It is true that you have missed
+everything of importance, but you have hit upon the method, and
+you have a quick eye for colour. Never trust to general
+impressions, my boy, but concentrate yourself upon details. My
+first glance is always at a woman's sleeve. In a man it is
+perhaps better first to take the knee of the trouser. As you
+observe, this woman had plush upon her sleeves, which is a most
+useful material for showing traces. The double line a little
+above the wrist, where the typewritist presses against the table,
+was beautifully defined. The sewing-machine, of the hand type,
+leaves a similar mark, but only on the left arm, and on the side
+of it farthest from the thumb, instead of being right across the
+broadest part, as this was. I then glanced at her face, and,
+observing the dint of a pince-nez at either side of her nose, I
+ventured a remark upon short sight and typewriting, which seemed
+to surprise her."
+
+"It surprised me."
+
+"But, surely, it was obvious. I was then much surprised and
+interested on glancing down to observe that, though the boots
+which she was wearing were not unlike each other, they were
+really odd ones; the one having a slightly decorated toe-cap, and
+the other a plain one. One was buttoned only in the two lower
+buttons out of five, and the other at the first, third, and
+fifth. Now, when you see that a young lady, otherwise neatly
+dressed, has come away from home with odd boots, half-buttoned,
+it is no great deduction to say that she came away in a hurry."
+
+"And what else?" I asked, keenly interested, as I always was, by
+my friend's incisive reasoning.
+
+"I noted, in passing, that she had written a note before leaving
+home but after being fully dressed. You observed that her right
+glove was torn at the forefinger, but you did not apparently see
+that both glove and finger were stained with violet ink. She had
+written in a hurry and dipped her pen too deep. It must have been
+this morning, or the mark would not remain clear upon the finger.
+All this is amusing, though rather elementary, but I must go back
+to business, Watson. Would you mind reading me the advertised
+description of Mr. Hosmer Angel?"
+
+I held the little printed slip to the light.
+
+"Missing," it said, "on the morning of the fourteenth, a gentleman
+named Hosmer Angel. About five ft. seven in. in height;
+strongly built, sallow complexion, black hair, a little bald in
+the centre, bushy, black side-whiskers and moustache; tinted
+glasses, slight infirmity of speech. Was dressed, when last seen,
+in black frock-coat faced with silk, black waistcoat, gold Albert
+chain, and grey Harris tweed trousers, with brown gaiters over
+elastic-sided boots. Known to have been employed in an office in
+Leadenhall Street. Anybody bringing--"
+
+"That will do," said Holmes. "As to the letters," he continued,
+glancing over them, "they are very commonplace. Absolutely no
+clue in them to Mr. Angel, save that he quotes Balzac once. There
+is one remarkable point, however, which will no doubt strike
+you."
+
+"They are typewritten," I remarked.
+
+"Not only that, but the signature is typewritten. Look at the
+neat little 'Hosmer Angel' at the bottom. There is a date, you
+see, but no superscription except Leadenhall Street, which is
+rather vague. The point about the signature is very suggestive--in
+fact, we may call it conclusive."
+
+"Of what?"
+
+"My dear fellow, is it possible you do not see how strongly it
+bears upon the case?"
+
+"I cannot say that I do unless it were that he wished to be able
+to deny his signature if an action for breach of promise were
+instituted."
+
+"No, that was not the point. However, I shall write two letters,
+which should settle the matter. One is to a firm in the City, the
+other is to the young lady's stepfather, Mr. Windibank, asking
+him whether he could meet us here at six o'clock tomorrow
+evening. It is just as well that we should do business with the
+male relatives. And now, Doctor, we can do nothing until the
+answers to those letters come, so we may put our little problem
+upon the shelf for the interim."
+
+I had had so many reasons to believe in my friend's subtle powers
+of reasoning and extraordinary energy in action that I felt that
+he must have some solid grounds for the assured and easy
+demeanour with which he treated the singular mystery which he had
+been called upon to fathom. Once only had I known him to fail, in
+the case of the King of Bohemia and of the Irene Adler
+photograph; but when I looked back to the weird business of the
+Sign of Four, and the extraordinary circumstances connected with
+the Study in Scarlet, I felt that it would be a strange tangle
+indeed which he could not unravel.
+
+I left him then, still puffing at his black clay pipe, with the
+conviction that when I came again on the next evening I would
+find that he held in his hands all the clues which would lead up
+to the identity of the disappearing bridegroom of Miss Mary
+Sutherland.
+
+A professional case of great gravity was engaging my own
+attention at the time, and the whole of next day I was busy at
+the bedside of the sufferer. It was not until close upon six
+o'clock that I found myself free and was able to spring into a
+hansom and drive to Baker Street, half afraid that I might be too
+late to assist at the dénouement of the little mystery. I found
+Sherlock Holmes alone, however, half asleep, with his long, thin
+form curled up in the recesses of his armchair. A formidable
+array of bottles and test-tubes, with the pungent cleanly smell
+of hydrochloric acid, told me that he had spent his day in the
+chemical work which was so dear to him.
+
+"Well, have you solved it?" I asked as I entered.
+
+"Yes. It was the bisulphate of baryta."
+
+"No, no, the mystery!" I cried.
+
+"Oh, that! I thought of the salt that I have been working upon.
+There was never any mystery in the matter, though, as I said
+yesterday, some of the details are of interest. The only drawback
+is that there is no law, I fear, that can touch the scoundrel."
+
+"Who was he, then, and what was his object in deserting Miss
+Sutherland?"
+
+The question was hardly out of my mouth, and Holmes had not yet
+opened his lips to reply, when we heard a heavy footfall in the
+passage and a tap at the door.
+
+"This is the girl's stepfather, Mr. James Windibank," said
+Holmes. "He has written to me to say that he would be here at
+six. Come in!"
+
+The man who entered was a sturdy, middle-sized fellow, some
+thirty years of age, clean-shaven, and sallow-skinned, with a
+bland, insinuating manner, and a pair of wonderfully sharp and
+penetrating grey eyes. He shot a questioning glance at each of
+us, placed his shiny top-hat upon the sideboard, and with a
+slight bow sidled down into the nearest chair.
+
+"Good-evening, Mr. James Windibank," said Holmes. "I think that
+this typewritten letter is from you, in which you made an
+appointment with me for six o'clock?"
+
+"Yes, sir. I am afraid that I am a little late, but I am not
+quite my own master, you know. I am sorry that Miss Sutherland
+has troubled you about this little matter, for I think it is far
+better not to wash linen of the sort in public. It was quite
+against my wishes that she came, but she is a very excitable,
+impulsive girl, as you may have noticed, and she is not easily
+controlled when she has made up her mind on a point. Of course, I
+did not mind you so much, as you are not connected with the
+official police, but it is not pleasant to have a family
+misfortune like this noised abroad. Besides, it is a useless
+expense, for how could you possibly find this Hosmer Angel?"
+
+"On the contrary," said Holmes quietly; "I have every reason to
+believe that I will succeed in discovering Mr. Hosmer Angel."
+
+Mr. Windibank gave a violent start and dropped his gloves. "I am
+delighted to hear it," he said.
+
+"It is a curious thing," remarked Holmes, "that a typewriter has
+really quite as much individuality as a man's handwriting. Unless
+they are quite new, no two of them write exactly alike. Some
+letters get more worn than others, and some wear only on one
+side. Now, you remark in this note of yours, Mr. Windibank, that
+in every case there is some little slurring over of the 'e,' and
+a slight defect in the tail of the 'r.' There are fourteen other
+characteristics, but those are the more obvious."
+
+"We do all our correspondence with this machine at the office,
+and no doubt it is a little worn," our visitor answered, glancing
+keenly at Holmes with his bright little eyes.
+
+"And now I will show you what is really a very interesting study,
+Mr. Windibank," Holmes continued. "I think of writing another
+little monograph some of these days on the typewriter and its
+relation to crime. It is a subject to which I have devoted some
+little attention. I have here four letters which purport to come
+from the missing man. They are all typewritten. In each case, not
+only are the 'e's' slurred and the 'r's' tailless, but you will
+observe, if you care to use my magnifying lens, that the fourteen
+other characteristics to which I have alluded are there as well."
+
+Mr. Windibank sprang out of his chair and picked up his hat. "I
+cannot waste time over this sort of fantastic talk, Mr. Holmes,"
+he said. "If you can catch the man, catch him, and let me know
+when you have done it."
+
+"Certainly," said Holmes, stepping over and turning the key in
+the door. "I let you know, then, that I have caught him!"
+
+"What! where?" shouted Mr. Windibank, turning white to his lips
+and glancing about him like a rat in a trap.
+
+"Oh, it won't do--really it won't," said Holmes suavely. "There
+is no possible getting out of it, Mr. Windibank. It is quite too
+transparent, and it was a very bad compliment when you said that
+it was impossible for me to solve so simple a question. That's
+right! Sit down and let us talk it over."
+
+Our visitor collapsed into a chair, with a ghastly face and a
+glitter of moisture on his brow. "It--it's not actionable," he
+stammered.
+
+"I am very much afraid that it is not. But between ourselves,
+Windibank, it was as cruel and selfish and heartless a trick in a
+petty way as ever came before me. Now, let me just run over the
+course of events, and you will contradict me if I go wrong."
+
+The man sat huddled up in his chair, with his head sunk upon his
+breast, like one who is utterly crushed. Holmes stuck his feet up
+on the corner of the mantelpiece and, leaning back with his hands
+in his pockets, began talking, rather to himself, as it seemed,
+than to us.
+
+"The man married a woman very much older than himself for her
+money," said he, "and he enjoyed the use of the money of the
+daughter as long as she lived with them. It was a considerable
+sum, for people in their position, and the loss of it would have
+made a serious difference. It was worth an effort to preserve it.
+The daughter was of a good, amiable disposition, but affectionate
+and warm-hearted in her ways, so that it was evident that with
+her fair personal advantages, and her little income, she would
+not be allowed to remain single long. Now her marriage would
+mean, of course, the loss of a hundred a year, so what does her
+stepfather do to prevent it? He takes the obvious course of
+keeping her at home and forbidding her to seek the company of
+people of her own age. But soon he found that that would not
+answer forever. She became restive, insisted upon her rights, and
+finally announced her positive intention of going to a certain
+ball. What does her clever stepfather do then? He conceives an
+idea more creditable to his head than to his heart. With the
+connivance and assistance of his wife he disguised himself,
+covered those keen eyes with tinted glasses, masked the face with
+a moustache and a pair of bushy whiskers, sunk that clear voice
+into an insinuating whisper, and doubly secure on account of the
+girl's short sight, he appears as Mr. Hosmer Angel, and keeps off
+other lovers by making love himself."
+
+"It was only a joke at first," groaned our visitor. "We never
+thought that she would have been so carried away."
+
+"Very likely not. However that may be, the young lady was very
+decidedly carried away, and, having quite made up her mind that
+her stepfather was in France, the suspicion of treachery never
+for an instant entered her mind. She was flattered by the
+gentleman's attentions, and the effect was increased by the
+loudly expressed admiration of her mother. Then Mr. Angel began
+to call, for it was obvious that the matter should be pushed as
+far as it would go if a real effect were to be produced. There
+were meetings, and an engagement, which would finally secure the
+girl's affections from turning towards anyone else. But the
+deception could not be kept up forever. These pretended journeys
+to France were rather cumbrous. The thing to do was clearly to
+bring the business to an end in such a dramatic manner that it
+would leave a permanent impression upon the young lady's mind and
+prevent her from looking upon any other suitor for some time to
+come. Hence those vows of fidelity exacted upon a Testament, and
+hence also the allusions to a possibility of something happening
+on the very morning of the wedding. James Windibank wished Miss
+Sutherland to be so bound to Hosmer Angel, and so uncertain as to
+his fate, that for ten years to come, at any rate, she would not
+listen to another man. As far as the church door he brought her,
+and then, as he could go no farther, he conveniently vanished
+away by the old trick of stepping in at one door of a
+four-wheeler and out at the other. I think that was the chain of
+events, Mr. Windibank!"
+
+Our visitor had recovered something of his assurance while Holmes
+had been talking, and he rose from his chair now with a cold
+sneer upon his pale face.
+
+"It may be so, or it may not, Mr. Holmes," said he, "but if you
+are so very sharp you ought to be sharp enough to know that it is
+you who are breaking the law now, and not me. I have done nothing
+actionable from the first, but as long as you keep that door
+locked you lay yourself open to an action for assault and illegal
+constraint."
+
+"The law cannot, as you say, touch you," said Holmes, unlocking
+and throwing open the door, "yet there never was a man who
+deserved punishment more. If the young lady has a brother or a
+friend, he ought to lay a whip across your shoulders. By Jove!"
+he continued, flushing up at the sight of the bitter sneer upon
+the man's face, "it is not part of my duties to my client, but
+here's a hunting crop handy, and I think I shall just treat
+myself to--" He took two swift steps to the whip, but before he
+could grasp it there was a wild clatter of steps upon the stairs,
+the heavy hall door banged, and from the window we could see Mr.
+James Windibank running at the top of his speed down the road.
+
+"There's a cold-blooded scoundrel!" said Holmes, laughing, as he
+threw himself down into his chair once more. "That fellow will
+rise from crime to crime until he does something very bad, and
+ends on a gallows. The case has, in some respects, been not
+entirely devoid of interest."
+
+"I cannot now entirely see all the steps of your reasoning," I
+remarked.
+
+"Well, of course it was obvious from the first that this Mr.
+Hosmer Angel must have some strong object for his curious
+conduct, and it was equally clear that the only man who really
+profited by the incident, as far as we could see, was the
+stepfather. Then the fact that the two men were never together,
+but that the one always appeared when the other was away, was
+suggestive. So were the tinted spectacles and the curious voice,
+which both hinted at a disguise, as did the bushy whiskers. My
+suspicions were all confirmed by his peculiar action in
+typewriting his signature, which, of course, inferred that his
+handwriting was so familiar to her that she would recognise even
+the smallest sample of it. You see all these isolated facts,
+together with many minor ones, all pointed in the same
+direction."
+
+"And how did you verify them?"
+
+"Having once spotted my man, it was easy to get corroboration. I
+knew the firm for which this man worked. Having taken the printed
+description. I eliminated everything from it which could be the
+result of a disguise--the whiskers, the glasses, the voice, and I
+sent it to the firm, with a request that they would inform me
+whether it answered to the description of any of their
+travellers. I had already noticed the peculiarities of the
+typewriter, and I wrote to the man himself at his business
+address asking him if he would come here. As I expected, his
+reply was typewritten and revealed the same trivial but
+characteristic defects. The same post brought me a letter from
+Westhouse & Marbank, of Fenchurch Street, to say that the
+description tallied in every respect with that of their employé,
+James Windibank. Voilà tout!"
+
+"And Miss Sutherland?"
+
+"If I tell her she will not believe me. You may remember the old
+Persian saying, 'There is danger for him who taketh the tiger
+cub, and danger also for whoso snatches a delusion from a woman.'
+There is as much sense in Hafiz as in Horace, and as much
+knowledge of the world."
+
+
+
+ADVENTURE IV. THE BOSCOMBE VALLEY MYSTERY
+
+We were seated at breakfast one morning, my wife and I, when the
+maid brought in a telegram. It was from Sherlock Holmes and ran
+in this way:
+
+"Have you a couple of days to spare? Have just been wired for from
+the west of England in connection with Boscombe Valley tragedy.
+Shall be glad if you will come with me. Air and scenery perfect.
+Leave Paddington by the 11:15."
+
+"What do you say, dear?" said my wife, looking across at me.
+"Will you go?"
+
+"I really don't know what to say. I have a fairly long list at
+present."
+
+"Oh, Anstruther would do your work for you. You have been looking
+a little pale lately. I think that the change would do you good,
+and you are always so interested in Mr. Sherlock Holmes' cases."
+
+"I should be ungrateful if I were not, seeing what I gained
+through one of them," I answered. "But if I am to go, I must pack
+at once, for I have only half an hour."
+
+My experience of camp life in Afghanistan had at least had the
+effect of making me a prompt and ready traveller. My wants were
+few and simple, so that in less than the time stated I was in a
+cab with my valise, rattling away to Paddington Station. Sherlock
+Holmes was pacing up and down the platform, his tall, gaunt
+figure made even gaunter and taller by his long grey
+travelling-cloak and close-fitting cloth cap.
+
+"It is really very good of you to come, Watson," said he. "It
+makes a considerable difference to me, having someone with me on
+whom I can thoroughly rely. Local aid is always either worthless
+or else biassed. If you will keep the two corner seats I shall
+get the tickets."
+
+We had the carriage to ourselves save for an immense litter of
+papers which Holmes had brought with him. Among these he rummaged
+and read, with intervals of note-taking and of meditation, until
+we were past Reading. Then he suddenly rolled them all into a
+gigantic ball and tossed them up onto the rack.
+
+"Have you heard anything of the case?" he asked.
+
+"Not a word. I have not seen a paper for some days."
+
+"The London press has not had very full accounts. I have just
+been looking through all the recent papers in order to master the
+particulars. It seems, from what I gather, to be one of those
+simple cases which are so extremely difficult."
+
+"That sounds a little paradoxical."
+
+"But it is profoundly true. Singularity is almost invariably a
+clue. The more featureless and commonplace a crime is, the more
+difficult it is to bring it home. In this case, however, they
+have established a very serious case against the son of the
+murdered man."
+
+"It is a murder, then?"
+
+"Well, it is conjectured to be so. I shall take nothing for
+granted until I have the opportunity of looking personally into
+it. I will explain the state of things to you, as far as I have
+been able to understand it, in a very few words.
+
+"Boscombe Valley is a country district not very far from Ross, in
+Herefordshire. The largest landed proprietor in that part is a
+Mr. John Turner, who made his money in Australia and returned
+some years ago to the old country. One of the farms which he
+held, that of Hatherley, was let to Mr. Charles McCarthy, who was
+also an ex-Australian. The men had known each other in the
+colonies, so that it was not unnatural that when they came to
+settle down they should do so as near each other as possible.
+Turner was apparently the richer man, so McCarthy became his
+tenant but still remained, it seems, upon terms of perfect
+equality, as they were frequently together. McCarthy had one son,
+a lad of eighteen, and Turner had an only daughter of the same
+age, but neither of them had wives living. They appear to have
+avoided the society of the neighbouring English families and to
+have led retired lives, though both the McCarthys were fond of
+sport and were frequently seen at the race-meetings of the
+neighbourhood. McCarthy kept two servants--a man and a girl.
+Turner had a considerable household, some half-dozen at the
+least. That is as much as I have been able to gather about the
+families. Now for the facts.
+
+"On June 3rd, that is, on Monday last, McCarthy left his house at
+Hatherley about three in the afternoon and walked down to the
+Boscombe Pool, which is a small lake formed by the spreading out
+of the stream which runs down the Boscombe Valley. He had been
+out with his serving-man in the morning at Ross, and he had told
+the man that he must hurry, as he had an appointment of
+importance to keep at three. From that appointment he never came
+back alive.
+
+"From Hatherley Farm-house to the Boscombe Pool is a quarter of a
+mile, and two people saw him as he passed over this ground. One
+was an old woman, whose name is not mentioned, and the other was
+William Crowder, a game-keeper in the employ of Mr. Turner. Both
+these witnesses depose that Mr. McCarthy was walking alone. The
+game-keeper adds that within a few minutes of his seeing Mr.
+McCarthy pass he had seen his son, Mr. James McCarthy, going the
+same way with a gun under his arm. To the best of his belief, the
+father was actually in sight at the time, and the son was
+following him. He thought no more of the matter until he heard in
+the evening of the tragedy that had occurred.
+
+"The two McCarthys were seen after the time when William Crowder,
+the game-keeper, lost sight of them. The Boscombe Pool is thickly
+wooded round, with just a fringe of grass and of reeds round the
+edge. A girl of fourteen, Patience Moran, who is the daughter of
+the lodge-keeper of the Boscombe Valley estate, was in one of the
+woods picking flowers. She states that while she was there she
+saw, at the border of the wood and close by the lake, Mr.
+McCarthy and his son, and that they appeared to be having a
+violent quarrel. She heard Mr. McCarthy the elder using very
+strong language to his son, and she saw the latter raise up his
+hand as if to strike his father. She was so frightened by their
+violence that she ran away and told her mother when she reached
+home that she had left the two McCarthys quarrelling near
+Boscombe Pool, and that she was afraid that they were going to
+fight. She had hardly said the words when young Mr. McCarthy came
+running up to the lodge to say that he had found his father dead
+in the wood, and to ask for the help of the lodge-keeper. He was
+much excited, without either his gun or his hat, and his right
+hand and sleeve were observed to be stained with fresh blood. On
+following him they found the dead body stretched out upon the
+grass beside the pool. The head had been beaten in by repeated
+blows of some heavy and blunt weapon. The injuries were such as
+might very well have been inflicted by the butt-end of his son's
+gun, which was found lying on the grass within a few paces of the
+body. Under these circumstances the young man was instantly
+arrested, and a verdict of 'wilful murder' having been returned
+at the inquest on Tuesday, he was on Wednesday brought before the
+magistrates at Ross, who have referred the case to the next
+Assizes. Those are the main facts of the case as they came out
+before the coroner and the police-court."
+
+"I could hardly imagine a more damning case," I remarked. "If
+ever circumstantial evidence pointed to a criminal it does so
+here."
+
+"Circumstantial evidence is a very tricky thing," answered Holmes
+thoughtfully. "It may seem to point very straight to one thing,
+but if you shift your own point of view a little, you may find it
+pointing in an equally uncompromising manner to something
+entirely different. It must be confessed, however, that the case
+looks exceedingly grave against the young man, and it is very
+possible that he is indeed the culprit. There are several people
+in the neighbourhood, however, and among them Miss Turner, the
+daughter of the neighbouring landowner, who believe in his
+innocence, and who have retained Lestrade, whom you may recollect
+in connection with the Study in Scarlet, to work out the case in
+his interest. Lestrade, being rather puzzled, has referred the
+case to me, and hence it is that two middle-aged gentlemen are
+flying westward at fifty miles an hour instead of quietly
+digesting their breakfasts at home."
+
+"I am afraid," said I, "that the facts are so obvious that you
+will find little credit to be gained out of this case."
+
+"There is nothing more deceptive than an obvious fact," he
+answered, laughing. "Besides, we may chance to hit upon some
+other obvious facts which may have been by no means obvious to
+Mr. Lestrade. You know me too well to think that I am boasting
+when I say that I shall either confirm or destroy his theory by
+means which he is quite incapable of employing, or even of
+understanding. To take the first example to hand, I very clearly
+perceive that in your bedroom the window is upon the right-hand
+side, and yet I question whether Mr. Lestrade would have noted
+even so self-evident a thing as that."
+
+"How on earth--"
+
+"My dear fellow, I know you well. I know the military neatness
+which characterises you. You shave every morning, and in this
+season you shave by the sunlight; but since your shaving is less
+and less complete as we get farther back on the left side, until
+it becomes positively slovenly as we get round the angle of the
+jaw, it is surely very clear that that side is less illuminated
+than the other. I could not imagine a man of your habits looking
+at himself in an equal light and being satisfied with such a
+result. I only quote this as a trivial example of observation and
+inference. Therein lies my métier, and it is just possible that
+it may be of some service in the investigation which lies before
+us. There are one or two minor points which were brought out in
+the inquest, and which are worth considering."
+
+"What are they?"
+
+"It appears that his arrest did not take place at once, but after
+the return to Hatherley Farm. On the inspector of constabulary
+informing him that he was a prisoner, he remarked that he was not
+surprised to hear it, and that it was no more than his deserts.
+This observation of his had the natural effect of removing any
+traces of doubt which might have remained in the minds of the
+coroner's jury."
+
+"It was a confession," I ejaculated.
+
+"No, for it was followed by a protestation of innocence."
+
+"Coming on the top of such a damning series of events, it was at
+least a most suspicious remark."
+
+"On the contrary," said Holmes, "it is the brightest rift which I
+can at present see in the clouds. However innocent he might be,
+he could not be such an absolute imbecile as not to see that the
+circumstances were very black against him. Had he appeared
+surprised at his own arrest, or feigned indignation at it, I
+should have looked upon it as highly suspicious, because such
+surprise or anger would not be natural under the circumstances,
+and yet might appear to be the best policy to a scheming man. His
+frank acceptance of the situation marks him as either an innocent
+man, or else as a man of considerable self-restraint and
+firmness. As to his remark about his deserts, it was also not
+unnatural if you consider that he stood beside the dead body of
+his father, and that there is no doubt that he had that very day
+so far forgotten his filial duty as to bandy words with him, and
+even, according to the little girl whose evidence is so
+important, to raise his hand as if to strike him. The
+self-reproach and contrition which are displayed in his remark
+appear to me to be the signs of a healthy mind rather than of a
+guilty one."
+
+I shook my head. "Many men have been hanged on far slighter
+evidence," I remarked.
+
+"So they have. And many men have been wrongfully hanged."
+
+"What is the young man's own account of the matter?"
+
+"It is, I am afraid, not very encouraging to his supporters,
+though there are one or two points in it which are suggestive.
+You will find it here, and may read it for yourself."
+
+He picked out from his bundle a copy of the local Herefordshire
+paper, and having turned down the sheet he pointed out the
+paragraph in which the unfortunate young man had given his own
+statement of what had occurred. I settled myself down in the
+corner of the carriage and read it very carefully. It ran in this
+way:
+
+"Mr. James McCarthy, the only son of the deceased, was then called
+and gave evidence as follows: 'I had been away from home for
+three days at Bristol, and had only just returned upon the
+morning of last Monday, the 3rd. My father was absent from home at
+the time of my arrival, and I was informed by the maid that he
+had driven over to Ross with John Cobb, the groom. Shortly after
+my return I heard the wheels of his trap in the yard, and,
+looking out of my window, I saw him get out and walk rapidly out
+of the yard, though I was not aware in which direction he was
+going. I then took my gun and strolled out in the direction of
+the Boscombe Pool, with the intention of visiting the rabbit
+warren which is upon the other side. On my way I saw William
+Crowder, the game-keeper, as he had stated in his evidence; but
+he is mistaken in thinking that I was following my father. I had
+no idea that he was in front of me. When about a hundred yards
+from the pool I heard a cry of "Cooee!" which was a usual signal
+between my father and myself. I then hurried forward, and found
+him standing by the pool. He appeared to be much surprised at
+seeing me and asked me rather roughly what I was doing there. A
+conversation ensued which led to high words and almost to blows,
+for my father was a man of a very violent temper. Seeing that his
+passion was becoming ungovernable, I left him and returned
+towards Hatherley Farm. I had not gone more than 150 yards,
+however, when I heard a hideous outcry behind me, which caused me
+to run back again. I found my father expiring upon the ground,
+with his head terribly injured. I dropped my gun and held him in
+my arms, but he almost instantly expired. I knelt beside him for
+some minutes, and then made my way to Mr. Turner's lodge-keeper,
+his house being the nearest, to ask for assistance. I saw no one
+near my father when I returned, and I have no idea how he came by
+his injuries. He was not a popular man, being somewhat cold and
+forbidding in his manners, but he had, as far as I know, no
+active enemies. I know nothing further of the matter.'
+
+"The Coroner: Did your father make any statement to you before
+he died?
+
+"Witness: He mumbled a few words, but I could only catch some
+allusion to a rat.
+
+"The Coroner: What did you understand by that?
+
+"Witness: It conveyed no meaning to me. I thought that he was
+delirious.
+
+"The Coroner: What was the point upon which you and your father
+had this final quarrel?
+
+"Witness: I should prefer not to answer.
+
+"The Coroner: I am afraid that I must press it.
+
+"Witness: It is really impossible for me to tell you. I can
+assure you that it has nothing to do with the sad tragedy which
+followed.
+
+"The Coroner: That is for the court to decide. I need not point
+out to you that your refusal to answer will prejudice your case
+considerably in any future proceedings which may arise.
+
+"Witness: I must still refuse.
+
+"The Coroner: I understand that the cry of 'Cooee' was a common
+signal between you and your father?
+
+"Witness: It was.
+
+"The Coroner: How was it, then, that he uttered it before he saw
+you, and before he even knew that you had returned from Bristol?
+
+"Witness (with considerable confusion): I do not know.
+
+"A Juryman: Did you see nothing which aroused your suspicions
+when you returned on hearing the cry and found your father
+fatally injured?
+
+"Witness: Nothing definite.
+
+"The Coroner: What do you mean?
+
+"Witness: I was so disturbed and excited as I rushed out into
+the open, that I could think of nothing except of my father. Yet
+I have a vague impression that as I ran forward something lay
+upon the ground to the left of me. It seemed to me to be
+something grey in colour, a coat of some sort, or a plaid perhaps.
+When I rose from my father I looked round for it, but it was
+gone.
+
+"'Do you mean that it disappeared before you went for help?'
+
+"'Yes, it was gone.'
+
+"'You cannot say what it was?'
+
+"'No, I had a feeling something was there.'
+
+"'How far from the body?'
+
+"'A dozen yards or so.'
+
+"'And how far from the edge of the wood?'
+
+"'About the same.'
+
+"'Then if it was removed it was while you were within a dozen
+yards of it?'
+
+"'Yes, but with my back towards it.'
+
+"This concluded the examination of the witness."
+
+"I see," said I as I glanced down the column, "that the coroner
+in his concluding remarks was rather severe upon young McCarthy.
+He calls attention, and with reason, to the discrepancy about his
+father having signalled to him before seeing him, also to his
+refusal to give details of his conversation with his father, and
+his singular account of his father's dying words. They are all,
+as he remarks, very much against the son."
+
+Holmes laughed softly to himself and stretched himself out upon
+the cushioned seat. "Both you and the coroner have been at some
+pains," said he, "to single out the very strongest points in the
+young man's favour. Don't you see that you alternately give him
+credit for having too much imagination and too little? Too
+little, if he could not invent a cause of quarrel which would
+give him the sympathy of the jury; too much, if he evolved from
+his own inner consciousness anything so outré as a dying
+reference to a rat, and the incident of the vanishing cloth. No,
+sir, I shall approach this case from the point of view that what
+this young man says is true, and we shall see whither that
+hypothesis will lead us. And now here is my pocket Petrarch, and
+not another word shall I say of this case until we are on the
+scene of action. We lunch at Swindon, and I see that we shall be
+there in twenty minutes."
+
+It was nearly four o'clock when we at last, after passing through
+the beautiful Stroud Valley, and over the broad gleaming Severn,
+found ourselves at the pretty little country-town of Ross. A
+lean, ferret-like man, furtive and sly-looking, was waiting for
+us upon the platform. In spite of the light brown dustcoat and
+leather-leggings which he wore in deference to his rustic
+surroundings, I had no difficulty in recognising Lestrade, of
+Scotland Yard. With him we drove to the Hereford Arms where a
+room had already been engaged for us.
+
+"I have ordered a carriage," said Lestrade as we sat over a cup
+of tea. "I knew your energetic nature, and that you would not be
+happy until you had been on the scene of the crime."
+
+"It was very nice and complimentary of you," Holmes answered. "It
+is entirely a question of barometric pressure."
+
+Lestrade looked startled. "I do not quite follow," he said.
+
+"How is the glass? Twenty-nine, I see. No wind, and not a cloud
+in the sky. I have a caseful of cigarettes here which need
+smoking, and the sofa is very much superior to the usual country
+hotel abomination. I do not think that it is probable that I
+shall use the carriage to-night."
+
+Lestrade laughed indulgently. "You have, no doubt, already formed
+your conclusions from the newspapers," he said. "The case is as
+plain as a pikestaff, and the more one goes into it the plainer
+it becomes. Still, of course, one can't refuse a lady, and such a
+very positive one, too. She has heard of you, and would have your
+opinion, though I repeatedly told her that there was nothing
+which you could do which I had not already done. Why, bless my
+soul! here is her carriage at the door."
+
+He had hardly spoken before there rushed into the room one of the
+most lovely young women that I have ever seen in my life. Her
+violet eyes shining, her lips parted, a pink flush upon her
+cheeks, all thought of her natural reserve lost in her
+overpowering excitement and concern.
+
+"Oh, Mr. Sherlock Holmes!" she cried, glancing from one to the
+other of us, and finally, with a woman's quick intuition,
+fastening upon my companion, "I am so glad that you have come. I
+have driven down to tell you so. I know that James didn't do it.
+I know it, and I want you to start upon your work knowing it,
+too. Never let yourself doubt upon that point. We have known each
+other since we were little children, and I know his faults as no
+one else does; but he is too tender-hearted to hurt a fly. Such a
+charge is absurd to anyone who really knows him."
+
+"I hope we may clear him, Miss Turner," said Sherlock Holmes.
+"You may rely upon my doing all that I can."
+
+"But you have read the evidence. You have formed some conclusion?
+Do you not see some loophole, some flaw? Do you not yourself
+think that he is innocent?"
+
+"I think that it is very probable."
+
+"There, now!" she cried, throwing back her head and looking
+defiantly at Lestrade. "You hear! He gives me hopes."
+
+Lestrade shrugged his shoulders. "I am afraid that my colleague
+has been a little quick in forming his conclusions," he said.
+
+"But he is right. Oh! I know that he is right. James never did
+it. And about his quarrel with his father, I am sure that the
+reason why he would not speak about it to the coroner was because
+I was concerned in it."
+
+"In what way?" asked Holmes.
+
+"It is no time for me to hide anything. James and his father had
+many disagreements about me. Mr. McCarthy was very anxious that
+there should be a marriage between us. James and I have always
+loved each other as brother and sister; but of course he is young
+and has seen very little of life yet, and--and--well, he
+naturally did not wish to do anything like that yet. So there
+were quarrels, and this, I am sure, was one of them."
+
+"And your father?" asked Holmes. "Was he in favour of such a
+union?"
+
+"No, he was averse to it also. No one but Mr. McCarthy was in
+favour of it." A quick blush passed over her fresh young face as
+Holmes shot one of his keen, questioning glances at her.
+
+"Thank you for this information," said he. "May I see your father
+if I call to-morrow?"
+
+"I am afraid the doctor won't allow it."
+
+"The doctor?"
+
+"Yes, have you not heard? Poor father has never been strong for
+years back, but this has broken him down completely. He has taken
+to his bed, and Dr. Willows says that he is a wreck and that his
+nervous system is shattered. Mr. McCarthy was the only man alive
+who had known dad in the old days in Victoria."
+
+"Ha! In Victoria! That is important."
+
+"Yes, at the mines."
+
+"Quite so; at the gold-mines, where, as I understand, Mr. Turner
+made his money."
+
+"Yes, certainly."
+
+"Thank you, Miss Turner. You have been of material assistance to
+me."
+
+"You will tell me if you have any news to-morrow. No doubt you
+will go to the prison to see James. Oh, if you do, Mr. Holmes, do
+tell him that I know him to be innocent."
+
+"I will, Miss Turner."
+
+"I must go home now, for dad is very ill, and he misses me so if
+I leave him. Good-bye, and God help you in your undertaking." She
+hurried from the room as impulsively as she had entered, and we
+heard the wheels of her carriage rattle off down the street.
+
+"I am ashamed of you, Holmes," said Lestrade with dignity after a
+few minutes' silence. "Why should you raise up hopes which you
+are bound to disappoint? I am not over-tender of heart, but I
+call it cruel."
+
+"I think that I see my way to clearing James McCarthy," said
+Holmes. "Have you an order to see him in prison?"
+
+"Yes, but only for you and me."
+
+"Then I shall reconsider my resolution about going out. We have
+still time to take a train to Hereford and see him to-night?"
+
+"Ample."
+
+"Then let us do so. Watson, I fear that you will find it very
+slow, but I shall only be away a couple of hours."
+
+I walked down to the station with them, and then wandered through
+the streets of the little town, finally returning to the hotel,
+where I lay upon the sofa and tried to interest myself in a
+yellow-backed novel. The puny plot of the story was so thin,
+however, when compared to the deep mystery through which we were
+groping, and I found my attention wander so continually from the
+action to the fact, that I at last flung it across the room and
+gave myself up entirely to a consideration of the events of the
+day. Supposing that this unhappy young man's story were
+absolutely true, then what hellish thing, what absolutely
+unforeseen and extraordinary calamity could have occurred between
+the time when he parted from his father, and the moment when,
+drawn back by his screams, he rushed into the glade? It was
+something terrible and deadly. What could it be? Might not the
+nature of the injuries reveal something to my medical instincts?
+I rang the bell and called for the weekly county paper, which
+contained a verbatim account of the inquest. In the surgeon's
+deposition it was stated that the posterior third of the left
+parietal bone and the left half of the occipital bone had been
+shattered by a heavy blow from a blunt weapon. I marked the spot
+upon my own head. Clearly such a blow must have been struck from
+behind. That was to some extent in favour of the accused, as when
+seen quarrelling he was face to face with his father. Still, it
+did not go for very much, for the older man might have turned his
+back before the blow fell. Still, it might be worth while to call
+Holmes' attention to it. Then there was the peculiar dying
+reference to a rat. What could that mean? It could not be
+delirium. A man dying from a sudden blow does not commonly become
+delirious. No, it was more likely to be an attempt to explain how
+he met his fate. But what could it indicate? I cudgelled my
+brains to find some possible explanation. And then the incident
+of the grey cloth seen by young McCarthy. If that were true the
+murderer must have dropped some part of his dress, presumably his
+overcoat, in his flight, and must have had the hardihood to
+return and to carry it away at the instant when the son was
+kneeling with his back turned not a dozen paces off. What a
+tissue of mysteries and improbabilities the whole thing was! I
+did not wonder at Lestrade's opinion, and yet I had so much faith
+in Sherlock Holmes' insight that I could not lose hope as long
+as every fresh fact seemed to strengthen his conviction of young
+McCarthy's innocence.
+
+It was late before Sherlock Holmes returned. He came back alone,
+for Lestrade was staying in lodgings in the town.
+
+"The glass still keeps very high," he remarked as he sat down.
+"It is of importance that it should not rain before we are able
+to go over the ground. On the other hand, a man should be at his
+very best and keenest for such nice work as that, and I did not
+wish to do it when fagged by a long journey. I have seen young
+McCarthy."
+
+"And what did you learn from him?"
+
+"Nothing."
+
+"Could he throw no light?"
+
+"None at all. I was inclined to think at one time that he knew
+who had done it and was screening him or her, but I am convinced
+now that he is as puzzled as everyone else. He is not a very
+quick-witted youth, though comely to look at and, I should think,
+sound at heart."
+
+"I cannot admire his taste," I remarked, "if it is indeed a fact
+that he was averse to a marriage with so charming a young lady as
+this Miss Turner."
+
+"Ah, thereby hangs a rather painful tale. This fellow is madly,
+insanely, in love with her, but some two years ago, when he was
+only a lad, and before he really knew her, for she had been away
+five years at a boarding-school, what does the idiot do but get
+into the clutches of a barmaid in Bristol and marry her at a
+registry office? No one knows a word of the matter, but you can
+imagine how maddening it must be to him to be upbraided for not
+doing what he would give his very eyes to do, but what he knows
+to be absolutely impossible. It was sheer frenzy of this sort
+which made him throw his hands up into the air when his father,
+at their last interview, was goading him on to propose to Miss
+Turner. On the other hand, he had no means of supporting himself,
+and his father, who was by all accounts a very hard man, would
+have thrown him over utterly had he known the truth. It was with
+his barmaid wife that he had spent the last three days in
+Bristol, and his father did not know where he was. Mark that
+point. It is of importance. Good has come out of evil, however,
+for the barmaid, finding from the papers that he is in serious
+trouble and likely to be hanged, has thrown him over utterly and
+has written to him to say that she has a husband already in the
+Bermuda Dockyard, so that there is really no tie between them. I
+think that that bit of news has consoled young McCarthy for all
+that he has suffered."
+
+"But if he is innocent, who has done it?"
+
+"Ah! who? I would call your attention very particularly to two
+points. One is that the murdered man had an appointment with
+someone at the pool, and that the someone could not have been his
+son, for his son was away, and he did not know when he would
+return. The second is that the murdered man was heard to cry
+'Cooee!' before he knew that his son had returned. Those are the
+crucial points upon which the case depends. And now let us talk
+about George Meredith, if you please, and we shall leave all
+minor matters until to-morrow."
+
+There was no rain, as Holmes had foretold, and the morning broke
+bright and cloudless. At nine o'clock Lestrade called for us with
+the carriage, and we set off for Hatherley Farm and the Boscombe
+Pool.
+
+"There is serious news this morning," Lestrade observed. "It is
+said that Mr. Turner, of the Hall, is so ill that his life is
+despaired of."
+
+"An elderly man, I presume?" said Holmes.
+
+"About sixty; but his constitution has been shattered by his life
+abroad, and he has been in failing health for some time. This
+business has had a very bad effect upon him. He was an old friend
+of McCarthy's, and, I may add, a great benefactor to him, for I
+have learned that he gave him Hatherley Farm rent free."
+
+"Indeed! That is interesting," said Holmes.
+
+"Oh, yes! In a hundred other ways he has helped him. Everybody
+about here speaks of his kindness to him."
+
+"Really! Does it not strike you as a little singular that this
+McCarthy, who appears to have had little of his own, and to have
+been under such obligations to Turner, should still talk of
+marrying his son to Turner's daughter, who is, presumably,
+heiress to the estate, and that in such a very cocksure manner,
+as if it were merely a case of a proposal and all else would
+follow? It is the more strange, since we know that Turner himself
+was averse to the idea. The daughter told us as much. Do you not
+deduce something from that?"
+
+"We have got to the deductions and the inferences," said
+Lestrade, winking at me. "I find it hard enough to tackle facts,
+Holmes, without flying away after theories and fancies."
+
+"You are right," said Holmes demurely; "you do find it very hard
+to tackle the facts."
+
+"Anyhow, I have grasped one fact which you seem to find it
+difficult to get hold of," replied Lestrade with some warmth.
+
+"And that is--"
+
+"That McCarthy senior met his death from McCarthy junior and that
+all theories to the contrary are the merest moonshine."
+
+"Well, moonshine is a brighter thing than fog," said Holmes,
+laughing. "But I am very much mistaken if this is not Hatherley
+Farm upon the left."
+
+"Yes, that is it." It was a widespread, comfortable-looking
+building, two-storied, slate-roofed, with great yellow blotches
+of lichen upon the grey walls. The drawn blinds and the smokeless
+chimneys, however, gave it a stricken look, as though the weight
+of this horror still lay heavy upon it. We called at the door,
+when the maid, at Holmes' request, showed us the boots which her
+master wore at the time of his death, and also a pair of the
+son's, though not the pair which he had then had. Having measured
+these very carefully from seven or eight different points, Holmes
+desired to be led to the court-yard, from which we all followed
+the winding track which led to Boscombe Pool.
+
+Sherlock Holmes was transformed when he was hot upon such a scent
+as this. Men who had only known the quiet thinker and logician of
+Baker Street would have failed to recognise him. His face flushed
+and darkened. His brows were drawn into two hard black lines,
+while his eyes shone out from beneath them with a steely glitter.
+His face was bent downward, his shoulders bowed, his lips
+compressed, and the veins stood out like whipcord in his long,
+sinewy neck. His nostrils seemed to dilate with a purely animal
+lust for the chase, and his mind was so absolutely concentrated
+upon the matter before him that a question or remark fell
+unheeded upon his ears, or, at the most, only provoked a quick,
+impatient snarl in reply. Swiftly and silently he made his way
+along the track which ran through the meadows, and so by way of
+the woods to the Boscombe Pool. It was damp, marshy ground, as is
+all that district, and there were marks of many feet, both upon
+the path and amid the short grass which bounded it on either
+side. Sometimes Holmes would hurry on, sometimes stop dead, and
+once he made quite a little detour into the meadow. Lestrade and
+I walked behind him, the detective indifferent and contemptuous,
+while I watched my friend with the interest which sprang from the
+conviction that every one of his actions was directed towards a
+definite end.
+
+The Boscombe Pool, which is a little reed-girt sheet of water
+some fifty yards across, is situated at the boundary between the
+Hatherley Farm and the private park of the wealthy Mr. Turner.
+Above the woods which lined it upon the farther side we could see
+the red, jutting pinnacles which marked the site of the rich
+landowner's dwelling. On the Hatherley side of the pool the woods
+grew very thick, and there was a narrow belt of sodden grass
+twenty paces across between the edge of the trees and the reeds
+which lined the lake. Lestrade showed us the exact spot at which
+the body had been found, and, indeed, so moist was the ground,
+that I could plainly see the traces which had been left by the
+fall of the stricken man. To Holmes, as I could see by his eager
+face and peering eyes, very many other things were to be read
+upon the trampled grass. He ran round, like a dog who is picking
+up a scent, and then turned upon my companion.
+
+"What did you go into the pool for?" he asked.
+
+"I fished about with a rake. I thought there might be some weapon
+or other trace. But how on earth--"
+
+"Oh, tut, tut! I have no time! That left foot of yours with its
+inward twist is all over the place. A mole could trace it, and
+there it vanishes among the reeds. Oh, how simple it would all
+have been had I been here before they came like a herd of buffalo
+and wallowed all over it. Here is where the party with the
+lodge-keeper came, and they have covered all tracks for six or
+eight feet round the body. But here are three separate tracks of
+the same feet." He drew out a lens and lay down upon his
+waterproof to have a better view, talking all the time rather to
+himself than to us. "These are young McCarthy's feet. Twice he
+was walking, and once he ran swiftly, so that the soles are
+deeply marked and the heels hardly visible. That bears out his
+story. He ran when he saw his father on the ground. Then here are
+the father's feet as he paced up and down. What is this, then? It
+is the butt-end of the gun as the son stood listening. And this?
+Ha, ha! What have we here? Tiptoes! tiptoes! Square, too, quite
+unusual boots! They come, they go, they come again--of course
+that was for the cloak. Now where did they come from?" He ran up
+and down, sometimes losing, sometimes finding the track until we
+were well within the edge of the wood and under the shadow of a
+great beech, the largest tree in the neighbourhood. Holmes traced
+his way to the farther side of this and lay down once more upon
+his face with a little cry of satisfaction. For a long time he
+remained there, turning over the leaves and dried sticks,
+gathering up what seemed to me to be dust into an envelope and
+examining with his lens not only the ground but even the bark of
+the tree as far as he could reach. A jagged stone was lying among
+the moss, and this also he carefully examined and retained. Then
+he followed a pathway through the wood until he came to the
+highroad, where all traces were lost.
+
+"It has been a case of considerable interest," he remarked,
+returning to his natural manner. "I fancy that this grey house on
+the right must be the lodge. I think that I will go in and have a
+word with Moran, and perhaps write a little note. Having done
+that, we may drive back to our luncheon. You may walk to the cab,
+and I shall be with you presently."
+
+It was about ten minutes before we regained our cab and drove
+back into Ross, Holmes still carrying with him the stone which he
+had picked up in the wood.
+
+"This may interest you, Lestrade," he remarked, holding it out.
+"The murder was done with it."
+
+"I see no marks."
+
+"There are none."
+
+"How do you know, then?"
+
+"The grass was growing under it. It had only lain there a few
+days. There was no sign of a place whence it had been taken. It
+corresponds with the injuries. There is no sign of any other
+weapon."
+
+"And the murderer?"
+
+"Is a tall man, left-handed, limps with the right leg, wears
+thick-soled shooting-boots and a grey cloak, smokes Indian
+cigars, uses a cigar-holder, and carries a blunt pen-knife in his
+pocket. There are several other indications, but these may be
+enough to aid us in our search."
+
+Lestrade laughed. "I am afraid that I am still a sceptic," he
+said. "Theories are all very well, but we have to deal with a
+hard-headed British jury."
+
+"Nous verrons," answered Holmes calmly. "You work your own
+method, and I shall work mine. I shall be busy this afternoon,
+and shall probably return to London by the evening train."
+
+"And leave your case unfinished?"
+
+"No, finished."
+
+"But the mystery?"
+
+"It is solved."
+
+"Who was the criminal, then?"
+
+"The gentleman I describe."
+
+"But who is he?"
+
+"Surely it would not be difficult to find out. This is not such a
+populous neighbourhood."
+
+Lestrade shrugged his shoulders. "I am a practical man," he said,
+"and I really cannot undertake to go about the country looking
+for a left-handed gentleman with a game leg. I should become the
+laughing-stock of Scotland Yard."
+
+"All right," said Holmes quietly. "I have given you the chance.
+Here are your lodgings. Good-bye. I shall drop you a line before
+I leave."
+
+Having left Lestrade at his rooms, we drove to our hotel, where
+we found lunch upon the table. Holmes was silent and buried in
+thought with a pained expression upon his face, as one who finds
+himself in a perplexing position.
+
+"Look here, Watson," he said when the cloth was cleared "just sit
+down in this chair and let me preach to you for a little. I don't
+know quite what to do, and I should value your advice. Light a
+cigar and let me expound."
+
+ "Pray do so."
+
+"Well, now, in considering this case there are two points about
+young McCarthy's narrative which struck us both instantly,
+although they impressed me in his favour and you against him. One
+was the fact that his father should, according to his account,
+cry 'Cooee!' before seeing him. The other was his singular dying
+reference to a rat. He mumbled several words, you understand, but
+that was all that caught the son's ear. Now from this double
+point our research must commence, and we will begin it by
+presuming that what the lad says is absolutely true."
+
+"What of this 'Cooee!' then?"
+
+"Well, obviously it could not have been meant for the son. The
+son, as far as he knew, was in Bristol. It was mere chance that
+he was within earshot. The 'Cooee!' was meant to attract the
+attention of whoever it was that he had the appointment with. But
+'Cooee' is a distinctly Australian cry, and one which is used
+between Australians. There is a strong presumption that the
+person whom McCarthy expected to meet him at Boscombe Pool was
+someone who had been in Australia."
+
+"What of the rat, then?"
+
+Sherlock Holmes took a folded paper from his pocket and flattened
+it out on the table. "This is a map of the Colony of Victoria,"
+he said. "I wired to Bristol for it last night." He put his hand
+over part of the map. "What do you read?"
+
+"ARAT," I read.
+
+"And now?" He raised his hand.
+
+"BALLARAT."
+
+"Quite so. That was the word the man uttered, and of which his
+son only caught the last two syllables. He was trying to utter
+the name of his murderer. So and so, of Ballarat."
+
+"It is wonderful!" I exclaimed.
+
+"It is obvious. And now, you see, I had narrowed the field down
+considerably. The possession of a grey garment was a third point
+which, granting the son's statement to be correct, was a
+certainty. We have come now out of mere vagueness to the definite
+conception of an Australian from Ballarat with a grey cloak."
+
+"Certainly."
+
+"And one who was at home in the district, for the pool can only
+be approached by the farm or by the estate, where strangers could
+hardly wander."
+
+"Quite so."
+
+"Then comes our expedition of to-day. By an examination of the
+ground I gained the trifling details which I gave to that
+imbecile Lestrade, as to the personality of the criminal."
+
+"But how did you gain them?"
+
+"You know my method. It is founded upon the observation of
+trifles."
+
+"His height I know that you might roughly judge from the length
+of his stride. His boots, too, might be told from their traces."
+
+"Yes, they were peculiar boots."
+
+"But his lameness?"
+
+"The impression of his right foot was always less distinct than
+his left. He put less weight upon it. Why? Because he limped--he
+was lame."
+
+"But his left-handedness."
+
+"You were yourself struck by the nature of the injury as recorded
+by the surgeon at the inquest. The blow was struck from
+immediately behind, and yet was upon the left side. Now, how can
+that be unless it were by a left-handed man? He had stood behind
+that tree during the interview between the father and son. He had
+even smoked there. I found the ash of a cigar, which my special
+knowledge of tobacco ashes enables me to pronounce as an Indian
+cigar. I have, as you know, devoted some attention to this, and
+written a little monograph on the ashes of 140 different
+varieties of pipe, cigar, and cigarette tobacco. Having found the
+ash, I then looked round and discovered the stump among the moss
+where he had tossed it. It was an Indian cigar, of the variety
+which are rolled in Rotterdam."
+
+"And the cigar-holder?"
+
+"I could see that the end had not been in his mouth. Therefore he
+used a holder. The tip had been cut off, not bitten off, but the
+cut was not a clean one, so I deduced a blunt pen-knife."
+
+"Holmes," I said, "you have drawn a net round this man from which
+he cannot escape, and you have saved an innocent human life as
+truly as if you had cut the cord which was hanging him. I see the
+direction in which all this points. The culprit is--"
+
+"Mr. John Turner," cried the hotel waiter, opening the door of
+our sitting-room, and ushering in a visitor.
+
+The man who entered was a strange and impressive figure. His
+slow, limping step and bowed shoulders gave the appearance of
+decrepitude, and yet his hard, deep-lined, craggy features, and
+his enormous limbs showed that he was possessed of unusual
+strength of body and of character. His tangled beard, grizzled
+hair, and outstanding, drooping eyebrows combined to give an air
+of dignity and power to his appearance, but his face was of an
+ashen white, while his lips and the corners of his nostrils were
+tinged with a shade of blue. It was clear to me at a glance that
+he was in the grip of some deadly and chronic disease.
+
+"Pray sit down on the sofa," said Holmes gently. "You had my
+note?"
+
+"Yes, the lodge-keeper brought it up. You said that you wished to
+see me here to avoid scandal."
+
+"I thought people would talk if I went to the Hall."
+
+"And why did you wish to see me?" He looked across at my
+companion with despair in his weary eyes, as though his question
+was already answered.
+
+"Yes," said Holmes, answering the look rather than the words. "It
+is so. I know all about McCarthy."
+
+The old man sank his face in his hands. "God help me!" he cried.
+"But I would not have let the young man come to harm. I give you
+my word that I would have spoken out if it went against him at
+the Assizes."
+
+"I am glad to hear you say so," said Holmes gravely.
+
+"I would have spoken now had it not been for my dear girl. It
+would break her heart--it will break her heart when she hears
+that I am arrested."
+
+"It may not come to that," said Holmes.
+
+"What?"
+
+"I am no official agent. I understand that it was your daughter
+who required my presence here, and I am acting in her interests.
+Young McCarthy must be got off, however."
+
+"I am a dying man," said old Turner. "I have had diabetes for
+years. My doctor says it is a question whether I shall live a
+month. Yet I would rather die under my own roof than in a gaol."
+
+Holmes rose and sat down at the table with his pen in his hand
+and a bundle of paper before him. "Just tell us the truth," he
+said. "I shall jot down the facts. You will sign it, and Watson
+here can witness it. Then I could produce your confession at the
+last extremity to save young McCarthy. I promise you that I shall
+not use it unless it is absolutely needed."
+
+"It's as well," said the old man; "it's a question whether I
+shall live to the Assizes, so it matters little to me, but I
+should wish to spare Alice the shock. And now I will make the
+thing clear to you; it has been a long time in the acting, but
+will not take me long to tell.
+
+"You didn't know this dead man, McCarthy. He was a devil
+incarnate. I tell you that. God keep you out of the clutches of
+such a man as he. His grip has been upon me these twenty years,
+and he has blasted my life. I'll tell you first how I came to be
+in his power.
+
+"It was in the early '60's at the diggings. I was a young chap
+then, hot-blooded and reckless, ready to turn my hand at
+anything; I got among bad companions, took to drink, had no luck
+with my claim, took to the bush, and in a word became what you
+would call over here a highway robber. There were six of us, and
+we had a wild, free life of it, sticking up a station from time
+to time, or stopping the wagons on the road to the diggings.
+Black Jack of Ballarat was the name I went under, and our party
+is still remembered in the colony as the Ballarat Gang.
+
+"One day a gold convoy came down from Ballarat to Melbourne, and
+we lay in wait for it and attacked it. There were six troopers
+and six of us, so it was a close thing, but we emptied four of
+their saddles at the first volley. Three of our boys were killed,
+however, before we got the swag. I put my pistol to the head of
+the wagon-driver, who was this very man McCarthy. I wish to the
+Lord that I had shot him then, but I spared him, though I saw his
+wicked little eyes fixed on my face, as though to remember every
+feature. We got away with the gold, became wealthy men, and made
+our way over to England without being suspected. There I parted
+from my old pals and determined to settle down to a quiet and
+respectable life. I bought this estate, which chanced to be in
+the market, and I set myself to do a little good with my money,
+to make up for the way in which I had earned it. I married, too,
+and though my wife died young she left me my dear little Alice.
+Even when she was just a baby her wee hand seemed to lead me down
+the right path as nothing else had ever done. In a word, I turned
+over a new leaf and did my best to make up for the past. All was
+going well when McCarthy laid his grip upon me.
+
+"I had gone up to town about an investment, and I met him in
+Regent Street with hardly a coat to his back or a boot to his
+foot.
+
+"'Here we are, Jack,' says he, touching me on the arm; 'we'll be
+as good as a family to you. There's two of us, me and my son, and
+you can have the keeping of us. If you don't--it's a fine,
+law-abiding country is England, and there's always a policeman
+within hail.'
+
+"Well, down they came to the west country, there was no shaking
+them off, and there they have lived rent free on my best land
+ever since. There was no rest for me, no peace, no forgetfulness;
+turn where I would, there was his cunning, grinning face at my
+elbow. It grew worse as Alice grew up, for he soon saw I was more
+afraid of her knowing my past than of the police. Whatever he
+wanted he must have, and whatever it was I gave him without
+question, land, money, houses, until at last he asked a thing
+which I could not give. He asked for Alice.
+
+"His son, you see, had grown up, and so had my girl, and as I was
+known to be in weak health, it seemed a fine stroke to him that
+his lad should step into the whole property. But there I was
+firm. I would not have his cursed stock mixed with mine; not that
+I had any dislike to the lad, but his blood was in him, and that
+was enough. I stood firm. McCarthy threatened. I braved him to do
+his worst. We were to meet at the pool midway between our houses
+to talk it over.
+
+"When I went down there I found him talking with his son, so I
+smoked a cigar and waited behind a tree until he should be alone.
+But as I listened to his talk all that was black and bitter in
+me seemed to come uppermost. He was urging his son to marry my
+daughter with as little regard for what she might think as if she
+were a slut from off the streets. It drove me mad to think that I
+and all that I held most dear should be in the power of such a
+man as this. Could I not snap the bond? I was already a dying and
+a desperate man. Though clear of mind and fairly strong of limb,
+I knew that my own fate was sealed. But my memory and my girl!
+Both could be saved if I could but silence that foul tongue. I
+did it, Mr. Holmes. I would do it again. Deeply as I have sinned,
+I have led a life of martyrdom to atone for it. But that my girl
+should be entangled in the same meshes which held me was more
+than I could suffer. I struck him down with no more compunction
+than if he had been some foul and venomous beast. His cry brought
+back his son; but I had gained the cover of the wood, though I
+was forced to go back to fetch the cloak which I had dropped in
+my flight. That is the true story, gentlemen, of all that
+occurred."
+
+"Well, it is not for me to judge you," said Holmes as the old man
+signed the statement which had been drawn out. "I pray that we
+may never be exposed to such a temptation."
+
+"I pray not, sir. And what do you intend to do?"
+
+"In view of your health, nothing. You are yourself aware that you
+will soon have to answer for your deed at a higher court than the
+Assizes. I will keep your confession, and if McCarthy is
+condemned I shall be forced to use it. If not, it shall never be
+seen by mortal eye; and your secret, whether you be alive or
+dead, shall be safe with us."
+
+"Farewell, then," said the old man solemnly. "Your own deathbeds,
+when they come, will be the easier for the thought of the peace
+which you have given to mine." Tottering and shaking in all his
+giant frame, he stumbled slowly from the room.
+
+"God help us!" said Holmes after a long silence. "Why does fate
+play such tricks with poor, helpless worms? I never hear of such
+a case as this that I do not think of Baxter's words, and say,
+'There, but for the grace of God, goes Sherlock Holmes.'"
+
+James McCarthy was acquitted at the Assizes on the strength of a
+number of objections which had been drawn out by Holmes and
+submitted to the defending counsel. Old Turner lived for seven
+months after our interview, but he is now dead; and there is
+every prospect that the son and daughter may come to live happily
+together in ignorance of the black cloud which rests upon their
+past.
+
+
+
+ADVENTURE V. THE FIVE ORANGE PIPS
+
+When I glance over my notes and records of the Sherlock Holmes
+cases between the years '82 and '90, I am faced by so many which
+present strange and interesting features that it is no easy
+matter to know which to choose and which to leave. Some, however,
+have already gained publicity through the papers, and others have
+not offered a field for those peculiar qualities which my friend
+possessed in so high a degree, and which it is the object of
+these papers to illustrate. Some, too, have baffled his
+analytical skill, and would be, as narratives, beginnings without
+an ending, while others have been but partially cleared up, and
+have their explanations founded rather upon conjecture and
+surmise than on that absolute logical proof which was so dear to
+him. There is, however, one of these last which was so remarkable
+in its details and so startling in its results that I am tempted
+to give some account of it in spite of the fact that there are
+points in connection with it which never have been, and probably
+never will be, entirely cleared up.
+
+The year '87 furnished us with a long series of cases of greater
+or less interest, of which I retain the records. Among my
+headings under this one twelve months I find an account of the
+adventure of the Paradol Chamber, of the Amateur Mendicant
+Society, who held a luxurious club in the lower vault of a
+furniture warehouse, of the facts connected with the loss of the
+British barque "Sophy Anderson", of the singular adventures of the
+Grice Patersons in the island of Uffa, and finally of the
+Camberwell poisoning case. In the latter, as may be remembered,
+Sherlock Holmes was able, by winding up the dead man's watch, to
+prove that it had been wound up two hours before, and that
+therefore the deceased had gone to bed within that time--a
+deduction which was of the greatest importance in clearing up the
+case. All these I may sketch out at some future date, but none of
+them present such singular features as the strange train of
+circumstances which I have now taken up my pen to describe.
+
+It was in the latter days of September, and the equinoctial gales
+had set in with exceptional violence. All day the wind had
+screamed and the rain had beaten against the windows, so that
+even here in the heart of great, hand-made London we were forced
+to raise our minds for the instant from the routine of life and
+to recognise the presence of those great elemental forces which
+shriek at mankind through the bars of his civilisation, like
+untamed beasts in a cage. As evening drew in, the storm grew
+higher and louder, and the wind cried and sobbed like a child in
+the chimney. Sherlock Holmes sat moodily at one side of the
+fireplace cross-indexing his records of crime, while I at the
+other was deep in one of Clark Russell's fine sea-stories until
+the howl of the gale from without seemed to blend with the text,
+and the splash of the rain to lengthen out into the long swash of
+the sea waves. My wife was on a visit to her mother's, and for a
+few days I was a dweller once more in my old quarters at Baker
+Street.
+
+"Why," said I, glancing up at my companion, "that was surely the
+bell. Who could come to-night? Some friend of yours, perhaps?"
+
+"Except yourself I have none," he answered. "I do not encourage
+visitors."
+
+"A client, then?"
+
+"If so, it is a serious case. Nothing less would bring a man out
+on such a day and at such an hour. But I take it that it is more
+likely to be some crony of the landlady's."
+
+Sherlock Holmes was wrong in his conjecture, however, for there
+came a step in the passage and a tapping at the door. He
+stretched out his long arm to turn the lamp away from himself and
+towards the vacant chair upon which a newcomer must sit.
+
+"Come in!" said he.
+
+The man who entered was young, some two-and-twenty at the
+outside, well-groomed and trimly clad, with something of
+refinement and delicacy in his bearing. The streaming umbrella
+which he held in his hand, and his long shining waterproof told
+of the fierce weather through which he had come. He looked about
+him anxiously in the glare of the lamp, and I could see that his
+face was pale and his eyes heavy, like those of a man who is
+weighed down with some great anxiety.
+
+"I owe you an apology," he said, raising his golden pince-nez to
+his eyes. "I trust that I am not intruding. I fear that I have
+brought some traces of the storm and rain into your snug
+chamber."
+
+"Give me your coat and umbrella," said Holmes. "They may rest
+here on the hook and will be dry presently. You have come up from
+the south-west, I see."
+
+"Yes, from Horsham."
+
+"That clay and chalk mixture which I see upon your toe caps is
+quite distinctive."
+
+"I have come for advice."
+
+"That is easily got."
+
+"And help."
+
+"That is not always so easy."
+
+"I have heard of you, Mr. Holmes. I heard from Major Prendergast
+how you saved him in the Tankerville Club scandal."
+
+"Ah, of course. He was wrongfully accused of cheating at cards."
+
+"He said that you could solve anything."
+
+"He said too much."
+
+"That you are never beaten."
+
+"I have been beaten four times--three times by men, and once by a
+woman."
+
+"But what is that compared with the number of your successes?"
+
+"It is true that I have been generally successful."
+
+"Then you may be so with me."
+
+"I beg that you will draw your chair up to the fire and favour me
+with some details as to your case."
+
+"It is no ordinary one."
+
+"None of those which come to me are. I am the last court of
+appeal."
+
+"And yet I question, sir, whether, in all your experience, you
+have ever listened to a more mysterious and inexplicable chain of
+events than those which have happened in my own family."
+
+"You fill me with interest," said Holmes. "Pray give us the
+essential facts from the commencement, and I can afterwards
+question you as to those details which seem to me to be most
+important."
+
+The young man pulled his chair up and pushed his wet feet out
+towards the blaze.
+
+"My name," said he, "is John Openshaw, but my own affairs have,
+as far as I can understand, little to do with this awful
+business. It is a hereditary matter; so in order to give you an
+idea of the facts, I must go back to the commencement of the
+affair.
+
+"You must know that my grandfather had two sons--my uncle Elias
+and my father Joseph. My father had a small factory at Coventry,
+which he enlarged at the time of the invention of bicycling. He
+was a patentee of the Openshaw unbreakable tire, and his business
+met with such success that he was able to sell it and to retire
+upon a handsome competence.
+
+"My uncle Elias emigrated to America when he was a young man and
+became a planter in Florida, where he was reported to have done
+very well. At the time of the war he fought in Jackson's army,
+and afterwards under Hood, where he rose to be a colonel. When
+Lee laid down his arms my uncle returned to his plantation, where
+he remained for three or four years. About 1869 or 1870 he came
+back to Europe and took a small estate in Sussex, near Horsham.
+He had made a very considerable fortune in the States, and his
+reason for leaving them was his aversion to the negroes, and his
+dislike of the Republican policy in extending the franchise to
+them. He was a singular man, fierce and quick-tempered, very
+foul-mouthed when he was angry, and of a most retiring
+disposition. During all the years that he lived at Horsham, I
+doubt if ever he set foot in the town. He had a garden and two or
+three fields round his house, and there he would take his
+exercise, though very often for weeks on end he would never leave
+his room. He drank a great deal of brandy and smoked very
+heavily, but he would see no society and did not want any
+friends, not even his own brother.
+
+"He didn't mind me; in fact, he took a fancy to me, for at the
+time when he saw me first I was a youngster of twelve or so. This
+would be in the year 1878, after he had been eight or nine years
+in England. He begged my father to let me live with him and he
+was very kind to me in his way. When he was sober he used to be
+fond of playing backgammon and draughts with me, and he would
+make me his representative both with the servants and with the
+tradespeople, so that by the time that I was sixteen I was quite
+master of the house. I kept all the keys and could go where I
+liked and do what I liked, so long as I did not disturb him in
+his privacy. There was one singular exception, however, for he
+had a single room, a lumber-room up among the attics, which was
+invariably locked, and which he would never permit either me or
+anyone else to enter. With a boy's curiosity I have peeped
+through the keyhole, but I was never able to see more than such a
+collection of old trunks and bundles as would be expected in such
+a room.
+
+"One day--it was in March, 1883--a letter with a foreign stamp
+lay upon the table in front of the colonel's plate. It was not a
+common thing for him to receive letters, for his bills were all
+paid in ready money, and he had no friends of any sort. 'From
+India!' said he as he took it up, 'Pondicherry postmark! What can
+this be?' Opening it hurriedly, out there jumped five little
+dried orange pips, which pattered down upon his plate. I began to
+laugh at this, but the laugh was struck from my lips at the sight
+of his face. His lip had fallen, his eyes were protruding, his
+skin the colour of putty, and he glared at the envelope which he
+still held in his trembling hand, 'K. K. K.!' he shrieked, and
+then, 'My God, my God, my sins have overtaken me!'
+
+"'What is it, uncle?' I cried.
+
+"'Death,' said he, and rising from the table he retired to his
+room, leaving me palpitating with horror. I took up the envelope
+and saw scrawled in red ink upon the inner flap, just above the
+gum, the letter K three times repeated. There was nothing else
+save the five dried pips. What could be the reason of his
+overpowering terror? I left the breakfast-table, and as I
+ascended the stair I met him coming down with an old rusty key,
+which must have belonged to the attic, in one hand, and a small
+brass box, like a cashbox, in the other.
+
+"'They may do what they like, but I'll checkmate them still,'
+said he with an oath. 'Tell Mary that I shall want a fire in my
+room to-day, and send down to Fordham, the Horsham lawyer.'
+
+"I did as he ordered, and when the lawyer arrived I was asked to
+step up to the room. The fire was burning brightly, and in the
+grate there was a mass of black, fluffy ashes, as of burned
+paper, while the brass box stood open and empty beside it. As I
+glanced at the box I noticed, with a start, that upon the lid was
+printed the treble K which I had read in the morning upon the
+envelope.
+
+"'I wish you, John,' said my uncle, 'to witness my will. I leave
+my estate, with all its advantages and all its disadvantages, to
+my brother, your father, whence it will, no doubt, descend to
+you. If you can enjoy it in peace, well and good! If you find you
+cannot, take my advice, my boy, and leave it to your deadliest
+enemy. I am sorry to give you such a two-edged thing, but I can't
+say what turn things are going to take. Kindly sign the paper
+where Mr. Fordham shows you.'
+
+"I signed the paper as directed, and the lawyer took it away with
+him. The singular incident made, as you may think, the deepest
+impression upon me, and I pondered over it and turned it every
+way in my mind without being able to make anything of it. Yet I
+could not shake off the vague feeling of dread which it left
+behind, though the sensation grew less keen as the weeks passed
+and nothing happened to disturb the usual routine of our lives. I
+could see a change in my uncle, however. He drank more than ever,
+and he was less inclined for any sort of society. Most of his
+time he would spend in his room, with the door locked upon the
+inside, but sometimes he would emerge in a sort of drunken frenzy
+and would burst out of the house and tear about the garden with a
+revolver in his hand, screaming out that he was afraid of no man,
+and that he was not to be cooped up, like a sheep in a pen, by
+man or devil. When these hot fits were over, however, he would
+rush tumultuously in at the door and lock and bar it behind him,
+like a man who can brazen it out no longer against the terror
+which lies at the roots of his soul. At such times I have seen
+his face, even on a cold day, glisten with moisture, as though it
+were new raised from a basin.
+
+"Well, to come to an end of the matter, Mr. Holmes, and not to
+abuse your patience, there came a night when he made one of those
+drunken sallies from which he never came back. We found him, when
+we went to search for him, face downward in a little
+green-scummed pool, which lay at the foot of the garden. There
+was no sign of any violence, and the water was but two feet deep,
+so that the jury, having regard to his known eccentricity,
+brought in a verdict of 'suicide.' But I, who knew how he winced
+from the very thought of death, had much ado to persuade myself
+that he had gone out of his way to meet it. The matter passed,
+however, and my father entered into possession of the estate, and
+of some 14,000 pounds, which lay to his credit at the bank."
+
+"One moment," Holmes interposed, "your statement is, I foresee,
+one of the most remarkable to which I have ever listened. Let me
+have the date of the reception by your uncle of the letter, and
+the date of his supposed suicide."
+
+"The letter arrived on March 10, 1883. His death was seven weeks
+later, upon the night of May 2nd."
+
+"Thank you. Pray proceed."
+
+"When my father took over the Horsham property, he, at my
+request, made a careful examination of the attic, which had been
+always locked up. We found the brass box there, although its
+contents had been destroyed. On the inside of the cover was a
+paper label, with the initials of K. K. K. repeated upon it, and
+'Letters, memoranda, receipts, and a register' written beneath.
+These, we presume, indicated the nature of the papers which had
+been destroyed by Colonel Openshaw. For the rest, there was
+nothing of much importance in the attic save a great many
+scattered papers and note-books bearing upon my uncle's life in
+America. Some of them were of the war time and showed that he had
+done his duty well and had borne the repute of a brave soldier.
+Others were of a date during the reconstruction of the Southern
+states, and were mostly concerned with politics, for he had
+evidently taken a strong part in opposing the carpet-bag
+politicians who had been sent down from the North.
+
+"Well, it was the beginning of '84 when my father came to live at
+Horsham, and all went as well as possible with us until the
+January of '85. On the fourth day after the new year I heard my
+father give a sharp cry of surprise as we sat together at the
+breakfast-table. There he was, sitting with a newly opened
+envelope in one hand and five dried orange pips in the
+outstretched palm of the other one. He had always laughed at what
+he called my cock-and-bull story about the colonel, but he looked
+very scared and puzzled now that the same thing had come upon
+himself.
+
+"'Why, what on earth does this mean, John?' he stammered.
+
+"My heart had turned to lead. 'It is K. K. K.,' said I.
+
+"He looked inside the envelope. 'So it is,' he cried. 'Here are
+the very letters. But what is this written above them?'
+
+"'Put the papers on the sundial,' I read, peeping over his
+shoulder.
+
+"'What papers? What sundial?' he asked.
+
+"'The sundial in the garden. There is no other,' said I; 'but the
+papers must be those that are destroyed.'
+
+"'Pooh!' said he, gripping hard at his courage. 'We are in a
+civilised land here, and we can't have tomfoolery of this kind.
+Where does the thing come from?'
+
+"'From Dundee,' I answered, glancing at the postmark.
+
+"'Some preposterous practical joke,' said he. 'What have I to do
+with sundials and papers? I shall take no notice of such
+nonsense.'
+
+"'I should certainly speak to the police,' I said.
+
+"'And be laughed at for my pains. Nothing of the sort.'
+
+"'Then let me do so?'
+
+"'No, I forbid you. I won't have a fuss made about such
+nonsense.'
+
+"It was in vain to argue with him, for he was a very obstinate
+man. I went about, however, with a heart which was full of
+forebodings.
+
+"On the third day after the coming of the letter my father went
+from home to visit an old friend of his, Major Freebody, who is
+in command of one of the forts upon Portsdown Hill. I was glad
+that he should go, for it seemed to me that he was farther from
+danger when he was away from home. In that, however, I was in
+error. Upon the second day of his absence I received a telegram
+from the major, imploring me to come at once. My father had
+fallen over one of the deep chalk-pits which abound in the
+neighbourhood, and was lying senseless, with a shattered skull. I
+hurried to him, but he passed away without having ever recovered
+his consciousness. He had, as it appears, been returning from
+Fareham in the twilight, and as the country was unknown to him,
+and the chalk-pit unfenced, the jury had no hesitation in
+bringing in a verdict of 'death from accidental causes.'
+Carefully as I examined every fact connected with his death, I
+was unable to find anything which could suggest the idea of
+murder. There were no signs of violence, no footmarks, no
+robbery, no record of strangers having been seen upon the roads.
+And yet I need not tell you that my mind was far from at ease,
+and that I was well-nigh certain that some foul plot had been
+woven round him.
+
+"In this sinister way I came into my inheritance. You will ask me
+why I did not dispose of it? I answer, because I was well
+convinced that our troubles were in some way dependent upon an
+incident in my uncle's life, and that the danger would be as
+pressing in one house as in another.
+
+"It was in January, '85, that my poor father met his end, and two
+years and eight months have elapsed since then. During that time
+I have lived happily at Horsham, and I had begun to hope that
+this curse had passed away from the family, and that it had ended
+with the last generation. I had begun to take comfort too soon,
+however; yesterday morning the blow fell in the very shape in
+which it had come upon my father."
+
+The young man took from his waistcoat a crumpled envelope, and
+turning to the table he shook out upon it five little dried
+orange pips.
+
+"This is the envelope," he continued. "The postmark is
+London--eastern division. Within are the very words which were
+upon my father's last message: 'K. K. K.'; and then 'Put the
+papers on the sundial.'"
+
+"What have you done?" asked Holmes.
+
+"Nothing."
+
+"Nothing?"
+
+"To tell the truth"--he sank his face into his thin, white
+hands--"I have felt helpless. I have felt like one of those poor
+rabbits when the snake is writhing towards it. I seem to be in
+the grasp of some resistless, inexorable evil, which no foresight
+and no precautions can guard against."
+
+"Tut! tut!" cried Sherlock Holmes. "You must act, man, or you are
+lost. Nothing but energy can save you. This is no time for
+despair."
+
+"I have seen the police."
+
+"Ah!"
+
+"But they listened to my story with a smile. I am convinced that
+the inspector has formed the opinion that the letters are all
+practical jokes, and that the deaths of my relations were really
+accidents, as the jury stated, and were not to be connected with
+the warnings."
+
+Holmes shook his clenched hands in the air. "Incredible
+imbecility!" he cried.
+
+"They have, however, allowed me a policeman, who may remain in
+the house with me."
+
+"Has he come with you to-night?"
+
+"No. His orders were to stay in the house."
+
+Again Holmes raved in the air.
+
+"Why did you come to me," he cried, "and, above all, why did you
+not come at once?"
+
+"I did not know. It was only to-day that I spoke to Major
+Prendergast about my troubles and was advised by him to come to
+you."
+
+"It is really two days since you had the letter. We should have
+acted before this. You have no further evidence, I suppose, than
+that which you have placed before us--no suggestive detail which
+might help us?"
+
+"There is one thing," said John Openshaw. He rummaged in his coat
+pocket, and, drawing out a piece of discoloured, blue-tinted
+paper, he laid it out upon the table. "I have some remembrance,"
+said he, "that on the day when my uncle burned the papers I
+observed that the small, unburned margins which lay amid the
+ashes were of this particular colour. I found this single sheet
+upon the floor of his room, and I am inclined to think that it
+may be one of the papers which has, perhaps, fluttered out from
+among the others, and in that way has escaped destruction. Beyond
+the mention of pips, I do not see that it helps us much. I think
+myself that it is a page from some private diary. The writing is
+undoubtedly my uncle's."
+
+Holmes moved the lamp, and we both bent over the sheet of paper,
+which showed by its ragged edge that it had indeed been torn from
+a book. It was headed, "March, 1869," and beneath were the
+following enigmatical notices:
+
+"4th. Hudson came. Same old platform.
+
+"7th. Set the pips on McCauley, Paramore, and
+      John Swain, of St. Augustine.
+
+"9th. McCauley cleared.
+
+"10th. John Swain cleared.
+
+"12th. Visited Paramore. All well."
+
+"Thank you!" said Holmes, folding up the paper and returning it
+to our visitor. "And now you must on no account lose another
+instant. We cannot spare time even to discuss what you have told
+me. You must get home instantly and act."
+
+"What shall I do?"
+
+"There is but one thing to do. It must be done at once. You must
+put this piece of paper which you have shown us into the brass
+box which you have described. You must also put in a note to say
+that all the other papers were burned by your uncle, and that
+this is the only one which remains. You must assert that in such
+words as will carry conviction with them. Having done this, you
+must at once put the box out upon the sundial, as directed. Do
+you understand?"
+
+"Entirely."
+
+"Do not think of revenge, or anything of the sort, at present. I
+think that we may gain that by means of the law; but we have our
+web to weave, while theirs is already woven. The first
+consideration is to remove the pressing danger which threatens
+you. The second is to clear up the mystery and to punish the
+guilty parties."
+
+"I thank you," said the young man, rising and pulling on his
+overcoat. "You have given me fresh life and hope. I shall
+certainly do as you advise."
+
+"Do not lose an instant. And, above all, take care of yourself in
+the meanwhile, for I do not think that there can be a doubt that
+you are threatened by a very real and imminent danger. How do you
+go back?"
+
+"By train from Waterloo."
+
+"It is not yet nine. The streets will be crowded, so I trust that
+you may be in safety. And yet you cannot guard yourself too
+closely."
+
+"I am armed."
+
+"That is well. To-morrow I shall set to work upon your case."
+
+"I shall see you at Horsham, then?"
+
+"No, your secret lies in London. It is there that I shall seek
+it."
+
+"Then I shall call upon you in a day, or in two days, with news
+as to the box and the papers. I shall take your advice in every
+particular." He shook hands with us and took his leave. Outside
+the wind still screamed and the rain splashed and pattered
+against the windows. This strange, wild story seemed to have come
+to us from amid the mad elements--blown in upon us like a sheet
+of sea-weed in a gale--and now to have been reabsorbed by them
+once more.
+
+Sherlock Holmes sat for some time in silence, with his head sunk
+forward and his eyes bent upon the red glow of the fire. Then he
+lit his pipe, and leaning back in his chair he watched the blue
+smoke-rings as they chased each other up to the ceiling.
+
+"I think, Watson," he remarked at last, "that of all our cases we
+have had none more fantastic than this."
+
+"Save, perhaps, the Sign of Four."
+
+"Well, yes. Save, perhaps, that. And yet this John Openshaw seems
+to me to be walking amid even greater perils than did the
+Sholtos."
+
+"But have you," I asked, "formed any definite conception as to
+what these perils are?"
+
+"There can be no question as to their nature," he answered.
+
+"Then what are they? Who is this K. K. K., and why does he pursue
+this unhappy family?"
+
+Sherlock Holmes closed his eyes and placed his elbows upon the
+arms of his chair, with his finger-tips together. "The ideal
+reasoner," he remarked, "would, when he had once been shown a
+single fact in all its bearings, deduce from it not only all the
+chain of events which led up to it but also all the results which
+would follow from it. As Cuvier could correctly describe a whole
+animal by the contemplation of a single bone, so the observer who
+has thoroughly understood one link in a series of incidents
+should be able to accurately state all the other ones, both
+before and after. We have not yet grasped the results which the
+reason alone can attain to. Problems may be solved in the study
+which have baffled all those who have sought a solution by the
+aid of their senses. To carry the art, however, to its highest
+pitch, it is necessary that the reasoner should be able to
+utilise all the facts which have come to his knowledge; and this
+in itself implies, as you will readily see, a possession of all
+knowledge, which, even in these days of free education and
+encyclopaedias, is a somewhat rare accomplishment. It is not so
+impossible, however, that a man should possess all knowledge
+which is likely to be useful to him in his work, and this I have
+endeavoured in my case to do. If I remember rightly, you on one
+occasion, in the early days of our friendship, defined my limits
+in a very precise fashion."
+
+"Yes," I answered, laughing. "It was a singular document.
+Philosophy, astronomy, and politics were marked at zero, I
+remember. Botany variable, geology profound as regards the
+mud-stains from any region within fifty miles of town, chemistry
+eccentric, anatomy unsystematic, sensational literature and crime
+records unique, violin-player, boxer, swordsman, lawyer, and
+self-poisoner by cocaine and tobacco. Those, I think, were the
+main points of my analysis."
+
+Holmes grinned at the last item. "Well," he said, "I say now, as
+I said then, that a man should keep his little brain-attic
+stocked with all the furniture that he is likely to use, and the
+rest he can put away in the lumber-room of his library, where he
+can get it if he wants it. Now, for such a case as the one which
+has been submitted to us to-night, we need certainly to muster
+all our resources. Kindly hand me down the letter K of the
+'American Encyclopaedia' which stands upon the shelf beside you.
+Thank you. Now let us consider the situation and see what may be
+deduced from it. In the first place, we may start with a strong
+presumption that Colonel Openshaw had some very strong reason for
+leaving America. Men at his time of life do not change all their
+habits and exchange willingly the charming climate of Florida for
+the lonely life of an English provincial town. His extreme love
+of solitude in England suggests the idea that he was in fear of
+someone or something, so we may assume as a working hypothesis
+that it was fear of someone or something which drove him from
+America. As to what it was he feared, we can only deduce that by
+considering the formidable letters which were received by himself
+and his successors. Did you remark the postmarks of those
+letters?"
+
+"The first was from Pondicherry, the second from Dundee, and the
+third from London."
+
+"From East London. What do you deduce from that?"
+
+"They are all seaports. That the writer was on board of a ship."
+
+"Excellent. We have already a clue. There can be no doubt that
+the probability--the strong probability--is that the writer was
+on board of a ship. And now let us consider another point. In the
+case of Pondicherry, seven weeks elapsed between the threat and
+its fulfilment, in Dundee it was only some three or four days.
+Does that suggest anything?"
+
+"A greater distance to travel."
+
+"But the letter had also a greater distance to come."
+
+"Then I do not see the point."
+
+"There is at least a presumption that the vessel in which the man
+or men are is a sailing-ship. It looks as if they always send
+their singular warning or token before them when starting upon
+their mission. You see how quickly the deed followed the sign
+when it came from Dundee. If they had come from Pondicherry in a
+steamer they would have arrived almost as soon as their letter.
+But, as a matter of fact, seven weeks elapsed. I think that those
+seven weeks represented the difference between the mail-boat which
+brought the letter and the sailing vessel which brought the
+writer."
+
+"It is possible."
+
+"More than that. It is probable. And now you see the deadly
+urgency of this new case, and why I urged young Openshaw to
+caution. The blow has always fallen at the end of the time which
+it would take the senders to travel the distance. But this one
+comes from London, and therefore we cannot count upon delay."
+
+"Good God!" I cried. "What can it mean, this relentless
+persecution?"
+
+"The papers which Openshaw carried are obviously of vital
+importance to the person or persons in the sailing-ship. I think
+that it is quite clear that there must be more than one of them.
+A single man could not have carried out two deaths in such a way
+as to deceive a coroner's jury. There must have been several in
+it, and they must have been men of resource and determination.
+Their papers they mean to have, be the holder of them who it may.
+In this way you see K. K. K. ceases to be the initials of an
+individual and becomes the badge of a society."
+
+"But of what society?"
+
+"Have you never--" said Sherlock Holmes, bending forward and
+sinking his voice--"have you never heard of the Ku Klux Klan?"
+
+"I never have."
+
+Holmes turned over the leaves of the book upon his knee. "Here it
+is," said he presently:
+
+"'Ku Klux Klan. A name derived from the fanciful resemblance to
+the sound produced by cocking a rifle. This terrible secret
+society was formed by some ex-Confederate soldiers in the
+Southern states after the Civil War, and it rapidly formed local
+branches in different parts of the country, notably in Tennessee,
+Louisiana, the Carolinas, Georgia, and Florida. Its power was
+used for political purposes, principally for the terrorising of
+the negro voters and the murdering and driving from the country
+of those who were opposed to its views. Its outrages were usually
+preceded by a warning sent to the marked man in some fantastic
+but generally recognised shape--a sprig of oak-leaves in some
+parts, melon seeds or orange pips in others. On receiving this
+the victim might either openly abjure his former ways, or might
+fly from the country. If he braved the matter out, death would
+unfailingly come upon him, and usually in some strange and
+unforeseen manner. So perfect was the organisation of the
+society, and so systematic its methods, that there is hardly a
+case upon record where any man succeeded in braving it with
+impunity, or in which any of its outrages were traced home to the
+perpetrators. For some years the organisation flourished in spite
+of the efforts of the United States government and of the better
+classes of the community in the South. Eventually, in the year
+1869, the movement rather suddenly collapsed, although there have
+been sporadic outbreaks of the same sort since that date.'
+
+"You will observe," said Holmes, laying down the volume, "that
+the sudden breaking up of the society was coincident with the
+disappearance of Openshaw from America with their papers. It may
+well have been cause and effect. It is no wonder that he and his
+family have some of the more implacable spirits upon their track.
+You can understand that this register and diary may implicate
+some of the first men in the South, and that there may be many
+who will not sleep easy at night until it is recovered."
+
+"Then the page we have seen--"
+
+"Is such as we might expect. It ran, if I remember right, 'sent
+the pips to A, B, and C'--that is, sent the society's warning to
+them. Then there are successive entries that A and B cleared, or
+left the country, and finally that C was visited, with, I fear, a
+sinister result for C. Well, I think, Doctor, that we may let
+some light into this dark place, and I believe that the only
+chance young Openshaw has in the meantime is to do what I have
+told him. There is nothing more to be said or to be done
+to-night, so hand me over my violin and let us try to forget for
+half an hour the miserable weather and the still more miserable
+ways of our fellow-men."
+
+
+It had cleared in the morning, and the sun was shining with a
+subdued brightness through the dim veil which hangs over the
+great city. Sherlock Holmes was already at breakfast when I came
+down.
+
+"You will excuse me for not waiting for you," said he; "I have, I
+foresee, a very busy day before me in looking into this case of
+young Openshaw's."
+
+"What steps will you take?" I asked.
+
+"It will very much depend upon the results of my first inquiries.
+I may have to go down to Horsham, after all."
+
+"You will not go there first?"
+
+"No, I shall commence with the City. Just ring the bell and the
+maid will bring up your coffee."
+
+As I waited, I lifted the unopened newspaper from the table and
+glanced my eye over it. It rested upon a heading which sent a
+chill to my heart.
+
+"Holmes," I cried, "you are too late."
+
+"Ah!" said he, laying down his cup, "I feared as much. How was it
+done?" He spoke calmly, but I could see that he was deeply moved.
+
+"My eye caught the name of Openshaw, and the heading 'Tragedy
+Near Waterloo Bridge.' Here is the account:
+
+"Between nine and ten last night Police-Constable Cook, of the H
+Division, on duty near Waterloo Bridge, heard a cry for help and
+a splash in the water. The night, however, was extremely dark and
+stormy, so that, in spite of the help of several passers-by, it
+was quite impossible to effect a rescue. The alarm, however, was
+given, and, by the aid of the water-police, the body was
+eventually recovered. It proved to be that of a young gentleman
+whose name, as it appears from an envelope which was found in his
+pocket, was John Openshaw, and whose residence is near Horsham.
+It is conjectured that he may have been hurrying down to catch
+the last train from Waterloo Station, and that in his haste and
+the extreme darkness he missed his path and walked over the edge
+of one of the small landing-places for river steamboats. The body
+exhibited no traces of violence, and there can be no doubt that
+the deceased had been the victim of an unfortunate accident,
+which should have the effect of calling the attention of the
+authorities to the condition of the riverside landing-stages."
+
+We sat in silence for some minutes, Holmes more depressed and
+shaken than I had ever seen him.
+
+"That hurts my pride, Watson," he said at last. "It is a petty
+feeling, no doubt, but it hurts my pride. It becomes a personal
+matter with me now, and, if God sends me health, I shall set my
+hand upon this gang. That he should come to me for help, and that
+I should send him away to his death--!" He sprang from his chair
+and paced about the room in uncontrollable agitation, with a
+flush upon his sallow cheeks and a nervous clasping and
+unclasping of his long thin hands.
+
+"They must be cunning devils," he exclaimed at last. "How could
+they have decoyed him down there? The Embankment is not on the
+direct line to the station. The bridge, no doubt, was too
+crowded, even on such a night, for their purpose. Well, Watson,
+we shall see who will win in the long run. I am going out now!"
+
+"To the police?"
+
+"No; I shall be my own police. When I have spun the web they may
+take the flies, but not before."
+
+All day I was engaged in my professional work, and it was late in
+the evening before I returned to Baker Street. Sherlock Holmes
+had not come back yet. It was nearly ten o'clock before he
+entered, looking pale and worn. He walked up to the sideboard,
+and tearing a piece from the loaf he devoured it voraciously,
+washing it down with a long draught of water.
+
+"You are hungry," I remarked.
+
+"Starving. It had escaped my memory. I have had nothing since
+breakfast."
+
+"Nothing?"
+
+"Not a bite. I had no time to think of it."
+
+"And how have you succeeded?"
+
+"Well."
+
+"You have a clue?"
+
+"I have them in the hollow of my hand. Young Openshaw shall not
+long remain unavenged. Why, Watson, let us put their own devilish
+trade-mark upon them. It is well thought of!"
+
+"What do you mean?"
+
+He took an orange from the cupboard, and tearing it to pieces he
+squeezed out the pips upon the table. Of these he took five and
+thrust them into an envelope. On the inside of the flap he wrote
+"S. H. for J. O." Then he sealed it and addressed it to "Captain
+James Calhoun, Barque 'Lone Star,' Savannah, Georgia."
+
+"That will await him when he enters port," said he, chuckling.
+"It may give him a sleepless night. He will find it as sure a
+precursor of his fate as Openshaw did before him."
+
+"And who is this Captain Calhoun?"
+
+"The leader of the gang. I shall have the others, but he first."
+
+"How did you trace it, then?"
+
+He took a large sheet of paper from his pocket, all covered with
+dates and names.
+
+"I have spent the whole day," said he, "over Lloyd's registers
+and files of the old papers, following the future career of every
+vessel which touched at Pondicherry in January and February in
+'83. There were thirty-six ships of fair tonnage which were
+reported there during those months. Of these, one, the 'Lone Star,'
+instantly attracted my attention, since, although it was reported
+as having cleared from London, the name is that which is given to
+one of the states of the Union."
+
+"Texas, I think."
+
+"I was not and am not sure which; but I knew that the ship must
+have an American origin."
+
+"What then?"
+
+"I searched the Dundee records, and when I found that the barque
+'Lone Star' was there in January, '85, my suspicion became a
+certainty. I then inquired as to the vessels which lay at present
+in the port of London."
+
+"Yes?"
+
+"The 'Lone Star' had arrived here last week. I went down to the
+Albert Dock and found that she had been taken down the river by
+the early tide this morning, homeward bound to Savannah. I wired
+to Gravesend and learned that she had passed some time ago, and
+as the wind is easterly I have no doubt that she is now past the
+Goodwins and not very far from the Isle of Wight."
+
+"What will you do, then?"
+
+"Oh, I have my hand upon him. He and the two mates, are as I
+learn, the only native-born Americans in the ship. The others are
+Finns and Germans. I know, also, that they were all three away
+from the ship last night. I had it from the stevedore who has
+been loading their cargo. By the time that their sailing-ship
+reaches Savannah the mail-boat will have carried this letter, and
+the cable will have informed the police of Savannah that these
+three gentlemen are badly wanted here upon a charge of murder."
+
+There is ever a flaw, however, in the best laid of human plans,
+and the murderers of John Openshaw were never to receive the
+orange pips which would show them that another, as cunning and as
+resolute as themselves, was upon their track. Very long and very
+severe were the equinoctial gales that year. We waited long for
+news of the "Lone Star" of Savannah, but none ever reached us. We
+did at last hear that somewhere far out in the Atlantic a
+shattered stern-post of a boat was seen swinging in the trough
+of a wave, with the letters "L. S." carved upon it, and that is
+all which we shall ever know of the fate of the "Lone Star."
+
+
+
+ADVENTURE VI. THE MAN WITH THE TWISTED LIP
+
+Isa Whitney, brother of the late Elias Whitney, D.D., Principal
+of the Theological College of St. George's, was much addicted to
+opium. The habit grew upon him, as I understand, from some
+foolish freak when he was at college; for having read De
+Quincey's description of his dreams and sensations, he had
+drenched his tobacco with laudanum in an attempt to produce the
+same effects. He found, as so many more have done, that the
+practice is easier to attain than to get rid of, and for many
+years he continued to be a slave to the drug, an object of
+mingled horror and pity to his friends and relatives. I can see
+him now, with yellow, pasty face, drooping lids, and pin-point
+pupils, all huddled in a chair, the wreck and ruin of a noble
+man.
+
+One night--it was in June, '89--there came a ring to my bell,
+about the hour when a man gives his first yawn and glances at the
+clock. I sat up in my chair, and my wife laid her needle-work
+down in her lap and made a little face of disappointment.
+
+"A patient!" said she. "You'll have to go out."
+
+I groaned, for I was newly come back from a weary day.
+
+We heard the door open, a few hurried words, and then quick steps
+upon the linoleum. Our own door flew open, and a lady, clad in
+some dark-coloured stuff, with a black veil, entered the room.
+
+"You will excuse my calling so late," she began, and then,
+suddenly losing her self-control, she ran forward, threw her arms
+about my wife's neck, and sobbed upon her shoulder. "Oh, I'm in
+such trouble!" she cried; "I do so want a little help."
+
+"Why," said my wife, pulling up her veil, "it is Kate Whitney.
+How you startled me, Kate! I had not an idea who you were when
+you came in."
+
+"I didn't know what to do, so I came straight to you." That was
+always the way. Folk who were in grief came to my wife like birds
+to a light-house.
+
+"It was very sweet of you to come. Now, you must have some wine
+and water, and sit here comfortably and tell us all about it. Or
+should you rather that I sent James off to bed?"
+
+"Oh, no, no! I want the doctor's advice and help, too. It's about
+Isa. He has not been home for two days. I am so frightened about
+him!"
+
+It was not the first time that she had spoken to us of her
+husband's trouble, to me as a doctor, to my wife as an old friend
+and school companion. We soothed and comforted her by such words
+as we could find. Did she know where her husband was? Was it
+possible that we could bring him back to her?
+
+It seems that it was. She had the surest information that of late
+he had, when the fit was on him, made use of an opium den in the
+farthest east of the City. Hitherto his orgies had always been
+confined to one day, and he had come back, twitching and
+shattered, in the evening. But now the spell had been upon him
+eight-and-forty hours, and he lay there, doubtless among the
+dregs of the docks, breathing in the poison or sleeping off the
+effects. There he was to be found, she was sure of it, at the Bar
+of Gold, in Upper Swandam Lane. But what was she to do? How could
+she, a young and timid woman, make her way into such a place and
+pluck her husband out from among the ruffians who surrounded him?
+
+There was the case, and of course there was but one way out of
+it. Might I not escort her to this place? And then, as a second
+thought, why should she come at all? I was Isa Whitney's medical
+adviser, and as such I had influence over him. I could manage it
+better if I were alone. I promised her on my word that I would
+send him home in a cab within two hours if he were indeed at the
+address which she had given me. And so in ten minutes I had left
+my armchair and cheery sitting-room behind me, and was speeding
+eastward in a hansom on a strange errand, as it seemed to me at
+the time, though the future only could show how strange it was to
+be.
+
+But there was no great difficulty in the first stage of my
+adventure. Upper Swandam Lane is a vile alley lurking behind the
+high wharves which line the north side of the river to the east
+of London Bridge. Between a slop-shop and a gin-shop, approached
+by a steep flight of steps leading down to a black gap like the
+mouth of a cave, I found the den of which I was in search.
+Ordering my cab to wait, I passed down the steps, worn hollow in
+the centre by the ceaseless tread of drunken feet; and by the
+light of a flickering oil-lamp above the door I found the latch
+and made my way into a long, low room, thick and heavy with the
+brown opium smoke, and terraced with wooden berths, like the
+forecastle of an emigrant ship.
+
+Through the gloom one could dimly catch a glimpse of bodies lying
+in strange fantastic poses, bowed shoulders, bent knees, heads
+thrown back, and chins pointing upward, with here and there a
+dark, lack-lustre eye turned upon the newcomer. Out of the black
+shadows there glimmered little red circles of light, now bright,
+now faint, as the burning poison waxed or waned in the bowls of
+the metal pipes. The most lay silent, but some muttered to
+themselves, and others talked together in a strange, low,
+monotonous voice, their conversation coming in gushes, and then
+suddenly tailing off into silence, each mumbling out his own
+thoughts and paying little heed to the words of his neighbour. At
+the farther end was a small brazier of burning charcoal, beside
+which on a three-legged wooden stool there sat a tall, thin old
+man, with his jaw resting upon his two fists, and his elbows upon
+his knees, staring into the fire.
+
+As I entered, a sallow Malay attendant had hurried up with a pipe
+for me and a supply of the drug, beckoning me to an empty berth.
+
+"Thank you. I have not come to stay," said I. "There is a friend
+of mine here, Mr. Isa Whitney, and I wish to speak with him."
+
+There was a movement and an exclamation from my right, and
+peering through the gloom, I saw Whitney, pale, haggard, and
+unkempt, staring out at me.
+
+"My God! It's Watson," said he. He was in a pitiable state of
+reaction, with every nerve in a twitter. "I say, Watson, what
+o'clock is it?"
+
+"Nearly eleven."
+
+"Of what day?"
+
+"Of Friday, June 19th."
+
+"Good heavens! I thought it was Wednesday. It is Wednesday. What
+d'you want to frighten a chap for?" He sank his face onto his
+arms and began to sob in a high treble key.
+
+"I tell you that it is Friday, man. Your wife has been waiting
+this two days for you. You should be ashamed of yourself!"
+
+"So I am. But you've got mixed, Watson, for I have only been here
+a few hours, three pipes, four pipes--I forget how many. But I'll
+go home with you. I wouldn't frighten Kate--poor little Kate.
+Give me your hand! Have you a cab?"
+
+"Yes, I have one waiting."
+
+"Then I shall go in it. But I must owe something. Find what I
+owe, Watson. I am all off colour. I can do nothing for myself."
+
+I walked down the narrow passage between the double row of
+sleepers, holding my breath to keep out the vile, stupefying
+fumes of the drug, and looking about for the manager. As I passed
+the tall man who sat by the brazier I felt a sudden pluck at my
+skirt, and a low voice whispered, "Walk past me, and then look
+back at me." The words fell quite distinctly upon my ear. I
+glanced down. They could only have come from the old man at my
+side, and yet he sat now as absorbed as ever, very thin, very
+wrinkled, bent with age, an opium pipe dangling down from between
+his knees, as though it had dropped in sheer lassitude from his
+fingers. I took two steps forward and looked back. It took all my
+self-control to prevent me from breaking out into a cry of
+astonishment. He had turned his back so that none could see him
+but I. His form had filled out, his wrinkles were gone, the dull
+eyes had regained their fire, and there, sitting by the fire and
+grinning at my surprise, was none other than Sherlock Holmes. He
+made a slight motion to me to approach him, and instantly, as he
+turned his face half round to the company once more, subsided
+into a doddering, loose-lipped senility.
+
+"Holmes!" I whispered, "what on earth are you doing in this den?"
+
+"As low as you can," he answered; "I have excellent ears. If you
+would have the great kindness to get rid of that sottish friend
+of yours I should be exceedingly glad to have a little talk with
+you."
+
+"I have a cab outside."
+
+"Then pray send him home in it. You may safely trust him, for he
+appears to be too limp to get into any mischief. I should
+recommend you also to send a note by the cabman to your wife to
+say that you have thrown in your lot with me. If you will wait
+outside, I shall be with you in five minutes."
+
+It was difficult to refuse any of Sherlock Holmes' requests, for
+they were always so exceedingly definite, and put forward with
+such a quiet air of mastery. I felt, however, that when Whitney
+was once confined in the cab my mission was practically
+accomplished; and for the rest, I could not wish anything better
+than to be associated with my friend in one of those singular
+adventures which were the normal condition of his existence. In a
+few minutes I had written my note, paid Whitney's bill, led him
+out to the cab, and seen him driven through the darkness. In a
+very short time a decrepit figure had emerged from the opium den,
+and I was walking down the street with Sherlock Holmes. For two
+streets he shuffled along with a bent back and an uncertain foot.
+Then, glancing quickly round, he straightened himself out and
+burst into a hearty fit of laughter.
+
+"I suppose, Watson," said he, "that you imagine that I have added
+opium-smoking to cocaine injections, and all the other little
+weaknesses on which you have favoured me with your medical
+views."
+
+"I was certainly surprised to find you there."
+
+"But not more so than I to find you."
+
+"I came to find a friend."
+
+"And I to find an enemy."
+
+"An enemy?"
+
+"Yes; one of my natural enemies, or, shall I say, my natural
+prey. Briefly, Watson, I am in the midst of a very remarkable
+inquiry, and I have hoped to find a clue in the incoherent
+ramblings of these sots, as I have done before now. Had I been
+recognised in that den my life would not have been worth an
+hour's purchase; for I have used it before now for my own
+purposes, and the rascally Lascar who runs it has sworn to have
+vengeance upon me. There is a trap-door at the back of that
+building, near the corner of Paul's Wharf, which could tell some
+strange tales of what has passed through it upon the moonless
+nights."
+
+"What! You do not mean bodies?"
+
+"Ay, bodies, Watson. We should be rich men if we had 1000 pounds
+for every poor devil who has been done to death in that den. It
+is the vilest murder-trap on the whole riverside, and I fear that
+Neville St. Clair has entered it never to leave it more. But our
+trap should be here." He put his two forefingers between his
+teeth and whistled shrilly--a signal which was answered by a
+similar whistle from the distance, followed shortly by the rattle
+of wheels and the clink of horses' hoofs.
+
+"Now, Watson," said Holmes, as a tall dog-cart dashed up through
+the gloom, throwing out two golden tunnels of yellow light from
+its side lanterns. "You'll come with me, won't you?"
+
+"If I can be of use."
+
+"Oh, a trusty comrade is always of use; and a chronicler still
+more so. My room at The Cedars is a double-bedded one."
+
+"The Cedars?"
+
+"Yes; that is Mr. St. Clair's house. I am staying there while I
+conduct the inquiry."
+
+"Where is it, then?"
+
+"Near Lee, in Kent. We have a seven-mile drive before us."
+
+"But I am all in the dark."
+
+"Of course you are. You'll know all about it presently. Jump up
+here. All right, John; we shall not need you. Here's half a
+crown. Look out for me to-morrow, about eleven. Give her her
+head. So long, then!"
+
+He flicked the horse with his whip, and we dashed away through
+the endless succession of sombre and deserted streets, which
+widened gradually, until we were flying across a broad
+balustraded bridge, with the murky river flowing sluggishly
+beneath us. Beyond lay another dull wilderness of bricks and
+mortar, its silence broken only by the heavy, regular footfall of
+the policeman, or the songs and shouts of some belated party of
+revellers. A dull wrack was drifting slowly across the sky, and a
+star or two twinkled dimly here and there through the rifts of
+the clouds. Holmes drove in silence, with his head sunk upon his
+breast, and the air of a man who is lost in thought, while I sat
+beside him, curious to learn what this new quest might be which
+seemed to tax his powers so sorely, and yet afraid to break in
+upon the current of his thoughts. We had driven several miles,
+and were beginning to get to the fringe of the belt of suburban
+villas, when he shook himself, shrugged his shoulders, and lit up
+his pipe with the air of a man who has satisfied himself that he
+is acting for the best.
+
+"You have a grand gift of silence, Watson," said he. "It makes
+you quite invaluable as a companion. 'Pon my word, it is a great
+thing for me to have someone to talk to, for my own thoughts are
+not over-pleasant. I was wondering what I should say to this dear
+little woman to-night when she meets me at the door."
+
+"You forget that I know nothing about it."
+
+"I shall just have time to tell you the facts of the case before
+we get to Lee. It seems absurdly simple, and yet, somehow I can
+get nothing to go upon. There's plenty of thread, no doubt, but I
+can't get the end of it into my hand. Now, I'll state the case
+clearly and concisely to you, Watson, and maybe you can see a
+spark where all is dark to me."
+
+"Proceed, then."
+
+"Some years ago--to be definite, in May, 1884--there came to Lee
+a gentleman, Neville St. Clair by name, who appeared to have
+plenty of money. He took a large villa, laid out the grounds very
+nicely, and lived generally in good style. By degrees he made
+friends in the neighbourhood, and in 1887 he married the daughter
+of a local brewer, by whom he now has two children. He had no
+occupation, but was interested in several companies and went into
+town as a rule in the morning, returning by the 5:14 from Cannon
+Street every night. Mr. St. Clair is now thirty-seven years of
+age, is a man of temperate habits, a good husband, a very
+affectionate father, and a man who is popular with all who know
+him. I may add that his whole debts at the present moment, as far
+as we have been able to ascertain, amount to 88 pounds 10s., while
+he has 220 pounds standing to his credit in the Capital and
+Counties Bank. There is no reason, therefore, to think that money
+troubles have been weighing upon his mind.
+
+"Last Monday Mr. Neville St. Clair went into town rather earlier
+than usual, remarking before he started that he had two important
+commissions to perform, and that he would bring his little boy
+home a box of bricks. Now, by the merest chance, his wife
+received a telegram upon this same Monday, very shortly after his
+departure, to the effect that a small parcel of considerable
+value which she had been expecting was waiting for her at the
+offices of the Aberdeen Shipping Company. Now, if you are well up
+in your London, you will know that the office of the company is
+in Fresno Street, which branches out of Upper Swandam Lane, where
+you found me to-night. Mrs. St. Clair had her lunch, started for
+the City, did some shopping, proceeded to the company's office,
+got her packet, and found herself at exactly 4:35 walking through
+Swandam Lane on her way back to the station. Have you followed me
+so far?"
+
+"It is very clear."
+
+"If you remember, Monday was an exceedingly hot day, and Mrs. St.
+Clair walked slowly, glancing about in the hope of seeing a cab,
+as she did not like the neighbourhood in which she found herself.
+While she was walking in this way down Swandam Lane, she suddenly
+heard an ejaculation or cry, and was struck cold to see her
+husband looking down at her and, as it seemed to her, beckoning
+to her from a second-floor window. The window was open, and she
+distinctly saw his face, which she describes as being terribly
+agitated. He waved his hands frantically to her, and then
+vanished from the window so suddenly that it seemed to her that
+he had been plucked back by some irresistible force from behind.
+One singular point which struck her quick feminine eye was that
+although he wore some dark coat, such as he had started to town
+in, he had on neither collar nor necktie.
+
+"Convinced that something was amiss with him, she rushed down the
+steps--for the house was none other than the opium den in which
+you found me to-night--and running through the front room she
+attempted to ascend the stairs which led to the first floor. At
+the foot of the stairs, however, she met this Lascar scoundrel of
+whom I have spoken, who thrust her back and, aided by a Dane, who
+acts as assistant there, pushed her out into the street. Filled
+with the most maddening doubts and fears, she rushed down the
+lane and, by rare good-fortune, met in Fresno Street a number of
+constables with an inspector, all on their way to their beat. The
+inspector and two men accompanied her back, and in spite of the
+continued resistance of the proprietor, they made their way to
+the room in which Mr. St. Clair had last been seen. There was no
+sign of him there. In fact, in the whole of that floor there was
+no one to be found save a crippled wretch of hideous aspect, who,
+it seems, made his home there. Both he and the Lascar stoutly
+swore that no one else had been in the front room during the
+afternoon. So determined was their denial that the inspector was
+staggered, and had almost come to believe that Mrs. St. Clair had
+been deluded when, with a cry, she sprang at a small deal box
+which lay upon the table and tore the lid from it. Out there fell
+a cascade of children's bricks. It was the toy which he had
+promised to bring home.
+
+"This discovery, and the evident confusion which the cripple
+showed, made the inspector realise that the matter was serious.
+The rooms were carefully examined, and results all pointed to an
+abominable crime. The front room was plainly furnished as a
+sitting-room and led into a small bedroom, which looked out upon
+the back of one of the wharves. Between the wharf and the bedroom
+window is a narrow strip, which is dry at low tide but is covered
+at high tide with at least four and a half feet of water. The
+bedroom window was a broad one and opened from below. On
+examination traces of blood were to be seen upon the windowsill,
+and several scattered drops were visible upon the wooden floor of
+the bedroom. Thrust away behind a curtain in the front room were
+all the clothes of Mr. Neville St. Clair, with the exception of
+his coat. His boots, his socks, his hat, and his watch--all were
+there. There were no signs of violence upon any of these
+garments, and there were no other traces of Mr. Neville St.
+Clair. Out of the window he must apparently have gone for no
+other exit could be discovered, and the ominous bloodstains upon
+the sill gave little promise that he could save himself by
+swimming, for the tide was at its very highest at the moment of
+the tragedy.
+
+"And now as to the villains who seemed to be immediately
+implicated in the matter. The Lascar was known to be a man of the
+vilest antecedents, but as, by Mrs. St. Clair's story, he was
+known to have been at the foot of the stair within a very few
+seconds of her husband's appearance at the window, he could
+hardly have been more than an accessory to the crime. His defence
+was one of absolute ignorance, and he protested that he had no
+knowledge as to the doings of Hugh Boone, his lodger, and that he
+could not account in any way for the presence of the missing
+gentleman's clothes.
+
+"So much for the Lascar manager. Now for the sinister cripple who
+lives upon the second floor of the opium den, and who was
+certainly the last human being whose eyes rested upon Neville St.
+Clair. His name is Hugh Boone, and his hideous face is one which
+is familiar to every man who goes much to the City. He is a
+professional beggar, though in order to avoid the police
+regulations he pretends to a small trade in wax vestas. Some
+little distance down Threadneedle Street, upon the left-hand
+side, there is, as you may have remarked, a small angle in the
+wall. Here it is that this creature takes his daily seat,
+cross-legged with his tiny stock of matches on his lap, and as he
+is a piteous spectacle a small rain of charity descends into the
+greasy leather cap which lies upon the pavement beside him. I
+have watched the fellow more than once before ever I thought of
+making his professional acquaintance, and I have been surprised
+at the harvest which he has reaped in a short time. His
+appearance, you see, is so remarkable that no one can pass him
+without observing him. A shock of orange hair, a pale face
+disfigured by a horrible scar, which, by its contraction, has
+turned up the outer edge of his upper lip, a bulldog chin, and a
+pair of very penetrating dark eyes, which present a singular
+contrast to the colour of his hair, all mark him out from amid
+the common crowd of mendicants and so, too, does his wit, for he
+is ever ready with a reply to any piece of chaff which may be
+thrown at him by the passers-by. This is the man whom we now
+learn to have been the lodger at the opium den, and to have been
+the last man to see the gentleman of whom we are in quest."
+
+"But a cripple!" said I. "What could he have done single-handed
+against a man in the prime of life?"
+
+"He is a cripple in the sense that he walks with a limp; but in
+other respects he appears to be a powerful and well-nurtured man.
+Surely your medical experience would tell you, Watson, that
+weakness in one limb is often compensated for by exceptional
+strength in the others."
+
+"Pray continue your narrative."
+
+"Mrs. St. Clair had fainted at the sight of the blood upon the
+window, and she was escorted home in a cab by the police, as her
+presence could be of no help to them in their investigations.
+Inspector Barton, who had charge of the case, made a very careful
+examination of the premises, but without finding anything which
+threw any light upon the matter. One mistake had been made in not
+arresting Boone instantly, as he was allowed some few minutes
+during which he might have communicated with his friend the
+Lascar, but this fault was soon remedied, and he was seized and
+searched, without anything being found which could incriminate
+him. There were, it is true, some blood-stains upon his right
+shirt-sleeve, but he pointed to his ring-finger, which had been
+cut near the nail, and explained that the bleeding came from
+there, adding that he had been to the window not long before, and
+that the stains which had been observed there came doubtless from
+the same source. He denied strenuously having ever seen Mr.
+Neville St. Clair and swore that the presence of the clothes in
+his room was as much a mystery to him as to the police. As to
+Mrs. St. Clair's assertion that she had actually seen her husband
+at the window, he declared that she must have been either mad or
+dreaming. He was removed, loudly protesting, to the
+police-station, while the inspector remained upon the premises in
+the hope that the ebbing tide might afford some fresh clue.
+
+"And it did, though they hardly found upon the mud-bank what they
+had feared to find. It was Neville St. Clair's coat, and not
+Neville St. Clair, which lay uncovered as the tide receded. And
+what do you think they found in the pockets?"
+
+"I cannot imagine."
+
+"No, I don't think you would guess. Every pocket stuffed with
+pennies and half-pennies--421 pennies and 270 half-pennies. It
+was no wonder that it had not been swept away by the tide. But a
+human body is a different matter. There is a fierce eddy between
+the wharf and the house. It seemed likely enough that the
+weighted coat had remained when the stripped body had been sucked
+away into the river."
+
+"But I understand that all the other clothes were found in the
+room. Would the body be dressed in a coat alone?"
+
+"No, sir, but the facts might be met speciously enough. Suppose
+that this man Boone had thrust Neville St. Clair through the
+window, there is no human eye which could have seen the deed.
+What would he do then? It would of course instantly strike him
+that he must get rid of the tell-tale garments. He would seize
+the coat, then, and be in the act of throwing it out, when it
+would occur to him that it would swim and not sink. He has little
+time, for he has heard the scuffle downstairs when the wife tried
+to force her way up, and perhaps he has already heard from his
+Lascar confederate that the police are hurrying up the street.
+There is not an instant to be lost. He rushes to some secret
+hoard, where he has accumulated the fruits of his beggary, and he
+stuffs all the coins upon which he can lay his hands into the
+pockets to make sure of the coat's sinking. He throws it out, and
+would have done the same with the other garments had not he heard
+the rush of steps below, and only just had time to close the
+window when the police appeared."
+
+"It certainly sounds feasible."
+
+"Well, we will take it as a working hypothesis for want of a
+better. Boone, as I have told you, was arrested and taken to the
+station, but it could not be shown that there had ever before
+been anything against him. He had for years been known as a
+professional beggar, but his life appeared to have been a very
+quiet and innocent one. There the matter stands at present, and
+the questions which have to be solved--what Neville St. Clair was
+doing in the opium den, what happened to him when there, where is
+he now, and what Hugh Boone had to do with his disappearance--are
+all as far from a solution as ever. I confess that I cannot
+recall any case within my experience which looked at the first
+glance so simple and yet which presented such difficulties."
+
+While Sherlock Holmes had been detailing this singular series of
+events, we had been whirling through the outskirts of the great
+town until the last straggling houses had been left behind, and
+we rattled along with a country hedge upon either side of us.
+Just as he finished, however, we drove through two scattered
+villages, where a few lights still glimmered in the windows.
+
+"We are on the outskirts of Lee," said my companion. "We have
+touched on three English counties in our short drive, starting in
+Middlesex, passing over an angle of Surrey, and ending in Kent.
+See that light among the trees? That is The Cedars, and beside
+that lamp sits a woman whose anxious ears have already, I have
+little doubt, caught the clink of our horse's feet."
+
+"But why are you not conducting the case from Baker Street?" I
+asked.
+
+"Because there are many inquiries which must be made out here.
+Mrs. St. Clair has most kindly put two rooms at my disposal, and
+you may rest assured that she will have nothing but a welcome for
+my friend and colleague. I hate to meet her, Watson, when I have
+no news of her husband. Here we are. Whoa, there, whoa!"
+
+We had pulled up in front of a large villa which stood within its
+own grounds. A stable-boy had run out to the horse's head, and
+springing down, I followed Holmes up the small, winding
+gravel-drive which led to the house. As we approached, the door
+flew open, and a little blonde woman stood in the opening, clad
+in some sort of light mousseline de soie, with a touch of fluffy
+pink chiffon at her neck and wrists. She stood with her figure
+outlined against the flood of light, one hand upon the door, one
+half-raised in her eagerness, her body slightly bent, her head
+and face protruded, with eager eyes and parted lips, a standing
+question.
+
+"Well?" she cried, "well?" And then, seeing that there were two
+of us, she gave a cry of hope which sank into a groan as she saw
+that my companion shook his head and shrugged his shoulders.
+
+"No good news?"
+
+"None."
+
+"No bad?"
+
+"No."
+
+"Thank God for that. But come in. You must be weary, for you have
+had a long day."
+
+"This is my friend, Dr. Watson. He has been of most vital use to
+me in several of my cases, and a lucky chance has made it
+possible for me to bring him out and associate him with this
+investigation."
+
+"I am delighted to see you," said she, pressing my hand warmly.
+"You will, I am sure, forgive anything that may be wanting in our
+arrangements, when you consider the blow which has come so
+suddenly upon us."
+
+"My dear madam," said I, "I am an old campaigner, and if I were
+not I can very well see that no apology is needed. If I can be of
+any assistance, either to you or to my friend here, I shall be
+indeed happy."
+
+"Now, Mr. Sherlock Holmes," said the lady as we entered a
+well-lit dining-room, upon the table of which a cold supper had
+been laid out, "I should very much like to ask you one or two
+plain questions, to which I beg that you will give a plain
+answer."
+
+"Certainly, madam."
+
+"Do not trouble about my feelings. I am not hysterical, nor given
+to fainting. I simply wish to hear your real, real opinion."
+
+"Upon what point?"
+
+"In your heart of hearts, do you think that Neville is alive?"
+
+Sherlock Holmes seemed to be embarrassed by the question.
+"Frankly, now!" she repeated, standing upon the rug and looking
+keenly down at him as he leaned back in a basket-chair.
+
+"Frankly, then, madam, I do not."
+
+"You think that he is dead?"
+
+"I do."
+
+"Murdered?"
+
+"I don't say that. Perhaps."
+
+"And on what day did he meet his death?"
+
+"On Monday."
+
+"Then perhaps, Mr. Holmes, you will be good enough to explain how
+it is that I have received a letter from him to-day."
+
+Sherlock Holmes sprang out of his chair as if he had been
+galvanised.
+
+"What!" he roared.
+
+"Yes, to-day." She stood smiling, holding up a little slip of
+paper in the air.
+
+"May I see it?"
+
+"Certainly."
+
+He snatched it from her in his eagerness, and smoothing it out
+upon the table he drew over the lamp and examined it intently. I
+had left my chair and was gazing at it over his shoulder. The
+envelope was a very coarse one and was stamped with the Gravesend
+postmark and with the date of that very day, or rather of the day
+before, for it was considerably after midnight.
+
+"Coarse writing," murmured Holmes. "Surely this is not your
+husband's writing, madam."
+
+"No, but the enclosure is."
+
+"I perceive also that whoever addressed the envelope had to go
+and inquire as to the address."
+
+"How can you tell that?"
+
+"The name, you see, is in perfectly black ink, which has dried
+itself. The rest is of the greyish colour, which shows that
+blotting-paper has been used. If it had been written straight
+off, and then blotted, none would be of a deep black shade. This
+man has written the name, and there has then been a pause before
+he wrote the address, which can only mean that he was not
+familiar with it. It is, of course, a trifle, but there is
+nothing so important as trifles. Let us now see the letter. Ha!
+there has been an enclosure here!"
+
+"Yes, there was a ring. His signet-ring."
+
+"And you are sure that this is your husband's hand?"
+
+"One of his hands."
+
+"One?"
+
+"His hand when he wrote hurriedly. It is very unlike his usual
+writing, and yet I know it well."
+
+"'Dearest do not be frightened. All will come well. There is a
+huge error which it may take some little time to rectify.
+Wait in patience.--NEVILLE.' Written in pencil upon the fly-leaf
+of a book, octavo size, no water-mark. Hum! Posted to-day in
+Gravesend by a man with a dirty thumb. Ha! And the flap has been
+gummed, if I am not very much in error, by a person who had been
+chewing tobacco. And you have no doubt that it is your husband's
+hand, madam?"
+
+"None. Neville wrote those words."
+
+"And they were posted to-day at Gravesend. Well, Mrs. St. Clair,
+the clouds lighten, though I should not venture to say that the
+danger is over."
+
+"But he must be alive, Mr. Holmes."
+
+"Unless this is a clever forgery to put us on the wrong scent.
+The ring, after all, proves nothing. It may have been taken from
+him."
+
+"No, no; it is, it is his very own writing!"
+
+"Very well. It may, however, have been written on Monday and only
+posted to-day."
+
+"That is possible."
+
+"If so, much may have happened between."
+
+"Oh, you must not discourage me, Mr. Holmes. I know that all is
+well with him. There is so keen a sympathy between us that I
+should know if evil came upon him. On the very day that I saw him
+last he cut himself in the bedroom, and yet I in the dining-room
+rushed upstairs instantly with the utmost certainty that
+something had happened. Do you think that I would respond to such
+a trifle and yet be ignorant of his death?"
+
+"I have seen too much not to know that the impression of a woman
+may be more valuable than the conclusion of an analytical
+reasoner. And in this letter you certainly have a very strong
+piece of evidence to corroborate your view. But if your husband
+is alive and able to write letters, why should he remain away
+from you?"
+
+"I cannot imagine. It is unthinkable."
+
+"And on Monday he made no remarks before leaving you?"
+
+"No."
+
+"And you were surprised to see him in Swandam Lane?"
+
+"Very much so."
+
+"Was the window open?"
+
+"Yes."
+
+"Then he might have called to you?"
+
+"He might."
+
+"He only, as I understand, gave an inarticulate cry?"
+
+"Yes."
+
+"A call for help, you thought?"
+
+"Yes. He waved his hands."
+
+"But it might have been a cry of surprise. Astonishment at the
+unexpected sight of you might cause him to throw up his hands?"
+
+"It is possible."
+
+"And you thought he was pulled back?"
+
+"He disappeared so suddenly."
+
+"He might have leaped back. You did not see anyone else in the
+room?"
+
+"No, but this horrible man confessed to having been there, and
+the Lascar was at the foot of the stairs."
+
+"Quite so. Your husband, as far as you could see, had his
+ordinary clothes on?"
+
+"But without his collar or tie. I distinctly saw his bare
+throat."
+
+"Had he ever spoken of Swandam Lane?"
+
+"Never."
+
+"Had he ever showed any signs of having taken opium?"
+
+"Never."
+
+"Thank you, Mrs. St. Clair. Those are the principal points about
+which I wished to be absolutely clear. We shall now have a little
+supper and then retire, for we may have a very busy day
+to-morrow."
+
+A large and comfortable double-bedded room had been placed at our
+disposal, and I was quickly between the sheets, for I was weary
+after my night of adventure. Sherlock Holmes was a man, however,
+who, when he had an unsolved problem upon his mind, would go for
+days, and even for a week, without rest, turning it over,
+rearranging his facts, looking at it from every point of view
+until he had either fathomed it or convinced himself that his
+data were insufficient. It was soon evident to me that he was now
+preparing for an all-night sitting. He took off his coat and
+waistcoat, put on a large blue dressing-gown, and then wandered
+about the room collecting pillows from his bed and cushions from
+the sofa and armchairs. With these he constructed a sort of
+Eastern divan, upon which he perched himself cross-legged, with
+an ounce of shag tobacco and a box of matches laid out in front
+of him. In the dim light of the lamp I saw him sitting there, an
+old briar pipe between his lips, his eyes fixed vacantly upon the
+corner of the ceiling, the blue smoke curling up from him,
+silent, motionless, with the light shining upon his strong-set
+aquiline features. So he sat as I dropped off to sleep, and so he
+sat when a sudden ejaculation caused me to wake up, and I found
+the summer sun shining into the apartment. The pipe was still
+between his lips, the smoke still curled upward, and the room was
+full of a dense tobacco haze, but nothing remained of the heap of
+shag which I had seen upon the previous night.
+
+"Awake, Watson?" he asked.
+
+"Yes."
+
+"Game for a morning drive?"
+
+"Certainly."
+
+"Then dress. No one is stirring yet, but I know where the
+stable-boy sleeps, and we shall soon have the trap out." He
+chuckled to himself as he spoke, his eyes twinkled, and he seemed
+a different man to the sombre thinker of the previous night.
+
+As I dressed I glanced at my watch. It was no wonder that no one
+was stirring. It was twenty-five minutes past four. I had hardly
+finished when Holmes returned with the news that the boy was
+putting in the horse.
+
+"I want to test a little theory of mine," said he, pulling on his
+boots. "I think, Watson, that you are now standing in the
+presence of one of the most absolute fools in Europe. I deserve
+to be kicked from here to Charing Cross. But I think I have the
+key of the affair now."
+
+"And where is it?" I asked, smiling.
+
+"In the bathroom," he answered. "Oh, yes, I am not joking," he
+continued, seeing my look of incredulity. "I have just been
+there, and I have taken it out, and I have got it in this
+Gladstone bag. Come on, my boy, and we shall see whether it will
+not fit the lock."
+
+We made our way downstairs as quietly as possible, and out into
+the bright morning sunshine. In the road stood our horse and
+trap, with the half-clad stable-boy waiting at the head. We both
+sprang in, and away we dashed down the London Road. A few country
+carts were stirring, bearing in vegetables to the metropolis, but
+the lines of villas on either side were as silent and lifeless as
+some city in a dream.
+
+"It has been in some points a singular case," said Holmes,
+flicking the horse on into a gallop. "I confess that I have been
+as blind as a mole, but it is better to learn wisdom late than
+never to learn it at all."
+
+In town the earliest risers were just beginning to look sleepily
+from their windows as we drove through the streets of the Surrey
+side. Passing down the Waterloo Bridge Road we crossed over the
+river, and dashing up Wellington Street wheeled sharply to the
+right and found ourselves in Bow Street. Sherlock Holmes was well
+known to the force, and the two constables at the door saluted
+him. One of them held the horse's head while the other led us in.
+
+"Who is on duty?" asked Holmes.
+
+"Inspector Bradstreet, sir."
+
+"Ah, Bradstreet, how are you?" A tall, stout official had come
+down the stone-flagged passage, in a peaked cap and frogged
+jacket. "I wish to have a quiet word with you, Bradstreet."
+"Certainly, Mr. Holmes. Step into my room here." It was a small,
+office-like room, with a huge ledger upon the table, and a
+telephone projecting from the wall. The inspector sat down at his
+desk.
+
+"What can I do for you, Mr. Holmes?"
+
+"I called about that beggarman, Boone--the one who was charged
+with being concerned in the disappearance of Mr. Neville St.
+Clair, of Lee."
+
+"Yes. He was brought up and remanded for further inquiries."
+
+"So I heard. You have him here?"
+
+"In the cells."
+
+"Is he quiet?"
+
+"Oh, he gives no trouble. But he is a dirty scoundrel."
+
+"Dirty?"
+
+"Yes, it is all we can do to make him wash his hands, and his
+face is as black as a tinker's. Well, when once his case has been
+settled, he will have a regular prison bath; and I think, if you
+saw him, you would agree with me that he needed it."
+
+"I should like to see him very much."
+
+"Would you? That is easily done. Come this way. You can leave
+your bag."
+
+"No, I think that I'll take it."
+
+"Very good. Come this way, if you please." He led us down a
+passage, opened a barred door, passed down a winding stair, and
+brought us to a whitewashed corridor with a line of doors on each
+side.
+
+"The third on the right is his," said the inspector. "Here it
+is!" He quietly shot back a panel in the upper part of the door
+and glanced through.
+
+"He is asleep," said he. "You can see him very well."
+
+We both put our eyes to the grating. The prisoner lay with his
+face towards us, in a very deep sleep, breathing slowly and
+heavily. He was a middle-sized man, coarsely clad as became his
+calling, with a coloured shirt protruding through the rent in his
+tattered coat. He was, as the inspector had said, extremely
+dirty, but the grime which covered his face could not conceal its
+repulsive ugliness. A broad wheal from an old scar ran right
+across it from eye to chin, and by its contraction had turned up
+one side of the upper lip, so that three teeth were exposed in a
+perpetual snarl. A shock of very bright red hair grew low over
+his eyes and forehead.
+
+"He's a beauty, isn't he?" said the inspector.
+
+"He certainly needs a wash," remarked Holmes. "I had an idea that
+he might, and I took the liberty of bringing the tools with me."
+He opened the Gladstone bag as he spoke, and took out, to my
+astonishment, a very large bath-sponge.
+
+"He! he! You are a funny one," chuckled the inspector.
+
+"Now, if you will have the great goodness to open that door very
+quietly, we will soon make him cut a much more respectable
+figure."
+
+"Well, I don't know why not," said the inspector. "He doesn't
+look a credit to the Bow Street cells, does he?" He slipped his
+key into the lock, and we all very quietly entered the cell. The
+sleeper half turned, and then settled down once more into a deep
+slumber. Holmes stooped to the water-jug, moistened his sponge,
+and then rubbed it twice vigorously across and down the
+prisoner's face.
+
+"Let me introduce you," he shouted, "to Mr. Neville St. Clair, of
+Lee, in the county of Kent."
+
+Never in my life have I seen such a sight. The man's face peeled
+off under the sponge like the bark from a tree. Gone was the
+coarse brown tint! Gone, too, was the horrid scar which had
+seamed it across, and the twisted lip which had given the
+repulsive sneer to the face! A twitch brought away the tangled
+red hair, and there, sitting up in his bed, was a pale,
+sad-faced, refined-looking man, black-haired and smooth-skinned,
+rubbing his eyes and staring about him with sleepy bewilderment.
+Then suddenly realising the exposure, he broke into a scream and
+threw himself down with his face to the pillow.
+
+"Great heavens!" cried the inspector, "it is, indeed, the missing
+man. I know him from the photograph."
+
+The prisoner turned with the reckless air of a man who abandons
+himself to his destiny. "Be it so," said he. "And pray what am I
+charged with?"
+
+"With making away with Mr. Neville St.-- Oh, come, you can't be
+charged with that unless they make a case of attempted suicide of
+it," said the inspector with a grin. "Well, I have been
+twenty-seven years in the force, but this really takes the cake."
+
+"If I am Mr. Neville St. Clair, then it is obvious that no crime
+has been committed, and that, therefore, I am illegally
+detained."
+
+"No crime, but a very great error has been committed," said
+Holmes. "You would have done better to have trusted your wife."
+
+"It was not the wife; it was the children," groaned the prisoner.
+"God help me, I would not have them ashamed of their father. My
+God! What an exposure! What can I do?"
+
+Sherlock Holmes sat down beside him on the couch and patted him
+kindly on the shoulder.
+
+"If you leave it to a court of law to clear the matter up," said
+he, "of course you can hardly avoid publicity. On the other hand,
+if you convince the police authorities that there is no possible
+case against you, I do not know that there is any reason that the
+details should find their way into the papers. Inspector
+Bradstreet would, I am sure, make notes upon anything which you
+might tell us and submit it to the proper authorities. The case
+would then never go into court at all."
+
+"God bless you!" cried the prisoner passionately. "I would have
+endured imprisonment, ay, even execution, rather than have left
+my miserable secret as a family blot to my children.
+
+"You are the first who have ever heard my story. My father was a
+schoolmaster in Chesterfield, where I received an excellent
+education. I travelled in my youth, took to the stage, and
+finally became a reporter on an evening paper in London. One day
+my editor wished to have a series of articles upon begging in the
+metropolis, and I volunteered to supply them. There was the point
+from which all my adventures started. It was only by trying
+begging as an amateur that I could get the facts upon which to
+base my articles. When an actor I had, of course, learned all the
+secrets of making up, and had been famous in the green-room for
+my skill. I took advantage now of my attainments. I painted my
+face, and to make myself as pitiable as possible I made a good
+scar and fixed one side of my lip in a twist by the aid of a
+small slip of flesh-coloured plaster. Then with a red head of
+hair, and an appropriate dress, I took my station in the business
+part of the city, ostensibly as a match-seller but really as a
+beggar. For seven hours I plied my trade, and when I returned
+home in the evening I found to my surprise that I had received no
+less than 26s. 4d.
+
+"I wrote my articles and thought little more of the matter until,
+some time later, I backed a bill for a friend and had a writ
+served upon me for 25 pounds. I was at my wit's end where to get
+the money, but a sudden idea came to me. I begged a fortnight's
+grace from the creditor, asked for a holiday from my employers,
+and spent the time in begging in the City under my disguise. In
+ten days I had the money and had paid the debt.
+
+"Well, you can imagine how hard it was to settle down to arduous
+work at 2 pounds a week when I knew that I could earn as much in
+a day by smearing my face with a little paint, laying my cap on
+the ground, and sitting still. It was a long fight between my
+pride and the money, but the dollars won at last, and I threw up
+reporting and sat day after day in the corner which I had first
+chosen, inspiring pity by my ghastly face and filling my pockets
+with coppers. Only one man knew my secret. He was the keeper of a
+low den in which I used to lodge in Swandam Lane, where I could
+every morning emerge as a squalid beggar and in the evenings
+transform myself into a well-dressed man about town. This fellow,
+a Lascar, was well paid by me for his rooms, so that I knew that
+my secret was safe in his possession.
+
+"Well, very soon I found that I was saving considerable sums of
+money. I do not mean that any beggar in the streets of London
+could earn 700 pounds a year--which is less than my average
+takings--but I had exceptional advantages in my power of making
+up, and also in a facility of repartee, which improved by
+practice and made me quite a recognised character in the City.
+All day a stream of pennies, varied by silver, poured in upon me,
+and it was a very bad day in which I failed to take 2 pounds.
+
+"As I grew richer I grew more ambitious, took a house in the
+country, and eventually married, without anyone having a
+suspicion as to my real occupation. My dear wife knew that I had
+business in the City. She little knew what.
+
+"Last Monday I had finished for the day and was dressing in my
+room above the opium den when I looked out of my window and saw,
+to my horror and astonishment, that my wife was standing in the
+street, with her eyes fixed full upon me. I gave a cry of
+surprise, threw up my arms to cover my face, and, rushing to my
+confidant, the Lascar, entreated him to prevent anyone from
+coming up to me. I heard her voice downstairs, but I knew that
+she could not ascend. Swiftly I threw off my clothes, pulled on
+those of a beggar, and put on my pigments and wig. Even a wife's
+eyes could not pierce so complete a disguise. But then it
+occurred to me that there might be a search in the room, and that
+the clothes might betray me. I threw open the window, reopening
+by my violence a small cut which I had inflicted upon myself in
+the bedroom that morning. Then I seized my coat, which was
+weighted by the coppers which I had just transferred to it from
+the leather bag in which I carried my takings. I hurled it out of
+the window, and it disappeared into the Thames. The other clothes
+would have followed, but at that moment there was a rush of
+constables up the stair, and a few minutes after I found, rather,
+I confess, to my relief, that instead of being identified as Mr.
+Neville St. Clair, I was arrested as his murderer.
+
+"I do not know that there is anything else for me to explain. I
+was determined to preserve my disguise as long as possible, and
+hence my preference for a dirty face. Knowing that my wife would
+be terribly anxious, I slipped off my ring and confided it to the
+Lascar at a moment when no constable was watching me, together
+with a hurried scrawl, telling her that she had no cause to
+fear."
+
+"That note only reached her yesterday," said Holmes.
+
+"Good God! What a week she must have spent!"
+
+"The police have watched this Lascar," said Inspector Bradstreet,
+"and I can quite understand that he might find it difficult to
+post a letter unobserved. Probably he handed it to some sailor
+customer of his, who forgot all about it for some days."
+
+"That was it," said Holmes, nodding approvingly; "I have no doubt
+of it. But have you never been prosecuted for begging?"
+
+"Many times; but what was a fine to me?"
+
+"It must stop here, however," said Bradstreet. "If the police are
+to hush this thing up, there must be no more of Hugh Boone."
+
+"I have sworn it by the most solemn oaths which a man can take."
+
+"In that case I think that it is probable that no further steps
+may be taken. But if you are found again, then all must come out.
+I am sure, Mr. Holmes, that we are very much indebted to you for
+having cleared the matter up. I wish I knew how you reach your
+results."
+
+"I reached this one," said my friend, "by sitting upon five
+pillows and consuming an ounce of shag. I think, Watson, that if
+we drive to Baker Street we shall just be in time for breakfast."
+
+
+
+VII. THE ADVENTURE OF THE BLUE CARBUNCLE
+
+I had called upon my friend Sherlock Holmes upon the second
+morning after Christmas, with the intention of wishing him the
+compliments of the season. He was lounging upon the sofa in a
+purple dressing-gown, a pipe-rack within his reach upon the
+right, and a pile of crumpled morning papers, evidently newly
+studied, near at hand. Beside the couch was a wooden chair, and
+on the angle of the back hung a very seedy and disreputable
+hard-felt hat, much the worse for wear, and cracked in several
+places. A lens and a forceps lying upon the seat of the chair
+suggested that the hat had been suspended in this manner for the
+purpose of examination.
+
+"You are engaged," said I; "perhaps I interrupt you."
+
+"Not at all. I am glad to have a friend with whom I can discuss
+my results. The matter is a perfectly trivial one"--he jerked his
+thumb in the direction of the old hat--"but there are points in
+connection with it which are not entirely devoid of interest and
+even of instruction."
+
+I seated myself in his armchair and warmed my hands before his
+crackling fire, for a sharp frost had set in, and the windows
+were thick with the ice crystals. "I suppose," I remarked, "that,
+homely as it looks, this thing has some deadly story linked on to
+it--that it is the clue which will guide you in the solution of
+some mystery and the punishment of some crime."
+
+"No, no. No crime," said Sherlock Holmes, laughing. "Only one of
+those whimsical little incidents which will happen when you have
+four million human beings all jostling each other within the
+space of a few square miles. Amid the action and reaction of so
+dense a swarm of humanity, every possible combination of events
+may be expected to take place, and many a little problem will be
+presented which may be striking and bizarre without being
+criminal. We have already had experience of such."
+
+"So much so," I remarked, "that of the last six cases which I
+have added to my notes, three have been entirely free of any
+legal crime."
+
+"Precisely. You allude to my attempt to recover the Irene Adler
+papers, to the singular case of Miss Mary Sutherland, and to the
+adventure of the man with the twisted lip. Well, I have no doubt
+that this small matter will fall into the same innocent category.
+You know Peterson, the commissionaire?"
+
+"Yes."
+
+"It is to him that this trophy belongs."
+
+"It is his hat."
+
+"No, no, he found it. Its owner is unknown. I beg that you will
+look upon it not as a battered billycock but as an intellectual
+problem. And, first, as to how it came here. It arrived upon
+Christmas morning, in company with a good fat goose, which is, I
+have no doubt, roasting at this moment in front of Peterson's
+fire. The facts are these: about four o'clock on Christmas
+morning, Peterson, who, as you know, is a very honest fellow, was
+returning from some small jollification and was making his way
+homeward down Tottenham Court Road. In front of him he saw, in
+the gaslight, a tallish man, walking with a slight stagger, and
+carrying a white goose slung over his shoulder. As he reached the
+corner of Goodge Street, a row broke out between this stranger
+and a little knot of roughs. One of the latter knocked off the
+man's hat, on which he raised his stick to defend himself and,
+swinging it over his head, smashed the shop window behind him.
+Peterson had rushed forward to protect the stranger from his
+assailants; but the man, shocked at having broken the window, and
+seeing an official-looking person in uniform rushing towards him,
+dropped his goose, took to his heels, and vanished amid the
+labyrinth of small streets which lie at the back of Tottenham
+Court Road. The roughs had also fled at the appearance of
+Peterson, so that he was left in possession of the field of
+battle, and also of the spoils of victory in the shape of this
+battered hat and a most unimpeachable Christmas goose."
+
+"Which surely he restored to their owner?"
+
+"My dear fellow, there lies the problem. It is true that 'For
+Mrs. Henry Baker' was printed upon a small card which was tied to
+the bird's left leg, and it is also true that the initials 'H.
+B.' are legible upon the lining of this hat, but as there are
+some thousands of Bakers, and some hundreds of Henry Bakers in
+this city of ours, it is not easy to restore lost property to any
+one of them."
+
+"What, then, did Peterson do?"
+
+"He brought round both hat and goose to me on Christmas morning,
+knowing that even the smallest problems are of interest to me.
+The goose we retained until this morning, when there were signs
+that, in spite of the slight frost, it would be well that it
+should be eaten without unnecessary delay. Its finder has carried
+it off, therefore, to fulfil the ultimate destiny of a goose,
+while I continue to retain the hat of the unknown gentleman who
+lost his Christmas dinner."
+
+"Did he not advertise?"
+
+"No."
+
+"Then, what clue could you have as to his identity?"
+
+"Only as much as we can deduce."
+
+"From his hat?"
+
+"Precisely."
+
+"But you are joking. What can you gather from this old battered
+felt?"
+
+"Here is my lens. You know my methods. What can you gather
+yourself as to the individuality of the man who has worn this
+article?"
+
+I took the tattered object in my hands and turned it over rather
+ruefully. It was a very ordinary black hat of the usual round
+shape, hard and much the worse for wear. The lining had been of
+red silk, but was a good deal discoloured. There was no maker's
+name; but, as Holmes had remarked, the initials "H. B." were
+scrawled upon one side. It was pierced in the brim for a
+hat-securer, but the elastic was missing. For the rest, it was
+cracked, exceedingly dusty, and spotted in several places,
+although there seemed to have been some attempt to hide the
+discoloured patches by smearing them with ink.
+
+"I can see nothing," said I, handing it back to my friend.
+
+"On the contrary, Watson, you can see everything. You fail,
+however, to reason from what you see. You are too timid in
+drawing your inferences."
+
+"Then, pray tell me what it is that you can infer from this hat?"
+
+He picked it up and gazed at it in the peculiar introspective
+fashion which was characteristic of him. "It is perhaps less
+suggestive than it might have been," he remarked, "and yet there
+are a few inferences which are very distinct, and a few others
+which represent at least a strong balance of probability. That
+the man was highly intellectual is of course obvious upon the
+face of it, and also that he was fairly well-to-do within the
+last three years, although he has now fallen upon evil days. He
+had foresight, but has less now than formerly, pointing to a
+moral retrogression, which, when taken with the decline of his
+fortunes, seems to indicate some evil influence, probably drink,
+at work upon him. This may account also for the obvious fact that
+his wife has ceased to love him."
+
+"My dear Holmes!"
+
+"He has, however, retained some degree of self-respect," he
+continued, disregarding my remonstrance. "He is a man who leads a
+sedentary life, goes out little, is out of training entirely, is
+middle-aged, has grizzled hair which he has had cut within the
+last few days, and which he anoints with lime-cream. These are
+the more patent facts which are to be deduced from his hat. Also,
+by the way, that it is extremely improbable that he has gas laid
+on in his house."
+
+"You are certainly joking, Holmes."
+
+"Not in the least. Is it possible that even now, when I give you
+these results, you are unable to see how they are attained?"
+
+"I have no doubt that I am very stupid, but I must confess that I
+am unable to follow you. For example, how did you deduce that
+this man was intellectual?"
+
+For answer Holmes clapped the hat upon his head. It came right
+over the forehead and settled upon the bridge of his nose. "It is
+a question of cubic capacity," said he; "a man with so large a
+brain must have something in it."
+
+"The decline of his fortunes, then?"
+
+"This hat is three years old. These flat brims curled at the edge
+came in then. It is a hat of the very best quality. Look at the
+band of ribbed silk and the excellent lining. If this man could
+afford to buy so expensive a hat three years ago, and has had no
+hat since, then he has assuredly gone down in the world."
+
+"Well, that is clear enough, certainly. But how about the
+foresight and the moral retrogression?"
+
+Sherlock Holmes laughed. "Here is the foresight," said he putting
+his finger upon the little disc and loop of the hat-securer.
+"They are never sold upon hats. If this man ordered one, it is a
+sign of a certain amount of foresight, since he went out of his
+way to take this precaution against the wind. But since we see
+that he has broken the elastic and has not troubled to replace
+it, it is obvious that he has less foresight now than formerly,
+which is a distinct proof of a weakening nature. On the other
+hand, he has endeavoured to conceal some of these stains upon the
+felt by daubing them with ink, which is a sign that he has not
+entirely lost his self-respect."
+
+"Your reasoning is certainly plausible."
+
+"The further points, that he is middle-aged, that his hair is
+grizzled, that it has been recently cut, and that he uses
+lime-cream, are all to be gathered from a close examination of the
+lower part of the lining. The lens discloses a large number of
+hair-ends, clean cut by the scissors of the barber. They all
+appear to be adhesive, and there is a distinct odour of
+lime-cream. This dust, you will observe, is not the gritty, grey
+dust of the street but the fluffy brown dust of the house,
+showing that it has been hung up indoors most of the time, while
+the marks of moisture upon the inside are proof positive that the
+wearer perspired very freely, and could therefore, hardly be in
+the best of training."
+
+"But his wife--you said that she had ceased to love him."
+
+"This hat has not been brushed for weeks. When I see you, my dear
+Watson, with a week's accumulation of dust upon your hat, and
+when your wife allows you to go out in such a state, I shall fear
+that you also have been unfortunate enough to lose your wife's
+affection."
+
+"But he might be a bachelor."
+
+"Nay, he was bringing home the goose as a peace-offering to his
+wife. Remember the card upon the bird's leg."
+
+"You have an answer to everything. But how on earth do you deduce
+that the gas is not laid on in his house?"
+
+"One tallow stain, or even two, might come by chance; but when I
+see no less than five, I think that there can be little doubt
+that the individual must be brought into frequent contact with
+burning tallow--walks upstairs at night probably with his hat in
+one hand and a guttering candle in the other. Anyhow, he never
+got tallow-stains from a gas-jet. Are you satisfied?"
+
+"Well, it is very ingenious," said I, laughing; "but since, as
+you said just now, there has been no crime committed, and no harm
+done save the loss of a goose, all this seems to be rather a
+waste of energy."
+
+Sherlock Holmes had opened his mouth to reply, when the door flew
+open, and Peterson, the commissionaire, rushed into the apartment
+with flushed cheeks and the face of a man who is dazed with
+astonishment.
+
+"The goose, Mr. Holmes! The goose, sir!" he gasped.
+
+"Eh? What of it, then? Has it returned to life and flapped off
+through the kitchen window?" Holmes twisted himself round upon
+the sofa to get a fairer view of the man's excited face.
+
+"See here, sir! See what my wife found in its crop!" He held out
+his hand and displayed upon the centre of the palm a brilliantly
+scintillating blue stone, rather smaller than a bean in size, but
+of such purity and radiance that it twinkled like an electric
+point in the dark hollow of his hand.
+
+Sherlock Holmes sat up with a whistle. "By Jove, Peterson!" said
+he, "this is treasure trove indeed. I suppose you know what you
+have got?"
+
+"A diamond, sir? A precious stone. It cuts into glass as though
+it were putty."
+
+"It's more than a precious stone. It is the precious stone."
+
+"Not the Countess of Morcar's blue carbuncle!" I ejaculated.
+
+"Precisely so. I ought to know its size and shape, seeing that I
+have read the advertisement about it in The Times every day
+lately. It is absolutely unique, and its value can only be
+conjectured, but the reward offered of 1000 pounds is certainly
+not within a twentieth part of the market price."
+
+"A thousand pounds! Great Lord of mercy!" The commissionaire
+plumped down into a chair and stared from one to the other of us.
+
+"That is the reward, and I have reason to know that there are
+sentimental considerations in the background which would induce
+the Countess to part with half her fortune if she could but
+recover the gem."
+
+"It was lost, if I remember aright, at the Hotel Cosmopolitan," I
+remarked.
+
+"Precisely so, on December 22nd, just five days ago. John Horner,
+a plumber, was accused of having abstracted it from the lady's
+jewel-case. The evidence against him was so strong that the case
+has been referred to the Assizes. I have some account of the
+matter here, I believe." He rummaged amid his newspapers,
+glancing over the dates, until at last he smoothed one out,
+doubled it over, and read the following paragraph:
+
+"Hotel Cosmopolitan Jewel Robbery. John Horner, 26, plumber, was
+brought up upon the charge of having upon the 22nd inst.,
+abstracted from the jewel-case of the Countess of Morcar the
+valuable gem known as the blue carbuncle. James Ryder,
+upper-attendant at the hotel, gave his evidence to the effect
+that he had shown Horner up to the dressing-room of the Countess
+of Morcar upon the day of the robbery in order that he might
+solder the second bar of the grate, which was loose. He had
+remained with Horner some little time, but had finally been
+called away. On returning, he found that Horner had disappeared,
+that the bureau had been forced open, and that the small morocco
+casket in which, as it afterwards transpired, the Countess was
+accustomed to keep her jewel, was lying empty upon the
+dressing-table. Ryder instantly gave the alarm, and Horner was
+arrested the same evening; but the stone could not be found
+either upon his person or in his rooms. Catherine Cusack, maid to
+the Countess, deposed to having heard Ryder's cry of dismay on
+discovering the robbery, and to having rushed into the room,
+where she found matters as described by the last witness.
+Inspector Bradstreet, B division, gave evidence as to the arrest
+of Horner, who struggled frantically, and protested his innocence
+in the strongest terms. Evidence of a previous conviction for
+robbery having been given against the prisoner, the magistrate
+refused to deal summarily with the offence, but referred it to
+the Assizes. Horner, who had shown signs of intense emotion
+during the proceedings, fainted away at the conclusion and was
+carried out of court."
+
+"Hum! So much for the police-court," said Holmes thoughtfully,
+tossing aside the paper. "The question for us now to solve is the
+sequence of events leading from a rifled jewel-case at one end to
+the crop of a goose in Tottenham Court Road at the other. You
+see, Watson, our little deductions have suddenly assumed a much
+more important and less innocent aspect. Here is the stone; the
+stone came from the goose, and the goose came from Mr. Henry
+Baker, the gentleman with the bad hat and all the other
+characteristics with which I have bored you. So now we must set
+ourselves very seriously to finding this gentleman and
+ascertaining what part he has played in this little mystery. To
+do this, we must try the simplest means first, and these lie
+undoubtedly in an advertisement in all the evening papers. If
+this fail, I shall have recourse to other methods."
+
+"What will you say?"
+
+"Give me a pencil and that slip of paper. Now, then: 'Found at
+the corner of Goodge Street, a goose and a black felt hat. Mr.
+Henry Baker can have the same by applying at 6:30 this evening at
+221B, Baker Street.' That is clear and concise."
+
+"Very. But will he see it?"
+
+"Well, he is sure to keep an eye on the papers, since, to a poor
+man, the loss was a heavy one. He was clearly so scared by his
+mischance in breaking the window and by the approach of Peterson
+that he thought of nothing but flight, but since then he must
+have bitterly regretted the impulse which caused him to drop his
+bird. Then, again, the introduction of his name will cause him to
+see it, for everyone who knows him will direct his attention to
+it. Here you are, Peterson, run down to the advertising agency
+and have this put in the evening papers."
+
+"In which, sir?"
+
+"Oh, in the Globe, Star, Pall Mall, St. James's, Evening News,
+Standard, Echo, and any others that occur to you."
+
+"Very well, sir. And this stone?"
+
+"Ah, yes, I shall keep the stone. Thank you. And, I say,
+Peterson, just buy a goose on your way back and leave it here
+with me, for we must have one to give to this gentleman in place
+of the one which your family is now devouring."
+
+When the commissionaire had gone, Holmes took up the stone and
+held it against the light. "It's a bonny thing," said he. "Just
+see how it glints and sparkles. Of course it is a nucleus and
+focus of crime. Every good stone is. They are the devil's pet
+baits. In the larger and older jewels every facet may stand for a
+bloody deed. This stone is not yet twenty years old. It was found
+in the banks of the Amoy River in southern China and is remarkable
+in having every characteristic of the carbuncle, save that it is
+blue in shade instead of ruby red. In spite of its youth, it has
+already a sinister history. There have been two murders, a
+vitriol-throwing, a suicide, and several robberies brought about
+for the sake of this forty-grain weight of crystallised charcoal.
+Who would think that so pretty a toy would be a purveyor to the
+gallows and the prison? I'll lock it up in my strong box now and
+drop a line to the Countess to say that we have it."
+
+"Do you think that this man Horner is innocent?"
+
+"I cannot tell."
+
+"Well, then, do you imagine that this other one, Henry Baker, had
+anything to do with the matter?"
+
+"It is, I think, much more likely that Henry Baker is an
+absolutely innocent man, who had no idea that the bird which he
+was carrying was of considerably more value than if it were made
+of solid gold. That, however, I shall determine by a very simple
+test if we have an answer to our advertisement."
+
+"And you can do nothing until then?"
+
+"Nothing."
+
+"In that case I shall continue my professional round. But I shall
+come back in the evening at the hour you have mentioned, for I
+should like to see the solution of so tangled a business."
+
+"Very glad to see you. I dine at seven. There is a woodcock, I
+believe. By the way, in view of recent occurrences, perhaps I
+ought to ask Mrs. Hudson to examine its crop."
+
+I had been delayed at a case, and it was a little after half-past
+six when I found myself in Baker Street once more. As I
+approached the house I saw a tall man in a Scotch bonnet with a
+coat which was buttoned up to his chin waiting outside in the
+bright semicircle which was thrown from the fanlight. Just as I
+arrived the door was opened, and we were shown up together to
+Holmes' room.
+
+"Mr. Henry Baker, I believe," said he, rising from his armchair
+and greeting his visitor with the easy air of geniality which he
+could so readily assume. "Pray take this chair by the fire, Mr.
+Baker. It is a cold night, and I observe that your circulation is
+more adapted for summer than for winter. Ah, Watson, you have
+just come at the right time. Is that your hat, Mr. Baker?"
+
+"Yes, sir, that is undoubtedly my hat."
+
+He was a large man with rounded shoulders, a massive head, and a
+broad, intelligent face, sloping down to a pointed beard of
+grizzled brown. A touch of red in nose and cheeks, with a slight
+tremor of his extended hand, recalled Holmes' surmise as to his
+habits. His rusty black frock-coat was buttoned right up in
+front, with the collar turned up, and his lank wrists protruded
+from his sleeves without a sign of cuff or shirt. He spoke in a
+slow staccato fashion, choosing his words with care, and gave the
+impression generally of a man of learning and letters who had had
+ill-usage at the hands of fortune.
+
+"We have retained these things for some days," said Holmes,
+"because we expected to see an advertisement from you giving your
+address. I am at a loss to know now why you did not advertise."
+
+Our visitor gave a rather shamefaced laugh. "Shillings have not
+been so plentiful with me as they once were," he remarked. "I had
+no doubt that the gang of roughs who assaulted me had carried off
+both my hat and the bird. I did not care to spend more money in a
+hopeless attempt at recovering them."
+
+"Very naturally. By the way, about the bird, we were compelled to
+eat it."
+
+"To eat it!" Our visitor half rose from his chair in his
+excitement.
+
+"Yes, it would have been of no use to anyone had we not done so.
+But I presume that this other goose upon the sideboard, which is
+about the same weight and perfectly fresh, will answer your
+purpose equally well?"
+
+"Oh, certainly, certainly," answered Mr. Baker with a sigh of
+relief.
+
+"Of course, we still have the feathers, legs, crop, and so on of
+your own bird, so if you wish--"
+
+The man burst into a hearty laugh. "They might be useful to me as
+relics of my adventure," said he, "but beyond that I can hardly
+see what use the disjecta membra of my late acquaintance are
+going to be to me. No, sir, I think that, with your permission, I
+will confine my attentions to the excellent bird which I perceive
+upon the sideboard."
+
+Sherlock Holmes glanced sharply across at me with a slight shrug
+of his shoulders.
+
+"There is your hat, then, and there your bird," said he. "By the
+way, would it bore you to tell me where you got the other one
+from? I am somewhat of a fowl fancier, and I have seldom seen a
+better grown goose."
+
+"Certainly, sir," said Baker, who had risen and tucked his newly
+gained property under his arm. "There are a few of us who
+frequent the Alpha Inn, near the Museum--we are to be found in
+the Museum itself during the day, you understand. This year our
+good host, Windigate by name, instituted a goose club, by which,
+on consideration of some few pence every week, we were each to
+receive a bird at Christmas. My pence were duly paid, and the
+rest is familiar to you. I am much indebted to you, sir, for a
+Scotch bonnet is fitted neither to my years nor my gravity." With
+a comical pomposity of manner he bowed solemnly to both of us and
+strode off upon his way.
+
+"So much for Mr. Henry Baker," said Holmes when he had closed the
+door behind him. "It is quite certain that he knows nothing
+whatever about the matter. Are you hungry, Watson?"
+
+"Not particularly."
+
+"Then I suggest that we turn our dinner into a supper and follow
+up this clue while it is still hot."
+
+"By all means."
+
+It was a bitter night, so we drew on our ulsters and wrapped
+cravats about our throats. Outside, the stars were shining coldly
+in a cloudless sky, and the breath of the passers-by blew out
+into smoke like so many pistol shots. Our footfalls rang out
+crisply and loudly as we swung through the doctors' quarter,
+Wimpole Street, Harley Street, and so through Wigmore Street into
+Oxford Street. In a quarter of an hour we were in Bloomsbury at
+the Alpha Inn, which is a small public-house at the corner of one
+of the streets which runs down into Holborn. Holmes pushed open
+the door of the private bar and ordered two glasses of beer from
+the ruddy-faced, white-aproned landlord.
+
+"Your beer should be excellent if it is as good as your geese,"
+said he.
+
+"My geese!" The man seemed surprised.
+
+"Yes. I was speaking only half an hour ago to Mr. Henry Baker,
+who was a member of your goose club."
+
+"Ah! yes, I see. But you see, sir, them's not our geese."
+
+"Indeed! Whose, then?"
+
+"Well, I got the two dozen from a salesman in Covent Garden."
+
+"Indeed? I know some of them. Which was it?"
+
+"Breckinridge is his name."
+
+"Ah! I don't know him. Well, here's your good health landlord,
+and prosperity to your house. Good-night."
+
+"Now for Mr. Breckinridge," he continued, buttoning up his coat
+as we came out into the frosty air. "Remember, Watson that though
+we have so homely a thing as a goose at one end of this chain, we
+have at the other a man who will certainly get seven years' penal
+servitude unless we can establish his innocence. It is possible
+that our inquiry may but confirm his guilt; but, in any case, we
+have a line of investigation which has been missed by the police,
+and which a singular chance has placed in our hands. Let us
+follow it out to the bitter end. Faces to the south, then, and
+quick march!"
+
+We passed across Holborn, down Endell Street, and so through a
+zigzag of slums to Covent Garden Market. One of the largest
+stalls bore the name of Breckinridge upon it, and the proprietor
+a horsey-looking man, with a sharp face and trim side-whiskers was
+helping a boy to put up the shutters.
+
+"Good-evening. It's a cold night," said Holmes.
+
+The salesman nodded and shot a questioning glance at my
+companion.
+
+"Sold out of geese, I see," continued Holmes, pointing at the
+bare slabs of marble.
+
+"Let you have five hundred to-morrow morning."
+
+"That's no good."
+
+"Well, there are some on the stall with the gas-flare."
+
+"Ah, but I was recommended to you."
+
+"Who by?"
+
+"The landlord of the Alpha."
+
+"Oh, yes; I sent him a couple of dozen."
+
+"Fine birds they were, too. Now where did you get them from?"
+
+To my surprise the question provoked a burst of anger from the
+salesman.
+
+"Now, then, mister," said he, with his head cocked and his arms
+akimbo, "what are you driving at? Let's have it straight, now."
+
+"It is straight enough. I should like to know who sold you the
+geese which you supplied to the Alpha."
+
+"Well then, I shan't tell you. So now!"
+
+"Oh, it is a matter of no importance; but I don't know why you
+should be so warm over such a trifle."
+
+"Warm! You'd be as warm, maybe, if you were as pestered as I am.
+When I pay good money for a good article there should be an end
+of the business; but it's 'Where are the geese?' and 'Who did you
+sell the geese to?' and 'What will you take for the geese?' One
+would think they were the only geese in the world, to hear the
+fuss that is made over them."
+
+"Well, I have no connection with any other people who have been
+making inquiries," said Holmes carelessly. "If you won't tell us
+the bet is off, that is all. But I'm always ready to back my
+opinion on a matter of fowls, and I have a fiver on it that the
+bird I ate is country bred."
+
+"Well, then, you've lost your fiver, for it's town bred," snapped
+the salesman.
+
+"It's nothing of the kind."
+
+"I say it is."
+
+"I don't believe it."
+
+"D'you think you know more about fowls than I, who have handled
+them ever since I was a nipper? I tell you, all those birds that
+went to the Alpha were town bred."
+
+"You'll never persuade me to believe that."
+
+"Will you bet, then?"
+
+"It's merely taking your money, for I know that I am right. But
+I'll have a sovereign on with you, just to teach you not to be
+obstinate."
+
+The salesman chuckled grimly. "Bring me the books, Bill," said
+he.
+
+The small boy brought round a small thin volume and a great
+greasy-backed one, laying them out together beneath the hanging
+lamp.
+
+"Now then, Mr. Cocksure," said the salesman, "I thought that I
+was out of geese, but before I finish you'll find that there is
+still one left in my shop. You see this little book?"
+
+"Well?"
+
+"That's the list of the folk from whom I buy. D'you see? Well,
+then, here on this page are the country folk, and the numbers
+after their names are where their accounts are in the big ledger.
+Now, then! You see this other page in red ink? Well, that is a
+list of my town suppliers. Now, look at that third name. Just
+read it out to me."
+
+"Mrs. Oakshott, 117, Brixton Road--249," read Holmes.
+
+"Quite so. Now turn that up in the ledger."
+
+Holmes turned to the page indicated. "Here you are, 'Mrs.
+Oakshott, 117, Brixton Road, egg and poultry supplier.'"
+
+"Now, then, what's the last entry?"
+
+"'December 22nd. Twenty-four geese at 7s. 6d.'"
+
+"Quite so. There you are. And underneath?"
+
+"'Sold to Mr. Windigate of the Alpha, at 12s.'"
+
+"What have you to say now?"
+
+Sherlock Holmes looked deeply chagrined. He drew a sovereign from
+his pocket and threw it down upon the slab, turning away with the
+air of a man whose disgust is too deep for words. A few yards off
+he stopped under a lamp-post and laughed in the hearty, noiseless
+fashion which was peculiar to him.
+
+"When you see a man with whiskers of that cut and the 'Pink 'un'
+protruding out of his pocket, you can always draw him by a bet,"
+said he. "I daresay that if I had put 100 pounds down in front of
+him, that man would not have given me such complete information
+as was drawn from him by the idea that he was doing me on a
+wager. Well, Watson, we are, I fancy, nearing the end of our
+quest, and the only point which remains to be determined is
+whether we should go on to this Mrs. Oakshott to-night, or
+whether we should reserve it for to-morrow. It is clear from what
+that surly fellow said that there are others besides ourselves
+who are anxious about the matter, and I should--"
+
+His remarks were suddenly cut short by a loud hubbub which broke
+out from the stall which we had just left. Turning round we saw a
+little rat-faced fellow standing in the centre of the circle of
+yellow light which was thrown by the swinging lamp, while
+Breckinridge, the salesman, framed in the door of his stall, was
+shaking his fists fiercely at the cringing figure.
+
+"I've had enough of you and your geese," he shouted. "I wish you
+were all at the devil together. If you come pestering me any more
+with your silly talk I'll set the dog at you. You bring Mrs.
+Oakshott here and I'll answer her, but what have you to do with
+it? Did I buy the geese off you?"
+
+"No; but one of them was mine all the same," whined the little
+man.
+
+"Well, then, ask Mrs. Oakshott for it."
+
+"She told me to ask you."
+
+"Well, you can ask the King of Proosia, for all I care. I've had
+enough of it. Get out of this!" He rushed fiercely forward, and
+the inquirer flitted away into the darkness.
+
+"Ha! this may save us a visit to Brixton Road," whispered Holmes.
+"Come with me, and we will see what is to be made of this
+fellow." Striding through the scattered knots of people who
+lounged round the flaring stalls, my companion speedily overtook
+the little man and touched him upon the shoulder. He sprang
+round, and I could see in the gas-light that every vestige of
+colour had been driven from his face.
+
+"Who are you, then? What do you want?" he asked in a quavering
+voice.
+
+"You will excuse me," said Holmes blandly, "but I could not help
+overhearing the questions which you put to the salesman just now.
+I think that I could be of assistance to you."
+
+"You? Who are you? How could you know anything of the matter?"
+
+"My name is Sherlock Holmes. It is my business to know what other
+people don't know."
+
+"But you can know nothing of this?"
+
+"Excuse me, I know everything of it. You are endeavouring to
+trace some geese which were sold by Mrs. Oakshott, of Brixton
+Road, to a salesman named Breckinridge, by him in turn to Mr.
+Windigate, of the Alpha, and by him to his club, of which Mr.
+Henry Baker is a member."
+
+"Oh, sir, you are the very man whom I have longed to meet," cried
+the little fellow with outstretched hands and quivering fingers.
+"I can hardly explain to you how interested I am in this matter."
+
+Sherlock Holmes hailed a four-wheeler which was passing. "In that
+case we had better discuss it in a cosy room rather than in this
+wind-swept market-place," said he. "But pray tell me, before we
+go farther, who it is that I have the pleasure of assisting."
+
+The man hesitated for an instant. "My name is John Robinson," he
+answered with a sidelong glance.
+
+"No, no; the real name," said Holmes sweetly. "It is always
+awkward doing business with an alias."
+
+A flush sprang to the white cheeks of the stranger. "Well then,"
+said he, "my real name is James Ryder."
+
+"Precisely so. Head attendant at the Hotel Cosmopolitan. Pray
+step into the cab, and I shall soon be able to tell you
+everything which you would wish to know."
+
+The little man stood glancing from one to the other of us with
+half-frightened, half-hopeful eyes, as one who is not sure
+whether he is on the verge of a windfall or of a catastrophe.
+Then he stepped into the cab, and in half an hour we were back in
+the sitting-room at Baker Street. Nothing had been said during
+our drive, but the high, thin breathing of our new companion, and
+the claspings and unclaspings of his hands, spoke of the nervous
+tension within him.
+
+"Here we are!" said Holmes cheerily as we filed into the room.
+"The fire looks very seasonable in this weather. You look cold,
+Mr. Ryder. Pray take the basket-chair. I will just put on my
+slippers before we settle this little matter of yours. Now, then!
+You want to know what became of those geese?"
+
+"Yes, sir."
+
+"Or rather, I fancy, of that goose. It was one bird, I imagine in
+which you were interested--white, with a black bar across the
+tail."
+
+Ryder quivered with emotion. "Oh, sir," he cried, "can you tell
+me where it went to?"
+
+"It came here."
+
+"Here?"
+
+"Yes, and a most remarkable bird it proved. I don't wonder that
+you should take an interest in it. It laid an egg after it was
+dead--the bonniest, brightest little blue egg that ever was seen.
+I have it here in my museum."
+
+Our visitor staggered to his feet and clutched the mantelpiece
+with his right hand. Holmes unlocked his strong-box and held up
+the blue carbuncle, which shone out like a star, with a cold,
+brilliant, many-pointed radiance. Ryder stood glaring with a
+drawn face, uncertain whether to claim or to disown it.
+
+"The game's up, Ryder," said Holmes quietly. "Hold up, man, or
+you'll be into the fire! Give him an arm back into his chair,
+Watson. He's not got blood enough to go in for felony with
+impunity. Give him a dash of brandy. So! Now he looks a little
+more human. What a shrimp it is, to be sure!"
+
+For a moment he had staggered and nearly fallen, but the brandy
+brought a tinge of colour into his cheeks, and he sat staring
+with frightened eyes at his accuser.
+
+"I have almost every link in my hands, and all the proofs which I
+could possibly need, so there is little which you need tell me.
+Still, that little may as well be cleared up to make the case
+complete. You had heard, Ryder, of this blue stone of the
+Countess of Morcar's?"
+
+"It was Catherine Cusack who told me of it," said he in a
+crackling voice.
+
+"I see--her ladyship's waiting-maid. Well, the temptation of
+sudden wealth so easily acquired was too much for you, as it has
+been for better men before you; but you were not very scrupulous
+in the means you used. It seems to me, Ryder, that there is the
+making of a very pretty villain in you. You knew that this man
+Horner, the plumber, had been concerned in some such matter
+before, and that suspicion would rest the more readily upon him.
+What did you do, then? You made some small job in my lady's
+room--you and your confederate Cusack--and you managed that he
+should be the man sent for. Then, when he had left, you rifled
+the jewel-case, raised the alarm, and had this unfortunate man
+arrested. You then--"
+
+Ryder threw himself down suddenly upon the rug and clutched at my
+companion's knees. "For God's sake, have mercy!" he shrieked.
+"Think of my father! Of my mother! It would break their hearts. I
+never went wrong before! I never will again. I swear it. I'll
+swear it on a Bible. Oh, don't bring it into court! For Christ's
+sake, don't!"
+
+"Get back into your chair!" said Holmes sternly. "It is very well
+to cringe and crawl now, but you thought little enough of this
+poor Horner in the dock for a crime of which he knew nothing."
+
+"I will fly, Mr. Holmes. I will leave the country, sir. Then the
+charge against him will break down."
+
+"Hum! We will talk about that. And now let us hear a true account
+of the next act. How came the stone into the goose, and how came
+the goose into the open market? Tell us the truth, for there lies
+your only hope of safety."
+
+Ryder passed his tongue over his parched lips. "I will tell you
+it just as it happened, sir," said he. "When Horner had been
+arrested, it seemed to me that it would be best for me to get
+away with the stone at once, for I did not know at what moment
+the police might not take it into their heads to search me and my
+room. There was no place about the hotel where it would be safe.
+I went out, as if on some commission, and I made for my sister's
+house. She had married a man named Oakshott, and lived in Brixton
+Road, where she fattened fowls for the market. All the way there
+every man I met seemed to me to be a policeman or a detective;
+and, for all that it was a cold night, the sweat was pouring down
+my face before I came to the Brixton Road. My sister asked me
+what was the matter, and why I was so pale; but I told her that I
+had been upset by the jewel robbery at the hotel. Then I went
+into the back yard and smoked a pipe and wondered what it would
+be best to do.
+
+"I had a friend once called Maudsley, who went to the bad, and
+has just been serving his time in Pentonville. One day he had met
+me, and fell into talk about the ways of thieves, and how they
+could get rid of what they stole. I knew that he would be true to
+me, for I knew one or two things about him; so I made up my mind
+to go right on to Kilburn, where he lived, and take him into my
+confidence. He would show me how to turn the stone into money.
+But how to get to him in safety? I thought of the agonies I had
+gone through in coming from the hotel. I might at any moment be
+seized and searched, and there would be the stone in my waistcoat
+pocket. I was leaning against the wall at the time and looking at
+the geese which were waddling about round my feet, and suddenly
+an idea came into my head which showed me how I could beat the
+best detective that ever lived.
+
+"My sister had told me some weeks before that I might have the
+pick of her geese for a Christmas present, and I knew that she
+was always as good as her word. I would take my goose now, and in
+it I would carry my stone to Kilburn. There was a little shed in
+the yard, and behind this I drove one of the birds--a fine big
+one, white, with a barred tail. I caught it, and prying its bill
+open, I thrust the stone down its throat as far as my finger
+could reach. The bird gave a gulp, and I felt the stone pass
+along its gullet and down into its crop. But the creature flapped
+and struggled, and out came my sister to know what was the
+matter. As I turned to speak to her the brute broke loose and
+fluttered off among the others.
+
+"'Whatever were you doing with that bird, Jem?' says she.
+
+"'Well,' said I, 'you said you'd give me one for Christmas, and I
+was feeling which was the fattest.'
+
+"'Oh,' says she, 'we've set yours aside for you--Jem's bird, we
+call it. It's the big white one over yonder. There's twenty-six
+of them, which makes one for you, and one for us, and two dozen
+for the market.'
+
+"'Thank you, Maggie,' says I; 'but if it is all the same to you,
+I'd rather have that one I was handling just now.'
+
+"'The other is a good three pound heavier,' said she, 'and we
+fattened it expressly for you.'
+
+"'Never mind. I'll have the other, and I'll take it now,' said I.
+
+"'Oh, just as you like,' said she, a little huffed. 'Which is it
+you want, then?'
+
+"'That white one with the barred tail, right in the middle of the
+flock.'
+
+"'Oh, very well. Kill it and take it with you.'
+
+"Well, I did what she said, Mr. Holmes, and I carried the bird
+all the way to Kilburn. I told my pal what I had done, for he was
+a man that it was easy to tell a thing like that to. He laughed
+until he choked, and we got a knife and opened the goose. My
+heart turned to water, for there was no sign of the stone, and I
+knew that some terrible mistake had occurred. I left the bird,
+rushed back to my sister's, and hurried into the back yard. There
+was not a bird to be seen there.
+
+"'Where are they all, Maggie?' I cried.
+
+"'Gone to the dealer's, Jem.'
+
+"'Which dealer's?'
+
+"'Breckinridge, of Covent Garden.'
+
+"'But was there another with a barred tail?' I asked, 'the same
+as the one I chose?'
+
+"'Yes, Jem; there were two barred-tailed ones, and I could never
+tell them apart.'
+
+"Well, then, of course I saw it all, and I ran off as hard as my
+feet would carry me to this man Breckinridge; but he had sold the
+lot at once, and not one word would he tell me as to where they
+had gone. You heard him yourselves to-night. Well, he has always
+answered me like that. My sister thinks that I am going mad.
+Sometimes I think that I am myself. And now--and now I am myself
+a branded thief, without ever having touched the wealth for which
+I sold my character. God help me! God help me!" He burst into
+convulsive sobbing, with his face buried in his hands.
+
+There was a long silence, broken only by his heavy breathing and
+by the measured tapping of Sherlock Holmes' finger-tips upon the
+edge of the table. Then my friend rose and threw open the door.
+
+"Get out!" said he.
+
+"What, sir! Oh, Heaven bless you!"
+
+"No more words. Get out!"
+
+And no more words were needed. There was a rush, a clatter upon
+the stairs, the bang of a door, and the crisp rattle of running
+footfalls from the street.
+
+"After all, Watson," said Holmes, reaching up his hand for his
+clay pipe, "I am not retained by the police to supply their
+deficiencies. If Horner were in danger it would be another thing;
+but this fellow will not appear against him, and the case must
+collapse. I suppose that I am commuting a felony, but it is just
+possible that I am saving a soul. This fellow will not go wrong
+again; he is too terribly frightened. Send him to gaol now, and
+you make him a gaol-bird for life. Besides, it is the season of
+forgiveness. Chance has put in our way a most singular and
+whimsical problem, and its solution is its own reward. If you
+will have the goodness to touch the bell, Doctor, we will begin
+another investigation, in which, also a bird will be the chief
+feature."
+
+
+
+VIII. THE ADVENTURE OF THE SPECKLED BAND
+
+On glancing over my notes of the seventy odd cases in which I
+have during the last eight years studied the methods of my friend
+Sherlock Holmes, I find many tragic, some comic, a large number
+merely strange, but none commonplace; for, working as he did
+rather for the love of his art than for the acquirement of
+wealth, he refused to associate himself with any investigation
+which did not tend towards the unusual, and even the fantastic.
+Of all these varied cases, however, I cannot recall any which
+presented more singular features than that which was associated
+with the well-known Surrey family of the Roylotts of Stoke Moran.
+The events in question occurred in the early days of my
+association with Holmes, when we were sharing rooms as bachelors
+in Baker Street. It is possible that I might have placed them
+upon record before, but a promise of secrecy was made at the
+time, from which I have only been freed during the last month by
+the untimely death of the lady to whom the pledge was given. It
+is perhaps as well that the facts should now come to light, for I
+have reasons to know that there are widespread rumours as to the
+death of Dr. Grimesby Roylott which tend to make the matter even
+more terrible than the truth.
+
+It was early in April in the year '83 that I woke one morning to
+find Sherlock Holmes standing, fully dressed, by the side of my
+bed. He was a late riser, as a rule, and as the clock on the
+mantelpiece showed me that it was only a quarter-past seven, I
+blinked up at him in some surprise, and perhaps just a little
+resentment, for I was myself regular in my habits.
+
+"Very sorry to knock you up, Watson," said he, "but it's the
+common lot this morning. Mrs. Hudson has been knocked up, she
+retorted upon me, and I on you."
+
+"What is it, then--a fire?"
+
+"No; a client. It seems that a young lady has arrived in a
+considerable state of excitement, who insists upon seeing me. She
+is waiting now in the sitting-room. Now, when young ladies wander
+about the metropolis at this hour of the morning, and knock
+sleepy people up out of their beds, I presume that it is
+something very pressing which they have to communicate. Should it
+prove to be an interesting case, you would, I am sure, wish to
+follow it from the outset. I thought, at any rate, that I should
+call you and give you the chance."
+
+"My dear fellow, I would not miss it for anything."
+
+I had no keener pleasure than in following Holmes in his
+professional investigations, and in admiring the rapid
+deductions, as swift as intuitions, and yet always founded on a
+logical basis with which he unravelled the problems which were
+submitted to him. I rapidly threw on my clothes and was ready in
+a few minutes to accompany my friend down to the sitting-room. A
+lady dressed in black and heavily veiled, who had been sitting in
+the window, rose as we entered.
+
+"Good-morning, madam," said Holmes cheerily. "My name is Sherlock
+Holmes. This is my intimate friend and associate, Dr. Watson,
+before whom you can speak as freely as before myself. Ha! I am
+glad to see that Mrs. Hudson has had the good sense to light the
+fire. Pray draw up to it, and I shall order you a cup of hot
+coffee, for I observe that you are shivering."
+
+"It is not cold which makes me shiver," said the woman in a low
+voice, changing her seat as requested.
+
+"What, then?"
+
+"It is fear, Mr. Holmes. It is terror." She raised her veil as
+she spoke, and we could see that she was indeed in a pitiable
+state of agitation, her face all drawn and grey, with restless
+frightened eyes, like those of some hunted animal. Her features
+and figure were those of a woman of thirty, but her hair was shot
+with premature grey, and her expression was weary and haggard.
+Sherlock Holmes ran her over with one of his quick,
+all-comprehensive glances.
+
+"You must not fear," said he soothingly, bending forward and
+patting her forearm. "We shall soon set matters right, I have no
+doubt. You have come in by train this morning, I see."
+
+"You know me, then?"
+
+"No, but I observe the second half of a return ticket in the palm
+of your left glove. You must have started early, and yet you had
+a good drive in a dog-cart, along heavy roads, before you reached
+the station."
+
+The lady gave a violent start and stared in bewilderment at my
+companion.
+
+"There is no mystery, my dear madam," said he, smiling. "The left
+arm of your jacket is spattered with mud in no less than seven
+places. The marks are perfectly fresh. There is no vehicle save a
+dog-cart which throws up mud in that way, and then only when you
+sit on the left-hand side of the driver."
+
+"Whatever your reasons may be, you are perfectly correct," said
+she. "I started from home before six, reached Leatherhead at
+twenty past, and came in by the first train to Waterloo. Sir, I
+can stand this strain no longer; I shall go mad if it continues.
+I have no one to turn to--none, save only one, who cares for me,
+and he, poor fellow, can be of little aid. I have heard of you,
+Mr. Holmes; I have heard of you from Mrs. Farintosh, whom you
+helped in the hour of her sore need. It was from her that I had
+your address. Oh, sir, do you not think that you could help me,
+too, and at least throw a little light through the dense darkness
+which surrounds me? At present it is out of my power to reward
+you for your services, but in a month or six weeks I shall be
+married, with the control of my own income, and then at least you
+shall not find me ungrateful."
+
+Holmes turned to his desk and, unlocking it, drew out a small
+case-book, which he consulted.
+
+"Farintosh," said he. "Ah yes, I recall the case; it was
+concerned with an opal tiara. I think it was before your time,
+Watson. I can only say, madam, that I shall be happy to devote
+the same care to your case as I did to that of your friend. As to
+reward, my profession is its own reward; but you are at liberty
+to defray whatever expenses I may be put to, at the time which
+suits you best. And now I beg that you will lay before us
+everything that may help us in forming an opinion upon the
+matter."
+
+"Alas!" replied our visitor, "the very horror of my situation
+lies in the fact that my fears are so vague, and my suspicions
+depend so entirely upon small points, which might seem trivial to
+another, that even he to whom of all others I have a right to
+look for help and advice looks upon all that I tell him about it
+as the fancies of a nervous woman. He does not say so, but I can
+read it from his soothing answers and averted eyes. But I have
+heard, Mr. Holmes, that you can see deeply into the manifold
+wickedness of the human heart. You may advise me how to walk amid
+the dangers which encompass me."
+
+"I am all attention, madam."
+
+"My name is Helen Stoner, and I am living with my stepfather, who
+is the last survivor of one of the oldest Saxon families in
+England, the Roylotts of Stoke Moran, on the western border of
+Surrey."
+
+Holmes nodded his head. "The name is familiar to me," said he.
+
+"The family was at one time among the richest in England, and the
+estates extended over the borders into Berkshire in the north,
+and Hampshire in the west. In the last century, however, four
+successive heirs were of a dissolute and wasteful disposition,
+and the family ruin was eventually completed by a gambler in the
+days of the Regency. Nothing was left save a few acres of ground,
+and the two-hundred-year-old house, which is itself crushed under
+a heavy mortgage. The last squire dragged out his existence
+there, living the horrible life of an aristocratic pauper; but
+his only son, my stepfather, seeing that he must adapt himself to
+the new conditions, obtained an advance from a relative, which
+enabled him to take a medical degree and went out to Calcutta,
+where, by his professional skill and his force of character, he
+established a large practice. In a fit of anger, however, caused
+by some robberies which had been perpetrated in the house, he
+beat his native butler to death and narrowly escaped a capital
+sentence. As it was, he suffered a long term of imprisonment and
+afterwards returned to England a morose and disappointed man.
+
+"When Dr. Roylott was in India he married my mother, Mrs. Stoner,
+the young widow of Major-General Stoner, of the Bengal Artillery.
+My sister Julia and I were twins, and we were only two years old
+at the time of my mother's re-marriage. She had a considerable
+sum of money--not less than 1000 pounds a year--and this she
+bequeathed to Dr. Roylott entirely while we resided with him,
+with a provision that a certain annual sum should be allowed to
+each of us in the event of our marriage. Shortly after our return
+to England my mother died--she was killed eight years ago in a
+railway accident near Crewe. Dr. Roylott then abandoned his
+attempts to establish himself in practice in London and took us
+to live with him in the old ancestral house at Stoke Moran. The
+money which my mother had left was enough for all our wants, and
+there seemed to be no obstacle to our happiness.
+
+"But a terrible change came over our stepfather about this time.
+Instead of making friends and exchanging visits with our
+neighbours, who had at first been overjoyed to see a Roylott of
+Stoke Moran back in the old family seat, he shut himself up in
+his house and seldom came out save to indulge in ferocious
+quarrels with whoever might cross his path. Violence of temper
+approaching to mania has been hereditary in the men of the
+family, and in my stepfather's case it had, I believe, been
+intensified by his long residence in the tropics. A series of
+disgraceful brawls took place, two of which ended in the
+police-court, until at last he became the terror of the village,
+and the folks would fly at his approach, for he is a man of
+immense strength, and absolutely uncontrollable in his anger.
+
+"Last week he hurled the local blacksmith over a parapet into a
+stream, and it was only by paying over all the money which I
+could gather together that I was able to avert another public
+exposure. He had no friends at all save the wandering gipsies,
+and he would give these vagabonds leave to encamp upon the few
+acres of bramble-covered land which represent the family estate,
+and would accept in return the hospitality of their tents,
+wandering away with them sometimes for weeks on end. He has a
+passion also for Indian animals, which are sent over to him by a
+correspondent, and he has at this moment a cheetah and a baboon,
+which wander freely over his grounds and are feared by the
+villagers almost as much as their master.
+
+"You can imagine from what I say that my poor sister Julia and I
+had no great pleasure in our lives. No servant would stay with
+us, and for a long time we did all the work of the house. She was
+but thirty at the time of her death, and yet her hair had already
+begun to whiten, even as mine has."
+
+"Your sister is dead, then?"
+
+"She died just two years ago, and it is of her death that I wish
+to speak to you. You can understand that, living the life which I
+have described, we were little likely to see anyone of our own
+age and position. We had, however, an aunt, my mother's maiden
+sister, Miss Honoria Westphail, who lives near Harrow, and we
+were occasionally allowed to pay short visits at this lady's
+house. Julia went there at Christmas two years ago, and met there
+a half-pay major of marines, to whom she became engaged. My
+stepfather learned of the engagement when my sister returned and
+offered no objection to the marriage; but within a fortnight of
+the day which had been fixed for the wedding, the terrible event
+occurred which has deprived me of my only companion."
+
+Sherlock Holmes had been leaning back in his chair with his eyes
+closed and his head sunk in a cushion, but he half opened his
+lids now and glanced across at his visitor.
+
+"Pray be precise as to details," said he.
+
+"It is easy for me to be so, for every event of that dreadful
+time is seared into my memory. The manor-house is, as I have
+already said, very old, and only one wing is now inhabited. The
+bedrooms in this wing are on the ground floor, the sitting-rooms
+being in the central block of the buildings. Of these bedrooms
+the first is Dr. Roylott's, the second my sister's, and the third
+my own. There is no communication between them, but they all open
+out into the same corridor. Do I make myself plain?"
+
+"Perfectly so."
+
+"The windows of the three rooms open out upon the lawn. That
+fatal night Dr. Roylott had gone to his room early, though we
+knew that he had not retired to rest, for my sister was troubled
+by the smell of the strong Indian cigars which it was his custom
+to smoke. She left her room, therefore, and came into mine, where
+she sat for some time, chatting about her approaching wedding. At
+eleven o'clock she rose to leave me, but she paused at the door
+and looked back.
+
+"'Tell me, Helen,' said she, 'have you ever heard anyone whistle
+in the dead of the night?'
+
+"'Never,' said I.
+
+"'I suppose that you could not possibly whistle, yourself, in
+your sleep?'
+
+"'Certainly not. But why?'
+
+"'Because during the last few nights I have always, about three
+in the morning, heard a low, clear whistle. I am a light sleeper,
+and it has awakened me. I cannot tell where it came from--perhaps
+from the next room, perhaps from the lawn. I thought that I would
+just ask you whether you had heard it.'
+
+"'No, I have not. It must be those wretched gipsies in the
+plantation.'
+
+"'Very likely. And yet if it were on the lawn, I wonder that you
+did not hear it also.'
+
+"'Ah, but I sleep more heavily than you.'
+
+"'Well, it is of no great consequence, at any rate.' She smiled
+back at me, closed my door, and a few moments later I heard her
+key turn in the lock."
+
+"Indeed," said Holmes. "Was it your custom always to lock
+yourselves in at night?"
+
+"Always."
+
+"And why?"
+
+"I think that I mentioned to you that the doctor kept a cheetah
+and a baboon. We had no feeling of security unless our doors were
+locked."
+
+"Quite so. Pray proceed with your statement."
+
+"I could not sleep that night. A vague feeling of impending
+misfortune impressed me. My sister and I, you will recollect,
+were twins, and you know how subtle are the links which bind two
+souls which are so closely allied. It was a wild night. The wind
+was howling outside, and the rain was beating and splashing
+against the windows. Suddenly, amid all the hubbub of the gale,
+there burst forth the wild scream of a terrified woman. I knew
+that it was my sister's voice. I sprang from my bed, wrapped a
+shawl round me, and rushed into the corridor. As I opened my door
+I seemed to hear a low whistle, such as my sister described, and
+a few moments later a clanging sound, as if a mass of metal had
+fallen. As I ran down the passage, my sister's door was unlocked,
+and revolved slowly upon its hinges. I stared at it
+horror-stricken, not knowing what was about to issue from it. By
+the light of the corridor-lamp I saw my sister appear at the
+opening, her face blanched with terror, her hands groping for
+help, her whole figure swaying to and fro like that of a
+drunkard. I ran to her and threw my arms round her, but at that
+moment her knees seemed to give way and she fell to the ground.
+She writhed as one who is in terrible pain, and her limbs were
+dreadfully convulsed. At first I thought that she had not
+recognised me, but as I bent over her she suddenly shrieked out
+in a voice which I shall never forget, 'Oh, my God! Helen! It was
+the band! The speckled band!' There was something else which she
+would fain have said, and she stabbed with her finger into the
+air in the direction of the doctor's room, but a fresh convulsion
+seized her and choked her words. I rushed out, calling loudly for
+my stepfather, and I met him hastening from his room in his
+dressing-gown. When he reached my sister's side she was
+unconscious, and though he poured brandy down her throat and sent
+for medical aid from the village, all efforts were in vain, for
+she slowly sank and died without having recovered her
+consciousness. Such was the dreadful end of my beloved sister."
+
+"One moment," said Holmes, "are you sure about this whistle and
+metallic sound? Could you swear to it?"
+
+"That was what the county coroner asked me at the inquiry. It is
+my strong impression that I heard it, and yet, among the crash of
+the gale and the creaking of an old house, I may possibly have
+been deceived."
+
+"Was your sister dressed?"
+
+"No, she was in her night-dress. In her right hand was found the
+charred stump of a match, and in her left a match-box."
+
+"Showing that she had struck a light and looked about her when
+the alarm took place. That is important. And what conclusions did
+the coroner come to?"
+
+"He investigated the case with great care, for Dr. Roylott's
+conduct had long been notorious in the county, but he was unable
+to find any satisfactory cause of death. My evidence showed that
+the door had been fastened upon the inner side, and the windows
+were blocked by old-fashioned shutters with broad iron bars,
+which were secured every night. The walls were carefully sounded,
+and were shown to be quite solid all round, and the flooring was
+also thoroughly examined, with the same result. The chimney is
+wide, but is barred up by four large staples. It is certain,
+therefore, that my sister was quite alone when she met her end.
+Besides, there were no marks of any violence upon her."
+
+"How about poison?"
+
+"The doctors examined her for it, but without success."
+
+"What do you think that this unfortunate lady died of, then?"
+
+"It is my belief that she died of pure fear and nervous shock,
+though what it was that frightened her I cannot imagine."
+
+"Were there gipsies in the plantation at the time?"
+
+"Yes, there are nearly always some there."
+
+"Ah, and what did you gather from this allusion to a band--a
+speckled band?"
+
+"Sometimes I have thought that it was merely the wild talk of
+delirium, sometimes that it may have referred to some band of
+people, perhaps to these very gipsies in the plantation. I do not
+know whether the spotted handkerchiefs which so many of them wear
+over their heads might have suggested the strange adjective which
+she used."
+
+Holmes shook his head like a man who is far from being satisfied.
+
+"These are very deep waters," said he; "pray go on with your
+narrative."
+
+"Two years have passed since then, and my life has been until
+lately lonelier than ever. A month ago, however, a dear friend,
+whom I have known for many years, has done me the honour to ask
+my hand in marriage. His name is Armitage--Percy Armitage--the
+second son of Mr. Armitage, of Crane Water, near Reading. My
+stepfather has offered no opposition to the match, and we are to
+be married in the course of the spring. Two days ago some repairs
+were started in the west wing of the building, and my bedroom
+wall has been pierced, so that I have had to move into the
+chamber in which my sister died, and to sleep in the very bed in
+which she slept. Imagine, then, my thrill of terror when last
+night, as I lay awake, thinking over her terrible fate, I
+suddenly heard in the silence of the night the low whistle which
+had been the herald of her own death. I sprang up and lit the
+lamp, but nothing was to be seen in the room. I was too shaken to
+go to bed again, however, so I dressed, and as soon as it was
+daylight I slipped down, got a dog-cart at the Crown Inn, which
+is opposite, and drove to Leatherhead, from whence I have come on
+this morning with the one object of seeing you and asking your
+advice."
+
+"You have done wisely," said my friend. "But have you told me
+all?"
+
+"Yes, all."
+
+"Miss Roylott, you have not. You are screening your stepfather."
+
+"Why, what do you mean?"
+
+For answer Holmes pushed back the frill of black lace which
+fringed the hand that lay upon our visitor's knee. Five little
+livid spots, the marks of four fingers and a thumb, were printed
+upon the white wrist.
+
+"You have been cruelly used," said Holmes.
+
+The lady coloured deeply and covered over her injured wrist. "He
+is a hard man," she said, "and perhaps he hardly knows his own
+strength."
+
+There was a long silence, during which Holmes leaned his chin
+upon his hands and stared into the crackling fire.
+
+"This is a very deep business," he said at last. "There are a
+thousand details which I should desire to know before I decide
+upon our course of action. Yet we have not a moment to lose. If
+we were to come to Stoke Moran to-day, would it be possible for
+us to see over these rooms without the knowledge of your
+stepfather?"
+
+"As it happens, he spoke of coming into town to-day upon some
+most important business. It is probable that he will be away all
+day, and that there would be nothing to disturb you. We have a
+housekeeper now, but she is old and foolish, and I could easily
+get her out of the way."
+
+"Excellent. You are not averse to this trip, Watson?"
+
+"By no means."
+
+"Then we shall both come. What are you going to do yourself?"
+
+"I have one or two things which I would wish to do now that I am
+in town. But I shall return by the twelve o'clock train, so as to
+be there in time for your coming."
+
+"And you may expect us early in the afternoon. I have myself some
+small business matters to attend to. Will you not wait and
+breakfast?"
+
+"No, I must go. My heart is lightened already since I have
+confided my trouble to you. I shall look forward to seeing you
+again this afternoon." She dropped her thick black veil over her
+face and glided from the room.
+
+"And what do you think of it all, Watson?" asked Sherlock Holmes,
+leaning back in his chair.
+
+"It seems to me to be a most dark and sinister business."
+
+"Dark enough and sinister enough."
+
+"Yet if the lady is correct in saying that the flooring and walls
+are sound, and that the door, window, and chimney are impassable,
+then her sister must have been undoubtedly alone when she met her
+mysterious end."
+
+"What becomes, then, of these nocturnal whistles, and what of the
+very peculiar words of the dying woman?"
+
+"I cannot think."
+
+"When you combine the ideas of whistles at night, the presence of
+a band of gipsies who are on intimate terms with this old doctor,
+the fact that we have every reason to believe that the doctor has
+an interest in preventing his stepdaughter's marriage, the dying
+allusion to a band, and, finally, the fact that Miss Helen Stoner
+heard a metallic clang, which might have been caused by one of
+those metal bars that secured the shutters falling back into its
+place, I think that there is good ground to think that the
+mystery may be cleared along those lines."
+
+"But what, then, did the gipsies do?"
+
+"I cannot imagine."
+
+"I see many objections to any such theory."
+
+"And so do I. It is precisely for that reason that we are going
+to Stoke Moran this day. I want to see whether the objections are
+fatal, or if they may be explained away. But what in the name of
+the devil!"
+
+The ejaculation had been drawn from my companion by the fact that
+our door had been suddenly dashed open, and that a huge man had
+framed himself in the aperture. His costume was a peculiar
+mixture of the professional and of the agricultural, having a
+black top-hat, a long frock-coat, and a pair of high gaiters,
+with a hunting-crop swinging in his hand. So tall was he that his
+hat actually brushed the cross bar of the doorway, and his
+breadth seemed to span it across from side to side. A large face,
+seared with a thousand wrinkles, burned yellow with the sun, and
+marked with every evil passion, was turned from one to the other
+of us, while his deep-set, bile-shot eyes, and his high, thin,
+fleshless nose, gave him somewhat the resemblance to a fierce old
+bird of prey.
+
+"Which of you is Holmes?" asked this apparition.
+
+"My name, sir; but you have the advantage of me," said my
+companion quietly.
+
+"I am Dr. Grimesby Roylott, of Stoke Moran."
+
+"Indeed, Doctor," said Holmes blandly. "Pray take a seat."
+
+"I will do nothing of the kind. My stepdaughter has been here. I
+have traced her. What has she been saying to you?"
+
+"It is a little cold for the time of the year," said Holmes.
+
+"What has she been saying to you?" screamed the old man
+furiously.
+
+"But I have heard that the crocuses promise well," continued my
+companion imperturbably.
+
+"Ha! You put me off, do you?" said our new visitor, taking a step
+forward and shaking his hunting-crop. "I know you, you scoundrel!
+I have heard of you before. You are Holmes, the meddler."
+
+My friend smiled.
+
+"Holmes, the busybody!"
+
+His smile broadened.
+
+"Holmes, the Scotland Yard Jack-in-office!"
+
+Holmes chuckled heartily. "Your conversation is most
+entertaining," said he. "When you go out close the door, for
+there is a decided draught."
+
+"I will go when I have said my say. Don't you dare to meddle with
+my affairs. I know that Miss Stoner has been here. I traced her!
+I am a dangerous man to fall foul of! See here." He stepped
+swiftly forward, seized the poker, and bent it into a curve with
+his huge brown hands.
+
+"See that you keep yourself out of my grip," he snarled, and
+hurling the twisted poker into the fireplace he strode out of the
+room.
+
+"He seems a very amiable person," said Holmes, laughing. "I am
+not quite so bulky, but if he had remained I might have shown him
+that my grip was not much more feeble than his own." As he spoke
+he picked up the steel poker and, with a sudden effort,
+straightened it out again.
+
+"Fancy his having the insolence to confound me with the official
+detective force! This incident gives zest to our investigation,
+however, and I only trust that our little friend will not suffer
+from her imprudence in allowing this brute to trace her. And now,
+Watson, we shall order breakfast, and afterwards I shall walk
+down to Doctors' Commons, where I hope to get some data which may
+help us in this matter."
+
+
+It was nearly one o'clock when Sherlock Holmes returned from his
+excursion. He held in his hand a sheet of blue paper, scrawled
+over with notes and figures.
+
+"I have seen the will of the deceased wife," said he. "To
+determine its exact meaning I have been obliged to work out the
+present prices of the investments with which it is concerned. The
+total income, which at the time of the wife's death was little
+short of 1100 pounds, is now, through the fall in agricultural
+prices, not more than 750 pounds. Each daughter can claim an
+income of 250 pounds, in case of marriage. It is evident,
+therefore, that if both girls had married, this beauty would have
+had a mere pittance, while even one of them would cripple him to
+a very serious extent. My morning's work has not been wasted,
+since it has proved that he has the very strongest motives for
+standing in the way of anything of the sort. And now, Watson,
+this is too serious for dawdling, especially as the old man is
+aware that we are interesting ourselves in his affairs; so if you
+are ready, we shall call a cab and drive to Waterloo. I should be
+very much obliged if you would slip your revolver into your
+pocket. An Eley's No. 2 is an excellent argument with gentlemen
+who can twist steel pokers into knots. That and a tooth-brush
+are, I think, all that we need."
+
+At Waterloo we were fortunate in catching a train for
+Leatherhead, where we hired a trap at the station inn and drove
+for four or five miles through the lovely Surrey lanes. It was a
+perfect day, with a bright sun and a few fleecy clouds in the
+heavens. The trees and wayside hedges were just throwing out
+their first green shoots, and the air was full of the pleasant
+smell of the moist earth. To me at least there was a strange
+contrast between the sweet promise of the spring and this
+sinister quest upon which we were engaged. My companion sat in
+the front of the trap, his arms folded, his hat pulled down over
+his eyes, and his chin sunk upon his breast, buried in the
+deepest thought. Suddenly, however, he started, tapped me on the
+shoulder, and pointed over the meadows.
+
+"Look there!" said he.
+
+A heavily timbered park stretched up in a gentle slope,
+thickening into a grove at the highest point. From amid the
+branches there jutted out the grey gables and high roof-tree of a
+very old mansion.
+
+"Stoke Moran?" said he.
+
+"Yes, sir, that be the house of Dr. Grimesby Roylott," remarked
+the driver.
+
+"There is some building going on there," said Holmes; "that is
+where we are going."
+
+"There's the village," said the driver, pointing to a cluster of
+roofs some distance to the left; "but if you want to get to the
+house, you'll find it shorter to get over this stile, and so by
+the foot-path over the fields. There it is, where the lady is
+walking."
+
+"And the lady, I fancy, is Miss Stoner," observed Holmes, shading
+his eyes. "Yes, I think we had better do as you suggest."
+
+We got off, paid our fare, and the trap rattled back on its way
+to Leatherhead.
+
+"I thought it as well," said Holmes as we climbed the stile,
+"that this fellow should think we had come here as architects, or
+on some definite business. It may stop his gossip.
+Good-afternoon, Miss Stoner. You see that we have been as good as
+our word."
+
+Our client of the morning had hurried forward to meet us with a
+face which spoke her joy. "I have been waiting so eagerly for
+you," she cried, shaking hands with us warmly. "All has turned
+out splendidly. Dr. Roylott has gone to town, and it is unlikely
+that he will be back before evening."
+
+"We have had the pleasure of making the doctor's acquaintance,"
+said Holmes, and in a few words he sketched out what had
+occurred. Miss Stoner turned white to the lips as she listened.
+
+"Good heavens!" she cried, "he has followed me, then."
+
+"So it appears."
+
+"He is so cunning that I never know when I am safe from him. What
+will he say when he returns?"
+
+"He must guard himself, for he may find that there is someone
+more cunning than himself upon his track. You must lock yourself
+up from him to-night. If he is violent, we shall take you away to
+your aunt's at Harrow. Now, we must make the best use of our
+time, so kindly take us at once to the rooms which we are to
+examine."
+
+The building was of grey, lichen-blotched stone, with a high
+central portion and two curving wings, like the claws of a crab,
+thrown out on each side. In one of these wings the windows were
+broken and blocked with wooden boards, while the roof was partly
+caved in, a picture of ruin. The central portion was in little
+better repair, but the right-hand block was comparatively modern,
+and the blinds in the windows, with the blue smoke curling up
+from the chimneys, showed that this was where the family resided.
+Some scaffolding had been erected against the end wall, and the
+stone-work had been broken into, but there were no signs of any
+workmen at the moment of our visit. Holmes walked slowly up and
+down the ill-trimmed lawn and examined with deep attention the
+outsides of the windows.
+
+"This, I take it, belongs to the room in which you used to sleep,
+the centre one to your sister's, and the one next to the main
+building to Dr. Roylott's chamber?"
+
+"Exactly so. But I am now sleeping in the middle one."
+
+"Pending the alterations, as I understand. By the way, there does
+not seem to be any very pressing need for repairs at that end
+wall."
+
+"There were none. I believe that it was an excuse to move me from
+my room."
+
+"Ah! that is suggestive. Now, on the other side of this narrow
+wing runs the corridor from which these three rooms open. There
+are windows in it, of course?"
+
+"Yes, but very small ones. Too narrow for anyone to pass
+through."
+
+"As you both locked your doors at night, your rooms were
+unapproachable from that side. Now, would you have the kindness
+to go into your room and bar your shutters?"
+
+Miss Stoner did so, and Holmes, after a careful examination
+through the open window, endeavoured in every way to force the
+shutter open, but without success. There was no slit through
+which a knife could be passed to raise the bar. Then with his
+lens he tested the hinges, but they were of solid iron, built
+firmly into the massive masonry. "Hum!" said he, scratching his
+chin in some perplexity, "my theory certainly presents some
+difficulties. No one could pass these shutters if they were
+bolted. Well, we shall see if the inside throws any light upon
+the matter."
+
+A small side door led into the whitewashed corridor from which
+the three bedrooms opened. Holmes refused to examine the third
+chamber, so we passed at once to the second, that in which Miss
+Stoner was now sleeping, and in which her sister had met with her
+fate. It was a homely little room, with a low ceiling and a
+gaping fireplace, after the fashion of old country-houses. A
+brown chest of drawers stood in one corner, a narrow
+white-counterpaned bed in another, and a dressing-table on the
+left-hand side of the window. These articles, with two small
+wicker-work chairs, made up all the furniture in the room save
+for a square of Wilton carpet in the centre. The boards round and
+the panelling of the walls were of brown, worm-eaten oak, so old
+and discoloured that it may have dated from the original building
+of the house. Holmes drew one of the chairs into a corner and sat
+silent, while his eyes travelled round and round and up and down,
+taking in every detail of the apartment.
+
+"Where does that bell communicate with?" he asked at last
+pointing to a thick bell-rope which hung down beside the bed, the
+tassel actually lying upon the pillow.
+
+"It goes to the housekeeper's room."
+
+"It looks newer than the other things?"
+
+"Yes, it was only put there a couple of years ago."
+
+"Your sister asked for it, I suppose?"
+
+"No, I never heard of her using it. We used always to get what we
+wanted for ourselves."
+
+"Indeed, it seemed unnecessary to put so nice a bell-pull there.
+You will excuse me for a few minutes while I satisfy myself as to
+this floor." He threw himself down upon his face with his lens in
+his hand and crawled swiftly backward and forward, examining
+minutely the cracks between the boards. Then he did the same with
+the wood-work with which the chamber was panelled. Finally he
+walked over to the bed and spent some time in staring at it and
+in running his eye up and down the wall. Finally he took the
+bell-rope in his hand and gave it a brisk tug.
+
+"Why, it's a dummy," said he.
+
+"Won't it ring?"
+
+"No, it is not even attached to a wire. This is very interesting.
+You can see now that it is fastened to a hook just above where
+the little opening for the ventilator is."
+
+"How very absurd! I never noticed that before."
+
+"Very strange!" muttered Holmes, pulling at the rope. "There are
+one or two very singular points about this room. For example,
+what a fool a builder must be to open a ventilator into another
+room, when, with the same trouble, he might have communicated
+with the outside air!"
+
+"That is also quite modern," said the lady.
+
+"Done about the same time as the bell-rope?" remarked Holmes.
+
+"Yes, there were several little changes carried out about that
+time."
+
+"They seem to have been of a most interesting character--dummy
+bell-ropes, and ventilators which do not ventilate. With your
+permission, Miss Stoner, we shall now carry our researches into
+the inner apartment."
+
+Dr. Grimesby Roylott's chamber was larger than that of his
+step-daughter, but was as plainly furnished. A camp-bed, a small
+wooden shelf full of books, mostly of a technical character, an
+armchair beside the bed, a plain wooden chair against the wall, a
+round table, and a large iron safe were the principal things
+which met the eye. Holmes walked slowly round and examined each
+and all of them with the keenest interest.
+
+"What's in here?" he asked, tapping the safe.
+
+"My stepfather's business papers."
+
+"Oh! you have seen inside, then?"
+
+"Only once, some years ago. I remember that it was full of
+papers."
+
+"There isn't a cat in it, for example?"
+
+"No. What a strange idea!"
+
+"Well, look at this!" He took up a small saucer of milk which
+stood on the top of it.
+
+"No; we don't keep a cat. But there is a cheetah and a baboon."
+
+"Ah, yes, of course! Well, a cheetah is just a big cat, and yet a
+saucer of milk does not go very far in satisfying its wants, I
+daresay. There is one point which I should wish to determine." He
+squatted down in front of the wooden chair and examined the seat
+of it with the greatest attention.
+
+"Thank you. That is quite settled," said he, rising and putting
+his lens in his pocket. "Hullo! Here is something interesting!"
+
+The object which had caught his eye was a small dog lash hung on
+one corner of the bed. The lash, however, was curled upon itself
+and tied so as to make a loop of whipcord.
+
+"What do you make of that, Watson?"
+
+"It's a common enough lash. But I don't know why it should be
+tied."
+
+"That is not quite so common, is it? Ah, me! it's a wicked world,
+and when a clever man turns his brains to crime it is the worst
+of all. I think that I have seen enough now, Miss Stoner, and
+with your permission we shall walk out upon the lawn."
+
+I had never seen my friend's face so grim or his brow so dark as
+it was when we turned from the scene of this investigation. We
+had walked several times up and down the lawn, neither Miss
+Stoner nor myself liking to break in upon his thoughts before he
+roused himself from his reverie.
+
+"It is very essential, Miss Stoner," said he, "that you should
+absolutely follow my advice in every respect."
+
+"I shall most certainly do so."
+
+"The matter is too serious for any hesitation. Your life may
+depend upon your compliance."
+
+"I assure you that I am in your hands."
+
+"In the first place, both my friend and I must spend the night in
+your room."
+
+Both Miss Stoner and I gazed at him in astonishment.
+
+"Yes, it must be so. Let me explain. I believe that that is the
+village inn over there?"
+
+"Yes, that is the Crown."
+
+"Very good. Your windows would be visible from there?"
+
+"Certainly."
+
+"You must confine yourself to your room, on pretence of a
+headache, when your stepfather comes back. Then when you hear him
+retire for the night, you must open the shutters of your window,
+undo the hasp, put your lamp there as a signal to us, and then
+withdraw quietly with everything which you are likely to want
+into the room which you used to occupy. I have no doubt that, in
+spite of the repairs, you could manage there for one night."
+
+"Oh, yes, easily."
+
+"The rest you will leave in our hands."
+
+"But what will you do?"
+
+"We shall spend the night in your room, and we shall investigate
+the cause of this noise which has disturbed you."
+
+"I believe, Mr. Holmes, that you have already made up your mind,"
+said Miss Stoner, laying her hand upon my companion's sleeve.
+
+"Perhaps I have."
+
+"Then, for pity's sake, tell me what was the cause of my sister's
+death."
+
+"I should prefer to have clearer proofs before I speak."
+
+"You can at least tell me whether my own thought is correct, and
+if she died from some sudden fright."
+
+"No, I do not think so. I think that there was probably some more
+tangible cause. And now, Miss Stoner, we must leave you for if
+Dr. Roylott returned and saw us our journey would be in vain.
+Good-bye, and be brave, for if you will do what I have told you,
+you may rest assured that we shall soon drive away the dangers
+that threaten you."
+
+Sherlock Holmes and I had no difficulty in engaging a bedroom and
+sitting-room at the Crown Inn. They were on the upper floor, and
+from our window we could command a view of the avenue gate, and
+of the inhabited wing of Stoke Moran Manor House. At dusk we saw
+Dr. Grimesby Roylott drive past, his huge form looming up beside
+the little figure of the lad who drove him. The boy had some
+slight difficulty in undoing the heavy iron gates, and we heard
+the hoarse roar of the doctor's voice and saw the fury with which
+he shook his clinched fists at him. The trap drove on, and a few
+minutes later we saw a sudden light spring up among the trees as
+the lamp was lit in one of the sitting-rooms.
+
+"Do you know, Watson," said Holmes as we sat together in the
+gathering darkness, "I have really some scruples as to taking you
+to-night. There is a distinct element of danger."
+
+"Can I be of assistance?"
+
+"Your presence might be invaluable."
+
+"Then I shall certainly come."
+
+"It is very kind of you."
+
+"You speak of danger. You have evidently seen more in these rooms
+than was visible to me."
+
+"No, but I fancy that I may have deduced a little more. I imagine
+that you saw all that I did."
+
+"I saw nothing remarkable save the bell-rope, and what purpose
+that could answer I confess is more than I can imagine."
+
+"You saw the ventilator, too?"
+
+"Yes, but I do not think that it is such a very unusual thing to
+have a small opening between two rooms. It was so small that a
+rat could hardly pass through."
+
+"I knew that we should find a ventilator before ever we came to
+Stoke Moran."
+
+"My dear Holmes!"
+
+"Oh, yes, I did. You remember in her statement she said that her
+sister could smell Dr. Roylott's cigar. Now, of course that
+suggested at once that there must be a communication between the
+two rooms. It could only be a small one, or it would have been
+remarked upon at the coroner's inquiry. I deduced a ventilator."
+
+"But what harm can there be in that?"
+
+"Well, there is at least a curious coincidence of dates. A
+ventilator is made, a cord is hung, and a lady who sleeps in the
+bed dies. Does not that strike you?"
+
+"I cannot as yet see any connection."
+
+"Did you observe anything very peculiar about that bed?"
+
+"No."
+
+"It was clamped to the floor. Did you ever see a bed fastened
+like that before?"
+
+"I cannot say that I have."
+
+"The lady could not move her bed. It must always be in the same
+relative position to the ventilator and to the rope--or so we may
+call it, since it was clearly never meant for a bell-pull."
+
+"Holmes," I cried, "I seem to see dimly what you are hinting at.
+We are only just in time to prevent some subtle and horrible
+crime."
+
+"Subtle enough and horrible enough. When a doctor does go wrong
+he is the first of criminals. He has nerve and he has knowledge.
+Palmer and Pritchard were among the heads of their profession.
+This man strikes even deeper, but I think, Watson, that we shall
+be able to strike deeper still. But we shall have horrors enough
+before the night is over; for goodness' sake let us have a quiet
+pipe and turn our minds for a few hours to something more
+cheerful."
+
+
+About nine o'clock the light among the trees was extinguished,
+and all was dark in the direction of the Manor House. Two hours
+passed slowly away, and then, suddenly, just at the stroke of
+eleven, a single bright light shone out right in front of us.
+
+"That is our signal," said Holmes, springing to his feet; "it
+comes from the middle window."
+
+As we passed out he exchanged a few words with the landlord,
+explaining that we were going on a late visit to an acquaintance,
+and that it was possible that we might spend the night there. A
+moment later we were out on the dark road, a chill wind blowing
+in our faces, and one yellow light twinkling in front of us
+through the gloom to guide us on our sombre errand.
+
+There was little difficulty in entering the grounds, for
+unrepaired breaches gaped in the old park wall. Making our way
+among the trees, we reached the lawn, crossed it, and were about
+to enter through the window when out from a clump of laurel
+bushes there darted what seemed to be a hideous and distorted
+child, who threw itself upon the grass with writhing limbs and
+then ran swiftly across the lawn into the darkness.
+
+"My God!" I whispered; "did you see it?"
+
+Holmes was for the moment as startled as I. His hand closed like
+a vice upon my wrist in his agitation. Then he broke into a low
+laugh and put his lips to my ear.
+
+"It is a nice household," he murmured. "That is the baboon."
+
+I had forgotten the strange pets which the doctor affected. There
+was a cheetah, too; perhaps we might find it upon our shoulders
+at any moment. I confess that I felt easier in my mind when,
+after following Holmes' example and slipping off my shoes, I
+found myself inside the bedroom. My companion noiselessly closed
+the shutters, moved the lamp onto the table, and cast his eyes
+round the room. All was as we had seen it in the daytime. Then
+creeping up to me and making a trumpet of his hand, he whispered
+into my ear again so gently that it was all that I could do to
+distinguish the words:
+
+"The least sound would be fatal to our plans."
+
+I nodded to show that I had heard.
+
+"We must sit without light. He would see it through the
+ventilator."
+
+I nodded again.
+
+"Do not go asleep; your very life may depend upon it. Have your
+pistol ready in case we should need it. I will sit on the side of
+the bed, and you in that chair."
+
+I took out my revolver and laid it on the corner of the table.
+
+Holmes had brought up a long thin cane, and this he placed upon
+the bed beside him. By it he laid the box of matches and the
+stump of a candle. Then he turned down the lamp, and we were left
+in darkness.
+
+How shall I ever forget that dreadful vigil? I could not hear a
+sound, not even the drawing of a breath, and yet I knew that my
+companion sat open-eyed, within a few feet of me, in the same
+state of nervous tension in which I was myself. The shutters cut
+off the least ray of light, and we waited in absolute darkness.
+
+From outside came the occasional cry of a night-bird, and once at
+our very window a long drawn catlike whine, which told us that
+the cheetah was indeed at liberty. Far away we could hear the
+deep tones of the parish clock, which boomed out every quarter of
+an hour. How long they seemed, those quarters! Twelve struck, and
+one and two and three, and still we sat waiting silently for
+whatever might befall.
+
+Suddenly there was the momentary gleam of a light up in the
+direction of the ventilator, which vanished immediately, but was
+succeeded by a strong smell of burning oil and heated metal.
+Someone in the next room had lit a dark-lantern. I heard a gentle
+sound of movement, and then all was silent once more, though the
+smell grew stronger. For half an hour I sat with straining ears.
+Then suddenly another sound became audible--a very gentle,
+soothing sound, like that of a small jet of steam escaping
+continually from a kettle. The instant that we heard it, Holmes
+sprang from the bed, struck a match, and lashed furiously with
+his cane at the bell-pull.
+
+"You see it, Watson?" he yelled. "You see it?"
+
+But I saw nothing. At the moment when Holmes struck the light I
+heard a low, clear whistle, but the sudden glare flashing into my
+weary eyes made it impossible for me to tell what it was at which
+my friend lashed so savagely. I could, however, see that his face
+was deadly pale and filled with horror and loathing. He had
+ceased to strike and was gazing up at the ventilator when
+suddenly there broke from the silence of the night the most
+horrible cry to which I have ever listened. It swelled up louder
+and louder, a hoarse yell of pain and fear and anger all mingled
+in the one dreadful shriek. They say that away down in the
+village, and even in the distant parsonage, that cry raised the
+sleepers from their beds. It struck cold to our hearts, and I
+stood gazing at Holmes, and he at me, until the last echoes of it
+had died away into the silence from which it rose.
+
+"What can it mean?" I gasped.
+
+"It means that it is all over," Holmes answered. "And perhaps,
+after all, it is for the best. Take your pistol, and we will
+enter Dr. Roylott's room."
+
+With a grave face he lit the lamp and led the way down the
+corridor. Twice he struck at the chamber door without any reply
+from within. Then he turned the handle and entered, I at his
+heels, with the cocked pistol in my hand.
+
+It was a singular sight which met our eyes. On the table stood a
+dark-lantern with the shutter half open, throwing a brilliant
+beam of light upon the iron safe, the door of which was ajar.
+Beside this table, on the wooden chair, sat Dr. Grimesby Roylott
+clad in a long grey dressing-gown, his bare ankles protruding
+beneath, and his feet thrust into red heelless Turkish slippers.
+Across his lap lay the short stock with the long lash which we
+had noticed during the day. His chin was cocked upward and his
+eyes were fixed in a dreadful, rigid stare at the corner of the
+ceiling. Round his brow he had a peculiar yellow band, with
+brownish speckles, which seemed to be bound tightly round his
+head. As we entered he made neither sound nor motion.
+
+"The band! the speckled band!" whispered Holmes.
+
+I took a step forward. In an instant his strange headgear began
+to move, and there reared itself from among his hair the squat
+diamond-shaped head and puffed neck of a loathsome serpent.
+
+"It is a swamp adder!" cried Holmes; "the deadliest snake in
+India. He has died within ten seconds of being bitten. Violence
+does, in truth, recoil upon the violent, and the schemer falls
+into the pit which he digs for another. Let us thrust this
+creature back into its den, and we can then remove Miss Stoner to
+some place of shelter and let the county police know what has
+happened."
+
+As he spoke he drew the dog-whip swiftly from the dead man's lap,
+and throwing the noose round the reptile's neck he drew it from
+its horrid perch and, carrying it at arm's length, threw it into
+the iron safe, which he closed upon it.
+
+Such are the true facts of the death of Dr. Grimesby Roylott, of
+Stoke Moran. It is not necessary that I should prolong a
+narrative which has already run to too great a length by telling
+how we broke the sad news to the terrified girl, how we conveyed
+her by the morning train to the care of her good aunt at Harrow,
+of how the slow process of official inquiry came to the
+conclusion that the doctor met his fate while indiscreetly
+playing with a dangerous pet. The little which I had yet to learn
+of the case was told me by Sherlock Holmes as we travelled back
+next day.
+
+"I had," said he, "come to an entirely erroneous conclusion which
+shows, my dear Watson, how dangerous it always is to reason from
+insufficient data. The presence of the gipsies, and the use of
+the word 'band,' which was used by the poor girl, no doubt, to
+explain the appearance which she had caught a hurried glimpse of
+by the light of her match, were sufficient to put me upon an
+entirely wrong scent. I can only claim the merit that I instantly
+reconsidered my position when, however, it became clear to me
+that whatever danger threatened an occupant of the room could not
+come either from the window or the door. My attention was
+speedily drawn, as I have already remarked to you, to this
+ventilator, and to the bell-rope which hung down to the bed. The
+discovery that this was a dummy, and that the bed was clamped to
+the floor, instantly gave rise to the suspicion that the rope was
+there as a bridge for something passing through the hole and
+coming to the bed. The idea of a snake instantly occurred to me,
+and when I coupled it with my knowledge that the doctor was
+furnished with a supply of creatures from India, I felt that I
+was probably on the right track. The idea of using a form of
+poison which could not possibly be discovered by any chemical
+test was just such a one as would occur to a clever and ruthless
+man who had had an Eastern training. The rapidity with which such
+a poison would take effect would also, from his point of view, be
+an advantage. It would be a sharp-eyed coroner, indeed, who could
+distinguish the two little dark punctures which would show where
+the poison fangs had done their work. Then I thought of the
+whistle. Of course he must recall the snake before the morning
+light revealed it to the victim. He had trained it, probably by
+the use of the milk which we saw, to return to him when summoned.
+He would put it through this ventilator at the hour that he
+thought best, with the certainty that it would crawl down the
+rope and land on the bed. It might or might not bite the
+occupant, perhaps she might escape every night for a week, but
+sooner or later she must fall a victim.
+
+"I had come to these conclusions before ever I had entered his
+room. An inspection of his chair showed me that he had been in
+the habit of standing on it, which of course would be necessary
+in order that he should reach the ventilator. The sight of the
+safe, the saucer of milk, and the loop of whipcord were enough to
+finally dispel any doubts which may have remained. The metallic
+clang heard by Miss Stoner was obviously caused by her stepfather
+hastily closing the door of his safe upon its terrible occupant.
+Having once made up my mind, you know the steps which I took in
+order to put the matter to the proof. I heard the creature hiss
+as I have no doubt that you did also, and I instantly lit the
+light and attacked it."
+
+"With the result of driving it through the ventilator."
+
+"And also with the result of causing it to turn upon its master
+at the other side. Some of the blows of my cane came home and
+roused its snakish temper, so that it flew upon the first person
+it saw. In this way I am no doubt indirectly responsible for Dr.
+Grimesby Roylott's death, and I cannot say that it is likely to
+weigh very heavily upon my conscience."
+
+
+
+IX. THE ADVENTURE OF THE ENGINEER'S THUMB
+
+Of all the problems which have been submitted to my friend, Mr.
+Sherlock Holmes, for solution during the years of our intimacy,
+there were only two which I was the means of introducing to his
+notice--that of Mr. Hatherley's thumb, and that of Colonel
+Warburton's madness. Of these the latter may have afforded a
+finer field for an acute and original observer, but the other was
+so strange in its inception and so dramatic in its details that
+it may be the more worthy of being placed upon record, even if it
+gave my friend fewer openings for those deductive methods of
+reasoning by which he achieved such remarkable results. The story
+has, I believe, been told more than once in the newspapers, but,
+like all such narratives, its effect is much less striking when
+set forth en bloc in a single half-column of print than when the
+facts slowly evolve before your own eyes, and the mystery clears
+gradually away as each new discovery furnishes a step which leads
+on to the complete truth. At the time the circumstances made a
+deep impression upon me, and the lapse of two years has hardly
+served to weaken the effect.
+
+It was in the summer of '89, not long after my marriage, that the
+events occurred which I am now about to summarise. I had returned
+to civil practice and had finally abandoned Holmes in his Baker
+Street rooms, although I continually visited him and occasionally
+even persuaded him to forgo his Bohemian habits so far as to come
+and visit us. My practice had steadily increased, and as I
+happened to live at no very great distance from Paddington
+Station, I got a few patients from among the officials. One of
+these, whom I had cured of a painful and lingering disease, was
+never weary of advertising my virtues and of endeavouring to send
+me on every sufferer over whom he might have any influence.
+
+One morning, at a little before seven o'clock, I was awakened by
+the maid tapping at the door to announce that two men had come
+from Paddington and were waiting in the consulting-room. I
+dressed hurriedly, for I knew by experience that railway cases
+were seldom trivial, and hastened downstairs. As I descended, my
+old ally, the guard, came out of the room and closed the door
+tightly behind him.
+
+"I've got him here," he whispered, jerking his thumb over his
+shoulder; "he's all right."
+
+"What is it, then?" I asked, for his manner suggested that it was
+some strange creature which he had caged up in my room.
+
+"It's a new patient," he whispered. "I thought I'd bring him
+round myself; then he couldn't slip away. There he is, all safe
+and sound. I must go now, Doctor; I have my dooties, just the
+same as you." And off he went, this trusty tout, without even
+giving me time to thank him.
+
+I entered my consulting-room and found a gentleman seated by the
+table. He was quietly dressed in a suit of heather tweed with a
+soft cloth cap which he had laid down upon my books. Round one of
+his hands he had a handkerchief wrapped, which was mottled all
+over with bloodstains. He was young, not more than
+five-and-twenty, I should say, with a strong, masculine face; but
+he was exceedingly pale and gave me the impression of a man who
+was suffering from some strong agitation, which it took all his
+strength of mind to control.
+
+"I am sorry to knock you up so early, Doctor," said he, "but I
+have had a very serious accident during the night. I came in by
+train this morning, and on inquiring at Paddington as to where I
+might find a doctor, a worthy fellow very kindly escorted me
+here. I gave the maid a card, but I see that she has left it upon
+the side-table."
+
+I took it up and glanced at it. "Mr. Victor Hatherley, hydraulic
+engineer, 16A, Victoria Street (3rd floor)." That was the name,
+style, and abode of my morning visitor. "I regret that I have
+kept you waiting," said I, sitting down in my library-chair. "You
+are fresh from a night journey, I understand, which is in itself
+a monotonous occupation."
+
+"Oh, my night could not be called monotonous," said he, and
+laughed. He laughed very heartily, with a high, ringing note,
+leaning back in his chair and shaking his sides. All my medical
+instincts rose up against that laugh.
+
+"Stop it!" I cried; "pull yourself together!" and I poured out
+some water from a caraffe.
+
+It was useless, however. He was off in one of those hysterical
+outbursts which come upon a strong nature when some great crisis
+is over and gone. Presently he came to himself once more, very
+weary and pale-looking.
+
+"I have been making a fool of myself," he gasped.
+
+"Not at all. Drink this." I dashed some brandy into the water,
+and the colour began to come back to his bloodless cheeks.
+
+"That's better!" said he. "And now, Doctor, perhaps you would
+kindly attend to my thumb, or rather to the place where my thumb
+used to be."
+
+He unwound the handkerchief and held out his hand. It gave even
+my hardened nerves a shudder to look at it. There were four
+protruding fingers and a horrid red, spongy surface where the
+thumb should have been. It had been hacked or torn right out from
+the roots.
+
+"Good heavens!" I cried, "this is a terrible injury. It must have
+bled considerably."
+
+"Yes, it did. I fainted when it was done, and I think that I must
+have been senseless for a long time. When I came to I found that
+it was still bleeding, so I tied one end of my handkerchief very
+tightly round the wrist and braced it up with a twig."
+
+"Excellent! You should have been a surgeon."
+
+"It is a question of hydraulics, you see, and came within my own
+province."
+
+"This has been done," said I, examining the wound, "by a very
+heavy and sharp instrument."
+
+"A thing like a cleaver," said he.
+
+"An accident, I presume?"
+
+"By no means."
+
+"What! a murderous attack?"
+
+"Very murderous indeed."
+
+"You horrify me."
+
+I sponged the wound, cleaned it, dressed it, and finally covered
+it over with cotton wadding and carbolised bandages. He lay back
+without wincing, though he bit his lip from time to time.
+
+"How is that?" I asked when I had finished.
+
+"Capital! Between your brandy and your bandage, I feel a new man.
+I was very weak, but I have had a good deal to go through."
+
+"Perhaps you had better not speak of the matter. It is evidently
+trying to your nerves."
+
+"Oh, no, not now. I shall have to tell my tale to the police;
+but, between ourselves, if it were not for the convincing
+evidence of this wound of mine, I should be surprised if they
+believed my statement, for it is a very extraordinary one, and I
+have not much in the way of proof with which to back it up; and,
+even if they believe me, the clues which I can give them are so
+vague that it is a question whether justice will be done."
+
+"Ha!" cried I, "if it is anything in the nature of a problem
+which you desire to see solved, I should strongly recommend you
+to come to my friend, Mr. Sherlock Holmes, before you go to the
+official police."
+
+"Oh, I have heard of that fellow," answered my visitor, "and I
+should be very glad if he would take the matter up, though of
+course I must use the official police as well. Would you give me
+an introduction to him?"
+
+"I'll do better. I'll take you round to him myself."
+
+"I should be immensely obliged to you."
+
+"We'll call a cab and go together. We shall just be in time to
+have a little breakfast with him. Do you feel equal to it?"
+
+"Yes; I shall not feel easy until I have told my story."
+
+"Then my servant will call a cab, and I shall be with you in an
+instant." I rushed upstairs, explained the matter shortly to my
+wife, and in five minutes was inside a hansom, driving with my
+new acquaintance to Baker Street.
+
+Sherlock Holmes was, as I expected, lounging about his
+sitting-room in his dressing-gown, reading the agony column of The
+Times and smoking his before-breakfast pipe, which was composed
+of all the plugs and dottles left from his smokes of the day
+before, all carefully dried and collected on the corner of the
+mantelpiece. He received us in his quietly genial fashion,
+ordered fresh rashers and eggs, and joined us in a hearty meal.
+When it was concluded he settled our new acquaintance upon the
+sofa, placed a pillow beneath his head, and laid a glass of
+brandy and water within his reach.
+
+"It is easy to see that your experience has been no common one,
+Mr. Hatherley," said he. "Pray, lie down there and make yourself
+absolutely at home. Tell us what you can, but stop when you are
+tired and keep up your strength with a little stimulant."
+
+"Thank you," said my patient, "but I have felt another man since
+the doctor bandaged me, and I think that your breakfast has
+completed the cure. I shall take up as little of your valuable
+time as possible, so I shall start at once upon my peculiar
+experiences."
+
+Holmes sat in his big armchair with the weary, heavy-lidded
+expression which veiled his keen and eager nature, while I sat
+opposite to him, and we listened in silence to the strange story
+which our visitor detailed to us.
+
+"You must know," said he, "that I am an orphan and a bachelor,
+residing alone in lodgings in London. By profession I am a
+hydraulic engineer, and I have had considerable experience of my
+work during the seven years that I was apprenticed to Venner &
+Matheson, the well-known firm, of Greenwich. Two years ago,
+having served my time, and having also come into a fair sum of
+money through my poor father's death, I determined to start in
+business for myself and took professional chambers in Victoria
+Street.
+
+"I suppose that everyone finds his first independent start in
+business a dreary experience. To me it has been exceptionally so.
+During two years I have had three consultations and one small
+job, and that is absolutely all that my profession has brought
+me. My gross takings amount to 27 pounds 10s. Every day, from
+nine in the morning until four in the afternoon, I waited in my
+little den, until at last my heart began to sink, and I came to
+believe that I should never have any practice at all.
+
+"Yesterday, however, just as I was thinking of leaving the
+office, my clerk entered to say there was a gentleman waiting who
+wished to see me upon business. He brought up a card, too, with
+the name of 'Colonel Lysander Stark' engraved upon it. Close at
+his heels came the colonel himself, a man rather over the middle
+size, but of an exceeding thinness. I do not think that I have
+ever seen so thin a man. His whole face sharpened away into nose
+and chin, and the skin of his cheeks was drawn quite tense over
+his outstanding bones. Yet this emaciation seemed to be his
+natural habit, and due to no disease, for his eye was bright, his
+step brisk, and his bearing assured. He was plainly but neatly
+dressed, and his age, I should judge, would be nearer forty than
+thirty.
+
+"'Mr. Hatherley?' said he, with something of a German accent.
+'You have been recommended to me, Mr. Hatherley, as being a man
+who is not only proficient in his profession but is also discreet
+and capable of preserving a secret.'
+
+"I bowed, feeling as flattered as any young man would at such an
+address. 'May I ask who it was who gave me so good a character?'
+
+"'Well, perhaps it is better that I should not tell you that just
+at this moment. I have it from the same source that you are both
+an orphan and a bachelor and are residing alone in London.'
+
+"'That is quite correct,' I answered; 'but you will excuse me if
+I say that I cannot see how all this bears upon my professional
+qualifications. I understand that it was on a professional matter
+that you wished to speak to me?'
+
+"'Undoubtedly so. But you will find that all I say is really to
+the point. I have a professional commission for you, but absolute
+secrecy is quite essential--absolute secrecy, you understand, and
+of course we may expect that more from a man who is alone than
+from one who lives in the bosom of his family.'
+
+"'If I promise to keep a secret,' said I, 'you may absolutely
+depend upon my doing so.'
+
+"He looked very hard at me as I spoke, and it seemed to me that I
+had never seen so suspicious and questioning an eye.
+
+"'Do you promise, then?' said he at last.
+
+"'Yes, I promise.'
+
+"'Absolute and complete silence before, during, and after? No
+reference to the matter at all, either in word or writing?'
+
+"'I have already given you my word.'
+
+"'Very good.' He suddenly sprang up, and darting like lightning
+across the room he flung open the door. The passage outside was
+empty.
+
+"'That's all right,' said he, coming back. 'I know that clerks are
+sometimes curious as to their master's affairs. Now we can talk
+in safety.' He drew up his chair very close to mine and began to
+stare at me again with the same questioning and thoughtful look.
+
+"A feeling of repulsion, and of something akin to fear had begun
+to rise within me at the strange antics of this fleshless man.
+Even my dread of losing a client could not restrain me from
+showing my impatience.
+
+"'I beg that you will state your business, sir,' said I; 'my time
+is of value.' Heaven forgive me for that last sentence, but the
+words came to my lips.
+
+"'How would fifty guineas for a night's work suit you?' he asked.
+
+"'Most admirably.'
+
+"'I say a night's work, but an hour's would be nearer the mark. I
+simply want your opinion about a hydraulic stamping machine which
+has got out of gear. If you show us what is wrong we shall soon
+set it right ourselves. What do you think of such a commission as
+that?'
+
+"'The work appears to be light and the pay munificent.'
+
+"'Precisely so. We shall want you to come to-night by the last
+train.'
+
+"'Where to?'
+
+"'To Eyford, in Berkshire. It is a little place near the borders
+of Oxfordshire, and within seven miles of Reading. There is a
+train from Paddington which would bring you there at about
+11:15.'
+
+"'Very good.'
+
+"'I shall come down in a carriage to meet you.'
+
+"'There is a drive, then?'
+
+"'Yes, our little place is quite out in the country. It is a good
+seven miles from Eyford Station.'
+
+"'Then we can hardly get there before midnight. I suppose there
+would be no chance of a train back. I should be compelled to stop
+the night.'
+
+"'Yes, we could easily give you a shake-down.'
+
+"'That is very awkward. Could I not come at some more convenient
+hour?'
+
+"'We have judged it best that you should come late. It is to
+recompense you for any inconvenience that we are paying to you, a
+young and unknown man, a fee which would buy an opinion from the
+very heads of your profession. Still, of course, if you would
+like to draw out of the business, there is plenty of time to do
+so.'
+
+"I thought of the fifty guineas, and of how very useful they
+would be to me. 'Not at all,' said I, 'I shall be very happy to
+accommodate myself to your wishes. I should like, however, to
+understand a little more clearly what it is that you wish me to
+do.'
+
+"'Quite so. It is very natural that the pledge of secrecy which
+we have exacted from you should have aroused your curiosity. I
+have no wish to commit you to anything without your having it all
+laid before you. I suppose that we are absolutely safe from
+eavesdroppers?'
+
+"'Entirely.'
+
+"'Then the matter stands thus. You are probably aware that
+fuller's-earth is a valuable product, and that it is only found
+in one or two places in England?'
+
+"'I have heard so.'
+
+"'Some little time ago I bought a small place--a very small
+place--within ten miles of Reading. I was fortunate enough to
+discover that there was a deposit of fuller's-earth in one of my
+fields. On examining it, however, I found that this deposit was a
+comparatively small one, and that it formed a link between two
+very much larger ones upon the right and left--both of them,
+however, in the grounds of my neighbours. These good people were
+absolutely ignorant that their land contained that which was
+quite as valuable as a gold-mine. Naturally, it was to my
+interest to buy their land before they discovered its true value,
+but unfortunately I had no capital by which I could do this. I
+took a few of my friends into the secret, however, and they
+suggested that we should quietly and secretly work our own little
+deposit and that in this way we should earn the money which would
+enable us to buy the neighbouring fields. This we have now been
+doing for some time, and in order to help us in our operations we
+erected a hydraulic press. This press, as I have already
+explained, has got out of order, and we wish your advice upon the
+subject. We guard our secret very jealously, however, and if it
+once became known that we had hydraulic engineers coming to our
+little house, it would soon rouse inquiry, and then, if the facts
+came out, it would be good-bye to any chance of getting these
+fields and carrying out our plans. That is why I have made you
+promise me that you will not tell a human being that you are
+going to Eyford to-night. I hope that I make it all plain?'
+
+"'I quite follow you,' said I. 'The only point which I could not
+quite understand was what use you could make of a hydraulic press
+in excavating fuller's-earth, which, as I understand, is dug out
+like gravel from a pit.'
+
+"'Ah!' said he carelessly, 'we have our own process. We compress
+the earth into bricks, so as to remove them without revealing
+what they are. But that is a mere detail. I have taken you fully
+into my confidence now, Mr. Hatherley, and I have shown you how I
+trust you.' He rose as he spoke. 'I shall expect you, then, at
+Eyford at 11:15.'
+
+"'I shall certainly be there.'
+
+"'And not a word to a soul.' He looked at me with a last long,
+questioning gaze, and then, pressing my hand in a cold, dank
+grasp, he hurried from the room.
+
+"Well, when I came to think it all over in cool blood I was very
+much astonished, as you may both think, at this sudden commission
+which had been intrusted to me. On the one hand, of course, I was
+glad, for the fee was at least tenfold what I should have asked
+had I set a price upon my own services, and it was possible that
+this order might lead to other ones. On the other hand, the face
+and manner of my patron had made an unpleasant impression upon
+me, and I could not think that his explanation of the
+fuller's-earth was sufficient to explain the necessity for my
+coming at midnight, and his extreme anxiety lest I should tell
+anyone of my errand. However, I threw all fears to the winds, ate
+a hearty supper, drove to Paddington, and started off, having
+obeyed to the letter the injunction as to holding my tongue.
+
+"At Reading I had to change not only my carriage but my station.
+However, I was in time for the last train to Eyford, and I
+reached the little dim-lit station after eleven o'clock. I was the
+only passenger who got out there, and there was no one upon the
+platform save a single sleepy porter with a lantern. As I passed
+out through the wicket gate, however, I found my acquaintance of
+the morning waiting in the shadow upon the other side. Without a
+word he grasped my arm and hurried me into a carriage, the door
+of which was standing open. He drew up the windows on either
+side, tapped on the wood-work, and away we went as fast as the
+horse could go."
+
+"One horse?" interjected Holmes.
+
+"Yes, only one."
+
+"Did you observe the colour?"
+
+"Yes, I saw it by the side-lights when I was stepping into the
+carriage. It was a chestnut."
+
+"Tired-looking or fresh?"
+
+"Oh, fresh and glossy."
+
+"Thank you. I am sorry to have interrupted you. Pray continue
+your most interesting statement."
+
+"Away we went then, and we drove for at least an hour. Colonel
+Lysander Stark had said that it was only seven miles, but I
+should think, from the rate that we seemed to go, and from the
+time that we took, that it must have been nearer twelve. He sat
+at my side in silence all the time, and I was aware, more than
+once when I glanced in his direction, that he was looking at me
+with great intensity. The country roads seem to be not very good
+in that part of the world, for we lurched and jolted terribly. I
+tried to look out of the windows to see something of where we
+were, but they were made of frosted glass, and I could make out
+nothing save the occasional bright blur of a passing light. Now
+and then I hazarded some remark to break the monotony of the
+journey, but the colonel answered only in monosyllables, and the
+conversation soon flagged. At last, however, the bumping of the
+road was exchanged for the crisp smoothness of a gravel-drive,
+and the carriage came to a stand. Colonel Lysander Stark sprang
+out, and, as I followed after him, pulled me swiftly into a porch
+which gaped in front of us. We stepped, as it were, right out of
+the carriage and into the hall, so that I failed to catch the
+most fleeting glance of the front of the house. The instant that
+I had crossed the threshold the door slammed heavily behind us,
+and I heard faintly the rattle of the wheels as the carriage
+drove away.
+
+"It was pitch dark inside the house, and the colonel fumbled
+about looking for matches and muttering under his breath.
+Suddenly a door opened at the other end of the passage, and a
+long, golden bar of light shot out in our direction. It grew
+broader, and a woman appeared with a lamp in her hand, which she
+held above her head, pushing her face forward and peering at us.
+I could see that she was pretty, and from the gloss with which
+the light shone upon her dark dress I knew that it was a rich
+material. She spoke a few words in a foreign tongue in a tone as
+though asking a question, and when my companion answered in a
+gruff monosyllable she gave such a start that the lamp nearly
+fell from her hand. Colonel Stark went up to her, whispered
+something in her ear, and then, pushing her back into the room
+from whence she had come, he walked towards me again with the
+lamp in his hand.
+
+"'Perhaps you will have the kindness to wait in this room for a
+few minutes,' said he, throwing open another door. It was a
+quiet, little, plainly furnished room, with a round table in the
+centre, on which several German books were scattered. Colonel
+Stark laid down the lamp on the top of a harmonium beside the
+door. 'I shall not keep you waiting an instant,' said he, and
+vanished into the darkness.
+
+"I glanced at the books upon the table, and in spite of my
+ignorance of German I could see that two of them were treatises
+on science, the others being volumes of poetry. Then I walked
+across to the window, hoping that I might catch some glimpse of
+the country-side, but an oak shutter, heavily barred, was folded
+across it. It was a wonderfully silent house. There was an old
+clock ticking loudly somewhere in the passage, but otherwise
+everything was deadly still. A vague feeling of uneasiness began
+to steal over me. Who were these German people, and what were
+they doing living in this strange, out-of-the-way place? And
+where was the place? I was ten miles or so from Eyford, that was
+all I knew, but whether north, south, east, or west I had no
+idea. For that matter, Reading, and possibly other large towns,
+were within that radius, so the place might not be so secluded,
+after all. Yet it was quite certain, from the absolute stillness,
+that we were in the country. I paced up and down the room,
+humming a tune under my breath to keep up my spirits and feeling
+that I was thoroughly earning my fifty-guinea fee.
+
+"Suddenly, without any preliminary sound in the midst of the
+utter stillness, the door of my room swung slowly open. The woman
+was standing in the aperture, the darkness of the hall behind
+her, the yellow light from my lamp beating upon her eager and
+beautiful face. I could see at a glance that she was sick with
+fear, and the sight sent a chill to my own heart. She held up one
+shaking finger to warn me to be silent, and she shot a few
+whispered words of broken English at me, her eyes glancing back,
+like those of a frightened horse, into the gloom behind her.
+
+"'I would go,' said she, trying hard, as it seemed to me, to
+speak calmly; 'I would go. I should not stay here. There is no
+good for you to do.'
+
+"'But, madam,' said I, 'I have not yet done what I came for. I
+cannot possibly leave until I have seen the machine.'
+
+"'It is not worth your while to wait,' she went on. 'You can pass
+through the door; no one hinders.' And then, seeing that I smiled
+and shook my head, she suddenly threw aside her constraint and
+made a step forward, with her hands wrung together. 'For the love
+of Heaven!' she whispered, 'get away from here before it is too
+late!'
+
+"But I am somewhat headstrong by nature, and the more ready to
+engage in an affair when there is some obstacle in the way. I
+thought of my fifty-guinea fee, of my wearisome journey, and of
+the unpleasant night which seemed to be before me. Was it all to
+go for nothing? Why should I slink away without having carried
+out my commission, and without the payment which was my due? This
+woman might, for all I knew, be a monomaniac. With a stout
+bearing, therefore, though her manner had shaken me more than I
+cared to confess, I still shook my head and declared my intention
+of remaining where I was. She was about to renew her entreaties
+when a door slammed overhead, and the sound of several footsteps
+was heard upon the stairs. She listened for an instant, threw up
+her hands with a despairing gesture, and vanished as suddenly and
+as noiselessly as she had come.
+
+"The newcomers were Colonel Lysander Stark and a short thick man
+with a chinchilla beard growing out of the creases of his double
+chin, who was introduced to me as Mr. Ferguson.
+
+"'This is my secretary and manager,' said the colonel. 'By the
+way, I was under the impression that I left this door shut just
+now. I fear that you have felt the draught.'
+
+"'On the contrary,' said I, 'I opened the door myself because I
+felt the room to be a little close.'
+
+"He shot one of his suspicious looks at me. 'Perhaps we had
+better proceed to business, then,' said he. 'Mr. Ferguson and I
+will take you up to see the machine.'
+
+"'I had better put my hat on, I suppose.'
+
+"'Oh, no, it is in the house.'
+
+"'What, you dig fuller's-earth in the house?'
+
+"'No, no. This is only where we compress it. But never mind that.
+All we wish you to do is to examine the machine and to let us
+know what is wrong with it.'
+
+"We went upstairs together, the colonel first with the lamp, the
+fat manager and I behind him. It was a labyrinth of an old house,
+with corridors, passages, narrow winding staircases, and little
+low doors, the thresholds of which were hollowed out by the
+generations who had crossed them. There were no carpets and no
+signs of any furniture above the ground floor, while the plaster
+was peeling off the walls, and the damp was breaking through in
+green, unhealthy blotches. I tried to put on as unconcerned an
+air as possible, but I had not forgotten the warnings of the
+lady, even though I disregarded them, and I kept a keen eye upon
+my two companions. Ferguson appeared to be a morose and silent
+man, but I could see from the little that he said that he was at
+least a fellow-countryman.
+
+"Colonel Lysander Stark stopped at last before a low door, which
+he unlocked. Within was a small, square room, in which the three
+of us could hardly get at one time. Ferguson remained outside,
+and the colonel ushered me in.
+
+"'We are now,' said he, 'actually within the hydraulic press, and
+it would be a particularly unpleasant thing for us if anyone were
+to turn it on. The ceiling of this small chamber is really the
+end of the descending piston, and it comes down with the force of
+many tons upon this metal floor. There are small lateral columns
+of water outside which receive the force, and which transmit and
+multiply it in the manner which is familiar to you. The machine
+goes readily enough, but there is some stiffness in the working
+of it, and it has lost a little of its force. Perhaps you will
+have the goodness to look it over and to show us how we can set
+it right.'
+
+"I took the lamp from him, and I examined the machine very
+thoroughly. It was indeed a gigantic one, and capable of
+exercising enormous pressure. When I passed outside, however, and
+pressed down the levers which controlled it, I knew at once by
+the whishing sound that there was a slight leakage, which allowed
+a regurgitation of water through one of the side cylinders. An
+examination showed that one of the india-rubber bands which was
+round the head of a driving-rod had shrunk so as not quite to
+fill the socket along which it worked. This was clearly the cause
+of the loss of power, and I pointed it out to my companions, who
+followed my remarks very carefully and asked several practical
+questions as to how they should proceed to set it right. When I
+had made it clear to them, I returned to the main chamber of the
+machine and took a good look at it to satisfy my own curiosity.
+It was obvious at a glance that the story of the fuller's-earth
+was the merest fabrication, for it would be absurd to suppose
+that so powerful an engine could be designed for so inadequate a
+purpose. The walls were of wood, but the floor consisted of a
+large iron trough, and when I came to examine it I could see a
+crust of metallic deposit all over it. I had stooped and was
+scraping at this to see exactly what it was when I heard a
+muttered exclamation in German and saw the cadaverous face of the
+colonel looking down at me.
+
+"'What are you doing there?' he asked.
+
+"I felt angry at having been tricked by so elaborate a story as
+that which he had told me. 'I was admiring your fuller's-earth,'
+said I; 'I think that I should be better able to advise you as to
+your machine if I knew what the exact purpose was for which it
+was used.'
+
+"The instant that I uttered the words I regretted the rashness of
+my speech. His face set hard, and a baleful light sprang up in
+his grey eyes.
+
+"'Very well,' said he, 'you shall know all about the machine.' He
+took a step backward, slammed the little door, and turned the key
+in the lock. I rushed towards it and pulled at the handle, but it
+was quite secure, and did not give in the least to my kicks and
+shoves. 'Hullo!' I yelled. 'Hullo! Colonel! Let me out!'
+
+"And then suddenly in the silence I heard a sound which sent my
+heart into my mouth. It was the clank of the levers and the swish
+of the leaking cylinder. He had set the engine at work. The lamp
+still stood upon the floor where I had placed it when examining
+the trough. By its light I saw that the black ceiling was coming
+down upon me, slowly, jerkily, but, as none knew better than
+myself, with a force which must within a minute grind me to a
+shapeless pulp. I threw myself, screaming, against the door, and
+dragged with my nails at the lock. I implored the colonel to let
+me out, but the remorseless clanking of the levers drowned my
+cries. The ceiling was only a foot or two above my head, and with
+my hand upraised I could feel its hard, rough surface. Then it
+flashed through my mind that the pain of my death would depend
+very much upon the position in which I met it. If I lay on my
+face the weight would come upon my spine, and I shuddered to
+think of that dreadful snap. Easier the other way, perhaps; and
+yet, had I the nerve to lie and look up at that deadly black
+shadow wavering down upon me? Already I was unable to stand
+erect, when my eye caught something which brought a gush of hope
+back to my heart.
+
+"I have said that though the floor and ceiling were of iron, the
+walls were of wood. As I gave a last hurried glance around, I saw
+a thin line of yellow light between two of the boards, which
+broadened and broadened as a small panel was pushed backward. For
+an instant I could hardly believe that here was indeed a door
+which led away from death. The next instant I threw myself
+through, and lay half-fainting upon the other side. The panel had
+closed again behind me, but the crash of the lamp, and a few
+moments afterwards the clang of the two slabs of metal, told me
+how narrow had been my escape.
+
+"I was recalled to myself by a frantic plucking at my wrist, and
+I found myself lying upon the stone floor of a narrow corridor,
+while a woman bent over me and tugged at me with her left hand,
+while she held a candle in her right. It was the same good friend
+whose warning I had so foolishly rejected.
+
+"'Come! come!' she cried breathlessly. 'They will be here in a
+moment. They will see that you are not there. Oh, do not waste
+the so-precious time, but come!'
+
+"This time, at least, I did not scorn her advice. I staggered to
+my feet and ran with her along the corridor and down a winding
+stair. The latter led to another broad passage, and just as we
+reached it we heard the sound of running feet and the shouting of
+two voices, one answering the other from the floor on which  we
+were and from the one beneath. My guide stopped and looked about
+her like one  who is at her wit's end. Then she threw open a door
+which led into a bedroom, through the window of which the moon
+was shining brightly.
+
+"'It is your only chance,' said she. 'It is high, but it may be
+that you can jump it.'
+
+"As she spoke a light sprang into view at the further end of the
+passage, and I saw the lean figure of Colonel Lysander Stark
+rushing forward with a lantern in one hand and a weapon like a
+butcher's cleaver in the other. I rushed across the bedroom,
+flung open the window, and looked out. How quiet and sweet and
+wholesome the garden looked in the moonlight, and it could not be
+more than thirty feet down. I clambered out upon the sill, but I
+hesitated to jump until I should have heard what passed between
+my saviour and the ruffian who pursued me. If she were ill-used,
+then at any risks I was determined to go back to her assistance.
+The thought had hardly flashed through my mind before he was at
+the door, pushing his way past her; but she threw her arms round
+him and tried to hold him back.
+
+"'Fritz! Fritz!' she cried in English, 'remember your promise
+after the last time. You said it should not be again. He will be
+silent! Oh, he will be silent!'
+
+"'You are mad, Elise!' he shouted, struggling to break away from
+her. 'You will be the ruin of us. He has seen too much. Let me
+pass, I say!' He dashed her to one side, and, rushing to the
+window, cut at me with his heavy weapon. I had let myself go, and
+was hanging by the hands to the sill, when his blow fell. I was
+conscious of a dull pain, my grip loosened, and I fell into the
+garden below.
+
+"I was shaken but not hurt by the fall; so I picked myself up and
+rushed off among the bushes as hard as I could run, for I
+understood that I was far from being out of danger yet. Suddenly,
+however, as I ran, a deadly dizziness and sickness came over me.
+I glanced down at my hand, which was throbbing painfully, and
+then, for the first time, saw that my thumb had been cut off and
+that the blood was pouring from my wound. I endeavoured to tie my
+handkerchief round it, but there came a sudden buzzing in my
+ears, and next moment I fell in a dead faint among the
+rose-bushes.
+
+"How long I remained unconscious I cannot tell. It must have been
+a very long time, for the moon had sunk, and a bright morning was
+breaking when I came to myself. My clothes were all sodden with
+dew, and my coat-sleeve was drenched with blood from my wounded
+thumb. The smarting of it recalled in an instant all the
+particulars of my night's adventure, and I sprang to my feet with
+the feeling that I might hardly yet be safe from my pursuers. But
+to my astonishment, when I came to look round me, neither house
+nor garden were to be seen. I had been lying in an angle of the
+hedge close by the highroad, and just a little lower down was a
+long building, which proved, upon my approaching it, to be the
+very station at which I had arrived upon the previous night. Were
+it not for the ugly wound upon my hand, all that had passed
+during those dreadful hours might have been an evil dream.
+
+"Half dazed, I went into the station and asked about the morning
+train. There would be one to Reading in less than an hour. The
+same porter was on duty, I found, as had been there when I
+arrived. I inquired of him whether he had ever heard of Colonel
+Lysander Stark. The name was strange to him. Had he observed a
+carriage the night before waiting for me? No, he had not. Was
+there a police-station anywhere near? There was one about three
+miles off.
+
+"It was too far for me to go, weak and ill as I was. I determined
+to wait until I got back to town before telling my story to the
+police. It was a little past six when I arrived, so I went first
+to have my wound dressed, and then the doctor was kind enough to
+bring me along here. I put the case into your hands and shall do
+exactly what you advise."
+
+We both sat in silence for some little time after listening to
+this extraordinary narrative. Then Sherlock Holmes pulled down
+from the shelf one of the ponderous commonplace books in which he
+placed his cuttings.
+
+"Here is an advertisement which will interest you," said he. "It
+appeared in all the papers about a year ago. Listen to this:
+'Lost, on the 9th inst., Mr. Jeremiah Hayling, aged
+twenty-six, a hydraulic engineer. Left his lodgings at ten
+o'clock at night, and has not been heard of since. Was
+dressed in,' etc., etc. Ha! That represents the last time that
+the colonel needed to have his machine overhauled, I fancy."
+
+"Good heavens!" cried my patient. "Then that explains what the
+girl said."
+
+"Undoubtedly. It is quite clear that the colonel was a cool and
+desperate man, who was absolutely determined that nothing should
+stand in the way of his little game, like those out-and-out
+pirates who will leave no survivor from a captured ship. Well,
+every moment now is precious, so if you feel equal to it we shall
+go down to Scotland Yard at once as a preliminary to starting for
+Eyford."
+
+Some three hours or so afterwards we were all in the train
+together, bound from Reading to the little Berkshire village.
+There were Sherlock Holmes, the hydraulic engineer, Inspector
+Bradstreet, of Scotland Yard, a plain-clothes man, and myself.
+Bradstreet had spread an ordnance map of the county out upon the
+seat and was busy with his compasses drawing a circle with Eyford
+for its centre.
+
+"There you are," said he. "That circle is drawn at a radius of
+ten miles from the village. The place we want must be somewhere
+near that line. You said ten miles, I think, sir."
+
+"It was an hour's good drive."
+
+"And you think that they brought you back all that way when you
+were unconscious?"
+
+"They must have done so. I have a confused memory, too, of having
+been lifted and conveyed somewhere."
+
+"What I cannot understand," said I, "is why they should have
+spared you when they found you lying fainting in the garden.
+Perhaps the villain was softened by the woman's entreaties."
+
+"I hardly think that likely. I never saw a more inexorable face
+in my life."
+
+"Oh, we shall soon clear up all that," said Bradstreet. "Well, I
+have drawn my circle, and I only wish I knew at what point upon
+it the folk that we are in search of are to be found."
+
+"I think I could lay my finger on it," said Holmes quietly.
+
+"Really, now!" cried the inspector, "you have formed your
+opinion! Come, now, we shall see who agrees with you. I say it is
+south, for the country is more deserted there."
+
+"And I say east," said my patient.
+
+"I am for west," remarked the plain-clothes man. "There are
+several quiet little villages up there."
+
+"And I am for north," said I, "because there are no hills there,
+and our friend says that he did not notice the carriage go up
+any."
+
+"Come," cried the inspector, laughing; "it's a very pretty
+diversity of opinion. We have boxed the compass among us. Who do
+you give your casting vote to?"
+
+"You are all wrong."
+
+"But we can't all be."
+
+"Oh, yes, you can. This is my point." He placed his finger in the
+centre of the circle. "This is where we shall find them."
+
+"But the twelve-mile drive?" gasped Hatherley.
+
+"Six out and six back. Nothing simpler. You say yourself that the
+horse was fresh and glossy when you got in. How could it be that
+if it had gone twelve miles over heavy roads?"
+
+"Indeed, it is a likely ruse enough," observed Bradstreet
+thoughtfully. "Of course there can be no doubt as to the nature
+of this gang."
+
+"None at all," said Holmes. "They are coiners on a large scale,
+and have used the machine to form the amalgam which has taken the
+place of silver."
+
+"We have known for some time that a clever gang was at work,"
+said the inspector. "They have been turning out half-crowns by
+the thousand. We even traced them as far as Reading, but could
+get no farther, for they had covered their traces in a way that
+showed that they were very old hands. But now, thanks to this
+lucky chance, I think that we have got them right enough."
+
+But the inspector was mistaken, for those criminals were not
+destined to fall into the hands of justice. As we rolled into
+Eyford Station we saw a gigantic column of smoke which streamed
+up from behind a small clump of trees in the neighbourhood and
+hung like an immense ostrich feather over the landscape.
+
+"A house on fire?" asked Bradstreet as the train steamed off
+again on its way.
+
+"Yes, sir!" said the station-master.
+
+"When did it break out?"
+
+"I hear that it was during the night, sir, but it has got worse,
+and the whole place is in a blaze."
+
+"Whose house is it?"
+
+"Dr. Becher's."
+
+"Tell me," broke in the engineer, "is Dr. Becher a German, very
+thin, with a long, sharp nose?"
+
+The station-master laughed heartily. "No, sir, Dr. Becher is an
+Englishman, and there isn't a man in the parish who has a
+better-lined waistcoat. But he has a gentleman staying with him,
+a patient, as I understand, who is a foreigner, and he looks as
+if a little good Berkshire beef would do him no harm."
+
+The station-master had not finished his speech before we were all
+hastening in the direction of the fire. The road topped a low
+hill, and there was a great widespread whitewashed building in
+front of us, spouting fire at every chink and window, while in
+the garden in front three fire-engines were vainly striving to
+keep the flames under.
+
+"That's it!" cried Hatherley, in intense excitement. "There is
+the gravel-drive, and there are the rose-bushes where I lay. That
+second window is the one that I jumped from."
+
+"Well, at least," said Holmes, "you have had your revenge upon
+them. There can be no question that it was your oil-lamp which,
+when it was crushed in the press, set fire to the wooden walls,
+though no doubt they were too excited in the chase after you to
+observe it at the time. Now keep your eyes open in this crowd for
+your friends of last night, though I very much fear that they are
+a good hundred miles off by now."
+
+And Holmes' fears came to be realised, for from that day to this
+no word has ever been heard either of the beautiful woman, the
+sinister German, or the morose Englishman. Early that morning a
+peasant had met a cart containing several people and some very
+bulky boxes driving rapidly in the direction of Reading, but
+there all traces of the fugitives disappeared, and even Holmes'
+ingenuity failed ever to discover the least clue as to their
+whereabouts.
+
+The firemen had been much perturbed at the strange arrangements
+which they had found within, and still more so by discovering a
+newly severed human thumb upon a window-sill of the second floor.
+About sunset, however, their efforts were at last successful, and
+they subdued the flames, but not before the roof had fallen in,
+and the whole place been reduced to such absolute ruin that, save
+some twisted cylinders and iron piping, not a trace remained of
+the machinery which had cost our unfortunate acquaintance so
+dearly. Large masses of nickel and of tin were discovered stored
+in an out-house, but no coins were to be found, which may have
+explained the presence of those bulky boxes which have been
+already referred to.
+
+How our hydraulic engineer had been conveyed from the garden to
+the spot where he recovered his senses might have remained
+forever a mystery were it not for the soft mould, which told us a
+very plain tale. He had evidently been carried down by two
+persons, one of whom had remarkably small feet and the other
+unusually large ones. On the whole, it was most probable that the
+silent Englishman, being less bold or less murderous than his
+companion, had assisted the woman to bear the unconscious man out
+of the way of danger.
+
+"Well," said our engineer ruefully as we took our seats to return
+once more to London, "it has been a pretty business for me! I
+have lost my thumb and I have lost a fifty-guinea fee, and what
+have I gained?"
+
+"Experience," said Holmes, laughing. "Indirectly it may be of
+value, you know; you have only to put it into words to gain the
+reputation of being excellent company for the remainder of your
+existence."
+
+
+
+X. THE ADVENTURE OF THE NOBLE BACHELOR
+
+The Lord St. Simon marriage, and its curious termination, have
+long ceased to be a subject of interest in those exalted circles
+in which the unfortunate bridegroom moves. Fresh scandals have
+eclipsed it, and their more piquant details have drawn the
+gossips away from this four-year-old drama. As I have reason to
+believe, however, that the full facts have never been revealed to
+the general public, and as my friend Sherlock Holmes had a
+considerable share in clearing the matter up, I feel that no
+memoir of him would be complete without some little sketch of
+this remarkable episode.
+
+It was a few weeks before my own marriage, during the days when I
+was still sharing rooms with Holmes in Baker Street, that he came
+home from an afternoon stroll to find a letter on the table
+waiting for him. I had remained indoors all day, for the weather
+had taken a sudden turn to rain, with high autumnal winds, and
+the Jezail bullet which I had brought back in one of my limbs as
+a relic of my Afghan campaign throbbed with dull persistence.
+With my body in one easy-chair and my legs upon another, I had
+surrounded myself with a cloud of newspapers until at last,
+saturated with the news of the day, I tossed them all aside and
+lay listless, watching the huge crest and monogram upon the
+envelope upon the table and wondering lazily who my friend's
+noble correspondent could be.
+
+"Here is a very fashionable epistle," I remarked as he entered.
+"Your morning letters, if I remember right, were from a
+fish-monger and a tide-waiter."
+
+"Yes, my correspondence has certainly the charm of variety," he
+answered, smiling, "and the humbler are usually the more
+interesting. This looks like one of those unwelcome social
+summonses which call upon a man either to be bored or to lie."
+
+He broke the seal and glanced over the contents.
+
+"Oh, come, it may prove to be something of interest, after all."
+
+"Not social, then?"
+
+"No, distinctly professional."
+
+"And from a noble client?"
+
+"One of the highest in England."
+
+"My dear fellow, I congratulate you."
+
+"I assure you, Watson, without affectation, that the status of my
+client is a matter of less moment to me than the interest of his
+case. It is just possible, however, that that also may not be
+wanting in this new investigation. You have been reading the
+papers diligently of late, have you not?"
+
+"It looks like it," said I ruefully, pointing to a huge bundle in
+the corner. "I have had nothing else to do."
+
+"It is fortunate, for you will perhaps be able to post me up. I
+read nothing except the criminal news and the agony column. The
+latter is always instructive. But if you have followed recent
+events so closely you must have read about Lord St. Simon and his
+wedding?"
+
+"Oh, yes, with the deepest interest."
+
+"That is well. The letter which I hold in my hand is from Lord
+St. Simon. I will read it to you, and in return you must turn
+over these papers and let me have whatever bears upon the matter.
+This is what he says:
+
+"'MY DEAR MR. SHERLOCK HOLMES:--Lord Backwater tells me that I
+may place implicit reliance upon your judgment and discretion. I
+have determined, therefore, to call upon you and to consult you
+in reference to the very painful event which has occurred in
+connection with my wedding. Mr. Lestrade, of Scotland Yard, is
+acting already in the matter, but he assures me that he sees no
+objection to your co-operation, and that he even thinks that
+it might be of some assistance. I will call at four o'clock in
+the afternoon, and, should you have any other engagement at that
+time, I hope that you will postpone it, as this matter is of
+paramount importance. Yours faithfully, ST. SIMON.'
+
+"It is dated from Grosvenor Mansions, written with a quill pen,
+and the noble lord has had the misfortune to get a smear of ink
+upon the outer side of his right little finger," remarked Holmes
+as he folded up the epistle.
+
+"He says four o'clock. It is three now. He will be here in an
+hour."
+
+"Then I have just time, with your assistance, to get clear upon
+the subject. Turn over those papers and arrange the extracts in
+their order of time, while I take a glance as to who our client
+is." He picked a red-covered volume from a line of books of
+reference beside the mantelpiece. "Here he is," said he, sitting
+down and flattening it out upon his knee. "'Lord Robert Walsingham
+de Vere St. Simon, second son of the Duke of Balmoral.' Hum! 'Arms:
+Azure, three caltrops in chief over a fess sable. Born in 1846.'
+He's forty-one years of age, which is mature for marriage. Was
+Under-Secretary for the colonies in a late administration. The
+Duke, his father, was at one time Secretary for Foreign Affairs.
+They inherit Plantagenet blood by direct descent, and Tudor on
+the distaff side. Ha! Well, there is nothing very instructive in
+all this. I think that I must turn to you Watson, for something
+more solid."
+
+"I have very little difficulty in finding what I want," said I,
+"for the facts are quite recent, and the matter struck me as
+remarkable. I feared to refer them to you, however, as I knew
+that you had an inquiry on hand and that you disliked the
+intrusion of other matters."
+
+"Oh, you mean the little problem of the Grosvenor Square
+furniture van. That is quite cleared up now--though, indeed, it
+was obvious from the first. Pray give me the results of your
+newspaper selections."
+
+"Here is the first notice which I can find. It is in the personal
+column of the Morning Post, and dates, as you see, some weeks
+back: 'A marriage has been arranged,' it says, 'and will, if
+rumour is correct, very shortly take place, between Lord Robert
+St. Simon, second son of the Duke of Balmoral, and Miss Hatty
+Doran, the only daughter of Aloysius Doran. Esq., of San
+Francisco, Cal., U.S.A.' That is all."
+
+"Terse and to the point," remarked Holmes, stretching his long,
+thin legs towards the fire.
+
+"There was a paragraph amplifying this in one of the society
+papers of the same week. Ah, here it is: 'There will soon be a
+call for protection in the marriage market, for the present
+free-trade principle appears to tell heavily against our home
+product. One by one the management of the noble houses of Great
+Britain is passing into the hands of our fair cousins from across
+the Atlantic. An important addition has been made during the last
+week to the list of the prizes which have been borne away by
+these charming invaders. Lord St. Simon, who has shown himself
+for over twenty years proof against the little god's arrows, has
+now definitely announced his approaching marriage with Miss Hatty
+Doran, the fascinating daughter of a California millionaire. Miss
+Doran, whose graceful figure and striking face attracted much
+attention at the Westbury House festivities, is an only child,
+and it is currently reported that her dowry will run to
+considerably over the six figures, with expectancies for the
+future. As it is an open secret that the Duke of Balmoral has
+been compelled to sell his pictures within the last few years,
+and as Lord St. Simon has no property of his own save the small
+estate of Birchmoor, it is obvious that the Californian heiress
+is not the only gainer by an alliance which will enable her to
+make the easy and common transition from a Republican lady to a
+British peeress.'"
+
+"Anything else?" asked Holmes, yawning.
+
+"Oh, yes; plenty. Then there is another note in the Morning Post
+to say that the marriage would be an absolutely quiet one, that it
+would be at St. George's, Hanover Square, that only half a dozen
+intimate friends would be invited, and that the party would
+return to the furnished house at Lancaster Gate which has been
+taken by Mr. Aloysius Doran. Two days later--that is, on
+Wednesday last--there is a curt announcement that the wedding had
+taken place, and that the honeymoon would be passed at Lord
+Backwater's place, near Petersfield. Those are all the notices
+which appeared before the disappearance of the bride."
+
+"Before the what?" asked Holmes with a start.
+
+"The vanishing of the lady."
+
+"When did she vanish, then?"
+
+"At the wedding breakfast."
+
+"Indeed. This is more interesting than it promised to be; quite
+dramatic, in fact."
+
+"Yes; it struck me as being a little out of the common."
+
+"They often vanish before the ceremony, and occasionally during
+the honeymoon; but I cannot call to mind anything quite so prompt
+as this. Pray let me have the details."
+
+"I warn you that they are very incomplete."
+
+"Perhaps we may make them less so."
+
+"Such as they are, they are set forth in a single article of a
+morning paper of yesterday, which I will read to you. It is
+headed, 'Singular Occurrence at a Fashionable Wedding':
+
+"'The family of Lord Robert St. Simon has been thrown into the
+greatest consternation by the strange and painful episodes which
+have taken place in connection with his wedding. The ceremony, as
+shortly announced in the papers of yesterday, occurred on the
+previous morning; but it is only now that it has been possible to
+confirm the strange rumours which have been so persistently
+floating about. In spite of the attempts of the friends to hush
+the matter up, so much public attention has now been drawn to it
+that no good purpose can be served by affecting to disregard what
+is a common subject for conversation.
+
+"'The ceremony, which was performed at St. George's, Hanover
+Square, was a very quiet one, no one being present save the
+father of the bride, Mr. Aloysius Doran, the Duchess of Balmoral,
+Lord Backwater, Lord Eustace and Lady Clara St. Simon (the
+younger brother and sister of the bridegroom), and Lady Alicia
+Whittington. The whole party proceeded afterwards to the house of
+Mr. Aloysius Doran, at Lancaster Gate, where breakfast had been
+prepared. It appears that some little trouble was caused by a
+woman, whose name has not been ascertained, who endeavoured to
+force her way into the house after the bridal party, alleging
+that she had some claim upon Lord St. Simon. It was only after a
+painful and prolonged scene that she was ejected by the butler
+and the footman. The bride, who had fortunately entered the house
+before this unpleasant interruption, had sat down to breakfast
+with the rest, when she complained of a sudden indisposition and
+retired to her room. Her prolonged absence having caused some
+comment, her father followed her, but learned from her maid that
+she had only come up to her chamber for an instant, caught up an
+ulster and bonnet, and hurried down to the passage. One of the
+footmen declared that he had seen a lady leave the house thus
+apparelled, but had refused to credit that it was his mistress,
+believing her to be with the company. On ascertaining that his
+daughter had disappeared, Mr. Aloysius Doran, in conjunction with
+the bridegroom, instantly put themselves in communication with
+the police, and very energetic inquiries are being made, which
+will probably result in a speedy clearing up of this very
+singular business. Up to a late hour last night, however, nothing
+had transpired as to the whereabouts of the missing lady. There
+are rumours of foul play in the matter, and it is said that the
+police have caused the arrest of the woman who had caused the
+original disturbance, in the belief that, from jealousy or some
+other motive, she may have been concerned in the strange
+disappearance of the bride.'"
+
+"And is that all?"
+
+"Only one little item in another of the morning papers, but it is
+a suggestive one."
+
+"And it is--"
+
+"That Miss Flora Millar, the lady who had caused the disturbance,
+has actually been arrested. It appears that she was formerly a
+danseuse at the Allegro, and that she has known the bridegroom
+for some years. There are no further particulars, and the whole
+case is in your hands now--so far as it has been set forth in the
+public press."
+
+"And an exceedingly interesting case it appears to be. I would
+not have missed it for worlds. But there is a ring at the bell,
+Watson, and as the clock makes it a few minutes after four, I
+have no doubt that this will prove to be our noble client. Do not
+dream of going, Watson, for I very much prefer having a witness,
+if only as a check to my own memory."
+
+"Lord Robert St. Simon," announced our page-boy, throwing open
+the door. A gentleman entered, with a pleasant, cultured face,
+high-nosed and pale, with something perhaps of petulance about
+the mouth, and with the steady, well-opened eye of a man whose
+pleasant lot it had ever been to command and to be obeyed. His
+manner was brisk, and yet his general appearance gave an undue
+impression of age, for he had a slight forward stoop and a little
+bend of the knees as he walked. His hair, too, as he swept off
+his very curly-brimmed hat, was grizzled round the edges and thin
+upon the top. As to his dress, it was careful to the verge of
+foppishness, with high collar, black frock-coat, white waistcoat,
+yellow gloves, patent-leather shoes, and light-coloured gaiters.
+He advanced slowly into the room, turning his head from left to
+right, and swinging in his right hand the cord which held his
+golden eyeglasses.
+
+"Good-day, Lord St. Simon," said Holmes, rising and bowing. "Pray
+take the basket-chair. This is my friend and colleague, Dr.
+Watson. Draw up a little to the fire, and we will talk this
+matter over."
+
+"A most painful matter to me, as you can most readily imagine,
+Mr. Holmes. I have been cut to the quick. I understand that you
+have already managed several delicate cases of this sort, sir,
+though I presume that they were hardly from the same class of
+society."
+
+"No, I am descending."
+
+"I beg pardon."
+
+"My last client of the sort was a king."
+
+"Oh, really! I had no idea. And which king?"
+
+"The King of Scandinavia."
+
+"What! Had he lost his wife?"
+
+"You can understand," said Holmes suavely, "that I extend to the
+affairs of my other clients the same secrecy which I promise to
+you in yours."
+
+"Of course! Very right! very right! I'm sure I beg pardon. As to
+my own case, I am ready to give you any information which may
+assist you in forming an opinion."
+
+"Thank you. I have already learned all that is in the public
+prints, nothing more. I presume that I may take it as correct--this
+article, for example, as to the disappearance of the bride."
+
+Lord St. Simon glanced over it. "Yes, it is correct, as far as it
+goes."
+
+"But it needs a great deal of supplementing before anyone could
+offer an opinion. I think that I may arrive at my facts most
+directly by questioning you."
+
+"Pray do so."
+
+"When did you first meet Miss Hatty Doran?"
+
+"In San Francisco, a year ago."
+
+"You were travelling in the States?"
+
+"Yes."
+
+"Did you become engaged then?"
+
+"No."
+
+"But you were on a friendly footing?"
+
+"I was amused by her society, and she could see that I was
+amused."
+
+"Her father is very rich?"
+
+"He is said to be the richest man on the Pacific slope."
+
+"And how did he make his money?"
+
+"In mining. He had nothing a few years ago. Then he struck gold,
+invested it, and came up by leaps and bounds."
+
+"Now, what is your own impression as to the young lady's--your
+wife's character?"
+
+The nobleman swung his glasses a little faster and stared down
+into the fire. "You see, Mr. Holmes," said he, "my wife was
+twenty before her father became a rich man. During that time she
+ran free in a mining camp and wandered through woods or
+mountains, so that her education has come from Nature rather than
+from the schoolmaster. She is what we call in England a tomboy,
+with a strong nature, wild and free, unfettered by any sort of
+traditions. She is impetuous--volcanic, I was about to say. She
+is swift in making up her mind and fearless in carrying out her
+resolutions. On the other hand, I would not have given her the
+name which I have the honour to bear"--he gave a little stately
+cough--"had not I thought her to be at bottom a noble woman. I
+believe that she is capable of heroic self-sacrifice and that
+anything dishonourable would be repugnant to her."
+
+"Have you her photograph?"
+
+"I brought this with me." He opened a locket and showed us the
+full face of a very lovely woman. It was not a photograph but an
+ivory miniature, and the artist had brought out the full effect
+of the lustrous black hair, the large dark eyes, and the
+exquisite mouth. Holmes gazed long and earnestly at it. Then he
+closed the locket and handed it back to Lord St. Simon.
+
+"The young lady came to London, then, and you renewed your
+acquaintance?"
+
+"Yes, her father brought her over for this last London season. I
+met her several times, became engaged to her, and have now
+married her."
+
+"She brought, I understand, a considerable dowry?"
+
+"A fair dowry. Not more than is usual in my family."
+
+"And this, of course, remains to you, since the marriage is a
+fait accompli?"
+
+"I really have made no inquiries on the subject."
+
+"Very naturally not. Did you see Miss Doran on the day before the
+wedding?"
+
+"Yes."
+
+"Was she in good spirits?"
+
+"Never better. She kept talking of what we should do in our
+future lives."
+
+"Indeed! That is very interesting. And on the morning of the
+wedding?"
+
+"She was as bright as possible--at least until after the
+ceremony."
+
+"And did you observe any change in her then?"
+
+"Well, to tell the truth, I saw then the first signs that I had
+ever seen that her temper was just a little sharp. The incident
+however, was too trivial to relate and can have no possible
+bearing upon the case."
+
+"Pray let us have it, for all that."
+
+"Oh, it is childish. She dropped her bouquet as we went towards
+the vestry. She was passing the front pew at the time, and it
+fell over into the pew. There was a moment's delay, but the
+gentleman in the pew handed it up to her again, and it did not
+appear to be the worse for the fall. Yet when I spoke to her of
+the matter, she answered me abruptly; and in the carriage, on our
+way home, she seemed absurdly agitated over this trifling cause."
+
+"Indeed! You say that there was a gentleman in the pew. Some of
+the general public were present, then?"
+
+"Oh, yes. It is impossible to exclude them when the church is
+open."
+
+"This gentleman was not one of your wife's friends?"
+
+"No, no; I call him a gentleman by courtesy, but he was quite a
+common-looking person. I hardly noticed his appearance. But
+really I think that we are wandering rather far from the point."
+
+"Lady St. Simon, then, returned from the wedding in a less
+cheerful frame of mind than she had gone to it. What did she do
+on re-entering her father's house?"
+
+"I saw her in conversation with her maid."
+
+"And who is her maid?"
+
+"Alice is her name. She is an American and came from California
+with her."
+
+"A confidential servant?"
+
+"A little too much so. It seemed to me that her mistress allowed
+her to take great liberties. Still, of course, in America they
+look upon these things in a different way."
+
+"How long did she speak to this Alice?"
+
+"Oh, a few minutes. I had something else to think of."
+
+"You did not overhear what they said?"
+
+"Lady St. Simon said something about 'jumping a claim.' She was
+accustomed to use slang of the kind. I have no idea what she
+meant."
+
+"American slang is very expressive sometimes. And what did your
+wife do when she finished speaking to her maid?"
+
+"She walked into the breakfast-room."
+
+"On your arm?"
+
+"No, alone. She was very independent in little matters like that.
+Then, after we had sat down for ten minutes or so, she rose
+hurriedly, muttered some words of apology, and left the room. She
+never came back."
+
+"But this maid, Alice, as I understand, deposes that she went to
+her room, covered her bride's dress with a long ulster, put on a
+bonnet, and went out."
+
+"Quite so. And she was afterwards seen walking into Hyde Park in
+company with Flora Millar, a woman who is now in custody, and who
+had already made a disturbance at Mr. Doran's house that
+morning."
+
+"Ah, yes. I should like a few particulars as to this young lady,
+and your relations to her."
+
+Lord St. Simon shrugged his shoulders and raised his eyebrows.
+"We have been on a friendly footing for some years--I may say on
+a very friendly footing. She used to be at the Allegro. I have
+not treated her ungenerously, and she had no just cause of
+complaint against me, but you know what women are, Mr. Holmes.
+Flora was a dear little thing, but exceedingly hot-headed and
+devotedly attached to me. She wrote me dreadful letters when she
+heard that I was about to be married, and, to tell the truth, the
+reason why I had the marriage celebrated so quietly was that I
+feared lest there might be a scandal in the church. She came to
+Mr. Doran's door just after we returned, and she endeavoured to
+push her way in, uttering very abusive expressions towards my
+wife, and even threatening her, but I had foreseen the
+possibility of something of the sort, and I had two police
+fellows there in private clothes, who soon pushed her out again.
+She was quiet when she saw that there was no good in making a
+row."
+
+"Did your wife hear all this?"
+
+"No, thank goodness, she did not."
+
+"And she was seen walking with this very woman afterwards?"
+
+"Yes. That is what Mr. Lestrade, of Scotland Yard, looks upon as
+so serious. It is thought that Flora decoyed my wife out and laid
+some terrible trap for her."
+
+"Well, it is a possible supposition."
+
+"You think so, too?"
+
+"I did not say a probable one. But you do not yourself look upon
+this as likely?"
+
+"I do not think Flora would hurt a fly."
+
+"Still, jealousy is a strange transformer of characters. Pray
+what is your own theory as to what took place?"
+
+"Well, really, I came to seek a theory, not to propound one. I
+have given you all the facts. Since you ask me, however, I may
+say that it has occurred to me as possible that the excitement of
+this affair, the consciousness that she had made so immense a
+social stride, had the effect of causing some little nervous
+disturbance in my wife."
+
+"In short, that she had become suddenly deranged?"
+
+"Well, really, when I consider that she has turned her back--I
+will not say upon me, but upon so much that many have aspired to
+without success--I can hardly explain it in any other fashion."
+
+"Well, certainly that is also a conceivable hypothesis," said
+Holmes, smiling. "And now, Lord St. Simon, I think that I have
+nearly all my data. May I ask whether you were seated at the
+breakfast-table so that you could see out of the window?"
+
+"We could see the other side of the road and the Park."
+
+"Quite so. Then I do not think that I need to detain you longer.
+I shall communicate with you."
+
+"Should you be fortunate enough to solve this problem," said our
+client, rising.
+
+"I have solved it."
+
+"Eh? What was that?"
+
+"I say that I have solved it."
+
+"Where, then, is my wife?"
+
+"That is a detail which I shall speedily supply."
+
+Lord St. Simon shook his head. "I am afraid that it will take
+wiser heads than yours or mine," he remarked, and bowing in a
+stately, old-fashioned manner he departed.
+
+"It is very good of Lord St. Simon to honour my head by putting
+it on a level with his own," said Sherlock Holmes, laughing. "I
+think that I shall have a whisky and soda and a cigar after all
+this cross-questioning. I had formed my conclusions as to the
+case before our client came into the room."
+
+"My dear Holmes!"
+
+"I have notes of several similar cases, though none, as I
+remarked before, which were quite as prompt. My whole examination
+served to turn my conjecture into a certainty. Circumstantial
+evidence is occasionally very convincing, as when you find a
+trout in the milk, to quote Thoreau's example."
+
+"But I have heard all that you have heard."
+
+"Without, however, the knowledge of pre-existing cases which
+serves me so well. There was a parallel instance in Aberdeen some
+years back, and something on very much the same lines at Munich
+the year after the Franco-Prussian War. It is one of these
+cases--but, hullo, here is Lestrade! Good-afternoon, Lestrade!
+You will find an extra tumbler upon the sideboard, and there are
+cigars in the box."
+
+The official detective was attired in a pea-jacket and cravat,
+which gave him a decidedly nautical appearance, and he carried a
+black canvas bag in his hand. With a short greeting he seated
+himself and lit the cigar which had been offered to him.
+
+"What's up, then?" asked Holmes with a twinkle in his eye. "You
+look dissatisfied."
+
+"And I feel dissatisfied. It is this infernal St. Simon marriage
+case. I can make neither head nor tail of the business."
+
+"Really! You surprise me."
+
+"Who ever heard of such a mixed affair? Every clue seems to slip
+through my fingers. I have been at work upon it all day."
+
+"And very wet it seems to have made you," said Holmes laying his
+hand upon the arm of the pea-jacket.
+
+"Yes, I have been dragging the Serpentine."
+
+"In heaven's name, what for?"
+
+"In search of the body of Lady St. Simon."
+
+Sherlock Holmes leaned back in his chair and laughed heartily.
+
+"Have you dragged the basin of Trafalgar Square fountain?" he
+asked.
+
+"Why? What do you mean?"
+
+"Because you have just as good a chance of finding this lady in
+the one as in the other."
+
+Lestrade shot an angry glance at my companion. "I suppose you
+know all about it," he snarled.
+
+"Well, I have only just heard the facts, but my mind is made up."
+
+"Oh, indeed! Then you think that the Serpentine plays no part in
+the matter?"
+
+"I think it very unlikely."
+
+"Then perhaps you will kindly explain how it is that we found
+this in it?" He opened his bag as he spoke, and tumbled onto the
+floor a wedding-dress of watered silk, a pair of white satin
+shoes and a bride's wreath and veil, all discoloured and soaked
+in water. "There," said he, putting a new wedding-ring upon the
+top of the pile. "There is a little nut for you to crack, Master
+Holmes."
+
+"Oh, indeed!" said my friend, blowing blue rings into the air.
+"You dragged them from the Serpentine?"
+
+"No. They were found floating near the margin by a park-keeper.
+They have been identified as her clothes, and it seemed to me
+that if the clothes were there the body would not be far off."
+
+"By the same brilliant reasoning, every man's body is to be found
+in the neighbourhood of his wardrobe. And pray what did you hope
+to arrive at through this?"
+
+"At some evidence implicating Flora Millar in the disappearance."
+
+"I am afraid that you will find it difficult."
+
+"Are you, indeed, now?" cried Lestrade with some bitterness. "I
+am afraid, Holmes, that you are not very practical with your
+deductions and your inferences. You have made two blunders in as
+many minutes. This dress does implicate Miss Flora Millar."
+
+"And how?"
+
+"In the dress is a pocket. In the pocket is a card-case. In the
+card-case is a note. And here is the very note." He slapped it
+down upon the table in front of him. "Listen to this: 'You will
+see me when all is ready. Come at once. F.H.M.' Now my theory all
+along has been that Lady St. Simon was decoyed away by Flora
+Millar, and that she, with confederates, no doubt, was
+responsible for her disappearance. Here, signed with her
+initials, is the very note which was no doubt quietly slipped
+into her hand at the door and which lured her within their
+reach."
+
+"Very good, Lestrade," said Holmes, laughing. "You really are
+very fine indeed. Let me see it." He took up the paper in a
+listless way, but his attention instantly became riveted, and he
+gave a little cry of satisfaction. "This is indeed important,"
+said he.
+
+"Ha! you find it so?"
+
+"Extremely so. I congratulate you warmly."
+
+Lestrade rose in his triumph and bent his head to look. "Why," he
+shrieked, "you're looking at the wrong side!"
+
+"On the contrary, this is the right side."
+
+"The right side? You're mad! Here is the note written in pencil
+over here."
+
+"And over here is what appears to be the fragment of a hotel
+bill, which interests me deeply."
+
+"There's nothing in it. I looked at it before," said Lestrade.
+"'Oct. 4th, rooms 8s., breakfast 2s. 6d., cocktail 1s., lunch 2s.
+6d., glass sherry, 8d.' I see nothing in that."
+
+"Very likely not. It is most important, all the same. As to the
+note, it is important also, or at least the initials are, so I
+congratulate you again."
+
+"I've wasted time enough," said Lestrade, rising. "I believe in
+hard work and not in sitting by the fire spinning fine theories.
+Good-day, Mr. Holmes, and we shall see which gets to the bottom
+of the matter first." He gathered up the garments, thrust them
+into the bag, and made for the door.
+
+"Just one hint to you, Lestrade," drawled Holmes before his rival
+vanished; "I will tell you the true solution of the matter. Lady
+St. Simon is a myth. There is not, and there never has been, any
+such person."
+
+Lestrade looked sadly at my companion. Then he turned to me,
+tapped his forehead three times, shook his head solemnly, and
+hurried away.
+
+He had hardly shut the door behind him when Holmes rose to put on
+his overcoat. "There is something in what the fellow says about
+outdoor work," he remarked, "so I think, Watson, that I must
+leave you to your papers for a little."
+
+It was after five o'clock when Sherlock Holmes left me, but I had
+no time to be lonely, for within an hour there arrived a
+confectioner's man with a very large flat box. This he unpacked
+with the help of a youth whom he had brought with him, and
+presently, to my very great astonishment, a quite epicurean
+little cold supper began to be laid out upon our humble
+lodging-house mahogany. There were a couple of brace of cold
+woodcock, a pheasant, a pâté de foie gras pie with a group of
+ancient and cobwebby bottles. Having laid out all these luxuries,
+my two visitors vanished away, like the genii of the Arabian
+Nights, with no explanation save that the things had been paid
+for and were ordered to this address.
+
+Just before nine o'clock Sherlock Holmes stepped briskly into the
+room. His features were gravely set, but there was a light in his
+eye which made me think that he had not been disappointed in his
+conclusions.
+
+"They have laid the supper, then," he said, rubbing his hands.
+
+"You seem to expect company. They have laid for five."
+
+"Yes, I fancy we may have some company dropping in," said he. "I
+am surprised that Lord St. Simon has not already arrived. Ha! I
+fancy that I hear his step now upon the stairs."
+
+It was indeed our visitor of the afternoon who came bustling in,
+dangling his glasses more vigorously than ever, and with a very
+perturbed expression upon his aristocratic features.
+
+"My messenger reached you, then?" asked Holmes.
+
+"Yes, and I confess that the contents startled me beyond measure.
+Have you good authority for what you say?"
+
+"The best possible."
+
+Lord St. Simon sank into a chair and passed his hand over his
+forehead.
+
+"What will the Duke say," he murmured, "when he hears that one of
+the family has been subjected to such humiliation?"
+
+"It is the purest accident. I cannot allow that there is any
+humiliation."
+
+"Ah, you look on these things from another standpoint."
+
+"I fail to see that anyone is to blame. I can hardly see how the
+lady could have acted otherwise, though her abrupt method of
+doing it was undoubtedly to be regretted. Having no mother, she
+had no one to advise her at such a crisis."
+
+"It was a slight, sir, a public slight," said Lord St. Simon,
+tapping his fingers upon the table.
+
+"You must make allowance for this poor girl, placed in so
+unprecedented a position."
+
+"I will make no allowance. I am very angry indeed, and I have
+been shamefully used."
+
+"I think that I heard a ring," said Holmes. "Yes, there are steps
+on the landing. If I cannot persuade you to take a lenient view
+of the matter, Lord St. Simon, I have brought an advocate here
+who may be more successful." He opened the door and ushered in a
+lady and gentleman. "Lord St. Simon," said he "allow me to
+introduce you to Mr. and Mrs. Francis Hay Moulton. The lady, I
+think, you have already met."
+
+At the sight of these newcomers our client had sprung from his
+seat and stood very erect, with his eyes cast down and his hand
+thrust into the breast of his frock-coat, a picture of offended
+dignity. The lady had taken a quick step forward and had held out
+her hand to him, but he still refused to raise his eyes. It was
+as well for his resolution, perhaps, for her pleading face was
+one which it was hard to resist.
+
+"You're angry, Robert," said she. "Well, I guess you have every
+cause to be."
+
+"Pray make no apology to me," said Lord St. Simon bitterly.
+
+"Oh, yes, I know that I have treated you real bad and that I
+should have spoken to you before I went; but I was kind of
+rattled, and from the time when I saw Frank here again I just
+didn't know what I was doing or saying. I only wonder I didn't
+fall down and do a faint right there before the altar."
+
+"Perhaps, Mrs. Moulton, you would like my friend and me to leave
+the room while you explain this matter?"
+
+"If I may give an opinion," remarked the strange gentleman,
+"we've had just a little too much secrecy over this business
+already. For my part, I should like all Europe and America to
+hear the rights of it." He was a small, wiry, sunburnt man,
+clean-shaven, with a sharp face and alert manner.
+
+"Then I'll tell our story right away," said the lady. "Frank here
+and I met in '84, in McQuire's camp, near the Rockies, where pa
+was working a claim. We were engaged to each other, Frank and I;
+but then one day father struck a rich pocket and made a pile,
+while poor Frank here had a claim that petered out and came to
+nothing. The richer pa grew the poorer was Frank; so at last pa
+wouldn't hear of our engagement lasting any longer, and he took
+me away to 'Frisco. Frank wouldn't throw up his hand, though; so
+he followed me there, and he saw me without pa knowing anything
+about it. It would only have made him mad to know, so we just
+fixed it all up for ourselves. Frank said that he would go and
+make his pile, too, and never come back to claim me until he had
+as much as pa. So then I promised to wait for him to the end of
+time and pledged myself not to marry anyone else while he lived.
+'Why shouldn't we be married right away, then,' said he, 'and
+then I will feel sure of you; and I won't claim to be your
+husband until I come back?' Well, we talked it over, and he had
+fixed it all up so nicely, with a clergyman all ready in waiting,
+that we just did it right there; and then Frank went off to seek
+his fortune, and I went back to pa.
+
+"The next I heard of Frank was that he was in Montana, and then
+he went prospecting in Arizona, and then I heard of him from New
+Mexico. After that came a long newspaper story about how a
+miners' camp had been attacked by Apache Indians, and there was
+my Frank's name among the killed. I fainted dead away, and I was
+very sick for months after. Pa thought I had a decline and took
+me to half the doctors in 'Frisco. Not a word of news came for a
+year and more, so that I never doubted that Frank was really
+dead. Then Lord St. Simon came to 'Frisco, and we came to London,
+and a marriage was arranged, and pa was very pleased, but I felt
+all the time that no man on this earth would ever take the place
+in my heart that had been given to my poor Frank.
+
+"Still, if I had married Lord St. Simon, of course I'd have done
+my duty by him. We can't command our love, but we can our
+actions. I went to the altar with him with the intention to make
+him just as good a wife as it was in me to be. But you may
+imagine what I felt when, just as I came to the altar rails, I
+glanced back and saw Frank standing and looking at me out of the
+first pew. I thought it was his ghost at first; but when I looked
+again there he was still, with a kind of question in his eyes, as
+if to ask me whether I were glad or sorry to see him. I wonder I
+didn't drop. I know that everything was turning round, and the
+words of the clergyman were just like the buzz of a bee in my
+ear. I didn't know what to do. Should I stop the service and make
+a scene in the church? I glanced at him again, and he seemed to
+know what I was thinking, for he raised his finger to his lips to
+tell me to be still. Then I saw him scribble on a piece of paper,
+and I knew that he was writing me a note. As I passed his pew on
+the way out I dropped my bouquet over to him, and he slipped the
+note into my hand when he returned me the flowers. It was only a
+line asking me to join him when he made the sign to me to do so.
+Of course I never doubted for a moment that my first duty was now
+to him, and I determined to do just whatever he might direct.
+
+"When I got back I told my maid, who had known him in California,
+and had always been his friend. I ordered her to say nothing, but
+to get a few things packed and my ulster ready. I know I ought to
+have spoken to Lord St. Simon, but it was dreadful hard before
+his mother and all those great people. I just made up my mind to
+run away and explain afterwards. I hadn't been at the table ten
+minutes before I saw Frank out of the window at the other side of
+the road. He beckoned to me and then began walking into the Park.
+I slipped out, put on my things, and followed him. Some woman
+came talking something or other about Lord St. Simon to
+me--seemed to me from the little I heard as if he had a little
+secret of his own before marriage also--but I managed to get away
+from her and soon overtook Frank. We got into a cab together, and
+away we drove to some lodgings he had taken in Gordon Square, and
+that was my true wedding after all those years of waiting. Frank
+had been a prisoner among the Apaches, had escaped, came on to
+'Frisco, found that I had given him up for dead and had gone to
+England, followed me there, and had come upon me at last on the
+very morning of my second wedding."
+
+"I saw it in a paper," explained the American. "It gave the name
+and the church but not where the lady lived."
+
+"Then we had a talk as to what we should do, and Frank was all
+for openness, but I was so ashamed of it all that I felt as if I
+should like to vanish away and never see any of them again--just
+sending a line to pa, perhaps, to show him that I was alive. It
+was awful to me to think of all those lords and ladies sitting
+round that breakfast-table and waiting for me to come back. So
+Frank took my wedding-clothes and things and made a bundle of
+them, so that I should not be traced, and dropped them away
+somewhere where no one could find them. It is likely that we
+should have gone on to Paris to-morrow, only that this good
+gentleman, Mr. Holmes, came round to us this evening, though how
+he found us is more than I can think, and he showed us very
+clearly and kindly that I was wrong and that Frank was right, and
+that we should be putting ourselves in the wrong if we were so
+secret. Then he offered to give us a chance of talking to Lord
+St. Simon alone, and so we came right away round to his rooms at
+once. Now, Robert, you have heard it all, and I am very sorry if
+I have given you pain, and I hope that you do not think very
+meanly of me."
+
+Lord St. Simon had by no means relaxed his rigid attitude, but
+had listened with a frowning brow and a compressed lip to this
+long narrative.
+
+"Excuse me," he said, "but it is not my custom to discuss my most
+intimate personal affairs in this public manner."
+
+"Then you won't forgive me? You won't shake hands before I go?"
+
+"Oh, certainly, if it would give you any pleasure." He put out
+his hand and coldly grasped that which she extended to him.
+
+"I had hoped," suggested Holmes, "that you would have joined us
+in a friendly supper."
+
+"I think that there you ask a little too much," responded his
+Lordship. "I may be forced to acquiesce in these recent
+developments, but I can hardly be expected to make merry over
+them. I think that with your permission I will now wish you all a
+very good-night." He included us all in a sweeping bow and
+stalked out of the room.
+
+"Then I trust that you at least will honour me with your
+company," said Sherlock Holmes. "It is always a joy to meet an
+American, Mr. Moulton, for I am one of those who believe that the
+folly of a monarch and the blundering of a minister in far-gone
+years will not prevent our children from being some day citizens
+of the same world-wide country under a flag which shall be a
+quartering of the Union Jack with the Stars and Stripes."
+
+"The case has been an interesting one," remarked Holmes when our
+visitors had left us, "because it serves to show very clearly how
+simple the explanation may be of an affair which at first sight
+seems to be almost inexplicable. Nothing could be more natural
+than the sequence of events as narrated by this lady, and nothing
+stranger than the result when viewed, for instance, by Mr.
+Lestrade of Scotland Yard."
+
+"You were not yourself at fault at all, then?"
+
+"From the first, two facts were very obvious to me, the one that
+the lady had been quite willing to undergo the wedding ceremony,
+the other that she had repented of it within a few minutes of
+returning home. Obviously something had occurred during the
+morning, then, to cause her to change her mind. What could that
+something be? She could not have spoken to anyone when she was
+out, for she had been in the company of the bridegroom. Had she
+seen someone, then? If she had, it must be someone from America
+because she had spent so short a time in this country that she
+could hardly have allowed anyone to acquire so deep an influence
+over her that the mere sight of him would induce her to change
+her plans so completely. You see we have already arrived, by a
+process of exclusion, at the idea that she might have seen an
+American. Then who could this American be, and why should he
+possess so much influence over her? It might be a lover; it might
+be a husband. Her young womanhood had, I knew, been spent in
+rough scenes and under strange conditions. So far I had got
+before I ever heard Lord St. Simon's narrative. When he told us
+of a man in a pew, of the change in the bride's manner, of so
+transparent a device for obtaining a note as the dropping of a
+bouquet, of her resort to her confidential maid, and of her very
+significant allusion to claim-jumping--which in miners' parlance
+means taking possession of that which another person has a prior
+claim to--the whole situation became absolutely clear. She had
+gone off with a man, and the man was either a lover or was a
+previous husband--the chances being in favour of the latter."
+
+"And how in the world did you find them?"
+
+"It might have been difficult, but friend Lestrade held
+information in his hands the value of which he did not himself
+know. The initials were, of course, of the highest importance,
+but more valuable still was it to know that within a week he had
+settled his bill at one of the most select London hotels."
+
+"How did you deduce the select?"
+
+"By the select prices. Eight shillings for a bed and eightpence
+for a glass of sherry pointed to one of the most expensive
+hotels. There are not many in London which charge at that rate.
+In the second one which I visited in Northumberland Avenue, I
+learned by an inspection of the book that Francis H. Moulton, an
+American gentleman, had left only the day before, and on looking
+over the entries against him, I came upon the very items which I
+had seen in the duplicate bill. His letters were to be forwarded
+to 226 Gordon Square; so thither I travelled, and being fortunate
+enough to find the loving couple at home, I ventured to give them
+some paternal advice and to point out to them that it would be
+better in every way that they should make their position a little
+clearer both to the general public and to Lord St. Simon in
+particular. I invited them to meet him here, and, as you see, I
+made him keep the appointment."
+
+"But with no very good result," I remarked. "His conduct was
+certainly not very gracious."
+
+"Ah, Watson," said Holmes, smiling, "perhaps you would not be
+very gracious either, if, after all the trouble of wooing and
+wedding, you found yourself deprived in an instant of wife and of
+fortune. I think that we may judge Lord St. Simon very mercifully
+and thank our stars that we are never likely to find ourselves in
+the same position. Draw your chair up and hand me my violin, for
+the only problem we have still to solve is how to while away
+these bleak autumnal evenings."
+
+
+
+XI. THE ADVENTURE OF THE BERYL CORONET
+
+"Holmes," said I as I stood one morning in our bow-window looking
+down the street, "here is a madman coming along. It seems rather
+sad that his relatives should allow him to come out alone."
+
+My friend rose lazily from his armchair and stood with his hands
+in the pockets of his dressing-gown, looking over my shoulder. It
+was a bright, crisp February morning, and the snow of the day
+before still lay deep upon the ground, shimmering brightly in the
+wintry sun. Down the centre of Baker Street it had been ploughed
+into a brown crumbly band by the traffic, but at either side and
+on the heaped-up edges of the foot-paths it still lay as white as
+when it fell. The grey pavement had been cleaned and scraped, but
+was still dangerously slippery, so that there were fewer
+passengers than usual. Indeed, from the direction of the
+Metropolitan Station no one was coming save the single gentleman
+whose eccentric conduct had drawn my attention.
+
+He was a man of about fifty, tall, portly, and imposing, with a
+massive, strongly marked face and a commanding figure. He was
+dressed in a sombre yet rich style, in black frock-coat, shining
+hat, neat brown gaiters, and well-cut pearl-grey trousers. Yet
+his actions were in absurd contrast to the dignity of his dress
+and features, for he was running hard, with occasional little
+springs, such as a weary man gives who is little accustomed to
+set any tax upon his legs. As he ran he jerked his hands up and
+down, waggled his head, and writhed his face into the most
+extraordinary contortions.
+
+"What on earth can be the matter with him?" I asked. "He is
+looking up at the numbers of the houses."
+
+"I believe that he is coming here," said Holmes, rubbing his
+hands.
+
+"Here?"
+
+"Yes; I rather think he is coming to consult me professionally. I
+think that I recognise the symptoms. Ha! did I not tell you?" As
+he spoke, the man, puffing and blowing, rushed at our door and
+pulled at our bell until the whole house resounded with the
+clanging.
+
+A few moments later he was in our room, still puffing, still
+gesticulating, but with so fixed a look of grief and despair in
+his eyes that our smiles were turned in an instant to horror and
+pity. For a while he could not get his words out, but swayed his
+body and plucked at his hair like one who has been driven to the
+extreme limits of his reason. Then, suddenly springing to his
+feet, he beat his head against the wall with such force that we
+both rushed upon him and tore him away to the centre of the room.
+Sherlock Holmes pushed him down into the easy-chair and, sitting
+beside him, patted his hand and chatted with him in the easy,
+soothing tones which he knew so well how to employ.
+
+"You have come to me to tell your story, have you not?" said he.
+"You are fatigued with your haste. Pray wait until you have
+recovered yourself, and then I shall be most happy to look into
+any little problem which you may submit to me."
+
+The man sat for a minute or more with a heaving chest, fighting
+against his emotion. Then he passed his handkerchief over his
+brow, set his lips tight, and turned his face towards us.
+
+"No doubt you think me mad?" said he.
+
+"I see that you have had some great trouble," responded Holmes.
+
+"God knows I have!--a trouble which is enough to unseat my
+reason, so sudden and so terrible is it. Public disgrace I might
+have faced, although I am a man whose character has never yet
+borne a stain. Private affliction also is the lot of every man;
+but the two coming together, and in so frightful a form, have
+been enough to shake my very soul. Besides, it is not I alone.
+The very noblest in the land may suffer unless some way be found
+out of this horrible affair."
+
+"Pray compose yourself, sir," said Holmes, "and let me have a
+clear account of who you are and what it is that has befallen
+you."
+
+"My name," answered our visitor, "is probably familiar to your
+ears. I am Alexander Holder, of the banking firm of Holder &
+Stevenson, of Threadneedle Street."
+
+The name was indeed well known to us as belonging to the senior
+partner in the second largest private banking concern in the City
+of London. What could have happened, then, to bring one of the
+foremost citizens of London to this most pitiable pass? We
+waited, all curiosity, until with another effort he braced
+himself to tell his story.
+
+"I feel that time is of value," said he; "that is why I hastened
+here when the police inspector suggested that I should secure
+your co-operation. I came to Baker Street by the Underground and
+hurried from there on foot, for the cabs go slowly through this
+snow. That is why I was so out of breath, for I am a man who
+takes very little exercise. I feel better now, and I will put the
+facts before you as shortly and yet as clearly as I can.
+
+"It is, of course, well known to you that in a successful banking
+business as much depends upon our being able to find remunerative
+investments for our funds as upon our increasing our connection
+and the number of our depositors. One of our most lucrative means
+of laying out money is in the shape of loans, where the security
+is unimpeachable. We have done a good deal in this direction
+during the last few years, and there are many noble families to
+whom we have advanced large sums upon the security of their
+pictures, libraries, or plate.
+
+"Yesterday morning I was seated in my office at the bank when a
+card was brought in to me by one of the clerks. I started when I
+saw the name, for it was that of none other than--well, perhaps
+even to you I had better say no more than that it was a name
+which is a household word all over the earth--one of the highest,
+noblest, most exalted names in England. I was overwhelmed by the
+honour and attempted, when he entered, to say so, but he plunged
+at once into business with the air of a man who wishes to hurry
+quickly through a disagreeable task.
+
+"'Mr. Holder,' said he, 'I have been informed that you are in the
+habit of advancing money.'
+
+"'The firm does so when the security is good.' I answered.
+
+"'It is absolutely essential to me,' said he, 'that I should have
+50,000 pounds at once. I could, of course, borrow so trifling a
+sum ten times over from my friends, but I much prefer to make it
+a matter of business and to carry out that business myself. In my
+position you can readily understand that it is unwise to place
+one's self under obligations.'
+
+"'For how long, may I ask, do you want this sum?' I asked.
+
+"'Next Monday I have a large sum due to me, and I shall then most
+certainly repay what you advance, with whatever interest you
+think it right to charge. But it is very essential to me that the
+money should be paid at once.'
+
+"'I should be happy to advance it without further parley from my
+own private purse,' said I, 'were it not that the strain would be
+rather more than it could bear. If, on the other hand, I am to do
+it in the name of the firm, then in justice to my partner I must
+insist that, even in your case, every businesslike precaution
+should be taken.'
+
+"'I should much prefer to have it so,' said he, raising up a
+square, black morocco case which he had laid beside his chair.
+'You have doubtless heard of the Beryl Coronet?'
+
+"'One of the most precious public possessions of the empire,'
+said I.
+
+"'Precisely.' He opened the case, and there, imbedded in soft,
+flesh-coloured velvet, lay the magnificent piece of jewellery
+which he had named. 'There are thirty-nine enormous beryls,' said
+he, 'and the price of the gold chasing is incalculable. The
+lowest estimate would put the worth of the coronet at double the
+sum which I have asked. I am prepared to leave it with you as my
+security.'
+
+"I took the precious case into my hands and looked in some
+perplexity from it to my illustrious client.
+
+"'You doubt its value?' he asked.
+
+"'Not at all. I only doubt--'
+
+"'The propriety of my leaving it. You may set your mind at rest
+about that. I should not dream of doing so were it not absolutely
+certain that I should be able in four days to reclaim it. It is a
+pure matter of form. Is the security sufficient?'
+
+"'Ample.'
+
+"'You understand, Mr. Holder, that I am giving you a strong proof
+of the confidence which I have in you, founded upon all that I
+have heard of you. I rely upon you not only to be discreet and to
+refrain from all gossip upon the matter but, above all, to
+preserve this coronet with every possible precaution because I
+need not say that a great public scandal would be caused if any
+harm were to befall it. Any injury to it would be almost as
+serious as its complete loss, for there are no beryls in the
+world to match these, and it would be impossible to replace them.
+I leave it with you, however, with every confidence, and I shall
+call for it in person on Monday morning.'
+
+"Seeing that my client was anxious to leave, I said no more but,
+calling for my cashier, I ordered him to pay over fifty 1000
+pound notes. When I was alone once more, however, with the
+precious case lying upon the table in front of me, I could not
+but think with some misgivings of the immense responsibility
+which it entailed upon me. There could be no doubt that, as it
+was a national possession, a horrible scandal would ensue if any
+misfortune should occur to it. I already regretted having ever
+consented to take charge of it. However, it was too late to alter
+the matter now, so I locked it up in my private safe and turned
+once more to my work.
+
+"When evening came I felt that it would be an imprudence to leave
+so precious a thing in the office behind me. Bankers' safes had
+been forced before now, and why should not mine be? If so, how
+terrible would be the position in which I should find myself! I
+determined, therefore, that for the next few days I would always
+carry the case backward and forward with me, so that it might
+never be really out of my reach. With this intention, I called a
+cab and drove out to my house at Streatham, carrying the jewel
+with me. I did not breathe freely until I had taken it upstairs
+and locked it in the bureau of my dressing-room.
+
+"And now a word as to my household, Mr. Holmes, for I wish you to
+thoroughly understand the situation. My groom and my page sleep
+out of the house, and may be set aside altogether. I have three
+maid-servants who have been with me a number of years and whose
+absolute reliability is quite above suspicion. Another, Lucy
+Parr, the second waiting-maid, has only been in my service a few
+months. She came with an excellent character, however, and has
+always given me satisfaction. She is a very pretty girl and has
+attracted admirers who have occasionally hung about the place.
+That is the only drawback which we have found to her, but we
+believe her to be a thoroughly good girl in every way.
+
+"So much for the servants. My family itself is so small that it
+will not take me long to describe it. I am a widower and have an
+only son, Arthur. He has been a disappointment to me, Mr.
+Holmes--a grievous disappointment. I have no doubt that I am
+myself to blame. People tell me that I have spoiled him. Very
+likely I have. When my dear wife died I felt that he was all I
+had to love. I could not bear to see the smile fade even for a
+moment from his face. I have never denied him a wish. Perhaps it
+would have been better for both of us had I been sterner, but I
+meant it for the best.
+
+"It was naturally my intention that he should succeed me in my
+business, but he was not of a business turn. He was wild,
+wayward, and, to speak the truth, I could not trust him in the
+handling of large sums of money. When he was young he became a
+member of an aristocratic club, and there, having charming
+manners, he was soon the intimate of a number of men with long
+purses and expensive habits. He learned to play heavily at cards
+and to squander money on the turf, until he had again and again
+to come to me and implore me to give him an advance upon his
+allowance, that he might settle his debts of honour. He tried
+more than once to break away from the dangerous company which he
+was keeping, but each time the influence of his friend, Sir
+George Burnwell, was enough to draw him back again.
+
+"And, indeed, I could not wonder that such a man as Sir George
+Burnwell should gain an influence over him, for he has frequently
+brought him to my house, and I have found myself that I could
+hardly resist the fascination of his manner. He is older than
+Arthur, a man of the world to his finger-tips, one who had been
+everywhere, seen everything, a brilliant talker, and a man of
+great personal beauty. Yet when I think of him in cold blood, far
+away from the glamour of his presence, I am convinced from his
+cynical speech and the look which I have caught in his eyes that
+he is one who should be deeply distrusted. So I think, and so,
+too, thinks my little Mary, who has a woman's quick insight into
+character.
+
+"And now there is only she to be described. She is my niece; but
+when my brother died five years ago and left her alone in the
+world I adopted her, and have looked upon her ever since as my
+daughter. She is a sunbeam in my house--sweet, loving, beautiful,
+a wonderful manager and housekeeper, yet as tender and quiet and
+gentle as a woman could be. She is my right hand. I do not know
+what I could do without her. In only one matter has she ever gone
+against my wishes. Twice my boy has asked her to marry him, for
+he loves her devotedly, but each time she has refused him. I
+think that if anyone could have drawn him into the right path it
+would have been she, and that his marriage might have changed his
+whole life; but now, alas! it is too late--forever too late!
+
+"Now, Mr. Holmes, you know the people who live under my roof, and
+I shall continue with my miserable story.
+
+"When we were taking coffee in the drawing-room that night after
+dinner, I told Arthur and Mary my experience, and of the precious
+treasure which we had under our roof, suppressing only the name
+of my client. Lucy Parr, who had brought in the coffee, had, I am
+sure, left the room; but I cannot swear that the door was closed.
+Mary and Arthur were much interested and wished to see the famous
+coronet, but I thought it better not to disturb it.
+
+"'Where have you put it?' asked Arthur.
+
+"'In my own bureau.'
+
+"'Well, I hope to goodness the house won't be burgled during the
+night.' said he.
+
+"'It is locked up,' I answered.
+
+"'Oh, any old key will fit that bureau. When I was a youngster I
+have opened it myself with the key of the box-room cupboard.'
+
+"He often had a wild way of talking, so that I thought little of
+what he said. He followed me to my room, however, that night with
+a very grave face.
+
+"'Look here, dad,' said he with his eyes cast down, 'can you let
+me have 200 pounds?'
+
+"'No, I cannot!' I answered sharply. 'I have been far too
+generous with you in money matters.'
+
+"'You have been very kind,' said he, 'but I must have this money,
+or else I can never show my face inside the club again.'
+
+"'And a very good thing, too!' I cried.
+
+"'Yes, but you would not have me leave it a dishonoured man,'
+said he. 'I could not bear the disgrace. I must raise the money
+in some way, and if you will not let me have it, then I must try
+other means.'
+
+"I was very angry, for this was the third demand during the
+month. 'You shall not have a farthing from me,' I cried, on which
+he bowed and left the room without another word.
+
+"When he was gone I unlocked my bureau, made sure that my
+treasure was safe, and locked it again. Then I started to go
+round the house to see that all was secure--a duty which I
+usually leave to Mary but which I thought it well to perform
+myself that night. As I came down the stairs I saw Mary herself
+at the side window of the hall, which she closed and fastened as
+I approached.
+
+"'Tell me, dad,' said she, looking, I thought, a little
+disturbed, 'did you give Lucy, the maid, leave to go out
+to-night?'
+
+"'Certainly not.'
+
+"'She came in just now by the back door. I have no doubt that she
+has only been to the side gate to see someone, but I think that
+it is hardly safe and should be stopped.'
+
+"'You must speak to her in the morning, or I will if you prefer
+it. Are you sure that everything is fastened?'
+
+"'Quite sure, dad.'
+
+"'Then, good-night.' I kissed her and went up to my bedroom
+again, where I was soon asleep.
+
+"I am endeavouring to tell you everything, Mr. Holmes, which may
+have any bearing upon the case, but I beg that you will question
+me upon any point which I do not make clear."
+
+"On the contrary, your statement is singularly lucid."
+
+"I come to a part of my story now in which I should wish to be
+particularly so. I am not a very heavy sleeper, and the anxiety
+in my mind tended, no doubt, to make me even less so than usual.
+About two in the morning, then, I was awakened by some sound in
+the house. It had ceased ere I was wide awake, but it had left an
+impression behind it as though a window had gently closed
+somewhere. I lay listening with all my ears. Suddenly, to my
+horror, there was a distinct sound of footsteps moving softly in
+the next room. I slipped out of bed, all palpitating with fear,
+and peeped round the corner of my dressing-room door.
+
+"'Arthur!' I screamed, 'you villain! you thief! How dare you
+touch that coronet?'
+
+"The gas was half up, as I had left it, and my unhappy boy,
+dressed only in his shirt and trousers, was standing beside the
+light, holding the coronet in his hands. He appeared to be
+wrenching at it, or bending it with all his strength. At my cry
+he dropped it from his grasp and turned as pale as death. I
+snatched it up and examined it. One of the gold corners, with
+three of the beryls in it, was missing.
+
+"'You blackguard!' I shouted, beside myself with rage. 'You have
+destroyed it! You have dishonoured me forever! Where are the
+jewels which you have stolen?'
+
+"'Stolen!' he cried.
+
+"'Yes, thief!' I roared, shaking him by the shoulder.
+
+"'There are none missing. There cannot be any missing,' said he.
+
+"'There are three missing. And you know where they are. Must I
+call you a liar as well as a thief? Did I not see you trying to
+tear off another piece?'
+
+"'You have called me names enough,' said he, 'I will not stand it
+any longer. I shall not say another word about this business,
+since you have chosen to insult me. I will leave your house in
+the morning and make my own way in the world.'
+
+"'You shall leave it in the hands of the police!' I cried
+half-mad with grief and rage. 'I shall have this matter probed to
+the bottom.'
+
+"'You shall learn nothing from me,' said he with a passion such
+as I should not have thought was in his nature. 'If you choose to
+call the police, let the police find what they can.'
+
+"By this time the whole house was astir, for I had raised my
+voice in my anger. Mary was the first to rush into my room, and,
+at the sight of the coronet and of Arthur's face, she read the
+whole story and, with a scream, fell down senseless on the
+ground. I sent the house-maid for the police and put the
+investigation into their hands at once. When the inspector and a
+constable entered the house, Arthur, who had stood sullenly with
+his arms folded, asked me whether it was my intention to charge
+him with theft. I answered that it had ceased to be a private
+matter, but had become a public one, since the ruined coronet was
+national property. I was determined that the law should have its
+way in everything.
+
+"'At least,' said he, 'you will not have me arrested at once. It
+would be to your advantage as well as mine if I might leave the
+house for five minutes.'
+
+"'That you may get away, or perhaps that you may conceal what you
+have stolen,' said I. And then, realising the dreadful position
+in which I was placed, I implored him to remember that not only
+my honour but that of one who was far greater than I was at
+stake; and that he threatened to raise a scandal which would
+convulse the nation. He might avert it all if he would but tell
+me what he had done with the three missing stones.
+
+"'You may as well face the matter,' said I; 'you have been caught
+in the act, and no confession could make your guilt more heinous.
+If you but make such reparation as is in your power, by telling
+us where the beryls are, all shall be forgiven and forgotten.'
+
+"'Keep your forgiveness for those who ask for it,' he answered,
+turning away from me with a sneer. I saw that he was too hardened
+for any words of mine to influence him. There was but one way for
+it. I called in the inspector and gave him into custody. A search
+was made at once not only of his person but of his room and of
+every portion of the house where he could possibly have concealed
+the gems; but no trace of them could be found, nor would the
+wretched boy open his mouth for all our persuasions and our
+threats. This morning he was removed to a cell, and I, after
+going through all the police formalities, have hurried round to
+you to implore you to use your skill in unravelling the matter.
+The police have openly confessed that they can at present make
+nothing of it. You may go to any expense which you think
+necessary. I have already offered a reward of 1000 pounds. My
+God, what shall I do! I have lost my honour, my gems, and my son
+in one night. Oh, what shall I do!"
+
+He put a hand on either side of his head and rocked himself to
+and fro, droning to himself like a child whose grief has got
+beyond words.
+
+Sherlock Holmes sat silent for some few minutes, with his brows
+knitted and his eyes fixed upon the fire.
+
+"Do you receive much company?" he asked.
+
+"None save my partner with his family and an occasional friend of
+Arthur's. Sir George Burnwell has been several times lately. No
+one else, I think."
+
+"Do you go out much in society?"
+
+"Arthur does. Mary and I stay at home. We neither of us care for
+it."
+
+"That is unusual in a young girl."
+
+"She is of a quiet nature. Besides, she is not so very young. She
+is four-and-twenty."
+
+"This matter, from what you say, seems to have been a shock to
+her also."
+
+"Terrible! She is even more affected than I."
+
+"You have neither of you any doubt as to your son's guilt?"
+
+"How can we have when I saw him with my own eyes with the coronet
+in his hands."
+
+"I hardly consider that a conclusive proof. Was the remainder of
+the coronet at all injured?"
+
+"Yes, it was twisted."
+
+"Do you not think, then, that he might have been trying to
+straighten it?"
+
+"God bless you! You are doing what you can for him and for me.
+But it is too heavy a task. What was he doing there at all? If
+his purpose were innocent, why did he not say so?"
+
+"Precisely. And if it were guilty, why did he not invent a lie?
+His silence appears to me to cut both ways. There are several
+singular points about the case. What did the police think of the
+noise which awoke you from your sleep?"
+
+"They considered that it might be caused by Arthur's closing his
+bedroom door."
+
+"A likely story! As if a man bent on felony would slam his door
+so as to wake a household. What did they say, then, of the
+disappearance of these gems?"
+
+"They are still sounding the planking and probing the furniture
+in the hope of finding them."
+
+"Have they thought of looking outside the house?"
+
+"Yes, they have shown extraordinary energy. The whole garden has
+already been minutely examined."
+
+"Now, my dear sir," said Holmes, "is it not obvious to you now
+that this matter really strikes very much deeper than either you
+or the police were at first inclined to think? It appeared to you
+to be a simple case; to me it seems exceedingly complex. Consider
+what is involved by your theory. You suppose that your son came
+down from his bed, went, at great risk, to your dressing-room,
+opened your bureau, took out your coronet, broke off by main
+force a small portion of it, went off to some other place,
+concealed three gems out of the thirty-nine, with such skill that
+nobody can find them, and then returned with the other thirty-six
+into the room in which he exposed himself to the greatest danger
+of being discovered. I ask you now, is such a theory tenable?"
+
+"But what other is there?" cried the banker with a gesture of
+despair. "If his motives were innocent, why does he not explain
+them?"
+
+"It is our task to find that out," replied Holmes; "so now, if
+you please, Mr. Holder, we will set off for Streatham together,
+and devote an hour to glancing a little more closely into
+details."
+
+My friend insisted upon my accompanying them in their expedition,
+which I was eager enough to do, for my curiosity and sympathy
+were deeply stirred by the story to which we had listened. I
+confess that the guilt of the banker's son appeared to me to be
+as obvious as it did to his unhappy father, but still I had such
+faith in Holmes' judgment that I felt that there must be some
+grounds for hope as long as he was dissatisfied with the accepted
+explanation. He hardly spoke a word the whole way out to the
+southern suburb, but sat with his chin upon his breast and his
+hat drawn over his eyes, sunk in the deepest thought. Our client
+appeared to have taken fresh heart at the little glimpse of hope
+which had been presented to him, and he even broke into a
+desultory chat with me over his business affairs. A short railway
+journey and a shorter walk brought us to Fairbank, the modest
+residence of the great financier.
+
+Fairbank was a good-sized square house of white stone, standing
+back a little from the road. A double carriage-sweep, with a
+snow-clad lawn, stretched down in front to two large iron gates
+which closed the entrance. On the right side was a small wooden
+thicket, which led into a narrow path between two neat hedges
+stretching from the road to the kitchen door, and forming the
+tradesmen's entrance. On the left ran a lane which led to the
+stables, and was not itself within the grounds at all, being a
+public, though little used, thoroughfare. Holmes left us standing
+at the door and walked slowly all round the house, across the
+front, down the tradesmen's path, and so round by the garden
+behind into the stable lane. So long was he that Mr. Holder and I
+went into the dining-room and waited by the fire until he should
+return. We were sitting there in silence when the door opened and
+a young lady came in. She was rather above the middle height,
+slim, with dark hair and eyes, which seemed the darker against
+the absolute pallor of her skin. I do not think that I have ever
+seen such deadly paleness in a woman's face. Her lips, too, were
+bloodless, but her eyes were flushed with crying. As she swept
+silently into the room she impressed me with a greater sense of
+grief than the banker had done in the morning, and it was the
+more striking in her as she was evidently a woman of strong
+character, with immense capacity for self-restraint. Disregarding
+my presence, she went straight to her uncle and passed her hand
+over his head with a sweet womanly caress.
+
+"You have given orders that Arthur should be liberated, have you
+not, dad?" she asked.
+
+"No, no, my girl, the matter must be probed to the bottom."
+
+"But I am so sure that he is innocent. You know what woman's
+instincts are. I know that he has done no harm and that you will
+be sorry for having acted so harshly."
+
+"Why is he silent, then, if he is innocent?"
+
+"Who knows? Perhaps because he was so angry that you should
+suspect him."
+
+"How could I help suspecting him, when I actually saw him with
+the coronet in his hand?"
+
+"Oh, but he had only picked it up to look at it. Oh, do, do take
+my word for it that he is innocent. Let the matter drop and say
+no more. It is so dreadful to think of our dear Arthur in
+prison!"
+
+"I shall never let it drop until the gems are found--never, Mary!
+Your affection for Arthur blinds you as to the awful consequences
+to me. Far from hushing the thing up, I have brought a gentleman
+down from London to inquire more deeply into it."
+
+"This gentleman?" she asked, facing round to me.
+
+"No, his friend. He wished us to leave him alone. He is round in
+the stable lane now."
+
+"The stable lane?" She raised her dark eyebrows. "What can he
+hope to find there? Ah! this, I suppose, is he. I trust, sir,
+that you will succeed in proving, what I feel sure is the truth,
+that my cousin Arthur is innocent of this crime."
+
+"I fully share your opinion, and I trust, with you, that we may
+prove it," returned Holmes, going back to the mat to knock the
+snow from his shoes. "I believe I have the honour of addressing
+Miss Mary Holder. Might I ask you a question or two?"
+
+"Pray do, sir, if it may help to clear this horrible affair up."
+
+"You heard nothing yourself last night?"
+
+"Nothing, until my uncle here began to speak loudly. I heard
+that, and I came down."
+
+"You shut up the windows and doors the night before. Did you
+fasten all the windows?"
+
+"Yes."
+
+"Were they all fastened this morning?"
+
+"Yes."
+
+"You have a maid who has a sweetheart? I think that you remarked
+to your uncle last night that she had been out to see him?"
+
+"Yes, and she was the girl who waited in the drawing-room, and
+who may have heard uncle's remarks about the coronet."
+
+"I see. You infer that she may have gone out to tell her
+sweetheart, and that the two may have planned the robbery."
+
+"But what is the good of all these vague theories," cried the
+banker impatiently, "when I have told you that I saw Arthur with
+the coronet in his hands?"
+
+"Wait a little, Mr. Holder. We must come back to that. About this
+girl, Miss Holder. You saw her return by the kitchen door, I
+presume?"
+
+"Yes; when I went to see if the door was fastened for the night I
+met her slipping in. I saw the man, too, in the gloom."
+
+"Do you know him?"
+
+"Oh, yes! he is the green-grocer who brings our vegetables round.
+His name is Francis Prosper."
+
+"He stood," said Holmes, "to the left of the door--that is to
+say, farther up the path than is necessary to reach the door?"
+
+"Yes, he did."
+
+"And he is a man with a wooden leg?"
+
+Something like fear sprang up in the young lady's expressive
+black eyes. "Why, you are like a magician," said she. "How do you
+know that?" She smiled, but there was no answering smile in
+Holmes' thin, eager face.
+
+"I should be very glad now to go upstairs," said he. "I shall
+probably wish to go over the outside of the house again. Perhaps
+I had better take a look at the lower windows before I go up."
+
+He walked swiftly round from one to the other, pausing only at
+the large one which looked from the hall onto the stable lane.
+This he opened and made a very careful examination of the sill
+with his powerful magnifying lens. "Now we shall go upstairs,"
+said he at last.
+
+The banker's dressing-room was a plainly furnished little
+chamber, with a grey carpet, a large bureau, and a long mirror.
+Holmes went to the bureau first and looked hard at the lock.
+
+"Which key was used to open it?" he asked.
+
+"That which my son himself indicated--that of the cupboard of the
+lumber-room."
+
+"Have you it here?"
+
+"That is it on the dressing-table."
+
+Sherlock Holmes took it up and opened the bureau.
+
+"It is a noiseless lock," said he. "It is no wonder that it did
+not wake you. This case, I presume, contains the coronet. We must
+have a look at it." He opened the case, and taking out the diadem
+he laid it upon the table. It was a magnificent specimen of the
+jeweller's art, and the thirty-six stones were the finest that I
+have ever seen. At one side of the coronet was a cracked edge,
+where a corner holding three gems had been torn away.
+
+"Now, Mr. Holder," said Holmes, "here is the corner which
+corresponds to that which has been so unfortunately lost. Might I
+beg that you will break it off."
+
+The banker recoiled in horror. "I should not dream of trying,"
+said he.
+
+"Then I will." Holmes suddenly bent his strength upon it, but
+without result. "I feel it give a little," said he; "but, though
+I am exceptionally strong in the fingers, it would take me all my
+time to break it. An ordinary man could not do it. Now, what do
+you think would happen if I did break it, Mr. Holder? There would
+be a noise like a pistol shot. Do you tell me that all this
+happened within a few yards of your bed and that you heard
+nothing of it?"
+
+"I do not know what to think. It is all dark to me."
+
+"But perhaps it may grow lighter as we go. What do you think,
+Miss Holder?"
+
+"I confess that I still share my uncle's perplexity."
+
+"Your son had no shoes or slippers on when you saw him?"
+
+"He had nothing on save only his trousers and shirt."
+
+"Thank you. We have certainly been favoured with extraordinary
+luck during this inquiry, and it will be entirely our own fault
+if we do not succeed in clearing the matter up. With your
+permission, Mr. Holder, I shall now continue my investigations
+outside."
+
+He went alone, at his own request, for he explained that any
+unnecessary footmarks might make his task more difficult. For an
+hour or more he was at work, returning at last with his feet
+heavy with snow and his features as inscrutable as ever.
+
+"I think that I have seen now all that there is to see, Mr.
+Holder," said he; "I can serve you best by returning to my
+rooms."
+
+"But the gems, Mr. Holmes. Where are they?"
+
+"I cannot tell."
+
+The banker wrung his hands. "I shall never see them again!" he
+cried. "And my son? You give me hopes?"
+
+"My opinion is in no way altered."
+
+"Then, for God's sake, what was this dark business which was
+acted in my house last night?"
+
+"If you can call upon me at my Baker Street rooms to-morrow
+morning between nine and ten I shall be happy to do what I can to
+make it clearer. I understand that you give me carte blanche to
+act for you, provided only that I get back the gems, and that you
+place no limit on the sum I may draw."
+
+"I would give my fortune to have them back."
+
+"Very good. I shall look into the matter between this and then.
+Good-bye; it is just possible that I may have to come over here
+again before evening."
+
+It was obvious to me that my companion's mind was now made up
+about the case, although what his conclusions were was more than
+I could even dimly imagine. Several times during our homeward
+journey I endeavoured to sound him upon the point, but he always
+glided away to some other topic, until at last I gave it over in
+despair. It was not yet three when we found ourselves in our
+rooms once more. He hurried to his chamber and was down again in
+a few minutes dressed as a common loafer. With his collar turned
+up, his shiny, seedy coat, his red cravat, and his worn boots, he
+was a perfect sample of the class.
+
+"I think that this should do," said he, glancing into the glass
+above the fireplace. "I only wish that you could come with me,
+Watson, but I fear that it won't do. I may be on the trail in
+this matter, or I may be following a will-o'-the-wisp, but I
+shall soon know which it is. I hope that I may be back in a few
+hours." He cut a slice of beef from the joint upon the sideboard,
+sandwiched it between two rounds of bread, and thrusting this
+rude meal into his pocket he started off upon his expedition.
+
+I had just finished my tea when he returned, evidently in
+excellent spirits, swinging an old elastic-sided boot in his
+hand. He chucked it down into a corner and helped himself to a
+cup of tea.
+
+"I only looked in as I passed," said he. "I am going right on."
+
+"Where to?"
+
+"Oh, to the other side of the West End. It may be some time
+before I get back. Don't wait up for me in case I should be
+late."
+
+"How are you getting on?"
+
+"Oh, so so. Nothing to complain of. I have been out to Streatham
+since I saw you last, but I did not call at the house. It is a
+very sweet little problem, and I would not have missed it for a
+good deal. However, I must not sit gossiping here, but must get
+these disreputable clothes off and return to my highly
+respectable self."
+
+I could see by his manner that he had stronger reasons for
+satisfaction than his words alone would imply. His eyes twinkled,
+and there was even a touch of colour upon his sallow cheeks. He
+hastened upstairs, and a few minutes later I heard the slam of
+the hall door, which told me that he was off once more upon his
+congenial hunt.
+
+I waited until midnight, but there was no sign of his return, so
+I retired to my room. It was no uncommon thing for him to be away
+for days and nights on end when he was hot upon a scent, so that
+his lateness caused me no surprise. I do not know at what hour he
+came in, but when I came down to breakfast in the morning there
+he was with a cup of coffee in one hand and the paper in the
+other, as fresh and trim as possible.
+
+"You will excuse my beginning without you, Watson," said he, "but
+you remember that our client has rather an early appointment this
+morning."
+
+"Why, it is after nine now," I answered. "I should not be
+surprised if that were he. I thought I heard a ring."
+
+It was, indeed, our friend the financier. I was shocked by the
+change which had come over him, for his face which was naturally
+of a broad and massive mould, was now pinched and fallen in,
+while his hair seemed to me at least a shade whiter. He entered
+with a weariness and lethargy which was even more painful than
+his violence of the morning before, and he dropped heavily into
+the armchair which I pushed forward for him.
+
+"I do not know what I have done to be so severely tried," said
+he. "Only two days ago I was a happy and prosperous man, without
+a care in the world. Now I am left to a lonely and dishonoured
+age. One sorrow comes close upon the heels of another. My niece,
+Mary, has deserted me."
+
+"Deserted you?"
+
+"Yes. Her bed this morning had not been slept in, her room was
+empty, and a note for me lay upon the hall table. I had said to
+her last night, in sorrow and not in anger, that if she had
+married my boy all might have been well with him. Perhaps it was
+thoughtless of me to say so. It is to that remark that she refers
+in this note:
+
+"'MY DEAREST UNCLE:--I feel that I have brought trouble upon you,
+and that if I had acted differently this terrible misfortune
+might never have occurred. I cannot, with this thought in my
+mind, ever again be happy under your roof, and I feel that I must
+leave you forever. Do not worry about my future, for that is
+provided for; and, above all, do not search for me, for it will
+be fruitless labour and an ill-service to me. In life or in
+death, I am ever your loving,--MARY.'
+
+"What could she mean by that note, Mr. Holmes? Do you think it
+points to suicide?"
+
+"No, no, nothing of the kind. It is perhaps the best possible
+solution. I trust, Mr. Holder, that you are nearing the end of
+your troubles."
+
+"Ha! You say so! You have heard something, Mr. Holmes; you have
+learned something! Where are the gems?"
+
+"You would not think 1000 pounds apiece an excessive sum for
+them?"
+
+"I would pay ten."
+
+"That would be unnecessary. Three thousand will cover the matter.
+And there is a little reward, I fancy. Have you your check-book?
+Here is a pen. Better make it out for 4000 pounds."
+
+With a dazed face the banker made out the required check. Holmes
+walked over to his desk, took out a little triangular piece of
+gold with three gems in it, and threw it down upon the table.
+
+With a shriek of joy our client clutched it up.
+
+"You have it!" he gasped. "I am saved! I am saved!"
+
+The reaction of joy was as passionate as his grief had been, and
+he hugged his recovered gems to his bosom.
+
+"There is one other thing you owe, Mr. Holder," said Sherlock
+Holmes rather sternly.
+
+"Owe!" He caught up a pen. "Name the sum, and I will pay it."
+
+"No, the debt is not to me. You owe a very humble apology to that
+noble lad, your son, who has carried himself in this matter as I
+should be proud to see my own son do, should I ever chance to
+have one."
+
+"Then it was not Arthur who took them?"
+
+"I told you yesterday, and I repeat to-day, that it was not."
+
+"You are sure of it! Then let us hurry to him at once to let him
+know that the truth is known."
+
+"He knows it already. When I had cleared it all up I had an
+interview with him, and finding that he would not tell me the
+story, I told it to him, on which he had to confess that I was
+right and to add the very few details which were not yet quite
+clear to me. Your news of this morning, however, may open his
+lips."
+
+"For heaven's sake, tell me, then, what is this extraordinary
+mystery!"
+
+"I will do so, and I will show you the steps by which I reached
+it. And let me say to you, first, that which it is hardest for me
+to say and for you to hear: there has been an understanding
+between Sir George Burnwell and your niece Mary. They have now
+fled together."
+
+"My Mary? Impossible!"
+
+"It is unfortunately more than possible; it is certain. Neither
+you nor your son knew the true character of this man when you
+admitted him into your family circle. He is one of the most
+dangerous men in England--a ruined gambler, an absolutely
+desperate villain, a man without heart or conscience. Your niece
+knew nothing of such men. When he breathed his vows to her, as he
+had done to a hundred before her, she flattered herself that she
+alone had touched his heart. The devil knows best what he said,
+but at least she became his tool and was in the habit of seeing
+him nearly every evening."
+
+"I cannot, and I will not, believe it!" cried the banker with an
+ashen face.
+
+"I will tell you, then, what occurred in your house last night.
+Your niece, when you had, as she thought, gone to your room,
+slipped down and talked to her lover through the window which
+leads into the stable lane. His footmarks had pressed right
+through the snow, so long had he stood there. She told him of the
+coronet. His wicked lust for gold kindled at the news, and he
+bent her to his will. I have no doubt that she loved you, but
+there are women in whom the love of a lover extinguishes all
+other loves, and I think that she must have been one. She had
+hardly listened to his instructions when she saw you coming
+downstairs, on which she closed the window rapidly and told you
+about one of the servants' escapade with her wooden-legged lover,
+which was all perfectly true.
+
+"Your boy, Arthur, went to bed after his interview with you but
+he slept badly on account of his uneasiness about his club debts.
+In the middle of the night he heard a soft tread pass his door,
+so he rose and, looking out, was surprised to see his cousin
+walking very stealthily along the passage until she disappeared
+into your dressing-room. Petrified with astonishment, the lad
+slipped on some clothes and waited there in the dark to see what
+would come of this strange affair. Presently she emerged from the
+room again, and in the light of the passage-lamp your son saw
+that she carried the precious coronet in her hands. She passed
+down the stairs, and he, thrilling with horror, ran along and
+slipped behind the curtain near your door, whence he could see
+what passed in the hall beneath. He saw her stealthily open the
+window, hand out the coronet to someone in the gloom, and then
+closing it once more hurry back to her room, passing quite close
+to where he stood hid behind the curtain.
+
+"As long as she was on the scene he could not take any action
+without a horrible exposure of the woman whom he loved. But the
+instant that she was gone he realised how crushing a misfortune
+this would be for you, and how all-important it was to set it
+right. He rushed down, just as he was, in his bare feet, opened
+the window, sprang out into the snow, and ran down the lane,
+where he could see a dark figure in the moonlight. Sir George
+Burnwell tried to get away, but Arthur caught him, and there was
+a struggle between them, your lad tugging at one side of the
+coronet, and his opponent at the other. In the scuffle, your son
+struck Sir George and cut him over the eye. Then something
+suddenly snapped, and your son, finding that he had the coronet
+in his hands, rushed back, closed the window, ascended to your
+room, and had just observed that the coronet had been twisted in
+the struggle and was endeavouring to straighten it when you
+appeared upon the scene."
+
+"Is it possible?" gasped the banker.
+
+"You then roused his anger by calling him names at a moment when
+he felt that he had deserved your warmest thanks. He could not
+explain the true state of affairs without betraying one who
+certainly deserved little enough consideration at his hands. He
+took the more chivalrous view, however, and preserved her
+secret."
+
+"And that was why she shrieked and fainted when she saw the
+coronet," cried Mr. Holder. "Oh, my God! what a blind fool I have
+been! And his asking to be allowed to go out for five minutes!
+The dear fellow wanted to see if the missing piece were at the
+scene of the struggle. How cruelly I have misjudged him!"
+
+"When I arrived at the house," continued Holmes, "I at once went
+very carefully round it to observe if there were any traces in
+the snow which might help me. I knew that none had fallen since
+the evening before, and also that there had been a strong frost
+to preserve impressions. I passed along the tradesmen's path, but
+found it all trampled down and indistinguishable. Just beyond it,
+however, at the far side of the kitchen door, a woman had stood
+and talked with a man, whose round impressions on one side showed
+that he had a wooden leg. I could even tell that they had been
+disturbed, for the woman had run back swiftly to the door, as was
+shown by the deep toe and light heel marks, while Wooden-leg had
+waited a little, and then had gone away. I thought at the time
+that this might be the maid and her sweetheart, of whom you had
+already spoken to me, and inquiry showed it was so. I passed
+round the garden without seeing anything more than random tracks,
+which I took to be the police; but when I got into the stable
+lane a very long and complex story was written in the snow in
+front of me.
+
+"There was a double line of tracks of a booted man, and a second
+double line which I saw with delight belonged to a man with naked
+feet. I was at once convinced from what you had told me that the
+latter was your son. The first had walked both ways, but the
+other had run swiftly, and as his tread was marked in places over
+the depression of the boot, it was obvious that he had passed
+after the other. I followed them up and found they led to the
+hall window, where Boots had worn all the snow away while
+waiting. Then I walked to the other end, which was a hundred
+yards or more down the lane. I saw where Boots had faced round,
+where the snow was cut up as though there had been a struggle,
+and, finally, where a few drops of blood had fallen, to show me
+that I was not mistaken. Boots had then run down the lane, and
+another little smudge of blood showed that it was he who had been
+hurt. When he came to the highroad at the other end, I found that
+the pavement had been cleared, so there was an end to that clue.
+
+"On entering the house, however, I examined, as you remember, the
+sill and framework of the hall window with my lens, and I could
+at once see that someone had passed out. I could distinguish the
+outline of an instep where the wet foot had been placed in coming
+in. I was then beginning to be able to form an opinion as to what
+had occurred. A man had waited outside the window; someone had
+brought the gems; the deed had been overseen by your son; he had
+pursued the thief; had struggled with him; they had each tugged
+at the coronet, their united strength causing injuries which
+neither alone could have effected. He had returned with the
+prize, but had left a fragment in the grasp of his opponent. So
+far I was clear. The question now was, who was the man and who
+was it brought him the coronet?
+
+"It is an old maxim of mine that when you have excluded the
+impossible, whatever remains, however improbable, must be the
+truth. Now, I knew that it was not you who had brought it down,
+so there only remained your niece and the maids. But if it were
+the maids, why should your son allow himself to be accused in
+their place? There could be no possible reason. As he loved his
+cousin, however, there was an excellent explanation why he should
+retain her secret--the more so as the secret was a disgraceful
+one. When I remembered that you had seen her at that window, and
+how she had fainted on seeing the coronet again, my conjecture
+became a certainty.
+
+"And who could it be who was her confederate? A lover evidently,
+for who else could outweigh the love and gratitude which she must
+feel to you? I knew that you went out little, and that your
+circle of friends was a very limited one. But among them was Sir
+George Burnwell. I had heard of him before as being a man of evil
+reputation among women. It must have been he who wore those boots
+and retained the missing gems. Even though he knew that Arthur
+had discovered him, he might still flatter himself that he was
+safe, for the lad could not say a word without compromising his
+own family.
+
+"Well, your own good sense will suggest what measures I took
+next. I went in the shape of a loafer to Sir George's house,
+managed to pick up an acquaintance with his valet, learned that
+his master had cut his head the night before, and, finally, at
+the expense of six shillings, made all sure by buying a pair of
+his cast-off shoes. With these I journeyed down to Streatham and
+saw that they exactly fitted the tracks."
+
+"I saw an ill-dressed vagabond in the lane yesterday evening,"
+said Mr. Holder.
+
+"Precisely. It was I. I found that I had my man, so I came home
+and changed my clothes. It was a delicate part which I had to
+play then, for I saw that a prosecution must be avoided to avert
+scandal, and I knew that so astute a villain would see that our
+hands were tied in the matter. I went and saw him. At first, of
+course, he denied everything. But when I gave him every
+particular that had occurred, he tried to bluster and took down a
+life-preserver from the wall. I knew my man, however, and I
+clapped a pistol to his head before he could strike. Then he
+became a little more reasonable. I told him that we would give
+him a price for the stones he held--1000 pounds apiece. That
+brought out the first signs of grief that he had shown. 'Why,
+dash it all!' said he, 'I've let them go at six hundred for the
+three!' I soon managed to get the address of the receiver who had
+them, on promising him that there would be no prosecution. Off I
+set to him, and after much chaffering I got our stones at 1000
+pounds apiece. Then I looked in upon your son, told him that all
+was right, and eventually got to my bed about two o'clock, after
+what I may call a really hard day's work."
+
+"A day which has saved England from a great public scandal," said
+the banker, rising. "Sir, I cannot find words to thank you, but
+you shall not find me ungrateful for what you have done. Your
+skill has indeed exceeded all that I have heard of it. And now I
+must fly to my dear boy to apologise to him for the wrong which I
+have done him. As to what you tell me of poor Mary, it goes to my
+very heart. Not even your skill can inform me where she is now."
+
+"I think that we may safely say," returned Holmes, "that she is
+wherever Sir George Burnwell is. It is equally certain, too, that
+whatever her sins are, they will soon receive a more than
+sufficient punishment."
+
+
+
+XII. THE ADVENTURE OF THE COPPER BEECHES
+
+"To the man who loves art for its own sake," remarked Sherlock
+Holmes, tossing aside the advertisement sheet of the Daily
+Telegraph, "it is frequently in its least important and lowliest
+manifestations that the keenest pleasure is to be derived. It is
+pleasant to me to observe, Watson, that you have so far grasped
+this truth that in these little records of our cases which you
+have been good enough to draw up, and, I am bound to say,
+occasionally to embellish, you have given prominence not so much
+to the many causes célèbres and sensational trials in which I
+have figured but rather to those incidents which may have been
+trivial in themselves, but which have given room for those
+faculties of deduction and of logical synthesis which I have made
+my special province."
+
+"And yet," said I, smiling, "I cannot quite hold myself absolved
+from the charge of sensationalism which has been urged against my
+records."
+
+"You have erred, perhaps," he observed, taking up a glowing
+cinder with the tongs and lighting with it the long cherry-wood
+pipe which was wont to replace his clay when he was in a
+disputatious rather than a meditative mood--"you have erred
+perhaps in attempting to put colour and life into each of your
+statements instead of confining yourself to the task of placing
+upon record that severe reasoning from cause to effect which is
+really the only notable feature about the thing."
+
+"It seems to me that I have done you full justice in the matter,"
+I remarked with some coldness, for I was repelled by the egotism
+which I had more than once observed to be a strong factor in my
+friend's singular character.
+
+"No, it is not selfishness or conceit," said he, answering, as
+was his wont, my thoughts rather than my words. "If I claim full
+justice for my art, it is because it is an impersonal thing--a
+thing beyond myself. Crime is common. Logic is rare. Therefore it
+is upon the logic rather than upon the crime that you should
+dwell. You have degraded what should have been a course of
+lectures into a series of tales."
+
+It was a cold morning of the early spring, and we sat after
+breakfast on either side of a cheery fire in the old room at
+Baker Street. A thick fog rolled down between the lines of
+dun-coloured houses, and the opposing windows loomed like dark,
+shapeless blurs through the heavy yellow wreaths. Our gas was lit
+and shone on the white cloth and glimmer of china and metal, for
+the table had not been cleared yet. Sherlock Holmes had been
+silent all the morning, dipping continuously into the
+advertisement columns of a succession of papers until at last,
+having apparently given up his search, he had emerged in no very
+sweet temper to lecture me upon my literary shortcomings.
+
+"At the same time," he remarked after a pause, during which he
+had sat puffing at his long pipe and gazing down into the fire,
+"you can hardly be open to a charge of sensationalism, for out of
+these cases which you have been so kind as to interest yourself
+in, a fair proportion do not treat of crime, in its legal sense,
+at all. The small matter in which I endeavoured to help the King
+of Bohemia, the singular experience of Miss Mary Sutherland, the
+problem connected with the man with the twisted lip, and the
+incident of the noble bachelor, were all matters which are
+outside the pale of the law. But in avoiding the sensational, I
+fear that you may have bordered on the trivial."
+
+"The end may have been so," I answered, "but the methods I hold
+to have been novel and of interest."
+
+"Pshaw, my dear fellow, what do the public, the great unobservant
+public, who could hardly tell a weaver by his tooth or a
+compositor by his left thumb, care about the finer shades of
+analysis and deduction! But, indeed, if you are trivial, I cannot
+blame you, for the days of the great cases are past. Man, or at
+least criminal man, has lost all enterprise and originality. As
+to my own little practice, it seems to be degenerating into an
+agency for recovering lost lead pencils and giving advice to
+young ladies from boarding-schools. I think that I have touched
+bottom at last, however. This note I had this morning marks my
+zero-point, I fancy. Read it!" He tossed a crumpled letter across
+to me.
+
+It was dated from Montague Place upon the preceding evening, and
+ran thus:
+
+"DEAR MR. HOLMES:--I am very anxious to consult you as to whether
+I should or should not accept a situation which has been offered
+to me as governess. I shall call at half-past ten to-morrow if I
+do not inconvenience you. Yours faithfully,
+                                               "VIOLET HUNTER."
+
+"Do you know the young lady?" I asked.
+
+"Not I."
+
+"It is half-past ten now."
+
+"Yes, and I have no doubt that is her ring."
+
+"It may turn out to be of more interest than you think. You
+remember that the affair of the blue carbuncle, which appeared to
+be a mere whim at first, developed into a serious investigation.
+It may be so in this case, also."
+
+"Well, let us hope so. But our doubts will very soon be solved,
+for here, unless I am much mistaken, is the person in question."
+
+As he spoke the door opened and a young lady entered the room.
+She was plainly but neatly dressed, with a bright, quick face,
+freckled like a plover's egg, and with the brisk manner of a
+woman who has had her own way to make in the world.
+
+"You will excuse my troubling you, I am sure," said she, as my
+companion rose to greet her, "but I have had a very strange
+experience, and as I have no parents or relations of any sort
+from whom I could ask advice, I thought that perhaps you would be
+kind enough to tell me what I should do."
+
+"Pray take a seat, Miss Hunter. I shall be happy to do anything
+that I can to serve you."
+
+I could see that Holmes was favourably impressed by the manner
+and speech of his new client. He looked her over in his searching
+fashion, and then composed himself, with his lids drooping and
+his finger-tips together, to listen to her story.
+
+"I have been a governess for five years," said she, "in the
+family of Colonel Spence Munro, but two months ago the colonel
+received an appointment at Halifax, in Nova Scotia, and took his
+children over to America with him, so that I found myself without
+a situation. I advertised, and I answered advertisements, but
+without success. At last the little money which I had saved began
+to run short, and I was at my wit's end as to what I should do.
+
+"There is a well-known agency for governesses in the West End
+called Westaway's, and there I used to call about once a week in
+order to see whether anything had turned up which might suit me.
+Westaway was the name of the founder of the business, but it is
+really managed by Miss Stoper. She sits in her own little office,
+and the ladies who are seeking employment wait in an anteroom,
+and are then shown in one by one, when she consults her ledgers
+and sees whether she has anything which would suit them.
+
+"Well, when I called last week I was shown into the little office
+as usual, but I found that Miss Stoper was not alone. A
+prodigiously stout man with a very smiling face and a great heavy
+chin which rolled down in fold upon fold over his throat sat at
+her elbow with a pair of glasses on his nose, looking very
+earnestly at the ladies who entered. As I came in he gave quite a
+jump in his chair and turned quickly to Miss Stoper.
+
+"'That will do,' said he; 'I could not ask for anything better.
+Capital! capital!' He seemed quite enthusiastic and rubbed his
+hands together in the most genial fashion. He was such a
+comfortable-looking man that it was quite a pleasure to look at
+him.
+
+"'You are looking for a situation, miss?' he asked.
+
+"'Yes, sir.'
+
+"'As governess?'
+
+"'Yes, sir.'
+
+"'And what salary do you ask?'
+
+"'I had 4 pounds a month in my last place with Colonel Spence
+Munro.'
+
+"'Oh, tut, tut! sweating--rank sweating!' he cried, throwing his
+fat hands out into the air like a man who is in a boiling
+passion. 'How could anyone offer so pitiful a sum to a lady with
+such attractions and accomplishments?'
+
+"'My accomplishments, sir, may be less than you imagine,' said I.
+'A little French, a little German, music, and drawing--'
+
+"'Tut, tut!' he cried. 'This is all quite beside the question.
+The point is, have you or have you not the bearing and deportment
+of a lady? There it is in a nutshell. If you have not, you are
+not fitted for the rearing of a child who may some day play a
+considerable part in the history of the country. But if you have
+why, then, how could any gentleman ask you to condescend to
+accept anything under the three figures? Your salary with me,
+madam, would commence at 100 pounds a year.'
+
+"You may imagine, Mr. Holmes, that to me, destitute as I was,
+such an offer seemed almost too good to be true. The gentleman,
+however, seeing perhaps the look of incredulity upon my face,
+opened a pocket-book and took out a note.
+
+"'It is also my custom,' said he, smiling in the most pleasant
+fashion until his eyes were just two little shining slits amid
+the white creases of his face, 'to advance to my young ladies
+half their salary beforehand, so that they may meet any little
+expenses of their journey and their wardrobe.'
+
+"It seemed to me that I had never met so fascinating and so
+thoughtful a man. As I was already in debt to my tradesmen, the
+advance was a great convenience, and yet there was something
+unnatural about the whole transaction which made me wish to know
+a little more before I quite committed myself.
+
+"'May I ask where you live, sir?' said I.
+
+"'Hampshire. Charming rural place. The Copper Beeches, five miles
+on the far side of Winchester. It is the most lovely country, my
+dear young lady, and the dearest old country-house.'
+
+"'And my duties, sir? I should be glad to know what they would
+be.'
+
+"'One child--one dear little romper just six years old. Oh, if
+you could see him killing cockroaches with a slipper! Smack!
+smack! smack! Three gone before you could wink!' He leaned back
+in his chair and laughed his eyes into his head again.
+
+"I was a little startled at the nature of the child's amusement,
+but the father's laughter made me think that perhaps he was
+joking.
+
+"'My sole duties, then,' I asked, 'are to take charge of a single
+child?'
+
+"'No, no, not the sole, not the sole, my dear young lady,' he
+cried. 'Your duty would be, as I am sure your good sense would
+suggest, to obey any little commands my wife might give, provided
+always that they were such commands as a lady might with
+propriety obey. You see no difficulty, heh?'
+
+"'I should be happy to make myself useful.'
+
+"'Quite so. In dress now, for example. We are faddy people, you
+know--faddy but kind-hearted. If you were asked to wear any dress
+which we might give you, you would not object to our little whim.
+Heh?'
+
+"'No,' said I, considerably astonished at his words.
+
+"'Or to sit here, or sit there, that would not be offensive to
+you?'
+
+"'Oh, no.'
+
+"'Or to cut your hair quite short before you come to us?'
+
+"I could hardly believe my ears. As you may observe, Mr. Holmes,
+my hair is somewhat luxuriant, and of a rather peculiar tint of
+chestnut. It has been considered artistic. I could not dream of
+sacrificing it in this offhand fashion.
+
+"'I am afraid that that is quite impossible,' said I. He had been
+watching me eagerly out of his small eyes, and I could see a
+shadow pass over his face as I spoke.
+
+"'I am afraid that it is quite essential,' said he. 'It is a
+little fancy of my wife's, and ladies' fancies, you know, madam,
+ladies' fancies must be consulted. And so you won't cut your
+hair?'
+
+"'No, sir, I really could not,' I answered firmly.
+
+"'Ah, very well; then that quite settles the matter. It is a
+pity, because in other respects you would really have done very
+nicely. In that case, Miss Stoper, I had best inspect a few more
+of your young ladies.'
+
+"The manageress had sat all this while busy with her papers
+without a word to either of us, but she glanced at me now with so
+much annoyance upon her face that I could not help suspecting
+that she had lost a handsome commission through my refusal.
+
+"'Do you desire your name to be kept upon the books?' she asked.
+
+"'If you please, Miss Stoper.'
+
+"'Well, really, it seems rather useless, since you refuse the
+most excellent offers in this fashion,' said she sharply. 'You
+can hardly expect us to exert ourselves to find another such
+opening for you. Good-day to you, Miss Hunter.' She struck a gong
+upon the table, and I was shown out by the page.
+
+"Well, Mr. Holmes, when I got back to my lodgings and found
+little enough in the cupboard, and two or three bills upon the
+table, I began to ask myself whether I had not done a very
+foolish thing. After all, if these people had strange fads and
+expected obedience on the most extraordinary matters, they were
+at least ready to pay for their eccentricity. Very few
+governesses in England are getting 100 pounds a year. Besides,
+what use was my hair to me? Many people are improved by wearing
+it short and perhaps I should be among the number. Next day I was
+inclined to think that I had made a mistake, and by the day after
+I was sure of it. I had almost overcome my pride so far as to go
+back to the agency and inquire whether the place was still open
+when I received this letter from the gentleman himself. I have it
+here and I will read it to you:
+
+                       "'The Copper Beeches, near Winchester.
+"'DEAR MISS HUNTER:--Miss Stoper has very kindly given me your
+address, and I write from here to ask you whether you have
+reconsidered your decision. My wife is very anxious that you
+should come, for she has been much attracted by my description of
+you. We are willing to give 30 pounds a quarter, or 120 pounds a
+year, so as to recompense you for any little inconvenience which
+our fads may cause you. They are not very exacting, after all. My
+wife is fond of a particular shade of electric blue and would
+like you to wear such a dress indoors in the morning. You need
+not, however, go to the expense of purchasing one, as we have one
+belonging to my dear daughter Alice (now in Philadelphia), which
+would, I should think, fit you very well. Then, as to sitting
+here or there, or amusing yourself in any manner indicated, that
+need cause you no inconvenience. As regards your hair, it is no
+doubt a pity, especially as I could not help remarking its beauty
+during our short interview, but I am afraid that I must remain
+firm upon this point, and I only hope that the increased salary
+may recompense you for the loss. Your duties, as far as the child
+is concerned, are very light. Now do try to come, and I shall
+meet you with the dog-cart at Winchester. Let me know your train.
+Yours faithfully, JEPHRO RUCASTLE.'
+
+"That is the letter which I have just received, Mr. Holmes, and
+my mind is made up that I will accept it. I thought, however,
+that before taking the final step I should like to submit the
+whole matter to your consideration."
+
+"Well, Miss Hunter, if your mind is made up, that settles the
+question," said Holmes, smiling.
+
+"But you would not advise me to refuse?"
+
+"I confess that it is not the situation which I should like to
+see a sister of mine apply for."
+
+"What is the meaning of it all, Mr. Holmes?"
+
+"Ah, I have no data. I cannot tell. Perhaps you have yourself
+formed some opinion?"
+
+"Well, there seems to me to be only one possible solution. Mr.
+Rucastle seemed to be a very kind, good-natured man. Is it not
+possible that his wife is a lunatic, that he desires to keep the
+matter quiet for fear she should be taken to an asylum, and that
+he humours her fancies in every way in order to prevent an
+outbreak?"
+
+"That is a possible solution--in fact, as matters stand, it is
+the most probable one. But in any case it does not seem to be a
+nice household for a young lady."
+
+"But the money, Mr. Holmes, the money!"
+
+"Well, yes, of course the pay is good--too good. That is what
+makes me uneasy. Why should they give you 120 pounds a year, when
+they could have their pick for 40 pounds? There must be some
+strong reason behind."
+
+"I thought that if I told you the circumstances you would
+understand afterwards if I wanted your help. I should feel so
+much stronger if I felt that you were at the back of me."
+
+"Oh, you may carry that feeling away with you. I assure you that
+your little problem promises to be the most interesting which has
+come my way for some months. There is something distinctly novel
+about some of the features. If you should find yourself in doubt
+or in danger--"
+
+"Danger! What danger do you foresee?"
+
+Holmes shook his head gravely. "It would cease to be a danger if
+we could define it," said he. "But at any time, day or night, a
+telegram would bring me down to your help."
+
+"That is enough." She rose briskly from her chair with the
+anxiety all swept from her face. "I shall go down to Hampshire
+quite easy in my mind now. I shall write to Mr. Rucastle at once,
+sacrifice my poor hair to-night, and start for Winchester
+to-morrow." With a few grateful words to Holmes she bade us both
+good-night and bustled off upon her way.
+
+"At least," said I as we heard her quick, firm steps descending
+the stairs, "she seems to be a young lady who is very well able
+to take care of herself."
+
+"And she would need to be," said Holmes gravely. "I am much
+mistaken if we do not hear from her before many days are past."
+
+It was not very long before my friend's prediction was fulfilled.
+A fortnight went by, during which I frequently found my thoughts
+turning in her direction and wondering what strange side-alley of
+human experience this lonely woman had strayed into. The unusual
+salary, the curious conditions, the light duties, all pointed to
+something abnormal, though whether a fad or a plot, or whether
+the man were a philanthropist or a villain, it was quite beyond
+my powers to determine. As to Holmes, I observed that he sat
+frequently for half an hour on end, with knitted brows and an
+abstracted air, but he swept the matter away with a wave of his
+hand when I mentioned it. "Data! data! data!" he cried
+impatiently. "I can't make bricks without clay." And yet he would
+always wind up by muttering that no sister of his should ever
+have accepted such a situation.
+
+The telegram which we eventually received came late one night
+just as I was thinking of turning in and Holmes was settling down
+to one of those all-night chemical researches which he frequently
+indulged in, when I would leave him stooping over a retort and a
+test-tube at night and find him in the same position when I came
+down to breakfast in the morning. He opened the yellow envelope,
+and then, glancing at the message, threw it across to me.
+
+"Just look up the trains in Bradshaw," said he, and turned back
+to his chemical studies.
+
+The summons was a brief and urgent one.
+
+"Please be at the Black Swan Hotel at Winchester at midday
+to-morrow," it said. "Do come! I am at my wit's end.  HUNTER."
+
+"Will you come with me?" asked Holmes, glancing up.
+
+"I should wish to."
+
+"Just look it up, then."
+
+"There is a train at half-past nine," said I, glancing over my
+Bradshaw. "It is due at Winchester at 11:30."
+
+"That will do very nicely. Then perhaps I had better postpone my
+analysis of the acetones, as we may need to be at our best in the
+morning."
+
+By eleven o'clock the next day we were well upon our way to the
+old English capital. Holmes had been buried in the morning papers
+all the way down, but after we had passed the Hampshire border he
+threw them down and began to admire the scenery. It was an ideal
+spring day, a light blue sky, flecked with little fleecy white
+clouds drifting across from west to east. The sun was shining
+very brightly, and yet there was an exhilarating nip in the air,
+which set an edge to a man's energy. All over the countryside,
+away to the rolling hills around Aldershot, the little red and
+grey roofs of the farm-steadings peeped out from amid the light
+green of the new foliage.
+
+"Are they not fresh and beautiful?" I cried with all the
+enthusiasm of a man fresh from the fogs of Baker Street.
+
+But Holmes shook his head gravely.
+
+"Do you know, Watson," said he, "that it is one of the curses of
+a mind with a turn like mine that I must look at everything with
+reference to my own special subject. You look at these scattered
+houses, and you are impressed by their beauty. I look at them,
+and the only thought which comes to me is a feeling of their
+isolation and of the impunity with which crime may be committed
+there."
+
+"Good heavens!" I cried. "Who would associate crime with these
+dear old homesteads?"
+
+"They always fill me with a certain horror. It is my belief,
+Watson, founded upon my experience, that the lowest and vilest
+alleys in London do not present a more dreadful record of sin
+than does the smiling and beautiful countryside."
+
+"You horrify me!"
+
+"But the reason is very obvious. The pressure of public opinion
+can do in the town what the law cannot accomplish. There is no
+lane so vile that the scream of a tortured child, or the thud of
+a drunkard's blow, does not beget sympathy and indignation among
+the neighbours, and then the whole machinery of justice is ever
+so close that a word of complaint can set it going, and there is
+but a step between the crime and the dock. But look at these
+lonely houses, each in its own fields, filled for the most part
+with poor ignorant folk who know little of the law. Think of the
+deeds of hellish cruelty, the hidden wickedness which may go on,
+year in, year out, in such places, and none the wiser. Had this
+lady who appeals to us for help gone to live in Winchester, I
+should never have had a fear for her. It is the five miles of
+country which makes the danger. Still, it is clear that she is
+not personally threatened."
+
+"No. If she can come to Winchester to meet us she can get away."
+
+"Quite so. She has her freedom."
+
+"What CAN be the matter, then? Can you suggest no explanation?"
+
+"I have devised seven separate explanations, each of which would
+cover the facts as far as we know them. But which of these is
+correct can only be determined by the fresh information which we
+shall no doubt find waiting for us. Well, there is the tower of
+the cathedral, and we shall soon learn all that Miss Hunter has
+to tell."
+
+The Black Swan is an inn of repute in the High Street, at no
+distance from the station, and there we found the young lady
+waiting for us. She had engaged a sitting-room, and our lunch
+awaited us upon the table.
+
+"I am so delighted that you have come," she said earnestly. "It
+is so very kind of you both; but indeed I do not know what I
+should do. Your advice will be altogether invaluable to me."
+
+"Pray tell us what has happened to you."
+
+"I will do so, and I must be quick, for I have promised Mr.
+Rucastle to be back before three. I got his leave to come into
+town this morning, though he little knew for what purpose."
+
+"Let us have everything in its due order." Holmes thrust his long
+thin legs out towards the fire and composed himself to listen.
+
+"In the first place, I may say that I have met, on the whole,
+with no actual ill-treatment from Mr. and Mrs. Rucastle. It is
+only fair to them to say that. But I cannot understand them, and
+I am not easy in my mind about them."
+
+"What can you not understand?"
+
+"Their reasons for their conduct. But you shall have it all just
+as it occurred. When I came down, Mr. Rucastle met me here and
+drove me in his dog-cart to the Copper Beeches. It is, as he
+said, beautifully situated, but it is not beautiful in itself,
+for it is a large square block of a house, whitewashed, but all
+stained and streaked with damp and bad weather. There are grounds
+round it, woods on three sides, and on the fourth a field which
+slopes down to the Southampton highroad, which curves past about
+a hundred yards from the front door. This ground in front belongs
+to the house, but the woods all round are part of Lord
+Southerton's preserves. A clump of copper beeches immediately in
+front of the hall door has given its name to the place.
+
+"I was driven over by my employer, who was as amiable as ever,
+and was introduced by him that evening to his wife and the child.
+There was no truth, Mr. Holmes, in the conjecture which seemed to
+us to be probable in your rooms at Baker Street. Mrs. Rucastle is
+not mad. I found her to be a silent, pale-faced woman, much
+younger than her husband, not more than thirty, I should think,
+while he can hardly be less than forty-five. From their
+conversation I have gathered that they have been married about
+seven years, that he was a widower, and that his only child by
+the first wife was the daughter who has gone to Philadelphia. Mr.
+Rucastle told me in private that the reason why she had left them
+was that she had an unreasoning aversion to her stepmother. As
+the daughter could not have been less than twenty, I can quite
+imagine that her position must have been uncomfortable with her
+father's young wife.
+
+"Mrs. Rucastle seemed to me to be colourless in mind as well as
+in feature. She impressed me neither favourably nor the reverse.
+She was a nonentity. It was easy to see that she was passionately
+devoted both to her husband and to her little son. Her light grey
+eyes wandered continually from one to the other, noting every
+little want and forestalling it if possible. He was kind to her
+also in his bluff, boisterous fashion, and on the whole they
+seemed to be a happy couple. And yet she had some secret sorrow,
+this woman. She would often be lost in deep thought, with the
+saddest look upon her face. More than once I have surprised her
+in tears. I have thought sometimes that it was the disposition of
+her child which weighed upon her mind, for I have never met so
+utterly spoiled and so ill-natured a little creature. He is small
+for his age, with a head which is quite disproportionately large.
+His whole life appears to be spent in an alternation between
+savage fits of passion and gloomy intervals of sulking. Giving
+pain to any creature weaker than himself seems to be his one idea
+of amusement, and he shows quite remarkable talent in planning
+the capture of mice, little birds, and insects. But I would
+rather not talk about the creature, Mr. Holmes, and, indeed, he
+has little to do with my story."
+
+"I am glad of all details," remarked my friend, "whether they
+seem to you to be relevant or not."
+
+"I shall try not to miss anything of importance. The one
+unpleasant thing about the house, which struck me at once, was
+the appearance and conduct of the servants. There are only two, a
+man and his wife. Toller, for that is his name, is a rough,
+uncouth man, with grizzled hair and whiskers, and a perpetual
+smell of drink. Twice since I have been with them he has been
+quite drunk, and yet Mr. Rucastle seemed to take no notice of it.
+His wife is a very tall and strong woman with a sour face, as
+silent as Mrs. Rucastle and much less amiable. They are a most
+unpleasant couple, but fortunately I spend most of my time in the
+nursery and my own room, which are next to each other in one
+corner of the building.
+
+"For two days after my arrival at the Copper Beeches my life was
+very quiet; on the third, Mrs. Rucastle came down just after
+breakfast and whispered something to her husband.
+
+"'Oh, yes,' said he, turning to me, 'we are very much obliged to
+you, Miss Hunter, for falling in with our whims so far as to cut
+your hair. I assure you that it has not detracted in the tiniest
+iota from your appearance. We shall now see how the electric-blue
+dress will become you. You will find it laid out upon the bed in
+your room, and if you would be so good as to put it on we should
+both be extremely obliged.'
+
+"The dress which I found waiting for me was of a peculiar shade
+of blue. It was of excellent material, a sort of beige, but it
+bore unmistakable signs of having been worn before. It could not
+have been a better fit if I had been measured for it. Both Mr.
+and Mrs. Rucastle expressed a delight at the look of it, which
+seemed quite exaggerated in its vehemence. They were waiting for
+me in the drawing-room, which is a very large room, stretching
+along the entire front of the house, with three long windows
+reaching down to the floor. A chair had been placed close to the
+central window, with its back turned towards it. In this I was
+asked to sit, and then Mr. Rucastle, walking up and down on the
+other side of the room, began to tell me a series of the funniest
+stories that I have ever listened to. You cannot imagine how
+comical he was, and I laughed until I was quite weary. Mrs.
+Rucastle, however, who has evidently no sense of humour, never so
+much as smiled, but sat with her hands in her lap, and a sad,
+anxious look upon her face. After an hour or so, Mr. Rucastle
+suddenly remarked that it was time to commence the duties of the
+day, and that I might change my dress and go to little Edward in
+the nursery.
+
+"Two days later this same performance was gone through under
+exactly similar circumstances. Again I changed my dress, again I
+sat in the window, and again I laughed very heartily at the funny
+stories of which my employer had an immense répertoire, and which
+he told inimitably. Then he handed me a yellow-backed novel, and
+moving my chair a little sideways, that my own shadow might not
+fall upon the page, he begged me to read aloud to him. I read for
+about ten minutes, beginning in the heart of a chapter, and then
+suddenly, in the middle of a sentence, he ordered me to cease and
+to change my dress.
+
+"You can easily imagine, Mr. Holmes, how curious I became as to
+what the meaning of this extraordinary performance could possibly
+be. They were always very careful, I observed, to turn my face
+away from the window, so that I became consumed with the desire
+to see what was going on behind my back. At first it seemed to be
+impossible, but I soon devised a means. My hand-mirror had been
+broken, so a happy thought seized me, and I concealed a piece of
+the glass in my handkerchief. On the next occasion, in the midst
+of my laughter, I put my handkerchief up to my eyes, and was able
+with a little management to see all that there was behind me. I
+confess that I was disappointed. There was nothing. At least that
+was my first impression. At the second glance, however, I
+perceived that there was a man standing in the Southampton Road,
+a small bearded man in a grey suit, who seemed to be looking in
+my direction. The road is an important highway, and there are
+usually people there. This man, however, was leaning against the
+railings which bordered our field and was looking earnestly up. I
+lowered my handkerchief and glanced at Mrs. Rucastle to find her
+eyes fixed upon me with a most searching gaze. She said nothing,
+but I am convinced that she had divined that I had a mirror in my
+hand and had seen what was behind me. She rose at once.
+
+"'Jephro,' said she, 'there is an impertinent fellow upon the
+road there who stares up at Miss Hunter.'
+
+"'No friend of yours, Miss Hunter?' he asked.
+
+"'No, I know no one in these parts.'
+
+"'Dear me! How very impertinent! Kindly turn round and motion to
+him to go away.'
+
+"'Surely it would be better to take no notice.'
+
+"'No, no, we should have him loitering here always. Kindly turn
+round and wave him away like that.'
+
+"I did as I was told, and at the same instant Mrs. Rucastle drew
+down the blind. That was a week ago, and from that time I have
+not sat again in the window, nor have I worn the blue dress, nor
+seen the man in the road."
+
+"Pray continue," said Holmes. "Your narrative promises to be a
+most interesting one."
+
+"You will find it rather disconnected, I fear, and there may
+prove to be little relation between the different incidents of
+which I speak. On the very first day that I was at the Copper
+Beeches, Mr. Rucastle took me to a small outhouse which stands
+near the kitchen door. As we approached it I heard the sharp
+rattling of a chain, and the sound as of a large animal moving
+about.
+
+"'Look in here!' said Mr. Rucastle, showing me a slit between two
+planks. 'Is he not a beauty?'
+
+"I looked through and was conscious of two glowing eyes, and of a
+vague figure huddled up in the darkness.
+
+"'Don't be frightened,' said my employer, laughing at the start
+which I had given. 'It's only Carlo, my mastiff. I call him mine,
+but really old Toller, my groom, is the only man who can do
+anything with him. We feed him once a day, and not too much then,
+so that he is always as keen as mustard. Toller lets him loose
+every night, and God help the trespasser whom he lays his fangs
+upon. For goodness' sake don't you ever on any pretext set your
+foot over the threshold at night, for it's as much as your life
+is worth.'
+
+"The warning was no idle one, for two nights later I happened to
+look out of my bedroom window about two o'clock in the morning.
+It was a beautiful moonlight night, and the lawn in front of the
+house was silvered over and almost as bright as day. I was
+standing, rapt in the peaceful beauty of the scene, when I was
+aware that something was moving under the shadow of the copper
+beeches. As it emerged into the moonshine I saw what it was. It
+was a giant dog, as large as a calf, tawny tinted, with hanging
+jowl, black muzzle, and huge projecting bones. It walked slowly
+across the lawn and vanished into the shadow upon the other side.
+That dreadful sentinel sent a chill to my heart which I do not
+think that any burglar could have done.
+
+"And now I have a very strange experience to tell you. I had, as
+you know, cut off my hair in London, and I had placed it in a
+great coil at the bottom of my trunk. One evening, after the
+child was in bed, I began to amuse myself by examining the
+furniture of my room and by rearranging my own little things.
+There was an old chest of drawers in the room, the two upper ones
+empty and open, the lower one locked. I had filled the first two
+with my linen, and as I had still much to pack away I was
+naturally annoyed at not having the use of the third drawer. It
+struck me that it might have been fastened by a mere oversight,
+so I took out my bunch of keys and tried to open it. The very
+first key fitted to perfection, and I drew the drawer open. There
+was only one thing in it, but I am sure that you would never
+guess what it was. It was my coil of hair.
+
+"I took it up and examined it. It was of the same peculiar tint,
+and the same thickness. But then the impossibility of the thing
+obtruded itself upon me. How could my hair have been locked in
+the drawer? With trembling hands I undid my trunk, turned out the
+contents, and drew from the bottom my own hair. I laid the two
+tresses together, and I assure you that they were identical. Was
+it not extraordinary? Puzzle as I would, I could make nothing at
+all of what it meant. I returned the strange hair to the drawer,
+and I said nothing of the matter to the Rucastles as I felt that
+I had put myself in the wrong by opening a drawer which they had
+locked.
+
+"I am naturally observant, as you may have remarked, Mr. Holmes,
+and I soon had a pretty good plan of the whole house in my head.
+There was one wing, however, which appeared not to be inhabited
+at all. A door which faced that which led into the quarters of
+the Tollers opened into this suite, but it was invariably locked.
+One day, however, as I ascended the stair, I met Mr. Rucastle
+coming out through this door, his keys in his hand, and a look on
+his face which made him a very different person to the round,
+jovial man to whom I was accustomed. His cheeks were red, his
+brow was all crinkled with anger, and the veins stood out at his
+temples with passion. He locked the door and hurried past me
+without a word or a look.
+
+"This aroused my curiosity, so when I went out for a walk in the
+grounds with my charge, I strolled round to the side from which I
+could see the windows of this part of the house. There were four
+of them in a row, three of which were simply dirty, while the
+fourth was shuttered up. They were evidently all deserted. As I
+strolled up and down, glancing at them occasionally, Mr. Rucastle
+came out to me, looking as merry and jovial as ever.
+
+"'Ah!' said he, 'you must not think me rude if I passed you
+without a word, my dear young lady. I was preoccupied with
+business matters.'
+
+"I assured him that I was not offended. 'By the way,' said I,
+'you seem to have quite a suite of spare rooms up there, and one
+of them has the shutters up.'
+
+"He looked surprised and, as it seemed to me, a little startled
+at my remark.
+
+"'Photography is one of my hobbies,' said he. 'I have made my
+dark room up there. But, dear me! what an observant young lady we
+have come upon. Who would have believed it? Who would have ever
+believed it?' He spoke in a jesting tone, but there was no jest
+in his eyes as he looked at me. I read suspicion there and
+annoyance, but no jest.
+
+"Well, Mr. Holmes, from the moment that I understood that there
+was something about that suite of rooms which I was not to know,
+I was all on fire to go over them. It was not mere curiosity,
+though I have my share of that. It was more a feeling of duty--a
+feeling that some good might come from my penetrating to this
+place. They talk of woman's instinct; perhaps it was woman's
+instinct which gave me that feeling. At any rate, it was there,
+and I was keenly on the lookout for any chance to pass the
+forbidden door.
+
+"It was only yesterday that the chance came. I may tell you that,
+besides Mr. Rucastle, both Toller and his wife find something to
+do in these deserted rooms, and I once saw him carrying a large
+black linen bag with him through the door. Recently he has been
+drinking hard, and yesterday evening he was very drunk; and when
+I came upstairs there was the key in the door. I have no doubt at
+all that he had left it there. Mr. and Mrs. Rucastle were both
+downstairs, and the child was with them, so that I had an
+admirable opportunity. I turned the key gently in the lock,
+opened the door, and slipped through.
+
+"There was a little passage in front of me, unpapered and
+uncarpeted, which turned at a right angle at the farther end.
+Round this corner were three doors in a line, the first and third
+of which were open. They each led into an empty room, dusty and
+cheerless, with two windows in the one and one in the other, so
+thick with dirt that the evening light glimmered dimly through
+them. The centre door was closed, and across the outside of it
+had been fastened one of the broad bars of an iron bed, padlocked
+at one end to a ring in the wall, and fastened at the other with
+stout cord. The door itself was locked as well, and the key was
+not there. This barricaded door corresponded clearly with the
+shuttered window outside, and yet I could see by the glimmer from
+beneath it that the room was not in darkness. Evidently there was
+a skylight which let in light from above. As I stood in the
+passage gazing at the sinister door and wondering what secret it
+might veil, I suddenly heard the sound of steps within the room
+and saw a shadow pass backward and forward against the little
+slit of dim light which shone out from under the door. A mad,
+unreasoning terror rose up in me at the sight, Mr. Holmes. My
+overstrung nerves failed me suddenly, and I turned and ran--ran
+as though some dreadful hand were behind me clutching at the
+skirt of my dress. I rushed down the passage, through the door,
+and straight into the arms of Mr. Rucastle, who was waiting
+outside.
+
+"'So,' said he, smiling, 'it was you, then. I thought that it
+must be when I saw the door open.'
+
+"'Oh, I am so frightened!' I panted.
+
+"'My dear young lady! my dear young lady!'--you cannot think how
+caressing and soothing his manner was--'and what has frightened
+you, my dear young lady?'
+
+"But his voice was just a little too coaxing. He overdid it. I
+was keenly on my guard against him.
+
+"'I was foolish enough to go into the empty wing,' I answered.
+'But it is so lonely and eerie in this dim light that I was
+frightened and ran out again. Oh, it is so dreadfully still in
+there!'
+
+"'Only that?' said he, looking at me keenly.
+
+"'Why, what did you think?' I asked.
+
+"'Why do you think that I lock this door?'
+
+"'I am sure that I do not know.'
+
+"'It is to keep people out who have no business there. Do you
+see?' He was still smiling in the most amiable manner.
+
+"'I am sure if I had known--'
+
+"'Well, then, you know now. And if you ever put your foot over
+that threshold again'--here in an instant the smile hardened into
+a grin of rage, and he glared down at me with the face of a
+demon--'I'll throw you to the mastiff.'
+
+"I was so terrified that I do not know what I did. I suppose that
+I must have rushed past him into my room. I remember nothing
+until I found myself lying on my bed trembling all over. Then I
+thought of you, Mr. Holmes. I could not live there longer without
+some advice. I was frightened of the house, of the man, of the
+woman, of the servants, even of the child. They were all horrible
+to me. If I could only bring you down all would be well. Of
+course I might have fled from the house, but my curiosity was
+almost as strong as my fears. My mind was soon made up. I would
+send you a wire. I put on my hat and cloak, went down to the
+office, which is about half a mile from the house, and then
+returned, feeling very much easier. A horrible doubt came into my
+mind as I approached the door lest the dog might be loose, but I
+remembered that Toller had drunk himself into a state of
+insensibility that evening, and I knew that he was the only one
+in the household who had any influence with the savage creature,
+or who would venture to set him free. I slipped in in safety and
+lay awake half the night in my joy at the thought of seeing you.
+I had no difficulty in getting leave to come into Winchester this
+morning, but I must be back before three o'clock, for Mr. and
+Mrs. Rucastle are going on a visit, and will be away all the
+evening, so that I must look after the child. Now I have told you
+all my adventures, Mr. Holmes, and I should be very glad if you
+could tell me what it all means, and, above all, what I should
+do."
+
+Holmes and I had listened spellbound to this extraordinary story.
+My friend rose now and paced up and down the room, his hands in
+his pockets, and an expression of the most profound gravity upon
+his face.
+
+"Is Toller still drunk?" he asked.
+
+"Yes. I heard his wife tell Mrs. Rucastle that she could do
+nothing with him."
+
+"That is well. And the Rucastles go out to-night?"
+
+"Yes."
+
+"Is there a cellar with a good strong lock?"
+
+"Yes, the wine-cellar."
+
+"You seem to me to have acted all through this matter like a very
+brave and sensible girl, Miss Hunter. Do you think that you could
+perform one more feat? I should not ask it of you if I did not
+think you a quite exceptional woman."
+
+"I will try. What is it?"
+
+"We shall be at the Copper Beeches by seven o'clock, my friend
+and I. The Rucastles will be gone by that time, and Toller will,
+we hope, be incapable. There only remains Mrs. Toller, who might
+give the alarm. If you could send her into the cellar on some
+errand, and then turn the key upon her, you would facilitate
+matters immensely."
+
+"I will do it."
+
+"Excellent! We shall then look thoroughly into the affair. Of
+course there is only one feasible explanation. You have been
+brought there to personate someone, and the real person is
+imprisoned in this chamber. That is obvious. As to who this
+prisoner is, I have no doubt that it is the daughter, Miss Alice
+Rucastle, if I remember right, who was said to have gone to
+America. You were chosen, doubtless, as resembling her in height,
+figure, and the colour of your hair. Hers had been cut off, very
+possibly in some illness through which she has passed, and so, of
+course, yours had to be sacrificed also. By a curious chance you
+came upon her tresses. The man in the road was undoubtedly some
+friend of hers--possibly her fiancé--and no doubt, as you wore
+the girl's dress and were so like her, he was convinced from your
+laughter, whenever he saw you, and afterwards from your gesture,
+that Miss Rucastle was perfectly happy, and that she no longer
+desired his attentions. The dog is let loose at night to prevent
+him from endeavouring to communicate with her. So much is fairly
+clear. The most serious point in the case is the disposition of
+the child."
+
+"What on earth has that to do with it?" I ejaculated.
+
+"My dear Watson, you as a medical man are continually gaining
+light as to the tendencies of a child by the study of the
+parents. Don't you see that the converse is equally valid. I have
+frequently gained my first real insight into the character of
+parents by studying their children. This child's disposition is
+abnormally cruel, merely for cruelty's sake, and whether he
+derives this from his smiling father, as I should suspect, or
+from his mother, it bodes evil for the poor girl who is in their
+power."
+
+"I am sure that you are right, Mr. Holmes," cried our client. "A
+thousand things come back to me which make me certain that you
+have hit it. Oh, let us lose not an instant in bringing help to
+this poor creature."
+
+"We must be circumspect, for we are dealing with a very cunning
+man. We can do nothing until seven o'clock. At that hour we shall
+be with you, and it will not be long before we solve the
+mystery."
+
+We were as good as our word, for it was just seven when we
+reached the Copper Beeches, having put up our trap at a wayside
+public-house. The group of trees, with their dark leaves shining
+like burnished metal in the light of the setting sun, were
+sufficient to mark the house even had Miss Hunter not been
+standing smiling on the door-step.
+
+"Have you managed it?" asked Holmes.
+
+A loud thudding noise came from somewhere downstairs. "That is
+Mrs. Toller in the cellar," said she. "Her husband lies snoring
+on the kitchen rug. Here are his keys, which are the duplicates
+of Mr. Rucastle's."
+
+"You have done well indeed!" cried Holmes with enthusiasm. "Now
+lead the way, and we shall soon see the end of this black
+business."
+
+We passed up the stair, unlocked the door, followed on down a
+passage, and found ourselves in front of the barricade which Miss
+Hunter had described. Holmes cut the cord and removed the
+transverse bar. Then he tried the various keys in the lock, but
+without success. No sound came from within, and at the silence
+Holmes' face clouded over.
+
+"I trust that we are not too late," said he. "I think, Miss
+Hunter, that we had better go in without you. Now, Watson, put
+your shoulder to it, and we shall see whether we cannot make our
+way in."
+
+It was an old rickety door and gave at once before our united
+strength. Together we rushed into the room. It was empty. There
+was no furniture save a little pallet bed, a small table, and a
+basketful of linen. The skylight above was open, and the prisoner
+gone.
+
+"There has been some villainy here," said Holmes; "this beauty
+has guessed Miss Hunter's intentions and has carried his victim
+off."
+
+"But how?"
+
+"Through the skylight. We shall soon see how he managed it." He
+swung himself up onto the roof. "Ah, yes," he cried, "here's the
+end of a long light ladder against the eaves. That is how he did
+it."
+
+"But it is impossible," said Miss Hunter; "the ladder was not
+there when the Rucastles went away."
+
+"He has come back and done it. I tell you that he is a clever and
+dangerous man. I should not be very much surprised if this were
+he whose step I hear now upon the stair. I think, Watson, that it
+would be as well for you to have your pistol ready."
+
+The words were hardly out of his mouth before a man appeared at
+the door of the room, a very fat and burly man, with a heavy
+stick in his hand. Miss Hunter screamed and shrunk against the
+wall at the sight of him, but Sherlock Holmes sprang forward and
+confronted him.
+
+"You villain!" said he, "where's your daughter?"
+
+The fat man cast his eyes round, and then up at the open
+skylight.
+
+"It is for me to ask you that," he shrieked, "you thieves! Spies
+and thieves! I have caught you, have I? You are in my power. I'll
+serve you!" He turned and clattered down the stairs as hard as he
+could go.
+
+"He's gone for the dog!" cried Miss Hunter.
+
+"I have my revolver," said I.
+
+"Better close the front door," cried Holmes, and we all rushed
+down the stairs together. We had hardly reached the hall when we
+heard the baying of a hound, and then a scream of agony, with a
+horrible worrying sound which it was dreadful to listen to. An
+elderly man with a red face and shaking limbs came staggering out
+at a side door.
+
+"My God!" he cried. "Someone has loosed the dog. It's not been
+fed for two days. Quick, quick, or it'll be too late!"
+
+Holmes and I rushed out and round the angle of the house, with
+Toller hurrying behind us. There was the huge famished brute, its
+black muzzle buried in Rucastle's throat, while he writhed and
+screamed upon the ground. Running up, I blew its brains out, and
+it fell over with its keen white teeth still meeting in the great
+creases of his neck. With much labour we separated them and
+carried him, living but horribly mangled, into the house. We laid
+him upon the drawing-room sofa, and having dispatched the sobered
+Toller to bear the news to his wife, I did what I could to
+relieve his pain. We were all assembled round him when the door
+opened, and a tall, gaunt woman entered the room.
+
+"Mrs. Toller!" cried Miss Hunter.
+
+"Yes, miss. Mr. Rucastle let me out when he came back before he
+went up to you. Ah, miss, it is a pity you didn't let me know
+what you were planning, for I would have told you that your pains
+were wasted."
+
+"Ha!" said Holmes, looking keenly at her. "It is clear that Mrs.
+Toller knows more about this matter than anyone else."
+
+"Yes, sir, I do, and I am ready enough to tell what I know."
+
+"Then, pray, sit down, and let us hear it for there are several
+points on which I must confess that I am still in the dark."
+
+"I will soon make it clear to you," said she; "and I'd have done
+so before now if I could ha' got out from the cellar. If there's
+police-court business over this, you'll remember that I was the
+one that stood your friend, and that I was Miss Alice's friend
+too.
+
+"She was never happy at home, Miss Alice wasn't, from the time
+that her father married again. She was slighted like and had no
+say in anything, but it never really became bad for her until
+after she met Mr. Fowler at a friend's house. As well as I could
+learn, Miss Alice had rights of her own by will, but she was so
+quiet and patient, she was, that she never said a word about them
+but just left everything in Mr. Rucastle's hands. He knew he was
+safe with her; but when there was a chance of a husband coming
+forward, who would ask for all that the law would give him, then
+her father thought it time to put a stop on it. He wanted her to
+sign a paper, so that whether she married or not, he could use
+her money. When she wouldn't do it, he kept on worrying her until
+she got brain-fever, and for six weeks was at death's door. Then
+she got better at last, all worn to a shadow, and with her
+beautiful hair cut off; but that didn't make no change in her
+young man, and he stuck to her as true as man could be."
+
+"Ah," said Holmes, "I think that what you have been good enough
+to tell us makes the matter fairly clear, and that I can deduce
+all that remains. Mr. Rucastle then, I presume, took to this
+system of imprisonment?"
+
+"Yes, sir."
+
+"And brought Miss Hunter down from London in order to get rid of
+the disagreeable persistence of Mr. Fowler."
+
+"That was it, sir."
+
+"But Mr. Fowler being a persevering man, as a good seaman should
+be, blockaded the house, and having met you succeeded by certain
+arguments, metallic or otherwise, in convincing you that your
+interests were the same as his."
+
+"Mr. Fowler was a very kind-spoken, free-handed gentleman," said
+Mrs. Toller serenely.
+
+"And in this way he managed that your good man should have no
+want of drink, and that a ladder should be ready at the moment
+when your master had gone out."
+
+"You have it, sir, just as it happened."
+
+"I am sure we owe you an apology, Mrs. Toller," said Holmes, "for
+you have certainly cleared up everything which puzzled us. And
+here comes the country surgeon and Mrs. Rucastle, so I think,
+Watson, that we had best escort Miss Hunter back to Winchester,
+as it seems to me that our locus standi now is rather a
+questionable one."
+
+And thus was solved the mystery of the sinister house with the
+copper beeches in front of the door. Mr. Rucastle survived, but
+was always a broken man, kept alive solely through the care of
+his devoted wife. They still live with their old servants, who
+probably know so much of Rucastle's past life that he finds it
+difficult to part from them. Mr. Fowler and Miss Rucastle were
+married, by special license, in Southampton the day after their
+flight, and he is now the holder of a government appointment in
+the island of Mauritius. As to Miss Violet Hunter, my friend
+Holmes, rather to my disappointment, manifested no further
+interest in her when once she had ceased to be the centre of one
+of his problems, and she is now the head of a private school at
+Walsall, where I believe that she has met with considerable success.
+
+
+
+
+
+
+
+
+
+End of the Project Gutenberg EBook of The Adventures of Sherlock Holmes, by 
+Arthur Conan Doyle
+
+*** END OF THIS PROJECT GUTENBERG EBOOK THE ADVENTURES OF SHERLOCK HOLMES ***
+
+***** This file should be named 1661-8.txt or 1661-8.zip *****
+This and all associated files of various formats will be found in:
+        http://www.gutenberg.org/1/6/6/1661/
+
+Produced by an anonymous Project Gutenberg volunteer and Jose Menendez
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties.  Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark.  Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission.  If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy.  You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research.  They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks.  Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+http://gutenberg.net/license).
+
+
+Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A.  By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement.  If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B.  "Project Gutenberg" is a registered trademark.  It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement.  There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement.  See
+paragraph 1.C below.  There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works.  See paragraph 1.E below.
+
+1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works.  Nearly all the individual works in the
+collection are in the public domain in the United States.  If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed.  Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work.  You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D.  The copyright laws of the place where you are located also govern
+what you can do with this work.  Copyright laws in most countries are in
+a constant state of change.  If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work.  The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E.  Unless you have removed all references to Project Gutenberg:
+
+1.E.1.  The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.net
+
+1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges.  If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder.  Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5.  Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6.  You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form.  However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form.  Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7.  Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8.  You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+     the use of Project Gutenberg-tm works calculated using the method
+     you already use to calculate your applicable taxes.  The fee is
+     owed to the owner of the Project Gutenberg-tm trademark, but he
+     has agreed to donate royalties under this paragraph to the
+     Project Gutenberg Literary Archive Foundation.  Royalty payments
+     must be paid within 60 days following each date on which you
+     prepare (or are legally required to prepare) your periodic tax
+     returns.  Royalty payments should be clearly marked as such and
+     sent to the Project Gutenberg Literary Archive Foundation at the
+     address specified in Section 4, "Information about donations to
+     the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+     you in writing (or by e-mail) within 30 days of receipt that s/he
+     does not agree to the terms of the full Project Gutenberg-tm
+     License.  You must require such a user to return or
+     destroy all copies of the works possessed in a physical medium
+     and discontinue all use of and all access to other copies of
+     Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+     money paid for a work or a replacement copy, if a defect in the
+     electronic work is discovered and reported to you within 90 days
+     of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+     distribution of Project Gutenberg-tm works.
+
+1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1.  Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection.  Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH 1.F.3.  YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from.  If you
+received the work on a physical medium, you must return the medium with
+your written explanation.  The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund.  If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund.  If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4.  Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5.  Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law.  The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section  2.  Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers.  It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need are critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come.  In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at http://www.pglaf.org.
+
+
+Section 3.  Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service.  The Foundation's EIN or federal tax identification
+number is 64-6221541.  Its 501(c)(3) letter is posted at
+http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations.  Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org.  Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at http://pglaf.org
+
+For additional contact information:
+     Dr. Gregory B. Newby
+     Chief Executive and Director
+     gbnewby@pglaf.org
+
+
+Section 4.  Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment.  Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States.  Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements.  We do not solicit donations in locations
+where we have not received written confirmation of compliance.  To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit http://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States.  U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses.  Donations are accepted in a number of other
+ways including including checks, online payments and credit card
+donations.  To donate, please visit: http://pglaf.org/donate
+
+
+Section 5.  General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart is the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone.  For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included.  Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+     http://www.gutenberg.net
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks-examples/text-example/textapp/data/file2.txt b/hyracks-examples/text-example/textapp/data/file2.txt
new file mode 100644
index 0000000..a25d303
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/data/file2.txt
@@ -0,0 +1,10216 @@
+Project Gutenberg's Memoirs of Sherlock Holmes, by Sir Arthur Conan Doyle
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+
+Title: Memoirs of Sherlock Holmes
+
+Author: Sir Arthur Conan Doyle
+
+Posting Date: July 31, 2008 [EBook #834]
+Release Date: March, 1997
+[This file last updated on August 16, 2010]
+
+Language: English
+
+
+*** START OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
+
+
+
+
+Produced by Angela M. Cable
+
+
+
+
+
+MEMOIRS OF SHERLOCK HOLMES
+
+by Sir Arthur Conan Doyle
+
+
+
+
+Adventure I. Silver Blaze
+
+
+"I am afraid, Watson, that I shall have to go," said Holmes, as we sat
+down together to our breakfast one morning.
+
+"Go! Where to?"
+
+"To Dartmoor; to King's Pyland."
+
+I was not surprised. Indeed, my only wonder was that he had not already
+been mixed up in this extraordinary case, which was the one topic of
+conversation through the length and breadth of England. For a whole day
+my companion had rambled about the room with his chin upon his chest and
+his brows knitted, charging and recharging his pipe with the strongest
+black tobacco, and absolutely deaf to any of my questions or remarks.
+Fresh editions of every paper had been sent up by our news agent, only
+to be glanced over and tossed down into a corner. Yet, silent as he was,
+I knew perfectly well what it was over which he was brooding. There was
+but one problem before the public which could challenge his powers of
+analysis, and that was the singular disappearance of the favorite for
+the Wessex Cup, and the tragic murder of its trainer. When, therefore,
+he suddenly announced his intention of setting out for the scene of the
+drama it was only what I had both expected and hoped for.
+
+"I should be most happy to go down with you if I should not be in the
+way," said I.
+
+"My dear Watson, you would confer a great favor upon me by coming. And
+I think that your time will not be misspent, for there are points about
+the case which promise to make it an absolutely unique one. We have, I
+think, just time to catch our train at Paddington, and I will go further
+into the matter upon our journey. You would oblige me by bringing with
+you your very excellent field-glass."
+
+And so it happened that an hour or so later I found myself in the
+corner of a first-class carriage flying along en route for Exeter, while
+Sherlock Holmes, with his sharp, eager face framed in his ear-flapped
+travelling-cap, dipped rapidly into the bundle of fresh papers which he
+had procured at Paddington. We had left Reading far behind us before
+he thrust the last one of them under the seat, and offered me his
+cigar-case.
+
+"We are going well," said he, looking out the window and glancing at his
+watch. "Our rate at present is fifty-three and a half miles an hour."
+
+"I have not observed the quarter-mile posts," said I.
+
+"Nor have I. But the telegraph posts upon this line are sixty yards
+apart, and the calculation is a simple one. I presume that you
+have looked into this matter of the murder of John Straker and the
+disappearance of Silver Blaze?"
+
+"I have seen what the Telegraph and the Chronicle have to say."
+
+"It is one of those cases where the art of the reasoner should be
+used rather for the sifting of details than for the acquiring of fresh
+evidence. The tragedy has been so uncommon, so complete and of such
+personal importance to so many people, that we are suffering from a
+plethora of surmise, conjecture, and hypothesis. The difficulty is to
+detach the framework of fact--of absolute undeniable fact--from the
+embellishments of theorists and reporters. Then, having established
+ourselves upon this sound basis, it is our duty to see what inferences
+may be drawn and what are the special points upon which the whole
+mystery turns. On Tuesday evening I received telegrams from both Colonel
+Ross, the owner of the horse, and from Inspector Gregory, who is looking
+after the case, inviting my cooperation."
+
+"Tuesday evening!" I exclaimed. "And this is Thursday morning. Why
+didn't you go down yesterday?"
+
+"Because I made a blunder, my dear Watson--which is, I am afraid, a more
+common occurrence than any one would think who only knew me through your
+memoirs. The fact is that I could not believe it possible that the most
+remarkable horse in England could long remain concealed, especially in
+so sparsely inhabited a place as the north of Dartmoor. From hour to
+hour yesterday I expected to hear that he had been found, and that
+his abductor was the murderer of John Straker. When, however, another
+morning had come, and I found that beyond the arrest of young Fitzroy
+Simpson nothing had been done, I felt that it was time for me to take
+action. Yet in some ways I feel that yesterday has not been wasted."
+
+"You have formed a theory, then?"
+
+"At least I have got a grip of the essential facts of the case. I shall
+enumerate them to you, for nothing clears up a case so much as stating
+it to another person, and I can hardly expect your co-operation if I do
+not show you the position from which we start."
+
+I lay back against the cushions, puffing at my cigar, while Holmes,
+leaning forward, with his long, thin forefinger checking off the points
+upon the palm of his left hand, gave me a sketch of the events which had
+led to our journey.
+
+"Silver Blaze," said he, "is from the Somomy stock, and holds as
+brilliant a record as his famous ancestor. He is now in his fifth year,
+and has brought in turn each of the prizes of the turf to Colonel Ross,
+his fortunate owner. Up to the time of the catastrophe he was the first
+favorite for the Wessex Cup, the betting being three to one on him. He
+has always, however, been a prime favorite with the racing public, and
+has never yet disappointed them, so that even at those odds enormous
+sums of money have been laid upon him. It is obvious, therefore, that
+there were many people who had the strongest interest in preventing
+Silver Blaze from being there at the fall of the flag next Tuesday.
+
+"The fact was, of course, appreciated at King's Pyland, where the
+Colonel's training-stable is situated. Every precaution was taken to
+guard the favorite. The trainer, John Straker, is a retired jockey
+who rode in Colonel Ross's colors before he became too heavy for the
+weighing-chair. He has served the Colonel for five years as jockey and
+for seven as trainer, and has always shown himself to be a zealous and
+honest servant. Under him were three lads; for the establishment was a
+small one, containing only four horses in all. One of these lads sat up
+each night in the stable, while the others slept in the loft. All three
+bore excellent characters. John Straker, who is a married man, lived
+in a small villa about two hundred yards from the stables. He has no
+children, keeps one maid-servant, and is comfortably off. The country
+round is very lonely, but about half a mile to the north there is a
+small cluster of villas which have been built by a Tavistock contractor
+for the use of invalids and others who may wish to enjoy the pure
+Dartmoor air. Tavistock itself lies two miles to the west, while
+across the moor, also about two miles distant, is the larger training
+establishment of Mapleton, which belongs to Lord Backwater, and is
+managed by Silas Brown. In every other direction the moor is a complete
+wilderness, inhabited only by a few roaming gypsies. Such was the
+general situation last Monday night when the catastrophe occurred.
+
+"On that evening the horses had been exercised and watered as usual, and
+the stables were locked up at nine o'clock. Two of the lads walked up
+to the trainer's house, where they had supper in the kitchen, while the
+third, Ned Hunter, remained on guard. At a few minutes after nine
+the maid, Edith Baxter, carried down to the stables his supper, which
+consisted of a dish of curried mutton. She took no liquid, as there was
+a water-tap in the stables, and it was the rule that the lad on duty
+should drink nothing else. The maid carried a lantern with her, as it
+was very dark and the path ran across the open moor.
+
+"Edith Baxter was within thirty yards of the stables, when a man
+appeared out of the darkness and called to her to stop. As he stepped
+into the circle of yellow light thrown by the lantern she saw that he
+was a person of gentlemanly bearing, dressed in a gray suit of tweeds,
+with a cloth cap. He wore gaiters, and carried a heavy stick with a knob
+to it. She was most impressed, however, by the extreme pallor of his
+face and by the nervousness of his manner. His age, she thought, would
+be rather over thirty than under it.
+
+"'Can you tell me where I am?' he asked. 'I had almost made up my mind
+to sleep on the moor, when I saw the light of your lantern.'
+
+"'You are close to the King's Pyland training-stables,' said she.
+
+"'Oh, indeed! What a stroke of luck!' he cried. 'I understand that a
+stable-boy sleeps there alone every night. Perhaps that is his supper
+which you are carrying to him. Now I am sure that you would not be too
+proud to earn the price of a new dress, would you?' He took a piece of
+white paper folded up out of his waistcoat pocket. 'See that the boy
+has this to-night, and you shall have the prettiest frock that money can
+buy.'
+
+"She was frightened by the earnestness of his manner, and ran past him
+to the window through which she was accustomed to hand the meals. It was
+already opened, and Hunter was seated at the small table inside. She had
+begun to tell him of what had happened, when the stranger came up again.
+
+"'Good-evening,' said he, looking through the window. 'I wanted to have
+a word with you.' The girl has sworn that as he spoke she noticed the
+corner of the little paper packet protruding from his closed hand.
+
+"'What business have you here?' asked the lad.
+
+"'It's business that may put something into your pocket,' said the
+other. 'You've two horses in for the Wessex Cup--Silver Blaze and
+Bayard. Let me have the straight tip and you won't be a loser. Is it a
+fact that at the weights Bayard could give the other a hundred yards in
+five furlongs, and that the stable have put their money on him?'
+
+"'So, you're one of those damned touts!' cried the lad. 'I'll show you
+how we serve them in King's Pyland.' He sprang up and rushed across the
+stable to unloose the dog. The girl fled away to the house, but as she
+ran she looked back and saw that the stranger was leaning through the
+window. A minute later, however, when Hunter rushed out with the hound
+he was gone, and though he ran all round the buildings he failed to find
+any trace of him."
+
+"One moment," I asked. "Did the stable-boy, when he ran out with the
+dog, leave the door unlocked behind him?"
+
+"Excellent, Watson, excellent!" murmured my companion. "The importance
+of the point struck me so forcibly that I sent a special wire to
+Dartmoor yesterday to clear the matter up. The boy locked the door
+before he left it. The window, I may add, was not large enough for a man
+to get through.
+
+"Hunter waited until his fellow-grooms had returned, when he sent a
+message to the trainer and told him what had occurred. Straker was
+excited at hearing the account, although he does not seem to have quite
+realized its true significance. It left him, however, vaguely uneasy,
+and Mrs. Straker, waking at one in the morning, found that he was
+dressing. In reply to her inquiries, he said that he could not sleep on
+account of his anxiety about the horses, and that he intended to walk
+down to the stables to see that all was well. She begged him to remain
+at home, as she could hear the rain pattering against the window, but in
+spite of her entreaties he pulled on his large mackintosh and left the
+house.
+
+"Mrs. Straker awoke at seven in the morning, to find that her husband
+had not yet returned. She dressed herself hastily, called the maid, and
+set off for the stables. The door was open; inside, huddled together
+upon a chair, Hunter was sunk in a state of absolute stupor, the
+favorite's stall was empty, and there were no signs of his trainer.
+
+"The two lads who slept in the chaff-cutting loft above the harness-room
+were quickly aroused. They had heard nothing during the night, for they
+are both sound sleepers. Hunter was obviously under the influence of
+some powerful drug, and as no sense could be got out of him, he was left
+to sleep it off while the two lads and the two women ran out in search
+of the absentees. They still had hopes that the trainer had for some
+reason taken out the horse for early exercise, but on ascending the
+knoll near the house, from which all the neighboring moors were visible,
+they not only could see no signs of the missing favorite, but they
+perceived something which warned them that they were in the presence of
+a tragedy.
+
+"About a quarter of a mile from the stables John Straker's overcoat was
+flapping from a furze-bush. Immediately beyond there was a bowl-shaped
+depression in the moor, and at the bottom of this was found the dead
+body of the unfortunate trainer. His head had been shattered by a savage
+blow from some heavy weapon, and he was wounded on the thigh, where
+there was a long, clean cut, inflicted evidently by some very sharp
+instrument. It was clear, however, that Straker had defended himself
+vigorously against his assailants, for in his right hand he held a small
+knife, which was clotted with blood up to the handle, while in his left
+he clasped a red and black silk cravat, which was recognized by the maid
+as having been worn on the preceding evening by the stranger who had
+visited the stables. Hunter, on recovering from his stupor, was also
+quite positive as to the ownership of the cravat. He was equally certain
+that the same stranger had, while standing at the window, drugged his
+curried mutton, and so deprived the stables of their watchman. As to the
+missing horse, there were abundant proofs in the mud which lay at the
+bottom of the fatal hollow that he had been there at the time of the
+struggle. But from that morning he has disappeared, and although a large
+reward has been offered, and all the gypsies of Dartmoor are on the
+alert, no news has come of him. Finally, an analysis has shown that
+the remains of his supper left by the stable-lad contain an appreciable
+quantity of powdered opium, while the people at the house partook of the
+same dish on the same night without any ill effect.
+
+"Those are the main facts of the case, stripped of all surmise, and
+stated as baldly as possible. I shall now recapitulate what the police
+have done in the matter.
+
+"Inspector Gregory, to whom the case has been committed, is an extremely
+competent officer. Were he but gifted with imagination he might rise to
+great heights in his profession. On his arrival he promptly found and
+arrested the man upon whom suspicion naturally rested. There was little
+difficulty in finding him, for he inhabited one of those villas which I
+have mentioned. His name, it appears, was Fitzroy Simpson. He was a man
+of excellent birth and education, who had squandered a fortune upon the
+turf, and who lived now by doing a little quiet and genteel book-making
+in the sporting clubs of London. An examination of his betting-book
+shows that bets to the amount of five thousand pounds had been
+registered by him against the favorite. On being arrested he volunteered
+that statement that he had come down to Dartmoor in the hope of
+getting some information about the King's Pyland horses, and also about
+Desborough, the second favorite, which was in charge of Silas Brown at
+the Mapleton stables. He did not attempt to deny that he had acted as
+described upon the evening before, but declared that he had no sinister
+designs, and had simply wished to obtain first-hand information. When
+confronted with his cravat, he turned very pale, and was utterly unable
+to account for its presence in the hand of the murdered man. His wet
+clothing showed that he had been out in the storm of the night before,
+and his stick, which was a Penang-lawyer weighted with lead, was just
+such a weapon as might, by repeated blows, have inflicted the terrible
+injuries to which the trainer had succumbed. On the other hand, there
+was no wound upon his person, while the state of Straker's knife would
+show that one at least of his assailants must bear his mark upon him.
+There you have it all in a nutshell, Watson, and if you can give me any
+light I shall be infinitely obliged to you."
+
+I had listened with the greatest interest to the statement which Holmes,
+with characteristic clearness, had laid before me. Though most of the
+facts were familiar to me, I had not sufficiently appreciated their
+relative importance, nor their connection to each other.
+
+"Is it not possible," I suggested, "that the incised wound upon Straker
+may have been caused by his own knife in the convulsive struggles which
+follow any brain injury?"
+
+"It is more than possible; it is probable," said Holmes. "In that case
+one of the main points in favor of the accused disappears."
+
+"And yet," said I, "even now I fail to understand what the theory of the
+police can be."
+
+"I am afraid that whatever theory we state has very grave objections to
+it," returned my companion. "The police imagine, I take it, that this
+Fitzroy Simpson, having drugged the lad, and having in some way obtained
+a duplicate key, opened the stable door and took out the horse, with
+the intention, apparently, of kidnapping him altogether. His bridle is
+missing, so that Simpson must have put this on. Then, having left the
+door open behind him, he was leading the horse away over the moor, when
+he was either met or overtaken by the trainer. A row naturally ensued.
+Simpson beat out the trainer's brains with his heavy stick without
+receiving any injury from the small knife which Straker used in
+self-defence, and then the thief either led the horse on to some secret
+hiding-place, or else it may have bolted during the struggle, and be
+now wandering out on the moors. That is the case as it appears to
+the police, and improbable as it is, all other explanations are more
+improbable still. However, I shall very quickly test the matter when I
+am once upon the spot, and until then I cannot really see how we can get
+much further than our present position."
+
+It was evening before we reached the little town of Tavistock, which
+lies, like the boss of a shield, in the middle of the huge circle of
+Dartmoor. Two gentlemen were awaiting us in the station--the one a tall,
+fair man with lion-like hair and beard and curiously penetrating light
+blue eyes; the other a small, alert person, very neat and dapper, in a
+frock-coat and gaiters, with trim little side-whiskers and an eye-glass.
+The latter was Colonel Ross, the well-known sportsman; the other,
+Inspector Gregory, a man who was rapidly making his name in the English
+detective service.
+
+"I am delighted that you have come down, Mr. Holmes," said the Colonel.
+"The Inspector here has done all that could possibly be suggested, but I
+wish to leave no stone unturned in trying to avenge poor Straker and in
+recovering my horse."
+
+"Have there been any fresh developments?" asked Holmes.
+
+"I am sorry to say that we have made very little progress," said the
+Inspector. "We have an open carriage outside, and as you would no doubt
+like to see the place before the light fails, we might talk it over as
+we drive."
+
+A minute later we were all seated in a comfortable landau, and were
+rattling through the quaint old Devonshire city. Inspector Gregory was
+full of his case, and poured out a stream of remarks, while Holmes threw
+in an occasional question or interjection. Colonel Ross leaned back with
+his arms folded and his hat tilted over his eyes, while I listened with
+interest to the dialogue of the two detectives. Gregory was formulating
+his theory, which was almost exactly what Holmes had foretold in the
+train.
+
+"The net is drawn pretty close round Fitzroy Simpson," he remarked, "and
+I believe myself that he is our man. At the same time I recognize that
+the evidence is purely circumstantial, and that some new development may
+upset it."
+
+"How about Straker's knife?"
+
+"We have quite come to the conclusion that he wounded himself in his
+fall."
+
+"My friend Dr. Watson made that suggestion to me as we came down. If so,
+it would tell against this man Simpson."
+
+"Undoubtedly. He has neither a knife nor any sign of a wound. The
+evidence against him is certainly very strong. He had a great interest
+in the disappearance of the favorite. He lies under suspicion of having
+poisoned the stable-boy, he was undoubtedly out in the storm, he was
+armed with a heavy stick, and his cravat was found in the dead man's
+hand. I really think we have enough to go before a jury."
+
+Holmes shook his head. "A clever counsel would tear it all to rags,"
+said he. "Why should he take the horse out of the stable? If he wished
+to injure it why could he not do it there? Has a duplicate key been
+found in his possession? What chemist sold him the powdered opium? Above
+all, where could he, a stranger to the district, hide a horse, and such
+a horse as this? What is his own explanation as to the paper which he
+wished the maid to give to the stable-boy?"
+
+"He says that it was a ten-pound note. One was found in his purse. But
+your other difficulties are not so formidable as they seem. He is not
+a stranger to the district. He has twice lodged at Tavistock in the
+summer. The opium was probably brought from London. The key, having
+served its purpose, would be hurled away. The horse may be at the bottom
+of one of the pits or old mines upon the moor."
+
+"What does he say about the cravat?"
+
+"He acknowledges that it is his, and declares that he had lost it. But a
+new element has been introduced into the case which may account for his
+leading the horse from the stable."
+
+Holmes pricked up his ears.
+
+"We have found traces which show that a party of gypsies encamped on
+Monday night within a mile of the spot where the murder took place. On
+Tuesday they were gone. Now, presuming that there was some understanding
+between Simpson and these gypsies, might he not have been leading the
+horse to them when he was overtaken, and may they not have him now?"
+
+"It is certainly possible."
+
+"The moor is being scoured for these gypsies. I have also examined every
+stable and out-house in Tavistock, and for a radius of ten miles."
+
+"There is another training-stable quite close, I understand?"
+
+"Yes, and that is a factor which we must certainly not neglect. As
+Desborough, their horse, was second in the betting, they had an interest
+in the disappearance of the favorite. Silas Brown, the trainer, is known
+to have had large bets upon the event, and he was no friend to poor
+Straker. We have, however, examined the stables, and there is nothing to
+connect him with the affair."
+
+"And nothing to connect this man Simpson with the interests of the
+Mapleton stables?"
+
+"Nothing at all."
+
+Holmes leaned back in the carriage, and the conversation ceased. A few
+minutes later our driver pulled up at a neat little red-brick villa with
+overhanging eaves which stood by the road. Some distance off, across a
+paddock, lay a long gray-tiled out-building. In every other direction
+the low curves of the moor, bronze-colored from the fading ferns,
+stretched away to the sky-line, broken only by the steeples of
+Tavistock, and by a cluster of houses away to the westward which marked
+the Mapleton stables. We all sprang out with the exception of Holmes,
+who continued to lean back with his eyes fixed upon the sky in front of
+him, entirely absorbed in his own thoughts. It was only when I touched
+his arm that he roused himself with a violent start and stepped out of
+the carriage.
+
+"Excuse me," said he, turning to Colonel Ross, who had looked at him in
+some surprise. "I was day-dreaming." There was a gleam in his eyes and a
+suppressed excitement in his manner which convinced me, used as I was
+to his ways, that his hand was upon a clue, though I could not imagine
+where he had found it.
+
+"Perhaps you would prefer at once to go on to the scene of the crime,
+Mr. Holmes?" said Gregory.
+
+"I think that I should prefer to stay here a little and go into one or
+two questions of detail. Straker was brought back here, I presume?"
+
+"Yes; he lies upstairs. The inquest is to-morrow."
+
+"He has been in your service some years, Colonel Ross?"
+
+"I have always found him an excellent servant."
+
+"I presume that you made an inventory of what he had in his pockets at
+the time of his death, Inspector?"
+
+"I have the things themselves in the sitting-room, if you would care to
+see them."
+
+"I should be very glad." We all filed into the front room and sat round
+the central table while the Inspector unlocked a square tin box and laid
+a small heap of things before us. There was a box of vestas, two inches
+of tallow candle, an A D P brier-root pipe, a pouch of seal-skin with
+half an ounce of long-cut Cavendish, a silver watch with a gold chain,
+five sovereigns in gold, an aluminum pencil-case, a few papers, and an
+ivory-handled knife with a very delicate, inflexible blade marked Weiss
+& Co., London.
+
+"This is a very singular knife," said Holmes, lifting it up and
+examining it minutely. "I presume, as I see blood-stains upon it, that
+it is the one which was found in the dead man's grasp. Watson, this
+knife is surely in your line?"
+
+"It is what we call a cataract knife," said I.
+
+"I thought so. A very delicate blade devised for very delicate work.
+A strange thing for a man to carry with him upon a rough expedition,
+especially as it would not shut in his pocket."
+
+"The tip was guarded by a disk of cork which we found beside his body,"
+said the Inspector. "His wife tells us that the knife had lain upon the
+dressing-table, and that he had picked it up as he left the room. It was
+a poor weapon, but perhaps the best that he could lay his hands on at
+the moment."
+
+"Very possible. How about these papers?"
+
+"Three of them are receipted hay-dealers' accounts. One of them is a
+letter of instructions from Colonel Ross. This other is a milliner's
+account for thirty-seven pounds fifteen made out by Madame Lesurier,
+of Bond Street, to William Derbyshire. Mrs. Straker tells us that
+Derbyshire was a friend of her husband's and that occasionally his
+letters were addressed here."
+
+"Madam Derbyshire had somewhat expensive tastes," remarked Holmes,
+glancing down the account. "Twenty-two guineas is rather heavy for a
+single costume. However there appears to be nothing more to learn, and
+we may now go down to the scene of the crime."
+
+As we emerged from the sitting-room a woman, who had been waiting in
+the passage, took a step forward and laid her hand upon the Inspector's
+sleeve. Her face was haggard and thin and eager, stamped with the print
+of a recent horror.
+
+"Have you got them? Have you found them?" she panted.
+
+"No, Mrs. Straker. But Mr. Holmes here has come from London to help us,
+and we shall do all that is possible."
+
+"Surely I met you in Plymouth at a garden-party some little time ago,
+Mrs. Straker?" said Holmes.
+
+"No, sir; you are mistaken."
+
+"Dear me! Why, I could have sworn to it. You wore a costume of
+dove-colored silk with ostrich-feather trimming."
+
+"I never had such a dress, sir," answered the lady.
+
+"Ah, that quite settles it," said Holmes. And with an apology he
+followed the Inspector outside. A short walk across the moor took us to
+the hollow in which the body had been found. At the brink of it was the
+furze-bush upon which the coat had been hung.
+
+"There was no wind that night, I understand," said Holmes.
+
+"None; but very heavy rain."
+
+"In that case the overcoat was not blown against the furze-bush, but
+placed there."
+
+"Yes, it was laid across the bush."
+
+"You fill me with interest, I perceive that the ground has been trampled
+up a good deal. No doubt many feet have been here since Monday night."
+
+"A piece of matting has been laid here at the side, and we have all
+stood upon that."
+
+"Excellent."
+
+"In this bag I have one of the boots which Straker wore, one of Fitzroy
+Simpson's shoes, and a cast horseshoe of Silver Blaze."
+
+"My dear Inspector, you surpass yourself!" Holmes took the bag, and,
+descending into the hollow, he pushed the matting into a more central
+position. Then stretching himself upon his face and leaning his chin
+upon his hands, he made a careful study of the trampled mud in front of
+him. "Hullo!" said he, suddenly. "What's this?" It was a wax vesta half
+burned, which was so coated with mud that it looked at first like a
+little chip of wood.
+
+"I cannot think how I came to overlook it," said the Inspector, with an
+expression of annoyance.
+
+"It was invisible, buried in the mud. I only saw it because I was
+looking for it."
+
+"What! You expected to find it?"
+
+"I thought it not unlikely."
+
+He took the boots from the bag, and compared the impressions of each of
+them with marks upon the ground. Then he clambered up to the rim of the
+hollow, and crawled about among the ferns and bushes.
+
+"I am afraid that there are no more tracks," said the Inspector. "I
+have examined the ground very carefully for a hundred yards in each
+direction."
+
+"Indeed!" said Holmes, rising. "I should not have the impertinence to
+do it again after what you say. But I should like to take a little walk
+over the moor before it grows dark, that I may know my ground to-morrow,
+and I think that I shall put this horseshoe into my pocket for luck."
+
+Colonel Ross, who had shown some signs of impatience at my companion's
+quiet and systematic method of work, glanced at his watch. "I wish you
+would come back with me, Inspector," said he. "There are several points
+on which I should like your advice, and especially as to whether we do
+not owe it to the public to remove our horse's name from the entries for
+the Cup."
+
+"Certainly not," cried Holmes, with decision. "I should let the name
+stand."
+
+The Colonel bowed. "I am very glad to have had your opinion, sir," said
+he. "You will find us at poor Straker's house when you have finished
+your walk, and we can drive together into Tavistock."
+
+He turned back with the Inspector, while Holmes and I walked slowly
+across the moor. The sun was beginning to sink behind the stables of
+Mapleton, and the long, sloping plain in front of us was tinged with
+gold, deepening into rich, ruddy browns where the faded ferns and
+brambles caught the evening light. But the glories of the landscape were
+all wasted upon my companion, who was sunk in the deepest thought.
+
+"It's this way, Watson," said he at last. "We may leave the question
+of who killed John Straker for the instant, and confine ourselves to
+finding out what has become of the horse. Now, supposing that he broke
+away during or after the tragedy, where could he have gone to? The horse
+is a very gregarious creature. If left to himself his instincts would
+have been either to return to King's Pyland or go over to Mapleton. Why
+should he run wild upon the moor? He would surely have been seen by now.
+And why should gypsies kidnap him? These people always clear out when
+they hear of trouble, for they do not wish to be pestered by the police.
+They could not hope to sell such a horse. They would run a great risk
+and gain nothing by taking him. Surely that is clear."
+
+"Where is he, then?"
+
+"I have already said that he must have gone to King's Pyland or to
+Mapleton. He is not at King's Pyland. Therefore he is at Mapleton. Let
+us take that as a working hypothesis and see what it leads us to. This
+part of the moor, as the Inspector remarked, is very hard and dry. But
+it falls away towards Mapleton, and you can see from here that there
+is a long hollow over yonder, which must have been very wet on Monday
+night. If our supposition is correct, then the horse must have crossed
+that, and there is the point where we should look for his tracks."
+
+We had been walking briskly during this conversation, and a few more
+minutes brought us to the hollow in question. At Holmes' request I
+walked down the bank to the right, and he to the left, but I had not
+taken fifty paces before I heard him give a shout, and saw him waving
+his hand to me. The track of a horse was plainly outlined in the soft
+earth in front of him, and the shoe which he took from his pocket
+exactly fitted the impression.
+
+"See the value of imagination," said Holmes. "It is the one quality
+which Gregory lacks. We imagined what might have happened, acted upon
+the supposition, and find ourselves justified. Let us proceed."
+
+We crossed the marshy bottom and passed over a quarter of a mile of dry,
+hard turf. Again the ground sloped, and again we came on the tracks.
+Then we lost them for half a mile, but only to pick them up once more
+quite close to Mapleton. It was Holmes who saw them first, and he stood
+pointing with a look of triumph upon his face. A man's track was visible
+beside the horse's.
+
+"The horse was alone before," I cried.
+
+"Quite so. It was alone before. Hullo, what is this?"
+
+The double track turned sharp off and took the direction of King's
+Pyland. Holmes whistled, and we both followed along after it. His eyes
+were on the trail, but I happened to look a little to one side, and
+saw to my surprise the same tracks coming back again in the opposite
+direction.
+
+"One for you, Watson," said Holmes, when I pointed it out. "You have
+saved us a long walk, which would have brought us back on our own
+traces. Let us follow the return track."
+
+We had not to go far. It ended at the paving of asphalt which led up
+to the gates of the Mapleton stables. As we approached, a groom ran out
+from them.
+
+"We don't want any loiterers about here," said he.
+
+"I only wished to ask a question," said Holmes, with his finger and
+thumb in his waistcoat pocket. "Should I be too early to see your
+master, Mr. Silas Brown, if I were to call at five o'clock to-morrow
+morning?"
+
+"Bless you, sir, if any one is about he will be, for he is always
+the first stirring. But here he is, sir, to answer your questions for
+himself. No, sir, no; it is as much as my place is worth to let him see
+me touch your money. Afterwards, if you like."
+
+As Sherlock Holmes replaced the half-crown which he had drawn from his
+pocket, a fierce-looking elderly man strode out from the gate with a
+hunting-crop swinging in his hand.
+
+"What's this, Dawson!" he cried. "No gossiping! Go about your business!
+And you, what the devil do you want here?"
+
+"Ten minutes' talk with you, my good sir," said Holmes in the sweetest
+of voices.
+
+"I've no time to talk to every gadabout. We want no stranger here. Be
+off, or you may find a dog at your heels."
+
+Holmes leaned forward and whispered something in the trainer's ear. He
+started violently and flushed to the temples.
+
+"It's a lie!" he shouted, "an infernal lie!"
+
+"Very good. Shall we argue about it here in public or talk it over in
+your parlor?"
+
+"Oh, come in if you wish to."
+
+Holmes smiled. "I shall not keep you more than a few minutes, Watson,"
+said he. "Now, Mr. Brown, I am quite at your disposal."
+
+It was twenty minutes, and the reds had all faded into grays before
+Holmes and the trainer reappeared. Never have I seen such a change as
+had been brought about in Silas Brown in that short time. His face was
+ashy pale, beads of perspiration shone upon his brow, and his hands
+shook until the hunting-crop wagged like a branch in the wind. His
+bullying, overbearing manner was all gone too, and he cringed along at
+my companion's side like a dog with its master.
+
+"Your instructions will be done. It shall all be done," said he.
+
+"There must be no mistake," said Holmes, looking round at him. The other
+winced as he read the menace in his eyes.
+
+"Oh no, there shall be no mistake. It shall be there. Should I change it
+first or not?"
+
+Holmes thought a little and then burst out laughing. "No, don't," said
+he; "I shall write to you about it. No tricks, now, or--"
+
+"Oh, you can trust me, you can trust me!"
+
+"Yes, I think I can. Well, you shall hear from me to-morrow." He turned
+upon his heel, disregarding the trembling hand which the other held out
+to him, and we set off for King's Pyland.
+
+"A more perfect compound of the bully, coward, and sneak than Master
+Silas Brown I have seldom met with," remarked Holmes as we trudged along
+together.
+
+"He has the horse, then?"
+
+"He tried to bluster out of it, but I described to him so exactly what
+his actions had been upon that morning that he is convinced that I was
+watching him. Of course you observed the peculiarly square toes in the
+impressions, and that his own boots exactly corresponded to them.
+Again, of course no subordinate would have dared to do such a thing.
+I described to him how, when according to his custom he was the first
+down, he perceived a strange horse wandering over the moor. How he went
+out to it, and his astonishment at recognizing, from the white forehead
+which has given the favorite its name, that chance had put in his power
+the only horse which could beat the one upon which he had put his money.
+Then I described how his first impulse had been to lead him back to
+King's Pyland, and how the devil had shown him how he could hide the
+horse until the race was over, and how he had led it back and concealed
+it at Mapleton. When I told him every detail he gave it up and thought
+only of saving his own skin."
+
+"But his stables had been searched?"
+
+"Oh, an old horse-faker like him has many a dodge."
+
+"But are you not afraid to leave the horse in his power now, since he
+has every interest in injuring it?"
+
+"My dear fellow, he will guard it as the apple of his eye. He knows that
+his only hope of mercy is to produce it safe."
+
+"Colonel Ross did not impress me as a man who would be likely to show
+much mercy in any case."
+
+"The matter does not rest with Colonel Ross. I follow my own methods,
+and tell as much or as little as I choose. That is the advantage of
+being unofficial. I don't know whether you observed it, Watson, but the
+Colonel's manner has been just a trifle cavalier to me. I am inclined
+now to have a little amusement at his expense. Say nothing to him about
+the horse."
+
+"Certainly not without your permission."
+
+"And of course this is all quite a minor point compared to the question
+of who killed John Straker."
+
+"And you will devote yourself to that?"
+
+"On the contrary, we both go back to London by the night train."
+
+I was thunderstruck by my friend's words. We had only been a few hours
+in Devonshire, and that he should give up an investigation which he had
+begun so brilliantly was quite incomprehensible to me. Not a word more
+could I draw from him until we were back at the trainer's house. The
+Colonel and the Inspector were awaiting us in the parlor.
+
+"My friend and I return to town by the night-express," said Holmes. "We
+have had a charming little breath of your beautiful Dartmoor air."
+
+The Inspector opened his eyes, and the Colonel's lip curled in a sneer.
+
+"So you despair of arresting the murderer of poor Straker," said he.
+
+Holmes shrugged his shoulders. "There are certainly grave difficulties
+in the way," said he. "I have every hope, however, that your horse
+will start upon Tuesday, and I beg that you will have your jockey in
+readiness. Might I ask for a photograph of Mr. John Straker?"
+
+The Inspector took one from an envelope and handed it to him.
+
+"My dear Gregory, you anticipate all my wants. If I might ask you to
+wait here for an instant, I have a question which I should like to put
+to the maid."
+
+"I must say that I am rather disappointed in our London consultant,"
+said Colonel Ross, bluntly, as my friend left the room. "I do not see
+that we are any further than when he came."
+
+"At least you have his assurance that your horse will run," said I.
+
+"Yes, I have his assurance," said the Colonel, with a shrug of his
+shoulders. "I should prefer to have the horse."
+
+I was about to make some reply in defence of my friend when he entered
+the room again.
+
+"Now, gentlemen," said he, "I am quite ready for Tavistock."
+
+As we stepped into the carriage one of the stable-lads held the door
+open for us. A sudden idea seemed to occur to Holmes, for he leaned
+forward and touched the lad upon the sleeve.
+
+"You have a few sheep in the paddock," he said. "Who attends to them?"
+
+"I do, sir."
+
+"Have you noticed anything amiss with them of late?"
+
+"Well, sir, not of much account; but three of them have gone lame, sir."
+
+I could see that Holmes was extremely pleased, for he chuckled and
+rubbed his hands together.
+
+"A long shot, Watson; a very long shot," said he, pinching my arm.
+"Gregory, let me recommend to your attention this singular epidemic
+among the sheep. Drive on, coachman!"
+
+Colonel Ross still wore an expression which showed the poor opinion
+which he had formed of my companion's ability, but I saw by the
+Inspector's face that his attention had been keenly aroused.
+
+"You consider that to be important?" he asked.
+
+"Exceedingly so."
+
+"Is there any point to which you would wish to draw my attention?"
+
+"To the curious incident of the dog in the night-time."
+
+"The dog did nothing in the night-time."
+
+"That was the curious incident," remarked Sherlock Holmes.
+
+
+Four days later Holmes and I were again in the train, bound for
+Winchester to see the race for the Wessex Cup. Colonel Ross met us by
+appointment outside the station, and we drove in his drag to the course
+beyond the town. His face was grave, and his manner was cold in the
+extreme.
+
+"I have seen nothing of my horse," said he.
+
+"I suppose that you would know him when you saw him?" asked Holmes.
+
+The Colonel was very angry. "I have been on the turf for twenty years,
+and never was asked such a question as that before," said he. "A
+child would know Silver Blaze, with his white forehead and his mottled
+off-foreleg."
+
+"How is the betting?"
+
+"Well, that is the curious part of it. You could have got fifteen to one
+yesterday, but the price has become shorter and shorter, until you can
+hardly get three to one now."
+
+"Hum!" said Holmes. "Somebody knows something, that is clear."
+
+As the drag drew up in the enclosure near the grand stand I glanced at
+the card to see the entries.
+
+Wessex Plate [it ran] 50 sovs each h ft with 1000 sovs added for four
+and five year olds. Second, L300. Third, L200. New course (one mile and
+five furlongs). Mr. Heath Newton's The Negro. Red cap. Cinnamon jacket.
+Colonel Wardlaw's Pugilist. Pink cap. Blue and black jacket. Lord
+Backwater's Desborough. Yellow cap and sleeves. Colonel Ross's Silver
+Blaze. Black cap. Red jacket. Duke of Balmoral's Iris. Yellow and black
+stripes. Lord Singleford's Rasper. Purple cap. Black sleeves.
+
+"We scratched our other one, and put all hopes on your word," said the
+Colonel. "Why, what is that? Silver Blaze favorite?"
+
+"Five to four against Silver Blaze!" roared the ring. "Five to four
+against Silver Blaze! Five to fifteen against Desborough! Five to four
+on the field!"
+
+"There are the numbers up," I cried. "They are all six there."
+
+"All six there? Then my horse is running," cried the Colonel in great
+agitation. "But I don't see him. My colors have not passed."
+
+"Only five have passed. This must be he."
+
+As I spoke a powerful bay horse swept out from the weighing enclosure
+and cantered past us, bearing on its back the well-known black and red
+of the Colonel.
+
+"That's not my horse," cried the owner. "That beast has not a white hair
+upon its body. What is this that you have done, Mr. Holmes?"
+
+"Well, well, let us see how he gets on," said my friend, imperturbably.
+For a few minutes he gazed through my field-glass. "Capital! An
+excellent start!" he cried suddenly. "There they are, coming round the
+curve!"
+
+From our drag we had a superb view as they came up the straight. The six
+horses were so close together that a carpet could have covered them,
+but half way up the yellow of the Mapleton stable showed to the front.
+Before they reached us, however, Desborough's bolt was shot, and the
+Colonel's horse, coming away with a rush, passed the post a good six
+lengths before its rival, the Duke of Balmoral's Iris making a bad
+third.
+
+"It's my race, anyhow," gasped the Colonel, passing his hand over his
+eyes. "I confess that I can make neither head nor tail of it. Don't you
+think that you have kept up your mystery long enough, Mr. Holmes?"
+
+"Certainly, Colonel, you shall know everything. Let us all go round and
+have a look at the horse together. Here he is," he continued, as we made
+our way into the weighing enclosure, where only owners and their friends
+find admittance. "You have only to wash his face and his leg in spirits
+of wine, and you will find that he is the same old Silver Blaze as
+ever."
+
+"You take my breath away!"
+
+"I found him in the hands of a faker, and took the liberty of running
+him just as he was sent over."
+
+"My dear sir, you have done wonders. The horse looks very fit and well.
+It never went better in its life. I owe you a thousand apologies
+for having doubted your ability. You have done me a great service by
+recovering my horse. You would do me a greater still if you could lay
+your hands on the murderer of John Straker."
+
+"I have done so," said Holmes quietly.
+
+The Colonel and I stared at him in amazement. "You have got him! Where
+is he, then?"
+
+"He is here."
+
+"Here! Where?"
+
+"In my company at the present moment."
+
+The Colonel flushed angrily. "I quite recognize that I am under
+obligations to you, Mr. Holmes," said he, "but I must regard what you
+have just said as either a very bad joke or an insult."
+
+Sherlock Holmes laughed. "I assure you that I have not associated
+you with the crime, Colonel," said he. "The real murderer is standing
+immediately behind you." He stepped past and laid his hand upon the
+glossy neck of the thoroughbred.
+
+"The horse!" cried both the Colonel and myself.
+
+"Yes, the horse. And it may lessen his guilt if I say that it was
+done in self-defence, and that John Straker was a man who was entirely
+unworthy of your confidence. But there goes the bell, and as I stand
+to win a little on this next race, I shall defer a lengthy explanation
+until a more fitting time."
+
+
+
+We had the corner of a Pullman car to ourselves that evening as we
+whirled back to London, and I fancy that the journey was a short one
+to Colonel Ross as well as to myself, as we listened to our
+companion's narrative of the events which had occurred at the Dartmoor
+training-stables upon the Monday night, and the means by which he had
+unravelled them.
+
+"I confess," said he, "that any theories which I had formed from
+the newspaper reports were entirely erroneous. And yet there were
+indications there, had they not been overlaid by other details which
+concealed their true import. I went to Devonshire with the conviction
+that Fitzroy Simpson was the true culprit, although, of course, I saw
+that the evidence against him was by no means complete. It was while I
+was in the carriage, just as we reached the trainer's house, that the
+immense significance of the curried mutton occurred to me. You may
+remember that I was distrait, and remained sitting after you had all
+alighted. I was marvelling in my own mind how I could possibly have
+overlooked so obvious a clue."
+
+"I confess," said the Colonel, "that even now I cannot see how it helps
+us."
+
+"It was the first link in my chain of reasoning. Powdered opium is by no
+means tasteless. The flavor is not disagreeable, but it is perceptible.
+Were it mixed with any ordinary dish the eater would undoubtedly detect
+it, and would probably eat no more. A curry was exactly the medium
+which would disguise this taste. By no possible supposition could
+this stranger, Fitzroy Simpson, have caused curry to be served in
+the trainer's family that night, and it is surely too monstrous a
+coincidence to suppose that he happened to come along with powdered
+opium upon the very night when a dish happened to be served which would
+disguise the flavor. That is unthinkable. Therefore Simpson becomes
+eliminated from the case, and our attention centers upon Straker and
+his wife, the only two people who could have chosen curried mutton for
+supper that night. The opium was added after the dish was set aside
+for the stable-boy, for the others had the same for supper with no ill
+effects. Which of them, then, had access to that dish without the maid
+seeing them?
+
+"Before deciding that question I had grasped the significance of the
+silence of the dog, for one true inference invariably suggests others.
+The Simpson incident had shown me that a dog was kept in the stables,
+and yet, though some one had been in and had fetched out a horse, he
+had not barked enough to arouse the two lads in the loft. Obviously the
+midnight visitor was some one whom the dog knew well.
+
+"I was already convinced, or almost convinced, that John Straker went
+down to the stables in the dead of the night and took out Silver Blaze.
+For what purpose? For a dishonest one, obviously, or why should he drug
+his own stable-boy? And yet I was at a loss to know why. There have been
+cases before now where trainers have made sure of great sums of money
+by laying against their own horses, through agents, and then preventing
+them from winning by fraud. Sometimes it is a pulling jockey. Sometimes
+it is some surer and subtler means. What was it here? I hoped that the
+contents of his pockets might help me to form a conclusion.
+
+"And they did so. You cannot have forgotten the singular knife which was
+found in the dead man's hand, a knife which certainly no sane man would
+choose for a weapon. It was, as Dr. Watson told us, a form of knife
+which is used for the most delicate operations known in surgery. And it
+was to be used for a delicate operation that night. You must know, with
+your wide experience of turf matters, Colonel Ross, that it is possible
+to make a slight nick upon the tendons of a horse's ham, and to do it
+subcutaneously, so as to leave absolutely no trace. A horse so treated
+would develop a slight lameness, which would be put down to a strain in
+exercise or a touch of rheumatism, but never to foul play."
+
+"Villain! Scoundrel!" cried the Colonel.
+
+"We have here the explanation of why John Straker wished to take the
+horse out on to the moor. So spirited a creature would have certainly
+roused the soundest of sleepers when it felt the prick of the knife. It
+was absolutely necessary to do it in the open air."
+
+"I have been blind!" cried the Colonel. "Of course that was why he
+needed the candle, and struck the match."
+
+"Undoubtedly. But in examining his belongings I was fortunate enough to
+discover not only the method of the crime, but even its motives. As a
+man of the world, Colonel, you know that men do not carry other people's
+bills about in their pockets. We have most of us quite enough to do to
+settle our own. I at once concluded that Straker was leading a double
+life, and keeping a second establishment. The nature of the bill showed
+that there was a lady in the case, and one who had expensive tastes.
+Liberal as you are with your servants, one can hardly expect that they
+can buy twenty-guinea walking dresses for their ladies. I questioned
+Mrs. Straker as to the dress without her knowing it, and having
+satisfied myself that it had never reached her, I made a note of the
+milliner's address, and felt that by calling there with Straker's
+photograph I could easily dispose of the mythical Derbyshire.
+
+"From that time on all was plain. Straker had led out the horse to a
+hollow where his light would be invisible. Simpson in his flight had
+dropped his cravat, and Straker had picked it up--with some idea,
+perhaps, that he might use it in securing the horse's leg. Once in the
+hollow, he had got behind the horse and had struck a light; but the
+creature frightened at the sudden glare, and with the strange instinct
+of animals feeling that some mischief was intended, had lashed out, and
+the steel shoe had struck Straker full on the forehead. He had already,
+in spite of the rain, taken off his overcoat in order to do his delicate
+task, and so, as he fell, his knife gashed his thigh. Do I make it
+clear?"
+
+"Wonderful!" cried the Colonel. "Wonderful! You might have been there!"
+
+"My final shot was, I confess a very long one. It struck me that so
+astute a man as Straker would not undertake this delicate tendon-nicking
+without a little practice. What could he practice on? My eyes fell upon
+the sheep, and I asked a question which, rather to my surprise, showed
+that my surmise was correct.
+
+"When I returned to London I called upon the milliner, who had
+recognized Straker as an excellent customer of the name of Derbyshire,
+who had a very dashing wife, with a strong partiality for expensive
+dresses. I have no doubt that this woman had plunged him over head and
+ears in debt, and so led him into this miserable plot."
+
+"You have explained all but one thing," cried the Colonel. "Where was
+the horse?"
+
+"Ah, it bolted, and was cared for by one of your neighbors. We must have
+an amnesty in that direction, I think. This is Clapham Junction, if I am
+not mistaken, and we shall be in Victoria in less than ten minutes. If
+you care to smoke a cigar in our rooms, Colonel, I shall be happy to
+give you any other details which might interest you."
+
+
+
+
+Adventure II. The Yellow Face
+
+
+[In publishing these short sketches based upon the numerous cases in
+which my companion's singular gifts have made us the listeners to, and
+eventually the actors in, some strange drama, it is only natural that I
+should dwell rather upon his successes than upon his failures. And this
+not so much for the sake of his reputation--for, indeed, it was when
+he was at his wits' end that his energy and his versatility were most
+admirable--but because where he failed it happened too often that no one
+else succeeded, and that the tale was left forever without a conclusion.
+Now and again, however, it chanced that even when he erred, the truth
+was still discovered. I have noted of some half-dozen cases of the
+kind; the Adventure of the Musgrave Ritual and that which I am about to
+recount are the two which present the strongest features of interest.]
+
+Sherlock Holmes was a man who seldom took exercise for exercise's sake.
+Few men were capable of greater muscular effort, and he was undoubtedly
+one of the finest boxers of his weight that I have ever seen; but he
+looked upon aimless bodily exertion as a waste of energy, and he seldom
+bestirred himself save when there was some professional object to be
+served. Then he was absolutely untiring and indefatigable. That he
+should have kept himself in training under such circumstances is
+remarkable, but his diet was usually of the sparest, and his habits
+were simple to the verge of austerity. Save for the occasional use of
+cocaine, he had no vices, and he only turned to the drug as a protest
+against the monotony of existence when cases were scanty and the papers
+uninteresting.
+
+One day in early spring he had so far relaxed as to go for a walk with
+me in the Park, where the first faint shoots of green were breaking out
+upon the elms, and the sticky spear-heads of the chestnuts were just
+beginning to burst into their five-fold leaves. For two hours we rambled
+about together, in silence for the most part, as befits two men who know
+each other intimately. It was nearly five before we were back in Baker
+Street once more.
+
+"Beg pardon, sir," said our page-boy, as he opened the door. "There's
+been a gentleman here asking for you, sir."
+
+Holmes glanced reproachfully at me. "So much for afternoon walks!" said
+he. "Has this gentleman gone, then?"
+
+"Yes, sir."
+
+"Didn't you ask him in?"
+
+"Yes, sir; he came in."
+
+"How long did he wait?"
+
+"Half an hour, sir. He was a very restless gentleman, sir, a-walkin'
+and a-stampin' all the time he was here. I was waitin' outside the door,
+sir, and I could hear him. At last he outs into the passage, and he
+cries, 'Is that man never goin' to come?' Those were his very words,
+sir. 'You'll only need to wait a little longer,' says I. 'Then I'll wait
+in the open air, for I feel half choked,' says he. 'I'll be back before
+long.' And with that he ups and he outs, and all I could say wouldn't
+hold him back."
+
+"Well, well, you did your best," said Holmes, as we walked into our
+room. "It's very annoying, though, Watson. I was badly in need of
+a case, and this looks, from the man's impatience, as if it were of
+importance. Hullo! That's not your pipe on the table. He must have
+left his behind him. A nice old brier with a good long stem of what the
+tobacconists call amber. I wonder how many real amber mouthpieces there
+are in London? Some people think that a fly in it is a sign. Well, he
+must have been disturbed in his mind to leave a pipe behind him which he
+evidently values highly."
+
+"How do you know that he values it highly?" I asked.
+
+"Well, I should put the original cost of the pipe at seven and sixpence.
+Now it has, you see, been twice mended, once in the wooden stem and once
+in the amber. Each of these mends, done, as you observe, with silver
+bands, must have cost more than the pipe did originally. The man must
+value the pipe highly when he prefers to patch it up rather than buy a
+new one with the same money."
+
+"Anything else?" I asked, for Holmes was turning the pipe about in his
+hand, and staring at it in his peculiar pensive way.
+
+He held it up and tapped on it with his long, thin fore-finger, as a
+professor might who was lecturing on a bone.
+
+"Pipes are occasionally of extraordinary interest," said he. "Nothing
+has more individuality, save perhaps watches and bootlaces. The
+indications here, however, are neither very marked nor very important.
+The owner is obviously a muscular man, left-handed, with an excellent
+set of teeth, careless in his habits, and with no need to practise
+economy."
+
+My friend threw out the information in a very offhand way, but I saw
+that he cocked his eye at me to see if I had followed his reasoning.
+
+"You think a man must be well-to-do if he smokes a seven-shilling pipe,"
+said I.
+
+"This is Grosvenor mixture at eightpence an ounce," Holmes answered,
+knocking a little out on his palm. "As he might get an excellent smoke
+for half the price, he has no need to practise economy."
+
+"And the other points?"
+
+"He has been in the habit of lighting his pipe at lamps and gas-jets.
+You can see that it is quite charred all down one side. Of course a
+match could not have done that. Why should a man hold a match to the
+side of his pipe? But you cannot light it at a lamp without getting the
+bowl charred. And it is all on the right side of the pipe. From that I
+gather that he is a left-handed man. You hold your own pipe to the lamp,
+and see how naturally you, being right-handed, hold the left side to the
+flame. You might do it once the other way, but not as a constancy. This
+has always been held so. Then he has bitten through his amber. It takes
+a muscular, energetic fellow, and one with a good set of teeth, to do
+that. But if I am not mistaken I hear him upon the stair, so we shall
+have something more interesting than his pipe to study."
+
+An instant later our door opened, and a tall young man entered the room.
+He was well but quietly dressed in a dark-gray suit, and carried a brown
+wide-awake in his hand. I should have put him at about thirty, though he
+was really some years older.
+
+"I beg your pardon," said he, with some embarrassment; "I suppose I
+should have knocked. Yes, of course I should have knocked. The fact
+is that I am a little upset, and you must put it all down to that." He
+passed his hand over his forehead like a man who is half dazed, and then
+fell rather than sat down upon a chair.
+
+"I can see that you have not slept for a night or two," said Holmes,
+in his easy, genial way. "That tries a man's nerves more than work, and
+more even than pleasure. May I ask how I can help you?"
+
+"I wanted your advice, sir. I don't know what to do and my whole life
+seems to have gone to pieces."
+
+"You wish to employ me as a consulting detective?"
+
+"Not that only. I want your opinion as a judicious man--as a man of the
+world. I want to know what I ought to do next. I hope to God you'll be
+able to tell me."
+
+He spoke in little, sharp, jerky outbursts, and it seemed to me that to
+speak at all was very painful to him, and that his will all through was
+overriding his inclinations.
+
+"It's a very delicate thing," said he. "One does not like to speak of
+one's domestic affairs to strangers. It seems dreadful to discuss the
+conduct of one's wife with two men whom I have never seen before. It's
+horrible to have to do it. But I've got to the end of my tether, and I
+must have advice."
+
+"My dear Mr. Grant Munro--" began Holmes.
+
+Our visitor sprang from his chair. "What!" he cried, "you know my name?"
+
+"If you wish to preserve your incognito," said Holmes, smiling, "I would
+suggest that you cease to write your name upon the lining of your
+hat, or else that you turn the crown towards the person whom you are
+addressing. I was about to say that my friend and I have listened to a
+good many strange secrets in this room, and that we have had the good
+fortune to bring peace to many troubled souls. I trust that we may do as
+much for you. Might I beg you, as time may prove to be of importance, to
+furnish me with the facts of your case without further delay?"
+
+Our visitor again passed his hand over his forehead, as if he found it
+bitterly hard. From every gesture and expression I could see that he was
+a reserved, self-contained man, with a dash of pride in his nature, more
+likely to hide his wounds than to expose them. Then suddenly, with a
+fierce gesture of his closed hand, like one who throws reserve to the
+winds, he began.
+
+"The facts are these, Mr. Holmes," said he. "I am a married man, and
+have been so for three years. During that time my wife and I have loved
+each other as fondly and lived as happily as any two that ever were
+joined. We have not had a difference, not one, in thought or word or
+deed. And now, since last Monday, there has suddenly sprung up a barrier
+between us, and I find that there is something in her life and in her
+thought of which I know as little as if she were the woman who brushes
+by me in the street. We are estranged, and I want to know why.
+
+"Now there is one thing that I want to impress upon you before I go
+any further, Mr. Holmes. Effie loves me. Don't let there be any mistake
+about that. She loves me with her whole heart and soul, and never more
+than now. I know it. I feel it. I don't want to argue about that. A man
+can tell easily enough when a woman loves him. But there's this secret
+between us, and we can never be the same until it is cleared."
+
+"Kindly let me have the facts, Mr. Munro," said Holmes, with some
+impatience.
+
+"I'll tell you what I know about Effie's history. She was a widow when
+I met her first, though quite young--only twenty-five. Her name then was
+Mrs. Hebron. She went out to America when she was young, and lived in
+the town of Atlanta, where she married this Hebron, who was a lawyer
+with a good practice. They had one child, but the yellow fever broke out
+badly in the place, and both husband and child died of it. I have seen
+his death certificate. This sickened her of America, and she came back
+to live with a maiden aunt at Pinner, in Middlesex. I may mention that
+her husband had left her comfortably off, and that she had a capital of
+about four thousand five hundred pounds, which had been so well invested
+by him that it returned an average of seven per cent. She had only been
+six months at Pinner when I met her; we fell in love with each other,
+and we married a few weeks afterwards.
+
+"I am a hop merchant myself, and as I have an income of seven or
+eight hundred, we found ourselves comfortably off, and took a nice
+eighty-pound-a-year villa at Norbury. Our little place was very
+countrified, considering that it is so close to town. We had an inn and
+two houses a little above us, and a single cottage at the other side of
+the field which faces us, and except those there were no houses until
+you got half way to the station. My business took me into town at
+certain seasons, but in summer I had less to do, and then in our country
+home my wife and I were just as happy as could be wished. I tell you
+that there never was a shadow between us until this accursed affair
+began.
+
+"There's one thing I ought to tell you before I go further. When we
+married, my wife made over all her property to me--rather against my
+will, for I saw how awkward it would be if my business affairs went
+wrong. However, she would have it so, and it was done. Well, about six
+weeks ago she came to me.
+
+"'Jack,' said she, 'when you took my money you said that if ever I
+wanted any I was to ask you for it.'
+
+"'Certainly,' said I. 'It's all your own.'
+
+"'Well,' said she, 'I want a hundred pounds.'
+
+"I was a bit staggered at this, for I had imagined it was simply a new
+dress or something of the kind that she was after.
+
+"'What on earth for?' I asked.
+
+"'Oh,' said she, in her playful way, 'you said that you were only my
+banker, and bankers never ask questions, you know.'
+
+"'If you really mean it, of course you shall have the money,' said I.
+
+"'Oh, yes, I really mean it.'
+
+"'And you won't tell me what you want it for?'
+
+"'Some day, perhaps, but not just at present, Jack.'
+
+"So I had to be content with that, though it was the first time that
+there had ever been any secret between us. I gave her a check, and I
+never thought any more of the matter. It may have nothing to do with
+what came afterwards, but I thought it only right to mention it.
+
+"Well, I told you just now that there is a cottage not far from our
+house. There is just a field between us, but to reach it you have to
+go along the road and then turn down a lane. Just beyond it is a nice
+little grove of Scotch firs, and I used to be very fond of strolling
+down there, for trees are always a neighborly kind of things. The
+cottage had been standing empty this eight months, and it was a pity,
+for it was a pretty two-storied place, with an old-fashioned porch and
+honeysuckle about it. I have stood many a time and thought what a neat
+little homestead it would make.
+
+"Well, last Monday evening I was taking a stroll down that way, when
+I met an empty van coming up the lane, and saw a pile of carpets and
+things lying about on the grass-plot beside the porch. It was clear that
+the cottage had at last been let. I walked past it, and wondered what
+sort of folk they were who had come to live so near us. And as I looked
+I suddenly became aware that a face was watching me out of one of the
+upper windows.
+
+"I don't know what there was about that face, Mr. Holmes, but it seemed
+to send a chill right down my back. I was some little way off, so that
+I could not make out the features, but there was something unnatural and
+inhuman about the face. That was the impression that I had, and I moved
+quickly forwards to get a nearer view of the person who was watching
+me. But as I did so the face suddenly disappeared, so suddenly that it
+seemed to have been plucked away into the darkness of the room. I stood
+for five minutes thinking the business over, and trying to analyze my
+impressions. I could not tell if the face were that of a man or a
+woman. It had been too far from me for that. But its color was what had
+impressed me most. It was of a livid chalky white, and with something
+set and rigid about it which was shockingly unnatural. So disturbed
+was I that I determined to see a little more of the new inmates of
+the cottage. I approached and knocked at the door, which was instantly
+opened by a tall, gaunt woman with a harsh, forbidding face.
+
+"'What may you be wantin'?' she asked, in a Northern accent.
+
+"'I am your neighbor over yonder,' said I, nodding towards my house. 'I
+see that you have only just moved in, so I thought that if I could be of
+any help to you in any--'
+
+"'Ay, we'll just ask ye when we want ye,' said she, and shut the door
+in my face. Annoyed at the churlish rebuff, I turned my back and walked
+home. All evening, though I tried to think of other things, my mind
+would still turn to the apparition at the window and the rudeness of the
+woman. I determined to say nothing about the former to my wife, for
+she is a nervous, highly strung woman, and I had no wish that she would
+share the unpleasant impression which had been produced upon myself. I
+remarked to her, however, before I fell asleep, that the cottage was now
+occupied, to which she returned no reply.
+
+"I am usually an extremely sound sleeper. It has been a standing jest
+in the family that nothing could ever wake me during the night. And yet
+somehow on that particular night, whether it may have been the slight
+excitement produced by my little adventure or not I know not, but
+I slept much more lightly than usual. Half in my dreams I was dimly
+conscious that something was going on in the room, and gradually became
+aware that my wife had dressed herself and was slipping on her mantle
+and her bonnet. My lips were parted to murmur out some sleepy words of
+surprise or remonstrance at this untimely preparation, when suddenly my
+half-opened eyes fell upon her face, illuminated by the candle-light,
+and astonishment held me dumb. She wore an expression such as I had
+never seen before--such as I should have thought her incapable of
+assuming. She was deadly pale and breathing fast, glancing furtively
+towards the bed as she fastened her mantle, to see if she had disturbed
+me. Then, thinking that I was still asleep, she slipped noiselessly from
+the room, and an instant later I heard a sharp creaking which could only
+come from the hinges of the front door. I sat up in bed and rapped my
+knuckles against the rail to make certain that I was truly awake. Then
+I took my watch from under the pillow. It was three in the morning. What
+on this earth could my wife be doing out on the country road at three in
+the morning?
+
+"I had sat for about twenty minutes turning the thing over in my mind
+and trying to find some possible explanation. The more I thought, the
+more extraordinary and inexplicable did it appear. I was still puzzling
+over it when I heard the door gently close again, and her footsteps
+coming up the stairs.
+
+"'Where in the world have you been, Effie?' I asked as she entered.
+
+"She gave a violent start and a kind of gasping cry when I spoke, and
+that cry and start troubled me more than all the rest, for there was
+something indescribably guilty about them. My wife had always been
+a woman of a frank, open nature, and it gave me a chill to see her
+slinking into her own room, and crying out and wincing when her own
+husband spoke to her.
+
+"'You awake, Jack!' she cried, with a nervous laugh. 'Why, I thought
+that nothing could awake you.'
+
+"'Where have you been?' I asked, more sternly.
+
+"'I don't wonder that you are surprised,' said she, and I could see that
+her fingers were trembling as she undid the fastenings of her mantle.
+'Why, I never remember having done such a thing in my life before. The
+fact is that I felt as though I were choking, and had a perfect longing
+for a breath of fresh air. I really think that I should have fainted if
+I had not gone out. I stood at the door for a few minutes, and now I am
+quite myself again.'
+
+"All the time that she was telling me this story she never once looked
+in my direction, and her voice was quite unlike her usual tones. It
+was evident to me that she was saying what was false. I said nothing
+in reply, but turned my face to the wall, sick at heart, with my mind
+filled with a thousand venomous doubts and suspicions. What was it that
+my wife was concealing from me? Where had she been during that strange
+expedition? I felt that I should have no peace until I knew, and yet I
+shrank from asking her again after once she had told me what was false.
+All the rest of the night I tossed and tumbled, framing theory after
+theory, each more unlikely than the last.
+
+"I should have gone to the City that day, but I was too disturbed in my
+mind to be able to pay attention to business matters. My wife seemed
+to be as upset as myself, and I could see from the little questioning
+glances which she kept shooting at me that she understood that I
+disbelieved her statement, and that she was at her wits' end what to do.
+We hardly exchanged a word during breakfast, and immediately afterwards
+I went out for a walk, that I might think the matter out in the fresh
+morning air.
+
+"I went as far as the Crystal Palace, spent an hour in the grounds, and
+was back in Norbury by one o'clock. It happened that my way took me past
+the cottage, and I stopped for an instant to look at the windows, and to
+see if I could catch a glimpse of the strange face which had looked
+out at me on the day before. As I stood there, imagine my surprise, Mr.
+Holmes, when the door suddenly opened and my wife walked out.
+
+"I was struck dumb with astonishment at the sight of her; but my
+emotions were nothing to those which showed themselves upon her face
+when our eyes met. She seemed for an instant to wish to shrink back
+inside the house again; and then, seeing how useless all concealment
+must be, she came forward, with a very white face and frightened eyes
+which belied the smile upon her lips.
+
+"'Ah, Jack,' she said, 'I have just been in to see if I can be of any
+assistance to our new neighbors. Why do you look at me like that, Jack?
+You are not angry with me?'
+
+"'So,' said I, 'this is where you went during the night.'
+
+"'What do you mean?' she cried.
+
+"'You came here. I am sure of it. Who are these people, that you should
+visit them at such an hour?'
+
+"'I have not been here before.'
+
+"'How can you tell me what you know is false?' I cried. 'Your very voice
+changes as you speak. When have I ever had a secret from you? I shall
+enter that cottage, and I shall probe the matter to the bottom.'
+
+"'No, no, Jack, for God's sake!' she gasped, in uncontrollable emotion.
+Then, as I approached the door, she seized my sleeve and pulled me back
+with convulsive strength.
+
+"'I implore you not to do this, Jack,' she cried. 'I swear that I will
+tell you everything some day, but nothing but misery can come of it if
+you enter that cottage.' Then, as I tried to shake her off, she clung to
+me in a frenzy of entreaty.
+
+"'Trust me, Jack!' she cried. 'Trust me only this once. You will never
+have cause to regret it. You know that I would not have a secret from
+you if it were not for your own sake. Our whole lives are at stake in
+this. If you come home with me, all will be well. If you force your way
+into that cottage, all is over between us.'
+
+"There was such earnestness, such despair, in her manner that her words
+arrested me, and I stood irresolute before the door.
+
+"'I will trust you on one condition, and on one condition only,' said I
+at last. 'It is that this mystery comes to an end from now. You are
+at liberty to preserve your secret, but you must promise me that there
+shall be no more nightly visits, no more doings which are kept from my
+knowledge. I am willing to forget those which are passed if you will
+promise that there shall be no more in the future.'
+
+"'I was sure that you would trust me,' she cried, with a great sigh of
+relief. 'It shall be just as you wish. Come away--oh, come away up to
+the house.'
+
+"Still pulling at my sleeve, she led me away from the cottage. As we
+went I glanced back, and there was that yellow livid face watching us
+out of the upper window. What link could there be between that creature
+and my wife? Or how could the coarse, rough woman whom I had seen the
+day before be connected with her? It was a strange puzzle, and yet I
+knew that my mind could never know ease again until I had solved it.
+
+"For two days after this I stayed at home, and my wife appeared to abide
+loyally by our engagement, for, as far as I know, she never stirred out
+of the house. On the third day, however, I had ample evidence that
+her solemn promise was not enough to hold her back from this secret
+influence which drew her away from her husband and her duty.
+
+"I had gone into town on that day, but I returned by the 2.40 instead of
+the 3.36, which is my usual train. As I entered the house the maid ran
+into the hall with a startled face.
+
+"'Where is your mistress?' I asked.
+
+"'I think that she has gone out for a walk,' she answered.
+
+"My mind was instantly filled with suspicion. I rushed upstairs to make
+sure that she was not in the house. As I did so I happened to glance out
+of one of the upper windows, and saw the maid with whom I had just been
+speaking running across the field in the direction of the cottage. Then
+of course I saw exactly what it all meant. My wife had gone over there,
+and had asked the servant to call her if I should return. Tingling with
+anger, I rushed down and hurried across, determined to end the matter
+once and forever. I saw my wife and the maid hurrying back along the
+lane, but I did not stop to speak with them. In the cottage lay the
+secret which was casting a shadow over my life. I vowed that, come what
+might, it should be a secret no longer. I did not even knock when I
+reached it, but turned the handle and rushed into the passage.
+
+"It was all still and quiet upon the ground floor. In the kitchen a
+kettle was singing on the fire, and a large black cat lay coiled up in
+the basket; but there was no sign of the woman whom I had seen before.
+I ran into the other room, but it was equally deserted. Then I rushed up
+the stairs, only to find two other rooms empty and deserted at the top.
+There was no one at all in the whole house. The furniture and pictures
+were of the most common and vulgar description, save in the one chamber
+at the window of which I had seen the strange face. That was comfortable
+and elegant, and all my suspicions rose into a fierce bitter flame when
+I saw that on the mantelpiece stood a copy of a full-length photograph
+of my wife, which had been taken at my request only three months ago.
+
+"I stayed long enough to make certain that the house was absolutely
+empty. Then I left it, feeling a weight at my heart such as I had never
+had before. My wife came out into the hall as I entered my house; but I
+was too hurt and angry to speak with her, and pushing past her, I made
+my way into my study. She followed me, however, before I could close the
+door.
+
+"'I am sorry that I broke my promise, Jack,' said she; 'but if you knew
+all the circumstances I am sure that you would forgive me.'
+
+"'Tell me everything, then,' said I.
+
+"'I cannot, Jack, I cannot,' she cried.
+
+"'Until you tell me who it is that has been living in that cottage, and
+who it is to whom you have given that photograph, there can never be any
+confidence between us,' said I, and breaking away from her, I left the
+house. That was yesterday, Mr. Holmes, and I have not seen her since,
+nor do I know anything more about this strange business. It is the first
+shadow that has come between us, and it has so shaken me that I do not
+know what I should do for the best. Suddenly this morning it occurred to
+me that you were the man to advise me, so I have hurried to you now, and
+I place myself unreservedly in your hands. If there is any point which I
+have not made clear, pray question me about it. But, above all, tell me
+quickly what I am to do, for this misery is more than I can bear."
+
+Holmes and I had listened with the utmost interest to this extraordinary
+statement, which had been delivered in the jerky, broken fashion of a
+man who is under the influence of extreme emotions. My companion sat
+silent for some time, with his chin upon his hand, lost in thought.
+
+"Tell me," said he at last, "could you swear that this was a man's face
+which you saw at the window?"
+
+"Each time that I saw it I was some distance away from it, so that it is
+impossible for me to say."
+
+"You appear, however, to have been disagreeably impressed by it."
+
+"It seemed to be of an unnatural color, and to have a strange rigidity
+about the features. When I approached, it vanished with a jerk."
+
+"How long is it since your wife asked you for a hundred pounds?"
+
+"Nearly two months."
+
+"Have you ever seen a photograph of her first husband?"
+
+"No; there was a great fire at Atlanta very shortly after his death, and
+all her papers were destroyed."
+
+"And yet she had a certificate of death. You say that you saw it."
+
+"Yes; she got a duplicate after the fire."
+
+"Did you ever meet any one who knew her in America?"
+
+"No."
+
+"Did she ever talk of revisiting the place?"
+
+"No."
+
+"Or get letters from it?"
+
+"No."
+
+"Thank you. I should like to think over the matter a little now. If the
+cottage is now permanently deserted we may have some difficulty. If, on
+the other hand, as I fancy is more likely, the inmates were warned of
+your coming, and left before you entered yesterday, then they may be
+back now, and we should clear it all up easily. Let me advise you, then,
+to return to Norbury, and to examine the windows of the cottage again.
+If you have reason to believe that it is inhabited, do not force your
+way in, but send a wire to my friend and me. We shall be with you within
+an hour of receiving it, and we shall then very soon get to the bottom
+of the business."
+
+"And if it is still empty?"
+
+"In that case I shall come out to-morrow and talk it over with you.
+Good-by; and, above all, do not fret until you know that you really have
+a cause for it."
+
+"I am afraid that this is a bad business, Watson," said my companion, as
+he returned after accompanying Mr. Grant Munro to the door. "What do you
+make of it?"
+
+"It had an ugly sound," I answered.
+
+"Yes. There's blackmail in it, or I am much mistaken."
+
+"And who is the blackmailer?"
+
+"Well, it must be the creature who lives in the only comfortable room
+in the place, and has her photograph above his fireplace. Upon my word,
+Watson, there is something very attractive about that livid face at the
+window, and I would not have missed the case for worlds."
+
+"You have a theory?"
+
+"Yes, a provisional one. But I shall be surprised if it does not turn
+out to be correct. This woman's first husband is in that cottage."
+
+"Why do you think so?"
+
+"How else can we explain her frenzied anxiety that her second one should
+not enter it? The facts, as I read them, are something like this:
+This woman was married in America. Her husband developed some hateful
+qualities; or shall we say that he contracted some loathsome disease,
+and became a leper or an imbecile? She flies from him at last, returns
+to England, changes her name, and starts her life, as she thinks,
+afresh. She has been married three years, and believes that her position
+is quite secure, having shown her husband the death certificate of
+some man whose name she has assumed, when suddenly her whereabouts
+is discovered by her first husband; or, we may suppose, by some
+unscrupulous woman who has attached herself to the invalid. They write
+to the wife, and threaten to come and expose her. She asks for a hundred
+pounds, and endeavors to buy them off. They come in spite of it, and
+when the husband mentions casually to the wife that there are new-comers
+in the cottage, she knows in some way that they are her pursuers. She
+waits until her husband is asleep, and then she rushes down to endeavor
+to persuade them to leave her in peace. Having no success, she goes
+again next morning, and her husband meets her, as he has told us, as
+she comes out. She promises him then not to go there again, but two days
+afterwards the hope of getting rid of those dreadful neighbors was too
+strong for her, and she made another attempt, taking down with her the
+photograph which had probably been demanded from her. In the midst of
+this interview the maid rushed in to say that the master had come home,
+on which the wife, knowing that he would come straight down to the
+cottage, hurried the inmates out at the back door, into the grove of
+fir-trees, probably, which was mentioned as standing near. In this way
+he found the place deserted. I shall be very much surprised, however, if
+it is still so when he reconnoitres it this evening. What do you think
+of my theory?"
+
+"It is all surmise."
+
+"But at least it covers all the facts. When new facts come to our
+knowledge which cannot be covered by it, it will be time enough to
+reconsider it. We can do nothing more until we have a message from our
+friend at Norbury."
+
+But we had not a very long time to wait for that. It came just as we had
+finished our tea. "The cottage is still tenanted," it said. "Have seen
+the face again at the window. Will meet the seven o'clock train, and
+will take no steps until you arrive."
+
+
+He was waiting on the platform when we stepped out, and we could see in
+the light of the station lamps that he was very pale, and quivering with
+agitation.
+
+"They are still there, Mr. Holmes," said he, laying his hand hard upon
+my friend's sleeve. "I saw lights in the cottage as I came down. We
+shall settle it now once and for all."
+
+"What is your plan, then?" asked Holmes, as he walked down the dark
+tree-lined road.
+
+"I am going to force my way in and see for myself who is in the house. I
+wish you both to be there as witnesses."
+
+"You are quite determined to do this, in spite of your wife's warning
+that it is better that you should not solve the mystery?"
+
+"Yes, I am determined."
+
+"Well, I think that you are in the right. Any truth is better than
+indefinite doubt. We had better go up at once. Of course, legally, we
+are putting ourselves hopelessly in the wrong; but I think that it is
+worth it."
+
+It was a very dark night, and a thin rain began to fall as we turned
+from the high road into a narrow lane, deeply rutted, with hedges on
+either side. Mr. Grant Munro pushed impatiently forward, however, and we
+stumbled after him as best we could.
+
+"There are the lights of my house," he murmured, pointing to a glimmer
+among the trees. "And here is the cottage which I am going to enter."
+
+We turned a corner in the lane as he spoke, and there was the building
+close beside us. A yellow bar falling across the black foreground showed
+that the door was not quite closed, and one window in the upper story
+was brightly illuminated. As we looked, we saw a dark blur moving across
+the blind.
+
+"There is that creature!" cried Grant Munro. "You can see for yourselves
+that some one is there. Now follow me, and we shall soon know all."
+
+We approached the door; but suddenly a woman appeared out of the shadow
+and stood in the golden track of the lamp-light. I could not see her
+face in the darkness, but her arms were thrown out in an attitude of
+entreaty.
+
+"For God's sake, don't Jack!" she cried. "I had a presentiment that you
+would come this evening. Think better of it, dear! Trust me again, and
+you will never have cause to regret it."
+
+"I have trusted you too long, Effie," he cried, sternly. "Leave go of
+me! I must pass you. My friends and I are going to settle this matter
+once and forever!" He pushed her to one side, and we followed closely
+after him. As he threw the door open an old woman ran out in front of
+him and tried to bar his passage, but he thrust her back, and an instant
+afterwards we were all upon the stairs. Grant Munro rushed into the
+lighted room at the top, and we entered at his heels.
+
+It was a cosey, well-furnished apartment, with two candles burning upon
+the table and two upon the mantelpiece. In the corner, stooping over a
+desk, there sat what appeared to be a little girl. Her face was turned
+away as we entered, but we could see that she was dressed in a red
+frock, and that she had long white gloves on. As she whisked round
+to us, I gave a cry of surprise and horror. The face which she turned
+towards us was of the strangest livid tint, and the features were
+absolutely devoid of any expression. An instant later the mystery was
+explained. Holmes, with a laugh, passed his hand behind the child's
+ear, a mask peeled off from her countenance, and there was a little coal
+black negress, with all her white teeth flashing in amusement at our
+amazed faces. I burst out laughing, out of sympathy with her merriment;
+but Grant Munro stood staring, with his hand clutching his throat.
+
+"My God!" he cried. "What can be the meaning of this?"
+
+"I will tell you the meaning of it," cried the lady, sweeping into
+the room with a proud, set face. "You have forced me, against my own
+judgment, to tell you, and now we must both make the best of it. My
+husband died at Atlanta. My child survived."
+
+"Your child?"
+
+She drew a large silver locket from her bosom. "You have never seen this
+open."
+
+"I understood that it did not open."
+
+She touched a spring, and the front hinged back. There was a portrait
+within of a man strikingly handsome and intelligent-looking, but bearing
+unmistakable signs upon his features of his African descent.
+
+"That is John Hebron, of Atlanta," said the lady, "and a nobler man
+never walked the earth. I cut myself off from my race in order to wed
+him, but never once while he lived did I for an instant regret it. It
+was our misfortune that our only child took after his people rather than
+mine. It is often so in such matches, and little Lucy is darker far than
+ever her father was. But dark or fair, she is my own dear little girlie,
+and her mother's pet." The little creature ran across at the words and
+nestled up against the lady's dress. "When I left her in America," she
+continued, "it was only because her health was weak, and the change
+might have done her harm. She was given to the care of a faithful Scotch
+woman who had once been our servant. Never for an instant did I dream
+of disowning her as my child. But when chance threw you in my way, Jack,
+and I learned to love you, I feared to tell you about my child. God
+forgive me, I feared that I should lose you, and I had not the courage
+to tell you. I had to choose between you, and in my weakness I turned
+away from my own little girl. For three years I have kept her existence
+a secret from you, but I heard from the nurse, and I knew that all was
+well with her. At last, however, there came an overwhelming desire to
+see the child once more. I struggled against it, but in vain. Though I
+knew the danger, I determined to have the child over, if it were but
+for a few weeks. I sent a hundred pounds to the nurse, and I gave her
+instructions about this cottage, so that she might come as a neighbor,
+without my appearing to be in any way connected with her. I pushed my
+precautions so far as to order her to keep the child in the house during
+the daytime, and to cover up her little face and hands so that even
+those who might see her at the window should not gossip about there
+being a black child in the neighborhood. If I had been less cautious
+I might have been more wise, but I was half crazy with fear that you
+should learn the truth.
+
+"It was you who told me first that the cottage was occupied. I should
+have waited for the morning, but I could not sleep for excitement, and
+so at last I slipped out, knowing how difficult it is to awake you. But
+you saw me go, and that was the beginning of my troubles. Next day you
+had my secret at your mercy, but you nobly refrained from pursuing your
+advantage. Three days later, however, the nurse and child only just
+escaped from the back door as you rushed in at the front one. And now
+to-night you at last know all, and I ask you what is to become of us, my
+child and me?" She clasped her hands and waited for an answer.
+
+It was a long ten minutes before Grant Munro broke the silence, and
+when his answer came it was one of which I love to think. He lifted
+the little child, kissed her, and then, still carrying her, he held his
+other hand out to his wife and turned towards the door.
+
+"We can talk it over more comfortably at home," said he. "I am not a
+very good man, Effie, but I think that I am a better one than you have
+given me credit for being."
+
+Holmes and I followed them down the lane, and my friend plucked at my
+sleeve as we came out.
+
+"I think," said he, "that we shall be of more use in London than in
+Norbury."
+
+Not another word did he say of the case until late that night, when he
+was turning away, with his lighted candle, for his bedroom.
+
+"Watson," said he, "if it should ever strike you that I am getting a
+little over-confident in my powers, or giving less pains to a case
+than it deserves, kindly whisper 'Norbury' in my ear, and I shall be
+infinitely obliged to you."
+
+
+
+
+Adventure III. The Stock-Broker's Clerk
+
+
+Shortly after my marriage I had bought a connection in the Paddington
+district. Old Mr. Farquhar, from whom I purchased it, had at one time an
+excellent general practice; but his age, and an affliction of the nature
+of St. Vitus's dance from which he suffered, had very much thinned it.
+The public not unnaturally goes on the principle that he who would heal
+others must himself be whole, and looks askance at the curative powers
+of the man whose own case is beyond the reach of his drugs. Thus as my
+predecessor weakened his practice declined, until when I purchased
+it from him it had sunk from twelve hundred to little more than three
+hundred a year. I had confidence, however, in my own youth and energy,
+and was convinced that in a very few years the concern would be as
+flourishing as ever.
+
+For three months after taking over the practice I was kept very closely
+at work, and saw little of my friend Sherlock Holmes, for I was too busy
+to visit Baker Street, and he seldom went anywhere himself save upon
+professional business. I was surprised, therefore, when, one morning in
+June, as I sat reading the British Medical Journal after breakfast, I
+heard a ring at the bell, followed by the high, somewhat strident tones
+of my old companion's voice.
+
+"Ah, my dear Watson," said he, striding into the room, "I am very
+delighted to see you! I trust that Mrs. Watson has entirely recovered
+from all the little excitements connected with our adventure of the Sign
+of Four."
+
+"Thank you, we are both very well," said I, shaking him warmly by the
+hand.
+
+"And I hope, also," he continued, sitting down in the rocking-chair,
+"that the cares of medical practice have not entirely obliterated the
+interest which you used to take in our little deductive problems."
+
+"On the contrary," I answered, "it was only last night that I was
+looking over my old notes, and classifying some of our past results."
+
+"I trust that you don't consider your collection closed."
+
+"Not at all. I should wish nothing better than to have some more of such
+experiences."
+
+"To-day, for example?"
+
+"Yes, to-day, if you like."
+
+"And as far off as Birmingham?"
+
+"Certainly, if you wish it."
+
+"And the practice?"
+
+"I do my neighbor's when he goes. He is always ready to work off the
+debt."
+
+"Ha! Nothing could be better," said Holmes, leaning back in his chair
+and looking keenly at me from under his half closed lids. "I perceive
+that you have been unwell lately. Summer colds are always a little
+trying."
+
+"I was confined to the house by a severe chill for three days last week.
+I thought, however, that I had cast off every trace of it."
+
+"So you have. You look remarkably robust."
+
+"How, then, did you know of it?"
+
+"My dear fellow, you know my methods."
+
+"You deduced it, then?"
+
+"Certainly."
+
+"And from what?"
+
+"From your slippers."
+
+I glanced down at the new patent leathers which I was wearing. "How on
+earth--" I began, but Holmes answered my question before it was asked.
+
+"Your slippers are new," he said. "You could not have had them more than
+a few weeks. The soles which you are at this moment presenting to me are
+slightly scorched. For a moment I thought they might have got wet and
+been burned in the drying. But near the instep there is a small circular
+wafer of paper with the shopman's hieroglyphics upon it. Damp would of
+course have removed this. You had, then, been sitting with your feet
+outstretched to the fire, which a man would hardly do even in so wet a
+June as this if he were in his full health."
+
+Like all Holmes's reasoning the thing seemed simplicity itself when it
+was once explained. He read the thought upon my features, and his smile
+had a tinge of bitterness.
+
+"I am afraid that I rather give myself away when I explain," said he.
+"Results without causes are much more impressive. You are ready to come
+to Birmingham, then?"
+
+"Certainly. What is the case?"
+
+"You shall hear it all in the train. My client is outside in a
+four-wheeler. Can you come at once?"
+
+"In an instant." I scribbled a note to my neighbor, rushed upstairs to
+explain the matter to my wife, and joined Holmes upon the door-step.
+
+"Your neighbor is a doctor," said he, nodding at the brass plate.
+
+"Yes; he bought a practice as I did."
+
+"An old-established one?"
+
+"Just the same as mine. Both have been ever since the houses were
+built."
+
+"Ah! Then you got hold of the best of the two."
+
+"I think I did. But how do you know?"
+
+"By the steps, my boy. Yours are worn three inches deeper than his. But
+this gentleman in the cab is my client, Mr. Hall Pycroft. Allow me to
+introduce you to him. Whip your horse up, cabby, for we have only just
+time to catch our train."
+
+The man whom I found myself facing was a well built, fresh-complexioned
+young fellow, with a frank, honest face and a slight, crisp, yellow
+mustache. He wore a very shiny top hat and a neat suit of sober black,
+which made him look what he was--a smart young City man, of the class
+who have been labeled cockneys, but who give us our crack volunteer
+regiments, and who turn out more fine athletes and sportsmen than any
+body of men in these islands. His round, ruddy face was naturally full
+of cheeriness, but the corners of his mouth seemed to me to be pulled
+down in a half-comical distress. It was not, however, until we were
+all in a first-class carriage and well started upon our journey to
+Birmingham that I was able to learn what the trouble was which had
+driven him to Sherlock Holmes.
+
+"We have a clear run here of seventy minutes," Holmes remarked. "I
+want you, Mr. Hall Pycroft, to tell my friend your very interesting
+experience exactly as you have told it to me, or with more detail if
+possible. It will be of use to me to hear the succession of events
+again. It is a case, Watson, which may prove to have something in it, or
+may prove to have nothing, but which, at least, presents those unusual
+and outré features which are as dear to you as they are to me. Now, Mr.
+Pycroft, I shall not interrupt you again."
+
+Our young companion looked at me with a twinkle in his eye.
+
+"The worst of the story is," said he, "that I show myself up as such a
+confounded fool. Of course it may work out all right, and I don't see
+that I could have done otherwise; but if I have lost my crib and get
+nothing in exchange I shall feel what a soft Johnnie I have been. I'm
+not very good at telling a story, Dr. Watson, but it is like this with
+me:
+
+"I used to have a billet at Coxon & Woodhouse's, of Draper's Gardens,
+but they were let in early in the spring through the Venezuelan loan,
+as no doubt you remember, and came a nasty cropper. I had been with them
+five years, and old Coxon gave me a ripping good testimonial when
+the smash came, but of course we clerks were all turned adrift, the
+twenty-seven of us. I tried here and tried there, but there were lots of
+other chaps on the same lay as myself, and it was a perfect frost for a
+long time. I had been taking three pounds a week at Coxon's, and I had
+saved about seventy of them, but I soon worked my way through that and
+out at the other end. I was fairly at the end of my tether at last,
+and could hardly find the stamps to answer the advertisements or the
+envelopes to stick them to. I had worn out my boots paddling up office
+stairs, and I seemed just as far from getting a billet as ever.
+
+"At last I saw a vacancy at Mawson & Williams's, the great stock-broking
+firm in Lombard Street. I dare say E. C. Is not much in your line, but
+I can tell you that this is about the richest house in London.
+The advertisement was to be answered by letter only. I sent in my
+testimonial and application, but without the least hope of getting it.
+Back came an answer by return, saying that if I would appear next Monday
+I might take over my new duties at once, provided that my appearance was
+satisfactory. No one knows how these things are worked. Some people say
+that the manager just plunges his hand into the heap and takes the first
+that comes. Anyhow it was my innings that time, and I don't ever wish to
+feel better pleased. The screw was a pound a week rise, and the duties
+just about the same as at Coxon's.
+
+"And now I come to the queer part of the business. I was in diggings out
+Hampstead way, 17 Potter's Terrace. Well, I was sitting doing a smoke
+that very evening after I had been promised the appointment, when up
+came my landlady with a card which had 'Arthur Pinner, Financial Agent,'
+printed upon it. I had never heard the name before and could not imagine
+what he wanted with me; but, of course, I asked her to show him up. In
+he walked, a middle-sized, dark-haired, dark-eyed, black-bearded man,
+with a touch of the Sheeny about his nose. He had a brisk kind of way
+with him and spoke sharply, like a man who knew the value of time."
+
+"'Mr. Hall Pycroft, I believe?'" said he.
+
+"'Yes, sir,' I answered, pushing a chair towards him.
+
+"'Lately engaged at Coxon & Woodhouse's?'
+
+"'Yes, sir.'
+
+"'And now on the staff of Mawson's.'
+
+"'Quite so.'
+
+"'Well,' said he, 'the fact is that I have heard some really
+extraordinary stories about your financial ability. You remember Parker,
+who used to be Coxon's manager? He can never say enough about it.'
+
+"Of course I was pleased to hear this. I had always been pretty sharp in
+the office, but I had never dreamed that I was talked about in the City
+in this fashion.
+
+"'You have a good memory?' said he.
+
+"'Pretty fair,' I answered, modestly.
+
+"'Have you kept in touch with the market while you have been out of
+work?' he asked.
+
+"'Yes. I read the stock exchange list every morning.'
+
+"'Now that shows real application!' he cried. 'That is the way to
+prosper! You won't mind my testing you, will you? Let me see. How are
+Ayrshires?'
+
+"'A hundred and six and a quarter to a hundred and five and
+seven-eighths.'
+
+"'And New Zealand consolidated?'
+
+"'A hundred and four.
+
+"'And British Broken Hills?'
+
+"'Seven to seven-and-six.'
+
+"'Wonderful!' he cried, with his hands up. 'This quite fits in with all
+that I had heard. My boy, my boy, you are very much too good to be a
+clerk at Mawson's!'
+
+"This outburst rather astonished me, as you can think. 'Well,' said I,
+'other people don't think quite so much of me as you seem to do, Mr.
+Pinner. I had a hard enough fight to get this berth, and I am very glad
+to have it.'
+
+"'Pooh, man; you should soar above it. You are not in your true sphere.
+Now, I'll tell you how it stands with me. What I have to offer is little
+enough when measured by your ability, but when compared with Mawson's,
+it's light to dark. Let me see. When do you go to Mawson's?'
+
+"'On Monday.'
+
+"'Ha, ha! I think I would risk a little sporting flutter that you don't
+go there at all.'
+
+"'Not go to Mawson's?'
+
+"'No, sir. By that day you will be the business manager of the
+Franco-Midland Hardware Company, Limited, with a hundred and thirty-four
+branches in the towns and villages of France, not counting one in
+Brussels and one in San Remo.'
+
+"This took my breath away. 'I never heard of it,' said I.
+
+"'Very likely not. It has been kept very quiet, for the capital was all
+privately subscribed, and it's too good a thing to let the public
+into. My brother, Harry Pinner, is promoter, and joins the board after
+allotment as managing director. He knew I was in the swim down here, and
+asked me to pick up a good man cheap. A young, pushing man with plenty
+of snap about him. Parker spoke of you, and that brought me here
+to-night. We can only offer you a beggarly five hundred to start with.'
+
+"'Five hundred a year!' I shouted.
+
+"'Only that at the beginning; but you are to have an overriding
+commission of one per cent on all business done by your agents, and you
+may take my word for it that this will come to more than your salary.'
+
+"'But I know nothing about hardware.'
+
+"'Tut, my boy; you know about figures.'
+
+"My head buzzed, and I could hardly sit still in my chair. But suddenly
+a little chill of doubt came upon me.
+
+"'I must be frank with you,' said I. 'Mawson only gives me two hundred,
+but Mawson is safe. Now, really, I know so little about your company
+that--'
+
+"'Ah, smart, smart!' he cried, in a kind of ecstasy of delight. 'You
+are the very man for us. You are not to be talked over, and quite right,
+too. Now, here's a note for a hundred pounds, and if you think that we
+can do business you may just slip it into your pocket as an advance upon
+your salary.'
+
+"'That is very handsome,' said I. 'When should I take over my new
+duties?'
+
+"'Be in Birmingham to-morrow at one,' said he. 'I have a note in my
+pocket here which you will take to my brother. You will find him at
+126b Corporation Street, where the temporary offices of the company
+are situated. Of course he must confirm your engagement, but between
+ourselves it will be all right.'
+
+"'Really, I hardly know how to express my gratitude, Mr. Pinner,' said
+I.
+
+"'Not at all, my boy. You have only got your deserts. There are one or
+two small things--mere formalities--which I must arrange with you.
+You have a bit of paper beside you there. Kindly write upon it "I am
+perfectly willing to act as business manager to the Franco-Midland
+Hardware Company, Limited, at a minimum salary of L500."'
+
+"I did as he asked, and he put the paper in his pocket.
+
+"'There is one other detail,' said he. 'What do you intend to do about
+Mawson's?'
+
+"I had forgotten all about Mawson's in my joy. 'I'll write and resign,'
+said I.
+
+"'Precisely what I don't want you to do. I had a row over you with
+Mawson's manager. I had gone up to ask him about you, and he was very
+offensive; accused me of coaxing you away from the service of the firm,
+and that sort of thing. At last I fairly lost my temper. "If you want
+good men you should pay them a good price," said I.'
+
+"'He would rather have our small price than your big one,' said he.
+
+"'I'll lay you a fiver,' said I, 'that when he has my offer you'll never
+so much as hear from him again.'
+
+"'Done!' said he. 'We picked him out of the gutter, and he won't leave
+us so easily.' Those were his very words."
+
+"'The impudent scoundrel!' I cried. 'I've never so much as seen him in
+my life. Why should I consider him in any way? I shall certainly not
+write if you would rather I didn't.'
+
+"'Good! That's a promise,' said he, rising from his chair. 'Well, I'm
+delighted to have got so good a man for my brother. Here's your advance
+of a hundred pounds, and here is the letter. Make a note of the address,
+126b Corporation Street, and remember that one o'clock to-morrow is
+your appointment. Good-night; and may you have all the fortune that you
+deserve!'
+
+"That's just about all that passed between us, as near as I can
+remember. You can imagine, Dr. Watson, how pleased I was at such an
+extraordinary bit of good fortune. I sat up half the night hugging
+myself over it, and next day I was off to Birmingham in a train that
+would take me in plenty time for my appointment. I took my things to
+a hotel in New Street, and then I made my way to the address which had
+been given me.
+
+"It was a quarter of an hour before my time, but I thought that would
+make no difference. 126b was a passage between two large shops, which
+led to a winding stone stair, from which there were many flats, let as
+offices to companies or professional men. The names of the occupants
+were painted at the bottom on the wall, but there was no such name as
+the Franco-Midland Hardware Company, Limited. I stood for a few minutes
+with my heart in my boots, wondering whether the whole thing was an
+elaborate hoax or not, when up came a man and addressed me. He was very
+like the chap I had seen the night before, the same figure and voice,
+but he was clean shaven and his hair was lighter.
+
+"'Are you Mr. Hall Pycroft?' he asked.
+
+"'Yes,' said I.
+
+"'Oh! I was expecting you, but you are a trifle before your time. I had
+a note from my brother this morning in which he sang your praises very
+loudly.'
+
+"'I was just looking for the offices when you came.
+
+"'We have not got our name up yet, for we only secured these temporary
+premises last week. Come up with me, and we will talk the matter over.'
+
+"I followed him to the top of a very lofty stair, and there, right under
+the slates, were a couple of empty, dusty little rooms, uncarpeted and
+uncurtained, into which he led me. I had thought of a great office with
+shining tables and rows of clerks, such as I was used to, and I dare say
+I stared rather straight at the two deal chairs and one little table,
+which, with a ledger and a waste paper basket, made up the whole
+furniture.
+
+"'Don't be disheartened, Mr. Pycroft,' said my new acquaintance, seeing
+the length of my face. 'Rome was not built in a day, and we have lots of
+money at our backs, though we don't cut much dash yet in offices. Pray
+sit down, and let me have your letter.'
+
+"I gave it to him, and he read it over very carefully.
+
+"'You seem to have made a vast impression upon my brother Arthur,' said
+he; 'and I know that he is a pretty shrewd judge. He swears by London,
+you know; and I by Birmingham; but this time I shall follow his advice.
+Pray consider yourself definitely engaged."
+
+"'What are my duties?' I asked.
+
+"'You will eventually manage the great depot in Paris, which will pour
+a flood of English crockery into the shops of a hundred and thirty-four
+agents in France. The purchase will be completed in a week, and
+meanwhile you will remain in Birmingham and make yourself useful.'
+
+"'How?'
+
+"For answer, he took a big red book out of a drawer.
+
+"'This is a directory of Paris,' said he, 'with the trades after the
+names of the people. I want you to take it home with you, and to mark
+off all the hardware sellers, with their addresses. It would be of the
+greatest use to me to have them.'
+
+"'Surely there are classified lists?' I suggested.
+
+"'Not reliable ones. Their system is different from ours. Stick at it,
+and let me have the lists by Monday, at twelve. Good-day, Mr. Pycroft.
+If you continue to show zeal and intelligence you will find the company
+a good master.'
+
+"I went back to the hotel with the big book under my arm, and with very
+conflicting feelings in my breast. On the one hand, I was definitely
+engaged and had a hundred pounds in my pocket; on the other, the look
+of the offices, the absence of name on the wall, and other of the points
+which would strike a business man had left a bad impression as to the
+position of my employers. However, come what might, I had my money, so I
+settled down to my task. All Sunday I was kept hard at work, and yet by
+Monday I had only got as far as H. I went round to my employer, found
+him in the same dismantled kind of room, and was told to keep at
+it until Wednesday, and then come again. On Wednesday it was still
+unfinished, so I hammered away until Friday--that is, yesterday. Then I
+brought it round to Mr. Harry Pinner.
+
+"'Thank you very much,' said he; 'I fear that I underrated the
+difficulty of the task. This list will be of very material assistance to
+me.'
+
+"'It took some time,' said I.
+
+"'And now,' said he, 'I want you to make a list of the furniture shops,
+for they all sell crockery.'
+
+"'Very good.'
+
+"'And you can come up to-morrow evening, at seven, and let me know how
+you are getting on. Don't overwork yourself. A couple of hours at Day's
+Music Hall in the evening would do you no harm after your labors.' He
+laughed as he spoke, and I saw with a thrill that his second tooth upon
+the left-hand side had been very badly stuffed with gold."
+
+
+Sherlock Holmes rubbed his hands with delight, and I stared with
+astonishment at our client.
+
+"You may well look surprised, Dr. Watson; but it is this way," said he:
+"When I was speaking to the other chap in London, at the time that he
+laughed at my not going to Mawson's, I happened to notice that his tooth
+was stuffed in this very identical fashion. The glint of the gold in
+each case caught my eye, you see. When I put that with the voice and
+figure being the same, and only those things altered which might be
+changed by a razor or a wig, I could not doubt that it was the same man.
+Of course you expect two brothers to be alike, but not that they should
+have the same tooth stuffed in the same way. He bowed me out, and I
+found myself in the street, hardly knowing whether I was on my head or
+my heels. Back I went to my hotel, put my head in a basin of cold water,
+and tried to think it out. Why had he sent me from London to Birmingham?
+Why had he got there before me? And why had he written a letter from
+himself to himself? It was altogether too much for me, and I could make
+no sense of it. And then suddenly it struck me that what was dark to me
+might be very light to Mr. Sherlock Holmes. I had just time to get up to
+town by the night train to see him this morning, and to bring you both
+back with me to Birmingham."
+
+There was a pause after the stock-broker's clerk had concluded his
+surprising experience. Then Sherlock Holmes cocked his eye at me,
+leaning back on the cushions with a pleased and yet critical face, like
+a connoisseur who has just taken his first sip of a comet vintage.
+
+"Rather fine, Watson, is it not?" said he. "There are points in it which
+please me. I think that you will agree with me that an interview with
+Mr. Arthur Harry Pinner in the temporary offices of the Franco-Midland
+Hardware Company, Limited, would be a rather interesting experience for
+both of us."
+
+"But how can we do it?" I asked.
+
+"Oh, easily enough," said Hall Pycroft, cheerily. "You are two friends
+of mine who are in want of a billet, and what could be more natural than
+that I should bring you both round to the managing director?"
+
+"Quite so, of course," said Holmes. "I should like to have a look at
+the gentleman, and see if I can make anything of his little game.
+What qualities have you, my friend, which would make your services
+so valuable? or is it possible that--" He began biting his nails and
+staring blankly out of the window, and we hardly drew another word from
+him until we were in New Street.
+
+At seven o'clock that evening we were walking, the three of us, down
+Corporation Street to the company's offices.
+
+"It is no use our being at all before our time," said our client. "He
+only comes there to see me, apparently, for the place is deserted up to
+the very hour he names."
+
+"That is suggestive," remarked Holmes.
+
+"By Jove, I told you so!" cried the clerk. "That's he walking ahead of
+us there."
+
+He pointed to a smallish, dark, well-dressed man who was bustling along
+the other side of the road. As we watched him he looked across at a boy
+who was bawling out the latest edition of the evening paper, and running
+over among the cabs and busses, he bought one from him. Then, clutching
+it in his hand, he vanished through a door-way.
+
+"There he goes!" cried Hall Pycroft. "These are the company's offices
+into which he has gone. Come with me, and I'll fix it up as easily as
+possible."
+
+Following his lead, we ascended five stories, until we found ourselves
+outside a half-opened door, at which our client tapped. A voice within
+bade us enter, and we entered a bare, unfurnished room such as Hall
+Pycroft had described. At the single table sat the man whom we had seen
+in the street, with his evening paper spread out in front of him, and as
+he looked up at us it seemed to me that I had never looked upon a face
+which bore such marks of grief, and of something beyond grief--of a
+horror such as comes to few men in a lifetime. His brow glistened with
+perspiration, his cheeks were of the dull, dead white of a fish's belly,
+and his eyes were wild and staring. He looked at his clerk as though he
+failed to recognize him, and I could see by the astonishment depicted
+upon our conductor's face that this was by no means the usual appearance
+of his employer.
+
+"You look ill, Mr. Pinner!" he exclaimed.
+
+"Yes, I am not very well," answered the other, making obvious efforts
+to pull himself together, and licking his dry lips before he spoke. "Who
+are these gentlemen whom you have brought with you?"
+
+"One is Mr. Harris, of Bermondsey, and the other is Mr. Price, of this
+town," said our clerk, glibly. "They are friends of mine and gentlemen
+of experience, but they have been out of a place for some little time,
+and they hoped that perhaps you might find an opening for them in the
+company's employment."
+
+"Very possibly! Very possibly!" cried Mr. Pinner with a ghastly smile.
+"Yes, I have no doubt that we shall be able to do something for you.
+What is your particular line, Mr. Harris?"
+
+"I am an accountant," said Holmes.
+
+"Ah yes, we shall want something of the sort. And you, Mr. Price?"
+
+"A clerk," said I.
+
+"I have every hope that the company may accommodate you. I will let you
+know about it as soon as we come to any conclusion. And now I beg that
+you will go. For God's sake leave me to myself!"
+
+These last words were shot out of him, as though the constraint which
+he was evidently setting upon himself had suddenly and utterly burst
+asunder. Holmes and I glanced at each other, and Hall Pycroft took a
+step towards the table.
+
+"You forget, Mr. Pinner, that I am here by appointment to receive some
+directions from you," said he.
+
+"Certainly, Mr. Pycroft, certainly," the other resumed in a calmer tone.
+"You may wait here a moment; and there is no reason why your friends
+should not wait with you. I will be entirely at your service in three
+minutes, if I might trespass upon your patience so far." He rose with a
+very courteous air, and, bowing to us, he passed out through a door at
+the farther end of the room, which he closed behind him.
+
+"What now?" whispered Holmes. "Is he giving us the slip?"
+
+"Impossible," answered Pycroft.
+
+"Why so?"
+
+"That door leads into an inner room."
+
+"There is no exit?"
+
+"None."
+
+"Is it furnished?"
+
+"It was empty yesterday."
+
+"Then what on earth can he be doing? There is something which I don't
+understand in this manner. If ever a man was three parts mad with
+terror, that man's name is Pinner. What can have put the shivers on
+him?"
+
+"He suspects that we are detectives," I suggested.
+
+"That's it," cried Pycroft.
+
+Holmes shook his head. "He did not turn pale. He was pale when we
+entered the room," said he. "It is just possible that--"
+
+His words were interrupted by a sharp rat-tat from the direction of the
+inner door.
+
+"What the deuce is he knocking at his own door for?" cried the clerk.
+
+Again and much louder came the rat-tat-tat. We all gazed expectantly at
+the closed door. Glancing at Holmes, I saw his face turn rigid, and he
+leaned forward in intense excitement. Then suddenly came a low guggling,
+gargling sound, and a brisk drumming upon woodwork. Holmes sprang
+frantically across the room and pushed at the door. It was fastened on
+the inner side. Following his example, we threw ourselves upon it with
+all our weight. One hinge snapped, then the other, and down came the
+door with a crash. Rushing over it, we found ourselves in the inner
+room. It was empty.
+
+But it was only for a moment that we were at fault. At one corner, the
+corner nearest the room which we had left, there was a second door.
+Holmes sprang to it and pulled it open. A coat and waistcoat were lying
+on the floor, and from a hook behind the door, with his own braces
+round his neck, was hanging the managing director of the Franco-Midland
+Hardware Company. His knees were drawn up, his head hung at a dreadful
+angle to his body, and the clatter of his heels against the door made
+the noise which had broken in upon our conversation. In an instant I
+had caught him round the waist, and held him up while Holmes and Pycroft
+untied the elastic bands which had disappeared between the livid creases
+of skin. Then we carried him into the other room, where he lay with
+a clay-colored face, puffing his purple lips in and out with every
+breath--a dreadful wreck of all that he had been but five minutes
+before.
+
+"What do you think of him, Watson?" asked Holmes.
+
+I stooped over him and examined him. His pulse was feeble and
+intermittent, but his breathing grew longer, and there was a little
+shivering of his eyelids, which showed a thin white slit of ball
+beneath.
+
+"It has been touch and go with him," said I, "but he'll live now. Just
+open that window, and hand me the water carafe." I undid his collar,
+poured the cold water over his face, and raised and sank his arms until
+he drew a long, natural breath. "It's only a question of time now," said
+I, as I turned away from him.
+
+Holmes stood by the table, with his hands deep in his trouser's pockets
+and his chin upon his breast.
+
+"I suppose we ought to call the police in now," said he. "And yet I
+confess that I'd like to give them a complete case when they come."
+
+"It's a blessed mystery to me," cried Pycroft, scratching his head.
+"Whatever they wanted to bring me all the way up here for, and then--"
+
+"Pooh! All that is clear enough," said Holmes impatiently. "It is this
+last sudden move."
+
+"You understand the rest, then?"
+
+"I think that it is fairly obvious. What do you say, Watson?"
+
+I shrugged my shoulders. "I must confess that I am out of my depths,"
+said I.
+
+"Oh surely if you consider the events at first they can only point to
+one conclusion."
+
+"What do you make of them?"
+
+"Well, the whole thing hinges upon two points. The first is the making
+of Pycroft write a declaration by which he entered the service of this
+preposterous company. Do you not see how very suggestive that is?"
+
+"I am afraid I miss the point."
+
+"Well, why did they want him to do it? Not as a business matter, for
+these arrangements are usually verbal, and there was no earthly business
+reason why this should be an exception. Don't you see, my young friend,
+that they were very anxious to obtain a specimen of your handwriting,
+and had no other way of doing it?"
+
+"And why?"
+
+"Quite so. Why? When we answer that we have made some progress with our
+little problem. Why? There can be only one adequate reason. Some one
+wanted to learn to imitate your writing, and had to procure a specimen
+of it first. And now if we pass on to the second point we find that each
+throws light upon the other. That point is the request made by Pinner
+that you should not resign your place, but should leave the manager of
+this important business in the full expectation that a Mr. Hall Pycroft,
+whom he had never seen, was about to enter the office upon the Monday
+morning."
+
+"My God!" cried our client, "what a blind beetle I have been!"
+
+"Now you see the point about the handwriting. Suppose that some one
+turned up in your place who wrote a completely different hand from that
+in which you had applied for the vacancy, of course the game would have
+been up. But in the interval the rogue had learned to imitate you,
+and his position was therefore secure, as I presume that nobody in the
+office had ever set eyes upon you."
+
+"Not a soul," groaned Hall Pycroft.
+
+"Very good. Of course it was of the utmost importance to prevent you
+from thinking better of it, and also to keep you from coming into
+contact with any one who might tell you that your double was at work
+in Mawson's office. Therefore they gave you a handsome advance on your
+salary, and ran you off to the Midlands, where they gave you enough work
+to do to prevent your going to London, where you might have burst their
+little game up. That is all plain enough."
+
+"But why should this man pretend to be his own brother?"
+
+"Well, that is pretty clear also. There are evidently only two of them
+in it. The other is impersonating you at the office. This one acted
+as your engager, and then found that he could not find you an employer
+without admitting a third person into his plot. That he was most
+unwilling to do. He changed his appearance as far as he could, and
+trusted that the likeness, which you could not fail to observe, would be
+put down to a family resemblance. But for the happy chance of the gold
+stuffing, your suspicions would probably never have been aroused."
+
+Hall Pycroft shook his clinched hands in the air. "Good Lord!" he cried,
+"while I have been fooled in this way, what has this other Hall Pycroft
+been doing at Mawson's? What should we do, Mr. Holmes? Tell me what to
+do."
+
+"We must wire to Mawson's."
+
+"They shut at twelve on Saturdays."
+
+"Never mind. There may be some door-keeper or attendant--"
+
+"Ah yes, they keep a permanent guard there on account of the value of
+the securities that they hold. I remember hearing it talked of in the
+City."
+
+"Very good; we shall wire to him, and see if all is well, and if a clerk
+of your name is working there. That is clear enough; but what is not so
+clear is why at sight of us one of the rogues should instantly walk out
+of the room and hang himself."
+
+"The paper!" croaked a voice behind us. The man was sitting up, blanched
+and ghastly, with returning reason in his eyes, and hands which rubbed
+nervously at the broad red band which still encircled his throat.
+
+"The paper! Of course!" yelled Holmes, in a paroxysm of excitement.
+"Idiot that I was! I thought so much of our visit that the paper never
+entered my head for an instant. To be sure, the secret must be there."
+He flattened it out upon the table, and a cry of triumph burst from his
+lips. "Look at this, Watson," he cried. "It is a London paper, an early
+edition of the Evening Standard. Here is what we want. Look at the
+headlines: 'Crime in the City. Murder at Mawson & Williams's. Gigantic
+attempted Robbery. Capture of the Criminal.' Here, Watson, we are all
+equally anxious to hear it, so kindly read it aloud to us."
+
+It appeared from its position in the paper to have been the one event of
+importance in town, and the account of it ran in this way:
+
+"A desperate attempt at robbery, culminating in the death of one man and
+the capture of the criminal, occurred this afternoon in the City. For
+some time back Mawson & Williams, the famous financial house, have been
+the guardians of securities which amount in the aggregate to a sum of
+considerably over a million sterling. So conscious was the manager of
+the responsibility which devolved upon him in consequence of the great
+interests at stake that safes of the very latest construction have
+been employed, and an armed watchman has been left day and night in the
+building. It appears that last week a new clerk named Hall Pycroft was
+engaged by the firm. This person appears to have been none other that
+Beddington, the famous forger and cracksman, who, with his brother, had
+only recently emerged from a five years' spell of penal servitude. By
+some means, which are not yet clear, he succeeded in winning, under a
+false name, this official position in the office, which he utilized in
+order to obtain moulding of various locks, and a thorough knowledge of
+the position of the strong room and the safes.
+
+"It is customary at Mawson's for the clerks to leave at midday on
+Saturday. Sergeant Tuson, of the City Police, was somewhat surprised,
+therefore to see a gentleman with a carpet bag come down the steps at
+twenty minutes past one. His suspicions being aroused, the sergeant
+followed the man, and with the aid of Constable Pollock succeeded, after
+a most desperate resistance, in arresting him. It was at once clear
+that a daring and gigantic robbery had been committed. Nearly a hundred
+thousand pounds' worth of American railway bonds, with a large amount
+of scrip in mines and other companies, was discovered in the bag. On
+examining the premises the body of the unfortunate watchman was found
+doubled up and thrust into the largest of the safes, where it would not
+have been discovered until Monday morning had it not been for the prompt
+action of Sergeant Tuson. The man's skull had been shattered by a
+blow from a poker delivered from behind. There could be no doubt
+that Beddington had obtained entrance by pretending that he had left
+something behind him, and having murdered the watchman, rapidly rifled
+the large safe, and then made off with his booty. His brother, who
+usually works with him, has not appeared in this job as far as can
+at present be ascertained, although the police are making energetic
+inquiries as to his whereabouts."
+
+"Well, we may save the police some little trouble in that direction,"
+said Holmes, glancing at the haggard figure huddled up by the window.
+"Human nature is a strange mixture, Watson. You see that even a villain
+and murderer can inspire such affection that his brother turns to
+suicide when he learns that his neck is forfeited. However, we have
+no choice as to our action. The doctor and I will remain on guard, Mr.
+Pycroft, if you will have the kindness to step out for the police."
+
+
+
+
+Adventure IV. The "_Gloria Scott_"
+
+
+"I have some papers here," said my friend Sherlock Holmes, as we sat
+one winter's night on either side of the fire, "which I really think,
+Watson, that it would be worth your while to glance over. These are the
+documents in the extraordinary case of the Gloria Scott, and this is the
+message which struck Justice of the Peace Trevor dead with horror when
+he read it."
+
+He had picked from a drawer a little tarnished cylinder, and, undoing
+the tape, he handed me a short note scrawled upon a half-sheet of
+slate-gray paper.
+
+"The supply of game for London is going steadily up," it ran.
+"Head-keeper Hudson, we believe, has been now told to receive all orders
+for fly-paper and for preservation of your hen-pheasant's life."
+
+As I glanced up from reading this enigmatical message, I saw Holmes
+chuckling at the expression upon my face.
+
+"You look a little bewildered," said he.
+
+"I cannot see how such a message as this could inspire horror. It seems
+to me to be rather grotesque than otherwise."
+
+"Very likely. Yet the fact remains that the reader, who was a fine,
+robust old man, was knocked clean down by it as if it had been the butt
+end of a pistol."
+
+"You arouse my curiosity," said I. "But why did you say just now that
+there were very particular reasons why I should study this case?"
+
+"Because it was the first in which I was ever engaged."
+
+I had often endeavored to elicit from my companion what had first turned
+his mind in the direction of criminal research, but had never caught him
+before in a communicative humor. Now he sat forward in this arm-chair
+and spread out the documents upon his knees. Then he lit his pipe and
+sat for some time smoking and turning them over.
+
+"You never heard me talk of Victor Trevor?" he asked. "He was the only
+friend I made during the two years I was at college. I was never a very
+sociable fellow, Watson, always rather fond of moping in my rooms and
+working out my own little methods of thought, so that I never mixed
+much with the men of my year. Bar fencing and boxing I had few athletic
+tastes, and then my line of study was quite distinct from that of the
+other fellows, so that we had no points of contact at all. Trevor was
+the only man I knew, and that only through the accident of his bull
+terrier freezing on to my ankle one morning as I went down to chapel.
+
+"It was a prosaic way of forming a friendship, but it was effective.
+I was laid by the heels for ten days, but Trevor used to come in to
+inquire after me. At first it was only a minute's chat, but soon his
+visits lengthened, and before the end of the term we were close friends.
+He was a hearty, full-blooded fellow, full of spirits and energy,
+the very opposite to me in most respects, but we had some subjects
+in common, and it was a bond of union when I found that he was as
+friendless as I. Finally, he invited me down to his father's place at
+Donnithorpe, in Norfolk, and I accepted his hospitality for a month of
+the long vacation.
+
+"Old Trevor was evidently a man of some wealth and consideration, a
+J.P., and a landed proprietor. Donnithorpe is a little hamlet just to
+the north of Langmere, in the country of the Broads. The house was
+an old-fashioned, wide-spread, oak-beamed brick building, with a fine
+lime-lined avenue leading up to it. There was excellent wild-duck
+shooting in the fens, remarkably good fishing, a small but select
+library, taken over, as I understood, from a former occupant, and a
+tolerable cook, so that he would be a fastidious man who could not put
+in a pleasant month there.
+
+"Trevor senior was a widower, and my friend his only son.
+
+"There had been a daughter, I heard, but she had died of diphtheria
+while on a visit to Birmingham. The father interested me extremely.
+He was a man of little culture, but with a considerable amount of rude
+strength, both physically and mentally. He knew hardly any books, but
+he had traveled far, had seen much of the world. And had remembered
+all that he had learned. In person he was a thick-set, burly man with
+a shock of grizzled hair, a brown, weather-beaten face, and blue eyes
+which were keen to the verge of fierceness. Yet he had a reputation for
+kindness and charity on the country-side, and was noted for the leniency
+of his sentences from the bench.
+
+"One evening, shortly after my arrival, we were sitting over a glass of
+port after dinner, when young Trevor began to talk about those habits
+of observation and inference which I had already formed into a system,
+although I had not yet appreciated the part which they were to play in
+my life. The old man evidently thought that his son was exaggerating in
+his description of one or two trivial feats which I had performed.
+
+"'Come, now, Mr. Holmes,' said he, laughing good-humoredly. 'I'm an
+excellent subject, if you can deduce anything from me.'
+
+"'I fear there is not very much,' I answered; 'I might suggest that
+you have gone about in fear of some personal attack within the last
+twelvemonth.'
+
+"The laugh faded from his lips, and he stared at me in great surprise.
+
+"'Well, that's true enough,' said he. 'You know, Victor,' turning to his
+son, 'when we broke up that poaching gang they swore to knife us, and
+Sir Edward Holly has actually been attacked. I've always been on my
+guard since then, though I have no idea how you know it.'
+
+"'You have a very handsome stick,' I answered. 'By the inscription I
+observed that you had not had it more than a year. But you have taken
+some pains to bore the head of it and pour melted lead into the hole so
+as to make it a formidable weapon. I argued that you would not take such
+precautions unless you had some danger to fear.'
+
+"'Anything else?' he asked, smiling.
+
+"'You have boxed a good deal in your youth.'
+
+"'Right again. How did you know it? Is my nose knocked a little out of
+the straight?'
+
+"'No,' said I. 'It is your ears. They have the peculiar flattening and
+thickening which marks the boxing man.'
+
+"'Anything else?'
+
+"'You have done a good deal of digging by your callosities.'
+
+"'Made all my money at the gold fields.'
+
+"'You have been in New Zealand.'
+
+"'Right again.'
+
+"'You have visited Japan.'
+
+"'Quite true.'
+
+"'And you have been most intimately associated with some one whose
+initials were J. A., and whom you afterwards were eager to entirely
+forget.'
+
+"Mr. Trevor stood slowly up, fixed his large blue eyes upon me with a
+strange wild stare, and then pitched forward, with his face among the
+nutshells which strewed the cloth, in a dead faint.
+
+"You can imagine, Watson, how shocked both his son and I were. His
+attack did not last long, however, for when we undid his collar, and
+sprinkled the water from one of the finger-glasses over his face, he
+gave a gasp or two and sat up.
+
+"'Ah, boys,' said he, forcing a smile, 'I hope I haven't frightened you.
+Strong as I look, there is a weak place in my heart, and it does not
+take much to knock me over. I don't know how you manage this, Mr.
+Holmes, but it seems to me that all the detectives of fact and of fancy
+would be children in your hands. That's your line of life, sir, and you
+may take the word of a man who has seen something of the world.'
+
+"And that recommendation, with the exaggerated estimate of my ability
+with which he prefaced it, was, if you will believe me, Watson, the very
+first thing which ever made me feel that a profession might be made
+out of what had up to that time been the merest hobby. At the moment,
+however, I was too much concerned at the sudden illness of my host to
+think of anything else.
+
+"'I hope that I have said nothing to pain you?' said I.
+
+"'Well, you certainly touched upon rather a tender point. Might I ask
+how you know, and how much you know?' He spoke now in a half-jesting
+fashion, but a look of terror still lurked at the back of his eyes.
+
+"'It is simplicity itself,' said I. 'When you bared your arm to draw
+that fish into the boat I saw that J. A. Had been tattooed in the bend
+of the elbow. The letters were still legible, but it was perfectly clear
+from their blurred appearance, and from the staining of the skin round
+them, that efforts had been made to obliterate them. It was obvious,
+then, that those initials had once been very familiar to you, and that
+you had afterwards wished to forget them.'
+
+"What an eye you have!" he cried, with a sigh of relief. 'It is just as
+you say. But we won't talk of it. Of all ghosts the ghosts of our old
+lovers are the worst. Come into the billiard-room and have a quiet
+cigar.'
+
+
+"From that day, amid all his cordiality, there was always a touch of
+suspicion in Mr. Trevor's manner towards me. Even his son remarked it.
+'You've given the governor such a turn,' said he, 'that he'll never be
+sure again of what you know and what you don't know.' He did not mean
+to show it, I am sure, but it was so strongly in his mind that it peeped
+out at every action. At last I became so convinced that I was causing
+him uneasiness that I drew my visit to a close. On the very day,
+however, before I left, and incident occurred which proved in the sequel
+to be of importance.
+
+"We were sitting out upon the lawn on garden chairs, the three of us,
+basking in the sun and admiring the view across the Broads, when a maid
+came out to say that there was a man at the door who wanted to see Mr.
+Trevor.
+
+"'What is his name?' asked my host.
+
+"'He would not give any.'
+
+"'What does he want, then?'
+
+"'He says that you know him, and that he only wants a moment's
+conversation.'
+
+"'Show him round here.' An instant afterwards there appeared a little
+wizened fellow with a cringing manner and a shambling style of
+walking. He wore an open jacket, with a splotch of tar on the sleeve,
+a red-and-black check shirt, dungaree trousers, and heavy boots badly
+worn. His face was thin and brown and crafty, with a perpetual smile
+upon it, which showed an irregular line of yellow teeth, and his
+crinkled hands were half closed in a way that is distinctive of sailors.
+As he came slouching across the lawn I heard Mr. Trevor make a sort of
+hiccoughing noise in his throat, and jumping out of his chair, he ran
+into the house. He was back in a moment, and I smelt a strong reek of
+brandy as he passed me.
+
+"'Well, my man,' said he. 'What can I do for you?'
+
+"The sailor stood looking at him with puckered eyes, and with the same
+loose-lipped smile upon his face.
+
+"'You don't know me?' he asked.
+
+"'Why, dear me, it is surely Hudson,' said Mr. Trevor in a tone of
+surprise.
+
+"'Hudson it is, sir,' said the seaman. 'Why, it's thirty year and more
+since I saw you last. Here you are in your house, and me still picking
+my salt meat out of the harness cask.'
+
+"'Tut, you will find that I have not forgotten old times,' cried Mr.
+Trevor, and, walking towards the sailor, he said something in a low
+voice. 'Go into the kitchen,' he continued out loud, 'and you will get
+food and drink. I have no doubt that I shall find you a situation.'
+
+"'Thank you, sir,' said the seaman, touching his fore-lock. 'I'm just
+off a two-yearer in an eight-knot tramp, short-handed at that, and I
+wants a rest. I thought I'd get it either with Mr. Beddoes or with you.'
+
+"'Ah!' cried Trevor. 'You know where Mr. Beddoes is?'
+
+"'Bless you, sir, I know where all my old friends are,' said the
+fellow with a sinister smile, and he slouched off after the maid to the
+kitchen. Mr. Trevor mumbled something to us about having been shipmate
+with the man when he was going back to the diggings, and then, leaving
+us on the lawn, he went indoors. An hour later, when we entered the
+house, we found him stretched dead drunk upon the dining-room sofa. The
+whole incident left a most ugly impression upon my mind, and I was
+not sorry next day to leave Donnithorpe behind me, for I felt that my
+presence must be a source of embarrassment to my friend.
+
+"All this occurred during the first month of the long vacation. I went
+up to my London rooms, where I spent seven weeks working out a few
+experiments in organic chemistry. One day, however, when the autumn was
+far advanced and the vacation drawing to a close, I received a telegram
+from my friend imploring me to return to Donnithorpe, and saying that
+he was in great need of my advice and assistance. Of course I dropped
+everything and set out for the North once more.
+
+"He met me with the dog-cart at the station, and I saw at a glance that
+the last two months had been very trying ones for him. He had grown thin
+and careworn, and had lost the loud, cheery manner for which he had been
+remarkable.
+
+"'The governor is dying,' were the first words he said.
+
+"'Impossible!' I cried. 'What is the matter?'
+
+"'Apoplexy. Nervous shock, He's been on the verge all day. I doubt if we
+shall find him alive.'
+
+"I was, as you may think, Watson, horrified at this unexpected news.
+
+"'What has caused it?' I asked.
+
+"'Ah, that is the point. Jump in and we can talk it over while we drive.
+You remember that fellow who came upon the evening before you left us?'
+
+"'Perfectly.'
+
+"'Do you know who it was that we let into the house that day?'
+
+"'I have no idea.'
+
+"'It was the devil, Holmes,' he cried.
+
+"I stared at him in astonishment.
+
+"'Yes, it was the devil himself. We have not had a peaceful hour
+since--not one. The governor has never held up his head from that
+evening, and now the life has been crushed out of him and his heart
+broken, all through this accursed Hudson.'
+
+"'What power had he, then?'
+
+"'Ah, that is what I would give so much to know. The kindly, charitable,
+good old governor--how could he have fallen into the clutches of such a
+ruffian! But I am so glad that you have come, Holmes. I trust very much
+to your judgment and discretion, and I know that you will advise me for
+the best.'
+
+"We were dashing along the smooth white country road, with the long
+stretch of the Broads in front of us glimmering in the red light of the
+setting sun. From a grove upon our left I could already see the high
+chimneys and the flag-staff which marked the squire's dwelling.
+
+"'My father made the fellow gardener,' said my companion, 'and then, as
+that did not satisfy him, he was promoted to be butler. The house seemed
+to be at his mercy, and he wandered about and did what he chose in it.
+The maids complained of his drunken habits and his vile language. The
+dad raised their wages all round to recompense them for the annoyance.
+The fellow would take the boat and my father's best gun and treat
+himself to little shooting trips. And all this with such a sneering,
+leering, insolent face that I would have knocked him down twenty times
+over if he had been a man of my own age. I tell you, Holmes, I have
+had to keep a tight hold upon myself all this time; and now I am asking
+myself whether, if I had let myself go a little more, I might not have
+been a wiser man.
+
+"'Well, matters went from bad to worse with us, and this animal Hudson
+became more and more intrusive, until at last, on making some insolent
+reply to my father in my presence one day, I took him by the shoulders
+and turned him out of the room. He slunk away with a livid face and two
+venomous eyes which uttered more threats than his tongue could do. I
+don't know what passed between the poor dad and him after that, but the
+dad came to me next day and asked me whether I would mind apologizing to
+Hudson. I refused, as you can imagine, and asked my father how he
+could allow such a wretch to take such liberties with himself and his
+household.
+
+"'"Ah, my boy," said he, "it is all very well to talk, but you don't
+know how I am placed. But you shall know, Victor. I'll see that you
+shall know, come what may. You wouldn't believe harm of your poor old
+father, would you, lad?" He was very much moved, and shut himself up
+in the study all day, where I could see through the window that he was
+writing busily.
+
+"'That evening there came what seemed to me to be a grand release,
+for Hudson told us that he was going to leave us. He walked into the
+dining-room as we sat after dinner, and announced his intention in the
+thick voice of a half-drunken man.
+
+"'"I've had enough of Norfolk," said he. "I'll run down to Mr. Beddoes
+in Hampshire. He'll be as glad to see me as you were, I dare say."
+
+"'"You're not going away in an unkind spirit, Hudson, I hope," said my
+father, with a tameness which made my blood boil.
+
+"'"I've not had my 'pology," said he sulkily, glancing in my direction.
+
+"'"Victor, you will acknowledge that you have used this worthy fellow
+rather roughly," said the dad, turning to me.
+
+"'"On the contrary, I think that we have both shown extraordinary
+patience towards him," I answered.
+
+"'"Oh, you do, do you?" he snarls. "Very good, mate. We'll see about
+that!"
+
+"'He slouched out of the room, and half an hour afterwards left the
+house, leaving my father in a state of pitiable nervousness. Night after
+night I heard him pacing his room, and it was just as he was recovering
+his confidence that the blow did at last fall.'
+
+"'And how?' I asked eagerly.
+
+"'In a most extraordinary fashion. A letter arrived for my father
+yesterday evening, bearing the Fordingbridge post-mark. My father read
+it, clapped both his hands to his head, and began running round the room
+in little circles like a man who has been driven out of his senses. When
+I at last drew him down on to the sofa, his mouth and eyelids were all
+puckered on one side, and I saw that he had a stroke. Dr. Fordham came
+over at once. We put him to bed; but the paralysis has spread, he has
+shown no sign of returning consciousness, and I think that we shall
+hardly find him alive.'
+
+"'You horrify me, Trevor!' I cried. 'What then could have been in this
+letter to cause so dreadful a result?'
+
+"'Nothing. There lies the inexplicable part of it. The message was
+absurd and trivial. Ah, my God, it is as I feared!'
+
+"As he spoke we came round the curve of the avenue, and saw in the
+fading light that every blind in the house had been drawn down. As
+we dashed up to the door, my friend's face convulsed with grief, a
+gentleman in black emerged from it.
+
+"'When did it happen, doctor?' asked Trevor.
+
+"'Almost immediately after you left.'
+
+"'Did he recover consciousness?'
+
+"'For an instant before the end.'
+
+"'Any message for me.'
+
+"'Only that the papers were in the back drawer of the Japanese cabinet.'
+
+"My friend ascended with the doctor to the chamber of death, while I
+remained in the study, turning the whole matter over and over in my
+head, and feeling as sombre as ever I had done in my life. What was the
+past of this Trevor, pugilist, traveler, and gold-digger, and how had he
+placed himself in the power of this acid-faced seaman? Why, too, should
+he faint at an allusion to the half-effaced initials upon his arm, and
+die of fright when he had a letter from Fordingham? Then I remembered
+that Fordingham was in Hampshire, and that this Mr. Beddoes, whom the
+seaman had gone to visit and presumably to blackmail, had also been
+mentioned as living in Hampshire. The letter, then, might either come
+from Hudson, the seaman, saying that he had betrayed the guilty secret
+which appeared to exist, or it might come from Beddoes, warning an old
+confederate that such a betrayal was imminent. So far it seemed clear
+enough. But then how could this letter be trivial and grotesque, as
+describe by the son? He must have misread it. If so, it must have been
+one of those ingenious secret codes which mean one thing while they seem
+to mean another. I must see this letter. If there were a hidden meaning
+in it, I was confident that I could pluck it forth. For an hour I sat
+pondering over it in the gloom, until at last a weeping maid brought in
+a lamp, and close at her heels came my friend Trevor, pale but composed,
+with these very papers which lie upon my knee held in his grasp. He sat
+down opposite to me, drew the lamp to the edge of the table, and handed
+me a short note scribbled, as you see, upon a single sheet of gray
+paper. 'The supply of game for London is going steadily up,' it ran.
+'Head-keeper Hudson, we believe, has been now told to receive all orders
+for fly-paper and for preservation of your hen-pheasant's life.'
+
+"I dare say my face looked as bewildered as yours did just now when
+first I read this message. Then I reread it very carefully. It was
+evidently as I had thought, and some secret meaning must lie buried
+in this strange combination of words. Or could it be that there was
+a prearranged significance to such phrases as 'fly-paper' and
+'hen-pheasant'? Such a meaning would be arbitrary and could not be
+deduced in any way. And yet I was loath to believe that this was the
+case, and the presence of the word Hudson seemed to show that the
+subject of the message was as I had guessed, and that it was from
+Beddoes rather than the sailor. I tried it backwards, but the
+combination 'life pheasant's hen' was not encouraging. Then I tried
+alternate words, but neither 'the of for' nor 'supply game London'
+promised to throw any light upon it.
+
+"And then in an instant the key of the riddle was in my hands, and I saw
+that every third word, beginning with the first, would give a message
+which might well drive old Trevor to despair.
+
+"It was short and terse, the warning, as I now read it to my companion:
+
+"'The game is up. Hudson has told all. Fly for your life.'
+
+"Victor Trevor sank his face into his shaking hands. 'It must be that,
+I suppose,' said he. "This is worse than death, for it means disgrace
+as well. But what is the meaning of these "head-keepers" and
+"hen-pheasants"?'
+
+"'It means nothing to the message, but it might mean a good deal to us
+if we had no other means of discovering the sender. You see that he has
+begun by writing "The...game...is," and so on. Afterwards he had, to
+fulfill the prearranged cipher, to fill in any two words in each space.
+He would naturally use the first words which came to his mind, and
+if there were so many which referred to sport among them, you may
+be tolerably sure that he is either an ardent shot or interested in
+breeding. Do you know anything of this Beddoes?'
+
+"'Why, now that you mention it,' said he, 'I remember that my poor
+father used to have an invitation from him to shoot over his preserves
+every autumn.'
+
+"'Then it is undoubtedly from him that the note comes,' said I. 'It only
+remains for us to find out what this secret was which the sailor Hudson
+seems to have held over the heads of these two wealthy and respected
+men.'
+
+"'Alas, Holmes, I fear that it is one of sin and shame!' cried my
+friend. 'But from you I shall have no secrets. Here is the statement
+which was drawn up by my father when he knew that the danger from Hudson
+had become imminent. I found it in the Japanese cabinet, as he told the
+doctor. Take it and read it to me, for I have neither the strength nor
+the courage to do it myself.'
+
+"These are the very papers, Watson, which he handed to me, and I will
+read them to you, as I read them in the old study that night to him.
+They are endorsed outside, as you see, 'Some particulars of the voyage
+of the bark _Gloria Scott_, from her leaving Falmouth on the 8th
+October, 1855, to her destruction in N. Lat. 15 degrees 20', W. Long.
+25 degrees 14' on Nov. 6th.' It is in the form of a letter, and runs in
+this way:
+
+"'My dear, dear son, now that approaching disgrace begins to darken the
+closing years of my life, I can write with all truth and honesty that it
+is not the terror of the law, it is not the loss of my position in the
+county, nor is it my fall in the eyes of all who have known me, which
+cuts me to the heart; but it is the thought that you should come to
+blush for me--you who love me and who have seldom, I hope, had reason to
+do other than respect me. But if the blow falls which is forever hanging
+over me, then I should wish you to read this, that you may know straight
+from me how far I have been to blame. On the other hand, if all should
+go well (which may kind God Almighty grant!), then if by any chance this
+paper should be still undestroyed and should fall into your hands, I
+conjure you, by all you hold sacred, by the memory of your dear mother,
+and by the love which had been between us, to hurl it into the fire and
+to never give one thought to it again.
+
+"'If then your eye goes on to read this line, I know that I shall
+already have been exposed and dragged from my home, or as is more
+likely, for you know that my heart is weak, by lying with my tongue
+sealed forever in death. In either case the time for suppression is
+past, and every word which I tell you is the naked truth, and this I
+swear as I hope for mercy.
+
+"'My name, dear lad, is not Trevor. I was James Armitage in my younger
+days, and you can understand now the shock that it was to me a few weeks
+ago when your college friend addressed me in words which seemed to imply
+that he had surprised my secret. As Armitage it was that I entered a
+London banking-house, and as Armitage I was convicted of breaking my
+country's laws, and was sentenced to transportation. Do not think very
+harshly of me, laddie. It was a debt of honor, so called, which I had
+to pay, and I used money which was not my own to do it, in the certainty
+that I could replace it before there could be any possibility of its
+being missed. But the most dreadful ill-luck pursued me. The money which
+I had reckoned upon never came to hand, and a premature examination of
+accounts exposed my deficit. The case might have been dealt leniently
+with, but the laws were more harshly administered thirty years ago than
+now, and on my twenty-third birthday I found myself chained as a felon
+with thirty-seven other convicts in 'tween-decks of the bark _Gloria
+Scott_, bound for Australia.
+
+"'It was the year '55 when the Crimean war was at its height, and the
+old convict ships had been largely used as transports in the Black
+Sea. The government was compelled, therefore, to use smaller and less
+suitable vessels for sending out their prisoners. The Gloria Scott
+had been in the Chinese tea-trade, but she was an old-fashioned,
+heavy-bowed, broad-beamed craft, and the new clippers had cut her
+out. She was a five-hundred-ton boat; and besides her thirty-eight
+jail-birds, she carried twenty-six of a crew, eighteen soldiers, a
+captain, three mates, a doctor, a chaplain, and four warders. Nearly a
+hundred souls were in her, all told, when we set sail from Falmouth.
+
+"'The partitions between the cells of the convicts, instead of being of
+thick oak, as is usual in convict-ships, were quite thin and frail.
+The man next to me, upon the aft side, was one whom I had particularly
+noticed when we were led down the quay. He was a young man with a
+clear, hairless face, a long, thin nose, and rather nut-cracker jaws.
+He carried his head very jauntily in the air, had a swaggering style
+of walking, and was, above all else, remarkable for his extraordinary
+height. I don't think any of our heads would have come up to his
+shoulder, and I am sure that he could not have measured less than six
+and a half feet. It was strange among so many sad and weary faces to see
+one which was full of energy and resolution. The sight of it was to me
+like a fire in a snow-storm. I was glad, then, to find that he was my
+neighbor, and gladder still when, in the dead of the night, I heard a
+whisper close to my ear, and found that he had managed to cut an opening
+in the board which separated us.
+
+"'"Hullo, chummy!" said he, "what's your name, and what are you here
+for?"
+
+"'I answered him, and asked in turn who I was talking with.
+
+"'"I'm Jack Prendergast," said he, "and by God! You'll learn to bless my
+name before you've done with me."
+
+"'I remembered hearing of his case, for it was one which had made an
+immense sensation throughout the country some time before my own arrest.
+He was a man of good family and of great ability, but of incurably
+vicious habits, who had by an ingenious system of fraud obtained huge
+sums of money from the leading London merchants.
+
+"'"Ha, ha! You remember my case!" said he proudly.
+
+"'"Very well, indeed."
+
+"'"Then maybe you remember something queer about it?"
+
+"'"What was that, then?"
+
+"'"I'd had nearly a quarter of a million, hadn't I?"
+
+"'"So it was said."
+
+"'"But none was recovered, eh?"
+
+"'"No."
+
+"'"Well, where d'ye suppose the balance is?" he asked.
+
+"'"I have no idea," said I.
+
+"'"Right between my finger and thumb," he cried. "By God! I've got more
+pounds to my name than you've hairs on your head. And if you've money,
+my son, and know how to handle it and spread it, you can do anything.
+Now, you don't think it likely that a man who could do anything is going
+to wear his breeches out sitting in the stinking hold of a rat-gutted,
+beetle-ridden, mouldy old coffin of a Chin China coaster. No, sir, such
+a man will look after himself and will look after his chums. You may lay
+to that! You hold on to him, and you may kiss the book that he'll haul
+you through."
+
+"'That was his style of talk, and at first I thought it meant nothing;
+but after a while, when he had tested me and sworn me in with all
+possible solemnity, he let me understand that there really was a plot
+to gain command of the vessel. A dozen of the prisoners had hatched it
+before they came aboard, Prendergast was the leader, and his money was
+the motive power.
+
+"'"I'd a partner," said he, "a rare good man, as true as a stock to a
+barrel. He's got the dibbs, he has, and where do you think he is at this
+moment? Why, he's the chaplain of this ship--the chaplain, no less! He
+came aboard with a black coat, and his papers right, and money enough in
+his box to buy the thing right up from keel to main-truck. The crew
+are his, body and soul. He could buy 'em at so much a gross with a cash
+discount, and he did it before ever they signed on. He's got two of the
+warders and Mereer, the second mate, and he'd get the captain himself,
+if he thought him worth it."
+
+"'"What are we to do, then?" I asked.
+
+"'"What do you think?" said he. "We'll make the coats of some of these
+soldiers redder than ever the tailor did."
+
+"'"But they are armed," said I.
+
+"'"And so shall we be, my boy. There's a brace of pistols for every
+mother's son of us, and if we can't carry this ship, with the crew at
+our back, it's time we were all sent to a young misses' boarding-school.
+You speak to your mate upon the left to-night, and see if he is to be
+trusted."
+
+"'I did so, and found my other neighbor to be a young fellow in much
+the same position as myself, whose crime had been forgery. His name was
+Evans, but he afterwards changed it, like myself, and he is now a rich
+and prosperous man in the south of England. He was ready enough to join
+the conspiracy, as the only means of saving ourselves, and before we had
+crossed the Bay there were only two of the prisoners who were not in the
+secret. One of these was of weak mind, and we did not dare to trust him,
+and the other was suffering from jaundice, and could not be of any use
+to us.
+
+"'From the beginning there was really nothing to prevent us from taking
+possession of the ship. The crew were a set of ruffians, specially
+picked for the job. The sham chaplain came into our cells to exhort us,
+carrying a black bag, supposed to be full of tracts, and so often did
+he come that by the third day we had each stowed away at the foot of our
+beds a file, a brace of pistols, a pound of powder, and twenty slugs.
+Two of the warders were agents of Prendergast, and the second mate was
+his right-hand man. The captain, the two mates, two warders Lieutenant
+Martin, his eighteen soldiers, and the doctor were all that we had
+against us. Yet, safe as it was, we determined to neglect no precaution,
+and to make our attack suddenly by night. It came, however, more quickly
+than we expected, and in this way.
+
+"'One evening, about the third week after our start, the doctor had come
+down to see one of the prisoners who was ill, and putting his hand down
+on the bottom of his bunk he felt the outline of the pistols. If he had
+been silent he might have blown the whole thing, but he was a nervous
+little chap, so he gave a cry of surprise and turned so pale that the
+man knew what was up in an instant and seized him. He was gagged before
+he could give the alarm, and tied down upon the bed. He had unlocked
+the door that led to the deck, and we were through it in a rush. The two
+sentries were shot down, and so was a corporal who came running to see
+what was the matter. There were two more soldiers at the door of the
+state-room, and their muskets seemed not to be loaded, for they never
+fired upon us, and they were shot while trying to fix their bayonets.
+Then we rushed on into the captain's cabin, but as we pushed open the
+door there was an explosion from within, and there he lay with his
+brains smeared over the chart of the Atlantic which was pinned upon the
+table, while the chaplain stood with a smoking pistol in his hand at
+his elbow. The two mates had both been seized by the crew, and the whole
+business seemed to be settled.
+
+"'The state-room was next the cabin, and we flocked in there and flopped
+down on the settees, all speaking together, for we were just mad with
+the feeling that we were free once more. There were lockers all round,
+and Wilson, the sham chaplain, knocked one of them in, and pulled out a
+dozen of brown sherry. We cracked off the necks of the bottles, poured
+the stuff out into tumblers, and were just tossing them off, when in an
+instant without warning there came the roar of muskets in our ears, and
+the saloon was so full of smoke that we could not see across the table.
+When it cleared again the place was a shambles. Wilson and eight others
+were wriggling on the top of each other on the floor, and the blood and
+the brown sherry on that table turn me sick now when I think of it. We
+were so cowed by the sight that I think we should have given the job up
+if it had not been for Prendergast. He bellowed like a bull and rushed
+for the door with all that were left alive at his heels. Out we ran,
+and there on the poop were the lieutenant and ten of his men. The swing
+skylights above the saloon table had been a bit open, and they had fired
+on us through the slit. We got on them before they could load, and they
+stood to it like men; but we had the upper hand of them, and in five
+minutes it was all over. My God! Was there ever a slaughter-house
+like that ship! Prendergast was like a raging devil, and he picked the
+soldiers up as if they had been children and threw them overboard alive
+or dead. There was one sergeant that was horribly wounded and yet kept
+on swimming for a surprising time, until some one in mercy blew out his
+brains. When the fighting was over there was no one left of our enemies
+except just the warders the mates, and the doctor.
+
+"'It was over them that the great quarrel arose. There were many of us
+who were glad enough to win back our freedom, and yet who had no wish
+to have murder on our souls. It was one thing to knock the soldiers over
+with their muskets in their hands, and it was another to stand by while
+men were being killed in cold blood. Eight of us, five convicts and
+three sailors, said that we would not see it done. But there was no
+moving Prendergast and those who were with him. Our only chance of
+safety lay in making a clean job of it, said he, and he would not leave
+a tongue with power to wag in a witness-box. It nearly came to our
+sharing the fate of the prisoners, but at last he said that if we wished
+we might take a boat and go. We jumped at the offer, for we were already
+sick of these bloodthirsty doings, and we saw that there would be worse
+before it was done. We were given a suit of sailor togs each, a barrel
+of water, two casks, one of junk and one of biscuits, and a compass.
+Prendergast threw us over a chart, told us that we were shipwrecked
+mariners whose ship had foundered in Lat. 15 degrees and Long 25 degrees
+west, and then cut the painter and let us go.
+
+"'And now I come to the most surprising part of my story, my dear son.
+The seamen had hauled the fore-yard aback during the rising, but now as
+we left them they brought it square again, and as there was a light wind
+from the north and east the bark began to draw slowly away from us. Our
+boat lay, rising and falling, upon the long, smooth rollers, and Evans
+and I, who were the most educated of the party, were sitting in the
+sheets working out our position and planning what coast we should make
+for. It was a nice question, for the Cape de Verdes were about five
+hundred miles to the north of us, and the African coast about seven
+hundred to the east. On the whole, as the wind was coming round to the
+north, we thought that Sierra Leone might be best, and turned our head
+in that direction, the bark being at that time nearly hull down on our
+starboard quarter. Suddenly as we looked at her we saw a dense black
+cloud of smoke shoot up from her, which hung like a monstrous tree upon
+the sky line. A few seconds later a roar like thunder burst upon our
+ears, and as the smoke thinned away there was no sign left of the
+_Gloria Scott_. In an instant we swept the boat's head round again and
+pulled with all our strength for the place where the haze still trailing
+over the water marked the scene of this catastrophe.
+
+"'It was a long hour before we reached it, and at first we feared that
+we had come too late to save any one. A splintered boat and a number of
+crates and fragments of spars rising and falling on the waves showed us
+where the vessel had foundered; but there was no sign of life, and we
+had turned away in despair when we heard a cry for help, and saw at some
+distance a piece of wreckage with a man lying stretched across it. When
+we pulled him aboard the boat he proved to be a young seaman of the
+name of Hudson, who was so burned and exhausted that he could give us no
+account of what had happened until the following morning.
+
+"'It seemed that after we had left, Prendergast and his gang had
+proceeded to put to death the five remaining prisoners. The two warders
+had been shot and thrown overboard, and so also had the third mate.
+Prendergast then descended into the 'tween-decks and with his own hands
+cut the throat of the unfortunate surgeon. There only remained the first
+mate, who was a bold and active man. When he saw the convict approaching
+him with the bloody knife in his hand he kicked off his bonds, which he
+had somehow contrived to loosen, and rushing down the deck he plunged
+into the after-hold. A dozen convicts, who descended with their pistols
+in search of him, found him with a match-box in his hand seated beside
+an open powder-barrel, which was one of a hundred carried on board, and
+swearing that he would blow all hands up if he were in any way molested.
+An instant later the explosion occurred, though Hudson thought it was
+caused by the misdirected bullet of one of the convicts rather than the
+mate's match. Be the cause what it may, it was the end of the _Gloria
+Scott_ and of the rabble who held command of her.
+
+"'Such, in a few words, my dear boy, is the history of this terrible
+business in which I was involved. Next day we were picked up by the brig
+_Hotspur_, bound for Australia, whose captain found no difficulty in
+believing that we were the survivors of a passenger ship which had
+foundered. The transport ship Gloria Scott was set down by the Admiralty
+as being lost at sea, and no word has ever leaked out as to her true
+fate. After an excellent voyage the _Hotspur_ landed us at Sydney, where
+Evans and I changed our names and made our way to the diggings,
+where, among the crowds who were gathered from all nations, we had no
+difficulty in losing our former identities. The rest I need not relate.
+We prospered, we traveled, we came back as rich colonials to England,
+and we bought country estates. For more than twenty years we have
+led peaceful and useful lives, and we hoped that our past was forever
+buried. Imagine, then, my feelings when in the seaman who came to us I
+recognized instantly the man who had been picked off the wreck. He had
+tracked us down somehow, and had set himself to live upon our fears. You
+will understand now how it was that I strove to keep the peace with him,
+and you will in some measure sympathize with me in the fears which fill
+me, now that he has gone from me to his other victim with threats upon
+his tongue.'
+
+"Underneath is written in a hand so shaky as to be hardly legible,
+'Beddoes writes in cipher to say H. Has told all. Sweet Lord, have mercy
+on our souls!'
+
+"That was the narrative which I read that night to young Trevor, and I
+think, Watson, that under the circumstances it was a dramatic one.
+The good fellow was heart-broken at it, and went out to the Terai tea
+planting, where I hear that he is doing well. As to the sailor and
+Beddoes, neither of them was ever heard of again after that day on which
+the letter of warning was written. They both disappeared utterly and
+completely. No complaint had been lodged with the police, so that
+Beddoes had mistaken a threat for a deed. Hudson had been seen lurking
+about, and it was believed by the police that he had done away with
+Beddoes and had fled. For myself I believe that the truth was exactly
+the opposite. I think that it is most probable that Beddoes, pushed to
+desperation and believing himself to have been already betrayed, had
+revenged himself upon Hudson, and had fled from the country with as much
+money as he could lay his hands on. Those are the facts of the case,
+Doctor, and if they are of any use to your collection, I am sure that
+they are very heartily at your service."
+
+
+
+
+Adventure V. The Musgrave Ritual
+
+
+An anomaly which often struck me in the character of my friend Sherlock
+Holmes was that, although in his methods of thought he was the neatest
+and most methodical of mankind, and although also he affected a certain
+quiet primness of dress, he was none the less in his personal habits one
+of the most untidy men that ever drove a fellow-lodger to distraction.
+Not that I am in the least conventional in that respect myself. The
+rough-and-tumble work in Afghanistan, coming on the top of a natural
+Bohemianism of disposition, has made me rather more lax than befits a
+medical man. But with me there is a limit, and when I find a man who
+keeps his cigars in the coal-scuttle, his tobacco in the toe end of
+a Persian slipper, and his unanswered correspondence transfixed by a
+jack-knife into the very centre of his wooden mantelpiece, then I begin
+to give myself virtuous airs. I have always held, too, that pistol
+practice should be distinctly an open-air pastime; and when Holmes, in
+one of his queer humors, would sit in an arm-chair with his hair-trigger
+and a hundred Boxer cartridges, and proceed to adorn the opposite
+wall with a patriotic V. R. done in bullet-pocks, I felt strongly that
+neither the atmosphere nor the appearance of our room was improved by
+it.
+
+Our chambers were always full of chemicals and of criminal relics which
+had a way of wandering into unlikely positions, and of turning up in
+the butter-dish or in even less desirable places. But his papers were
+my great crux. He had a horror of destroying documents, especially those
+which were connected with his past cases, and yet it was only once in
+every year or two that he would muster energy to docket and arrange
+them; for, as I have mentioned somewhere in these incoherent memoirs,
+the outbursts of passionate energy when he performed the remarkable
+feats with which his name is associated were followed by reactions of
+lethargy during which he would lie about with his violin and his books,
+hardly moving save from the sofa to the table. Thus month after month
+his papers accumulated, until every corner of the room was stacked with
+bundles of manuscript which were on no account to be burned, and which
+could not be put away save by their owner. One winter's night, as we
+sat together by the fire, I ventured to suggest to him that, as he had
+finished pasting extracts into his common-place book, he might employ
+the next two hours in making our room a little more habitable. He could
+not deny the justice of my request, so with a rather rueful face he went
+off to his bedroom, from which he returned presently pulling a large tin
+box behind him. This he placed in the middle of the floor and, squatting
+down upon a stool in front of it, he threw back the lid. I could see
+that it was already a third full of bundles of paper tied up with red
+tape into separate packages.
+
+"There are cases enough here, Watson," said he, looking at me with
+mischievous eyes. "I think that if you knew all that I had in this box
+you would ask me to pull some out instead of putting others in."
+
+"These are the records of your early work, then?" I asked. "I have often
+wished that I had notes of those cases."
+
+"Yes, my boy, these were all done prematurely before my biographer
+had come to glorify me." He lifted bundle after bundle in a tender,
+caressing sort of way. "They are not all successes, Watson," said he.
+"But there are some pretty little problems among them. Here's the record
+of the Tarleton murders, and the case of Vamberry, the wine merchant,
+and the adventure of the old Russian woman, and the singular affair
+of the aluminium crutch, as well as a full account of Ricoletti of the
+club-foot, and his abominable wife. And here--ah, now, this really is
+something a little recherché."
+
+He dived his arm down to the bottom of the chest, and brought up a small
+wooden box with a sliding lid, such as children's toys are kept in. From
+within he produced a crumpled piece of paper, and old-fashioned brass
+key, a peg of wood with a ball of string attached to it, and three rusty
+old disks of metal.
+
+"Well, my boy, what do you make of this lot?" he asked, smiling at my
+expression.
+
+"It is a curious collection."
+
+"Very curious, and the story that hangs round it will strike you as
+being more curious still."
+
+"These relics have a history then?"
+
+"So much so that they are history."
+
+"What do you mean by that?"
+
+Sherlock Holmes picked them up one by one, and laid them along the edge
+of the table. Then he reseated himself in his chair and looked them over
+with a gleam of satisfaction in his eyes.
+
+"These," said he, "are all that I have left to remind me of the
+adventure of the Musgrave Ritual."
+
+I had heard him mention the case more than once, though I had never been
+able to gather the details. "I should be so glad," said I, "if you would
+give me an account of it."
+
+"And leave the litter as it is?" he cried, mischievously. "Your tidiness
+won't bear much strain after all, Watson. But I should be glad that you
+should add this case to your annals, for there are points in it which
+make it quite unique in the criminal records of this or, I believe,
+of any other country. A collection of my trifling achievements would
+certainly be incomplete which contained no account of this very singular
+business.
+
+"You may remember how the affair of the _Gloria Scott_, and my
+conversation with the unhappy man whose fate I told you of, first turned
+my attention in the direction of the profession which has become my
+life's work. You see me now when my name has become known far and
+wide, and when I am generally recognized both by the public and by the
+official force as being a final court of appeal in doubtful cases.
+Even when you knew me first, at the time of the affair which you have
+commemorated in 'A Study in Scarlet,' I had already established a
+considerable, though not a very lucrative, connection. You can hardly
+realize, then, how difficult I found it at first, and how long I had to
+wait before I succeeded in making any headway.
+
+"When I first came up to London I had rooms in Montague Street, just
+round the corner from the British Museum, and there I waited, filling in
+my too abundant leisure time by studying all those branches of science
+which might make me more efficient. Now and again cases came in my way,
+principally through the introduction of old fellow-students, for during
+my last years at the University there was a good deal of talk there
+about myself and my methods. The third of these cases was that of the
+Musgrave Ritual, and it is to the interest which was aroused by that
+singular chain of events, and the large issues which proved to be at
+stake, that I trace my first stride towards the position which I now
+hold.
+
+"Reginald Musgrave had been in the same college as myself, and I had
+some slight acquaintance with him. He was not generally popular among
+the undergraduates, though it always seemed to me that what was set down
+as pride was really an attempt to cover extreme natural diffidence.
+In appearance he was a man of exceedingly aristocratic type, thin,
+high-nosed, and large-eyed, with languid and yet courtly manners. He was
+indeed a scion of one of the very oldest families in the kingdom,
+though his branch was a cadet one which had separated from the northern
+Musgraves some time in the sixteenth century, and had established itself
+in western Sussex, where the Manor House of Hurlstone is perhaps the
+oldest inhabited building in the county. Something of his birth place
+seemed to cling to the man, and I never looked at his pale, keen face
+or the poise of his head without associating him with gray archways and
+mullioned windows and all the venerable wreckage of a feudal keep. Once
+or twice we drifted into talk, and I can remember that more than once he
+expressed a keen interest in my methods of observation and inference.
+
+"For four years I had seen nothing of him until one morning he walked
+into my room in Montague Street. He had changed little, was dressed like
+a young man of fashion--he was always a bit of a dandy--and preserved
+the same quiet, suave manner which had formerly distinguished him.
+
+"'How has all gone with you Musgrave?' I asked, after we had cordially
+shaken hands.
+
+"'You probably heard of my poor father's death,' said he; 'he was
+carried off about two years ago. Since then I have of course had the
+Hurlstone estates to manage, and as I am member for my district as well,
+my life has been a busy one. But I understand, Holmes, that you are
+turning to practical ends those powers with which you used to amaze us?'
+
+"'Yes,' said I, 'I have taken to living by my wits.'
+
+"'I am delighted to hear it, for your advice at present would be
+exceedingly valuable to me. We have had some very strange doings at
+Hurlstone, and the police have been able to throw no light upon the
+matter. It is really the most extraordinary and inexplicable business.'
+
+"You can imagine with what eagerness I listened to him, Watson, for
+the very chance for which I had been panting during all those months
+of inaction seemed to have come within my reach. In my inmost heart I
+believed that I could succeed where others failed, and now I had the
+opportunity to test myself.
+
+"'Pray, let me have the details,' I cried.
+
+"Reginald Musgrave sat down opposite to me, and lit the cigarette which
+I had pushed towards him.
+
+"'You must know,' said he, 'that though I am a bachelor, I have to keep
+up a considerable staff of servants at Hurlstone, for it is a rambling
+old place, and takes a good deal of looking after. I preserve, too, and
+in the pheasant months I usually have a house-party, so that it would
+not do to be short-handed. Altogether there are eight maids, the cook,
+the butler, two footmen, and a boy. The garden and the stables of course
+have a separate staff.
+
+"'Of these servants the one who had been longest in our service was
+Brunton the butler. He was a young school-master out of place when he
+was first taken up by my father, but he was a man of great energy and
+character, and he soon became quite invaluable in the household. He was
+a well-grown, handsome man, with a splendid forehead, and though he has
+been with us for twenty years he cannot be more than forty now. With
+his personal advantages and his extraordinary gifts--for he can speak
+several languages and play nearly every musical instrument--it is
+wonderful that he should have been satisfied so long in such a position,
+but I suppose that he was comfortable, and lacked energy to make any
+change. The butler of Hurlstone is always a thing that is remembered by
+all who visit us.
+
+"'But this paragon has one fault. He is a bit of a Don Juan, and you can
+imagine that for a man like him it is not a very difficult part to play
+in a quiet country district. When he was married it was all right, but
+since he has been a widower we have had no end of trouble with him. A
+few months ago we were in hopes that he was about to settle down again
+for he became engaged to Rachel Howells, our second house-maid; but he
+has thrown her over since then and taken up with Janet Tregellis, the
+daughter of the head game-keeper. Rachel--who is a very good girl, but
+of an excitable Welsh temperament--had a sharp touch of brain-fever,
+and goes about the house now--or did until yesterday--like a black-eyed
+shadow of her former self. That was our first drama at Hurlstone; but a
+second one came to drive it from our minds, and it was prefaced by the
+disgrace and dismissal of butler Brunton.
+
+"'This was how it came about. I have said that the man was intelligent,
+and this very intelligence has caused his ruin, for it seems to have
+led to an insatiable curiosity about things which did not in the least
+concern him. I had no idea of the lengths to which this would carry him,
+until the merest accident opened my eyes to it.
+
+"'I have said that the house is a rambling one. One day last week--on
+Thursday night, to be more exact--I found that I could not sleep,
+having foolishly taken a cup of strong café noir after my dinner. After
+struggling against it until two in the morning, I felt that it was quite
+hopeless, so I rose and lit the candle with the intention of continuing
+a novel which I was reading. The book, however, had been left in the
+billiard-room, so I pulled on my dressing-gown and started off to get
+it.
+
+"'In order to reach the billiard-room I had to descend a flight of
+stairs and then to cross the head of a passage which led to the library
+and the gun-room. You can imagine my surprise when, as I looked down
+this corridor, I saw a glimmer of light coming from the open door of the
+library. I had myself extinguished the lamp and closed the door before
+coming to bed. Naturally my first thought was of burglars. The corridors
+at Hurlstone have their walls largely decorated with trophies of old
+weapons. From one of these I picked a battle-axe, and then, leaving my
+candle behind me, I crept on tiptoe down the passage and peeped in at
+the open door.
+
+"'Brunton, the butler, was in the library. He was sitting, fully
+dressed, in an easy-chair, with a slip of paper which looked like a
+map upon his knee, and his forehead sunk forward upon his hand in deep
+thought. I stood dumb with astonishment, watching him from the darkness.
+A small taper on the edge of the table shed a feeble light which
+sufficed to show me that he was fully dressed. Suddenly, as I looked,
+he rose from his chair, and walking over to a bureau at the side, he
+unlocked it and drew out one of the drawers. From this he took a paper,
+and returning to his seat he flattened it out beside the taper on the
+edge of the table, and began to study it with minute attention. My
+indignation at this calm examination of our family documents overcame
+me so far that I took a step forward, and Brunton, looking up, saw me
+standing in the doorway. He sprang to his feet, his face turned livid
+with fear, and he thrust into his breast the chart-like paper which he
+had been originally studying.
+
+"'"So!" said I. "This is how you repay the trust which we have reposed
+in you. You will leave my service to-morrow."
+
+"'He bowed with the look of a man who is utterly crushed, and slunk past
+me without a word. The taper was still on the table, and by its light
+I glanced to see what the paper was which Brunton had taken from the
+bureau. To my surprise it was nothing of any importance at all,
+but simply a copy of the questions and answers in the singular old
+observance called the Musgrave Ritual. It is a sort of ceremony peculiar
+to our family, which each Musgrave for centuries past has gone through
+on his coming of age--a thing of private interest, and perhaps of some
+little importance to the archaeologist, like our own blazonings and
+charges, but of no practical use whatever.'
+
+"'We had better come back to the paper afterwards,' said I.
+
+"'If you think it really necessary,' he answered, with some hesitation.
+'To continue my statement, however: I relocked the bureau, using the key
+which Brunton had left, and I had turned to go when I was surprised to
+find that the butler had returned, and was standing before me.
+
+"'"Mr. Musgrave, sir," he cried, in a voice which was hoarse with
+emotion, "I can't bear disgrace, sir. I've always been proud above my
+station in life, and disgrace would kill me. My blood will be on your
+head, sir--it will, indeed--if you drive me to despair. If you cannot
+keep me after what has passed, then for God's sake let me give you
+notice and leave in a month, as if of my own free will. I could stand
+that, Mr. Musgrave, but not to be cast out before all the folk that I
+know so well."
+
+"'"You don't deserve much consideration, Brunton," I answered. "Your
+conduct has been most infamous. However, as you have been a long time in
+the family, I have no wish to bring public disgrace upon you. A month,
+however is too long. Take yourself away in a week, and give what reason
+you like for going."
+
+"'"Only a week, sir?" he cried, in a despairing voice. "A fortnight--say
+at least a fortnight!"
+
+"'"A week," I repeated, "and you may consider yourself to have been very
+leniently dealt with."
+
+"'He crept away, his face sunk upon his breast, like a broken man, while
+I put out the light and returned to my room.
+
+
+"'"For two days after this Brunton was most assiduous in his attention
+to his duties. I made no allusion to what had passed, and waited with
+some curiosity to see how he would cover his disgrace. On the third
+morning, however he did not appear, as was his custom, after breakfast
+to receive my instructions for the day. As I left the dining-room I
+happened to meet Rachel Howells, the maid. I have told you that she had
+only recently recovered from an illness, and was looking so wretchedly
+pale and wan that I remonstrated with her for being at work.
+
+"'"You should be in bed," I said. "Come back to your duties when you are
+stronger."
+
+"'She looked at me with so strange an expression that I began to suspect
+that her brain was affected.
+
+"'"I am strong enough, Mr. Musgrave," said she.
+
+"'"We will see what the doctor says," I answered. "You must stop work
+now, and when you go downstairs just say that I wish to see Brunton."
+
+"'"The butler is gone," said she.
+
+"'"Gone! Gone where?"
+
+"'"He is gone. No one has seen him. He is not in his room. Oh, yes, he
+is gone, he is gone!" She fell back against the wall with shriek after
+shriek of laughter, while I, horrified at this sudden hysterical attack,
+rushed to the bell to summon help. The girl was taken to her room, still
+screaming and sobbing, while I made inquiries about Brunton. There was
+no doubt about it that he had disappeared. His bed had not been slept
+in, he had been seen by no one since he had retired to his room the
+night before, and yet it was difficult to see how he could have left
+the house, as both windows and doors were found to be fastened in the
+morning. His clothes, his watch, and even his money were in his room,
+but the black suit which he usually wore was missing. His slippers,
+too, were gone, but his boots were left behind. Where then could butler
+Brunton have gone in the night, and what could have become of him now?
+
+"'Of course we searched the house from cellar to garret, but there was
+no trace of him. It is, as I have said, a labyrinth of an old house,
+especially the original wing, which is now practically uninhabited; but
+we ransacked every room and cellar without discovering the least sign
+of the missing man. It was incredible to me that he could have gone away
+leaving all his property behind him, and yet where could he be? I called
+in the local police, but without success. Rain had fallen on the night
+before and we examined the lawn and the paths all round the house, but
+in vain. Matters were in this state, when a new development quite drew
+our attention away from the original mystery.
+
+"'For two days Rachel Howells had been so ill, sometimes delirious,
+sometimes hysterical, that a nurse had been employed to sit up with her
+at night. On the third night after Brunton's disappearance, the nurse,
+finding her patient sleeping nicely, had dropped into a nap in the
+arm-chair, when she woke in the early morning to find the bed empty, the
+window open, and no signs of the invalid. I was instantly aroused, and,
+with the two footmen, started off at once in search of the missing girl.
+It was not difficult to tell the direction which she had taken, for,
+starting from under her window, we could follow her footmarks easily
+across the lawn to the edge of the mere, where they vanished close to
+the gravel path which leads out of the grounds. The lake there is eight
+feet deep, and you can imagine our feelings when we saw that the trail
+of the poor demented girl came to an end at the edge of it.
+
+"'Of course, we had the drags at once, and set to work to recover the
+remains, but no trace of the body could we find. On the other hand, we
+brought to the surface an object of a most unexpected kind. It was a
+linen bag which contained within it a mass of old rusted and discolored
+metal and several dull-colored pieces of pebble or glass. This strange
+find was all that we could get from the mere, and, although we made
+every possible search and inquiry yesterday, we know nothing of the fate
+either of Rachel Howells or of Richard Brunton. The county police are at
+their wits' end, and I have come up to you as a last resource.'
+
+"You can imagine, Watson, with what eagerness I listened to this
+extraordinary sequence of events, and endeavored to piece them together,
+and to devise some common thread upon which they might all hang. The
+butler was gone. The maid was gone. The maid had loved the butler, but
+had afterwards had cause to hate him. She was of Welsh blood, fiery
+and passionate. She had been terribly excited immediately after his
+disappearance. She had flung into the lake a bag containing some
+curious contents. These were all factors which had to be taken into
+consideration, and yet none of them got quite to the heart of the
+matter. What was the starting-point of this chain of events? There lay
+the end of this tangled line.
+
+"'I must see that paper, Musgrave,' said I, 'which this butler of your
+thought it worth his while to consult, even at the risk of the loss of
+his place.'
+
+"'It is rather an absurd business, this ritual of ours,' he answered.
+'But it has at least the saving grace of antiquity to excuse it. I have
+a copy of the questions and answers here if you care to run your eye
+over them.'
+
+"He handed me the very paper which I have here, Watson, and this is the
+strange catechism to which each Musgrave had to submit when he came to
+man's estate. I will read you the questions and answers as they stand.
+
+"'Whose was it?'
+
+"'His who is gone.'
+
+"'Who shall have it?'
+
+"'He who will come.'
+
+"'Where was the sun?'
+
+"'Over the oak.'
+
+"'Where was the shadow?'
+
+"'Under the elm.'
+
+"How was it stepped?'
+
+"'North by ten and by ten, east by five and by five, south by two and by
+two, west by one and by one, and so under.'
+
+"'What shall we give for it?'
+
+"'All that is ours.'
+
+"'Why should we give it?'
+
+"'For the sake of the trust.'
+
+"'The original has no date, but is in the spelling of the middle of the
+seventeenth century,' remarked Musgrave. 'I am afraid, however, that it
+can be of little help to you in solving this mystery.'
+
+"'At least,' said I, 'it gives us another mystery, and one which is even
+more interesting than the first. It may be that the solution of the one
+may prove to be the solution of the other. You will excuse me, Musgrave,
+if I say that your butler appears to me to have been a very clever man,
+and to have had a clearer insight than ten generations of his masters.'
+
+"'I hardly follow you,' said Musgrave. 'The paper seems to me to be of
+no practical importance.'
+
+"'But to me it seems immensely practical, and I fancy that Brunton took
+the same view. He had probably seen it before that night on which you
+caught him.'
+
+"'It is very possible. We took no pains to hide it.'
+
+"'He simply wished, I should imagine, to refresh his memory upon that
+last occasion. He had, as I understand, some sort of map or chart which
+he was comparing with the manuscript, and which he thrust into his
+pocket when you appeared.'
+
+"'That is true. But what could he have to do with this old family custom
+of ours, and what does this rigmarole mean?'
+
+"'I don't think that we should have much difficulty in determining
+that,' said I; 'with your permission we will take the first train down
+to Sussex, and go a little more deeply into the matter upon the spot.'
+
+
+"The same afternoon saw us both at Hurlstone. Possibly you have seen
+pictures and read descriptions of the famous old building, so I will
+confine my account of it to saying that it is built in the shape of
+an L, the long arm being the more modern portion, and the shorter the
+ancient nucleus, from which the other had developed. Over the low,
+heavily-lintelled door, in the centre of this old part, is chiseled the
+date, 1607, but experts are agreed that the beams and stone-work are
+really much older than this. The enormously thick walls and tiny windows
+of this part had in the last century driven the family into building the
+new wing, and the old one was used now as a store-house and a cellar,
+when it was used at all. A splendid park with fine old timber surrounds
+the house, and the lake, to which my client had referred, lay close to
+the avenue, about two hundred yards from the building.
+
+"I was already firmly convinced, Watson, that there were not three
+separate mysteries here, but one only, and that if I could read the
+Musgrave Ritual aright I should hold in my hand the clue which would
+lead me to the truth concerning both the butler Brunton and the maid
+Howells. To that then I turned all my energies. Why should this servant
+be so anxious to master this old formula? Evidently because he saw
+something in it which had escaped all those generations of country
+squires, and from which he expected some personal advantage. What was it
+then, and how had it affected his fate?
+
+"It was perfectly obvious to me, on reading the ritual, that the
+measurements must refer to some spot to which the rest of the document
+alluded, and that if we could find that spot, we should be in a fair way
+towards finding what the secret was which the old Musgraves had thought
+it necessary to embalm in so curious a fashion. There were two guides
+given us to start with, an oak and an elm. As to the oak there could be
+no question at all. Right in front of the house, upon the left-hand
+side of the drive, there stood a patriarch among oaks, one of the most
+magnificent trees that I have ever seen.
+
+"'That was there when your ritual was drawn up,' said I, as we drove
+past it.
+
+"'It was there at the Norman Conquest in all probability,' he answered.
+'It has a girth of twenty-three feet.'
+
+"'Have you any old elms?' I asked.
+
+"'There used to be a very old one over yonder but it was struck by
+lightning ten years ago, and we cut down the stump.'
+
+"'You can see where it used to be?'
+
+"'Oh, yes.'
+
+"'There are no other elms?'
+
+"'No old ones, but plenty of beeches.'
+
+"'I should like to see where it grew.'
+
+"We had driven up in a dog-cart, and my client led me away at once,
+without our entering the house, to the scar on the lawn where the
+elm had stood. It was nearly midway between the oak and the house. My
+investigation seemed to be progressing.
+
+"'I suppose it is impossible to find out how high the elm was?' I asked.
+
+"'I can give you it at once. It was sixty-four feet.'
+
+"'How do you come to know it?' I asked, in surprise.
+
+"'When my old tutor used to give me an exercise in trigonometry, it
+always took the shape of measuring heights. When I was a lad I worked
+out every tree and building in the estate.'
+
+"This was an unexpected piece of luck. My data were coming more quickly
+than I could have reasonably hoped.
+
+"'Tell me,' I asked, 'did your butler ever ask you such a question?'
+
+"Reginald Musgrave looked at me in astonishment. 'Now that you call it
+to my mind,' he answered, 'Brunton did ask me about the height of the
+tree some months ago, in connection with some little argument with the
+groom.'
+
+"This was excellent news, Watson, for it showed me that I was on the
+right road. I looked up at the sun. It was low in the heavens, and I
+calculated that in less than an hour it would lie just above the topmost
+branches of the old oak. One condition mentioned in the Ritual would
+then be fulfilled. And the shadow of the elm must mean the farther end
+of the shadow, otherwise the trunk would have been chosen as the guide.
+I had, then, to find where the far end of the shadow would fall when the
+sun was just clear of the oak."
+
+"That must have been difficult, Holmes, when the elm was no longer
+there."
+
+"Well, at least I knew that if Brunton could do it, I could also.
+Besides, there was no real difficulty. I went with Musgrave to his study
+and whittled myself this peg, to which I tied this long string with a
+knot at each yard. Then I took two lengths of a fishing-rod, which came
+to just six feet, and I went back with my client to where the elm had
+been. The sun was just grazing the top of the oak. I fastened the rod
+on end, marked out the direction of the shadow, and measured it. It was
+nine feet in length.
+
+"Of course the calculation now was a simple one. If a rod of six feet
+threw a shadow of nine, a tree of sixty-four feet would throw one of
+ninety-six, and the line of the one would of course be the line of the
+other. I measured out the distance, which brought me almost to the
+wall of the house, and I thrust a peg into the spot. You can imagine
+my exultation, Watson, when within two inches of my peg I saw a conical
+depression in the ground. I knew that it was the mark made by Brunton in
+his measurements, and that I was still upon his trail.
+
+"From this starting-point I proceeded to step, having first taken the
+cardinal points by my pocket-compass. Ten steps with each foot took me
+along parallel with the wall of the house, and again I marked my spot
+with a peg. Then I carefully paced off five to the east and two to the
+south. It brought me to the very threshold of the old door. Two steps
+to the west meant now that I was to go two paces down the stone-flagged
+passage, and this was the place indicated by the Ritual.
+
+"Never have I felt such a cold chill of disappointment, Watson. For a
+moment is seemed to me that there must be some radical mistake in my
+calculations. The setting sun shone full upon the passage floor, and I
+could see that the old, foot-worn gray stones with which it was paved
+were firmly cemented together, and had certainly not been moved for many
+a long year. Brunton had not been at work here. I tapped upon the floor,
+but it sounded the same all over, and there was no sign of any crack
+or crevice. But, fortunately, Musgrave, who had begun to appreciate the
+meaning of my proceedings, and who was now as excited as myself, took
+out his manuscript to check my calculation.
+
+"'And under,' he cried. 'You have omitted the "and under."'
+
+"I had thought that it meant that we were to dig, but now, of course,
+I saw at once that I was wrong. 'There is a cellar under this then?' I
+cried.
+
+"'Yes, and as old as the house. Down here, through this door.'
+
+"We went down a winding stone stair, and my companion, striking a match,
+lit a large lantern which stood on a barrel in the corner. In an instant
+it was obvious that we had at last come upon the true place, and that we
+had not been the only people to visit the spot recently.
+
+"It had been used for the storage of wood, but the billets, which had
+evidently been littered over the floor, were now piled at the sides, so
+as to leave a clear space in the middle. In this space lay a large and
+heavy flagstone with a rusted iron ring in the centre to which a thick
+shepherd's-check muffler was attached.
+
+"'By Jove!' cried my client. 'That's Brunton's muffler. I have seen it
+on him, and could swear to it. What has the villain been doing here?'
+
+"At my suggestion a couple of the county police were summoned to be
+present, and I then endeavored to raise the stone by pulling on the
+cravat. I could only move it slightly, and it was with the aid of one
+of the constables that I succeeded at last in carrying it to one side.
+A black hole yawned beneath into which we all peered, while Musgrave,
+kneeling at the side, pushed down the lantern.
+
+"A small chamber about seven feet deep and four feet square lay open to
+us. At one side of this was a squat, brass-bound wooden box, the lid of
+which was hinged upwards, with this curious old-fashioned key projecting
+from the lock. It was furred outside by a thick layer of dust, and damp
+and worms had eaten through the wood, so that a crop of livid fungi
+was growing on the inside of it. Several discs of metal, old coins
+apparently, such as I hold here, were scattered over the bottom of the
+box, but it contained nothing else.
+
+"At the moment, however, we had no thought for the old chest, for our
+eyes were riveted upon that which crouched beside it. It was the figure
+of a man, clad in a suit of black, who squatted down upon his hams with
+his forehead sunk upon the edge of the box and his two arms thrown out
+on each side of it. The attitude had drawn all the stagnant blood to
+the face, and no man could have recognized that distorted liver-colored
+countenance; but his height, his dress, and his hair were all sufficient
+to show my client, when we had drawn the body up, that it was indeed his
+missing butler. He had been dead some days, but there was no wound or
+bruise upon his person to show how he had met his dreadful end. When
+his body had been carried from the cellar we found ourselves still
+confronted with a problem which was almost as formidable as that with
+which we had started.
+
+"I confess that so far, Watson, I had been disappointed in my
+investigation. I had reckoned upon solving the matter when once I had
+found the place referred to in the Ritual; but now I was there, and was
+apparently as far as ever from knowing what it was which the family had
+concealed with such elaborate precautions. It is true that I had thrown
+a light upon the fate of Brunton, but now I had to ascertain how that
+fate had come upon him, and what part had been played in the matter by
+the woman who had disappeared. I sat down upon a keg in the corner and
+thought the whole matter carefully over.
+
+"You know my methods in such cases, Watson. I put myself in the man's
+place and, having first gauged his intelligence, I try to imagine how I
+should myself have proceeded under the same circumstances. In this
+case the matter was simplified by Brunton's intelligence being quite
+first-rate, so that it was unnecessary to make any allowance for the
+personal equation, as the astronomers have dubbed it. He knew that
+something valuable was concealed. He had spotted the place. He found
+that the stone which covered it was just too heavy for a man to move
+unaided. What would he do next? He could not get help from outside, even
+if he had some one whom he could trust, without the unbarring of doors
+and considerable risk of detection. It was better, if he could, to have
+his helpmate inside the house. But whom could he ask? This girl had been
+devoted to him. A man always finds it hard to realize that he may have
+finally lost a woman's love, however badly he may have treated her. He
+would try by a few attentions to make his peace with the girl Howells,
+and then would engage her as his accomplice. Together they would come at
+night to the cellar, and their united force would suffice to raise the
+stone. So far I could follow their actions as if I had actually seen
+them.
+
+"But for two of them, and one a woman, it must have been heavy work the
+raising of that stone. A burly Sussex policeman and I had found it no
+light job. What would they do to assist them? Probably what I should
+have done myself. I rose and examined carefully the different billets
+of wood which were scattered round the floor. Almost at once I came
+upon what I expected. One piece, about three feet in length, had a very
+marked indentation at one end, while several were flattened at the sides
+as if they had been compressed by some considerable weight. Evidently,
+as they had dragged the stone up they had thrust the chunks of wood into
+the chink, until at last, when the opening was large enough to crawl
+through, they would hold it open by a billet placed lengthwise, which
+might very well become indented at the lower end, since the whole weight
+of the stone would press it down on to the edge of this other slab. So
+far I was still on safe ground.
+
+"And now how was I to proceed to reconstruct this midnight drama?
+Clearly, only one could fit into the hole, and that one was Brunton. The
+girl must have waited above. Brunton then unlocked the box, handed up
+the contents presumably--since they were not to be found--and then--and
+then what happened?
+
+"What smouldering fire of vengeance had suddenly sprung into flame in
+this passionate Celtic woman's soul when she saw the man who had wronged
+her--wronged her, perhaps, far more than we suspected--in her power?
+Was it a chance that the wood had slipped, and that the stone had shut
+Brunton into what had become his sepulchre? Had she only been guilty of
+silence as to his fate? Or had some sudden blow from her hand dashed the
+support away and sent the slab crashing down into its place? Be that
+as it might, I seemed to see that woman's figure still clutching at her
+treasure trove and flying wildly up the winding stair, with her ears
+ringing perhaps with the muffled screams from behind her and with the
+drumming of frenzied hands against the slab of stone which was choking
+her faithless lover's life out.
+
+"Here was the secret of her blanched face, her shaken nerves, her peals
+of hysterical laughter on the next morning. But what had been in the
+box? What had she done with that? Of course, it must have been the old
+metal and pebbles which my client had dragged from the mere. She had
+thrown them in there at the first opportunity to remove the last trace
+of her crime.
+
+"For twenty minutes I had sat motionless, thinking the matter out.
+Musgrave still stood with a very pale face, swinging his lantern and
+peering down into the hole.
+
+"'These are coins of Charles the First,' said he, holding out the few
+which had been in the box; 'you see we were right in fixing our date for
+the Ritual.'
+
+"'We may find something else of Charles the First,' I cried, as the
+probable meaning of the first two questions of the Ritual broke suddenly
+upon me. 'Let me see the contents of the bag which you fished from the
+mere.'
+
+
+"We ascended to his study, and he laid the debris before me. I could
+understand his regarding it as of small importance when I looked at it,
+for the metal was almost black and the stones lustreless and dull. I
+rubbed one of them on my sleeve, however, and it glowed afterwards like
+a spark in the dark hollow of my hand. The metal work was in the form
+of a double ring, but it had been bent and twisted out of its original
+shape.
+
+"'You must bear in mind,' said I, 'that the royal party made head in
+England even after the death of the king, and that when they at last
+fled they probably left many of their most precious possessions buried
+behind them, with the intention of returning for them in more peaceful
+times.'
+
+"'My ancestor, Sir Ralph Musgrave, was a prominent Cavalier and the
+right-hand man of Charles the Second in his wanderings,' said my friend.
+
+"'Ah, indeed!' I answered. 'Well now, I think that really should give us
+the last link that we wanted. I must congratulate you on coming into
+the possession, though in rather a tragic manner of a relic which is of
+great intrinsic value, but of even greater importance as an historical
+curiosity.'
+
+"'What is it, then?' he gasped in astonishment.
+
+"'It is nothing less than the ancient crown of the kings of England.'
+
+"'The crown!'
+
+"'Precisely. Consider what the Ritual says: How does it run? "Whose was
+it?" "His who is gone." That was after the execution of Charles. Then,
+"Who shall have it?" "He who will come." That was Charles the Second,
+whose advent was already foreseen. There can, I think, be no doubt that
+this battered and shapeless diadem once encircled the brows of the royal
+Stuarts.'
+
+"'And how came it in the pond?'
+
+"'Ah, that is a question that will take some time to answer.' And with
+that I sketched out to him the whole long chain of surmise and of proof
+which I had constructed. The twilight had closed in and the moon was
+shining brightly in the sky before my narrative was finished.
+
+"'And how was it then that Charles did not get his crown when he
+returned?' asked Musgrave, pushing back the relic into its linen bag.
+
+"'Ah, there you lay your finger upon the one point which we shall
+probably never be able to clear up. It is likely that the Musgrave who
+held the secret died in the interval, and by some oversight left this
+guide to his descendant without explaining the meaning of it. From that
+day to this it has been handed down from father to son, until at last
+it came within reach of a man who tore its secret out of it and lost his
+life in the venture.'
+
+
+"And that's the story of the Musgrave Ritual, Watson. They have the
+crown down at Hurlstone--though they had some legal bother and a
+considerable sum to pay before they were allowed to retain it. I am sure
+that if you mentioned my name they would be happy to show it to you. Of
+the woman nothing was ever heard, and the probability is that she got
+away out of England and carried herself and the memory of her crime to
+some land beyond the seas."
+
+
+
+
+Adventure VI. The Reigate Puzzle
+
+
+It was some time before the health of my friend Mr. Sherlock Holmes
+recovered from the strain caused by his immense exertions in the spring
+of '87. The whole question of the Netherland-Sumatra Company and of the
+colossal schemes of Baron Maupertuis are too recent in the minds of the
+public, and are too intimately concerned with politics and finance to be
+fitting subjects for this series of sketches. They led, however, in an
+indirect fashion to a singular and complex problem which gave my friend
+an opportunity of demonstrating the value of a fresh weapon among the
+many with which he waged his life-long battle against crime.
+
+On referring to my notes I see that it was upon the 14th of April that
+I received a telegram from Lyons which informed me that Holmes was
+lying ill in the Hotel Dulong. Within twenty-four hours I was in his
+sick-room, and was relieved to find that there was nothing formidable in
+his symptoms. Even his iron constitution, however, had broken down
+under the strain of an investigation which had extended over two months,
+during which period he had never worked less than fifteen hours a day,
+and had more than once, as he assured me, kept to his task for five days
+at a stretch. Even the triumphant issue of his labors could not save him
+from reaction after so terrible an exertion, and at a time when Europe
+was ringing with his name and when his room was literally ankle-deep
+with congratulatory telegrams I found him a prey to the blackest
+depression. Even the knowledge that he had succeeded where the police of
+three countries had failed, and that he had outmanoeuvred at every point
+the most accomplished swindler in Europe, was insufficient to rouse him
+from his nervous prostration.
+
+Three days later we were back in Baker Street together; but it was
+evident that my friend would be much the better for a change, and the
+thought of a week of spring time in the country was full of attractions
+to me also. My old friend, Colonel Hayter, who had come under my
+professional care in Afghanistan, had now taken a house near Reigate in
+Surrey, and had frequently asked me to come down to him upon a visit. On
+the last occasion he had remarked that if my friend would only come
+with me he would be glad to extend his hospitality to him also. A little
+diplomacy was needed, but when Holmes understood that the establishment
+was a bachelor one, and that he would be allowed the fullest freedom,
+he fell in with my plans and a week after our return from Lyons we were
+under the Colonel's roof. Hayter was a fine old soldier who had seen
+much of the world, and he soon found, as I had expected, that Holmes and
+he had much in common.
+
+On the evening of our arrival we were sitting in the Colonel's gun-room
+after dinner, Holmes stretched upon the sofa, while Hayter and I looked
+over his little armory of Eastern weapons.
+
+"By the way," said he suddenly, "I think I'll take one of these pistols
+upstairs with me in case we have an alarm."
+
+"An alarm!" said I.
+
+"Yes, we've had a scare in this part lately. Old Acton, who is one of
+our county magnates, had his house broken into last Monday. No great
+damage done, but the fellows are still at large."
+
+"No clue?" asked Holmes, cocking his eye at the Colonel.
+
+"None as yet. But the affair is a petty one, one of our little country
+crimes, which must seem too small for your attention, Mr. Holmes, after
+this great international affair."
+
+Holmes waved away the compliment, though his smile showed that it had
+pleased him.
+
+"Was there any feature of interest?"
+
+"I fancy not. The thieves ransacked the library and got very little for
+their pains. The whole place was turned upside down, drawers burst open,
+and presses ransacked, with the result that an odd volume of Pope's
+'Homer,' two plated candlesticks, an ivory letter-weight, a small oak
+barometer, and a ball of twine are all that have vanished."
+
+"What an extraordinary assortment!" I exclaimed.
+
+"Oh, the fellows evidently grabbed hold of everything they could get."
+
+Holmes grunted from the sofa.
+
+"The county police ought to make something of that," said he; "why, it
+is surely obvious that--"
+
+But I held up a warning finger.
+
+"You are here for a rest, my dear fellow. For Heaven's sake don't get
+started on a new problem when your nerves are all in shreds."
+
+Holmes shrugged his shoulders with a glance of comic resignation towards
+the Colonel, and the talk drifted away into less dangerous channels.
+
+It was destined, however, that all my professional caution should be
+wasted, for next morning the problem obtruded itself upon us in such a
+way that it was impossible to ignore it, and our country visit took a
+turn which neither of us could have anticipated. We were at breakfast
+when the Colonel's butler rushed in with all his propriety shaken out of
+him.
+
+"Have you heard the news, sir?" he gasped. "At the Cunningham's sir!"
+
+"Burglary!" cried the Colonel, with his coffee-cup in mid-air.
+
+"Murder!"
+
+The Colonel whistled. "By Jove!" said he. "Who's killed, then? The J.P.
+or his son?"
+
+"Neither, sir. It was William the coachman. Shot through the heart, sir,
+and never spoke again."
+
+"Who shot him, then?"
+
+"The burglar, sir. He was off like a shot and got clean away. He'd just
+broke in at the pantry window when William came on him and met his end
+in saving his master's property."
+
+"What time?"
+
+"It was last night, sir, somewhere about twelve."
+
+"Ah, then, we'll step over afterwards," said the Colonel, coolly
+settling down to his breakfast again. "It's a baddish business," he
+added when the butler had gone; "he's our leading man about here, is old
+Cunningham, and a very decent fellow too. He'll be cut up over this, for
+the man has been in his service for years and was a good servant. It's
+evidently the same villains who broke into Acton's."
+
+"And stole that very singular collection," said Holmes, thoughtfully.
+
+"Precisely."
+
+"Hum! It may prove the simplest matter in the world, but all the same
+at first glance this is just a little curious, is it not? A gang of
+burglars acting in the country might be expected to vary the scene of
+their operations, and not to crack two cribs in the same district within
+a few days. When you spoke last night of taking precautions I remember
+that it passed through my mind that this was probably the last parish
+in England to which the thief or thieves would be likely to turn their
+attention--which shows that I have still much to learn."
+
+"I fancy it's some local practitioner," said the Colonel. "In that case,
+of course, Acton's and Cunningham's are just the places he would go for,
+since they are far the largest about here."
+
+"And richest?"
+
+"Well, they ought to be, but they've had a lawsuit for some years which
+has sucked the blood out of both of them, I fancy. Old Acton has some
+claim on half Cunningham's estate, and the lawyers have been at it with
+both hands."
+
+"If it's a local villain there should not be much difficulty in running
+him down," said Holmes with a yawn. "All right, Watson, I don't intend
+to meddle."
+
+"Inspector Forrester, sir," said the butler, throwing open the door.
+
+The official, a smart, keen-faced young fellow, stepped into the room.
+"Good-morning, Colonel," said he; "I hope I don't intrude, but we hear
+that Mr. Holmes of Baker Street is here."
+
+The Colonel waved his hand towards my friend, and the Inspector bowed.
+
+"We thought that perhaps you would care to step across, Mr. Holmes."
+
+"The fates are against you, Watson," said he, laughing. "We were
+chatting about the matter when you came in, Inspector. Perhaps you
+can let us have a few details." As he leaned back in his chair in the
+familiar attitude I knew that the case was hopeless.
+
+"We had no clue in the Acton affair. But here we have plenty to go on,
+and there's no doubt it is the same party in each case. The man was
+seen."
+
+"Ah!"
+
+"Yes, sir. But he was off like a deer after the shot that killed poor
+William Kirwan was fired. Mr. Cunningham saw him from the bedroom
+window, and Mr. Alec Cunningham saw him from the back passage. It was
+quarter to twelve when the alarm broke out. Mr. Cunningham had just got
+into bed, and Mr. Alec was smoking a pipe in his dressing-gown. They
+both heard William the coachman calling for help, and Mr. Alec ran down
+to see what was the matter. The back door was open, and as he came to
+the foot of the stairs he saw two men wrestling together outside. One of
+them fired a shot, the other dropped, and the murderer rushed across the
+garden and over the hedge. Mr. Cunningham, looking out of his bedroom,
+saw the fellow as he gained the road, but lost sight of him at once. Mr.
+Alec stopped to see if he could help the dying man, and so the villain
+got clean away. Beyond the fact that he was a middle-sized man and
+dressed in some dark stuff, we have no personal clue; but we are making
+energetic inquiries, and if he is a stranger we shall soon find him
+out."
+
+"What was this William doing there? Did he say anything before he died?"
+
+"Not a word. He lives at the lodge with his mother, and as he was a
+very faithful fellow we imagine that he walked up to the house with
+the intention of seeing that all was right there. Of course this Acton
+business has put every one on their guard. The robber must have just
+burst open the door--the lock has been forced--when William came upon
+him."
+
+"Did William say anything to his mother before going out?"
+
+"She is very old and deaf, and we can get no information from her. The
+shock has made her half-witted, but I understand that she was never
+very bright. There is one very important circumstance, however. Look at
+this!"
+
+He took a small piece of torn paper from a note-book and spread it out
+upon his knee.
+
+"This was found between the finger and thumb of the dead man. It appears
+to be a fragment torn from a larger sheet. You will observe that the
+hour mentioned upon it is the very time at which the poor fellow met his
+fate. You see that his murderer might have torn the rest of the sheet
+from him or he might have taken this fragment from the murderer. It
+reads almost as though it were an appointment."
+
+Holmes took up the scrap of paper, a fac-simile of which is here
+reproduced.
+
+     d at quarter to twelve learn what maybe
+
+"Presuming that it is an appointment," continued the Inspector, "it is
+of course a conceivable theory that this William Kirwan--though he had
+the reputation of being an honest man, may have been in league with the
+thief. He may have met him there, may even have helped him to break in
+the door, and then they may have fallen out between themselves."
+
+"This writing is of extraordinary interest," said Holmes, who had been
+examining it with intense concentration. "These are much deeper waters
+than I had thought." He sank his head upon his hands, while the Inspector
+smiled at the effect which his case had had upon the famous London
+specialist.
+
+"Your last remark," said Holmes, presently, "as to the possibility of
+there being an understanding between the burglar and the servant, and
+this being a note of appointment from one to the other, is an ingenious
+and not entirely impossible supposition. But this writing opens up--" He
+sank his head into his hands again and remained for some minutes in the
+deepest thought. When he raised his face again, I was surprised to see
+that his cheek was tinged with color, and his eyes as bright as before
+his illness. He sprang to his feet with all his old energy.
+
+"I'll tell you what," said he, "I should like to have a quiet little
+glance into the details of this case. There is something in it which
+fascinates me extremely. If you will permit me, Colonel, I will leave my
+friend Watson and you, and I will step round with the Inspector to test
+the truth of one or two little fancies of mine. I will be with you again
+in half an hour."
+
+An hour and half had elapsed before the Inspector returned alone.
+
+"Mr. Holmes is walking up and down in the field outside," said he. "He
+wants us all four to go up to the house together."
+
+"To Mr. Cunningham's?"
+
+"Yes, sir."
+
+"What for?"
+
+The Inspector shrugged his shoulders. "I don't quite know, sir. Between
+ourselves, I think Mr. Holmes had not quite got over his illness yet.
+He's been behaving very queerly, and he is very much excited."
+
+"I don't think you need alarm yourself," said I. "I have usually found
+that there was method in his madness."
+
+"Some folks might say there was madness in his method," muttered the
+Inspector. "But he's all on fire to start, Colonel, so we had best go
+out if you are ready."
+
+We found Holmes pacing up and down in the field, his chin sunk upon his
+breast, and his hands thrust into his trousers pockets.
+
+"The matter grows in interest," said he. "Watson, your country-trip has
+been a distinct success. I have had a charming morning."
+
+"You have been up to the scene of the crime, I understand," said the
+Colonel.
+
+"Yes; the Inspector and I have made quite a little reconnaissance
+together."
+
+"Any success?"
+
+"Well, we have seen some very interesting things. I'll tell you what we
+did as we walk. First of all, we saw the body of this unfortunate man.
+He certainly died from a revolver wound as reported."
+
+"Had you doubted it, then?"
+
+"Oh, it is as well to test everything. Our inspection was not wasted. We
+then had an interview with Mr. Cunningham and his son, who were able
+to point out the exact spot where the murderer had broken through the
+garden-hedge in his flight. That was of great interest."
+
+"Naturally."
+
+"Then we had a look at this poor fellow's mother. We could get no
+information from her, however, as she is very old and feeble."
+
+"And what is the result of your investigations?"
+
+"The conviction that the crime is a very peculiar one. Perhaps our visit
+now may do something to make it less obscure. I think that we are both
+agreed, Inspector that the fragment of paper in the dead man's hand,
+bearing, as it does, the very hour of his death written upon it, is of
+extreme importance."
+
+"It should give a clue, Mr. Holmes."
+
+"It does give a clue. Whoever wrote that note was the man who brought
+William Kirwan out of his bed at that hour. But where is the rest of
+that sheet of paper?"
+
+"I examined the ground carefully in the hope of finding it," said the
+Inspector.
+
+"It was torn out of the dead man's hand. Why was some one so anxious to
+get possession of it? Because it incriminated him. And what would he do
+with it? Thrust it into his pocket, most likely, never noticing that a
+corner of it had been left in the grip of the corpse. If we could get
+the rest of that sheet it is obvious that we should have gone a long way
+towards solving the mystery."
+
+"Yes, but how can we get at the criminal's pocket before we catch the
+criminal?"
+
+"Well, well, it was worth thinking over. Then there is another obvious
+point. The note was sent to William. The man who wrote it could not have
+taken it; otherwise, of course, he might have delivered his own message
+by word of mouth. Who brought the note, then? Or did it come through the
+post?"
+
+"I have made inquiries," said the Inspector. "William received a letter
+by the afternoon post yesterday. The envelope was destroyed by him."
+
+"Excellent!" cried Holmes, clapping the Inspector on the back. "You've
+seen the postman. It is a pleasure to work with you. Well, here is the
+lodge, and if you will come up, Colonel, I will show you the scene of
+the crime."
+
+We passed the pretty cottage where the murdered man had lived, and
+walked up an oak-lined avenue to the fine old Queen Anne house, which
+bears the date of Malplaquet upon the lintel of the door. Holmes and
+the Inspector led us round it until we came to the side gate, which is
+separated by a stretch of garden from the hedge which lines the road. A
+constable was standing at the kitchen door.
+
+"Throw the door open, officer," said Holmes. "Now, it was on those
+stairs that young Mr. Cunningham stood and saw the two men struggling
+just where we are. Old Mr. Cunningham was at that window--the second on
+the left--and he saw the fellow get away just to the left of that bush.
+Then Mr. Alec ran out and knelt beside the wounded man. The ground is
+very hard, you see, and there are no marks to guide us." As he spoke two
+men came down the garden path, from round the angle of the house. The
+one was an elderly man, with a strong, deep-lined, heavy-eyed face; the
+other a dashing young fellow, whose bright, smiling expression and showy
+dress were in strange contract with the business which had brought us
+there.
+
+"Still at it, then?" said he to Holmes. "I thought you Londoners were
+never at fault. You don't seem to be so very quick, after all."
+
+"Ah, you must give us a little time," said Holmes good-humoredly.
+
+"You'll want it," said young Alec Cunningham. "Why, I don't see that we
+have any clue at all."
+
+"There's only one," answered the Inspector. "We thought that if we could
+only find--Good heavens, Mr. Holmes! What is the matter?"
+
+My poor friend's face had suddenly assumed the most dreadful expression.
+His eyes rolled upwards, his features writhed in agony, and with a
+suppressed groan he dropped on his face upon the ground. Horrified
+at the suddenness and severity of the attack, we carried him into the
+kitchen, where he lay back in a large chair, and breathed heavily for
+some minutes. Finally, with a shamefaced apology for his weakness, he
+rose once more.
+
+"Watson would tell you that I have only just recovered from a severe
+illness," he explained. "I am liable to these sudden nervous attacks."
+
+"Shall I send you home in my trap?" asked old Cunningham.
+
+"Well, since I am here, there is one point on which I should like to
+feel sure. We can very easily verify it."
+
+"What was it?"
+
+"Well, it seems to me that it is just possible that the arrival of
+this poor fellow William was not before, but after, the entrance of
+the burglary into the house. You appear to take it for granted that,
+although the door was forced, the robber never got in."
+
+"I fancy that is quite obvious," said Mr. Cunningham, gravely. "Why, my
+son Alec had not yet gone to bed, and he would certainly have heard any
+one moving about."
+
+"Where was he sitting?"
+
+"I was smoking in my dressing-room."
+
+"Which window is that?"
+
+"The last on the left next my father's."
+
+"Both of your lamps were lit, of course?"
+
+"Undoubtedly."
+
+"There are some very singular points here," said Holmes, smiling. "Is
+it not extraordinary that a burglary--and a burglar who had had some
+previous experience--should deliberately break into a house at a time
+when he could see from the lights that two of the family were still
+afoot?"
+
+"He must have been a cool hand."
+
+"Well, of course, if the case were not an odd one we should not have
+been driven to ask you for an explanation," said young Mr. Alec. "But as
+to your ideas that the man had robbed the house before William tackled
+him, I think it a most absurd notion. Wouldn't we have found the place
+disarranged, and missed the things which he had taken?"
+
+"It depends on what the things were," said Holmes. "You must remember
+that we are dealing with a burglar who is a very peculiar fellow, and
+who appears to work on lines of his own. Look, for example, at the
+queer lot of things which he took from Acton's--what was it?--a ball of
+string, a letter-weight, and I don't know what other odds and ends."
+
+"Well, we are quite in your hands, Mr. Holmes," said old Cunningham.
+"Anything which you or the Inspector may suggest will most certainly be
+done."
+
+"In the first place," said Holmes, "I should like you to offer a
+reward--coming from yourself, for the officials may take a little time
+before they would agree upon the sum, and these things cannot be done
+too promptly. I have jotted down the form here, if you would not mind
+signing it. Fifty pounds was quite enough, I thought."
+
+"I would willingly give five hundred," said the J.P., taking the slip
+of paper and the pencil which Holmes handed to him. "This is not quite
+correct, however," he added, glancing over the document.
+
+"I wrote it rather hurriedly."
+
+"You see you begin, 'Whereas, at about a quarter to one on Tuesday
+morning an attempt was made,' and so on. It was at a quarter to twelve,
+as a matter of fact."
+
+I was pained at the mistake, for I knew how keenly Holmes would feel any
+slip of the kind. It was his specialty to be accurate as to fact, but
+his recent illness had shaken him, and this one little incident was
+enough to show me that he was still far from being himself. He was
+obviously embarrassed for an instant, while the Inspector raised his
+eyebrows, and Alec Cunningham burst into a laugh. The old gentleman
+corrected the mistake, however, and handed the paper back to Holmes.
+
+"Get it printed as soon as possible," he said; "I think your idea is an
+excellent one."
+
+Holmes put the slip of paper carefully away into his pocket-book.
+
+"And now," said he, "it really would be a good thing that we should all
+go over the house together and make certain that this rather erratic
+burglar did not, after all, carry anything away with him."
+
+Before entering, Holmes made an examination of the door which had been
+forced. It was evident that a chisel or strong knife had been thrust
+in, and the lock forced back with it. We could see the marks in the wood
+where it had been pushed in.
+
+"You don't use bars, then?" he asked.
+
+"We have never found it necessary."
+
+"You don't keep a dog?"
+
+"Yes, but he is chained on the other side of the house."
+
+"When do the servants go to bed?"
+
+"About ten."
+
+"I understand that William was usually in bed also at that hour."
+
+"Yes."
+
+"It is singular that on this particular night he should have been up.
+Now, I should be very glad if you would have the kindness to show us
+over the house, Mr. Cunningham."
+
+A stone-flagged passage, with the kitchens branching away from it, led
+by a wooden staircase directly to the first floor of the house. It came
+out upon the landing opposite to a second more ornamental stair which
+came up from the front hall. Out of this landing opened the drawing-room
+and several bedrooms, including those of Mr. Cunningham and his son.
+Holmes walked slowly, taking keen note of the architecture of the house.
+I could tell from his expression that he was on a hot scent, and yet
+I could not in the least imagine in what direction his inferences were
+leading him.
+
+"My good sir," said Mr. Cunningham with some impatience, "this is surely
+very unnecessary. That is my room at the end of the stairs, and my
+son's is the one beyond it. I leave it to your judgment whether it was
+possible for the thief to have come up here without disturbing us."
+
+"You must try round and get on a fresh scent, I fancy," said the son
+with a rather malicious smile.
+
+"Still, I must ask you to humor me a little further. I should like, for
+example, to see how far the windows of the bedrooms command the front.
+This, I understand is your son's room"--he pushed open the door--"and
+that, I presume, is the dressing-room in which he sat smoking when the
+alarm was given. Where does the window of that look out to?" He stepped
+across the bedroom, pushed open the door, and glanced round the other
+chamber.
+
+"I hope that you are satisfied now?" said Mr. Cunningham, tartly.
+
+"Thank you, I think I have seen all that I wished."
+
+"Then if it is really necessary we can go into my room."
+
+"If it is not too much trouble."
+
+The J. P. shrugged his shoulders, and led the way into his own chamber,
+which was a plainly furnished and commonplace room. As we moved across
+it in the direction of the window, Holmes fell back until he and I were
+the last of the group. Near the foot of the bed stood a dish of oranges
+and a carafe of water. As we passed it Holmes, to my unutterable
+astonishment, leaned over in front of me and deliberately knocked the
+whole thing over. The glass smashed into a thousand pieces and the fruit
+rolled about into every corner of the room.
+
+"You've done it now, Watson," said he, coolly. "A pretty mess you've
+made of the carpet."
+
+I stooped in some confusion and began to pick up the fruit,
+understanding for some reason my companion desired me to take the blame
+upon myself. The others did the same, and set the table on its legs
+again.
+
+"Hullo!" cried the Inspector, "where's he got to?"
+
+Holmes had disappeared.
+
+"Wait here an instant," said young Alec Cunningham. "The fellow is off
+his head, in my opinion. Come with me, father, and see where he has got
+to!"
+
+They rushed out of the room, leaving the Inspector, the Colonel, and me
+staring at each other.
+
+"'Pon my word, I am inclined to agree with Master Alec," said the
+official. "It may be the effect of this illness, but it seems to me
+that--"
+
+His words were cut short by a sudden scream of "Help! Help! Murder!"
+With a thrill I recognized the voice of that of my friend. I rushed
+madly from the room on to the landing. The cries, which had sunk down
+into a hoarse, inarticulate shouting, came from the room which we had
+first visited. I dashed in, and on into the dressing-room beyond. The
+two Cunninghams were bending over the prostrate figure of Sherlock
+Holmes, the younger clutching his throat with both hands, while the
+elder seemed to be twisting one of his wrists. In an instant the three
+of us had torn them away from him, and Holmes staggered to his feet,
+very pale and evidently greatly exhausted.
+
+"Arrest these men, Inspector," he gasped.
+
+"On what charge?"
+
+"That of murdering their coachman, William Kirwan."
+
+The Inspector stared about him in bewilderment. "Oh, come now, Mr.
+Holmes," said he at last, "I'm sure you don't really mean to--"
+
+"Tut, man, look at their faces!" cried Holmes, curtly.
+
+Never certainly have I seen a plainer confession of guilt upon human
+countenances. The older man seemed numbed and dazed with a heavy, sullen
+expression upon his strongly-marked face. The son, on the other hand,
+had dropped all that jaunty, dashing style which had characterized him,
+and the ferocity of a dangerous wild beast gleamed in his dark eyes
+and distorted his handsome features. The Inspector said nothing, but,
+stepping to the door, he blew his whistle. Two of his constables came at
+the call.
+
+"I have no alternative, Mr. Cunningham," said he. "I trust that this may
+all prove to be an absurd mistake, but you can see that--Ah, would you?
+Drop it!" He struck out with his hand, and a revolver which the younger
+man was in the act of cocking clattered down upon the floor.
+
+"Keep that," said Holmes, quietly putting his foot upon it; "you will
+find it useful at the trial. But this is what we really wanted." He held
+up a little crumpled piece of paper.
+
+"The remainder of the sheet!" cried the Inspector.
+
+"Precisely."
+
+"And where was it?"
+
+"Where I was sure it must be. I'll make the whole matter clear to you
+presently. I think, Colonel, that you and Watson might return now, and
+I will be with you again in an hour at the furthest. The Inspector and I
+must have a word with the prisoners, but you will certainly see me back
+at luncheon time."
+
+
+Sherlock Holmes was as good as his word, for about one o'clock he
+rejoined us in the Colonel's smoking-room. He was accompanied by a
+little elderly gentleman, who was introduced to me as the Mr. Acton
+whose house had been the scene of the original burglary.
+
+"I wished Mr. Acton to be present while I demonstrated this small matter
+to you," said Holmes, "for it is natural that he should take a keen
+interest in the details. I am afraid, my dear Colonel, that you must
+regret the hour that you took in such a stormy petrel as I am."
+
+"On the contrary," answered the Colonel, warmly, "I consider it the
+greatest privilege to have been permitted to study your methods of
+working. I confess that they quite surpass my expectations, and that I
+am utterly unable to account for your result. I have not yet seen the
+vestige of a clue."
+
+"I am afraid that my explanation may disillusion you but it has always
+been my habit to hide none of my methods, either from my friend Watson
+or from any one who might take an intelligent interest in them. But,
+first, as I am rather shaken by the knocking about which I had in
+the dressing-room, I think that I shall help myself to a dash of your
+brandy, Colonel. My strength had been rather tried of late."
+
+"I trust that you had no more of those nervous attacks."
+
+Sherlock Holmes laughed heartily. "We will come to that in its turn,"
+said he. "I will lay an account of the case before you in its due order,
+showing you the various points which guided me in my decision. Pray
+interrupt me if there is any inference which is not perfectly clear to
+you.
+
+"It is of the highest importance in the art of detection to be able
+to recognize, out of a number of facts, which are incidental and which
+vital. Otherwise your energy and attention must be dissipated instead of
+being concentrated. Now, in this case there was not the slightest doubt
+in my mind from the first that the key of the whole matter must be
+looked for in the scrap of paper in the dead man's hand.
+
+"Before going into this, I would draw your attention to the fact that,
+if Alec Cunningham's narrative was correct, and if the assailant, after
+shooting William Kirwan, had instantly fled, then it obviously could not
+be he who tore the paper from the dead man's hand. But if it was not he,
+it must have been Alec Cunningham himself, for by the time that the old
+man had descended several servants were upon the scene. The point is a
+simple one, but the Inspector had overlooked it because he had started
+with the supposition that these county magnates had had nothing to do
+with the matter. Now, I make a point of never having any prejudices,
+and of following docilely wherever fact may lead me, and so, in the
+very first stage of the investigation, I found myself looking a little
+askance at the part which had been played by Mr. Alec Cunningham.
+
+"And now I made a very careful examination of the corner of paper which
+the Inspector had submitted to us. It was at once clear to me that it
+formed part of a very remarkable document. Here it is. Do you not now
+observe something very suggestive about it?"
+
+"It has a very irregular look," said the Colonel.
+
+"My dear sir," cried Holmes, "there cannot be the least doubt in the
+world that it has been written by two persons doing alternate words.
+When I draw your attention to the strong t's of 'at' and 'to', and ask
+you to compare them with the weak ones of 'quarter' and 'twelve,' you
+will instantly recognize the fact. A very brief analysis of these
+four words would enable you to say with the utmost confidence that the
+'learn' and the 'maybe' are written in the stronger hand, and the 'what'
+in the weaker."
+
+"By Jove, it's as clear as day!" cried the Colonel. "Why on earth should
+two men write a letter in such a fashion?"
+
+"Obviously the business was a bad one, and one of the men who distrusted
+the other was determined that, whatever was done, each should have an
+equal hand in it. Now, of the two men, it is clear that the one who
+wrote the 'at' and 'to' was the ringleader."
+
+"How do you get at that?"
+
+"We might deduce it from the mere character of the one hand as compared
+with the other. But we have more assured reasons than that for supposing
+it. If you examine this scrap with attention you will come to the
+conclusion that the man with the stronger hand wrote all his words
+first, leaving blanks for the other to fill up. These blanks were not
+always sufficient, and you can see that the second man had a squeeze
+to fit his 'quarter' in between the 'at' and the 'to,' showing that the
+latter were already written. The man who wrote all his words first is
+undoubtedly the man who planned the affair."
+
+"Excellent!" cried Mr. Acton.
+
+"But very superficial," said Holmes. "We come now, however, to a point
+which is of importance. You may not be aware that the deduction of a
+man's age from his writing is one which has brought to considerable
+accuracy by experts. In normal cases one can place a man in his true
+decade with tolerable confidence. I say normal cases, because ill-health
+and physical weakness reproduce the signs of old age, even when the
+invalid is a youth. In this case, looking at the bold, strong hand of
+the one, and the rather broken-backed appearance of the other, which
+still retains its legibility although the t's have begun to lose their
+crossing, we can say that the one was a young man and the other was
+advanced in years without being positively decrepit."
+
+"Excellent!" cried Mr. Acton again.
+
+"There is a further point, however, which is subtler and of greater
+interest. There is something in common between these hands. They belong
+to men who are blood-relatives. It may be most obvious to you in the
+Greek e's, but to me there are many small points which indicate the same
+thing. I have no doubt at all that a family mannerism can be traced in
+these two specimens of writing. I am only, of course, giving you
+the leading results now of my examination of the paper. There were
+twenty-three other deductions which would be of more interest to experts
+than to you. They all tend to deepen the impression upon my mind that
+the Cunninghams, father and son, had written this letter.
+
+"Having got so far, my next step was, of course, to examine into the
+details of the crime, and to see how far they would help us. I went up
+to the house with the Inspector, and saw all that was to be seen. The
+wound upon the dead man was, as I was able to determine with absolute
+confidence, fired from a revolver at the distance of something over
+four yards. There was no powder-blackening on the clothes. Evidently,
+therefore, Alec Cunningham had lied when he said that the two men were
+struggling when the shot was fired. Again, both father and son agreed
+as to the place where the man escaped into the road. At that point,
+however, as it happens, there is a broadish ditch, moist at the bottom.
+As there were no indications of bootmarks about this ditch, I was
+absolutely sure not only that the Cunninghams had again lied, but that
+there had never been any unknown man upon the scene at all.
+
+"And now I have to consider the motive of this singular crime. To get
+at this, I endeavored first of all to solve the reason of the original
+burglary at Mr. Acton's. I understood, from something which the Colonel
+told us, that a lawsuit had been going on between you, Mr. Acton, and
+the Cunninghams. Of course, it instantly occurred to me that they had
+broken into your library with the intention of getting at some document
+which might be of importance in the case."
+
+"Precisely so," said Mr. Acton. "There can be no possible doubt as to
+their intentions. I have the clearest claim upon half of their present
+estate, and if they could have found a single paper--which, fortunately,
+was in the strong-box of my solicitors--they would undoubtedly have
+crippled our case."
+
+"There you are," said Holmes, smiling. "It was a dangerous, reckless
+attempt, in which I seem to trace the influence of young Alec. Having
+found nothing they tried to divert suspicion by making it appear to be
+an ordinary burglary, to which end they carried off whatever they could
+lay their hands upon. That is all clear enough, but there was much that
+was still obscure. What I wanted above all was to get the missing part
+of that note. I was certain that Alec had torn it out of the dead man's
+hand, and almost certain that he must have thrust it into the pocket of
+his dressing-gown. Where else could he have put it? The only question
+was whether it was still there. It was worth an effort to find out, and
+for that object we all went up to the house.
+
+"The Cunninghams joined us, as you doubtless remember, outside the
+kitchen door. It was, of course, of the very first importance that they
+should not be reminded of the existence of this paper, otherwise they
+would naturally destroy it without delay. The Inspector was about to
+tell them the importance which we attached to it when, by the luckiest
+chance in the world, I tumbled down in a sort of fit and so changed the
+conversation.
+
+"Good heavens!" cried the Colonel, laughing, "do you mean to say all our
+sympathy was wasted and your fit an imposture?"
+
+"Speaking professionally, it was admirably done," cried I, looking in
+amazement at this man who was forever confounding me with some new phase
+of his astuteness.
+
+"It is an art which is often useful," said he. "When I recovered I
+managed, by a device which had perhaps some little merit of ingenuity,
+to get old Cunningham to write the word 'twelve,' so that I might
+compare it with the 'twelve' upon the paper."
+
+"Oh, what an ass I have been!" I exclaimed.
+
+"I could see that you were commiserating me over my weakness," said
+Holmes, laughing. "I was sorry to cause you the sympathetic pain which
+I know that you felt. We then went upstairs together, and having entered
+the room and seen the dressing-gown hanging up behind the door, I
+contrived, by upsetting a table, to engage their attention for the
+moment, and slipped back to examine the pockets. I had hardly got the
+paper, however--which was, as I had expected, in one of them--when the
+two Cunninghams were on me, and would, I verily believe, have murdered
+me then and there but for your prompt and friendly aid. As it is, I feel
+that young man's grip on my throat now, and the father has twisted my
+wrist round in the effort to get the paper out of my hand. They saw that
+I must know all about it, you see, and the sudden change from absolute
+security to complete despair made them perfectly desperate.
+
+"I had a little talk with old Cunningham afterwards as to the motive of
+the crime. He was tractable enough, though his son was a perfect demon,
+ready to blow out his own or anybody else's brains if he could have got
+to his revolver. When Cunningham saw that the case against him was so
+strong he lost all heart and made a clean breast of everything. It seems
+that William had secretly followed his two masters on the night when
+they made their raid upon Mr. Acton's, and having thus got them into
+his power, proceeded, under threats of exposure, to levy blackmail upon
+them. Mr. Alec, however, was a dangerous man to play games of that
+sort with. It was a stroke of positive genius on his part to see in the
+burglary scare which was convulsing the country side an opportunity of
+plausibly getting rid of the man whom he feared. William was decoyed up
+and shot, and had they only got the whole of the note and paid a little
+more attention to detail in the accessories, it is very possible that
+suspicion might never have been aroused."
+
+"And the note?" I asked.
+
+Sherlock Holmes placed the subjoined paper before us.
+
+     If you will only come around to the east gate you it will
+     very much surprise you and be of the greatest service to you
+     and also to Annie Morrison. But say nothing to anyone upon
+     the matter.
+
+"It is very much the sort of thing that I expected," said he. "Of
+course, we do not yet know what the relations may have been between Alec
+Cunningham, William Kirwan, and Annie Morrison. The results shows that
+the trap was skillfully baited. I am sure that you cannot fail to be
+delighted with the traces of heredity shown in the p's and in the tails
+of the g's. The absence of the i-dots in the old man's writing is also
+most characteristic. Watson, I think our quiet rest in the country has
+been a distinct success, and I shall certainly return much invigorated
+to Baker Street to-morrow."
+
+
+
+
+Adventure VII. The Crooked Man
+
+
+One summer night, a few months after my marriage, I was seated by my own
+hearth smoking a last pipe and nodding over a novel, for my day's work
+had been an exhausting one. My wife had already gone upstairs, and the
+sound of the locking of the hall door some time before told me that the
+servants had also retired. I had risen from my seat and was knocking out
+the ashes of my pipe when I suddenly heard the clang of the bell.
+
+I looked at the clock. It was a quarter to twelve. This could not be
+a visitor at so late an hour. A patient, evidently, and possibly an
+all-night sitting. With a wry face I went out into the hall and opened
+the door. To my astonishment it was Sherlock Holmes who stood upon my
+step.
+
+"Ah, Watson," said he, "I hoped that I might not be too late to catch
+you."
+
+"My dear fellow, pray come in."
+
+"You look surprised, and no wonder! Relieved, too, I fancy! Hum! You
+still smoke the Arcadia mixture of your bachelor days then! There's no
+mistaking that fluffy ash upon your coat. It's easy to tell that you
+have been accustomed to wear a uniform, Watson. You'll never pass as
+a pure-bred civilian as long as you keep that habit of carrying your
+handkerchief in your sleeve. Could you put me up to-night?"
+
+"With pleasure."
+
+"You told me that you had bachelor quarters for one, and I see that you
+have no gentleman visitor at present. Your hat-stand proclaims as much."
+
+"I shall be delighted if you will stay."
+
+"Thank you. I'll fill the vacant peg then. Sorry to see that you've had
+the British workman in the house. He's a token of evil. Not the drains,
+I hope?"
+
+"No, the gas."
+
+"Ah! He has left two nail-marks from his boot upon your linoleum
+just where the light strikes it. No, thank you, I had some supper at
+Waterloo, but I'll smoke a pipe with you with pleasure."
+
+I handed him my pouch, and he seated himself opposite to me and smoked
+for some time in silence. I was well aware that nothing but business
+of importance would have brought him to me at such an hour, so I waited
+patiently until he should come round to it.
+
+"I see that you are professionally rather busy just now," said he,
+glancing very keenly across at me.
+
+"Yes, I've had a busy day," I answered. "It may seem very foolish in
+your eyes," I added, "but really I don't know how you deduced it."
+
+Holmes chuckled to himself.
+
+"I have the advantage of knowing your habits, my dear Watson," said he.
+"When your round is a short one you walk, and when it is a long one you
+use a hansom. As I perceive that your boots, although used, are by
+no means dirty, I cannot doubt that you are at present busy enough to
+justify the hansom."
+
+"Excellent!" I cried.
+
+"Elementary," said he. "It is one of those instances where the reasoner
+can produce an effect which seems remarkable to his neighbor, because
+the latter has missed the one little point which is the basis of the
+deduction. The same may be said, my dear fellow, for the effect of
+some of these little sketches of yours, which is entirely meretricious,
+depending as it does upon your retaining in your own hands some factors
+in the problem which are never imparted to the reader. Now, at present
+I am in the position of these same readers, for I hold in this hand
+several threads of one of the strangest cases which ever perplexed a
+man's brain, and yet I lack the one or two which are needful to complete
+my theory. But I'll have them, Watson, I'll have them!" His eyes kindled
+and a slight flush sprang into his thin cheeks. For an instant only.
+When I glanced again his face had resumed that red-Indian composure
+which had made so many regard him as a machine rather than a man.
+
+"The problem presents features of interest," said he. "I may even say
+exceptional features of interest. I have already looked into the matter,
+and have come, as I think, within sight of my solution. If you could
+accompany me in that last step you might be of considerable service to
+me."
+
+"I should be delighted."
+
+"Could you go as far as Aldershot to-morrow?"
+
+"I have no doubt Jackson would take my practice."
+
+"Very good. I want to start by the 11.10 from Waterloo."
+
+"That would give me time."
+
+"Then, if you are not too sleepy, I will give you a sketch of what has
+happened, and of what remains to be done."
+
+"I was sleepy before you came. I am quite wakeful now."
+
+"I will compress the story as far as may be done without omitting
+anything vital to the case. It is conceivable that you may even have
+read some account of the matter. It is the supposed murder of Colonel
+Barclay, of the Royal Munsters, at Aldershot, which I am investigating."
+
+"I have heard nothing of it."
+
+"It has not excited much attention yet, except locally. The facts are
+only two days old. Briefly they are these:
+
+"The Royal Munsters is, as you know, one of the most famous Irish
+regiments in the British army. It did wonders both in the Crimea and the
+Mutiny, and has since that time distinguished itself upon every possible
+occasion. It was commanded up to Monday night by James Barclay,
+a gallant veteran, who started as a full private, was raised to
+commissioned rank for his bravery at the time of the Mutiny, and so
+lived to command the regiment in which he had once carried a musket.
+
+"Colonel Barclay had married at the time when he was a sergeant, and
+his wife, whose maiden name was Miss Nancy Devoy, was the daughter of a
+former color-sergeant in the same corps. There was, therefore, as can
+be imagined, some little social friction when the young couple (for
+they were still young) found themselves in their new surroundings. They
+appear, however, to have quickly adapted themselves, and Mrs. Barclay
+has always, I understand, been as popular with the ladies of the
+regiment as her husband was with his brother officers. I may add that
+she was a woman of great beauty, and that even now, when she has been
+married for upwards of thirty years, she is still of a striking and
+queenly appearance.
+
+"Colonel Barclay's family life appears to have been a uniformly happy
+one. Major Murphy, to whom I owe most of my facts, assures me that he
+has never heard of any misunderstanding between the pair. On the whole,
+he thinks that Barclay's devotion to his wife was greater than his
+wife's to Barclay. He was acutely uneasy if he were absent from her for
+a day. She, on the other hand, though devoted and faithful, was less
+obtrusively affectionate. But they were regarded in the regiment as
+the very model of a middle-aged couple. There was absolutely nothing in
+their mutual relations to prepare people for the tragedy which was to
+follow.
+
+"Colonel Barclay himself seems to have had some singular traits in his
+character. He was a dashing, jovial old soldier in his usual mood,
+but there were occasions on which he seemed to show himself capable
+of considerable violence and vindictiveness. This side of his nature,
+however, appears never to have been turned towards his wife. Another
+fact, which had struck Major Murphy and three out of five of the other
+officers with whom I conversed, was the singular sort of depression
+which came upon him at times. As the major expressed it, the smile had
+often been struck from his mouth, as if by some invisible hand, when he
+has been joining the gayeties and chaff of the mess-table. For days on
+end, when the mood was on him, he has been sunk in the deepest gloom.
+This and a certain tinge of superstition were the only unusual traits
+in his character which his brother officers had observed. The latter
+peculiarity took the form of a dislike to being left alone, especially
+after dark. This puerile feature in a nature which was conspicuously
+manly had often given rise to comment and conjecture.
+
+"The first battalion of the Royal Munsters (which is the old 117th) has
+been stationed at Aldershot for some years. The married officers live
+out of barracks, and the Colonel has during all this time occupied a
+villa called Lachine, about half a mile from the north camp. The house
+stands in its own grounds, but the west side of it is not more than
+thirty yards from the high-road. A coachman and two maids form the
+staff of servants. These with their master and mistress were the sole
+occupants of Lachine, for the Barclays had no children, nor was it usual
+for them to have resident visitors.
+
+"Now for the events at Lachine between nine and ten on the evening of
+last Monday."
+
+"Mrs. Barclay was, it appears, a member of the Roman Catholic Church,
+and had interested herself very much in the establishment of the Guild
+of St. George, which was formed in connection with the Watt Street
+Chapel for the purpose of supplying the poor with cast-off clothing.
+A meeting of the Guild had been held that evening at eight, and Mrs.
+Barclay had hurried over her dinner in order to be present at it. When
+leaving the house she was heard by the coachman to make some commonplace
+remark to her husband, and to assure him that she would be back before
+very long. She then called for Miss Morrison, a young lady who lives
+in the next villa, and the two went off together to their meeting. It
+lasted forty minutes, and at a quarter-past nine Mrs. Barclay returned
+home, having left Miss Morrison at her door as she passed.
+
+"There is a room which is used as a morning-room at Lachine. This faces
+the road and opens by a large glass folding-door on to the lawn. The
+lawn is thirty yards across, and is only divided from the highway by
+a low wall with an iron rail above it. It was into this room that Mrs.
+Barclay went upon her return. The blinds were not down, for the room was
+seldom used in the evening, but Mrs. Barclay herself lit the lamp and
+then rang the bell, asking Jane Stewart, the house-maid, to bring her
+a cup of tea, which was quite contrary to her usual habits. The Colonel
+had been sitting in the dining-room, but hearing that his wife had
+returned he joined her in the morning-room. The coachman saw him cross
+the hall and enter it. He was never seen again alive.
+
+"The tea which had been ordered was brought up at the end of ten
+minutes; but the maid, as she approached the door, was surprised to
+hear the voices of her master and mistress in furious altercation. She
+knocked without receiving any answer, and even turned the handle, but
+only to find that the door was locked upon the inside. Naturally enough
+she ran down to tell the cook, and the two women with the coachman came
+up into the hall and listened to the dispute which was still raging.
+They all agreed that only two voices were to be heard, those of Barclay
+and of his wife. Barclay's remarks were subdued and abrupt, so that none
+of them were audible to the listeners. The lady's, on the other hand,
+were most bitter, and when she raised her voice could be plainly heard.
+'You coward!' she repeated over and over again. 'What can be done now?
+What can be done now? Give me back my life. I will never so much as
+breathe the same air with you again! You coward! You coward!' Those were
+scraps of her conversation, ending in a sudden dreadful cry in the man's
+voice, with a crash, and a piercing scream from the woman. Convinced
+that some tragedy had occurred, the coachman rushed to the door and
+strove to force it, while scream after scream issued from within. He was
+unable, however, to make his way in, and the maids were too distracted
+with fear to be of any assistance to him. A sudden thought struck him,
+however, and he ran through the hall door and round to the lawn upon
+which the long French windows open. One side of the window was open,
+which I understand was quite usual in the summer-time, and he passed
+without difficulty into the room. His mistress had ceased to scream and
+was stretched insensible upon a couch, while with his feet tilted over
+the side of an arm-chair, and his head upon the ground near the corner
+of the fender, was lying the unfortunate soldier stone dead in a pool of
+his own blood.
+
+"Naturally, the coachman's first thought, on finding that he could do
+nothing for his master, was to open the door. But here an unexpected and
+singular difficulty presented itself. The key was not in the inner side
+of the door, nor could he find it anywhere in the room. He went out
+again, therefore, through the window, and having obtained the help of
+a policeman and of a medical man, he returned. The lady, against whom
+naturally the strongest suspicion rested, was removed to her room, still
+in a state of insensibility. The Colonel's body was then placed upon the
+sofa, and a careful examination made of the scene of the tragedy.
+
+"The injury from which the unfortunate veteran was suffering was found
+to be a jagged cut some two inches long at the back part of his head,
+which had evidently been caused by a violent blow from a blunt weapon.
+Nor was it difficult to guess what that weapon may have been. Upon the
+floor, close to the body, was lying a singular club of hard carved wood
+with a bone handle. The Colonel possessed a varied collection of weapons
+brought from the different countries in which he had fought, and it
+is conjectured by the police that his club was among his trophies. The
+servants deny having seen it before, but among the numerous curiosities
+in the house it is possible that it may have been overlooked. Nothing
+else of importance was discovered in the room by the police, save the
+inexplicable fact that neither upon Mrs. Barclay's person nor upon that
+of the victim nor in any part of the room was the missing key to
+be found. The door had eventually to be opened by a locksmith from
+Aldershot.
+
+"That was the state of things, Watson, when upon the Tuesday morning I,
+at the request of Major Murphy, went down to Aldershot to supplement
+the efforts of the police. I think that you will acknowledge that the
+problem was already one of interest, but my observations soon made me
+realize that it was in truth much more extraordinary than would at first
+sight appear.
+
+"Before examining the room I cross-questioned the servants, but only
+succeeded in eliciting the facts which I have already stated. One other
+detail of interest was remembered by Jane Stewart, the housemaid. You
+will remember that on hearing the sound of the quarrel she descended and
+returned with the other servants. On that first occasion, when she was
+alone, she says that the voices of her master and mistress were sunk
+so low that she could hear hardly anything, and judged by their tones
+rather than their words that they had fallen out. On my pressing her,
+however, she remembered that she heard the word David uttered twice by
+the lady. The point is of the utmost importance as guiding us towards
+the reason of the sudden quarrel. The Colonel's name, you remember, was
+James.
+
+"There was one thing in the case which had made the deepest impression
+both upon the servants and the police. This was the contortion of the
+Colonel's face. It had set, according to their account, into the most
+dreadful expression of fear and horror which a human countenance is
+capable of assuming. More than one person fainted at the mere sight
+of him, so terrible was the effect. It was quite certain that he had
+foreseen his fate, and that it had caused him the utmost horror. This,
+of course, fitted in well enough with the police theory, if the Colonel
+could have seen his wife making a murderous attack upon him. Nor was
+the fact of the wound being on the back of his head a fatal objection to
+this, as he might have turned to avoid the blow. No information could
+be got from the lady herself, who was temporarily insane from an acute
+attack of brain-fever.
+
+"From the police I learned that Miss Morrison, who you remember went out
+that evening with Mrs. Barclay, denied having any knowledge of what it
+was which had caused the ill-humor in which her companion had returned.
+
+"Having gathered these facts, Watson, I smoked several pipes over them,
+trying to separate those which were crucial from others which were
+merely incidental. There could be no question that the most distinctive
+and suggestive point in the case was the singular disappearance of the
+door-key. A most careful search had failed to discover it in the room.
+Therefore it must have been taken from it. But neither the Colonel
+nor the Colonel's wife could have taken it. That was perfectly clear.
+Therefore a third person must have entered the room. And that third
+person could only have come in through the window. It seemed to me that
+a careful examination of the room and the lawn might possibly reveal
+some traces of this mysterious individual. You know my methods, Watson.
+There was not one of them which I did not apply to the inquiry. And it
+ended by my discovering traces, but very different ones from those which
+I had expected. There had been a man in the room, and he had crossed
+the lawn coming from the road. I was able to obtain five very clear
+impressions of his foot-marks: one in the roadway itself, at the point
+where he had climbed the low wall, two on the lawn, and two very faint
+ones upon the stained boards near the window where he had entered.
+He had apparently rushed across the lawn, for his toe-marks were much
+deeper than his heels. But it was not the man who surprised me. It was
+his companion."
+
+"His companion!"
+
+Holmes pulled a large sheet of tissue-paper out of his pocket and
+carefully unfolded it upon his knee.
+
+"What do you make of that?" he asked.
+
+The paper was covered with he tracings of the foot-marks of some small
+animal. It had five well-marked foot-pads, an indication of long nails,
+and the whole print might be nearly as large as a dessert-spoon.
+
+"It's a dog," said I.
+
+"Did you ever hear of a dog running up a curtain? I found distinct
+traces that this creature had done so."
+
+"A monkey, then?"
+
+"But it is not the print of a monkey."
+
+"What can it be, then?"
+
+"Neither dog nor cat nor monkey nor any creature that we are familiar
+with. I have tried to reconstruct it from the measurements. Here are
+four prints where the beast has been standing motionless. You see that
+it is no less than fifteen inches from fore-foot to hind. Add to that
+the length of neck and head, and you get a creature not much less than
+two feet long--probably more if there is any tail. But now observe this
+other measurement. The animal has been moving, and we have the length
+of its stride. In each case it is only about three inches. You have an
+indication, you see, of a long body with very short legs attached to it.
+It has not been considerate enough to leave any of its hair behind it.
+But its general shape must be what I have indicated, and it can run up a
+curtain, and it is carnivorous."
+
+"How do you deduce that?"
+
+"Because it ran up the curtain. A canary's cage was hanging in the
+window, and its aim seems to have been to get at the bird."
+
+"Then what was the beast?"
+
+"Ah, if I could give it a name it might go a long way towards solving
+the case. On the whole, it was probably some creature of the weasel and
+stoat tribe--and yet it is larger than any of these that I have seen."
+
+"But what had it to do with the crime?"
+
+"That, also, is still obscure. But we have learned a good deal, you
+perceive. We know that a man stood in the road looking at the quarrel
+between the Barclays--the blinds were up and the room lighted. We know,
+also, that he ran across the lawn, entered the room, accompanied by a
+strange animal, and that he either struck the Colonel or, as is equally
+possible, that the Colonel fell down from sheer fright at the sight of
+him, and cut his head on the corner of the fender. Finally, we have the
+curious fact that the intruder carried away the key with him when he
+left."
+
+"Your discoveries seem to have left the business more obscure that it
+was before," said I.
+
+"Quite so. They undoubtedly showed that the affair was much deeper than
+was at first conjectured. I thought the matter over, and I came to
+the conclusion that I must approach the case from another aspect. But
+really, Watson, I am keeping you up, and I might just as well tell you
+all this on our way to Aldershot to-morrow."
+
+"Thank you, you have gone rather too far to stop."
+
+"It is quite certain that when Mrs. Barclay left the house at half-past
+seven she was on good terms with her husband. She was never, as I think
+I have said, ostentatiously affectionate, but she was heard by the
+coachman chatting with the Colonel in a friendly fashion. Now, it was
+equally certain that, immediately on her return, she had gone to the
+room in which she was least likely to see her husband, had flown to tea
+as an agitated woman will, and finally, on his coming in to her, had
+broken into violent recriminations. Therefore something had occurred
+between seven-thirty and nine o'clock which had completely altered her
+feelings towards him. But Miss Morrison had been with her during the
+whole of that hour and a half. It was absolutely certain, therefore, in
+spite of her denial, that she must know something of the matter.
+
+"My first conjecture was, that possibly there had been some passages
+between this young lady and the old soldier, which the former had now
+confessed to the wife. That would account for the angry return, and
+also for the girl's denial that anything had occurred. Nor would it be
+entirely incompatible with most of the words overhead. But there was the
+reference to David, and there was the known affection of the Colonel for
+his wife, to weigh against it, to say nothing of the tragic intrusion
+of this other man, which might, of course, be entirely disconnected with
+what had gone before. It was not easy to pick one's steps, but, on the
+whole, I was inclined to dismiss the idea that there had been anything
+between the Colonel and Miss Morrison, but more than ever convinced that
+the young lady held the clue as to what it was which had turned Mrs.
+Barclay to hatred of her husband. I took the obvious course, therefore,
+of calling upon Miss M., of explaining to her that I was perfectly
+certain that she held the facts in her possession, and of assuring her
+that her friend, Mrs. Barclay, might find herself in the dock upon a
+capital charge unless the matter were cleared up.
+
+"Miss Morrison is a little ethereal slip of a girl, with timid eyes
+and blond hair, but I found her by no means wanting in shrewdness and
+common-sense. She sat thinking for some time after I had spoken, and
+then, turning to me with a brisk air of resolution, she broke into a
+remarkable statement which I will condense for your benefit.
+
+"'I promised my friend that I would say nothing of the matter, and a
+promise is a promise,' said she; 'but if I can really help her when
+so serious a charge is laid against her, and when her own mouth, poor
+darling, is closed by illness, then I think I am absolved from my
+promise. I will tell you exactly what happened upon Monday evening.
+
+"'We were returning from the Watt Street Mission about a quarter to nine
+o'clock. On our way we had to pass through Hudson Street, which is
+a very quiet thoroughfare. There is only one lamp in it, upon the
+left-hand side, and as we approached this lamp I saw a man coming
+towards us with his back very bent, and something like a box slung over
+one of his shoulders. He appeared to be deformed, for he carried his
+head low and walked with his knees bent. We were passing him when he
+raised his face to look at us in the circle of light thrown by the lamp,
+and as he did so he stopped and screamed out in a dreadful voice, "My
+God, it's Nancy!" Mrs. Barclay turned as white as death, and would have
+fallen down had the dreadful-looking creature not caught hold of her. I
+was going to call for the police, but she, to my surprise, spoke quite
+civilly to the fellow.
+
+"'"I thought you had been dead this thirty years, Henry," said she, in a
+shaking voice.
+
+"'"So I have," said he, and it was awful to hear the tones that he said
+it in. He had a very dark, fearsome face, and a gleam in his eyes that
+comes back to me in my dreams. His hair and whiskers were shot with
+gray, and his face was all crinkled and puckered like a withered apple.
+
+"'"Just walk on a little way, dear," said Mrs. Barclay; "I want to have
+a word with this man. There is nothing to be afraid of." She tried to
+speak boldly, but she was still deadly pale and could hardly get her
+words out for the trembling of her lips.
+
+"'I did as she asked me, and they talked together for a few minutes.
+Then she came down the street with her eyes blazing, and I saw the
+crippled wretch standing by the lamp-post and shaking his clenched fists
+in the air as if he were mad with rage. She never said a word until we
+were at the door here, when she took me by the hand and begged me to
+tell no one what had happened.
+
+"'"It's an old acquaintance of mine who has come down in the world,"
+said she. When I promised her I would say nothing she kissed me, and I
+have never seen her since. I have told you now the whole truth, and if
+I withheld it from the police it is because I did not realize then the
+danger in which my dear friend stood. I know that it can only be to her
+advantage that everything should be known.'
+
+"There was her statement, Watson, and to me, as you can imagine, it was
+like a light on a dark night. Everything which had been disconnected
+before began at once to assume its true place, and I had a shadowy
+presentiment of the whole sequence of events. My next step obviously was
+to find the man who had produced such a remarkable impression upon Mrs.
+Barclay. If he were still in Aldershot it should not be a very difficult
+matter. There are not such a very great number of civilians, and a
+deformed man was sure to have attracted attention. I spent a day in the
+search, and by evening--this very evening, Watson--I had run him down.
+The man's name is Henry Wood, and he lives in lodgings in this same
+street in which the ladies met him. He has only been five days in the
+place. In the character of a registration-agent I had a most interesting
+gossip with his landlady. The man is by trade a conjurer and performer,
+going round the canteens after nightfall, and giving a little
+entertainment at each. He carries some creature about with him in that
+box; about which the landlady seemed to be in considerable trepidation,
+for she had never seen an animal like it. He uses it in some of his
+tricks according to her account. So much the woman was able to tell me,
+and also that it was a wonder the man lived, seeing how twisted he was,
+and that he spoke in a strange tongue sometimes, and that for the last
+two nights she had heard him groaning and weeping in his bedroom. He
+was all right, as far as money went, but in his deposit he had given her
+what looked like a bad florin. She showed it to me, Watson, and it was
+an Indian rupee.
+
+"So now, my dear fellow, you see exactly how we stand and why it is I
+want you. It is perfectly plain that after the ladies parted from this
+man he followed them at a distance, that he saw the quarrel between
+husband and wife through the window, that he rushed in, and that
+the creature which he carried in his box got loose. That is all very
+certain. But he is the only person in this world who can tell us exactly
+what happened in that room."
+
+"And you intend to ask him?"
+
+"Most certainly--but in the presence of a witness."
+
+"And I am the witness?"
+
+"If you will be so good. If he can clear the matter up, well and good.
+If he refuses, we have no alternative but to apply for a warrant."
+
+"But how do you know he'll be there when we return?"
+
+"You may be sure that I took some precautions. I have one of my Baker
+Street boys mounting guard over him who would stick to him like a burr,
+go where he might. We shall find him in Hudson Street to-morrow, Watson,
+and meanwhile I should be the criminal myself if I kept you out of bed
+any longer."
+
+It was midday when we found ourselves at the scene of the tragedy, and,
+under my companion's guidance, we made our way at once to Hudson Street.
+In spite of his capacity for concealing his emotions, I could easily see
+that Holmes was in a state of suppressed excitement, while I was myself
+tingling with that half-sporting, half-intellectual pleasure which
+I invariably experienced when I associated myself with him in his
+investigations.
+
+"This is the street," said he, as we turned into a short thoroughfare
+lined with plain two-storied brick houses. "Ah, here is Simpson to
+report."
+
+"He's in all right, Mr. Holmes," cried a small street Arab, running up
+to us.
+
+"Good, Simpson!" said Holmes, patting him on the head. "Come along,
+Watson. This is the house." He sent in his card with a message that he
+had come on important business, and a moment later we were face to face
+with the man whom we had come to see. In spite of the warm weather he
+was crouching over a fire, and the little room was like an oven. The
+man sat all twisted and huddled in his chair in a way which gave an
+indescribably impression of deformity; but the face which he turned
+towards us, though worn and swarthy, must at some time have been
+remarkable for its beauty. He looked suspiciously at us now out of
+yellow-shot, bilious eyes, and, without speaking or rising, he waved
+towards two chairs.
+
+"Mr. Henry Wood, late of India, I believe," said Holmes, affably. "I've
+come over this little matter of Colonel Barclay's death."
+
+"What should I know about that?"
+
+"That's what I want to ascertain. You know, I suppose, that unless the
+matter is cleared up, Mrs. Barclay, who is an old friend of yours, will
+in all probability be tried for murder."
+
+The man gave a violent start.
+
+"I don't know who you are," he cried, "nor how you come to know what you
+do know, but will you swear that this is true that you tell me?"
+
+"Why, they are only waiting for her to come to her senses to arrest
+her."
+
+"My God! Are you in the police yourself?"
+
+"No."
+
+"What business is it of yours, then?"
+
+"It's every man's business to see justice done."
+
+"You can take my word that she is innocent."
+
+"Then you are guilty."
+
+"No, I am not."
+
+"Who killed Colonel James Barclay, then?"
+
+"It was a just providence that killed him. But, mind you this, that if
+I had knocked his brains out, as it was in my heart to do, he would have
+had no more than his due from my hands. If his own guilty conscience had
+not struck him down it is likely enough that I might have had his blood
+upon my soul. You want me to tell the story. Well, I don't know why I
+shouldn't, for there's no cause for me to be ashamed of it.
+
+"It was in this way, sir. You see me now with my back like a camel and
+my ribs all awry, but there was a time when Corporal Henry Wood was the
+smartest man in the 117th foot. We were in India then, in cantonments,
+at a place we'll call Bhurtee. Barclay, who died the other day, was
+sergeant in the same company as myself, and the belle of the regiment,
+ay, and the finest girl that ever had the breath of life between her
+lips, was Nancy Devoy, the daughter of the color-sergeant. There were
+two men that loved her, and one that she loved, and you'll smile when
+you look at this poor thing huddled before the fire, and hear me say
+that it was for my good looks that she loved me.
+
+"Well, though I had her heart, her father was set upon her marrying
+Barclay. I was a harum-scarum, reckless lad, and he had had an
+education, and was already marked for the sword-belt. But the girl held
+true to me, and it seemed that I would have had her when the Mutiny
+broke out, and all hell was loose in the country.
+
+"We were shut up in Bhurtee, the regiment of us with half a battery of
+artillery, a company of Sikhs, and a lot of civilians and women-folk.
+There were ten thousand rebels round us, and they were as keen as a set
+of terriers round a rat-cage. About the second week of it our water gave
+out, and it was a question whether we could communicate with General
+Neill's column, which was moving up country. It was our only chance, for
+we could not hope to fight our way out with all the women and children,
+so I volunteered to go out and to warn General Neill of our danger. My
+offer was accepted, and I talked it over with Sergeant Barclay, who was
+supposed to know the ground better than any other man, and who drew up
+a route by which I might get through the rebel lines. At ten o'clock the
+same night I started off upon my journey. There were a thousand lives to
+save, but it was of only one that I was thinking when I dropped over the
+wall that night.
+
+"My way ran down a dried-up watercourse, which we hoped would screen
+me from the enemy's sentries; but as I crept round the corner of it
+I walked right into six of them, who were crouching down in the dark
+waiting for me. In an instant I was stunned with a blow and bound hand
+and foot. But the real blow was to my heart and not to my head, for as
+I came to and listened to as much as I could understand of their talk,
+I heard enough to tell me that my comrade, the very man who had arranged
+the way that I was to take, had betrayed me by means of a native servant
+into the hands of the enemy.
+
+"Well, there's no need for me to dwell on that part of it. You know now
+what James Barclay was capable of. Bhurtee was relieved by Neill next
+day, but the rebels took me away with them in their retreat, and it was
+many a long year before ever I saw a white face again. I was tortured
+and tried to get away, and was captured and tortured again. You can see
+for yourselves the state in which I was left. Some of them that fled
+into Nepaul took me with them, and then afterwards I was up past
+Darjeeling. The hill-folk up there murdered the rebels who had me, and
+I became their slave for a time until I escaped; but instead of going
+south I had to go north, until I found myself among the Afghans. There
+I wandered about for many a year, and at last came back to the Punjab,
+where I lived mostly among the natives and picked up a living by the
+conjuring tricks that I had learned. What use was it for me, a wretched
+cripple, to go back to England or to make myself known to my old
+comrades? Even my wish for revenge would not make me do that. I had
+rather that Nancy and my old pals should think of Harry Wood as having
+died with a straight back, than see him living and crawling with a stick
+like a chimpanzee. They never doubted that I was dead, and I meant that
+they never should. I heard that Barclay had married Nancy, and that he
+was rising rapidly in the regiment, but even that did not make me speak.
+
+"But when one gets old one has a longing for home. For years I've been
+dreaming of the bright green fields and the hedges of England. At last I
+determined to see them before I died. I saved enough to bring me across,
+and then I came here where the soldiers are, for I know their ways and
+how to amuse them and so earn enough to keep me."
+
+"Your narrative is most interesting," said Sherlock Holmes. "I have
+already heard of your meeting with Mrs. Barclay, and your mutual
+recognition. You then, as I understand, followed her home and saw
+through the window an altercation between her husband and her, in which
+she doubtless cast his conduct to you in his teeth. Your own feelings
+overcame you, and you ran across the lawn and broke in upon them."
+
+"I did, sir, and at the sight of me he looked as I have never seen a man
+look before, and over he went with his head on the fender. But he was
+dead before he fell. I read death on his face as plain as I can read
+that text over the fire. The bare sight of me was like a bullet through
+his guilty heart."
+
+"And then?"
+
+"Then Nancy fainted, and I caught up the key of the door from her hand,
+intending to unlock it and get help. But as I was doing it it seemed to
+me better to leave it alone and get away, for the thing might look black
+against me, and any way my secret would be out if I were taken. In my
+haste I thrust the key into my pocket, and dropped my stick while I was
+chasing Teddy, who had run up the curtain. When I got him into his box,
+from which he had slipped, I was off as fast as I could run."
+
+"Who's Teddy?" asked Holmes.
+
+The man leaned over and pulled up the front of a kind of hutch in
+the corner. In an instant out there slipped a beautiful reddish-brown
+creature, thin and lithe, with the legs of a stoat, a long, thin nose,
+and a pair of the finest red eyes that ever I saw in an animal's head.
+
+"It's a mongoose," I cried.
+
+"Well, some call them that, and some call them ichneumon," said the
+man. "Snake-catcher is what I call them, and Teddy is amazing quick on
+cobras. I have one here without the fangs, and Teddy catches it every
+night to please the folk in the canteen.
+
+"Any other point, sir?"
+
+"Well, we may have to apply to you again if Mrs. Barclay should prove to
+be in serious trouble."
+
+"In that case, of course, I'd come forward."
+
+"But if not, there is no object in raking up this scandal against a
+dead man, foully as he has acted. You have at least the satisfaction
+of knowing that for thirty years of his life his conscience bitterly
+reproached him for this wicked deed. Ah, there goes Major Murphy on the
+other side of the street. Good-by, Wood. I want to learn if anything has
+happened since yesterday."
+
+We were in time to overtake the major before he reached the corner.
+
+"Ah, Holmes," he said: "I suppose you have heard that all this fuss has
+come to nothing?"
+
+"What then?"
+
+"The inquest is just over. The medical evidence showed conclusively
+that death was due to apoplexy. You see it was quite a simple case after
+all."
+
+"Oh, remarkably superficial," said Holmes, smiling. "Come, Watson, I
+don't think we shall be wanted in Aldershot any more."
+
+"There's one thing," said I, as we walked down to the station. "If the
+husband's name was James, and the other was Henry, what was this talk
+about David?"
+
+"That one word, my dear Watson, should have told me the whole story had
+I been the ideal reasoner which you are so fond of depicting. It was
+evidently a term of reproach."
+
+"Of reproach?"
+
+"Yes; David strayed a little occasionally, you know, and on one occasion
+in the same direction as Sergeant James Barclay. You remember the small
+affair of Uriah and Bathsheba? My biblical knowledge is a trifle rusty,
+I fear, but you will find the story in the first or second of Samuel."
+
+
+
+
+Adventure VIII. The Resident Patient
+
+
+Glancing over the somewhat incoherent series of Memoirs with which I
+have endeavored to illustrate a few of the mental peculiarities of my
+friend Mr. Sherlock Holmes, I have been struck by the difficulty which I
+have experienced in picking out examples which shall in every way answer
+my purpose. For in those cases in which Holmes has performed some tour
+de force of analytical reasoning, and has demonstrated the value of his
+peculiar methods of investigation, the facts themselves have often been
+so slight or so commonplace that I could not feel justified in laying
+them before the public. On the other hand, it has frequently happened
+that he has been concerned in some research where the facts have been of
+the most remarkable and dramatic character, but where the share which he
+has himself taken in determining their causes has been less pronounced
+than I, as his biographer, could wish. The small matter which I have
+chronicled under the heading of "A Study in Scarlet," and that other
+later one connected with the loss of the Gloria Scott, may serve as
+examples of this Scylla and Charybdis which are forever threatening the
+historian. It may be that in the business of which I am now about to
+write the part which my friend played is not sufficiently accentuated;
+and yet the whole train of circumstances is so remarkable that I cannot
+bring myself to omit it entirely from this series.
+
+It had been a close, rainy day in October. Our blinds were half-drawn,
+and Holmes lay curled upon the sofa, reading and re-reading a letter
+which he had received by the morning post. For myself, my term of
+service in India had trained me to stand heat better than cold, and
+a thermometer of 90 was no hardship. But the paper was uninteresting.
+Parliament had risen. Everybody was out of town, and I yearned for the
+glades of the New Forest or the shingle of Southsea. A depleted bank
+account had caused me to postpone my holiday, and as to my companion,
+neither the country nor the sea presented the slightest attraction to
+him. He loved to lie in the very centre of five millions of people, with
+his filaments stretching out and running through them, responsive to
+every little rumor or suspicion of unsolved crime. Appreciation of
+Nature found no place among his many gifts, and his only change was
+when he turned his mind from the evil-doer of the town to track down his
+brother of the country.
+
+Finding that Holmes was too absorbed for conversation, I had tossed
+aside the barren paper, and leaning back in my chair, I fell into a
+brown study. Suddenly my companion's voice broke in upon my thoughts.
+
+"You are right, Watson," said he. "It does seem a very preposterous way
+of settling a dispute."
+
+"Most preposterous!" I exclaimed, and then, suddenly realizing how
+he had echoed the inmost thought of my soul, I sat up in my chair and
+stared at him in blank amazement.
+
+"What is this, Holmes?" I cried. "This is beyond anything which I could
+have imagined."
+
+He laughed heartily at my perplexity.
+
+"You remember," said he, "that some little time ago, when I read you the
+passage in one of Poe's sketches, in which a close reasoner follows the
+unspoken thought of his companion, you were inclined to treat the
+matter as a mere tour de force of the author. On my remarking that I
+was constantly in the habit of doing the same thing you expressed
+incredulity."
+
+"Oh, no!"
+
+"Perhaps not with your tongue, my dear Watson, but certainly with your
+eyebrows. So when I saw you throw down your paper and enter upon a train
+of thought, I was very happy to have the opportunity of reading it
+off, and eventually of breaking into it, as a proof that I had been in
+rapport with you."
+
+But I was still far from satisfied. "In the example which you read to
+me," said I, "the reasoner drew his conclusions from the actions of the
+man whom he observed. If I remember right, he stumbled over a heap
+of stones, looked up at the stars, and so on. But I have been seated
+quietly in my chair, and what clues can I have given you?"
+
+"You do yourself an injustice. The features are given to man as the
+means by which he shall express his emotions, and yours are faithful
+servants."
+
+"Do you mean to say that you read my train of thoughts from my
+features?"
+
+"Your features, and especially your eyes. Perhaps you cannot yourself
+recall how your reverie commenced?"
+
+"No, I cannot."
+
+"Then I will tell you. After throwing down your paper, which was the
+action which drew my attention to you, you sat for half a minute with
+a vacant expression. Then your eyes fixed themselves upon your
+newly-framed picture of General Gordon, and I saw by the alteration in
+your face that a train of thought had been started. But it did not lead
+very far. Your eyes turned across to the unframed portrait of Henry Ward
+Beecher which stands upon the top of your books. You then glanced up at
+the wall, and of course your meaning was obvious. You were thinking
+that if the portrait were framed it would just cover that bare space and
+correspond with Gordon's picture over there."
+
+"You have followed me wonderfully!" I exclaimed.
+
+"So far I could hardly have gone astray. But now your thoughts went
+back to Beecher, and you looked hard across as if you were studying
+the character in his features. Then your eyes ceased to pucker, but
+you continued to look across, and your face was thoughtful. You were
+recalling the incidents of Beecher's career. I was well aware that you
+could not do this without thinking of the mission which he undertook
+on behalf of the North at the time of the Civil War, for I remember
+you expressing your passionate indignation at the way in which he was
+received by the more turbulent of our people. You felt so strongly about
+it that I knew you could not think of Beecher without thinking of that
+also. When a moment later I saw your eyes wander away from the picture,
+I suspected that your mind had now turned to the Civil War, and when
+I observed that your lips set, your eyes sparkled, and your hands
+clinched, I was positive that you were indeed thinking of the gallantry
+which was shown by both sides in that desperate struggle. But then,
+again, your face grew sadder; you shook your head. You were dwelling
+upon the sadness and horror and useless waste of life. Your hand stole
+towards your own old wound, and a smile quivered on your lips,
+which showed me that the ridiculous side of this method of settling
+international questions had forced itself upon your mind. At this point
+I agreed with you that it was preposterous, and was glad to find that
+all my deductions had been correct."
+
+"Absolutely!" said I. "And now that you have explained it, I confess
+that I am as amazed as before."
+
+"It was very superficial, my dear Watson, I assure you. I should not
+have intruded it upon your attention had you not shown some incredulity
+the other day. But the evening has brought a breeze with it. What do you
+say to a ramble through London?"
+
+I was weary of our little sitting-room and gladly acquiesced. For
+three hours we strolled about together, watching the ever-changing
+kaleidoscope of life as it ebbs and flows through Fleet Street and the
+Strand. His characteristic talk, with its keen observance of detail
+and subtle power of inference held me amused and enthralled. It was ten
+o'clock before we reached Baker Street again. A brougham was waiting at
+our door.
+
+"Hum! A doctor's--general practitioner, I perceive," said Holmes. "Not
+been long in practice, but has had a good deal to do. Come to consult
+us, I fancy! Lucky we came back!"
+
+I was sufficiently conversant with Holmes's methods to be able to follow
+his reasoning, and to see that the nature and state of the various
+medical instruments in the wicker basket which hung in the lamplight
+inside the brougham had given him the data for his swift deduction.
+The light in our window above showed that this late visit was indeed
+intended for us. With some curiosity as to what could have sent a
+brother medico to us at such an hour, I followed Holmes into our
+sanctum.
+
+A pale, taper-faced man with sandy whiskers rose up from a chair by the
+fire as we entered. His age may not have been more than three or four
+and thirty, but his haggard expression and unhealthy hue told of a life
+which has sapped his strength and robbed him of his youth. His manner
+was nervous and shy, like that of a sensitive gentleman, and the thin
+white hand which he laid on the mantelpiece as he rose was that of an
+artist rather than of a surgeon. His dress was quiet and sombre--a black
+frock-coat, dark trousers, and a touch of color about his necktie.
+
+"Good-evening, doctor," said Holmes, cheerily. "I am glad to see that
+you have only been waiting a very few minutes."
+
+"You spoke to my coachman, then?"
+
+"No, it was the candle on the side-table that told me. Pray resume your
+seat and let me know how I can serve you."
+
+"My name is Doctor Percy Trevelyan," said our visitor, "and I live at
+403 Brook Street."
+
+"Are you not the author of a monograph upon obscure nervous lesions?" I
+asked.
+
+His pale cheeks flushed with pleasure at hearing that his work was known
+to me.
+
+"I so seldom hear of the work that I thought it was quite dead," said
+he. "My publishers gave me a most discouraging account of its sale. You
+are yourself, I presume, a medical man?"
+
+"A retired army surgeon."
+
+"My own hobby has always been nervous disease. I should wish to make it
+an absolute specialty, but, of course, a man must take what he can get
+at first. This, however, is beside the question, Mr. Sherlock Holmes,
+and I quite appreciate how valuable your time is. The fact is that a
+very singular train of events has occurred recently at my house in Brook
+Street, and to-night they came to such a head that I felt it was quite
+impossible for me to wait another hour before asking for your advice and
+assistance."
+
+Sherlock Holmes sat down and lit his pipe. "You are very welcome
+to both," said he. "Pray let me have a detailed account of what the
+circumstances are which have disturbed you."
+
+"One or two of them are so trivial," said Dr. Trevelyan, "that really
+I am almost ashamed to mention them. But the matter is so inexplicable,
+and the recent turn which it has taken is so elaborate, that I shall
+lay it all before you, and you shall judge what is essential and what is
+not.
+
+"I am compelled, to begin with, to say something of my own college
+career. I am a London University man, you know, and I am sure that your
+will not think that I am unduly singing my own praises if I say that my
+student career was considered by my professors to be a very promising
+one. After I had graduated I continued to devote myself to research,
+occupying a minor position in King's College Hospital, and I was
+fortunate enough to excite considerable interest by my research into the
+pathology of catalepsy, and finally to win the Bruce Pinkerton prize and
+medal by the monograph on nervous lesions to which your friend has
+just alluded. I should not go too far if I were to say that there was a
+general impression at that time that a distinguished career lay before
+me.
+
+"But the one great stumbling-block lay in my want of capital. As you
+will readily understand, a specialist who aims high is compelled to
+start in one of a dozen streets in the Cavendish Square quarter, all
+of which entail enormous rents and furnishing expenses. Besides this
+preliminary outlay, he must be prepared to keep himself for some years,
+and to hire a presentable carriage and horse. To do this was quite
+beyond my power, and I could only hope that by economy I might in ten
+years' time save enough to enable me to put up my plate. Suddenly,
+however, an unexpected incident opened up quite a new prospect to me.
+
+"This was a visit from a gentleman of the name of Blessington, who was a
+complete stranger to me. He came up to my room one morning, and plunged
+into business in an instant.
+
+"'You are the same Percy Trevelyan who has had so distinguished a career
+and won a great prize lately?' said he.
+
+"I bowed.
+
+"'Answer me frankly,' he continued, 'for you will find it to your
+interest to do so. You have all the cleverness which makes a successful
+man. Have you the tact?'
+
+"I could not help smiling at the abruptness of the question.
+
+"'I trust that I have my share,' I said.
+
+"'Any bad habits? Not drawn towards drink, eh?'
+
+"'Really, sir!' I cried.
+
+"'Quite right! That's all right! But I was bound to ask. With all these
+qualities, why are you not in practice?'
+
+"I shrugged my shoulders.
+
+"'Come, come!' said he, in his bustling way. 'It's the old story. More
+in your brains than in your pocket, eh? What would you say if I were to
+start you in Brook Street?'
+
+"I stared at him in astonishment.
+
+"'Oh, it's for my sake, not for yours,' he cried. 'I'll be perfectly
+frank with you, and if it suits you it will suit me very well. I have a
+few thousands to invest, d'ye see, and I think I'll sink them in you.'
+
+"'But why?' I gasped.
+
+"'Well, it's just like any other speculation, and safer than most.'
+
+"'What am I to do, then?'
+
+"'I'll tell you. I'll take the house, furnish it, pay the maids, and run
+the whole place. All you have to do is just to wear out your chair in
+the consulting-room. I'll let you have pocket-money and everything. Then
+you hand over to me three quarters of what you earn, and you keep the
+other quarter for yourself.'
+
+"This was the strange proposal, Mr. Holmes, with which the man
+Blessington approached me. I won't weary you with the account of how
+we bargained and negotiated. It ended in my moving into the house next
+Lady-day, and starting in practice on very much the same conditions as
+he had suggested. He came himself to live with me in the character of a
+resident patient. His heart was weak, it appears, and he needed constant
+medical supervision. He turned the two best rooms of the first floor
+into a sitting-room and bedroom for himself. He was a man of singular
+habits, shunning company and very seldom going out. His life was
+irregular, but in one respect he was regularity itself. Every evening,
+at the same hour, he walked into the consulting-room, examined the
+books, put down five and three-pence for every guinea that I had earned,
+and carried the rest off to the strong-box in his own room.
+
+"I may say with confidence that he never had occasion to regret his
+speculation. From the first it was a success. A few good cases and the
+reputation which I had won in the hospital brought me rapidly to the
+front, and during the last few years I have made him a rich man.
+
+"So much, Mr. Holmes, for my past history and my relations with Mr.
+Blessington. It only remains for me now to tell you what has occurred to
+bring me here to-night.
+
+"Some weeks ago Mr. Blessington came down to me in, as it seemed to me,
+a state of considerable agitation. He spoke of some burglary which, he
+said, had been committed in the West End, and he appeared, I remember,
+to be quite unnecessarily excited about it, declaring that a day should
+not pass before we should add stronger bolts to our windows and doors.
+For a week he continued to be in a peculiar state of restlessness,
+peering continually out of the windows, and ceasing to take the short
+walk which had usually been the prelude to his dinner. From his manner
+it struck me that he was in mortal dread of something or somebody, but
+when I questioned him upon the point he became so offensive that I was
+compelled to drop the subject. Gradually, as time passed, his fears
+appeared to die away, and he had renewed his former habits, when a fresh
+event reduced him to the pitiable state of prostration in which he now
+lies.
+
+"What happened was this. Two days ago I received the letter which I now
+read to you. Neither address nor date is attached to it.
+
+"'A Russian nobleman who is now resident in England,' it runs, 'would
+be glad to avail himself of the professional assistance of Dr. Percy
+Trevelyan. He has been for some years a victim to cataleptic attacks, on
+which, as is well known, Dr. Trevelyan is an authority. He proposes to
+call at about quarter past six to-morrow evening, if Dr. Trevelyan will
+make it convenient to be at home.'
+
+"This letter interested me deeply, because the chief difficulty in the
+study of catalepsy is the rareness of the disease. You may believe,
+then, that I was in my consulting-room when, at the appointed hour, the
+page showed in the patient.
+
+"He was an elderly man, thin, demure, and commonplace--by no means the
+conception one forms of a Russian nobleman. I was much more struck by
+the appearance of his companion. This was a tall young man, surprisingly
+handsome, with a dark, fierce face, and the limbs and chest of a
+Hercules. He had his hand under the other's arm as they entered, and
+helped him to a chair with a tenderness which one would hardly have
+expected from his appearance.
+
+"'You will excuse my coming in, doctor,' said he to me, speaking English
+with a slight lisp. 'This is my father, and his health is a matter of
+the most overwhelming importance to me.'
+
+"I was touched by this filial anxiety. 'You would, perhaps, care to
+remain during the consultation?' said I.
+
+"'Not for the world,' he cried with a gesture of horror. 'It is more
+painful to me than I can express. If I were to see my father in one of
+these dreadful seizures I am convinced that I should never survive
+it. My own nervous system is an exceptionally sensitive one. With your
+permission, I will remain in the waiting-room while you go into my
+father's case.'
+
+"To this, of course, I assented, and the young man withdrew. The patient
+and I then plunged into a discussion of his case, of which I took
+exhaustive notes. He was not remarkable for intelligence, and his
+answers were frequently obscure, which I attributed to his limited
+acquaintance with our language. Suddenly, however, as I sat writing,
+he ceased to give any answer at all to my inquiries, and on my turning
+towards him I was shocked to see that he was sitting bolt upright in his
+chair, staring at me with a perfectly blank and rigid face. He was again
+in the grip of his mysterious malady.
+
+"My first feeling, as I have just said, was one of pity and horror.
+My second, I fear, was rather one of professional satisfaction. I made
+notes of my patient's pulse and temperature, tested the rigidity of his
+muscles, and examined his reflexes. There was nothing markedly abnormal
+in any of these conditions, which harmonized with my former experiences.
+I had obtained good results in such cases by the inhalation of nitrite
+of amyl, and the present seemed an admirable opportunity of testing
+its virtues. The bottle was downstairs in my laboratory, so leaving my
+patient seated in his chair, I ran down to get it. There was some little
+delay in finding it--five minutes, let us say--and then I returned.
+Imagine my amazement to find the room empty and the patient gone.
+
+"Of course, my first act was to run into the waiting-room. The son had
+gone also. The hall door had been closed, but not shut. My page who
+admits patients is a new boy and by no means quick. He waits downstairs,
+and runs up to show patients out when I ring the consulting-room bell.
+He had heard nothing, and the affair remained a complete mystery. Mr.
+Blessington came in from his walk shortly afterwards, but I did not say
+anything to him upon the subject, for, to tell the truth, I have got in
+the way of late of holding as little communication with him as possible.
+
+"Well, I never thought that I should see anything more of the Russian
+and his son, so you can imagine my amazement when, at the very same hour
+this evening, they both came marching into my consulting-room, just as
+they had done before.
+
+"'I feel that I owe you a great many apologies for my abrupt departure
+yesterday, doctor,' said my patient.
+
+"'I confess that I was very much surprised at it,' said I.
+
+"'Well, the fact is,' he remarked, 'that when I recover from these
+attacks my mind is always very clouded as to all that has gone before. I
+woke up in a strange room, as it seemed to me, and made my way out into
+the street in a sort of dazed way when you were absent.'
+
+"'And I,' said the son, 'seeing my father pass the door of the
+waiting-room, naturally thought that the consultation had come to an
+end. It was not until we had reached home that I began to realize the
+true state of affairs.'
+
+"'Well,' said I, laughing, 'there is no harm done except that you
+puzzled me terribly; so if you, sir, would kindly step into the
+waiting-room I shall be happy to continue our consultation which was
+brought to so abrupt an ending.'
+
+"'For half an hour or so I discussed that old gentleman's symptoms with
+him, and then, having prescribed for him, I saw him go off upon the arm
+of his son.
+
+"I have told you that Mr. Blessington generally chose this hour of the
+day for his exercise. He came in shortly afterwards and passed upstairs.
+An instant later I heard him running down, and he burst into my
+consulting-room like a man who is mad with panic.
+
+"'Who has been in my room?' he cried.
+
+"'No one,' said I.
+
+"'It's a lie! He yelled. 'Come up and look!'
+
+"I passed over the grossness of his language, as he seemed half out of
+his mind with fear. When I went upstairs with him he pointed to several
+footprints upon the light carpet.
+
+"'D'you mean to say those are mine?' he cried.
+
+"They were certainly very much larger than any which he could have made,
+and were evidently quite fresh. It rained hard this afternoon, as you
+know, and my patients were the only people who called. It must have been
+the case, then, that the man in the waiting-room had, for some unknown
+reason, while I was busy with the other, ascended to the room of my
+resident patient. Nothing had been touched or taken, but there were the
+footprints to prove that the intrusion was an undoubted fact.
+
+"Mr. Blessington seemed more excited over the matter than I should have
+thought possible, though of course it was enough to disturb anybody's
+peace of mind. He actually sat crying in an arm-chair, and I could
+hardly get him to speak coherently. It was his suggestion that I should
+come round to you, and of course I at once saw the propriety of it,
+for certainly the incident is a very singular one, though he appears to
+completely overrate its importance. If you would only come back with me
+in my brougham, you would at least be able to soothe him, though I
+can hardly hope that you will be able to explain this remarkable
+occurrence."
+
+Sherlock Holmes had listened to this long narrative with an intentness
+which showed me that his interest was keenly aroused. His face was as
+impassive as ever, but his lids had drooped more heavily over his eyes,
+and his smoke had curled up more thickly from his pipe to emphasize each
+curious episode in the doctor's tale. As our visitor concluded, Holmes
+sprang up without a word, handed me my hat, picked his own from the
+table, and followed Dr. Trevelyan to the door. Within a quarter of an
+hour we had been dropped at the door of the physician's residence
+in Brook Street, one of those sombre, flat-faced houses which one
+associates with a West-End practice. A small page admitted us, and we
+began at once to ascend the broad, well-carpeted stair.
+
+But a singular interruption brought us to a standstill. The light at
+the top was suddenly whisked out, and from the darkness came a reedy,
+quivering voice.
+
+"I have a pistol," it cried. "I give you my word that I'll fire if you
+come any nearer."
+
+"This really grows outrageous, Mr. Blessington," cried Dr. Trevelyan.
+
+"Oh, then it is you, doctor," said the voice, with a great heave of
+relief. "But those other gentlemen, are they what they pretend to be?"
+
+We were conscious of a long scrutiny out of the darkness.
+
+"Yes, yes, it's all right," said the voice at last. "You can come up,
+and I am sorry if my precautions have annoyed you."
+
+He relit the stair gas as he spoke, and we saw before us a
+singular-looking man, whose appearance, as well as his voice, testified
+to his jangled nerves. He was very fat, but had apparently at some time
+been much fatter, so that the skin hung about his face in loose pouches,
+like the cheeks of a blood-hound. He was of a sickly color, and his
+thin, sandy hair seemed to bristle up with the intensity of his emotion.
+In his hand he held a pistol, but he thrust it into his pocket as we
+advanced.
+
+"Good-evening, Mr. Holmes," said he. "I am sure I am very much obliged
+to you for coming round. No one ever needed your advice more than I do.
+I suppose that Dr. Trevelyan has told you of this most unwarrantable
+intrusion into my rooms."
+
+"Quite so," said Holmes. "Who are these two men Mr. Blessington, and why
+do they wish to molest you?"
+
+"Well, well," said the resident patient, in a nervous fashion, "of
+course it is hard to say that. You can hardly expect me to answer that,
+Mr. Holmes."
+
+"Do you mean that you don't know?"
+
+"Come in here, if you please. Just have the kindness to step in here."
+
+He led the way into his bedroom, which was large and comfortably
+furnished.
+
+"You see that," said he, pointing to a big black box at the end of his
+bed. "I have never been a very rich man, Mr. Holmes--never made but
+one investment in my life, as Dr. Trevelyan would tell you. But I don't
+believe in bankers. I would never trust a banker, Mr. Holmes. Between
+ourselves, what little I have is in that box, so you can understand what
+it means to me when unknown people force themselves into my rooms."
+
+Holmes looked at Blessington in his questioning way and shook his head.
+
+"I cannot possibly advise you if you try to deceive me," said he.
+
+"But I have told you everything."
+
+Holmes turned on his heel with a gesture of disgust. "Good-night, Dr.
+Trevelyan," said he.
+
+"And no advice for me?" cried Blessington, in a breaking voice.
+
+"My advice to you, sir, is to speak the truth."
+
+A minute later we were in the street and walking for home. We had
+crossed Oxford Street and were half way down Harley Street before I
+could get a word from my companion.
+
+"Sorry to bring you out on such a fool's errand, Watson," he said at
+last. "It is an interesting case, too, at the bottom of it."
+
+"I can make little of it," I confessed.
+
+"Well, it is quite evident that there are two men--more, perhaps, but
+at least two--who are determined for some reason to get at this fellow
+Blessington. I have no doubt in my mind that both on the first and on
+the second occasion that young man penetrated to Blessington's room,
+while his confederate, by an ingenious device, kept the doctor from
+interfering."
+
+"And the catalepsy?"
+
+"A fraudulent imitation, Watson, though I should hardly dare to hint as
+much to our specialist. It is a very easy complaint to imitate. I have
+done it myself."
+
+"And then?"
+
+"By the purest chance Blessington was out on each occasion. Their reason
+for choosing so unusual an hour for a consultation was obviously to
+insure that there should be no other patient in the waiting-room. It
+just happened, however, that this hour coincided with Blessington's
+constitutional, which seems to show that they were not very well
+acquainted with his daily routine. Of course, if they had been merely
+after plunder they would at least have made some attempt to search for
+it. Besides, I can read in a man's eye when it is his own skin that he
+is frightened for. It is inconceivable that this fellow could have made
+two such vindictive enemies as these appear to be without knowing of it.
+I hold it, therefore, to be certain that he does know who these men are,
+and that for reasons of his own he suppresses it. It is just possible
+that to-morrow may find him in a more communicative mood."
+
+"Is there not one alternative," I suggested, "grotesquely improbably,
+no doubt, but still just conceivable? Might the whole story of the
+cataleptic Russian and his son be a concoction of Dr. Trevelyan's, who
+has, for his own purposes, been in Blessington's rooms?"
+
+I saw in the gaslight that Holmes wore an amused smile at this brilliant
+departure of mine.
+
+"My dear fellow," said he, "it was one of the first solutions which
+occurred to me, but I was soon able to corroborate the doctor's tale.
+This young man has left prints upon the stair-carpet which made it quite
+superfluous for me to ask to see those which he had made in the room.
+When I tell you that his shoes were square-toed instead of being pointed
+like Blessington's, and were quite an inch and a third longer than the
+doctor's, you will acknowledge that there can be no doubt as to his
+individuality. But we may sleep on it now, for I shall be surprised if
+we do not hear something further from Brook Street in the morning."
+
+
+Sherlock Holmes's prophecy was soon fulfilled, and in a dramatic
+fashion. At half-past seven next morning, in the first glimmer of
+daylight, I found him standing by my bedside in his dressing-gown.
+
+"There's a brougham waiting for us, Watson," said he.
+
+"What's the matter, then?"
+
+"The Brook Street business."
+
+"Any fresh news?"
+
+"Tragic, but ambiguous," said he, pulling up the blind. "Look at this--a
+sheet from a note-book, with 'For God's sake come at once--P. T.,'
+scrawled upon it in pencil. Our friend, the doctor, was hard put to
+it when he wrote this. Come along, my dear fellow, for it's an urgent
+call."
+
+In a quarter of an hour or so we were back at the physician's house. He
+came running out to meet us with a face of horror.
+
+"Oh, such a business!" he cried, with his hands to his temples.
+
+"What then?"
+
+"Blessington has committed suicide!"
+
+Holmes whistled.
+
+"Yes, he hanged himself during the night."
+
+We had entered, and the doctor had preceded us into what was evidently
+his waiting-room.
+
+"I really hardly know what I am doing," he cried. "The police are
+already upstairs. It has shaken me most dreadfully."
+
+"When did you find it out?"
+
+"He has a cup of tea taken in to him early every morning. When the maid
+entered, about seven, there the unfortunate fellow was hanging in the
+middle of the room. He had tied his cord to the hook on which the heavy
+lamp used to hang, and he had jumped off from the top of the very box
+that he showed us yesterday."
+
+Holmes stood for a moment in deep thought.
+
+"With your permission," said he at last, "I should like to go upstairs
+and look into the matter."
+
+We both ascended, followed by the doctor.
+
+It was a dreadful sight which met us as we entered the bedroom door. I
+have spoken of the impression of flabbiness which this man Blessington
+conveyed. As he dangled from the hook it was exaggerated and intensified
+until he was scarce human in his appearance. The neck was drawn out
+like a plucked chicken's, making the rest of him seem the more obese and
+unnatural by the contrast. He was clad only in his long night-dress, and
+his swollen ankles and ungainly feet protruded starkly from beneath it.
+Beside him stood a smart-looking police-inspector, who was taking notes
+in a pocket-book.
+
+"Ah, Mr. Holmes," said he, heartily, as my friend entered, "I am
+delighted to see you."
+
+"Good-morning, Lanner," answered Holmes; "you won't think me an
+intruder, I am sure. Have you heard of the events which led up to this
+affair?"
+
+"Yes, I heard something of them."
+
+"Have you formed any opinion?"
+
+"As far as I can see, the man has been driven out of his senses by
+fright. The bed has been well slept in, you see. There's his impression
+deep enough. It's about five in the morning, you know, that suicides are
+most common. That would be about his time for hanging himself. It seems
+to have been a very deliberate affair."
+
+"I should say that he has been dead about three hours, judging by the
+rigidity of the muscles," said I.
+
+"Noticed anything peculiar about the room?" asked Holmes.
+
+"Found a screw-driver and some screws on the wash-hand stand. Seems to
+have smoked heavily during the night, too. Here are four cigar-ends that
+I picked out of the fireplace."
+
+"Hum!" said Holmes, "have you got his cigar-holder?"
+
+"No, I have seen none."
+
+"His cigar-case, then?"
+
+"Yes, it was in his coat-pocket."
+
+Holmes opened it and smelled the single cigar which it contained.
+
+"Oh, this is an Havana, and these others are cigars of the peculiar sort
+which are imported by the Dutch from their East Indian colonies. They
+are usually wrapped in straw, you know, and are thinner for their length
+than any other brand." He picked up the four ends and examined them with
+his pocket-lens.
+
+"Two of these have been smoked from a holder and two without," said he.
+"Two have been cut by a not very sharp knife, and two have had the ends
+bitten off by a set of excellent teeth. This is no suicide, Mr. Lanner.
+It is a very deeply planned and cold-blooded murder."
+
+"Impossible!" cried the inspector.
+
+"And why?"
+
+"Why should any one murder a man in so clumsy a fashion as by hanging
+him?"
+
+"That is what we have to find out."
+
+"How could they get in?"
+
+"Through the front door."
+
+"It was barred in the morning."
+
+"Then it was barred after them."
+
+"How do you know?"
+
+"I saw their traces. Excuse me a moment, and I may be able to give you
+some further information about it."
+
+He went over to the door, and turning the lock he examined it in his
+methodical way. Then he took out the key, which was on the inside, and
+inspected that also. The bed, the carpet, the chairs the mantelpiece,
+the dead body, and the rope were each in turn examined, until at last he
+professed himself satisfied, and with my aid and that of the inspector
+cut down the wretched object and laid it reverently under a sheet.
+
+"How about this rope?" he asked.
+
+"It is cut off this," said Dr. Trevelyan, drawing a large coil from
+under the bed. "He was morbidly nervous of fire, and always kept this
+beside him, so that he might escape by the window in case the stairs
+were burning."
+
+"That must have saved them trouble," said Holmes, thoughtfully. "Yes,
+the actual facts are very plain, and I shall be surprised if by the
+afternoon I cannot give you the reasons for them as well. I will take
+this photograph of Blessington, which I see upon the mantelpiece, as it
+may help me in my inquiries."
+
+"But you have told us nothing!" cried the doctor.
+
+"Oh, there can be no doubt as to the sequence of events," said Holmes.
+"There were three of them in it: the young man, the old man, and a
+third, to whose identity I have no clue. The first two, I need hardly
+remark, are the same who masqueraded as the Russian count and his son,
+so we can give a very full description of them. They were admitted by
+a confederate inside the house. If I might offer you a word of advice,
+Inspector, it would be to arrest the page, who, as I understand, has
+only recently come into your service, Doctor."
+
+"The young imp cannot be found," said Dr. Trevelyan; "the maid and the
+cook have just been searching for him."
+
+Holmes shrugged his shoulders.
+
+"He has played a not unimportant part in this drama," said he. "The
+three men having ascended the stairs, which they did on tiptoe, the
+elder man first, the younger man second, and the unknown man in the
+rear--"
+
+"My dear Holmes!" I ejaculated.
+
+"Oh, there could be no question as to the superimposing of the
+footmarks. I had the advantage of learning which was which last night.
+They ascended, then, to Mr. Blessington's room, the door of which they
+found to be locked. With the help of a wire, however, they forced round
+the key. Even without the lens you will perceive, by the scratches on
+this ward, where the pressure was applied.
+
+"On entering the room their first proceeding must have been to gag Mr.
+Blessington. He may have been asleep, or he may have been so paralyzed
+with terror as to have been unable to cry out. These walls are thick,
+and it is conceivable that his shriek, if he had time to utter one, was
+unheard.
+
+"Having secured him, it is evident to me that a consultation of some
+sort was held. Probably it was something in the nature of a judicial
+proceeding. It must have lasted for some time, for it was then that
+these cigars were smoked. The older man sat in that wicker chair; it
+was he who used the cigar-holder. The younger man sat over yonder; he
+knocked his ash off against the chest of drawers. The third fellow paced
+up and down. Blessington, I think, sat upright in the bed, but of that I
+cannot be absolutely certain.
+
+"Well, it ended by their taking Blessington and hanging him. The matter
+was so prearranged that it is my belief that they brought with them
+some sort of block or pulley which might serve as a gallows. That
+screw-driver and those screws were, as I conceive, for fixing it up.
+Seeing the hook, however they naturally saved themselves the trouble.
+Having finished their work they made off, and the door was barred behind
+them by their confederate."
+
+We had all listened with the deepest interest to this sketch of the
+night's doings, which Holmes had deduced from signs so subtle and minute
+that, even when he had pointed them out to us, we could scarcely follow
+him in his reasoning. The inspector hurried away on the instant to make
+inquiries about the page, while Holmes and I returned to Baker Street
+for breakfast.
+
+"I'll be back by three," said he, when we had finished our meal. "Both
+the inspector and the doctor will meet me here at that hour, and I hope
+by that time to have cleared up any little obscurity which the case may
+still present."
+
+
+Our visitors arrived at the appointed time, but it was a quarter to
+four before my friend put in an appearance. From his expression as he
+entered, however, I could see that all had gone well with him.
+
+"Any news, Inspector?"
+
+"We have got the boy, sir."
+
+"Excellent, and I have got the men."
+
+"You have got them!" we cried, all three.
+
+"Well, at least I have got their identity. This so-called Blessington
+is, as I expected, well known at headquarters, and so are his
+assailants. Their names are Biddle, Hayward, and Moffat."
+
+"The Worthingdon bank gang," cried the inspector.
+
+"Precisely," said Holmes.
+
+"Then Blessington must have been Sutton."
+
+"Exactly," said Holmes.
+
+"Why, that makes it as clear as crystal," said the inspector.
+
+But Trevelyan and I looked at each other in bewilderment.
+
+"You must surely remember the great Worthingdon bank business," said
+Holmes. "Five men were in it--these four and a fifth called Cartwright.
+Tobin, the care-taker, was murdered, and the thieves got away with seven
+thousand pounds. This was in 1875. They were all five arrested, but the
+evidence against them was by no means conclusive. This Blessington or
+Sutton, who was the worst of the gang, turned informer. On his evidence
+Cartwright was hanged and the other three got fifteen years apiece. When
+they got out the other day, which was some years before their full term,
+they set themselves, as you perceive, to hunt down the traitor and to
+avenge the death of their comrade upon him. Twice they tried to get at
+him and failed; a third time, you see, it came off. Is there anything
+further which I can explain, Dr. Trevelyan?"
+
+"I think you have made it all remarkable clear," said the doctor. "No
+doubt the day on which he was perturbed was the day when he had seen of
+their release in the newspapers."
+
+"Quite so. His talk about a burglary was the merest blind."
+
+"But why could he not tell you this?"
+
+"Well, my dear sir, knowing the vindictive character of his old
+associates, he was trying to hide his own identity from everybody as
+long as he could. His secret was a shameful one, and he could not bring
+himself to divulge it. However, wretch as he was, he was still living
+under the shield of British law, and I have no doubt, Inspector, that
+you will see that, though that shield may fail to guard, the sword of
+justice is still there to avenge."
+
+
+Such were the singular circumstances in connection with the Resident
+Patient and the Brook Street Doctor. From that night nothing has
+been seen of the three murderers by the police, and it is surmised
+at Scotland Yard that they were among the passengers of the ill-fated
+steamer Norah Creina, which was lost some years ago with all hands
+upon the Portuguese coast, some leagues to the north of Oporto. The
+proceedings against the page broke down for want of evidence, and the
+Brook Street Mystery, as it was called, has never until now been fully
+dealt with in any public print.
+
+
+
+
+Adventure IX. The Greek Interpreter
+
+
+During my long and intimate acquaintance with Mr. Sherlock Holmes I had
+never heard him refer to his relations, and hardly ever to his own early
+life. This reticence upon his part had increased the somewhat inhuman
+effect which he produced upon me, until sometimes I found myself
+regarding him as an isolated phenomenon, a brain without a heart, as
+deficient in human sympathy as he was pre-eminent in intelligence. His
+aversion to women and his disinclination to form new friendships were
+both typical of his unemotional character, but not more so than his
+complete suppression of every reference to his own people. I had come to
+believe that he was an orphan with no relatives living, but one day, to
+my very great surprise, he began to talk to me about his brother.
+
+It was after tea on a summer evening, and the conversation, which had
+roamed in a desultory, spasmodic fashion from golf clubs to the causes
+of the change in the obliquity of the ecliptic, came round at last
+to the question of atavism and hereditary aptitudes. The point under
+discussion was, how far any singular gift in an individual was due to
+his ancestry and how far to his own early training.
+
+"In your own case," said I, "from all that you have told me, it seems
+obvious that your faculty of observation and your peculiar facility for
+deduction are due to your own systematic training."
+
+"To some extent," he answered, thoughtfully. "My ancestors were country
+squires, who appear to have led much the same life as is natural to
+their class. But, none the less, my turn that way is in my veins, and
+may have come with my grandmother, who was the sister of Vernet, the
+French artist. Art in the blood is liable to take the strangest forms."
+
+"But how do you know that it is hereditary?"
+
+"Because my brother Mycroft possesses it in a larger degree than I do."
+
+This was news to me indeed. If there were another man with such singular
+powers in England, how was it that neither police nor public had heard
+of him? I put the question, with a hint that it was my companion's
+modesty which made him acknowledge his brother as his superior. Holmes
+laughed at my suggestion.
+
+"My dear Watson," said he, "I cannot agree with those who rank modesty
+among the virtues. To the logician all things should be seen exactly as
+they are, and to underestimate one's self is as much a departure from
+truth as to exaggerate one's own powers. When I say, therefore, that
+Mycroft has better powers of observation than I, you may take it that I
+am speaking the exact and literal truth."
+
+"Is he your junior?"
+
+"Seven years my senior."
+
+"How comes it that he is unknown?"
+
+"Oh, he is very well known in his own circle."
+
+"Where, then?"
+
+"Well, in the Diogenes Club, for example."
+
+I had never heard of the institution, and my face must have proclaimed
+as much, for Sherlock Holmes pulled out his watch.
+
+"The Diogenes Club is the queerest club in London, and Mycroft one of
+the queerest men. He's always there from quarter to five to twenty to
+eight. It's six now, so if you care for a stroll this beautiful evening
+I shall be very happy to introduce you to two curiosities."
+
+Five minutes later we were in the street, walking towards Regent's
+Circus.
+
+"You wonder," said my companion, "why it is that Mycroft does not use
+his powers for detective work. He is incapable of it."
+
+"But I thought you said--"
+
+"I said that he was my superior in observation and deduction. If the
+art of the detective began and ended in reasoning from an arm-chair, my
+brother would be the greatest criminal agent that ever lived. But he has
+no ambition and no energy. He will not even go out of his way to verify
+his own solutions, and would rather be considered wrong than take the
+trouble to prove himself right. Again and again I have taken a problem
+to him, and have received an explanation which has afterwards proved to
+be the correct one. And yet he was absolutely incapable of working out
+the practical points which must be gone into before a case could be laid
+before a judge or jury."
+
+"It is not his profession, then?"
+
+"By no means. What is to me a means of livelihood is to him the merest
+hobby of a dilettante. He has an extraordinary faculty for figures, and
+audits the books in some of the government departments. Mycroft lodges
+in Pall Mall, and he walks round the corner into Whitehall every morning
+and back every evening. From year's end to year's end he takes no other
+exercise, and is seen nowhere else, except only in the Diogenes Club,
+which is just opposite his rooms."
+
+"I cannot recall the name."
+
+"Very likely not. There are many men in London, you know, who, some from
+shyness, some from misanthropy, have no wish for the company of their
+fellows. Yet they are not averse to comfortable chairs and the latest
+periodicals. It is for the convenience of these that the Diogenes Club
+was started, and it now contains the most unsociable and unclubable men
+in town. No member is permitted to take the least notice of any
+other one. Save in the Stranger's Room, no talking is, under any
+circumstances, allowed, and three offences, if brought to the notice of
+the committee, render the talker liable to expulsion. My brother was one
+of the founders, and I have myself found it a very soothing atmosphere."
+
+We had reached Pall Mall as we talked, and were walking down it from the
+St. James's end. Sherlock Holmes stopped at a door some little distance
+from the Carlton, and, cautioning me not to speak, he led the way into
+the hall. Through the glass paneling I caught a glimpse of a large and
+luxurious room, in which a considerable number of men were sitting about
+and reading papers, each in his own little nook. Holmes showed me into a
+small chamber which looked out into Pall Mall, and then, leaving me for
+a minute, he came back with a companion whom I knew could only be his
+brother.
+
+Mycroft Holmes was a much larger and stouter man than Sherlock. His body
+was absolutely corpulent, but his face, though massive, had preserved
+something of the sharpness of expression which was so remarkable in that
+of his brother. His eyes, which were of a peculiarly light, watery gray,
+seemed to always retain that far-away, introspective look which I had
+only observed in Sherlock's when he was exerting his full powers.
+
+"I am glad to meet you, sir," said he, putting out a broad, fat hand
+like the flipper of a seal. "I hear of Sherlock everywhere since you
+became his chronicler. By the way, Sherlock, I expected to see you round
+last week, to consult me over that Manor House case. I thought you might
+be a little out of your depth."
+
+"No, I solved it," said my friend, smiling.
+
+"It was Adams, of course."
+
+"Yes, it was Adams."
+
+"I was sure of it from the first." The two sat down together in the
+bow-window of the club. "To any one who wishes to study mankind this is
+the spot," said Mycroft. "Look at the magnificent types! Look at these
+two men who are coming towards us, for example."
+
+"The billiard-marker and the other?"
+
+"Precisely. What do you make of the other?"
+
+The two men had stopped opposite the window. Some chalk marks over the
+waistcoat pocket were the only signs of billiards which I could see
+in one of them. The other was a very small, dark fellow, with his hat
+pushed back and several packages under his arm.
+
+"An old soldier, I perceive," said Sherlock.
+
+"And very recently discharged," remarked the brother.
+
+"Served in India, I see."
+
+"And a non-commissioned officer."
+
+"Royal Artillery, I fancy," said Sherlock.
+
+"And a widower."
+
+"But with a child."
+
+"Children, my dear boy, children."
+
+"Come," said I, laughing, "this is a little too much."
+
+"Surely," answered Holmes, "it is not hard to say that a man with that
+bearing, expression of authority, and sunbaked skin, is a soldier, is
+more than a private, and is not long from India."
+
+"That he has not left the service long is shown by his still wearing his
+ammunition boots, as they are called," observed Mycroft.
+
+"He had not the cavalry stride, yet he wore his hat on one side, as
+is shown by the lighter skin of that side of his brow. His weight is
+against his being a sapper. He is in the artillery."
+
+"Then, of course, his complete mourning shows that he has lost some one
+very dear. The fact that he is doing his own shopping looks as though
+it were his wife. He has been buying things for children, you perceive.
+There is a rattle, which shows that one of them is very young. The wife
+probably died in childbed. The fact that he has a picture-book under his
+arm shows that there is another child to be thought of."
+
+I began to understand what my friend meant when he said that his brother
+possessed even keener faculties that he did himself. He glanced across
+at me and smiled. Mycroft took snuff from a tortoise-shell box, and
+brushed away the wandering grains from his coat front with a large, red
+silk handkerchief.
+
+"By the way, Sherlock," said he, "I have had something quite after your
+own heart--a most singular problem--submitted to my judgment. I really
+had not the energy to follow it up save in a very incomplete fashion,
+but it gave me a basis for some pleasing speculation. If you would care
+to hear the facts--"
+
+"My dear Mycroft, I should be delighted."
+
+The brother scribbled a note upon a leaf of his pocket-book, and,
+ringing the bell, he handed it to the waiter.
+
+"I have asked Mr. Melas to step across," said he. "He lodges on the
+floor above me, and I have some slight acquaintance with him, which led
+him to come to me in his perplexity. Mr. Melas is a Greek by extraction,
+as I understand, and he is a remarkable linguist. He earns his living
+partly as interpreter in the law courts and partly by acting as guide to
+any wealthy Orientals who may visit the Northumberland Avenue hotels. I
+think I will leave him to tell his very remarkable experience in his own
+fashion."
+
+A few minutes later we were joined by a short, stout man whose olive
+face and coal-black hair proclaimed his Southern origin, though his
+speech was that of an educated Englishman. He shook hands eagerly
+with Sherlock Holmes, and his dark eyes sparkled with pleasure when he
+understood that the specialist was anxious to hear his story.
+
+"I do not believe that the police credit me--on my word, I do not," said
+he in a wailing voice. "Just because they have never heard of it before,
+they think that such a thing cannot be. But I know that I shall never
+be easy in my mind until I know what has become of my poor man with the
+sticking-plaster upon his face."
+
+"I am all attention," said Sherlock Holmes.
+
+"This is Wednesday evening," said Mr. Melas. "Well then, it was Monday
+night--only two days ago, you understand--that all this happened. I am
+an interpreter, as perhaps my neighbor there has told you. I interpret
+all languages--or nearly all--but as I am a Greek by birth and with a
+Grecian name, it is with that particular tongue that I am principally
+associated. For many years I have been the chief Greek interpreter in
+London, and my name is very well known in the hotels.
+
+"It happens not unfrequently that I am sent for at strange hours by
+foreigners who get into difficulties, or by travelers who arrive late
+and wish my services. I was not surprised, therefore, on Monday night
+when a Mr. Latimer, a very fashionably dressed young man, came up to my
+rooms and asked me to accompany him in a cab which was waiting at the
+door. A Greek friend had come to see him upon business, he said, and
+as he could speak nothing but his own tongue, the services of an
+interpreter were indispensable. He gave me to understand that his house
+was some little distance off, in Kensington, and he seemed to be in a
+great hurry, bustling me rapidly into the cab when we had descended to
+the street.
+
+"I say into the cab, but I soon became doubtful as to whether it was not
+a carriage in which I found myself. It was certainly more roomy than
+the ordinary four-wheeled disgrace to London, and the fittings, though
+frayed, were of rich quality. Mr. Latimer seated himself opposite to me
+and we started off through Charing Cross and up the Shaftesbury Avenue.
+We had come out upon Oxford Street and I had ventured some remark as to
+this being a roundabout way to Kensington, when my words were arrested
+by the extraordinary conduct of my companion.
+
+"He began by drawing a most formidable-looking bludgeon loaded with lead
+from his pocket, and switching it backward and forward several times,
+as if to test its weight and strength. Then he placed it without a word
+upon the seat beside him. Having done this, he drew up the windows on
+each side, and I found to my astonishment that they were covered with
+paper so as to prevent my seeing through them.
+
+"'I am sorry to cut off your view, Mr. Melas,' said he. 'The fact is
+that I have no intention that you should see what the place is to which
+we are driving. It might possibly be inconvenient to me if you could
+find your way there again.'
+
+"As you can imagine, I was utterly taken aback by such an address. My
+companion was a powerful, broad-shouldered young fellow, and, apart from
+the weapon, I should not have had the slightest chance in a struggle
+with him.
+
+"'This is very extraordinary conduct, Mr. Latimer,' I stammered. 'You
+must be aware that what you are doing is quite illegal.'
+
+"'It is somewhat of a liberty, no doubt,' said he, 'but we'll make it
+up to you. I must warn you, however, Mr. Melas, that if at any time
+to-night you attempt to raise an alarm or do anything which is against
+my interests, you will find it a very serious thing. I beg you to
+remember that no one knows where you are, and that, whether you are in
+this carriage or in my house, you are equally in my power.'
+
+"His words were quiet, but he had a rasping way of saying them which
+was very menacing. I sat in silence wondering what on earth could be
+his reason for kidnapping me in this extraordinary fashion. Whatever it
+might be, it was perfectly clear that there was no possible use in my
+resisting, and that I could only wait to see what might befall.
+
+"For nearly two hours we drove without my having the least clue as to
+where we were going. Sometimes the rattle of the stones told of a paved
+causeway, and at others our smooth, silent course suggested asphalt;
+but, save by this variation in sound, there was nothing at all which
+could in the remotest way help me to form a guess as to where we were.
+The paper over each window was impenetrable to light, and a blue curtain
+was drawn across the glass work in front. It was a quarter-past seven
+when we left Pall Mall, and my watch showed me that it was ten minutes
+to nine when we at last came to a standstill. My companion let down
+the window, and I caught a glimpse of a low, arched doorway with a lamp
+burning above it. As I was hurried from the carriage it swung open, and
+I found myself inside the house, with a vague impression of a lawn
+and trees on each side of me as I entered. Whether these were private
+grounds, however, or bona-fide country was more than I could possibly
+venture to say.
+
+"There was a colored gas-lamp inside which was turned so low that I
+could see little save that the hall was of some size and hung with
+pictures. In the dim light I could make out that the person who had
+opened the door was a small, mean-looking, middle-aged man with rounded
+shoulders. As he turned towards us the glint of the light showed me that
+he was wearing glasses.
+
+"'Is this Mr. Melas, Harold?' said he.
+
+"'Yes.'
+
+"'Well done, well done! No ill-will, Mr. Melas, I hope, but we could not
+get on without you. If you deal fair with us you'll not regret it,
+but if you try any tricks, God help you!' He spoke in a nervous, jerky
+fashion, and with little giggling laughs in between, but somehow he
+impressed me with fear more than the other.
+
+"'What do you want with me?' I asked.
+
+"'Only to ask a few questions of a Greek gentleman who is visiting us,
+and to let us have the answers. But say no more than you are told to
+say, or--' here came the nervous giggle again--'you had better never
+have been born.'
+
+"As he spoke he opened a door and showed the way into a room which
+appeared to be very richly furnished, but again the only light was
+afforded by a single lamp half-turned down. The chamber was certainly
+large, and the way in which my feet sank into the carpet as I stepped
+across it told me of its richness. I caught glimpses of velvet chairs, a
+high white marble mantel-piece, and what seemed to be a suit of Japanese
+armor at one side of it. There was a chair just under the lamp, and the
+elderly man motioned that I should sit in it. The younger had left
+us, but he suddenly returned through another door, leading with him
+a gentleman clad in some sort of loose dressing-gown who moved slowly
+towards us. As he came into the circle of dim light which enables me to
+see him more clearly I was thrilled with horror at his appearance. He
+was deadly pale and terribly emaciated, with the protruding, brilliant
+eyes of a man whose spirit was greater than his strength. But what
+shocked me more than any signs of physical weakness was that his face
+was grotesquely criss-crossed with sticking-plaster, and that one large
+pad of it was fastened over his mouth.
+
+"'Have you the slate, Harold?' cried the older man, as this strange
+being fell rather than sat down into a chair. 'Are his hands loose? Now,
+then, give him the pencil. You are to ask the questions, Mr. Melas, and
+he will write the answers. Ask him first of all whether he is prepared
+to sign the papers?'
+
+"The man's eyes flashed fire.
+
+"'Never!' he wrote in Greek upon the slate.
+
+"'On no condition?' I asked, at the bidding of our tyrant.
+
+"'Only if I see her married in my presence by a Greek priest whom I
+know.'
+
+"The man giggled in his venomous way.
+
+"'You know what awaits you, then?'
+
+"'I care nothing for myself.'
+
+"These are samples of the questions and answers which made up our
+strange half-spoken, half-written conversation. Again and again I had to
+ask him whether he would give in and sign the documents. Again and again
+I had the same indignant reply. But soon a happy thought came to me. I
+took to adding on little sentences of my own to each question, innocent
+ones at first, to test whether either of our companions knew anything
+of the matter, and then, as I found that they showed no signs I played a
+more dangerous game. Our conversation ran something like this:
+
+"'You can do no good by this obstinacy. Who are you?'
+
+"'I care not. I am a stranger in London.'
+
+"'Your fate will be upon your own head. How long have you been here?'
+
+"'Let it be so. Three weeks.'
+
+"'The property can never be yours. What ails you?'
+
+"'It shall not go to villains. They are starving me.'
+
+"'You shall go free if you sign. What house is this?'
+
+"'I will never sign. I do not know.'
+
+"'You are not doing her any service. What is your name?'
+
+"'Let me hear her say so. Kratides.'
+
+"'You shall see her if you sign. Where are you from?'
+
+"'Then I shall never see her. Athens.'
+
+"Another five minutes, Mr. Holmes, and I should have wormed out the
+whole story under their very noses. My very next question might have
+cleared the matter up, but at that instant the door opened and a woman
+stepped into the room. I could not see her clearly enough to know more
+than that she was tall and graceful, with black hair, and clad in some
+sort of loose white gown.
+
+"'Harold,' said she, speaking English with a broken accent. 'I could not
+stay away longer. It is so lonely up there with only--Oh, my God, it is
+Paul!'
+
+"These last words were in Greek, and at the same instant the man with
+a convulsive effort tore the plaster from his lips, and screaming out
+'Sophy! Sophy!' rushed into the woman's arms. Their embrace was but for
+an instant, however, for the younger man seized the woman and pushed
+her out of the room, while the elder easily overpowered his emaciated
+victim, and dragged him away through the other door. For a moment I was
+left alone in the room, and I sprang to my feet with some vague idea
+that I might in some way get a clue to what this house was in which I
+found myself. Fortunately, however, I took no steps, for looking up I
+saw that the older man was standing in the door-way with his eyes fixed
+upon me.
+
+"'That will do, Mr. Melas,' said he. 'You perceive that we have taken
+you into our confidence over some very private business. We should not
+have troubled you, only that our friend who speaks Greek and who began
+these negotiations has been forced to return to the East. It was
+quite necessary for us to find some one to take his place, and we were
+fortunate in hearing of your powers.'
+
+"I bowed.
+
+"'There are five sovereigns here,' said he, walking up to me, 'which
+will, I hope, be a sufficient fee. But remember,' he added, tapping me
+lightly on the chest and giggling, 'if you speak to a human soul about
+this--one human soul, mind--well, may God have mercy upon your soul!"
+
+"I cannot tell you the loathing and horror with which this
+insignificant-looking man inspired me. I could see him better now as the
+lamp-light shone upon him. His features were peaky and sallow, and his
+little pointed beard was thready and ill-nourished. He pushed his face
+forward as he spoke and his lips and eyelids were continually twitching
+like a man with St. Vitus's dance. I could not help thinking that his
+strange, catchy little laugh was also a symptom of some nervous malady.
+The terror of his face lay in his eyes, however, steel gray, and
+glistening coldly with a malignant, inexorable cruelty in their depths.
+
+"'We shall know if you speak of this,' said he. 'We have our own means
+of information. Now you will find the carriage waiting, and my friend
+will see you on your way.'
+
+"I was hurried through the hall and into the vehicle, again obtaining
+that momentary glimpse of trees and a garden. Mr. Latimer followed
+closely at my heels, and took his place opposite to me without a word.
+In silence we again drove for an interminable distance with the windows
+raised, until at last, just after midnight, the carriage pulled up.
+
+"'You will get down here, Mr. Melas,' said my companion. 'I am sorry
+to leave you so far from your house, but there is no alternative. Any
+attempt upon your part to follow the carriage can only end in injury to
+yourself.'
+
+"He opened the door as he spoke, and I had hardly time to spring out
+when the coachman lashed the horse and the carriage rattled away. I
+looked around me in astonishment. I was on some sort of a heathy common
+mottled over with dark clumps of furze-bushes. Far away stretched a
+line of houses, with a light here and there in the upper windows. On the
+other side I saw the red signal-lamps of a railway.
+
+"The carriage which had brought me was already out of sight. I stood
+gazing round and wondering where on earth I might be, when I saw some
+one coming towards me in the darkness. As he came up to me I made out
+that he was a railway porter.
+
+"'Can you tell me what place this is?' I asked.
+
+"'Wandsworth Common,' said he.
+
+"'Can I get a train into town?'
+
+"'If you walk on a mile or so to Clapham Junction,' said he, 'you'll
+just be in time for the last to Victoria.'
+
+"So that was the end of my adventure, Mr. Holmes. I do not know where I
+was, nor whom I spoke with, nor anything save what I have told you. But
+I know that there is foul play going on, and I want to help that unhappy
+man if I can. I told the whole story to Mr. Mycroft Holmes next morning,
+and subsequently to the police."
+
+We all sat in silence for some little time after listening to this
+extraordinary narrative. Then Sherlock looked across at his brother.
+
+"Any steps?" he asked.
+
+Mycroft picked up the Daily News, which was lying on the side-table.
+
+"'Anybody supplying any information to the whereabouts of a Greek
+gentleman named Paul Kratides, from Athens, who is unable to speak
+English, will be rewarded. A similar reward paid to any one giving
+information about a Greek lady whose first name is Sophy. X 2473.' That
+was in all the dailies. No answer."
+
+"How about the Greek Legation?"
+
+"I have inquired. They know nothing."
+
+"A wire to the head of the Athens police, then?"
+
+"Sherlock has all the energy of the family," said Mycroft, turning to
+me. "Well, you take the case up by all means, and let me know if you do
+any good."
+
+"Certainly," answered my friend, rising from his chair. "I'll let you
+know, and Mr. Melas also. In the meantime, Mr. Melas, I should certainly
+be on my guard, if I were you, for of course they must know through
+these advertisements that you have betrayed them."
+
+As we walked home together, Holmes stopped at a telegraph office and
+sent off several wires.
+
+"You see, Watson," he remarked, "our evening has been by no means
+wasted. Some of my most interesting cases have come to me in this way
+through Mycroft. The problem which we have just listened to, although
+it can admit of but one explanation, has still some distinguishing
+features."
+
+"You have hopes of solving it?"
+
+"Well, knowing as much as we do, it will be singular indeed if we fail
+to discover the rest. You must yourself have formed some theory which
+will explain the facts to which we have listened."
+
+"In a vague way, yes."
+
+"What was your idea, then?"
+
+"It seemed to me to be obvious that this Greek girl had been carried off
+by the young Englishman named Harold Latimer."
+
+"Carried off from where?"
+
+"Athens, perhaps."
+
+Sherlock Holmes shook his head. "This young man could not talk a word of
+Greek. The lady could talk English fairly well. Inference--that she had
+been in England some little time, but he had not been in Greece."
+
+"Well, then, we will presume that she had come on a visit to England,
+and that this Harold had persuaded her to fly with him."
+
+"That is more probable."
+
+"Then the brother--for that, I fancy, must be the relationship--comes
+over from Greece to interfere. He imprudently puts himself into the
+power of the young man and his older associate. They seize him and use
+violence towards him in order to make him sign some papers to make over
+the girl's fortune--of which he may be trustee--to them. This he refuses
+to do. In order to negotiate with him they have to get an interpreter,
+and they pitch upon this Mr. Melas, having used some other one before.
+The girl is not told of the arrival of her brother, and finds it out by
+the merest accident."
+
+"Excellent, Watson!" cried Holmes. "I really fancy that you are not far
+from the truth. You see that we hold all the cards, and we have only to
+fear some sudden act of violence on their part. If they give us time we
+must have them."
+
+"But how can we find where this house lies?"
+
+"Well, if our conjecture is correct and the girl's name is or was Sophy
+Kratides, we should have no difficulty in tracing her. That must be our
+main hope, for the brother is, of course, a complete stranger. It is
+clear that some time has elapsed since this Harold established these
+relations with the girl--some weeks, at any rate--since the brother in
+Greece has had time to hear of it and come across. If they have been
+living in the same place during this time, it is probable that we shall
+have some answer to Mycroft's advertisement."
+
+We had reached our house in Baker Street while we had been talking.
+Holmes ascended the stair first, and as he opened the door of our room
+he gave a start of surprise. Looking over his shoulder, I was equally
+astonished. His brother Mycroft was sitting smoking in the arm-chair.
+
+"Come in, Sherlock! Come in, sir," said he blandly, smiling at our
+surprised faces. "You don't expect such energy from me, do you,
+Sherlock? But somehow this case attracts me."
+
+"How did you get here?"
+
+"I passed you in a hansom."
+
+"There has been some new development?"
+
+"I had an answer to my advertisement."
+
+"Ah!"
+
+"Yes, it came within a few minutes of your leaving."
+
+"And to what effect?"
+
+Mycroft Holmes took out a sheet of paper.
+
+"Here it is," said he, "written with a J pen on royal cream paper by a
+middle-aged man with a weak constitution. 'Sir,' he says, 'in answer to
+your advertisement of to-day's date, I beg to inform you that I know the
+young lady in question very well. If you should care to call upon me I
+could give you some particulars as to her painful history. She is living
+at present at The Myrtles, Beckenham. Yours faithfully, J. Davenport.'
+
+"He writes from Lower Brixton," said Mycroft Holmes. "Do you not think
+that we might drive to him now, Sherlock, and learn these particulars?"
+
+"My dear Mycroft, the brother's life is more valuable than the sister's
+story. I think we should call at Scotland Yard for Inspector Gregson,
+and go straight out to Beckenham. We know that a man is being done to
+death, and every hour may be vital."
+
+"Better pick up Mr. Melas on our way," I suggested. "We may need an
+interpreter."
+
+"Excellent," said Sherlock Holmes. "Send the boy for a four-wheeler, and
+we shall be off at once." He opened the table-drawer as he spoke, and I
+noticed that he slipped his revolver into his pocket. "Yes," said he, in
+answer to my glance; "I should say from what we have heard, that we are
+dealing with a particularly dangerous gang."
+
+It was almost dark before we found ourselves in Pall Mall, at the rooms
+of Mr. Melas. A gentleman had just called for him, and he was gone.
+
+"Can you tell me where?" asked Mycroft Holmes.
+
+"I don't know, sir," answered the woman who had opened the door; "I only
+know that he drove away with the gentleman in a carriage."
+
+"Did the gentleman give a name?"
+
+"No, sir."
+
+"He wasn't a tall, handsome, dark young man?"
+
+"Oh, no, sir. He was a little gentleman, with glasses, thin in the face,
+but very pleasant in his ways, for he was laughing all the time that he
+was talking."
+
+"Come along!" cried Sherlock Holmes, abruptly. "This grows serious,"
+he observed, as we drove to Scotland Yard. "These men have got hold of
+Melas again. He is a man of no physical courage, as they are well
+aware from their experience the other night. This villain was able to
+terrorize him the instant that he got into his presence. No doubt
+they want his professional services, but, having used him, they may be
+inclined to punish him for what they will regard as his treachery."
+
+Our hope was that, by taking train, we might get to Beckenham as soon
+or sooner than the carriage. On reaching Scotland Yard, however, it was
+more than an hour before we could get Inspector Gregson and comply with
+the legal formalities which would enable us to enter the house. It was a
+quarter to ten before we reached London Bridge, and half past before the
+four of us alighted on the Beckenham platform. A drive of half a mile
+brought us to The Myrtles--a large, dark house standing back from the
+road in its own grounds. Here we dismissed our cab, and made our way up
+the drive together.
+
+"The windows are all dark," remarked the inspector. "The house seems
+deserted."
+
+"Our birds are flown and the nest empty," said Holmes.
+
+"Why do you say so?"
+
+"A carriage heavily loaded with luggage has passed out during the last
+hour."
+
+The inspector laughed. "I saw the wheel-tracks in the light of the
+gate-lamp, but where does the luggage come in?"
+
+"You may have observed the same wheel-tracks going the other way. But
+the outward-bound ones were very much deeper--so much so that we can
+say for a certainty that there was a very considerable weight on the
+carriage."
+
+"You get a trifle beyond me there," said the inspector, shrugging his
+shoulder. "It will not be an easy door to force, but we will try if we
+cannot make some one hear us."
+
+He hammered loudly at the knocker and pulled at the bell, but without
+any success. Holmes had slipped away, but he came back in a few minutes.
+
+"I have a window open," said he.
+
+"It is a mercy that you are on the side of the force, and not against
+it, Mr. Holmes," remarked the inspector, as he noted the clever way in
+which my friend had forced back the catch. "Well, I think that under the
+circumstances we may enter without an invitation."
+
+One after the other we made our way into a large apartment, which was
+evidently that in which Mr. Melas had found himself. The inspector
+had lit his lantern, and by its light we could see the two doors, the
+curtain, the lamp, and the suit of Japanese mail as he had described
+them. On the table lay two glasses, and empty brandy-bottle, and the
+remains of a meal.
+
+"What is that?" asked Holmes, suddenly.
+
+We all stood still and listened. A low moaning sound was coming from
+somewhere over our heads. Holmes rushed to the door and out into the
+hall. The dismal noise came from upstairs. He dashed up, the inspector
+and I at his heels, while his brother Mycroft followed as quickly as his
+great bulk would permit.
+
+Three doors faced up upon the second floor, and it was from the central
+of these that the sinister sounds were issuing, sinking sometimes into a
+dull mumble and rising again into a shrill whine. It was locked, but the
+key had been left on the outside. Holmes flung open the door and rushed
+in, but he was out again in an instant, with his hand to his throat.
+
+"It's charcoal," he cried. "Give it time. It will clear."
+
+Peering in, we could see that the only light in the room came from a
+dull blue flame which flickered from a small brass tripod in the centre.
+It threw a livid, unnatural circle upon the floor, while in the shadows
+beyond we saw the vague loom of two figures which crouched against the
+wall. From the open door there reeked a horrible poisonous exhalation
+which set us gasping and coughing. Holmes rushed to the top of the
+stairs to draw in the fresh air, and then, dashing into the room, he
+threw up the window and hurled the brazen tripod out into the garden.
+
+"We can enter in a minute," he gasped, darting out again. "Where is a
+candle? I doubt if we could strike a match in that atmosphere. Hold the
+light at the door and we shall get them out, Mycroft, now!"
+
+With a rush we got to the poisoned men and dragged them out into the
+well-lit hall. Both of them were blue-lipped and insensible, with
+swollen, congested faces and protruding eyes. Indeed, so distorted were
+their features that, save for his black beard and stout figure, we might
+have failed to recognize in one of them the Greek interpreter who had
+parted from us only a few hours before at the Diogenes Club. His hands
+and feet were securely strapped together, and he bore over one eye
+the marks of a violent blow. The other, who was secured in a similar
+fashion, was a tall man in the last stage of emaciation, with several
+strips of sticking-plaster arranged in a grotesque pattern over his
+face. He had ceased to moan as we laid him down, and a glance showed
+me that for him at least our aid had come too late. Mr. Melas, however,
+still lived, and in less than an hour, with the aid of ammonia and
+brandy I had the satisfaction of seeing him open his eyes, and of
+knowing that my hand had drawn him back from that dark valley in which
+all paths meet.
+
+It was a simple story which he had to tell, and one which did but
+confirm our own deductions. His visitor, on entering his rooms, had
+drawn a life-preserver from his sleeve, and had so impressed him with
+the fear of instant and inevitable death that he had kidnapped him for
+the second time. Indeed, it was almost mesmeric, the effect which this
+giggling ruffian had produced upon the unfortunate linguist, for he
+could not speak of him save with trembling hands and a blanched cheek.
+He had been taken swiftly to Beckenham, and had acted as interpreter in
+a second interview, even more dramatic than the first, in which the two
+Englishmen had menaced their prisoner with instant death if he did not
+comply with their demands. Finally, finding him proof against every
+threat, they had hurled him back into his prison, and after
+reproaching Melas with his treachery, which appeared from the newspaper
+advertisement, they had stunned him with a blow from a stick, and he
+remembered nothing more until he found us bending over him.
+
+And this was the singular case of the Grecian Interpreter, the
+explanation of which is still involved in some mystery. We were able
+to find out, by communicating with the gentleman who had answered the
+advertisement, that the unfortunate young lady came of a wealthy Grecian
+family, and that she had been on a visit to some friends in England.
+While there she had met a young man named Harold Latimer, who had
+acquired an ascendancy over he and had eventually persuaded her to fly
+with him. Her friends, shocked at the event, had contented themselves
+with informing her brother at Athens, and had then washed their hands
+of the matter. The brother, on his arrival in England, had imprudently
+placed himself in the power of Latimer and of his associate, whose name
+was Wilson Kemp--a man of the foulest antecedents. These two, finding
+that through his ignorance of the language he was helpless in their
+hands, had kept him a prisoner, and had endeavored by cruelty and
+starvation to make him sign away his own and his sister's property. They
+had kept him in the house without the girl's knowledge, and the plaster
+over the face had been for the purpose of making recognition difficult
+in case she should ever catch a glimpse of him. Her feminine perception,
+however, had instantly seen through the disguise when, on the occasion
+of the interpreter's visit, she had seen him for the first time. The
+poor girl, however, was herself a prisoner, for there was no one about
+the house except the man who acted as coachman, and his wife, both of
+whom were tools of the conspirators. Finding that their secret was out,
+and that their prisoner was not to be coerced, the two villains with the
+girl had fled away at a few hours' notice from the furnished house which
+they had hired, having first, as they thought, taken vengeance both upon
+the man who had defied and the one who had betrayed them.
+
+Months afterwards a curious newspaper cutting reached us from
+Buda-Pesth. It told how two Englishmen who had been traveling with a
+woman had met with a tragic end. They had each been stabbed, it seems,
+and the Hungarian police were of opinion that they had quarreled and had
+inflicted mortal injuries upon each other. Holmes, however, is, I fancy,
+of a different way of thinking, and holds to this day that, if one could
+find the Grecian girl, one might learn how the wrongs of herself and her
+brother came to be avenged.
+
+
+
+
+Adventure X. The Naval Treaty
+
+
+The July which immediately succeeded my marriage was made memorable
+by three cases of interest, in which I had the privilege of being
+associated with Sherlock Holmes and of studying his methods. I find them
+recorded in my notes under the headings of "The Adventure of the Second
+Stain," "The Adventure of the Naval Treaty," and "The Adventure of the
+Tired Captain." The first of these, however, deals with interest of such
+importance and implicates so many of the first families in the kingdom
+that for many years it will be impossible to make it public. No case,
+however, in which Holmes was engaged has ever illustrated the value
+of his analytical methods so clearly or has impressed those who were
+associated with him so deeply. I still retain an almost verbatim report
+of the interview in which he demonstrated the true facts of the case
+to Monsieur Dubugue of the Paris police, and Fritz von Waldbaum, the
+well-known specialist of Dantzig, both of whom had wasted their energies
+upon what proved to be side-issues. The new century will have come,
+however, before the story can be safely told. Meanwhile I pass on to
+the second on my list, which promised also at one time to be of national
+importance, and was marked by several incidents which give it a quite
+unique character.
+
+During my school-days I had been intimately associated with a lad named
+Percy Phelps, who was of much the same age as myself, though he was two
+classes ahead of me. He was a very brilliant boy, and carried away every
+prize which the school had to offer, finished his exploits by winning
+a scholarship which sent him on to continue his triumphant career at
+Cambridge. He was, I remember, extremely well connected, and even when
+we were all little boys together we knew that his mother's brother
+was Lord Holdhurst, the great conservative politician. This gaudy
+relationship did him little good at school. On the contrary, it seemed
+rather a piquant thing to us to chevy him about the playground and hit
+him over the shins with a wicket. But it was another thing when he
+came out into the world. I heard vaguely that his abilities and the
+influences which he commanded had won him a good position at the Foreign
+Office, and then he passed completely out of my mind until the following
+letter recalled his existence:
+
+
+Briarbrae, Woking. My dear Watson,--I have no doubt that you can
+remember "Tadpole" Phelps, who was in the fifth form when you were in
+the third. It is possible even that you may have heard that through my
+uncle's influence I obtained a good appointment at the Foreign Office,
+and that I was in a situation of trust and honor until a horrible
+misfortune came suddenly to blast my career.
+
+There is no use writing of the details of that dreadful event. In the
+event of your acceding to my request it is probably that I shall have
+to narrate them to you. I have only just recovered from nine weeks of
+brain-fever, and am still exceedingly weak. Do you think that you could
+bring your friend Mr. Holmes down to see me? I should like to have his
+opinion of the case, though the authorities assure me that nothing more
+can be done. Do try to bring him down, and as soon as possible. Every
+minute seems an hour while I live in this state of horrible suspense.
+Assure him that if I have not asked his advice sooner it was not because
+I did not appreciate his talents, but because I have been off my head
+ever since the blow fell. Now I am clear again, though I dare not think
+of it too much for fear of a relapse. I am still so weak that I have to
+write, as you see, by dictating. Do try to bring him.
+
+Your old school-fellow,
+
+Percy Phelps.
+
+
+There was something that touched me as I read this letter, something
+pitiable in the reiterated appeals to bring Holmes. So moved was I
+that even had it been a difficult matter I should have tried it, but
+of course I knew well that Holmes loved his art, so that he was ever
+as ready to bring his aid as his client could be to receive it. My wife
+agreed with me that not a moment should be lost in laying the matter
+before him, and so within an hour of breakfast-time I found myself back
+once more in the old rooms in Baker Street.
+
+Holmes was seated at his side-table clad in his dressing-gown, and
+working hard over a chemical investigation. A large curved retort
+was boiling furiously in the bluish flame of a Bunsen burner, and the
+distilled drops were condensing into a two-litre measure. My friend
+hardly glanced up as I entered, and I, seeing that his investigation
+must be of importance, seated myself in an arm-chair and waited. He
+dipped into this bottle or that, drawing out a few drops of each with
+his glass pipette, and finally brought a test-tube containing a solution
+over to the table. In his right hand he held a slip of litmus-paper.
+
+"You come at a crisis, Watson," said he. "If this paper remains blue,
+all is well. If it turns red, it means a man's life." He dipped it into
+the test-tube and it flushed at once into a dull, dirty crimson. "Hum!
+I thought as much!" he cried. "I will be at your service in an instant,
+Watson. You will find tobacco in the Persian slipper." He turned to his
+desk and scribbled off several telegrams, which were handed over to the
+page-boy. Then he threw himself down into the chair opposite, and drew
+up his knees until his fingers clasped round his long, thin shins.
+
+"A very commonplace little murder," said he. "You've got something
+better, I fancy. You are the stormy petrel of crime, Watson. What is
+it?"
+
+I handed him the letter, which he read with the most concentrated
+attention.
+
+"It does not tell us very much, does it?" he remarked, as he handed it
+back to me.
+
+"Hardly anything."
+
+"And yet the writing is of interest."
+
+"But the writing is not his own."
+
+"Precisely. It is a woman's."
+
+"A man's surely," I cried.
+
+"No, a woman's, and a woman of rare character. You see, at the
+commencement of an investigation it is something to know that your
+client is in close contact with some one who, for good or evil, has an
+exceptional nature. My interest is already awakened in the case. If you
+are ready we will start at once for Woking, and see this diplomatist who
+is in such evil case, and the lady to whom he dictates his letters."
+
+We were fortunate enough to catch an early train at Waterloo, and in
+a little under an hour we found ourselves among the fir-woods and
+the heather of Woking. Briarbrae proved to be a large detached house
+standing in extensive grounds within a few minutes' walk of the station.
+On sending in our cards we were shown into an elegantly appointed
+drawing-room, where we were joined in a few minutes by a rather stout
+man who received us with much hospitality. His age may have been nearer
+forty than thirty, but his cheeks were so ruddy and his eyes so merry
+that he still conveyed the impression of a plump and mischievous boy.
+
+"I am so glad that you have come," said he, shaking our hands with
+effusion. "Percy has been inquiring for you all morning. Ah, poor old
+chap, he clings to any straw! His father and his mother asked me to see
+you, for the mere mention of the subject is very painful to them."
+
+"We have had no details yet," observed Holmes. "I perceive that you are
+not yourself a member of the family."
+
+Our acquaintance looked surprised, and then, glancing down, he began to
+laugh.
+
+"Of course you saw the J H monogram on my locket," said he. "For a
+moment I thought you had done something clever. Joseph Harrison is my
+name, and as Percy is to marry my sister Annie I shall at least be a
+relation by marriage. You will find my sister in his room, for she has
+nursed him hand-and-foot this two months back. Perhaps we'd better go in
+at once, for I know how impatient he is."
+
+The chamber in which we were shown was on the same floor as the
+drawing-room. It was furnished partly as a sitting and partly as a
+bedroom, with flowers arranged daintily in every nook and corner. A
+young man, very pale and worn, was lying upon a sofa near the open
+window, through which came the rich scent of the garden and the balmy
+summer air. A woman was sitting beside him, who rose as we entered.
+
+"Shall I leave, Percy?" she asked.
+
+He clutched her hand to detain her. "How are you, Watson?" said he,
+cordially. "I should never have known you under that moustache, and I
+dare say you would not be prepared to swear to me. This I presume is
+your celebrated friend, Mr. Sherlock Holmes?"
+
+I introduced him in a few words, and we both sat down. The stout young
+man had left us, but his sister still remained with her hand in that of
+the invalid. She was a striking-looking woman, a little short and
+thick for symmetry, but with a beautiful olive complexion, large, dark,
+Italian eyes, and a wealth of deep black hair. Her rich tints made the
+white face of her companion the more worn and haggard by the contrast.
+
+"I won't waste your time," said he, raising himself upon the sofa.
+"I'll plunge into the matter without further preamble. I was a happy
+and successful man, Mr. Holmes, and on the eve of being married, when a
+sudden and dreadful misfortune wrecked all my prospects in life.
+
+"I was, as Watson may have told you, in the Foreign Office, and
+through the influences of my uncle, Lord Holdhurst, I rose rapidly to
+a responsible position. When my uncle became foreign minister in this
+administration he gave me several missions of trust, and as I always
+brought them to a successful conclusion, he came at last to have the
+utmost confidence in my ability and tact.
+
+"Nearly ten weeks ago--to be more accurate, on the 23d of May--he called
+me into his private room, and, after complimenting me on the good work
+which I had done, he informed me that he had a new commission of trust
+for me to execute.
+
+"'This,' said he, taking a gray roll of paper from his bureau, 'is the
+original of that secret treaty between England and Italy of which, I
+regret to say, some rumors have already got into the public press. It is
+of enormous importance that nothing further should leak out. The French
+or the Russian embassy would pay an immense sum to learn the contents
+of these papers. They should not leave my bureau were it not that it
+is absolutely necessary to have them copied. You have a desk in your
+office?"
+
+"'Yes, sir.'
+
+"'Then take the treaty and lock it up there. I shall give directions
+that you may remain behind when the others go, so that you may copy
+it at your leisure without fear of being overlooked. When you have
+finished, relock both the original and the draft in the desk, and hand
+them over to me personally to-morrow morning.'
+
+"I took the papers and--"
+
+"Excuse me an instant," said Holmes. "Were you alone during this
+conversation?"
+
+"Absolutely."
+
+"In a large room?"
+
+"Thirty feet each way."
+
+"In the centre?"
+
+"Yes, about it."
+
+"And speaking low?"
+
+"My uncle's voice is always remarkably low. I hardly spoke at all."
+
+"Thank you," said Holmes, shutting his eyes; "pray go on."
+
+"I did exactly what he indicated, and waited until the other clerks had
+departed. One of them in my room, Charles Gorot, had some arrears
+of work to make up, so I left him there and went out to dine. When I
+returned he was gone. I was anxious to hurry my work, for I knew that
+Joseph--the Mr. Harrison whom you saw just now--was in town, and that he
+would travel down to Woking by the eleven-o'clock train, and I wanted if
+possible to catch it.
+
+"When I came to examine the treaty I saw at once that it was of such
+importance that my uncle had been guilty of no exaggeration in what
+he had said. Without going into details, I may say that it defined the
+position of Great Britain towards the Triple Alliance, and fore-shadowed
+the policy which this country would pursue in the event of the
+French fleet gaining a complete ascendancy over that of Italy in the
+Mediterranean. The questions treated in it were purely naval. At the end
+were the signatures of the high dignitaries who had signed it. I glanced
+my eyes over it, and then settled down to my task of copying.
+
+"It was a long document, written in the French language, and containing
+twenty-six separate articles. I copied as quickly as I could, but at
+nine o'clock I had only done nine articles, and it seemed hopeless for
+me to attempt to catch my train. I was feeling drowsy and stupid, partly
+from my dinner and also from the effects of a long day's work. A cup of
+coffee would clear my brain. A commissionnaire remains all night in a
+little lodge at the foot of the stairs, and is in the habit of making
+coffee at his spirit-lamp for any of the officials who may be working
+over time. I rang the bell, therefore, to summon him.
+
+"To my surprise, it was a woman who answered the summons, a large,
+coarse-faced, elderly woman, in an apron. She explained that she was the
+commissionnaire's wife, who did the charing, and I gave her the order
+for the coffee.
+
+"I wrote two more articles and then, feeling more drowsy than ever, I
+rose and walked up and down the room to stretch my legs. My coffee had
+not yet come, and I wondered what was the cause of the delay could be.
+Opening the door, I started down the corridor to find out. There was a
+straight passage, dimly lighted, which led from the room in which I
+had been working, and was the only exit from it. It ended in a curving
+staircase, with the commissionnaire's lodge in the passage at the
+bottom. Half way down this staircase is a small landing, with another
+passage running into it at right angles. This second one leads by means
+of a second small stair to a side door, used by servants, and also as
+a short cut by clerks when coming from Charles Street. Here is a rough
+chart of the place."
+
+"Thank you. I think that I quite follow you," said Sherlock Holmes.
+
+"It is of the utmost importance that you should notice this point.
+I went down the stairs and into the hall, where I found the
+commissionnaire fast asleep in his box, with the kettle boiling
+furiously upon the spirit-lamp. I took off the kettle and blew out the
+lamp, for the water was spurting over the floor. Then I put out my hand
+and was about to shake the man, who was still sleeping soundly, when a
+bell over his head rang loudly, and he woke with a start.
+
+"'Mr. Phelps, sir!' said he, looking at me in bewilderment.
+
+"'I came down to see if my coffee was ready.'
+
+"'I was boiling the kettle when I fell asleep, sir.' He looked at me and
+then up at the still quivering bell with an ever-growing astonishment
+upon his face.
+
+"'If you was here, sir, then who rang the bell?' he asked.
+
+"'The bell!' I cried. 'What bell is it?'
+
+"'It's the bell of the room you were working in.'
+
+"A cold hand seemed to close round my heart. Some one, then, was in that
+room where my precious treaty lay upon the table. I ran frantically up
+the stair and along the passage. There was no one in the corridors, Mr.
+Holmes. There was no one in the room. All was exactly as I left it, save
+only that the papers which had been committed to my care had been taken
+from the desk on which they lay. The copy was there, and the original
+was gone."
+
+Holmes sat up in his chair and rubbed his hands. I could see that the
+problem was entirely to his heart. "Pray, what did you do then?" he
+murmured.
+
+"I recognized in an instant that the thief must have come up the stairs
+from the side door. Of course I must have met him if he had come the
+other way."
+
+"You were satisfied that he could not have been concealed in the room
+all the time, or in the corridor which you have just described as dimly
+lighted?"
+
+"It is absolutely impossible. A rat could not conceal himself either in
+the room or the corridor. There is no cover at all."
+
+"Thank you. Pray proceed."
+
+"The commissionnaire, seeing by my pale face that something was to be
+feared, had followed me upstairs. Now we both rushed along the corridor
+and down the steep steps which led to Charles Street. The door at the
+bottom was closed, but unlocked. We flung it open and rushed out. I can
+distinctly remember that as we did so there came three chimes from a
+neighboring clock. It was quarter to ten."
+
+"That is of enormous importance," said Holmes, making a note upon his
+shirt-cuff.
+
+"The night was very dark, and a thin, warm rain was falling. There was
+no one in Charles Street, but a great traffic was going on, as usual, in
+Whitehall, at the extremity. We rushed along the pavement, bare-headed
+as we were, and at the far corner we found a policeman standing.
+
+"'A robbery has been committed,' I gasped. 'A document of immense value
+has been stolen from the Foreign Office. Has any one passed this way?'
+
+"'I have been standing here for a quarter of an hour, sir,' said he;
+'only one person has passed during that time--a woman, tall and elderly,
+with a Paisley shawl.'
+
+"'Ah, that is only my wife,' cried the commissionnaire; 'has no one else
+passed?'
+
+"'No one.'
+
+"'Then it must be the other way that the thief took,' cried the fellow,
+tugging at my sleeve.
+
+"'But I was not satisfied, and the attempts which he made to draw me
+away increased my suspicions.
+
+"'Which way did the woman go?' I cried.
+
+"'I don't know, sir. I noticed her pass, but I had no special reason for
+watching her. She seemed to be in a hurry.'
+
+"'How long ago was it?'
+
+"'Oh, not very many minutes.'
+
+"'Within the last five?'
+
+"'Well, it could not be more than five.'
+
+"'You're only wasting your time, sir, and every minute now is of
+importance,' cried the commissionnaire; 'take my word for it that my old
+woman has nothing to do with it, and come down to the other end of the
+street. Well, if you won't, I will.' And with that he rushed off in the
+other direction.
+
+"But I was after him in an instant and caught him by the sleeve.
+
+"'Where do you live?' said I.
+
+"'16 Ivy Lane, Brixton,' he answered. 'But don't let yourself be drawn
+away upon a false scent, Mr. Phelps. Come to the other end of the street
+and let us see if we can hear of anything.'
+
+"Nothing was to be lost by following his advice. With the policeman we
+both hurried down, but only to find the street full of traffic, many
+people coming and going, but all only too eager to get to a place of
+safety upon so wet a night. There was no lounger who could tell us who
+had passed.
+
+"Then we returned to the office, and searched the stairs and the passage
+without result. The corridor which led to the room was laid down with
+a kind of creamy linoleum which shows an impression very easily. We
+examined it very carefully, but found no outline of any footmark."
+
+"Had it been raining all evening?"
+
+"Since about seven."
+
+"How is it, then, that the woman who came into the room about nine left
+no traces with her muddy boots?"
+
+"I am glad you raised the point. It occurred to me at the time.
+The charwomen are in the habit of taking off their boots at the
+commissionnaire's office, and putting on list slippers."
+
+"That is very clear. There were no marks, then, though the night was a
+wet one? The chain of events is certainly one of extraordinary interest.
+What did you do next?
+
+"We examined the room also. There is no possibility of a secret door,
+and the windows are quite thirty feet from the ground. Both of them
+were fastened on the inside. The carpet prevents any possibility of a
+trap-door, and the ceiling is of the ordinary whitewashed kind. I will
+pledge my life that whoever stole my papers could only have come through
+the door."
+
+"How about the fireplace?"
+
+"They use none. There is a stove. The bell-rope hangs from the wire just
+to the right of my desk. Whoever rang it must have come right up to the
+desk to do it. But why should any criminal wish to ring the bell? It is
+a most insoluble mystery."
+
+"Certainly the incident was unusual. What were your next steps? You
+examined the room, I presume, to see if the intruder had left any
+traces--any cigar-end or dropped glove or hairpin or other trifle?"
+
+"There was nothing of the sort."
+
+"No smell?"
+
+"Well, we never thought of that."
+
+"Ah, a scent of tobacco would have been worth a great deal to us in such
+an investigation."
+
+"I never smoke myself, so I think I should have observed it if there had
+been any smell of tobacco. There was absolutely no clue of any kind. The
+only tangible fact was that the commissionnaire's wife--Mrs. Tangey was
+the name--had hurried out of the place. He could give no explanation
+save that it was about the time when the woman always went home. The
+policeman and I agreed that our best plan would be to seize the woman
+before she could get rid of the papers, presuming that she had them.
+
+"The alarm had reached Scotland Yard by this time, and Mr. Forbes, the
+detective, came round at once and took up the case with a great deal of
+energy. We hired a hansom, and in half an hour we were at the address
+which had been given to us. A young woman opened the door, who proved to
+be Mrs. Tangey's eldest daughter. Her mother had not come back yet, and
+we were shown into the front room to wait.
+
+"About ten minutes later a knock came at the door, and here we made the
+one serious mistake for which I blame myself. Instead of opening the
+door ourselves, we allowed the girl to do so. We heard her say, 'Mother,
+there are two men in the house waiting to see you,' and an instant
+afterwards we heard the patter of feet rushing down the passage. Forbes
+flung open the door, and we both ran into the back room or kitchen, but
+the woman had got there before us. She stared at us with defiant
+eyes, and then, suddenly recognizing me, an expression of absolute
+astonishment came over her face.
+
+"'Why, if it isn't Mr. Phelps, of the office!' she cried.
+
+"'Come, come, who did you think we were when you ran away from us?'
+asked my companion.
+
+"'I thought you were the brokers,' said she, 'we have had some trouble
+with a tradesman.'
+
+"'That's not quite good enough,' answered Forbes. 'We have reason to
+believe that you have taken a paper of importance from the Foreign
+Office, and that you ran in here to dispose of it. You must come back
+with us to Scotland Yard to be searched.'
+
+"It was in vain that she protested and resisted. A four-wheeler was
+brought, and we all three drove back in it. We had first made an
+examination of the kitchen, and especially of the kitchen fire, to see
+whether she might have made away with the papers during the instant that
+she was alone. There were no signs, however, of any ashes or scraps.
+When we reached Scotland Yard she was handed over at once to the female
+searcher. I waited in an agony of suspense until she came back with her
+report. There were no signs of the papers.
+
+"Then for the first time the horror of my situation came in its full
+force. Hitherto I had been acting, and action had numbed thought. I had
+been so confident of regaining the treaty at once that I had not dared
+to think of what would be the consequence if I failed to do so. But
+now there was nothing more to be done, and I had leisure to realize
+my position. It was horrible. Watson there would tell you that I was a
+nervous, sensitive boy at school. It is my nature. I thought of my uncle
+and of his colleagues in the Cabinet, of the shame which I had brought
+upon him, upon myself, upon every one connected with me. What though I
+was the victim of an extraordinary accident? No allowance is made
+for accidents where diplomatic interests are at stake. I was ruined,
+shamefully, hopelessly ruined. I don't know what I did. I fancy I must
+have made a scene. I have a dim recollection of a group of officials who
+crowded round me, endeavoring to soothe me. One of them drove down with
+me to Waterloo, and saw me into the Woking train. I believe that he
+would have come all the way had it not been that Dr. Ferrier, who lives
+near me, was going down by that very train. The doctor most kindly took
+charge of me, and it was well he did so, for I had a fit in the station,
+and before we reached home I was practically a raving maniac.
+
+"You can imagine the state of things here when they were roused from
+their beds by the doctor's ringing and found me in this condition. Poor
+Annie here and my mother were broken-hearted. Dr. Ferrier had just heard
+enough from the detective at the station to be able to give an idea of
+what had happened, and his story did not mend matters. It was evident to
+all that I was in for a long illness, so Joseph was bundled out of this
+cheery bedroom, and it was turned into a sick-room for me. Here I have
+lain, Mr. Holmes, for over nine weeks, unconscious, and raving with
+brain-fever. If it had not been for Miss Harrison here and for the
+doctor's care I should not be speaking to you now. She has nursed me by
+day and a hired nurse has looked after me by night, for in my mad fits
+I was capable of anything. Slowly my reason has cleared, but it is only
+during the last three days that my memory has quite returned. Sometimes
+I wish that it never had. The first thing that I did was to wire to
+Mr. Forbes, who had the case in hand. He came out, and assures me that,
+though everything has been done, no trace of a clue has been discovered.
+The commissionnaire and his wife have been examined in every way without
+any light being thrown upon the matter. The suspicions of the police
+then rested upon young Gorot, who, as you may remember, stayed over time
+in the office that night. His remaining behind and his French name were
+really the only two points which could suggest suspicion; but, as a
+matter of fact, I did not begin work until he had gone, and his people
+are of Huguenot extraction, but as English in sympathy and tradition as
+you and I are. Nothing was found to implicate him in any way, and there
+the matter dropped. I turn to you, Mr. Holmes, as absolutely my last
+hope. If you fail me, then my honor as well as my position are forever
+forfeited."
+
+The invalid sank back upon his cushions, tired out by this long recital,
+while his nurse poured him out a glass of some stimulating medicine.
+Holmes sat silently, with his head thrown back and his eyes closed, in
+an attitude which might seem listless to a stranger, but which I knew
+betokened the most intense self-absorption.
+
+"You statement has been so explicit," said he at last, "that you have
+really left me very few questions to ask. There is one of the very
+utmost importance, however. Did you tell any one that you had this
+special task to perform?"
+
+"No one."
+
+"Not Miss Harrison here, for example?"
+
+"No. I had not been back to Woking between getting the order and
+executing the commission."
+
+"And none of your people had by chance been to see you?"
+
+"None."
+
+"Did any of them know their way about in the office?"
+
+"Oh, yes, all of them had been shown over it."
+
+"Still, of course, if you said nothing to any one about the treaty these
+inquiries are irrelevant."
+
+"I said nothing."
+
+"Do you know anything of the commissionnaire?"
+
+"Nothing except that he is an old soldier."
+
+"What regiment?"
+
+"Oh, I have heard--Coldstream Guards."
+
+"Thank you. I have no doubt I can get details from Forbes. The
+authorities are excellent at amassing facts, though they do not always
+use them to advantage. What a lovely thing a rose is!"
+
+He walked past the couch to the open window, and held up the drooping
+stalk of a moss-rose, looking down at the dainty blend of crimson and
+green. It was a new phase of his character to me, for I had never before
+seen him show any keen interest in natural objects.
+
+"There is nothing in which deduction is so necessary as in religion,"
+said he, leaning with his back against the shutters. "It can be built
+up as an exact science by the reasoner. Our highest assurance of the
+goodness of Providence seems to me to rest in the flowers. All other
+things, our powers our desires, our food, are all really necessary for
+our existence in the first instance. But this rose is an extra. Its
+smell and its color are an embellishment of life, not a condition of it.
+It is only goodness which gives extras, and so I say again that we have
+much to hope from the flowers."
+
+Percy Phelps and his nurse looked at Holmes during this demonstration
+with surprise and a good deal of disappointment written upon their
+faces. He had fallen into a reverie, with the moss-rose between his
+fingers. It had lasted some minutes before the young lady broke in upon
+it.
+
+"Do you see any prospect of solving this mystery, Mr. Holmes?" she
+asked, with a touch of asperity in her voice.
+
+"Oh, the mystery!" he answered, coming back with a start to the
+realities of life. "Well, it would be absurd to deny that the case is
+a very abstruse and complicated one, but I can promise you that I will
+look into the matter and let you know any points which may strike me."
+
+"Do you see any clue?"
+
+"You have furnished me with seven, but, of course, I must test them
+before I can pronounce upon their value."
+
+"You suspect some one?"
+
+"I suspect myself."
+
+"What!"
+
+"Of coming to conclusions too rapidly."
+
+"Then go to London and test your conclusions."
+
+"Your advice is very excellent, Miss Harrison," said Holmes, rising. "I
+think, Watson, we cannot do better. Do not allow yourself to indulge in
+false hopes, Mr. Phelps. The affair is a very tangled one."
+
+"I shall be in a fever until I see you again," cried the diplomatist.
+
+"Well, I'll come out by the same train to-morrow, though it's more than
+likely that my report will be a negative one."
+
+"God bless you for promising to come," cried our client. "It gives me
+fresh life to know that something is being done. By the way, I have had
+a letter from Lord Holdhurst."
+
+"Ha! What did he say?"
+
+"He was cold, but not harsh. I dare say my severe illness prevented
+him from being that. He repeated that the matter was of the utmost
+importance, and added that no steps would be taken about my future--by
+which he means, of course, my dismissal--until my health was restored
+and I had an opportunity of repairing my misfortune."
+
+"Well, that was reasonable and considerate," said Holmes. "Come, Watson,
+for we have a good day's work before us in town."
+
+Mr. Joseph Harrison drove us down to the station, and we were soon
+whirling up in a Portsmouth train. Holmes was sunk in profound thought,
+and hardly opened his mouth until we had passed Clapham Junction.
+
+"It's a very cheery thing to come into London by any of these lines
+which run high, and allow you to look down upon the houses like this."
+
+I thought he was joking, for the view was sordid enough, but he soon
+explained himself.
+
+"Look at those big, isolated clumps of building rising up above the
+slates, like brick islands in a lead-colored sea."
+
+"The board-schools."
+
+"Light-houses, my boy! Beacons of the future! Capsules with hundreds of
+bright little seeds in each, out of which will spring the wise, better
+England of the future. I suppose that man Phelps does not drink?"
+
+"I should not think so."
+
+"Nor should I, but we are bound to take every possibility into account.
+The poor devil has certainly got himself into very deep water, and it's
+a question whether we shall ever be able to get him ashore. What did you
+think of Miss Harrison?"
+
+"A girl of strong character."
+
+"Yes, but she is a good sort, or I am mistaken. She and her brother are
+the only children of an iron-master somewhere up Northumberland way. He
+got engaged to her when traveling last winter, and she came down to
+be introduced to his people, with her brother as escort. Then came
+the smash, and she stayed on to nurse her lover, while brother Joseph,
+finding himself pretty snug, stayed on too. I've been making a few
+independent inquiries, you see. But to-day must be a day of inquiries."
+
+"My practice--" I began.
+
+"Oh, if you find your own cases more interesting than mine--" said
+Holmes, with some asperity.
+
+"I was going to say that my practice could get along very well for a day
+or two, since it is the slackest time in the year."
+
+"Excellent," said he, recovering his good-humor. "Then we'll look into
+this matter together. I think that we should begin by seeing Forbes.
+He can probably tell us all the details we want until we know from what
+side the case is to be approached."
+
+"You said you had a clue?"
+
+"Well, we have several, but we can only test their value by further
+inquiry. The most difficult crime to track is the one which is
+purposeless. Now this is not purposeless. Who is it who profits by it?
+There is the French ambassador, there is the Russian, there is whoever
+might sell it to either of these, and there is Lord Holdhurst."
+
+"Lord Holdhurst!"
+
+"Well, it is just conceivable that a statesman might find himself in
+a position where he was not sorry to have such a document accidentally
+destroyed."
+
+"Not a statesman with the honorable record of Lord Holdhurst?"
+
+"It is a possibility and we cannot afford to disregard it. We shall see
+the noble lord to-day and find out if he can tell us anything. Meanwhile
+I have already set inquiries on foot."
+
+"Already?"
+
+"Yes, I sent wires from Woking station to every evening paper in London.
+This advertisement will appear in each of them."
+
+He handed over a sheet torn from a note-book. On it was scribbled in
+pencil: "L10 reward. The number of the cab which dropped a fare at or
+about the door of the Foreign Office in Charles Street at quarter to ten
+in the evening of May 23d. Apply 221 B, Baker Street."
+
+"You are confident that the thief came in a cab?"
+
+"If not, there is no harm done. But if Mr. Phelps is correct in stating
+that there is no hiding-place either in the room or the corridors, then
+the person must have come from outside. If he came from outside on so
+wet a night, and yet left no trace of damp upon the linoleum, which
+was examined within a few minutes of his passing, then it is exceeding
+probable that he came in a cab. Yes, I think that we may safely deduce a
+cab."
+
+"It sounds plausible."
+
+"That is one of the clues of which I spoke. It may lead us to something.
+And then, of course, there is the bell--which is the most distinctive
+feature of the case. Why should the bell ring? Was it the thief who did
+it out of bravado? Or was it some one who was with the thief who did it
+in order to prevent the crime? Or was it an accident? Or was it--?" He
+sank back into the state of intense and silent thought from which he
+had emerged; but it seemed to me, accustomed as I was to his every mood,
+that some new possibility had dawned suddenly upon him.
+
+It was twenty past three when we reached our terminus, and after a hasty
+luncheon at the buffet we pushed on at once to Scotland Yard. Holmes
+had already wired to Forbes, and we found him waiting to receive us--a
+small, foxy man with a sharp but by no means amiable expression. He
+was decidedly frigid in his manner to us, especially when he heard the
+errand upon which we had come.
+
+"I've heard of your methods before now, Mr. Holmes," said he, tartly.
+"You are ready enough to use all the information that the police can lay
+at your disposal, and then you try to finish the case yourself and bring
+discredit on them."
+
+"On the contrary," said Holmes, "out of my last fifty-three cases my
+name has only appeared in four, and the police have had all the credit
+in forty-nine. I don't blame you for not knowing this, for you are young
+and inexperienced, but if you wish to get on in your new duties you will
+work with me and not against me."
+
+"I'd be very glad of a hint or two," said the detective, changing his
+manner. "I've certainly had no credit from the case so far."
+
+"What steps have you taken?"
+
+"Tangey, the commissionnaire, has been shadowed. He left the Guards with
+a good character and we can find nothing against him. His wife is a bad
+lot, though. I fancy she knows more about this than appears."
+
+"Have you shadowed her?"
+
+"We have set one of our women on to her. Mrs. Tangey drinks, and our
+woman has been with her twice when she was well on, but she could get
+nothing out of her."
+
+"I understand that they have had brokers in the house?"
+
+"Yes, but they were paid off."
+
+"Where did the money come from?"
+
+"That was all right. His pension was due. They have not shown any sign
+of being in funds."
+
+"What explanation did she give of having answered the bell when Mr.
+Phelps rang for the coffee?"
+
+"She said that he husband was very tired and she wished to relieve him."
+
+"Well, certainly that would agree with his being found a little later
+asleep in his chair. There is nothing against them then but the woman's
+character. Did you ask her why she hurried away that night? Her haste
+attracted the attention of the police constable."
+
+"She was later than usual and wanted to get home."
+
+"Did you point out to her that you and Mr. Phelps, who started at least
+twenty minutes after her, got home before her?"
+
+"She explains that by the difference between a 'bus and a hansom."
+
+"Did she make it clear why, on reaching her house, she ran into the back
+kitchen?"
+
+"Because she had the money there with which to pay off the brokers."
+
+"She has at least an answer for everything. Did you ask her whether in
+leaving she met any one or saw any one loitering about Charles Street?"
+
+"She saw no one but the constable."
+
+"Well, you seem to have cross-examined her pretty thoroughly. What else
+have you done?"
+
+"The clerk Gorot has been shadowed all these nine weeks, but without
+result. We can show nothing against him."
+
+"Anything else?"
+
+"Well, we have nothing else to go upon--no evidence of any kind."
+
+"Have you formed a theory about how that bell rang?"
+
+"Well, I must confess that it beats me. It was a cool hand, whoever it
+was, to go and give the alarm like that."
+
+"Yes, it was queer thing to do. Many thanks to you for what you have
+told me. If I can put the man into your hands you shall hear from me.
+Come along, Watson."
+
+"Where are we going to now?" I asked, as we left the office.
+
+"We are now going to interview Lord Holdhurst, the cabinet minister and
+future premier of England."
+
+We were fortunate in finding that Lord Holdhurst was still in his
+chambers in Downing Street, and on Holmes sending in his card we were
+instantly shown up. The statesman received us with that old-fashioned
+courtesy for which he is remarkable, and seated us on the two luxuriant
+lounges on either side of the fireplace. Standing on the rug between us,
+with his slight, tall figure, his sharp features, thoughtful face, and
+curling hair prematurely tinged with gray, he seemed to represent that
+not too common type, a nobleman who is in truth noble.
+
+"Your name is very familiar to me, Mr. Holmes," said he, smiling. "And,
+of course, I cannot pretend to be ignorant of the object of your visit.
+There has only been one occurrence in these offices which could call for
+your attention. In whose interest are you acting, may I ask?"
+
+"In that of Mr. Percy Phelps," answered Holmes.
+
+"Ah, my unfortunate nephew! You can understand that our kinship makes
+it the more impossible for me to screen him in any way. I fear that the
+incident must have a very prejudicial effect upon his career."
+
+"But if the document is found?"
+
+"Ah, that, of course, would be different."
+
+"I had one or two questions which I wished to ask you, Lord Holdhurst."
+
+"I shall be happy to give you any information in my power."
+
+"Was it in this room that you gave your instructions as to the copying
+of the document?"
+
+"It was."
+
+"Then you could hardly have been overheard?"
+
+"It is out of the question."
+
+"Did you ever mention to any one that it was your intention to give any
+one the treaty to be copied?"
+
+"Never."
+
+"You are certain of that?"
+
+"Absolutely."
+
+"Well, since you never said so, and Mr. Phelps never said so, and nobody
+else knew anything of the matter, then the thief's presence in the room
+was purely accidental. He saw his chance and he took it."
+
+The statesman smiled. "You take me out of my province there," said he.
+
+Holmes considered for a moment. "There is another very important
+point which I wish to discuss with you," said he. "You feared, as I
+understand, that very grave results might follow from the details of
+this treaty becoming known."
+
+A shadow passed over the expressive face of the statesman. "Very grave
+results indeed."
+
+"Any have they occurred?"
+
+"Not yet."
+
+"If the treaty had reached, let us say, the French or Russian Foreign
+Office, you would expect to hear of it?"
+
+"I should," said Lord Holdhurst, with a wry face.
+
+"Since nearly ten weeks have elapsed, then, and nothing has been heard,
+it is not unfair to suppose that for some reason the treaty has not
+reached them."
+
+Lord Holdhurst shrugged his shoulders.
+
+"We can hardly suppose, Mr. Holmes, that the thief took the treaty in
+order to frame it and hang it up."
+
+"Perhaps he is waiting for a better price."
+
+"If he waits a little longer he will get no price at all. The treaty
+will cease to be secret in a few months."
+
+"That is most important," said Holmes. "Of course, it is a possible
+supposition that the thief has had a sudden illness--"
+
+"An attack of brain-fever, for example?" asked the statesman, flashing a
+swift glance at him.
+
+"I did not say so," said Holmes, imperturbably. "And now, Lord
+Holdhurst, we have already taken up too much of your valuable time, and
+we shall wish you good-day."
+
+"Every success to your investigation, be the criminal who it may,"
+answered the nobleman, as he bowed us out the door.
+
+"He's a fine fellow," said Holmes, as we came out into Whitehall. "But
+he has a struggle to keep up his position. He is far from rich and has
+many calls. You noticed, of course, that his boots had been resoled.
+Now, Watson, I won't detain you from your legitimate work any longer.
+I shall do nothing more to-day, unless I have an answer to my cab
+advertisement. But I should be extremely obliged to you if you would
+come down with me to Woking to-morrow, by the same train which we took
+yesterday."
+
+
+I met him accordingly next morning and we traveled down to Woking
+together. He had had no answer to his advertisement, he said, and no
+fresh light had been thrown upon the case. He had, when he so willed
+it, the utter immobility of countenance of a red Indian, and I could
+not gather from his appearance whether he was satisfied or not with
+the position of the case. His conversation, I remember, was about the
+Bertillon system of measurements, and he expressed his enthusiastic
+admiration of the French savant.
+
+We found our client still under the charge of his devoted nurse, but
+looking considerably better than before. He rose from the sofa and
+greeted us without difficulty when we entered.
+
+"Any news?" he asked, eagerly.
+
+"My report, as I expected, is a negative one," said Holmes. "I have seen
+Forbes, and I have seen your uncle, and I have set one or two trains of
+inquiry upon foot which may lead to something."
+
+"You have not lost heart, then?"
+
+"By no means."
+
+"God bless you for saying that!" cried Miss Harrison. "If we keep our
+courage and our patience the truth must come out."
+
+"We have more to tell you than you have for us," said Phelps, reseating
+himself upon the couch.
+
+"I hoped you might have something."
+
+"Yes, we have had an adventure during the night, and one which might
+have proved to be a serious one." His expression grew very grave as he
+spoke, and a look of something akin to fear sprang up in his eyes. "Do
+you know," said he, "that I begin to believe that I am the unconscious
+centre of some monstrous conspiracy, and that my life is aimed at as
+well as my honor?"
+
+"Ah!" cried Holmes.
+
+"It sounds incredible, for I have not, as far as I know, an enemy in
+the world. Yet from last night's experience I can come to no other
+conclusion."
+
+"Pray let me hear it."
+
+"You must know that last night was the very first night that I have ever
+slept without a nurse in the room. I was so much better that I thought
+I could dispense with one. I had a night-light burning, however. Well,
+about two in the morning I had sunk into a light sleep when I was
+suddenly aroused by a slight noise. It was like the sound which a mouse
+makes when it is gnawing a plank, and I lay listening to it for some
+time under the impression that it must come from that cause. Then it
+grew louder, and suddenly there came from the window a sharp metallic
+snick. I sat up in amazement. There could be no doubt what the sounds
+were now. The first ones had been caused by some one forcing an
+instrument through the slit between the sashes, and the second by the
+catch being pressed back.
+
+"There was a pause then for about ten minutes, as if the person were
+waiting to see whether the noise had awakened me. Then I heard a gentle
+creaking as the window was very slowly opened. I could stand it no
+longer, for my nerves are not what they used to be. I sprang out of bed
+and flung open the shutters. A man was crouching at the window. I could
+see little of him, for he was gone like a flash. He was wrapped in some
+sort of cloak which came across the lower part of his face. One thing
+only I am sure of, and that is that he had some weapon in his hand. It
+looked to me like a long knife. I distinctly saw the gleam of it as he
+turned to run."
+
+"This is most interesting," said Holmes. "Pray what did you do then?"
+
+"I should have followed him through the open window if I had been
+stronger. As it was, I rang the bell and roused the house. It took me
+some little time, for the bell rings in the kitchen and the servants all
+sleep upstairs. I shouted, however, and that brought Joseph down, and he
+roused the others. Joseph and the groom found marks on the bed outside
+the window, but the weather has been so dry lately that they found it
+hopeless to follow the trail across the grass. There's a place, however,
+on the wooden fence which skirts the road which shows signs, they tell
+me, as if some one had got over, and had snapped the top of the rail in
+doing so. I have said nothing to the local police yet, for I thought I
+had best have your opinion first."
+
+This tale of our client's appeared to have an extraordinary effect upon
+Sherlock Holmes. He rose from his chair and paced about the room in
+uncontrollable excitement.
+
+"Misfortunes never come single," said Phelps, smiling, though it was
+evident that his adventure had somewhat shaken him.
+
+"You have certainly had your share," said Holmes. "Do you think you
+could walk round the house with me?"
+
+"Oh, yes, I should like a little sunshine. Joseph will come, too."
+
+"And I also," said Miss Harrison.
+
+"I am afraid not," said Holmes, shaking his head. "I think I must ask
+you to remain sitting exactly where you are."
+
+The young lady resumed her seat with an air of displeasure. Her brother,
+however, had joined us and we set off all four together. We passed round
+the lawn to the outside of the young diplomatist's window. There were,
+as he had said, marks upon the bed, but they were hopelessly blurred and
+vague. Holmes stopped over them for an instant, and then rose shrugging
+his shoulders.
+
+"I don't think any one could make much of this," said he. "Let us go
+round the house and see why this particular room was chosen by the
+burglar. I should have thought those larger windows of the drawing-room
+and dining-room would have had more attractions for him."
+
+"They are more visible from the road," suggested Mr. Joseph Harrison.
+
+"Ah, yes, of course. There is a door here which he might have attempted.
+What is it for?"
+
+"It is the side entrance for trades-people. Of course it is locked at
+night."
+
+"Have you ever had an alarm like this before?"
+
+"Never," said our client.
+
+"Do you keep plate in the house, or anything to attract burglars?"
+
+"Nothing of value."
+
+Holmes strolled round the house with his hands in his pockets and a
+negligent air which was unusual with him.
+
+"By the way," said he to Joseph Harrison, "you found some place, I
+understand, where the fellow scaled the fence. Let us have a look at
+that!"
+
+The plump young man led us to a spot where the top of one of the wooden
+rails had been cracked. A small fragment of the wood was hanging down.
+Holmes pulled it off and examined it critically.
+
+"Do you think that was done last night? It looks rather old, does it
+not?"
+
+"Well, possibly so."
+
+"There are no marks of any one jumping down upon the other side. No, I
+fancy we shall get no help here. Let us go back to the bedroom and talk
+the matter over."
+
+Percy Phelps was walking very slowly, leaning upon the arm of his future
+brother-in-law. Holmes walked swiftly across the lawn, and we were at
+the open window of the bedroom long before the others came up.
+
+"Miss Harrison," said Holmes, speaking with the utmost intensity of
+manner, "you must stay where you are all day. Let nothing prevent you
+from staying where you are all day. It is of the utmost importance."
+
+"Certainly, if you wish it, Mr. Holmes," said the girl in astonishment.
+
+"When you go to bed lock the door of this room on the outside and keep
+the key. Promise to do this."
+
+"But Percy?"
+
+"He will come to London with us."
+
+"And am I to remain here?"
+
+"It is for his sake. You can serve him. Quick! Promise!"
+
+She gave a quick nod of assent just as the other two came up.
+
+"Why do you sit moping there, Annie?" cried her brother. "Come out into
+the sunshine!"
+
+"No, thank you, Joseph. I have a slight headache and this room is
+deliciously cool and soothing."
+
+"What do you propose now, Mr. Holmes?" asked our client.
+
+"Well, in investigating this minor affair we must not lose sight of our
+main inquiry. It would be a very great help to me if you would come up
+to London with us."
+
+"At once?"
+
+"Well, as soon as you conveniently can. Say in an hour."
+
+"I feel quite strong enough, if I can really be of any help."
+
+"The greatest possible."
+
+"Perhaps you would like me to stay there to-night?"
+
+"I was just going to propose it."
+
+"Then, if my friend of the night comes to revisit me, he will find the
+bird flown. We are all in your hands, Mr. Holmes, and you must tell us
+exactly what you would like done. Perhaps you would prefer that Joseph
+came with us so as to look after me?"
+
+"Oh, no; my friend Watson is a medical man, you know, and he'll look
+after you. We'll have our lunch here, if you will permit us, and then we
+shall all three set off for town together."
+
+It was arranged as he suggested, though Miss Harrison excused herself
+from leaving the bedroom, in accordance with Holmes's suggestion. What
+the object of my friend's manoeuvres was I could not conceive, unless it
+were to keep the lady away from Phelps, who, rejoiced by his
+returning health and by the prospect of action, lunched with us in the
+dining-room. Holmes had a still more startling surprise for us, however,
+for, after accompanying us down to the station and seeing us into
+our carriage, he calmly announced that he had no intention of leaving
+Woking.
+
+"There are one or two small points which I should desire to clear up
+before I go," said he. "Your absence, Mr. Phelps, will in some ways
+rather assist me. Watson, when you reach London you would oblige me by
+driving at once to Baker Street with our friend here, and remaining
+with him until I see you again. It is fortunate that you are old
+school-fellows, as you must have much to talk over. Mr. Phelps can
+have the spare bedroom to-night, and I will be with you in time for
+breakfast, for there is a train which will take me into Waterloo at
+eight."
+
+"But how about our investigation in London?" asked Phelps, ruefully.
+
+"We can do that to-morrow. I think that just at present I can be of more
+immediate use here."
+
+"You might tell them at Briarbrae that I hope to be back to-morrow
+night," cried Phelps, as we began to move from the platform.
+
+"I hardly expect to go back to Briarbrae," answered Holmes, and waved
+his hand to us cheerily as we shot out from the station.
+
+Phelps and I talked it over on our journey, but neither of us could
+devise a satisfactory reason for this new development.
+
+"I suppose he wants to find out some clue as to the burglary last night,
+if a burglar it was. For myself, I don't believe it was an ordinary
+thief."
+
+"What is your own idea, then?"
+
+"Upon my word, you may put it down to my weak nerves or not, but I
+believe there is some deep political intrigue going on around me, and
+that for some reason that passes my understanding my life is aimed at
+by the conspirators. It sounds high-flown and absurd, but consider the
+facts! Why should a thief try to break in at a bedroom window, where
+there could be no hope of any plunder, and why should he come with a
+long knife in his hand?"
+
+"You are sure it was not a house-breaker's jimmy?"
+
+"Oh, no, it was a knife. I saw the flash of the blade quite distinctly."
+
+"But why on earth should you be pursued with such animosity?"
+
+"Ah, that is the question."
+
+"Well, if Holmes takes the same view, that would account for his action,
+would it not? Presuming that your theory is correct, if he can lay his
+hands upon the man who threatened you last night he will have gone a
+long way towards finding who took the naval treaty. It is absurd to
+suppose that you have two enemies, one of whom robs you, while the other
+threatens your life."
+
+"But Holmes said that he was not going to Briarbrae."
+
+"I have known him for some time," said I, "but I never knew him do
+anything yet without a very good reason," and with that our conversation
+drifted off on to other topics.
+
+But it was a weary day for me. Phelps was still weak after his long
+illness, and his misfortune made him querulous and nervous. In vain
+I endeavored to interest him in Afghanistan, in India, in social
+questions, in anything which might take his mind out of the groove.
+He would always come back to his lost treaty, wondering, guessing,
+speculating, as to what Holmes was doing, what steps Lord Holdhurst was
+taking, what news we should have in the morning. As the evening wore on
+his excitement became quite painful.
+
+"You have implicit faith in Holmes?" he asked.
+
+"I have seen him do some remarkable things."
+
+"But he never brought light into anything quite so dark as this?"
+
+"Oh, yes; I have known him solve questions which presented fewer clues
+than yours."
+
+"But not where such large interests are at stake?"
+
+"I don't know that. To my certain knowledge he has acted on behalf of
+three of the reigning houses of Europe in very vital matters."
+
+"But you know him well, Watson. He is such an inscrutable fellow that I
+never quite know what to make of him. Do you think he is hopeful? Do you
+think he expects to make a success of it?"
+
+"He has said nothing."
+
+"That is a bad sign."
+
+"On the contrary, I have noticed that when he is off the trail he
+generally says so. It is when he is on a scent and is not quite
+absolutely sure yet that it is the right one that he is most taciturn.
+Now, my dear fellow, we can't help matters by making ourselves nervous
+about them, so let me implore you to go to bed and so be fresh for
+whatever may await us to-morrow."
+
+I was able at last to persuade my companion to take my advice, though I
+knew from his excited manner that there was not much hope of sleep for
+him. Indeed, his mood was infectious, for I lay tossing half the night
+myself, brooding over this strange problem, and inventing a hundred
+theories, each of which was more impossible than the last. Why had
+Holmes remained at Woking? Why had he asked Miss Harrison to remain
+in the sick-room all day? Why had he been so careful not to inform the
+people at Briarbrae that he intended to remain near them? I cudgelled
+my brains until I fell asleep in the endeavor to find some explanation
+which would cover all these facts.
+
+It was seven o'clock when I awoke, and I set off at once for Phelps's
+room, to find him haggard and spent after a sleepless night. His first
+question was whether Holmes had arrived yet.
+
+"He'll be here when he promised," said I, "and not an instant sooner or
+later."
+
+And my words were true, for shortly after eight a hansom dashed up to
+the door and our friend got out of it. Standing in the window we saw
+that his left hand was swathed in a bandage and that his face was very
+grim and pale. He entered the house, but it was some little time before
+he came upstairs.
+
+"He looks like a beaten man," cried Phelps.
+
+I was forced to confess that he was right. "After all," said I, "the
+clue of the matter lies probably here in town."
+
+Phelps gave a groan.
+
+"I don't know how it is," said he, "but I had hoped for so much from his
+return. But surely his hand was not tied up like that yesterday. What
+can be the matter?"
+
+"You are not wounded, Holmes?" I asked, as my friend entered the room.
+
+"Tut, it is only a scratch through my own clumsiness," he answered,
+nodding his good-mornings to us. "This case of yours, Mr. Phelps, is
+certainly one of the darkest which I have ever investigated."
+
+"I feared that you would find it beyond you."
+
+"It has been a most remarkable experience."
+
+"That bandage tells of adventures," said I. "Won't you tell us what has
+happened?"
+
+"After breakfast, my dear Watson. Remember that I have breathed thirty
+miles of Surrey air this morning. I suppose that there has been no
+answer from my cabman advertisement? Well, well, we cannot expect to
+score every time."
+
+The table was all laid, and just as I was about to ring Mrs. Hudson
+entered with the tea and coffee. A few minutes later she brought in
+three covers, and we all drew up to the table, Holmes ravenous, I
+curious, and Phelps in the gloomiest state of depression.
+
+"Mrs. Hudson has risen to the occasion," said Holmes, uncovering a dish
+of curried chicken. "Her cuisine is a little limited, but she has
+as good an idea of breakfast as a Scotch-woman. What have you here,
+Watson?"
+
+"Ham and eggs," I answered.
+
+"Good! What are you going to take, Mr. Phelps--curried fowl or eggs, or
+will you help yourself?"
+
+"Thank you. I can eat nothing," said Phelps.
+
+"Oh, come! Try the dish before you."
+
+"Thank you, I would really rather not."
+
+"Well, then," said Holmes, with a mischievous twinkle, "I suppose that
+you have no objection to helping me?"
+
+Phelps raised the cover, and as he did so he uttered a scream, and sat
+there staring with a face as white as the plate upon which he looked.
+Across the centre of it was lying a little cylinder of blue-gray paper.
+He caught it up, devoured it with his eyes, and then danced madly about
+the room, pressing it to his bosom and shrieking out in his delight.
+Then he fell back into an arm-chair so limp and exhausted with his own
+emotions that we had to pour brandy down his throat to keep him from
+fainting.
+
+"There! there!" said Holmes, soothing, patting him upon the shoulder.
+"It was too bad to spring it on you like this, but Watson here will tell
+you that I never can resist a touch of the dramatic."
+
+Phelps seized his hand and kissed it. "God bless you!" he cried. "You
+have saved my honor."
+
+"Well, my own was at stake, you know," said Holmes. "I assure you it is
+just as hateful to me to fail in a case as it can be to you to blunder
+over a commission."
+
+Phelps thrust away the precious document into the innermost pocket of
+his coat.
+
+"I have not the heart to interrupt your breakfast any further, and yet I
+am dying to know how you got it and where it was."
+
+Sherlock Holmes swallowed a cup of coffee, and turned his attention to
+the ham and eggs. Then he rose, lit his pipe, and settled himself down
+into his chair.
+
+"I'll tell you what I did first, and how I came to do it afterwards,"
+said he. "After leaving you at the station I went for a charming walk
+through some admirable Surrey scenery to a pretty little village called
+Ripley, where I had my tea at an inn, and took the precaution of filling
+my flask and of putting a paper of sandwiches in my pocket. There I
+remained until evening, when I set off for Woking again, and found
+myself in the high-road outside Briarbrae just after sunset.
+
+"Well, I waited until the road was clear--it is never a very frequented
+one at any time, I fancy--and then I clambered over the fence into the
+grounds."
+
+"Surely the gate was open!" ejaculated Phelps.
+
+"Yes, but I have a peculiar taste in these matters. I chose the place
+where the three fir-trees stand, and behind their screen I got over
+without the least chance of any one in the house being able to see me.
+I crouched down among the bushes on the other side, and crawled from one
+to the other--witness the disreputable state of my trouser knees--until
+I had reached the clump of rhododendrons just opposite to your bedroom
+window. There I squatted down and awaited developments.
+
+"The blind was not down in your room, and I could see Miss Harrison
+sitting there reading by the table. It was quarter-past ten when she
+closed her book, fastened the shutters, and retired.
+
+"I heard her shut the door, and felt quite sure that she had turned the
+key in the lock."
+
+"The key!" ejaculated Phelps.
+
+"Yes; I had given Miss Harrison instructions to lock the door on the
+outside and take the key with her when she went to bed. She carried out
+every one of my injunctions to the letter, and certainly without her
+cooperation you would not have that paper in you coat-pocket. She
+departed then and the lights went out, and I was left squatting in the
+rhododendron-bush.
+
+"The night was fine, but still it was a very weary vigil. Of course it
+has the sort of excitement about it that the sportsman feels when he
+lies beside the water-course and waits for the big game. It was very
+long, though--almost as long, Watson, as when you and I waited in that
+deadly room when we looked into the little problem of the Speckled Band.
+There was a church-clock down at Woking which struck the quarters, and I
+thought more than once that it had stopped. At last however about two
+in the morning, I suddenly heard the gentle sound of a bolt being pushed
+back and the creaking of a key. A moment later the servants' door was
+opened, and Mr. Joseph Harrison stepped out into the moonlight."
+
+"Joseph!" ejaculated Phelps.
+
+"He was bare-headed, but he had a black coat thrown over his shoulder so
+that he could conceal his face in an instant if there were any alarm. He
+walked on tiptoe under the shadow of the wall, and when he reached the
+window he worked a long-bladed knife through the sash and pushed back
+the catch. Then he flung open the window, and putting his knife through
+the crack in the shutters, he thrust the bar up and swung them open.
+
+"From where I lay I had a perfect view of the inside of the room and of
+every one of his movements. He lit the two candles which stood upon the
+mantelpiece, and then he proceeded to turn back the corner of the carpet
+in the neighborhood of the door. Presently he stopped and picked out a
+square piece of board, such as is usually left to enable plumbers to get
+at the joints of the gas-pipes. This one covered, as a matter of
+fact, the T joint which gives off the pipe which supplies the kitchen
+underneath. Out of this hiding-place he drew that little cylinder
+of paper, pushed down the board, rearranged the carpet, blew out the
+candles, and walked straight into my arms as I stood waiting for him
+outside the window.
+
+"Well, he has rather more viciousness than I gave him credit for, has
+Master Joseph. He flew at me with his knife, and I had to grasp him
+twice, and got a cut over the knuckles, before I had the upper hand of
+him. He looked murder out of the only eye he could see with when we had
+finished, but he listened to reason and gave up the papers. Having
+got them I let my man go, but I wired full particulars to Forbes this
+morning. If he is quick enough to catch his bird, well and good. But
+if, as I shrewdly suspect, he finds the nest empty before he gets there,
+why, all the better for the government. I fancy that Lord Holdhurst for
+one, and Mr. Percy Phelps for another, would very much rather that the
+affair never got as far as a police-court.
+
+"My God!" gasped our client. "Do you tell me that during these long ten
+weeks of agony the stolen papers were within the very room with me all
+the time?"
+
+"So it was."
+
+"And Joseph! Joseph a villain and a thief!"
+
+"Hum! I am afraid Joseph's character is a rather deeper and more
+dangerous one than one might judge from his appearance. From what I
+have heard from him this morning, I gather that he has lost heavily in
+dabbling with stocks, and that he is ready to do anything on earth to
+better his fortunes. Being an absolutely selfish man, when a chance
+presented itself he did not allow either his sister's happiness or your
+reputation to hold his hand."
+
+Percy Phelps sank back in his chair. "My head whirls," said he. "Your
+words have dazed me."
+
+"The principal difficulty in your case," remarked Holmes, in his
+didactic fashion, "lay in the fact of there being too much evidence.
+What was vital was overlaid and hidden by what was irrelevant. Of all
+the facts which were presented to us we had to pick just those which we
+deemed to be essential, and then piece them together in their order, so
+as to reconstruct this very remarkable chain of events. I had already
+begun to suspect Joseph, from the fact that you had intended to travel
+home with him that night, and that therefore it was a likely enough
+thing that he should call for you, knowing the Foreign Office well, upon
+his way. When I heard that some one had been so anxious to get into the
+bedroom, in which no one but Joseph could have concealed anything--you
+told us in your narrative how you had turned Joseph out when you arrived
+with the doctor--my suspicions all changed to certainties, especially as
+the attempt was made on the first night upon which the nurse was absent,
+showing that the intruder was well acquainted with the ways of the
+house."
+
+"How blind I have been!"
+
+"The facts of the case, as far as I have worked them out, are these:
+this Joseph Harrison entered the office through the Charles Street door,
+and knowing his way he walked straight into your room the instant after
+you left it. Finding no one there he promptly rang the bell, and at
+the instant that he did so his eyes caught the paper upon the table.
+A glance showed him that chance had put in his way a State document of
+immense value, and in an instant he had thrust it into his pocket and
+was gone. A few minutes elapsed, as you remember, before the sleepy
+commissionnaire drew your attention to the bell, and those were just
+enough to give the thief time to make his escape.
+
+"He made his way to Woking by the first train, and having examined his
+booty and assured himself that it really was of immense value, he
+had concealed it in what he thought was a very safe place, with the
+intention of taking it out again in a day or two, and carrying it to the
+French embassy, or wherever he thought that a long price was to be
+had. Then came your sudden return. He, without a moment's warning, was
+bundled out of his room, and from that time onward there were always at
+least two of you there to prevent him from regaining his treasure. The
+situation to him must have been a maddening one. But at last he thought
+he saw his chance. He tried to steal in, but was baffled by your
+wakefulness. You remember that you did not take your usual draught that
+night."
+
+"I remember."
+
+"I fancy that he had taken steps to make that draught efficacious,
+and that he quite relied upon your being unconscious. Of course, I
+understood that he would repeat the attempt whenever it could be done
+with safety. Your leaving the room gave him the chance he wanted. I kept
+Miss Harrison in it all day so that he might not anticipate us. Then,
+having given him the idea that the coast was clear, I kept guard as
+I have described. I already knew that the papers were probably in the
+room, but I had no desire to rip up all the planking and skirting in
+search of them. I let him take them, therefore, from the hiding-place,
+and so saved myself an infinity of trouble. Is there any other point
+which I can make clear?"
+
+"Why did he try the window on the first occasion," I asked, "when he
+might have entered by the door?"
+
+"In reaching the door he would have to pass seven bedrooms. On the other
+hand, he could get out on to the lawn with ease. Anything else?"
+
+"You do not think," asked Phelps, "that he had any murderous intention?
+The knife was only meant as a tool."
+
+"It may be so," answered Holmes, shrugging his shoulders. "I can only
+say for certain that Mr. Joseph Harrison is a gentleman to whose mercy I
+should be extremely unwilling to trust."
+
+
+
+
+Adventure XI. The Final Problem
+
+
+It is with a heavy heart that I take up my pen to write these the last
+words in which I shall ever record the singular gifts by which my friend
+Mr. Sherlock Holmes was distinguished. In an incoherent and, as I deeply
+feel, an entirely inadequate fashion, I have endeavored to give some
+account of my strange experiences in his company from the chance which
+first brought us together at the period of the "Study in Scarlet," up
+to the time of his interference in the matter of the "Naval Treaty"--an
+interference which had the unquestionable effect of preventing a serious
+international complication. It was my intention to have stopped there,
+and to have said nothing of that event which has created a void in my
+life which the lapse of two years has done little to fill. My hand
+has been forced, however, by the recent letters in which Colonel James
+Moriarty defends the memory of his brother, and I have no choice but to
+lay the facts before the public exactly as they occurred. I alone know
+the absolute truth of the matter, and I am satisfied that the time has
+come when no good purpose is to be served by its suppression. As far as
+I know, there have been only three accounts in the public press: that
+in the Journal de Geneve on May 6th, 1891, the Reuter's despatch in the
+English papers on May 7th, and finally the recent letter to which I have
+alluded. Of these the first and second were extremely condensed, while
+the last is, as I shall now show, an absolute perversion of the facts.
+It lies with me to tell for the first time what really took place
+between Professor Moriarty and Mr. Sherlock Holmes.
+
+It may be remembered that after my marriage, and my subsequent start in
+private practice, the very intimate relations which had existed between
+Holmes and myself became to some extent modified. He still came to me
+from time to time when he desired a companion in his investigation, but
+these occasions grew more and more seldom, until I find that in the year
+1890 there were only three cases of which I retain any record. During
+the winter of that year and the early spring of 1891, I saw in the
+papers that he had been engaged by the French government upon a matter
+of supreme importance, and I received two notes from Holmes, dated from
+Narbonne and from Nimes, from which I gathered that his stay in France
+was likely to be a long one. It was with some surprise, therefore, that
+I saw him walk into my consulting-room upon the evening of April 24th.
+It struck me that he was looking even paler and thinner than usual.
+
+"Yes, I have been using myself up rather too freely," he remarked, in
+answer to my look rather than to my words; "I have been a little pressed
+of late. Have you any objection to my closing your shutters?"
+
+The only light in the room came from the lamp upon the table at which I
+had been reading. Holmes edged his way round the wall and flinging the
+shutters together, he bolted them securely.
+
+"You are afraid of something?" I asked.
+
+"Well, I am."
+
+"Of what?"
+
+"Of air-guns."
+
+"My dear Holmes, what do you mean?"
+
+"I think that you know me well enough, Watson, to understand that I am
+by no means a nervous man. At the same time, it is stupidity rather than
+courage to refuse to recognize danger when it is close upon you. Might
+I trouble you for a match?" He drew in the smoke of his cigarette as if
+the soothing influence was grateful to him.
+
+"I must apologize for calling so late," said he, "and I must further beg
+you to be so unconventional as to allow me to leave your house presently
+by scrambling over your back garden wall."
+
+"But what does it all mean?" I asked.
+
+He held out his hand, and I saw in the light of the lamp that two of his
+knuckles were burst and bleeding.
+
+"It is not an airy nothing, you see," said he, smiling. "On the
+contrary, it is solid enough for a man to break his hand over. Is Mrs.
+Watson in?"
+
+"She is away upon a visit."
+
+"Indeed! You are alone?"
+
+"Quite."
+
+"Then it makes it the easier for me to propose that you should come away
+with me for a week to the Continent."
+
+"Where?"
+
+"Oh, anywhere. It's all the same to me."
+
+There was something very strange in all this. It was not Holmes's nature
+to take an aimless holiday, and something about his pale, worn face told
+me that his nerves were at their highest tension. He saw the question in
+my eyes, and, putting his finger-tips together and his elbows upon his
+knees, he explained the situation.
+
+"You have probably never heard of Professor Moriarty?" said he.
+
+"Never."
+
+"Aye, there's the genius and the wonder of the thing!" he cried. "The
+man pervades London, and no one has heard of him. That's what puts
+him on a pinnacle in the records of crime. I tell you, Watson, in all
+seriousness, that if I could beat that man, if I could free society
+of him, I should feel that my own career had reached its summit, and
+I should be prepared to turn to some more placid line in life. Between
+ourselves, the recent cases in which I have been of assistance to the
+royal family of Scandinavia, and to the French republic, have left me in
+such a position that I could continue to live in the quiet fashion
+which is most congenial to me, and to concentrate my attention upon my
+chemical researches. But I could not rest, Watson, I could not sit quiet
+in my chair, if I thought that such a man as Professor Moriarty were
+walking the streets of London unchallenged."
+
+"What has he done, then?"
+
+"His career has been an extraordinary one. He is a man of good birth and
+excellent education, endowed by nature with a phenomenal mathematical
+faculty. At the age of twenty-one he wrote a treatise upon the Binomial
+Theorem, which has had a European vogue. On the strength of it he won
+the Mathematical Chair at one of our smaller universities, and had, to
+all appearances, a most brilliant career before him. But the man had
+hereditary tendencies of the most diabolical kind. A criminal strain
+ran in his blood, which, instead of being modified, was increased and
+rendered infinitely more dangerous by his extraordinary mental powers.
+Dark rumors gathered round him in the university town, and eventually he
+was compelled to resign his chair and to come down to London, where he
+set up as an army coach. So much is known to the world, but what I am
+telling you now is what I have myself discovered.
+
+"As you are aware, Watson, there is no one who knows the higher criminal
+world of London so well as I do. For years past I have continually been
+conscious of some power behind the malefactor, some deep organizing
+power which forever stands in the way of the law, and throws its shield
+over the wrong-doer. Again and again in cases of the most varying
+sorts--forgery cases, robberies, murders--I have felt the presence of
+this force, and I have deduced its action in many of those undiscovered
+crimes in which I have not been personally consulted. For years I have
+endeavored to break through the veil which shrouded it, and at last
+the time came when I seized my thread and followed it, until it led
+me, after a thousand cunning windings, to ex-Professor Moriarty of
+mathematical celebrity.
+
+"He is the Napoleon of crime, Watson. He is the organizer of half that
+is evil and of nearly all that is undetected in this great city. He is a
+genius, a philosopher, an abstract thinker. He has a brain of the first
+order. He sits motionless, like a spider in the center of its web, but
+that web has a thousand radiations, and he knows well every quiver of
+each of them. He does little himself. He only plans. But his agents are
+numerous and splendidly organized. Is there a crime to be done, a
+paper to be abstracted, we will say, a house to be rifled, a man to be
+removed--the word is passed to the Professor, the matter is organized
+and carried out. The agent may be caught. In that case money is found
+for his bail or his defence. But the central power which uses the agent
+is never caught--never so much as suspected. This was the organization
+which I deduced, Watson, and which I devoted my whole energy to exposing
+and breaking up.
+
+"But the Professor was fenced round with safeguards so cunningly devised
+that, do what I would, it seemed impossible to get evidence which would
+convict in a court of law. You know my powers, my dear Watson, and yet
+at the end of three months I was forced to confess that I had at last
+met an antagonist who was my intellectual equal. My horror at his crimes
+was lost in my admiration at his skill. But at last he made a trip--only
+a little, little trip--but it was more than he could afford when I was
+so close upon him. I had my chance, and, starting from that point, I
+have woven my net round him until now it is all ready to close. In three
+days--that is to say, on Monday next--matters will be ripe, and the
+Professor, with all the principal members of his gang, will be in the
+hands of the police. Then will come the greatest criminal trial of the
+century, the clearing up of over forty mysteries, and the rope for all
+of them; but if we move at all prematurely, you understand, they may
+slip out of our hands even at the last moment.
+
+"Now, if I could have done this without the knowledge of Professor
+Moriarty, all would have been well. But he was too wily for that. He saw
+every step which I took to draw my toils round him. Again and again
+he strove to break away, but I as often headed him off. I tell you,
+my friend, that if a detailed account of that silent contest could
+be written, it would take its place as the most brilliant bit of
+thrust-and-parry work in the history of detection. Never have I risen to
+such a height, and never have I been so hard pressed by an opponent. He
+cut deep, and yet I just undercut him. This morning the last steps were
+taken, and three days only were wanted to complete the business. I was
+sitting in my room thinking the matter over, when the door opened and
+Professor Moriarty stood before me.
+
+"My nerves are fairly proof, Watson, but I must confess to a start when
+I saw the very man who had been so much in my thoughts standing there on
+my threshhold. His appearance was quite familiar to me. He is extremely
+tall and thin, his forehead domes out in a white curve, and his two
+eyes are deeply sunken in his head. He is clean-shaven, pale, and
+ascetic-looking, retaining something of the professor in his features.
+His shoulders are rounded from much study, and his face protrudes
+forward, and is forever slowly oscillating from side to side in a
+curiously reptilian fashion. He peered at me with great curiosity in his
+puckered eyes.
+
+"'You have less frontal development than I should have expected,' said
+he, at last. 'It is a dangerous habit to finger loaded firearms in the
+pocket of one's dressing-gown.'
+
+"The fact is that upon his entrance I had instantly recognized the
+extreme personal danger in which I lay. The only conceivable escape for
+him lay in silencing my tongue. In an instant I had slipped the revolver
+from the drawer into my pocket, and was covering him through the cloth.
+At his remark I drew the weapon out and laid it cocked upon the table.
+He still smiled and blinked, but there was something about his eyes
+which made me feel very glad that I had it there.
+
+"'You evidently don't know me,' said he.
+
+"'On the contrary,' I answered, 'I think it is fairly evident that I do.
+Pray take a chair. I can spare you five minutes if you have anything to
+say.'
+
+"'All that I have to say has already crossed your mind,' said he.
+
+"'Then possibly my answer has crossed yours,' I replied.
+
+"'You stand fast?'
+
+"'Absolutely.'
+
+"He clapped his hand into his pocket, and I raised the pistol from
+the table. But he merely drew out a memorandum-book in which he had
+scribbled some dates.
+
+"'You crossed my path on the 4th of January,' said he. 'On the 23d you
+incommoded me; by the middle of February I was seriously inconvenienced
+by you; at the end of March I was absolutely hampered in my plans; and
+now, at the close of April, I find myself placed in such a position
+through your continual persecution that I am in positive danger of
+losing my liberty. The situation is becoming an impossible one.'
+
+"'Have you any suggestion to make?' I asked.
+
+"'You must drop it, Mr. Holmes,' said he, swaying his face about. 'You
+really must, you know.'
+
+"'After Monday,' said I.
+
+"'Tut, tut,' said he. 'I am quite sure that a man of your intelligence
+will see that there can be but one outcome to this affair. It is
+necessary that you should withdraw. You have worked things in such a
+fashion that we have only one resource left. It has been an intellectual
+treat to me to see the way in which you have grappled with this affair,
+and I say, unaffectedly, that it would be a grief to me to be forced
+to take any extreme measure. You smile, sir, but I assure you that it
+really would.'
+
+"'Danger is part of my trade,' I remarked.
+
+"'That is not danger,' said he. 'It is inevitable destruction. You stand
+in the way not merely of an individual, but of a mighty organization,
+the full extent of which you, with all your cleverness, have been unable
+to realize. You must stand clear, Mr. Holmes, or be trodden under foot.'
+
+"'I am afraid,' said I, rising, 'that in the pleasure of this
+conversation I am neglecting business of importance which awaits me
+elsewhere.'
+
+"He rose also and looked at me in silence, shaking his head sadly.
+
+"'Well, well,' said he, at last. 'It seems a pity, but I have done
+what I could. I know every move of your game. You can do nothing before
+Monday. It has been a duel between you and me, Mr. Holmes. You hope to
+place me in the dock. I tell you that I will never stand in the dock.
+You hope to beat me. I tell you that you will never beat me. If you are
+clever enough to bring destruction upon me, rest assured that I shall do
+as much to you.'
+
+"'You have paid me several compliments, Mr. Moriarty,' said I. 'Let me
+pay you one in return when I say that if I were assured of the former
+eventuality I would, in the interests of the public, cheerfully accept
+the latter.'
+
+"'I can promise you the one, but not the other,' he snarled, and so
+turned his rounded back upon me, and went peering and blinking out of
+the room.
+
+"That was my singular interview with Professor Moriarty. I confess that
+it left an unpleasant effect upon my mind. His soft, precise fashion
+of speech leaves a conviction of sincerity which a mere bully could
+not produce. Of course, you will say: 'Why not take police precautions
+against him?' the reason is that I am well convinced that it is from his
+agents the blow will fall. I have the best proofs that it would be so."
+
+"You have already been assaulted?"
+
+"My dear Watson, Professor Moriarty is not a man who lets the grass grow
+under his feet. I went out about mid-day to transact some business in
+Oxford Street. As I passed the corner which leads from Bentinck Street
+on to the Welbeck Street crossing a two-horse van furiously driven
+whizzed round and was on me like a flash. I sprang for the foot-path
+and saved myself by the fraction of a second. The van dashed round by
+Marylebone Lane and was gone in an instant. I kept to the pavement after
+that, Watson, but as I walked down Vere Street a brick came down from
+the roof of one of the houses, and was shattered to fragments at my
+feet. I called the police and had the place examined. There were slates
+and bricks piled up on the roof preparatory to some repairs, and they
+would have me believe that the wind had toppled over one of these. Of
+course I knew better, but I could prove nothing. I took a cab after that
+and reached my brother's rooms in Pall Mall, where I spent the day. Now
+I have come round to you, and on my way I was attacked by a rough with a
+bludgeon. I knocked him down, and the police have him in custody; but
+I can tell you with the most absolute confidence that no possible
+connection will ever be traced between the gentleman upon whose front
+teeth I have barked my knuckles and the retiring mathematical coach, who
+is, I dare say, working out problems upon a black-board ten miles away.
+You will not wonder, Watson, that my first act on entering your rooms
+was to close your shutters, and that I have been compelled to ask your
+permission to leave the house by some less conspicuous exit than the
+front door."
+
+I had often admired my friend's courage, but never more than now, as he
+sat quietly checking off a series of incidents which must have combined
+to make up a day of horror.
+
+"You will spend the night here?" I said.
+
+"No, my friend, you might find me a dangerous guest. I have my plans
+laid, and all will be well. Matters have gone so far now that they can
+move without my help as far as the arrest goes, though my presence is
+necessary for a conviction. It is obvious, therefore, that I cannot do
+better than get away for the few days which remain before the police are
+at liberty to act. It would be a great pleasure to me, therefore, if you
+could come on to the Continent with me."
+
+"The practice is quiet," said I, "and I have an accommodating neighbor.
+I should be glad to come."
+
+"And to start to-morrow morning?"
+
+"If necessary."
+
+"Oh yes, it is most necessary. Then these are your instructions, and I
+beg, my dear Watson, that you will obey them to the letter, for you are
+now playing a double-handed game with me against the cleverest rogue and
+the most powerful syndicate of criminals in Europe. Now listen! You
+will dispatch whatever luggage you intend to take by a trusty messenger
+unaddressed to Victoria to-night. In the morning you will send for a
+hansom, desiring your man to take neither the first nor the second which
+may present itself. Into this hansom you will jump, and you will drive
+to the Strand end of the Lowther Arcade, handing the address to the
+cabman upon a slip of paper, with a request that he will not throw it
+away. Have your fare ready, and the instant that your cab stops,
+dash through the Arcade, timing yourself to reach the other side at a
+quarter-past nine. You will find a small brougham waiting close to the
+curb, driven by a fellow with a heavy black cloak tipped at the collar
+with red. Into this you will step, and you will reach Victoria in time
+for the Continental express."
+
+"Where shall I meet you?"
+
+"At the station. The second first-class carriage from the front will be
+reserved for us."
+
+"The carriage is our rendezvous, then?"
+
+"Yes."
+
+It was in vain that I asked Holmes to remain for the evening. It was
+evident to me that he thought he might bring trouble to the roof he was
+under, and that that was the motive which impelled him to go. With a few
+hurried words as to our plans for the morrow he rose and came out with
+me into the garden, clambering over the wall which leads into Mortimer
+Street, and immediately whistling for a hansom, in which I heard him
+drive away.
+
+In the morning I obeyed Holmes's injunctions to the letter. A hansom was
+procured with such precaution as would prevent its being one which was
+placed ready for us, and I drove immediately after breakfast to the
+Lowther Arcade, through which I hurried at the top of my speed. A
+brougham was waiting with a very massive driver wrapped in a dark cloak,
+who, the instant that I had stepped in, whipped up the horse and rattled
+off to Victoria Station. On my alighting there he turned the carriage,
+and dashed away again without so much as a look in my direction.
+
+So far all had gone admirably. My luggage was waiting for me, and I had
+no difficulty in finding the carriage which Holmes had indicated, the
+less so as it was the only one in the train which was marked "Engaged."
+My only source of anxiety now was the non-appearance of Holmes. The
+station clock marked only seven minutes from the time when we were
+due to start. In vain I searched among the groups of travellers and
+leave-takers for the lithe figure of my friend. There was no sign of
+him. I spent a few minutes in assisting a venerable Italian priest, who
+was endeavoring to make a porter understand, in his broken English,
+that his luggage was to be booked through to Paris. Then, having taken
+another look round, I returned to my carriage, where I found that the
+porter, in spite of the ticket, had given me my decrepit Italian friend
+as a traveling companion. It was useless for me to explain to him that
+his presence was an intrusion, for my Italian was even more limited than
+his English, so I shrugged my shoulders resignedly, and continued to
+look out anxiously for my friend. A chill of fear had come over me, as I
+thought that his absence might mean that some blow had fallen during the
+night. Already the doors had all been shut and the whistle blown, when--
+
+"My dear Watson," said a voice, "you have not even condescended to say
+good-morning."
+
+I turned in uncontrollable astonishment. The aged ecclesiastic had
+turned his face towards me. For an instant the wrinkles were smoothed
+away, the nose drew away from the chin, the lower lip ceased to protrude
+and the mouth to mumble, the dull eyes regained their fire, the drooping
+figure expanded. The next the whole frame collapsed again, and Holmes
+had gone as quickly as he had come.
+
+"Good heavens!" I cried; "how you startled me!"
+
+"Every precaution is still necessary," he whispered. "I have reason to
+think that they are hot upon our trail. Ah, there is Moriarty himself."
+
+The train had already begun to move as Holmes spoke. Glancing back, I
+saw a tall man pushing his way furiously through the crowd, and waving
+his hand as if he desired to have the train stopped. It was too late,
+however, for we were rapidly gathering momentum, and an instant later
+had shot clear of the station.
+
+"With all our precautions, you see that we have cut it rather fine,"
+said Holmes, laughing. He rose, and throwing off the black cassock and
+hat which had formed his disguise, he packed them away in a hand-bag.
+
+"Have you seen the morning paper, Watson?"
+
+"No."
+
+"You haven't' seen about Baker Street, then?"
+
+"Baker Street?"
+
+"They set fire to our rooms last night. No great harm was done."
+
+"Good heavens, Holmes! this is intolerable."
+
+"They must have lost my track completely after their bludgeon-man was
+arrested. Otherwise they could not have imagined that I had returned
+to my rooms. They have evidently taken the precaution of watching you,
+however, and that is what has brought Moriarty to Victoria. You could
+not have made any slip in coming?"
+
+"I did exactly what you advised."
+
+"Did you find your brougham?"
+
+"Yes, it was waiting."
+
+"Did you recognize your coachman?"
+
+"No."
+
+"It was my brother Mycroft. It is an advantage to get about in such a
+case without taking a mercenary into your confidence. But we must plan
+what we are to do about Moriarty now."
+
+"As this is an express, and as the boat runs in connection with it, I
+should think we have shaken him off very effectively."
+
+"My dear Watson, you evidently did not realize my meaning when I said
+that this man may be taken as being quite on the same intellectual plane
+as myself. You do not imagine that if I were the pursuer I should allow
+myself to be baffled by so slight an obstacle. Why, then, should you
+think so meanly of him?"
+
+"What will he do?"
+
+"What I should do?"
+
+"What would you do, then?"
+
+"Engage a special."
+
+"But it must be late."
+
+"By no means. This train stops at Canterbury; and there is always at
+least a quarter of an hour's delay at the boat. He will catch us there."
+
+"One would think that we were the criminals. Let us have him arrested on
+his arrival."
+
+"It would be to ruin the work of three months. We should get the big
+fish, but the smaller would dart right and left out of the net. On
+Monday we should have them all. No, an arrest is inadmissible."
+
+"What then?"
+
+"We shall get out at Canterbury."
+
+"And then?"
+
+"Well, then we must make a cross-country journey to Newhaven, and so
+over to Dieppe. Moriarty will again do what I should do. He will get on
+to Paris, mark down our luggage, and wait for two days at the depot.
+In the meantime we shall treat ourselves to a couple of carpet-bags,
+encourage the manufactures of the countries through which we travel, and
+make our way at our leisure into Switzerland, via Luxembourg and Basle."
+
+At Canterbury, therefore, we alighted, only to find that we should have
+to wait an hour before we could get a train to Newhaven.
+
+I was still looking rather ruefully after the rapidly disappearing
+luggage-van which contained my wardrobe, when Holmes pulled my sleeve
+and pointed up the line.
+
+"Already, you see," said he.
+
+Far away, from among the Kentish woods there rose a thin spray of smoke.
+A minute later a carriage and engine could be seen flying along the open
+curve which leads to the station. We had hardly time to take our place
+behind a pile of luggage when it passed with a rattle and a roar,
+beating a blast of hot air into our faces.
+
+"There he goes," said Holmes, as we watched the carriage swing and
+rock over the points. "There are limits, you see, to our friend's
+intelligence. It would have been a coup-de-maitre had he deduced what I
+would deduce and acted accordingly."
+
+"And what would he have done had he overtaken us?"
+
+"There cannot be the least doubt that he would have made a murderous
+attack upon me. It is, however, a game at which two may play. The
+question now is whether we should take a premature lunch here, or run
+our chance of starving before we reach the buffet at Newhaven."
+
+
+We made our way to Brussels that night and spent two days there, moving
+on upon the third day as far as Strasburg. On the Monday morning Holmes
+had telegraphed to the London police, and in the evening we found a
+reply waiting for us at our hotel. Holmes tore it open, and then with a
+bitter curse hurled it into the grate.
+
+"I might have known it!" he groaned. "He has escaped!"
+
+"Moriarty?"
+
+"They have secured the whole gang with the exception of him. He has
+given them the slip. Of course, when I had left the country there was no
+one to cope with him. But I did think that I had put the game in their
+hands. I think that you had better return to England, Watson."
+
+"Why?"
+
+"Because you will find me a dangerous companion now. This man's
+occupation is gone. He is lost if he returns to London. If I read his
+character right he will devote his whole energies to revenging himself
+upon me. He said as much in our short interview, and I fancy that he
+meant it. I should certainly recommend you to return to your practice."
+
+It was hardly an appeal to be successful with one who was an
+old campaigner as well as an old friend. We sat in the Strasburg
+salle-à-manger arguing the question for half an hour, but the same night
+we had resumed our journey and were well on our way to Geneva.
+
+For a charming week we wandered up the Valley of the Rhone, and then,
+branching off at Leuk, we made our way over the Gemmi Pass, still deep
+in snow, and so, by way of Interlaken, to Meiringen. It was a lovely
+trip, the dainty green of the spring below, the virgin white of the
+winter above; but it was clear to me that never for one instant did
+Holmes forget the shadow which lay across him. In the homely Alpine
+villages or in the lonely mountain passes, I could tell by his quick
+glancing eyes and his sharp scrutiny of every face that passed us,
+that he was well convinced that, walk where we would, we could not walk
+ourselves clear of the danger which was dogging our footsteps.
+
+Once, I remember, as we passed over the Gemmi, and walked along
+the border of the melancholy Daubensee, a large rock which had been
+dislodged from the ridge upon our right clattered down and roared into
+the lake behind us. In an instant Holmes had raced up on to the ridge,
+and, standing upon a lofty pinnacle, craned his neck in every direction.
+It was in vain that our guide assured him that a fall of stones was a
+common chance in the spring-time at that spot. He said nothing, but
+he smiled at me with the air of a man who sees the fulfillment of that
+which he had expected.
+
+And yet for all his watchfulness he was never depressed. On the
+contrary, I can never recollect having seen him in such exuberant
+spirits. Again and again he recurred to the fact that if he could
+be assured that society was freed from Professor Moriarty he would
+cheerfully bring his own career to a conclusion.
+
+"I think that I may go so far as to say, Watson, that I have not lived
+wholly in vain," he remarked. "If my record were closed to-night I could
+still survey it with equanimity. The air of London is the sweeter for my
+presence. In over a thousand cases I am not aware that I have ever used
+my powers upon the wrong side. Of late I have been tempted to look into
+the problems furnished by nature rather than those more superficial ones
+for which our artificial state of society is responsible. Your memoirs
+will draw to an end, Watson, upon the day that I crown my career by
+the capture or extinction of the most dangerous and capable criminal in
+Europe."
+
+I shall be brief, and yet exact, in the little which remains for me to
+tell. It is not a subject on which I would willingly dwell, and yet I am
+conscious that a duty devolves upon me to omit no detail.
+
+It was on the 3d of May that we reached the little village of Meiringen,
+where we put up at the Englischer Hof, then kept by Peter Steiler the
+elder. Our landlord was an intelligent man, and spoke excellent English,
+having served for three years as waiter at the Grosvenor Hotel in
+London. At his advice, on the afternoon of the 4th we set off together,
+with the intention of crossing the hills and spending the night at the
+hamlet of Rosenlaui. We had strict injunctions, however, on no account
+to pass the falls of Reichenbach, which are about half-way up the hill,
+without making a small detour to see them.
+
+It is indeed, a fearful place. The torrent, swollen by the melting snow,
+plunges into a tremendous abyss, from which the spray rolls up like the
+smoke from a burning house. The shaft into which the river hurls itself
+is an immense chasm, lined by glistening coal-black rock, and narrowing
+into a creaming, boiling pit of incalculable depth, which brims over and
+shoots the stream onward over its jagged lip. The long sweep of green
+water roaring forever down, and the thick flickering curtain of spray
+hissing forever upward, turn a man giddy with their constant whirl and
+clamor. We stood near the edge peering down at the gleam of the breaking
+water far below us against the black rocks, and listening to the
+half-human shout which came booming up with the spray out of the abyss.
+
+The path has been cut half-way round the fall to afford a complete view,
+but it ends abruptly, and the traveler has to return as he came. We had
+turned to do so, when we saw a Swiss lad come running along it with
+a letter in his hand. It bore the mark of the hotel which we had just
+left, and was addressed to me by the landlord. It appeared that within a
+very few minutes of our leaving, an English lady had arrived who was in
+the last stage of consumption. She had wintered at Davos Platz, and was
+journeying now to join her friends at Lucerne, when a sudden hemorrhage
+had overtaken her. It was thought that she could hardly live a few
+hours, but it would be a great consolation to her to see an English
+doctor, and, if I would only return, etc. The good Steiler assured me
+in a postscript that he would himself look upon my compliance as a very
+great favor, since the lady absolutely refused to see a Swiss physician,
+and he could not but feel that he was incurring a great responsibility.
+
+The appeal was one which could not be ignored. It was impossible to
+refuse the request of a fellow-countrywoman dying in a strange land. Yet
+I had my scruples about leaving Holmes. It was finally agreed, however,
+that he should retain the young Swiss messenger with him as guide and
+companion while I returned to Meiringen. My friend would stay some
+little time at the fall, he said, and would then walk slowly over the
+hill to Rosenlaui, where I was to rejoin him in the evening. As I turned
+away I saw Holmes, with his back against a rock and his arms folded,
+gazing down at the rush of the waters. It was the last that I was ever
+destined to see of him in this world.
+
+When I was near the bottom of the descent I looked back. It was
+impossible, from that position, to see the fall, but I could see the
+curving path which winds over the shoulder of the hill and leads to it.
+Along this a man was, I remember, walking very rapidly.
+
+I could see his black figure clearly outlined against the green behind
+him. I noted him, and the energy with which he walked but he passed from
+my mind again as I hurried on upon my errand.
+
+It may have been a little over an hour before I reached Meiringen. Old
+Steiler was standing at the porch of his hotel.
+
+"Well," said I, as I came hurrying up, "I trust that she is no worse?"
+
+A look of surprise passed over his face, and at the first quiver of his
+eyebrows my heart turned to lead in my breast.
+
+"You did not write this?" I said, pulling the letter from my pocket.
+"There is no sick Englishwoman in the hotel?"
+
+"Certainly not!" he cried. "But it has the hotel mark upon it! Ha, it
+must have been written by that tall Englishman who came in after you had
+gone. He said--"
+
+But I waited for none of the landlord's explanations. In a tingle of
+fear I was already running down the village street, and making for the
+path which I had so lately descended. It had taken me an hour to come
+down. For all my efforts two more had passed before I found myself at
+the fall of Reichenbach once more. There was Holmes's Alpine-stock still
+leaning against the rock by which I had left him. But there was no sign
+of him, and it was in vain that I shouted. My only answer was my own
+voice reverberating in a rolling echo from the cliffs around me.
+
+It was the sight of that Alpine-stock which turned me cold and sick.
+He had not gone to Rosenlaui, then. He had remained on that three-foot
+path, with sheer wall on one side and sheer drop on the other, until his
+enemy had overtaken him. The young Swiss had gone too. He had probably
+been in the pay of Moriarty, and had left the two men together. And then
+what had happened? Who was to tell us what had happened then?
+
+I stood for a minute or two to collect myself, for I was dazed with the
+horror of the thing. Then I began to think of Holmes's own methods and
+to try to practise them in reading this tragedy. It was, alas, only too
+easy to do. During our conversation we had not gone to the end of the
+path, and the Alpine-stock marked the place where we had stood. The
+blackish soil is kept forever soft by the incessant drift of spray,
+and a bird would leave its tread upon it. Two lines of footmarks were
+clearly marked along the farther end of the path, both leading away from
+me. There were none returning. A few yards from the end the soil was
+all ploughed up into a patch of mud, and the branches and ferns which
+fringed the chasm were torn and bedraggled. I lay upon my face and
+peered over with the spray spouting up all around me. It had darkened
+since I left, and now I could only see here and there the glistening of
+moisture upon the black walls, and far away down at the end of the shaft
+the gleam of the broken water. I shouted; but only the same half-human
+cry of the fall was borne back to my ears.
+
+But it was destined that I should after all have a last word of greeting
+from my friend and comrade. I have said that his Alpine-stock had been
+left leaning against a rock which jutted on to the path. From the top of
+this bowlder the gleam of something bright caught my eye, and, raising
+my hand, I found that it came from the silver cigarette-case which he
+used to carry. As I took it up a small square of paper upon which it
+had lain fluttered down on to the ground. Unfolding it, I found that it
+consisted of three pages torn from his note-book and addressed to me. It
+was characteristic of the man that the direction was a precise, and the
+writing as firm and clear, as though it had been written in his study.
+
+My dear Watson [it said], I write these few lines through the courtesy
+of Mr. Moriarty, who awaits my convenience for the final discussion of
+those questions which lie between us. He has been giving me a sketch
+of the methods by which he avoided the English police and kept himself
+informed of our movements. They certainly confirm the very high opinion
+which I had formed of his abilities. I am pleased to think that I shall
+be able to free society from any further effects of his presence, though
+I fear that it is at a cost which will give pain to my friends, and
+especially, my dear Watson, to you. I have already explained to you,
+however, that my career had in any case reached its crisis, and that
+no possible conclusion to it could be more congenial to me than this.
+Indeed, if I may make a full confession to you, I was quite convinced
+that the letter from Meiringen was a hoax, and I allowed you to depart
+on that errand under the persuasion that some development of this sort
+would follow. Tell Inspector Patterson that the papers which he needs
+to convict the gang are in pigeonhole M., done up in a blue envelope
+and inscribed "Moriarty." I made every disposition of my property before
+leaving England, and handed it to my brother Mycroft. Pray give my
+greetings to Mrs. Watson, and believe me to be, my dear fellow,
+
+Very sincerely yours,
+
+Sherlock Holmes
+
+
+A few words may suffice to tell the little that remains. An examination
+by experts leaves little doubt that a personal contest between the two
+men ended, as it could hardly fail to end in such a situation, in their
+reeling over, locked in each other's arms. Any attempt at recovering the
+bodies was absolutely hopeless, and there, deep down in that dreadful
+caldron of swirling water and seething foam, will lie for all time the
+most dangerous criminal and the foremost champion of the law of their
+generation. The Swiss youth was never found again, and there can be no
+doubt that he was one of the numerous agents whom Moriarty kept in this
+employ. As to the gang, it will be within the memory of the public
+how completely the evidence which Holmes had accumulated exposed their
+organization, and how heavily the hand of the dead man weighed
+upon them. Of their terrible chief few details came out during the
+proceedings, and if I have now been compelled to make a clear statement
+of his career it is due to those injudicious champions who have
+endeavored to clear his memory by attacks upon him whom I shall ever
+regard as the best and the wisest man whom I have ever known.
+
+
+
+
+
+End of the Project Gutenberg EBook of Memoirs of Sherlock Holmes, by 
+Sir Arthur Conan Doyle
+
+*** END OF THIS PROJECT GUTENBERG EBOOK MEMOIRS OF SHERLOCK HOLMES ***
+
+***** This file should be named 834-8.txt or 834-8.zip *****
+This and all associated files of various formats will be found in:
+        http://www.gutenberg.org/8/3/834/
+
+Produced by Angela M. Cable
+
+Updated editions will replace the previous one--the old editions
+will be renamed.
+
+Creating the works from public domain print editions means that no
+one owns a United States copyright in these works, so the Foundation
+(and you!) can copy and distribute it in the United States without
+permission and without paying copyright royalties.  Special rules,
+set forth in the General Terms of Use part of this license, apply to
+copying and distributing Project Gutenberg-tm electronic works to
+protect the PROJECT GUTENBERG-tm concept and trademark.  Project
+Gutenberg is a registered trademark, and may not be used if you
+charge for the eBooks, unless you receive specific permission.  If you
+do not charge anything for copies of this eBook, complying with the
+rules is very easy.  You may use this eBook for nearly any purpose
+such as creation of derivative works, reports, performances and
+research.  They may be modified and printed and given away--you may do
+practically ANYTHING with public domain eBooks.  Redistribution is
+subject to the trademark license, especially commercial
+redistribution.
+
+
+
+*** START: FULL LICENSE ***
+
+THE FULL PROJECT GUTENBERG LICENSE
+PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
+
+To protect the Project Gutenberg-tm mission of promoting the free
+distribution of electronic works, by using or distributing this work
+(or any other work associated in any way with the phrase "Project
+Gutenberg"), you agree to comply with all the terms of the Full Project
+Gutenberg-tm License (available with this file or online at
+http://gutenberg.org/license).
+
+
+Section 1.  General Terms of Use and Redistributing Project Gutenberg-tm
+electronic works
+
+1.A.  By reading or using any part of this Project Gutenberg-tm
+electronic work, you indicate that you have read, understand, agree to
+and accept all the terms of this license and intellectual property
+(trademark/copyright) agreement.  If you do not agree to abide by all
+the terms of this agreement, you must cease using and return or destroy
+all copies of Project Gutenberg-tm electronic works in your possession.
+If you paid a fee for obtaining a copy of or access to a Project
+Gutenberg-tm electronic work and you do not agree to be bound by the
+terms of this agreement, you may obtain a refund from the person or
+entity to whom you paid the fee as set forth in paragraph 1.E.8.
+
+1.B.  "Project Gutenberg" is a registered trademark.  It may only be
+used on or associated in any way with an electronic work by people who
+agree to be bound by the terms of this agreement.  There are a few
+things that you can do with most Project Gutenberg-tm electronic works
+even without complying with the full terms of this agreement.  See
+paragraph 1.C below.  There are a lot of things you can do with Project
+Gutenberg-tm electronic works if you follow the terms of this agreement
+and help preserve free future access to Project Gutenberg-tm electronic
+works.  See paragraph 1.E below.
+
+1.C.  The Project Gutenberg Literary Archive Foundation ("the Foundation"
+or PGLAF), owns a compilation copyright in the collection of Project
+Gutenberg-tm electronic works.  Nearly all the individual works in the
+collection are in the public domain in the United States.  If an
+individual work is in the public domain in the United States and you are
+located in the United States, we do not claim a right to prevent you from
+copying, distributing, performing, displaying or creating derivative
+works based on the work as long as all references to Project Gutenberg
+are removed.  Of course, we hope that you will support the Project
+Gutenberg-tm mission of promoting free access to electronic works by
+freely sharing Project Gutenberg-tm works in compliance with the terms of
+this agreement for keeping the Project Gutenberg-tm name associated with
+the work.  You can easily comply with the terms of this agreement by
+keeping this work in the same format with its attached full Project
+Gutenberg-tm License when you share it without charge with others.
+
+1.D.  The copyright laws of the place where you are located also govern
+what you can do with this work.  Copyright laws in most countries are in
+a constant state of change.  If you are outside the United States, check
+the laws of your country in addition to the terms of this agreement
+before downloading, copying, displaying, performing, distributing or
+creating derivative works based on this work or any other Project
+Gutenberg-tm work.  The Foundation makes no representations concerning
+the copyright status of any work in any country outside the United
+States.
+
+1.E.  Unless you have removed all references to Project Gutenberg:
+
+1.E.1.  The following sentence, with active links to, or other immediate
+access to, the full Project Gutenberg-tm License must appear prominently
+whenever any copy of a Project Gutenberg-tm work (any work on which the
+phrase "Project Gutenberg" appears, or with which the phrase "Project
+Gutenberg" is associated) is accessed, displayed, performed, viewed,
+copied or distributed:
+
+This eBook is for the use of anyone anywhere at no cost and with
+almost no restrictions whatsoever.  You may copy it, give it away or
+re-use it under the terms of the Project Gutenberg License included
+with this eBook or online at www.gutenberg.org
+
+1.E.2.  If an individual Project Gutenberg-tm electronic work is derived
+from the public domain (does not contain a notice indicating that it is
+posted with permission of the copyright holder), the work can be copied
+and distributed to anyone in the United States without paying any fees
+or charges.  If you are redistributing or providing access to a work
+with the phrase "Project Gutenberg" associated with or appearing on the
+work, you must comply either with the requirements of paragraphs 1.E.1
+through 1.E.7 or obtain permission for the use of the work and the
+Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
+1.E.9.
+
+1.E.3.  If an individual Project Gutenberg-tm electronic work is posted
+with the permission of the copyright holder, your use and distribution
+must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
+terms imposed by the copyright holder.  Additional terms will be linked
+to the Project Gutenberg-tm License for all works posted with the
+permission of the copyright holder found at the beginning of this work.
+
+1.E.4.  Do not unlink or detach or remove the full Project Gutenberg-tm
+License terms from this work, or any files containing a part of this
+work or any other work associated with Project Gutenberg-tm.
+
+1.E.5.  Do not copy, display, perform, distribute or redistribute this
+electronic work, or any part of this electronic work, without
+prominently displaying the sentence set forth in paragraph 1.E.1 with
+active links or immediate access to the full terms of the Project
+Gutenberg-tm License.
+
+1.E.6.  You may convert to and distribute this work in any binary,
+compressed, marked up, nonproprietary or proprietary form, including any
+word processing or hypertext form.  However, if you provide access to or
+distribute copies of a Project Gutenberg-tm work in a format other than
+"Plain Vanilla ASCII" or other format used in the official version
+posted on the official Project Gutenberg-tm web site (www.gutenberg.org),
+you must, at no additional cost, fee or expense to the user, provide a
+copy, a means of exporting a copy, or a means of obtaining a copy upon
+request, of the work in its original "Plain Vanilla ASCII" or other
+form.  Any alternate format must include the full Project Gutenberg-tm
+License as specified in paragraph 1.E.1.
+
+1.E.7.  Do not charge a fee for access to, viewing, displaying,
+performing, copying or distributing any Project Gutenberg-tm works
+unless you comply with paragraph 1.E.8 or 1.E.9.
+
+1.E.8.  You may charge a reasonable fee for copies of or providing
+access to or distributing Project Gutenberg-tm electronic works provided
+that
+
+- You pay a royalty fee of 20% of the gross profits you derive from
+     the use of Project Gutenberg-tm works calculated using the method
+     you already use to calculate your applicable taxes.  The fee is
+     owed to the owner of the Project Gutenberg-tm trademark, but he
+     has agreed to donate royalties under this paragraph to the
+     Project Gutenberg Literary Archive Foundation.  Royalty payments
+     must be paid within 60 days following each date on which you
+     prepare (or are legally required to prepare) your periodic tax
+     returns.  Royalty payments should be clearly marked as such and
+     sent to the Project Gutenberg Literary Archive Foundation at the
+     address specified in Section 4, "Information about donations to
+     the Project Gutenberg Literary Archive Foundation."
+
+- You provide a full refund of any money paid by a user who notifies
+     you in writing (or by e-mail) within 30 days of receipt that s/he
+     does not agree to the terms of the full Project Gutenberg-tm
+     License.  You must require such a user to return or
+     destroy all copies of the works possessed in a physical medium
+     and discontinue all use of and all access to other copies of
+     Project Gutenberg-tm works.
+
+- You provide, in accordance with paragraph 1.F.3, a full refund of any
+     money paid for a work or a replacement copy, if a defect in the
+     electronic work is discovered and reported to you within 90 days
+     of receipt of the work.
+
+- You comply with all other terms of this agreement for free
+     distribution of Project Gutenberg-tm works.
+
+1.E.9.  If you wish to charge a fee or distribute a Project Gutenberg-tm
+electronic work or group of works on different terms than are set
+forth in this agreement, you must obtain permission in writing from
+both the Project Gutenberg Literary Archive Foundation and Michael
+Hart, the owner of the Project Gutenberg-tm trademark.  Contact the
+Foundation as set forth in Section 3 below.
+
+1.F.
+
+1.F.1.  Project Gutenberg volunteers and employees expend considerable
+effort to identify, do copyright research on, transcribe and proofread
+public domain works in creating the Project Gutenberg-tm
+collection.  Despite these efforts, Project Gutenberg-tm electronic
+works, and the medium on which they may be stored, may contain
+"Defects," such as, but not limited to, incomplete, inaccurate or
+corrupt data, transcription errors, a copyright or other intellectual
+property infringement, a defective or damaged disk or other medium, a
+computer virus, or computer codes that damage or cannot be read by
+your equipment.
+
+1.F.2.  LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
+of Replacement or Refund" described in paragraph 1.F.3, the Project
+Gutenberg Literary Archive Foundation, the owner of the Project
+Gutenberg-tm trademark, and any other party distributing a Project
+Gutenberg-tm electronic work under this agreement, disclaim all
+liability to you for damages, costs and expenses, including legal
+fees.  YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
+LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
+PROVIDED IN PARAGRAPH F3.  YOU AGREE THAT THE FOUNDATION, THE
+TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
+LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
+INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+1.F.3.  LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
+defect in this electronic work within 90 days of receiving it, you can
+receive a refund of the money (if any) you paid for it by sending a
+written explanation to the person you received the work from.  If you
+received the work on a physical medium, you must return the medium with
+your written explanation.  The person or entity that provided you with
+the defective work may elect to provide a replacement copy in lieu of a
+refund.  If you received the work electronically, the person or entity
+providing it to you may choose to give you a second opportunity to
+receive the work electronically in lieu of a refund.  If the second copy
+is also defective, you may demand a refund in writing without further
+opportunities to fix the problem.
+
+1.F.4.  Except for the limited right of replacement or refund set forth
+in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
+WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
+
+1.F.5.  Some states do not allow disclaimers of certain implied
+warranties or the exclusion or limitation of certain types of damages.
+If any disclaimer or limitation set forth in this agreement violates the
+law of the state applicable to this agreement, the agreement shall be
+interpreted to make the maximum disclaimer or limitation permitted by
+the applicable state law.  The invalidity or unenforceability of any
+provision of this agreement shall not void the remaining provisions.
+
+1.F.6.  INDEMNITY - You agree to indemnify and hold the Foundation, the
+trademark owner, any agent or employee of the Foundation, anyone
+providing copies of Project Gutenberg-tm electronic works in accordance
+with this agreement, and any volunteers associated with the production,
+promotion and distribution of Project Gutenberg-tm electronic works,
+harmless from all liability, costs and expenses, including legal fees,
+that arise directly or indirectly from any of the following which you do
+or cause to occur: (a) distribution of this or any Project Gutenberg-tm
+work, (b) alteration, modification, or additions or deletions to any
+Project Gutenberg-tm work, and (c) any Defect you cause.
+
+
+Section  2.  Information about the Mission of Project Gutenberg-tm
+
+Project Gutenberg-tm is synonymous with the free distribution of
+electronic works in formats readable by the widest variety of computers
+including obsolete, old, middle-aged and new computers.  It exists
+because of the efforts of hundreds of volunteers and donations from
+people in all walks of life.
+
+Volunteers and financial support to provide volunteers with the
+assistance they need, is critical to reaching Project Gutenberg-tm's
+goals and ensuring that the Project Gutenberg-tm collection will
+remain freely available for generations to come.  In 2001, the Project
+Gutenberg Literary Archive Foundation was created to provide a secure
+and permanent future for Project Gutenberg-tm and future generations.
+To learn more about the Project Gutenberg Literary Archive Foundation
+and how your efforts and donations can help, see Sections 3 and 4
+and the Foundation web page at http://www.pglaf.org.
+
+
+Section 3.  Information about the Project Gutenberg Literary Archive
+Foundation
+
+The Project Gutenberg Literary Archive Foundation is a non profit
+501(c)(3) educational corporation organized under the laws of the
+state of Mississippi and granted tax exempt status by the Internal
+Revenue Service.  The Foundation's EIN or federal tax identification
+number is 64-6221541.  Its 501(c)(3) letter is posted at
+http://pglaf.org/fundraising.  Contributions to the Project Gutenberg
+Literary Archive Foundation are tax deductible to the full extent
+permitted by U.S. federal laws and your state's laws.
+
+The Foundation's principal office is located at 4557 Melan Dr. S.
+Fairbanks, AK, 99712., but its volunteers and employees are scattered
+throughout numerous locations.  Its business office is located at
+809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
+business@pglaf.org.  Email contact links and up to date contact
+information can be found at the Foundation's web site and official
+page at http://pglaf.org
+
+For additional contact information:
+     Dr. Gregory B. Newby
+     Chief Executive and Director
+     gbnewby@pglaf.org
+
+
+Section 4.  Information about Donations to the Project Gutenberg
+Literary Archive Foundation
+
+Project Gutenberg-tm depends upon and cannot survive without wide
+spread public support and donations to carry out its mission of
+increasing the number of public domain and licensed works that can be
+freely distributed in machine readable form accessible by the widest
+array of equipment including outdated equipment.  Many small donations
+($1 to $5,000) are particularly important to maintaining tax exempt
+status with the IRS.
+
+The Foundation is committed to complying with the laws regulating
+charities and charitable donations in all 50 states of the United
+States.  Compliance requirements are not uniform and it takes a
+considerable effort, much paperwork and many fees to meet and keep up
+with these requirements.  We do not solicit donations in locations
+where we have not received written confirmation of compliance.  To
+SEND DONATIONS or determine the status of compliance for any
+particular state visit http://pglaf.org
+
+While we cannot and do not solicit contributions from states where we
+have not met the solicitation requirements, we know of no prohibition
+against accepting unsolicited donations from donors in such states who
+approach us with offers to donate.
+
+International donations are gratefully accepted, but we cannot make
+any statements concerning tax treatment of donations received from
+outside the United States.  U.S. laws alone swamp our small staff.
+
+Please check the Project Gutenberg Web pages for current donation
+methods and addresses.  Donations are accepted in a number of other
+ways including checks, online payments and credit card donations.
+To donate, please visit: http://pglaf.org/donate
+
+
+Section 5.  General Information About Project Gutenberg-tm electronic
+works.
+
+Professor Michael S. Hart is the originator of the Project Gutenberg-tm
+concept of a library of electronic works that could be freely shared
+with anyone.  For thirty years, he produced and distributed Project
+Gutenberg-tm eBooks with only a loose network of volunteer support.
+
+
+Project Gutenberg-tm eBooks are often created from several printed
+editions, all of which are confirmed as Public Domain in the U.S.
+unless a copyright notice is included.  Thus, we do not necessarily
+keep eBooks in compliance with any particular paper edition.
+
+
+Most people start at our Web site which has the main PG search facility:
+
+     http://www.gutenberg.org
+
+This Web site includes information about Project Gutenberg-tm,
+including how to make donations to the Project Gutenberg Literary
+Archive Foundation, how to help produce our new eBooks, and how to
+subscribe to our email newsletter to hear about new eBooks.
diff --git a/hyracks-examples/text-example/textapp/pom.xml b/hyracks-examples/text-example/textapp/pom.xml
index b2c6d7e..b4b81ac 100644
--- a/hyracks-examples/text-example/textapp/pom.xml
+++ b/hyracks-examples/text-example/textapp/pom.xml
@@ -45,6 +45,82 @@
           </execution>
         </executions>
       </plugin>
+      <plugin>
+      	<groupId>edu.uci.ics.hyracks</groupId>
+      	<artifactId>hyracks-maven-plugin</artifactId>
+      	<version>${version}</version>
+        <configuration>
+          <hyracksServerHome>${basedir}/../../../hyracks-server/target/hyracks-server-${project.version}-binary-assembly</hyracksServerHome>
+        </configuration>
+        <executions>
+          <execution>
+            <id>hyracks-cc-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-cc</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>hyracks-nc1-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC1</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+            </configuration>
+          </execution>
+          <execution>
+            <id>hyracks-nc2-start</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>start-nc</goal>
+            </goals>
+            <configuration>
+              <nodeId>NC2</nodeId>
+              <dataIpAddress>127.0.0.1</dataIpAddress>
+              <ccHost>localhost</ccHost>
+            </configuration>
+          </execution>
+          <execution>
+            <id>deploy-app</id>
+            <phase>pre-integration-test</phase>
+            <goals>
+              <goal>deploy-app</goal>
+            </goals>
+            <configuration>
+              <ccHost>localhost</ccHost>
+              <appName>text</appName>
+              <harFile>${project.build.directory}/textapp-${project.version}-app-assembly.zip</harFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-compiler-plugin</artifactId>
+      	<version>2.0.2</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+      	<groupId>org.apache.maven.plugins</groupId>
+      	<artifactId>maven-failsafe-plugin</artifactId>
+      	<version>2.8.1</version>
+      	<executions>
+      	  <execution>
+      	    <id>it</id>
+      	    <phase>integration-test</phase>
+      	    <goals>
+      	      <goal>integration-test</goal>
+      	    </goals>
+      	  </execution>
+      	</executions>
+      </plugin>
     </plugins>
   </build>
   <dependencies>
@@ -54,5 +130,19 @@
   		<version>0.1.6-SNAPSHOT</version>
   		<scope>compile</scope>
   	</dependency>
+  	<dependency>
+  		<groupId>edu.uci.ics.hyracks.examples.text</groupId>
+  		<artifactId>textclient</artifactId>
+  		<version>0.1.6-SNAPSHOT</version>
+  		<type>jar</type>
+  		<scope>test</scope>
+  	</dependency>
+  	<dependency>
+  		<groupId>junit</groupId>
+  		<artifactId>junit</artifactId>
+  		<version>4.8.2</version>
+  		<type>jar</type>
+  		<scope>test</scope>
+  	</dependency>
   </dependencies>
-</project>
+</project>
\ No newline at end of file
diff --git a/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java b/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
new file mode 100644
index 0000000..9659288
--- /dev/null
+++ b/hyracks-examples/text-example/textapp/src/test/java/edu/uci/ics/hyracks/examples/text/test/WordCountIT.java
@@ -0,0 +1,25 @@
+package edu.uci.ics.hyracks.examples.text.test;
+
+import java.io.File;
+
+import org.junit.Test;
+
+import edu.uci.ics.hyracks.examples.text.client.WordCountMain;
+
+public class WordCountIT {
+    @Test
+    public void runWordCount() throws Exception {
+        WordCountMain.main(new String[] { "-host", "localhost", "-infile-splits", getInfileSplits(), "-outfile-splits",
+                getOutfileSplits(), "-algo", "-hash", "-app", "text" });
+    }
+
+    private String getInfileSplits() {
+        return "NC1:" + new File("data/file1.txt").getAbsolutePath() + ",NC2:"
+                + new File("data/file2.txt").getAbsolutePath();
+    }
+
+    private String getOutfileSplits() {
+        return "NC1:" + new File("target/wc1.txt").getAbsolutePath() + ",NC2:"
+                + new File("target/wc2.txt").getAbsolutePath();
+    }
+}
\ No newline at end of file
