diff --git a/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/data/file2.txt
new file mode 100644
index 0000000..a25d303
--- /dev/null
+++ b/hyracks/hyracks-examples/hadoop-compat-example/hadoopcompatapp/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.
